Diff for /embedaddon/sudo/plugins/sudoers/toke.c between versions 1.1.1.1 and 1.1.1.3

version 1.1.1.1, 2012/02/21 16:23:02 version 1.1.1.3, 2012/10/09 09:29:52
Line 289  static void yy_fatal_error YY_PROTO(( yyconst char msg Line 289  static void yy_fatal_error YY_PROTO(( yyconst char msg
         *yy_cp = '\0'; \          *yy_cp = '\0'; \
         yy_c_buf_p = yy_cp;          yy_c_buf_p = yy_cp;
   
#define YY_NUM_RULES 59#define YY_NUM_RULES 61
#define YY_END_OF_BUFFER 60#define YY_END_OF_BUFFER 62
static yyconst short int yy_accept[607] =static yyconst short int yy_accept[622] =
     {   0,      {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,          0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   60,   47,   55,   54,   53,   46,   58,   32,        0,    0,   62,   49,   57,   56,   55,   48,   60,   32,
       48,   49,   32,   50,   47,   47,   47,   47,   52,   51,       50,   51,   32,   52,   49,   49,   49,   49,   54,   53,
       58,   42,   42,   42,   42,   42,   42,   42,   42,   42,       60,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       42,   58,   47,   47,   55,   58,   42,   42,   42,   42,       44,   60,   49,   49,   57,   60,   44,   44,   44,   44,
       42,    2,   58,    1,   47,   47,   17,   16,   17,   16,       44,    2,   60,    1,   49,   44,   44,   49,   17,   16,
       16,   58,   58,   58,    3,    9,    8,    9,    4,    9,       17,   16,   16,   60,   60,   60,    3,    9,    8,    9,
        5,   58,   13,   13,   13,   11,   12,   47,    0,   55,        4,    9,    5,   60,   13,   13,   13,   11,   12,   49,
       53,    0,   57,    0,   47,   34,    0,   32,    0,   33,        0,   57,   55,    0,   59,    0,   49,   34,    0,   32,
        0,   45,   45,    0,   47,   47,    0,   47,   47,   47,        0,   33,    0,   47,   47,    0,   49,   49,    0,   49,
   
       47,    0,   37,   42,   42,   42,   42,   42,   42,   42,       49,   49,   49,    0,   37,   44,   44,   44,   44,   44,
       42,   42,   42,   47,   56,   47,   55,    0,    0,    0,       44,   44,   44,   44,   44,   44,   44,   49,   58,   49,
        0,    0,    0,   47,   47,   47,   47,   47,    2,    1,       57,    0,    0,    0,    0,    0,    0,   49,   49,   49,
        0,    1,   43,   43,    0,   47,   17,   17,   15,   14,       49,   49,    2,    1,    0,    1,   45,   45,    0,   49,
       15,    0,    0,    3,    9,    0,    6,    7,    9,    9,       17,   17,   15,   14,   15,    0,    0,    3,    9,    0,
       13,    0,   13,   13,    0,   10,    0,    0,    0,   34,        6,    7,    9,    9,   13,    0,   13,   13,    0,   10,
       34,    0,    0,   47,   47,   47,   47,   47,    0,    0,        0,    0,    0,   34,   34,    0,    0,   49,   49,   49,
       37,   37,   42,   39,   42,   42,   42,   42,   42,   42,       49,   49,    0,    0,   37,   37,   44,   39,   44,   44,
       42,   42,   42,   42,   47,    0,    0,    0,    0,    0,       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
        0,   47,   47,   47,   47,   47,    0,   47,   10,    0,       49,    0,    0,    0,    0,    0,    0,   49,   49,   49,
   
       47,   47,   47,   47,   47,   47,    0,   38,   38,   38,       49,   49,    0,   49,   10,    0,   49,   49,   49,   49,
        0,    0,   37,   37,   37,   37,   37,   37,   37,   42,       49,   49,    0,   38,   38,   38,    0,    0,   37,   37,
       42,   42,   42,   42,   42,   42,   42,   40,   42,   41,       37,   37,   37,   37,   37,   44,   44,   44,   44,   44,
       47,    0,    0,    0,    0,    0,    0,   47,   47,   47,       44,   44,   44,   44,   44,   40,   44,   41,   49,    0,
       47,   47,   47,   47,    0,    0,   38,   38,   38,    0,        0,    0,    0,    0,    0,   49,   49,   49,   49,   49,
       37,   37,    0,   37,   37,   37,   37,   37,   37,   37,       49,   49,    0,    0,   38,   38,   38,    0,   37,   37,
       37,   37,   37,   37,    0,   25,   42,   42,   42,   42,        0,   37,   37,   37,   37,   37,   37,   37,   37,   37,
       42,   42,   42,   42,   47,    0,    0,    0,    0,   47,       37,   37,    0,   25,   44,   44,   44,   44,   44,   44,
       47,   47,   47,   47,   47,   47,   47,    0,   38,    0,       44,   44,   42,   44,   49,    0,    0,    0,    0,   49,
        49,   49,   49,   49,   49,   49,   49,    0,   38,    0,
 
        37,   37,   37,    0,    0,    0,   37,   37,   37,   37,         37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
          37,   37,   37,   37,   37,   37,   37,   37,   37,   44,
          44,   44,   44,   44,   44,   44,   44,   44,   49,    0,
           0,    0,   49,   49,   49,   35,   35,   35,    0,    0,
          37,   37,   37,   37,   37,   37,   37,    0,    0,    0,
           0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
          37,   37,   37,   37,   37,   37,   44,   44,   44,    0,
          24,   44,   44,   44,   44,    0,   23,    0,   26,   49,
           0,    0,    0,   49,   49,   49,   49,   35,   35,   35,
          35,    0,   37,    0,   37,   37,   37,   37,   37,   37,
   
       37,   37,   37,   37,   37,   37,   37,   37,   37,   42,       37,   37,   37,   37,   37,    0,    0,    0,   37,   37,
       42,   42,   42,   42,   42,   42,   42,   47,    0,    0,       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
        0,   47,   47,   47,   35,   35,   35,    0,    0,   37,       37,   44,   44,   44,   44,   44,   44,   44,   46,    0,
         0,    0,   49,   20,   45,   36,   36,   36,   36,   37,
         0,    0,    0,   37,   37,   37,   37,   37,   37,   37,
        37,   37,   37,   37,   37,   37,    0,    0,    0,    0,         37,   37,   37,   37,   37,   37,    0,    0,    0,    0,
        0,   37,   37,   37,   37,   37,   37,   37,   37,   37,        0,   37,   37,   37,   37,   37,   37,   37,   37,   44,
       37,   37,   37,   37,   37,   42,   42,    0,   24,   42,       44,   44,   44,   44,    0,   22,    0,   27,    0,   20,
       42,   42,   42,    0,   23,    0,   26,   47,    0,    0,        0,    0,   49,    0,   49,   49,   49,   36,   36,   36,
        0,   47,   47,   47,   47,   35,   35,   35,   35,    0,       36,    0,    0,    0,    0,    0,   37,   37,   37,   37,
       37,    0,   37,   37,   37,   37,   37,   37,   37,   37, 
       37,   37,   37,    0,    0,    0,   37,   37,   37,   37, 
   
        37,   37,   37,   37,   37,   37,   37,   37,   37,   42,  
        42,   42,   42,   42,   42,   44,    0,    0,    0,   47,  
        20,   43,   36,   36,   36,   36,   37,    0,    0,    0,  
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,         37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
       37,   37,   37,    0,    0,    0,    0,    0,   37,   37,       37,   37,   37,   37,   37,   37,   43,    0,   30,   44,
       37,   37,   37,   37,   37,   37,   42,   42,   42,   42,       44,   44,    0,    0,    0,   18,    0,   21,   20,    0,
        0,   22,    0,   27,    0,   20,    0,    0,   47,    0,        0,    0,    0,    0,   20,    0,   49,   49,   49,    0,
       47,   47,   47,   36,   36,   36,   36,    0,    0,    0, 
         0,    0,   37,   37,   37,   37,   37,   37,   37,   37,          0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,         37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
           0,   28,   44,   44,   21,    0,    0,   20,   49,   49,
          49,   49,   49,    0,    0,    0,    0,    0,   37,   37,
          37,   37,   37,   37,   37,   37,    0,   31,   44,    0,
          49,   49,   49,   37,   37,   37,   37,   37,   37,    0,
   
       37,   37,    0,   30,   42,   42,   42,    0,    0,    0,       29,    0,    0,   19,   49,   49,   49,   49,   49,   37,
       21,   20,    0,    0,    0,    0,    0,   20,    0,   47,       37,   37,   37,   37,   35,   35,   35,   35,   35,   35,
       47,   47,    0,    0,    0,   37,   37,   37,   37,   37,        0
       37,   37,   37,   37,   37,   37,   37,   37,   37,   37, 
       37,   37,   37,    0,   28,   42,   42,   21,    0,   18, 
        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, 
 
       35,   35,   35,   35,   35,    0 
     } ;      } ;
   
 static yyconst int yy_ec[256] =  static yyconst int yy_ec[256] =
Line 371  static yyconst int yy_ec[256] = Line 373  static yyconst int yy_ec[256] =
         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,          9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,    1,    1,         19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
        25,   26,   10,   27,   28,   29,   30,   31,   32,   29,         25,   26,   10,   27,   28,   29,   30,   31,   32,   29,
       33,   34,   35,   36,   36,   37,   36,   38,   39,   40,       33,   34,   35,   36,   36,   37,   38,   39,   40,   41,
       36,   41,   42,   43,   44,   45,   46,   47,   48,   36,       36,   42,   43,   44,   45,   46,   47,   48,   49,   36,
       10,   49,   10,    1,   50,    1,   51,   52,   53,   54,       10,   50,   10,    1,   51,    1,   52,   53,   54,   55,
   
       55,   56,   57,   57,   58,   57,   57,   59,   60,   61,       56,   57,   58,   58,   59,   58,   58,   60,   61,   62,
       62,   57,   57,   63,   64,   65,   66,   57,   57,   57,       63,   58,   58,   64,   65,   66,   67,   58,   58,   58,
       57,   57,    1,    1,    1,    1,    1,    1,    1,    1,       58,   58,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Line 394  static yyconst int yy_ec[256] = Line 396  static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1          1,    1,    1,    1,    1
     } ;      } ;
   
static yyconst int yy_meta[67] =static yyconst int yy_meta[68] =
     {   0,      {   0,
         1,    2,    3,    4,    5,    6,    1,    7,    7,    1,          1,    2,    3,    4,    5,    6,    1,    7,    7,    1,
         1,    8,    1,    9,   10,   11,   11,   11,   11,   11,          1,    8,    1,    9,   10,   11,   11,   11,   11,   11,
        11,   11,   11,   12,   13,    7,    1,   11,   11,   11,         11,   11,   11,   12,   13,    7,    1,   11,   11,   11,
        11,   11,    1,    1,    1,    1,    1,    1,    1,    1,         11,   11,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,   14,   15,        1,    1,    1,    1,    1,    1,    1,    1,    1,   14,
       16,   16,   16,   16,   16,   16,   15,   15,   15,   15,       15,   16,   16,   16,   16,   16,   16,   15,   15,   15,
       15,   15,   15,   15,   15,   15       15,   15,   15,   15,   15,   15,   15
     } ;      } ;
   
static yyconst short int yy_base[671] =static yyconst short int yy_base[686] =
     {   0,      {   0,
        0,   65,   67,   72,   99,  114,  162,  227,  292,  340,        0,   66,   68,   76,  119,  124,  173,  239,  148,  197,
       86,  125, 2840, 2790, 2836, 3665, 2833, 3665,  387,   70,       82,   90, 2937, 2886, 2933, 3595, 2929, 3595,  165,   65,
     3665, 3665, 2771, 3665,  136,  397,  133,  159, 2795, 3665,     3595, 3595, 2882, 3595,  130,  293,  173,  146, 2907, 3595,
     3665,  453, 2781,   33,  504, 2770, 2767, 2777, 2765, 2771,     3595,  350, 2893,   42,  402,   41, 2889,   74, 2888, 2895,
     2754,  559,  170,   19,  165,  583,   38,   49, 2739,   68,     2876,  458,  197,   57,  219,  482,   38,  207, 2854,   37,
     2727,   81,  219, 2771,  305,   48,    0, 3665, 2761, 3665,     2851,  117,  249, 2880,  326, 2841, 2852,  105,    0, 3595,
        0,  250,  639,  119,    0, 2709, 3665,  108, 3665,  112,     2875, 3595,    0,  469,  424,  143,    0, 2828, 3595,   48,
     3665,  140, 2699,   98,  121, 3665,  195, 2693,  661, 2739,     3595,  223, 3595,  155, 2827,  202,   97, 3595,  252, 2817,
     2736, 2736, 3665,  227,  247,  300,  316,  152,  354, 2681,      504, 2855, 2852, 2852, 3595,  258,  504,  312,  526,  201,
      686,  373, 2670,  711,  352,  722, 2692, 2669,  375,  414,      548, 2796,  557,  528, 2795,  582,  579,  614, 2820, 2829,
   
      302, 2656,   57,  763,    0, 2628, 2625, 2614,  505, 2602,      593,  601,  266, 2818,  182,  656,    0, 2796, 2791, 2766,
     2606, 2599, 2601,  202, 3665,  153,  546, 2572, 2565, 2549,     2761,  296, 2727, 2725, 2713, 2696, 2691,  426, 3595,   87,
     2537, 2524,  200,  110,  244,   28,  111,  252,  171, 2578,      659, 2659, 2663, 2655, 2650, 2651,  257,  196,  318,  276,
      422, 2577,  565, 2529,  818,  262,    0, 2573,  179, 3665,      258,  288,  436, 2694,  631, 2693,  655, 2644,  690,  303,
     3665,  599,  269,    0, 2513,  453, 3665, 3665, 2512,  548,        0, 2681,  168, 3595, 3595,  701,  352,    0, 2634,  723,
     2490, 2533,  206,  253,  323, 2535, 2524, 2513,  607,  615,     3595, 3595, 2633,  447, 2632, 2676,  467,  461,  433, 2670,
      306,  722,  586,  831,  867,  903,  939, 2499, 2456,  980,     2659, 2600,  720,  733,  206,  755,  759,  771,  781,  791,
      333, 1022, 1063,    0, 2430, 2394, 2363, 2364, 2374, 2369,      828, 2581, 2570,  870,  453,  913,  955,    0, 2563, 2557,
     2327, 2330, 2329, 2328,  266, 2289, 2283, 2272, 2274, 2279,     2540, 2523, 2530, 2541, 2536, 2516, 2502, 2496, 2475, 2473,
      409,  334, 2279,  145,  335,   83,  672,  278, 2327, 2325,      277, 2442, 2436, 2402, 2404, 2407,  477,  436, 2405,  424,
   
      627,  259, 1106, 1142,  741,  210, 2293, 2279,  683,  513,      401,  292,  813,  488, 2454, 2450,  845,  438,  855,  890,
     2275, 2271,  352,  747, 1178,  780,  788, 1220,  815, 2270,      756,  465, 2428, 2418,  930,  554, 2409, 2408,  463,  898,
      400,  325, 2261, 2258, 2248, 2246, 2242,    0, 2240,    0,      999,  939,  972, 1042,  980, 2403,  490, 2378,  500, 2380,
      489, 2223, 2213, 2198, 2211, 2198,  420,  407,  529,  490,     2338, 2327, 2325, 2321, 2310,    0, 2305,    0,  508, 2274,
      491, 1263, 1299, 1335, 2235, 2234,  839, 2234, 2232, 2228,     2238, 2212, 2211, 2176,  515,  517,  615,  527,  529, 1018,
     2226,  528,  848,  657,  856,  665, 1371,    0,  877, 1382,     1061, 1086, 2212, 2210, 1026, 2209, 2203, 2171, 2166,  565,
      886,  894, 1424,  913,  570, 3665, 2208, 2197, 2198, 2177,     1069,  754, 1096,  802, 1123,    0, 1106, 1134, 1151, 1159,
     2184, 2193, 2190, 2169,  558, 2145, 2098, 2099,  648,  626,     1177, 1196,  601, 3595, 2136, 2137, 2127, 2131, 2090, 2090,
      530,  559,  923,  336, 1467, 1503,  964, 2138, 2137, 2108,     2084, 2078,    0, 2062,  607, 2056, 2024, 2025,  573,  576,
     2086, 1537,  551, 1000, 1041, 1082,  653,  694,  797, 1049,      578,  676, 1204,  591, 1221, 1239, 1231, 2064, 2031, 2006,
   
      923, 1580,    0, 1116, 1591, 1090, 1008, 1633, 1125, 2069,     2004, 1274,  676, 1256, 1293, 1318,  682,  808,  815, 1301,
     2065,  747,  686, 2046, 2005,  786,  926,  905, 2014, 1982,      819, 1328,    0, 1339, 1350, 1367, 1247, 1393, 1377, 1955,
      679,  634,  544,  915, 1675, 1710, 1745, 2015, 1978, 1962,     1915, 1888,  742,  692, 1884, 1891,  794,  980,  777, 1889,
     1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273,     1856,  652,  945,  680,  820, 1411, 1420, 1436, 1842, 1824,
     1207,  950,  951,  962,  991, 1247, 1073, 1865,    0, 1283,     1800, 1446, 1473, 1455, 1266, 1515, 1492, 1500, 1809, 1534,
     1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924,     1559, 1544, 1009, 1052, 1569, 1571, 1580, 1590, 1601,    0,
     1898, 1893, 1873, 1286, 3665, 1336, 3665,  707, 1790, 1783,     1612, 1623, 1590, 1463, 1666, 1642, 1762, 1737, 1740, 1108,
      786,  930,  764, 1298, 1358, 1041, 1960, 1995, 1400, 1823,     3595, 1696, 1672, 1662, 1628, 1157, 3595, 1158, 3595,  774,
     1799, 1348,  708, 1406, 1348, 2031,    0,  559, 2042, 1441,     1514, 1500,  730, 1152,  697,  913, 1650,  805, 1686, 1709,
     1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,     1695, 1516, 1500, 1721, 1222, 1730, 1474, 1744,    0,  830,
   
     1557, 1602, 2126,    0, 1613, 2137, 1650, 1565, 1660, 1765,     1755, 1772, 1571, 1797, 1782, 1816, 1841, 1851, 1284, 1377,
     1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577,  897,  938,     1832, 1861, 1861, 1872, 1883,    0, 1894, 1905, 1872, 1824,
     1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731,     1924, 1414, 1400, 1375, 1336, 1331, 1159, 1483, 1312, 1274,
     1563, 1478, 1504, 1694, 1524, 2324,    0,  617, 2335, 1753,     1260, 1539,  606, 1730, 1238, 1949, 1959, 1969, 1984, 1256,
     1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358,     1994, 2004, 2019, 1245, 1535, 1915, 1932, 1950, 2029,    0,
     1887,  714,  825, 2419,    0,  926, 1407, 1508, 1506, 1471,      874, 2040, 2057, 2065, 2082, 2101, 2109, 1214, 2126, 2136,
     1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910,     2146, 1633, 1675, 2154,  924,  966, 2165,    0, 1003, 1092,
     1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005,     1731, 1087, 1056, 1052, 2042, 3595, 2063, 3595, 1017, 2147,
     2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501,    0,     1126,  624, 1311, 2187, 2192, 2183, 1756, 2193, 2203, 2230,
     1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769,     1979, 2238,  992, 2248, 2265, 2275,  830,  811, 1970, 2194,
   
     1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118,  384,     2281, 2214, 2291,    0, 1111, 2302, 2319, 2256, 2344, 2329,
     1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596,     2362, 2371, 2387, 1807,  813, 1170,    0, 2065, 3595, 2228,
     2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362,      738,  713,  680,  731, 1201, 3595,  900,  653, 2409, 2414,
     2043, 2704,    0, 1224, 2715, 2403, 2437, 2445,  992, 2454,     2419, 2424, 2418, 2436, 2445, 2446, 2459, 2469, 2480, 2494,
     2474, 2483,  903, 1921, 3665, 1941,  839, 3665,  843, 3665,     2504, 2515,  569,  531, 2215, 2217, 2523, 2221, 2533,    0,
     1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579,  811,     1278, 2544, 2561, 2569, 2588,  519, 2597, 2606, 2615,  492,
     2607, 2617, 2642,  640,  629, 2109,  535,  447, 2650,    0,     2304, 3595, 2393,  452, 3595, 1416, 2621, 2629, 2637, 1981,
     1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684,     2647, 2657, 2672, 2682,  345, 2692, 2707, 2717,  305,  264,
     2692,  337,    0,  333, 2067, 3665,  327, 2733, 1912, 2938,     2303,  245,  191, 2725,    0, 1477, 2441, 3595, 2444, 1632,
     2974, 2743, 3665, 2767, 2777, 2658, 3665,  166, 3665, 2805,     2735, 2745, 2755, 2770, 2780, 2790,   90,    0,   92, 2482,
   
     2813, 2847,   63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,     3595,  100, 1647, 3595, 2798, 1982, 2808, 2818, 2833, 3595,
     3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205,     2843, 2853, 2763, 3595, 2868, 2876, 2884,   19, 2892, 2903,
     3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346,     3595, 2953, 2969, 2985, 3001, 3017, 3033, 3049, 3065, 3081,
     3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409,     3087, 3103, 3119, 1676, 3135, 3151, 3167, 3183, 3199, 3215,
     3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477,     3231, 3237, 3244, 3260, 3276, 3282, 3289, 3295, 3301, 3307,
     3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567,     3314, 3320, 3326, 3332, 3339, 3347, 3353, 3359, 3365, 3372,
     3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648     3380, 3386, 3392, 3399, 3407, 3413, 3421, 3428, 3436, 3442,
      3450, 3457, 3465, 3481, 3497, 3513, 3519, 3527, 3534, 3540,
      3548, 3554, 3562, 3578, 2159
     } ;      } ;
   
static yyconst short int yy_def[671] =static yyconst short int yy_def[686] =
     {   0,      {   0,
      606,    1,    1,    1,  607,  607,  608,  608,  609,  609,      621,    1,    1,    1,  622,  622,  623,  623,  624,  624,
      610,  610,  606,  611,  606,  606,  606,  606,  612,  613,      625,  625,  621,  626,  621,  621,  621,  621,  627,  628,
      606,  606,  614,  606,  615,  611,   26,   26,  616,  606,      621,  621,  629,  621,  630,  626,   26,   26,  631,  621,
      606,  606,   32,   32,   32,   35,   35,   35,   35,   35,      621,  621,   32,   32,   32,   35,   35,   35,   35,   35,
       35,  611,   26,  611,  606,  612,   32,   32,   35,   35,       35,  626,   26,  626,  621,  627,   32,   32,   35,   35,
       35,  606,  606,  606,  617,  611,  618,  606,  618,  606,       35,  621,  621,  621,  632,   35,   35,  626,  633,  621,
      618,  606,  612,  606,  619,  620,  606,  620,  606,  620,      633,  621,  633,  621,  627,  621,  634,  635,  621,  635,
      606,  621,  622,  622,  622,  606,  606,  611,  611,  606,      621,  635,  621,  636,  637,  637,  637,  621,  621,  626,
      606,  623,  606,  624,  606,  613,  606,  625,  613,  614,      626,  621,  621,  638,  621,  639,  621,  628,  621,  640,
      614,  615,  626,  611,  611,   26,  616,   96,   96,   96,      628,  629,  629,  630,  641,  626,  626,   26,  631,   98,
   
       96,  627,  628,   35,   35,   35,   35,   35,   35,   35,       98,   98,   98,  642,  643,   35,   35,   35,   35,   35,
       35,   35,   35,  611,  606,  611,  606,  606,  606,  606,       35,   35,   35,   35,   35,   35,   35,  626,  621,  626,
      606,  606,  623,  611,   96,  611,  611,  611,  606,  606,      621,  621,  621,  621,  621,  621,  638,  626,   98,  626,
      606,  606,  617,  629,  611,  611,  618,  618,  606,  606,      626,  626,  621,  621,  621,  621,  632,  644,  626,  626,
      606,  624,  606,  619,  620,  620,  606,  606,  620,  620,      633,  633,  621,  621,  621,  639,  621,  634,  635,  635,
      622,  606,  622,  622,  606,  606,  623,  630,  606,  606,      621,  621,  635,  635,  637,  621,  637,  637,  621,  621,
      625,  625,  606,  611,  611,  611,   96,  167,  631,  606,      638,  645,  621,  621,  640,  640,  621,  626,  626,  626,
      632,  606,  104,   35,   35,   35,   35,   35,   35,   35,       98,  171,  646,  621,  647,  621,  106,   35,   35,   35,
       35,   35,   35,   35,  611,  606,  606,  606,  606,  606, 
      623,  611,  167,  611,  611,  611,  606,  611,  606,  630, 
 
      611,  611,  611,  611,  611,  611,  633,  634,  634,  209, 
      635,  634,  636,  172,  606,  215,  215,  606,  215,   35, 
        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,         35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
      611,  606,  606,  606,  606,  606,  623,  611,  611,  611,      626,  621,  621,  621,  621,  621,  638,  626,  171,  626,
      611,  611,  611,  611,  606,  637,  637,  247,  637,  638, 
      639,  640,  606,  641,  218,  641,  641,  257,  641,  606, 
      260,  260,  606,  260,  606,  606,   35,   35,   35,   35, 
       35,   35,   35,   35,  611,  606,  606,  606,  623,  611, 
      611,  611,  611,  611,  611,  611,  611,  642,  642,  643, 
      644,  606,  606,  606,  606,  606,  645,  645,  646,  263, 
   
      646,  646,  302,  646,  606,  305,  305,  606,  305,   35,      626,  626,  621,  626,  621,  645,  626,  626,  626,  626,
       35,   35,   35,   35,   35,   35,   35,  611,  606,  606,      626,  626,  648,  649,  649,  215,  650,  649,  651,  176,
      623,  611,  611,  611,  611,  611,  611,  606,  647,  648,      621,  221,  221,  621,  221,   35,   35,   35,   35,   35,
      292,  606,  332,  332,  606,  332,  606,  606,  606,  606,       35,   35,   35,   35,   35,   35,   35,   35,  626,  621,
      606,  606,  649,  649,  650,  308,  650,  650,  348,  650,      621,  621,  621,  621,  638,  626,  626,  626,  626,  626,
      606,  351,  351,  606,  351,   35,   35,  606,  606,   35,      626,  626,  621,  652,  652,  255,  652,  653,  654,  655,
       35,   35,   35,  606,  606,  606,  606,  611,  606,  606,      621,  656,  224,  656,  656,  265,  656,  621,  268,  268,
      623,  611,  611,  611,  611,  611,  611,  611,  611,  606,      621,  268,  621,  621,   35,   35,   35,   35,   35,   35,
      651,  606,  652,  335,  652,  652,  386,  386,  606,  389,       35,   35,   35,   35,  626,  621,  621,  621,  638,  626,
      389,  606,  389,  606,  606,  606,  606,  653,  653,  654,      626,  626,  626,  626,  626,  626,  626,  657,  657,  658,
   
      354,  654,  654,  403,  654,  606,  406,  406,  406,   35,      659,  621,  621,  621,  621,  621,  660,  660,  661,  271,
       35,   35,   35,   35,   35,  611,  606,  606,  623,  611,      661,  661,  312,  661,  621,  315,  315,  621,  315,   35,
      611,  611,  611,  611,  611,  611,  606,  606,  606,  606,       35,   35,   35,   35,   35,   35,   35,   35,  626,  621,
      655,  655,  656,  392,  656,  656,  436,  436,  606,  439,      621,  638,  626,  626,  626,  626,  626,  626,  621,  662,
      439,  606,  439,  606,  606,  606,  606,  606,  606,  657,      663,  302,  621,  343,  343,  621,  343,  621,  621,  621,
      657,  658,  658,  658,  454,  454,   35,   35,   35,   35,      621,  621,  621,  664,  664,  665,  318,  665,  665,  359,
      606,  606,  606,  606,  606,  606,  623,  623,  611,  659,      665,  621,  362,  362,  621,  362,   35,   35,   35,  621,
      660,  611,  611,  611,  611,  611,  611,  606,  606,  606,      621,   35,   35,   35,   35,  621,  621,  621,  621,  626,
      606,  606,  606,  661,  661,  662,  442,  662,  662,  489,      621,  621,  638,  626,  626,  626,  626,  626,  626,  626,
      489,  606,  492,  492,  606,  492,  606,  606,  606,  606,      626,  621,  666,  621,  667,  346,  667,  667,  398,  398,
   
      663,  663,  606,  606,   35,   35,   35,  606,  664,  623,      621,  401,  401,  621,  401,  621,  621,  621,  621,  668,
      611,  659,  659,  659,  659,  606,  659,  660,  660,  611,      668,  669,  365,  669,  669,  415,  669,  621,  418,  418,
      611,  611,  606,  606,  606,  606,  665,  665,  666,  495,      418,   35,   35,   35,   35,   35,   35,   35,  626,  621,
      666,  666,  532,  532,  606,  535,  535,  535,  606,  606,      621,  638,  626,  626,  626,  626,  626,  626,  626,  621,
      606,  606,  606,  606,  606,   35,   35,  606,  664,  606,      621,  621,  621,  670,  670,  671,  404,  671,  671,  449,
      623,  606,  606,  611,  611,  611,  611,  611,  606,  606,      449,  621,  452,  452,  621,  452,  621,  621,  621,  621,
      606,  606,  606,  606,  667,  667,  668,  668,  668,  569,      621,  621,  672,  672,  673,  673,  673,  467,  467,   35,
      569,  606,  606,   35,  623,  611,  611,  611,  606,  606,       35,   35,   35,   35,  621,  621,  621,  621,  621,  621,
      606,  606,  669,  669,  606,  606,  670,  611,  611,  611,      674,  638,  626,  675,  676,  626,  626,  626,  626,  626,
      611,  611,  606,  606,  606,  606,  606,  670,  606,  611,      626,  621,  621,  621,  621,  621,  621,  677,  677,  678,
   
      611,  611,  611,  611,  611,    0,  606,  606,  606,  606,      455,  678,  678,  503,  503,  621,  506,  506,  621,  506,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  679,  679,   35,  621,  621,   35,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,       35,   35,  621,  674,  674,  621,  638,  626,  675,  675,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      675,  675,  621,  675,  676,  676,  626,  626,  626,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  680,  680,  681,  509,  681,  681,  549,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      549,  621,  552,  552,  552,  621,  621,  621,  621,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606      621,  621,   35,   35,  621,  638,  621,  621,  626,  626,
       626,  626,  626,  621,  621,  621,  621,  621,  621,  682,
       682,  683,  683,  683,  584,  584,  621,  621,   35,  684,
       626,  626,  626,  621,  621,  621,  621,  685,  685,  621,
 
       621,  684,  684,  621,  626,  626,  626,  626,  626,  621,
       621,  621,  621,  621,  626,  626,  626,  626,  626,  626,
         0,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621
     } ;      } ;
   
static yyconst short int yy_nxt[3732] =static yyconst short int yy_nxt[3663] =
     {   0,      {   0,
        14,   15,   16,   17,   18,   19,   20,   21,   22,   14,         14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
        23,   24,   14,   14,   25,   26,   27,   28,   26,   26,         23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
        26,   26,   26,   29,   30,   31,   14,   32,   33,   33,         26,   26,   26,   29,   30,   31,   14,   32,   33,   33,
       33,   34,   35,   35,   35,   35,   36,   37,   35,   38,       33,   34,   35,   35,   35,   35,   36,   35,   37,   35,
       39,   40,   41,   35,   35,   35,   35,   35,   42,   14,       38,   39,   40,   41,   35,   35,   35,   35,   35,   42,
       43,   43,   43,   43,   43,   43,   14,   14,   14,   14,       14,   43,   43,   43,   43,   43,   43,   14,   14,   14,
       14,   14,   14,   44,   14,   14,   45,   79,   52,  105,       14,   14,   14,   14,   44,   14,   14,   45,   81,   52,
       46,  170,   53,   52,  105,   87,   79,   53,   54,  107,       89,   46,  151,   53,  107,  110,  115,   52,  107,   54,
      172,   55,  129,   54,  116,  105,   55,   74,   16,   75,      111,   53,   55,   76,   16,   77,   78,   54,   90,  109,
       76,  194,  130,   88,   47,   48,   79,  124,   49,  153,       55,   76,   16,   77,   78,   47,   48,  150,  128,   49,
   
       15,   58,   59,  125,   60,   50,  111,   35,   51,   35,      158,  113,  604,  131,   56,  394,   81,   50,   57,   35,
       60,   79,   35,  136,   35,   15,   58,   59,   89,   60,       51,   35,   56,  547,   91,  114,   57,   35,  133,   35,
      143,  115,   60,   61,  154,   60,   74,   16,   75,   76,       15,   60,   61,  120,   62,   15,   60,   61,  134,   62,
       56,   79,  147,  127,   77,   56,  148,   60,   61,   93,       62,   79,   58,   95,   95,   62,   81,   95,   95,   79,
       93,  150,  115,   93,   93,  238,  152,   62,   99,   99,       58,  191,   62,   63,  147,  119,  156,   62,   63,   15,
       99,   99,   99,   99,   99,   99,  146,   87,   79,   79,       16,   17,   69,   65,   81,   95,  154,  119,   70,   71,
      146,   93,   62,   15,   16,   17,  117,   63,  599,  152,       72,  102,  102,  102,  102,  102,  103,   85,   64,  147,
      192,  195,  129,   77,  100,  100,  100,  100,  100,  101,      119,  140,   73,   64,   15,   16,   17,   86,   65,   96,
      143,  115,  130,   78,   94,   98,   98,   98,   98,   98,       87,   87,   87,   87,   87,   87,   87,   87,  101,  101,
       98,   98,   98,   79,  118,  119,  155,  156,  120,  151,      101,  101,  101,  101,  101,  101,  174,   74,   15,   16,
   
      162,   79,   83,  143,  115,  121,  185,  153,  122,  238,       17,   69,   65,  157,  621,  176,   89,   70,   71,   72,
       64,   65,   65,   65,   65,   65,   65,   65,   65,   65,       80,  621,  100,  100,  100,  100,  100,  100,  100,  100,
       65,   65,   65,   65,   65,   65,   65,   65,   15,   16,      121,   73,   66,   67,   67,   67,   67,   67,   67,   67,
       17,  131,   63,   97,   85,   85,   85,   85,   85,   85,       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,       15,   16,   17,  107,   65,   81,   74,  152,  122,  123,
       79,  139,  115,  140,  152,  141,  154,   78,   79,  140,      166,  156,  124,  159,  160,  166,  155,  198,  394,   85,
      191,  141,   85,   85,   85,   85,   85,   85,   85,   85,      125,  135,  129,  126,   87,   87,   87,   87,   87,   87,
      143,  115,  201,  141,  141,   64,   65,   65,   65,   65,       87,   87,  150,   87,   87,   87,   87,   87,   87,   87,
       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,       87,  172,  172,  172,  172,  172,  172,  547,   66,   67,
       65,   65,   65,   15,   16,   17,   67,   63,  141,  193,       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
   
       79,  152,   68,   69,   70,  606,  196,   79,  134,  134,       67,   67,   67,   67,   67,   67,   97,   81,   98,   98,
       79,  606,  134,  134,   79,  198,   71,  168,  168,  168,       98,   98,   98,   98,   98,   98,   99,  621,  197,  201,
      168,  168,  168,  606,  155,  156,   79,  231,  159,  599,      100,  100,  100,  100,  100,   81,   81,  182,  501,  138,
      134,  160,  160,  160,  160,  160,  160,  160,  160,  241,      138,   80,  183,  138,  138,  621,  184,   81,  185,  239,
       72,   15,   16,   17,   67,   63,  382,  170,   89,  283,      200,   81,   81,  202,  100,  100,  100,  100,  100,  100,
       68,   69,   70,  135,  162,   86,  214,   86,   86,  267,       80,  138,   81,  147,  119,  246,   80,  204,  574,   80,
      530,   86,   86,  268,   71,   86,  170,  164,  165,  166,       80,   91,   80,   80,   80,  106,  106,  106,  106,  106,
      164,  164,  164,  164,  164,  214,   93,   93,   86,   86,      106,  106,  106,   99,  199,  139,   80,  106,  106,  106,
       93,   93,   79,   79,   79,  240,   83,  238,   72,   83,      106,  106,  107,  107,  107,  107,  108,  107,  107,  107,
      168,  168,  168,  168,  168,  168,  168,  168,   93,   84,      107,  107,  107,  107,  107,  107,  107,  107,  107,   81,
   
       79,  265,   85,   85,   85,   85,   85,   85,   85,   85,      107,  100,  100,  100,  100,  100,  100,   80,   80,   80,
       95,   83,   96,   96,   96,   96,   96,   96,   96,   96,       80,   80,   80,   80,   80,   80,   80,  107,  107,  107,
       97,   94,   83,  266,   98,   98,   98,   98,   98,  168,      107,  107,  107,  107,  107,  621,   85,  147,  119,  107,
      168,  168,  168,  168,  168,  168,  168,   85,   85,   85,      107,  107,  107,  107,  159,  160,  146,  133,  107,  621,
       85,   85,   85,   85,   85,   79,  551,   98,   98,   98,      621,  621,  621,  621,  621,  621,  621,  134,  147,  119,
       98,   98,   98,   78,  145,   79,  280,  145,  145,   78,       81,  207,  248,   80,   80,   80,   80,   80,   80,  118,
      606,  237,   78,   78,  145,   78,   78,   78,  104,  104,      119,   80,   80,   80,  158,   80,   80,  174,  157,   80,
      104,  104,  104,  104,  104,  104,   97,  145,  279,   78,      143,  119,  144,   81,  145,   81,  220,  174,  144,   85,
      104,  104,  104,  104,  104,  105,  105,  105,  105,  106,      145,   80,   80,   80,   85,   81,  220,   81,   99,  246,
      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,      246,  273,  145,  145,   86,  589,  150,   87,   87,   87,
   
      105,   79,  105,   98,   98,   98,   98,   98,   98,   78,       87,   87,   87,   87,   87,   80,  174,   80,   80,   80,
       78,   78,   78,   78,   78,   78,   78,   78,   78,  105,      156,   80,   80,  274,   81,   80,  156,   85,  145,   87,
      105,  105,  105,  105,  105,  105,  105,  606,  249,  249,       87,   87,   87,   87,   87,   87,   87,   80,   80,   80,
      249,  105,  105,  105,  105,  105,  177,   79,   79,   79,      245,   95,   95,  174,  276,   95,   95,   81,  163,  277,
      105,  178,  170,  275,  179,  282,  180,  117,  382,  143,      127,  164,  164,  164,  164,  164,  164,  164,  164,   88,
      115,  214,   97,  238,   78,   78,   78,   78,   78,   78,      249,   88,   88,   95,  501,   88,   88,   81,   92,   88,
      114,  115,   78,   78,   78,  170,   78,   78,  134,  134,       92,   92,   92,  285,   92,   92,   81,  290,   92,  257,
       78,  265,  134,  134,  214,  118,  119,   79,   79,  120,      257,  257,   88,   88,  289,   85,   81,   96,   81,  174,
      431,  431,   78,   78,   78,   83,  121,   93,  323,  122,       92,   92,   92,   94,  292,   80,   80,   94,  220,   80,
      134,   93,   79,  266,  281,   84,  146,   93,   85,   85,       80,  246,  447,   94,  168,  169,  170,  168,  168,  168,
   
       85,   85,   85,   85,   85,   85,   79,   79,  373,   93,      168,  168,  273,  333,  293,   94,   94,   80,  172,  172,
       93,  318,  324,  135,  606,  606,  606,  606,  606,  606,      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
      606,  606,  160,  160,  160,  160,  160,  160,  160,  160,      172,  172,  172,  172,  274,   81,   85,   81,   81,  171,
      160,  160,  160,  160,  160,  160,  160,  160,  484,  484,      171,  171,  171,  171,  171,  171,  171,  334,   99,  332,
      123,   83,  242,  243,  244,  242,  242,  242,  242,  242,       81,  171,  171,  171,  171,  171,   87,   87,   87,   87,
       83,  142,  530,  322,  606,  606,  606,  606,  606,  606,       87,   87,   87,   87,   85,   81,   81,  483,  138,  138,
      606,  606,   78,  487,   78,   78,   78,  170,   78,   78,      121,  329,  138,  138,   81,  171,  171,  171,  171,  171,
      253,  170,   78,  134,   79,   79,  255,  134,  606,  170,      171,  177,  177,  177,  177,  177,  177,  177,  177,   99,
      255,   83,   79,  134,   78,   78,   78,   90,  255,   90,      138,  291,  527,  177,  177,  177,  177,  177,  122,  123,
       90,   90,  372,   90,   90,  134,  134,   90,  247,  247,      174,  137,  124,   80,   80,  137,  174,   80,   80,  220,
   
      248,  249,  249,  249,  249,  249,  211,  253,  170,   90,      125,  137,   81,  126,  139,  263,  383,  171,  171,  171,
       90,   90,   92,  321,   78,   78,   92,  255,   78,   78,      171,  171,  171,  137,  137,   80,  621,  621,  621,  621,
      360,  382,   92,  161,  361,  161,  161,  253,  170,  161,      621,  621,  621,  621,  149,   81,  372,  149,  149,   81,
      161,  384,  371,  161,   92,   92,   78,  167,  167,  167,      335,  373,   85,  526,  149,  164,  164,  164,  164,  164,
      167,  167,  167,  167,  167,  161,  161,  161,  358,  167,      164,  164,  164,  370,  565,  385,   81,  149,  164,  164,
      167,  167,  167,  167,  201,   79,  202,  202,  202,  202,      164,  164,  164,  164,  164,  164,  165,  564,  165,  165,
      202,  202,  219,  219,  219,  219,  219,  219,  219,  219,       95,  434,  165,  165,   95,  371,  165,  261,  174,  207,
      359,  416,  167,  167,  167,  167,  167,  167,  173,  173,       95,  208,  208,  208,  208,  208,  208,  263,  165,  165,
      173,  173,  173,  173,  173,  173,   97,  364,   83,   79,      165,  563,   95,   95,  207,  432,  208,  208,  208,  208,
      173,  173,  173,  173,  173,  257,  257,  257,  257,  257,      208,  208,  208,  208,  207,  376,  209,  209,  209,  209,
   
      257,  257,  257,  258,  258,  258,  258,  258,  259,  365,      209,  209,  209,  209,  207,   81,  210,  210,  210,  210,
      253,  170,   79,  167,  167,  167,  167,  167,  167,  133,      210,  211,  208,  208,  138,  621,  174,  377,  138,  387,
      300,   78,   78,  133,  559,   78,   78,  421,  606,  133,       81,  261,  174,   81,  138,  263,   81,  174,  261,  174,
      256,  256,  256,  256,  256,  256,  256,  256,  606,  170,       81,  263,  621,  174,  447,  380,  138,  138,  310,  429,
      419,  133,  133,   78,  201,  550,  202,  202,  202,  202,       81,   80,  310,  212,  212,  212,  212,  212,  212,  212,
      202,  202,  202,  202,  289,  289,  289,  289,  289,  289,      212,  444,  444,  396,   81,  212,  212,  212,  212,  212,
      289,  289,  211,  294,  295,  296,  294,  294,  294,  294,      250,  251,  252,  250,  250,  250,  250,  250,  207,   81,
      294,  264,  264,  264,  264,  264,  264,  264,  264,   79,      208,  208,  208,  208,  208,  208,  208,  208,  386,  212,
      201,  574,  203,  203,  203,  203,  203,  203,  203,  203,      212,  212,  212,  212,  212,  214,  215,  216,  216,  216,
      253,  170,  298,  298,  298,  298,  298,  298,  467,   83,      216,  216,  216,  217,   81,  498,  498,  218,  218,  218,
   
      255,  302,  302,  302,  302,  302,  302,  302,  302,  303,      218,  218,   85,  207,   81,  208,  208,  208,  208,  208,
      303,  303,  303,  303,  304,   79,  201,  170,  204,  204,      208,  208,  208,  225,  225,  225,  225,  225,  225,  225,
      204,  204,  204,  205,  202,  202,  606,  366,  301,  301,      225,  218,  218,  218,  218,  218,  218,  174,  221,  222,
      301,  301,  301,  301,  301,  301,  606,  170,  325,  326,      223,  221,  221,  221,  221,  221,  224,  261,  174,   81,
      327,  325,  325,  325,  325,  325,  300,  501,  501,  367,      225,  225,  225,  225,  225,  255,  255,  256,  257,  257,
      468,   79,   78,   79,  206,  206,  206,  206,  206,  206,      257,  257,  257,  217,  265,  265,  265,  265,  265,  265,
      206,  206,  368,   79,  170,  170,  206,  206,  206,  206,      265,  265,   81,  566,  225,  225,  225,  225,  225,  225,
      206,   79,  374,  255,  300,  253,  170,  283,   79,  284,      226,  226,  226,  226,  226,  226,  226,  226,  435,  621,
      284,  284,  284,  284,  284,  300,   79,  420,  469,  206,      174,  378,  226,  226,  226,  226,  226,  266,  266,  266,
      206,  206,  206,  206,  206,  208,  209,  210,  210,  210,      266,  266,  267,  621,   81,  264,  264,  264,  264,  264,
   
      210,  210,  210,  211,  253,  170,  170,  212,  212,  212,      264,  264,  264,  379,  384,  492,  212,  212,  212,  212,
      212,  212,   79,  337,  346,  338,  338,  338,  338,  338,      212,  212,  261,  174,  262,  262,  262,  262,  262,  262,
      338,  338,  338,  349,  349,  349,  349,  349,  350,  487,      262,  262,  263,  174,  515,  515,  264,  264,  264,  264,
      212,  212,  212,  212,  212,  212,  170,  215,  216,  217,      264,  293,  263,  294,  294,  294,  294,  294,  294,  294,
      215,  215,  215,  215,  215,  218,  527,  527,  434,  219,      294,  299,  299,  299,  299,  299,  299,  299,  299,  217,
      219,  219,  219,  219,  337,  375,  339,  339,  339,  339,      264,  264,  264,  264,  264,  264,  174,  268,  269,  270,
      339,  339,  339,  339,  309,  309,  309,  309,  309,  309,      268,  268,  268,  268,  268,  271,  174,   81,  523,  272,
      309,  309,  219,  219,  219,  219,  219,  219,  220,  220,      272,  272,  272,  272,  293,  310,  295,  295,  295,  295,
      220,  220,  220,  220,  220,  220,  606,  170,   79,   79,      295,  295,  295,  295,  304,  305,  306,  304,  304,  304,
      220,  220,  220,  220,  220,  337,  346,  340,  340,  340,      304,  304,  522,  272,  272,  272,  272,  272,  272,  293,
   
      340,  340,  341,  338,  338,  348,  348,  348,  348,  348,      521,  296,  296,  296,  296,  296,  297,  294,  294,  370,
      348,  348,  348,  206,  206,  206,  206,  206,  206,  201,       81,  272,  272,  272,  272,  272,  272,  272,  272,  261,
      550,  202,  202,  202,  202,  202,  202,  202,  202,  253,      174,  308,  308,  308,  308,  308,  308,  525,  526,  263,
      170,  344,  344,  344,  344,  344,  344,  548,  606,  300,      520,  371,  544,  544,  517,   81,  261,  174,  308,  308,
      347,  347,  347,  347,  347,  347,  347,  347,  387,  387,      308,  308,  308,  308,  308,  308,  263,  261,  174,  309,
      387,  387,  387,  388,   79,  201,  547,  202,  202,  202,      309,  309,  309,  309,  309,  309,  309,  310,  376,  378,
      202,  202,  202,  202,  202,  336,  336,  336,  336,  336,      475,  311,  311,  311,  311,  311,  312,  312,  312,  312,
      336,  336,  336,  386,  386,  386,  386,  386,  386,  386,      312,  312,  312,  312,  313,  313,  313,  313,  313,  314,
      386,  394,  395,  396,  394,  394,  394,  394,  394,  358,      377,  379,  476,  261,  174,  311,  311,  311,  311,  311,
       79,  253,  170,  254,  254,  254,  254,  254,  254,  254,      311,  174,  315,  316,  317,  315,  315,  315,  315,  315,
   
      254,  255,  253,  170,  546,  256,  256,  256,  256,  256,      318,   81,  525,  526,  319,  319,  319,  319,  319,  621,
      606,  359,  385,  385,  385,  385,  385,  385,  385,  385,      433,  311,  311,  311,  311,  311,  311,  311,  311,  336,
      337,  170,  338,  338,  338,  338,  338,  338,  256,  256,      337,  338,  336,  336,  336,  336,  336,  457,  319,  319,
      256,  256,  256,  256,  170,  260,  261,  262,  260,  260,      319,  319,  319,  319,  293,  394,  294,  294,  294,  294,
      260,  260,  260,  263,  170,  565,  565,  264,  264,  264,      294,  294,  294,  294,  293,  396,  294,  294,  294,  294,
      264,  264,  337,  300,  338,  338,  338,  338,  338,  338,      294,  294,  293,   81,  294,  294,  294,  294,  294,  294,
      338,  338,  355,  355,  355,  355,  355,  355,  355,  355,      294,  294,  360,  360,  360,  360,  360,  361,  396,  348,
      264,  264,  264,  264,  264,  264,  283,  434,  284,  284,       81,  349,  349,  349,  349,  349,  349,  349,  349,  342,
      284,  284,  284,  284,  284,  284,  337,  364,  338,  338,       81,  399,  399,  399,  399,  399,  400,   81,   81,  343,
      338,  338,  338,  338,  338,  338,  253,  170,  399,  399,      344,  345,  343,  343,  343,  343,  343,  346,  174,  580,
   
      399,  399,  399,  399,  170,  597,  346,  575,   83,  365,      580,  347,  347,  347,  347,  347,  348,  310,  350,  350,
      597,   79,  283,  346,  285,  285,  285,  285,  285,  285,      350,  350,  350,  350,  350,  350,  319,  319,  319,  319,
      285,  285,  403,  403,  403,  403,  403,  403,  403,  403,      319,  319,  319,  319,  480,  347,  347,  347,  347,  347,
      404,  404,  404,  404,  404,  405,  606,  366,  402,  402,      347,  348,  479,  351,  351,  351,  351,  351,  352,  349,
      402,  402,  402,  402,  402,  402,   79,   79,  283,  170,      349,  261,  174,  355,  355,  355,  355,  355,  355,  355,
      286,  286,  286,  286,  286,  287,  284,  284,  346,  367,      355,  310,  261,  174,  355,  355,  355,  355,  355,  355,
      461,  606,  422,  428,  429,  430,  428,  428,  428,  428,       81,   81,  310,  261,  174,  356,  356,  356,  356,  356,
      428,  384,  170,  423,  424,  425,  426,  423,  423,  423,      356,  356,  356,  357,  474,  528,  473,  358,  358,  358,
      423,  401,  462,   79,  253,  170,  298,  298,  298,  298,      358,  358,  359,  359,  359,  359,  359,  359,  359,  359,
      298,  298,  298,  298,  255,  253,  170,  299,  299,  299,      621,  174,  358,  358,  358,  358,  358,  358,  358,  358,
   
      299,  299,  299,  299,  299,  300,   79,  463,  503,  301,      357,  358,  358,  358,  358,  358,  358,  174,  362,  363,
      301,  301,  301,  301,  375,  376,  376,  376,  376,  376,      364,  362,  362,  362,  362,  362,  365,  590,   85,  472,
      376,  393,  393,  393,  393,  393,  393,  393,  393,  464,      366,  366,  366,  366,  366,  387,  388,  388,  388,  388,
      504,  384,  301,  301,  301,  301,  301,  301,  170,  305,      388,  388,  388,  388,  387,  389,  389,  389,  389,  389,
      306,  307,  305,  305,  305,  305,  305,  308,   79,  583,      389,  389,  389,  471,  366,  366,  366,  366,  366,  366,
      583,  309,  309,  309,  309,  309,  436,  436,  436,  436,      387,  390,  390,  390,  390,  390,  391,  388,  388,  470,
      436,  436,  436,  436,  437,  437,  437,  437,  437,  438,       81,  347,  347,  347,  347,  347,  347,  347,  347,   81,
      478,  253,  170,  508,  309,  309,  309,  309,  309,  309,      398,  398,  398,  398,  398,  398,  398,  398,  416,  416,
      283,  346,  284,  284,  284,  284,  284,  284,  284,  284,      416,  416,  416,  417,  477,   81,  394,  621,  395,  395,
      606,  382,  435,  435,  435,  435,  435,  435,  435,  435,      395,  395,  395,  395,  395,  395,  396,  396,  598,  598,
   
      444,  384,  445,  445,  445,  445,  445,  445,  445,  445,      397,  397,  397,  397,  397,  621,  478,  397,  397,  397,
      507,  472,  144,  144,   83,   79,  283,  382,  284,  284,      397,  397,  397,  397,  397,  406,  407,  408,  406,  406,
      284,  284,  284,  284,  284,  284,  444,  434,  446,  446,      406,  406,  406,  342,  397,  397,  397,  397,  397,  397,
      446,  446,  446,  446,  446,  446,  444,  606,  447,  447,      401,  402,  403,  401,  401,  401,  401,  401,  404,  259,
      447,  447,  447,  448,  445,  445,   79,  434,  461,  506,      481,   85,  405,  405,  405,  405,  405,  348,  394,  349,
      505,   79,  332,  333,  334,  332,  332,  332,  332,  332,      349,  349,  349,  349,  349,  349,  349,  348,  396,  349,
      335,  253,  170,  444,  336,  336,  336,  336,  336,  510,      349,  349,  349,  349,  349,  431,  405,  405,  405,  405,
      462,  401,  409,  409,  409,  409,  409,  409,  409,  409,      405,  405,  348,  430,  349,  349,  349,  349,  349,  349,
      455,  455,  455,  455,  455,  456,  384,  336,  336,  336,      349,  349,  261,  174,  261,  174,  450,  450,  450,  450,
      336,  336,  336,  253,  170,  344,  344,  344,  344,  344,      450,  451,  310,  482,  357,  366,  366,  366,  366,  366,
   
      344,  344,  344,  300,  253,  170,  345,  345,  345,  345,      366,  366,  366,  621,  174,  415,  415,  415,  415,  415,
      345,  345,  345,  345,  346,  606,  170,  463,  347,  347,      415,  415,  415,  357,  261,  174,  411,  411,  411,  411,
      347,  347,  347,   79,  472,  401,  253,  170,  451,  451,      411,  411,  411,  411,  357,  261,  174,  411,  411,  411,
      451,  451,  451,  451,  331,  503,  401,   79,  511,  464,      411,  411,  411,  603,  604,  357,  261,  174,  412,  412,
      466,  347,  347,  347,  347,  347,  347,  170,  351,  352,      412,  412,  412,  412,  412,  412,  413,  174,  603,  604,
      353,  351,  351,  351,  351,  351,  354,  504,  465,   79,      414,  414,  414,  414,  414,  621,  357,  414,  414,  414,
      355,  355,  355,  355,  355,  454,  454,  454,  454,  454,      414,  414,  414,  414,  414,  436,  437,  438,  439,  436,
      454,  454,  454,  606,   79,  453,  453,  453,  453,  453,      436,  436,  436,  428,  414,  414,  414,  414,  414,  414,
      453,  453,  453,  355,  355,  355,  355,  355,  355,  375,      174,  418,  419,  420,  418,  418,  418,  418,  418,  174,
      376,  376,  376,  376,  376,  376,  376,  376,  470,  478,      148,  148,  427,  421,  421,  421,  421,  421,  413,   81,
   
      544,  479,  479,  479,  479,  479,  479,  479,  479,  443,      387,  388,  388,  388,  388,  388,  388,  388,  388,  387,
      443,  443,  443,  443,  443,  443,  443,  460,  470,  459,      388,  388,  388,  388,  388,  388,  426,  421,  421,  421,
      470,  471,  545,   79,  375,  377,  377,  377,  377,  377,      421,  421,  421,  387,  388,  388,  388,  388,  388,  388,
      377,  377,  377,  478,  470,  480,  480,  480,  480,  480,      388,  388,  518,  484,  425,   81,  441,  442,  443,  441,
      480,  480,  480,   79,  478,  382,  481,  481,  481,  481,      441,  441,  441,  441,   81,  405,  405,  405,  405,  405,
      481,  482,  479,  479,  470,  434,  470,  470,   79,  375,      405,  405,  405,  484,  519,  484,  485,  394,   81,  445,
      378,  378,  378,  378,  378,  379,  376,  376,  489,  489,      445,  445,  445,  445,  445,  445,  445,  396,  394,  486,
      489,  489,  489,  489,  489,  489,  490,  490,  490,  490,      446,  446,  446,  446,  446,  446,  446,  446,  447,   81,
      490,  491,  606,  170,  488,  488,  488,  488,  488,  488,      424,  423,  448,  448,  448,  448,  448,  449,  449,  449,
      488,  488,  401,   79,  382,  382,  383,  383,  383,  383,      449,  449,  449,  449,  449,  621,  422,  448,  448,  448,
   
      383,  383,  383,  383,  384,  487,  458,  457,  385,  385,      448,  448,  448,  448,  448,   81,  448,  448,  448,  448,
      385,  385,  385,  497,  498,  499,  497,  497,  497,  497,      448,  448,  452,  453,  454,  452,  452,  452,  452,  452,
      497,  444,  331,  445,  445,  445,  445,  445,  445,  445,      455,  174,  348,  342,  456,  456,  456,  456,  456,  457,
      445,  385,  385,  385,  385,  385,  385,  389,  390,  391,      413,  458,  458,  458,  458,  458,  458,  458,  458,  468,
      389,  389,  389,  389,  389,  392,  251,  418,  417,  393,      468,  468,  468,  468,  469,  261,  174,  259,  456,  456,
      393,  393,  393,  393,  444,  606,  445,  445,  445,  445,      456,  456,  456,  456,  457,  357,  459,  459,  459,  459,
      445,  445,  445,  445,  444,  487,  445,  445,  445,  445,      459,  459,  459,  459,  457,  217,  460,  460,  460,  460,
      445,  445,  393,  393,  393,  393,  393,  393,  253,  170,      460,  461,  458,  458,  261,  174,  421,  421,  421,  421,
      399,  399,  399,  399,  399,  399,  399,  399,  346,  253,      421,  421,  421,  421,  413,  621,  174,  467,  467,  467,
      170,  400,  400,  400,  400,  400,  400,  400,  400,  401,      467,  467,  467,  467,  467,  413,  261,  174,  464,  464,
   
      253,  170,  382,  402,  402,  402,  402,  402,  467,   83,      464,  464,  464,  464,  464,  464,  413,  261,  174,  464,
      401,  513,  487,  514,  515,  516,  513,  415,  514,  515,      464,  464,  464,  464,  464,  382,  381,  413,  261,  174,
      516,  509,  544,  414,  554,  588,  402,  402,  402,  402,      465,  465,  465,  465,  465,  465,  465,  465,  394,  375,
      402,  402,  170,  406,  407,  408,  406,  406,  406,  406,      374,  369,  466,  466,  466,  466,  466,  621,  447,  466,
      406,  413,  572,  572,  545,  409,  409,  409,  409,  409,      466,  466,  466,  466,  466,  466,  466,  456,  456,  456,
      520,  521,  522,  520,  520,  520,  520,  520,  517,   79,      456,  456,  456,  456,  456,  368,  466,  466,  466,  466,
       79,  412,  411,  519,  573,  573,  410,  337,  409,  409,      466,  466,  486,  621,  487,  487,  487,  487,  487,  487,
      409,  409,  409,  409,  375,  376,  376,  376,  376,  376,      487,  487,  486,  447,  488,  488,  488,  488,  488,  488,
      376,  376,  376,   79,  472,  331,  473,  473,  473,  473,      488,  488,  486,  394,  489,  489,  489,  489,  489,  490,
      473,  473,  523,  524,  525,  523,  523,  523,  523,  523,      491,  491,  486,  447,  569,  605,  367,  486,   81,  491,
   
      478,  251,  479,  479,  479,  479,  479,  479,   79,  375,      491,  491,  487,  487,  487,  487,  487,  492,   81,  493,
      376,  376,  376,  376,  376,  376,  376,  376,  478,   79,      493,  493,  493,  493,  493,  493,  493,  492,   81,  494,
      479,  479,  479,  479,  479,  479,  479,  479,  478,  382,      494,  494,  494,  494,  494,  494,  494,  342,   81,  259,
      479,  479,  479,  479,  479,  479,  479,  479,  211,  530,       81,   81,  492,   81,  495,  495,  495,  495,  495,  496,
      370,  369,  363,   79,  382,  585,  432,  432,  432,  432,      493,  493,  394,  475,  499,  499,  499,  499,  499,  499,
      432,  432,  432,  432,  384,  382,  606,  433,  433,  433,      499,  499,  447,  394,  217,  500,  500,  500,  500,  500,
      433,  433,  433,  433,  433,  434,  530,  586,  585,  435,      500,  500,  500,  501,  477,  476,  518,  502,  502,  502,
      435,  435,  435,  435,  496,  496,  496,  496,  496,  496,      502,  502,  503,  503,  503,  503,  503,  503,  503,  503,
      496,  496,  532,  532,  532,  532,  532,  532,  532,  532,      504,  504,  504,  504,  504,  505,  478,  217,  519,  286,
      586,  362,  435,  435,  435,  435,  435,  435,  439,  440,      331,  502,  502,  502,  502,  502,  502,  506,  507,  508,
   
      441,  439,  439,  439,  439,  439,  442,  357,  356,  331,      506,  506,  506,  506,  506,  509,  330,  328,  327,  510,
      443,  443,  443,  443,  443,  533,  533,  533,  533,  533,      510,  510,  510,  510,  621,  326,  502,  502,  502,  502,
      534,  606,  382,  531,  531,  531,  531,  531,  531,  531,      502,  502,  502,  502,  511,  512,  513,  511,  511,  511,
      531,  251,  530,  443,  443,  443,  443,  443,  443,  253,      511,  511,  325,  510,  510,  510,  510,  510,  510,  457,
      170,  451,  451,  451,  451,  451,  451,  451,  451,  401,      324,  458,  458,  458,  458,  458,  458,  458,  458,  457,
      253,  170,  452,  452,  452,  452,  452,  452,  452,  452,      484,  458,  458,  458,  458,  458,  458,  458,  458,  457,
      211,  211,  276,  320,  453,  453,  453,  453,  453,  170,      323,  458,  458,  458,  458,  458,  458,  261,  174,  614,
      539,  539,  539,  539,  539,  539,  539,  539,  170,  540,      484,  322,  484,  484,  614,  321,  320,  413,  261,  174,
      540,  540,  540,  540,  540,  540,  540,  453,  453,  453,      516,  516,  516,  516,  516,  516,  516,  516,  530,  302,
      453,  453,  453,  472,  319,  473,  473,  473,  473,  473,      531,  532,  533,  530,  259,  531,  532,  533,  537,  538,
   
      473,  473,  473,  170,  541,  541,  541,  541,  541,  542,      539,  537,  537,  537,  537,  537,  486,  394,  487,  487,
      539,  539,  606,  317,  606,  606,  606,  575,   83,  513,      487,  487,  487,  487,  487,  487,  486,  501,  487,  487,
      316,  514,  515,  516,  315,  314,  313,  312,   79,  472,      487,  487,  487,  487,  487,  487,  217,  621,  394,  561,
      587,  474,  474,  474,  474,  474,  474,  474,  474,  606,      394,  298,   81,  217,  621,  105,  534,  501,  501,  286,
      311,  514,  515,  516,  606,  310,  606,  606,  516,  292,      547,  536,   81,  486,  547,  487,  487,  487,  487,  487,
      606,  251,  606,  606,  606,  211,  288,  211,  103,  517,      487,  562,   81,  540,  541,  542,  540,  540,  540,  540,
      276,  278,  276,  277,   79,  472,  517,  475,  475,  475,      540,  492,  288,  493,  493,  493,  493,  493,  493,  493,
      475,  475,  476,  477,  477,  552,  276,  274,  553,  553,      493,  550,  550,  550,  550,  550,  551,  286,  492,   81,
      553,  553,  553,  553,  553,  553,  517,  273,  272,  271,      493,  493,  493,  493,  493,  493,  493,  493,  492,  287,
      270,  517,  269,   97,  211,  512,  512,  519,  251,  512,      493,  493,  493,  493,  493,  493,  510,  510,  510,  510,
   
       79,  472,  211,  477,  477,  477,  473,  473,  473,  473,      510,  510,  510,  510,  394,  561,  545,  545,  545,  545,
      473,  512,  512,  512,  518,  518,  103,  559,  518,  560,      545,  545,  545,  545,  501,  394,  394,  546,  546,  546,
      560,  560,  560,  560,  560,  560,  560,   83,  199,  239,      546,  546,  546,  546,  546,  547,  547,  562,  286,  548,
      518,  518,  518,  236,  235,  234,   79,  382,  233,  485,      548,  548,  548,  548,  549,  549,  549,  549,  549,  549,
      485,  485,  485,  485,  485,  485,  485,  434,  382,  232,      549,  549,  621,  284,  548,  548,  548,  548,  548,  548,
      486,  486,  486,  486,  486,  486,  486,  486,  487,  230,      548,  548,  283,  548,  548,  548,  548,  548,  548,  552,
      229,  228,  488,  488,  488,  488,  488,  559,  227,  561,      553,  554,  552,  552,  552,  552,  552,  282,  281,  280,
      561,  561,  561,  561,  561,  561,  561,  538,  538,  538,      279,  555,  555,  555,  555,  555,  174,  556,  556,  556,
      538,  538,  538,  538,  538,  488,  488,  488,  488,  488,      556,  556,  556,  556,  556,  174,  557,  557,  557,  557,
      488,  492,  493,  494,  492,  492,  492,  492,  492,  495,      557,  557,  557,  557,  587,  555,  555,  555,  555,  555,
   
      226,  225,  224,  496,  496,  496,  496,  496,  559,  223,      555,  174,  558,  558,  558,  558,  558,  559,  556,  556,
      562,  562,  562,  562,  562,  563,  560,  560,  569,  569,      621,  278,  621,  621,  621,  530,  588,  531,  532,  533,
      569,  569,  569,  569,  569,  569,  496,  496,  496,  496,      621,  275,  531,  532,  533,  621,   99,  621,  621,  533,
      496,  496,  253,  170,  502,  502,  502,  502,  502,  502,      567,  217,  259,  568,  568,  568,  568,  568,  568,  568,
      502,  502,  472,  222,  473,  473,  473,  473,  473,  473,      568,  217,  587,  529,  529,  600,  621,  529,  621,  621,
      473,  473,  570,  570,  570,  570,  570,  571,  606,  221,      621,  105,   85,  535,  535,  205,  247,  535,  534,  529,
      568,  568,  568,  568,  568,  568,  568,  568,  170,  539,      529,  529,  244,  534,  588,  243,  242,  601,  534,  535,
      539,  539,  539,  539,  539,  539,  539,   79,  472,  103,      535,  535,  569,  534,  570,  570,  570,  570,  570,  570,
      473,  473,  473,  473,  473,  473,  473,  473,  170,  539,      570,  570,  569,  600,  571,  571,  571,  571,  571,  571,
      539,  539,  539,  539,  539,  539,  539,  170,  539,  539,      571,  571,  241,  569,  536,  572,  572,  572,  572,  572,
   
      539,  539,  539,  539,  553,  553,  553,  553,  553,  553,      573,  570,  570,  240,  238,  601,  237,  574,   81,  575,
      553,  553,   95,   79,  382,   83,  528,  528,  528,  528,      575,  575,  575,  575,  575,  575,  575,  574,   81,  576,
      528,  528,  528,  528,  487,  382,   83,  529,  529,  529,      576,  576,  576,  576,  576,  576,  576,  236,  574,   81,
      529,  529,  529,  529,  529,  530,  199,  151,  152,  531,      577,  577,  577,  577,  577,  578,  575,  575,  555,  555,
      531,  531,  531,  531,  553,  553,  553,  553,  553,  553,      555,  555,  555,  555,  555,  555,  394,  235,  581,  581,
      553,  553,  576,  577,  578,  576,  576,  576,  576,  576,      581,  581,  581,  581,  581,  581,  547,  394,  234,  582,
      146,  146,  531,  531,  531,  531,  531,  531,  535,  536,      582,  582,  582,  582,  582,  582,  582,  233,  232,  231,
      537,  535,  535,  535,  535,  535,  138,  197,  132,  132,      230,  583,  583,  583,  583,  583,  584,  584,  584,  584,
      538,  538,  538,  538,  538,   79,  554,  190,  555,  555,      584,  584,  584,  584,  585,  585,  585,  585,  585,  586,
      555,  555,  555,  555,  579,  580,  581,  579,  579,  579,      229,  228,  227,  105,   97,  583,  583,  583,  583,  583,
   
      579,  579,  189,  538,  538,  538,  538,  538,  538,  554,      583,  621,   85,  583,  583,  583,  583,  583,  583,  583,
      188,  555,  555,  555,  555,  555,  555,  555,  555,  187,      583,  174,  556,  556,  556,  556,  556,  556,  556,  556,
      559,   79,  560,  560,  560,  560,  560,  560,  560,  560,      174,  556,  556,  556,  556,  556,  556,  556,  556,  174,
      559,  186,  560,  560,  560,  560,  560,  560,  560,  560,      556,  556,  556,  556,  556,  556,  568,  568,  568,  568,
      184,  183,  182,  181,   79,  554,  176,  556,  556,  556,      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
      556,  556,  556,  556,  556,  559,  175,  560,  560,  560,      568,  568,  591,  592,  593,  591,  591,  591,  591,  591,
      560,  560,  560,  382,  174,  584,  584,  584,  584,  584,      569,   85,  570,  570,  570,  570,  570,  570,  570,  570,
      584,  584,  584,  593,  593,  593,  593,  593,  593,  103,      569,  205,  570,  570,  570,  570,  570,  570,  570,  570,
       79,  554,   78,  557,  557,  557,  557,  557,  558,  555,      155,  156,  150,  150,  142,  569,   81,  570,  570,  570,
      555,  593,  593,  593,  593,  593,  593,  593,  593,  594,      570,  570,  570,  203,  136,  136,   81,  594,  595,  596,
   
      594,  594,  594,  594,  594,  594,  594,  595,  595,  595,      594,  594,  594,  594,  594,  574,   81,  575,  575,  575,
      595,  595,  596,  593,  593,  103,   79,  382,  163,  566,      575,  575,  575,  575,  575,  196,  195,  194,  193,  192,
      566,  566,  566,  566,  566,  566,  566,  530,  382,   91,      574,   81,  575,  575,  575,  575,  575,  575,  575,  575,
      567,  567,  567,  567,  567,  567,  567,  567,   83,   81,      574,  190,  575,  575,  575,  575,  575,  575,  394,  189,
       80,   79,  568,  568,  568,  568,  568,  152,  600,  601,      599,  599,  599,  599,  599,  599,  599,  599,  605,  188,
      602,  600,  600,  600,  600,  600,  588,  146,  589,  589,      606,  606,  606,  606,  606,  606,  606,  606,  605,  187,
      589,  589,  589,  589,  138,  568,  568,  568,  568,  568,      607,  607,  607,  607,  607,  607,  607,  607,  605,  186,
      568,  554,  132,  555,  555,  555,  555,  555,  555,  555,      608,  608,  608,  608,  608,  609,  606,  606,  610,  610,
      555,   79,  593,  593,  593,  593,  593,  593,  593,  593,      610,  610,  610,  610,   81,  610,  610,  610,  610,  610,
      128,   79,  593,  593,  593,  593,  593,  593,  593,  593,      610,  610,  610,  181,   81,  611,  611,  611,  611,  611,
   
      126,  113,  112,  111,  110,  109,   79,  554,  108,  555,      611,  611,  611,  180,   81,  612,  612,  612,  612,  612,
      555,  555,  555,  555,  555,  555,  555,  105,  103,   91,      613,  610,  610,  615,  616,  617,  615,  615,  615,  615,
      603,  603,  603,  603,  603,  603,  603,  603,  600,  600,      615,  605,  179,  606,  606,  606,  606,  606,  606,  606,
      600,  600,  600,  600,  600,  600,   81,   80,   79,  606,      606,  605,  178,  606,  606,  606,  606,  606,  606,  606,
      606,  606,   79,  588,  606,  589,  589,  589,  589,  589,      606,  105,   80,  105,  167,   93,  605,   81,  606,  606,
      589,  589,  589,   79,  606,  606,  606,  606,  606,  606,      606,  606,  606,  606,   85,   83,   82,   81,  610,  610,
      606,   79,  604,  604,  604,  604,  604,  605,  603,  603,      610,  610,  610,  610,  610,  610,   81,   81,  610,  610,
      603,  603,  603,  603,  603,  603,  603,  603,   79,  588,      610,  610,  610,  610,  610,  610,  156,  150,  142,  113,
      606,  590,  590,  590,  590,  590,  590,  590,  590,  606,      111,  136,   81,  618,  618,  618,  618,  618,  618,  618,
      606,  606,  606,  606,  606,   79,  603,  603,  603,  603,      618,  615,  615,  615,  615,  615,  615,  615,  615,  619,
   
      603,  603,  606,   79,  606,  606,  606,  606,  606,  606,      619,  619,  619,  619,  620,  618,  618,  618,  618,  618,
      606,  606,  606,  606,   79,  588,  606,  591,  591,  591,      618,  618,  618,  618,  618,  132,  130,   81,  618,  618,
      591,  591,  592,  589,  589,  606,  606,  606,  606,   79,      618,  618,  618,  618,  117,   81,  116,  115,  112,  107,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      105,   93,   83,   81,   82,   81,  621,  621,  621,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,   81,  621,  621,  621,  621,  621,  621,  621,  621,
       79,  588,  606,  589,  589,  589,  589,  589,  589,  589,      621,  621,   81,   59,   59,   59,   59,   59,   59,   59,
      589,  606,  606,  606,  606,  606,  606,  606,  606,  606,       59,   59,   59,   59,   59,   59,   59,   59,   59,   31,
      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,  606,  606,  606,  606, 
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606, 
      606,  606,   79,   57,   57,   57,   57,   57,   57,   57, 
       57,   57,   57,   57,   57,   57,   57,   57,   57,   31, 
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,         31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   66,   66,   66,   66,   66,       31,   31,   31,   31,   31,   68,   68,   68,   68,   68,
       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
       66,   73,   73,   73,   73,   73,   73,   73,   73,   73, 
       73,   73,   73,   73,   73,   73,   73,   78,  606,  606, 
      606,  606,  606,  606,  606,   78,   78,   78,  606,  606, 
   
       78,   78,   78,   82,   82,   82,   82,   82,   82,   82,       68,   75,   75,   75,   75,   75,   75,   75,   75,   75,
       82,   82,   82,   82,   82,   82,   82,   82,   82,   86,       75,   75,   75,   75,   75,   75,   75,   80,  621,  621,
      606,  606,  606,  606,   86,  606,  606,   86,   86,   86,      621,  621,  621,  621,  621,   80,   80,   80,  621,  621,
       86,  606,   86,   86,   86,   90,  606,  606,  606,  606,       80,   80,   80,   84,   84,   84,   84,   84,   84,   84,
      606,  606,  606,   90,   90,   90,  606,  606,   90,   90,       84,   84,   84,   84,   84,   84,   84,   84,   84,   88,
       90,   92,  606,  606,   92,   92,  606,   92,  606,   92,      621,  621,  621,  621,   88,  621,  621,   88,   88,   88,
       92,   92,  606,  606,   92,   92,   92,  102,  102,  606,       88,  621,   88,   88,   88,   92,  621,  621,  621,  621,
      606,  606,  102,  133,  606,  606,  133,  133,  606,  133,      621,  621,  621,   92,   92,   92,  621,  621,   92,   92,
      606,  133,  133,  133,  606,  606,  133,  133,  133,  137,       92,   94,  621,  621,   94,   94,  621,   94,  621,   94,
      606,  606,  137,  137,  606,  137,  606,  137,  137,  137,       94,   94,  621,  621,   94,   94,   94,  104,  104,  621,
   
      606,  137,  606,  137,  137,  145,  606,  606,  145,  606,      621,  621,  104,  137,  621,  621,  137,  137,  621,  137,
      606,  145,  606,  145,  145,  145,  145,  606,  145,  145,      621,  137,  137,  137,  621,  621,  137,  137,  137,  141,
      145,  149,  149,  149,  149,  149,  149,  149,  149,  149,      621,  621,  141,  141,  621,  141,  621,  141,  141,  141,
      149,  149,  149,  149,  149,  149,  149,  151,  151,  606,      621,  141,  621,  141,  141,  149,  621,  621,  149,  621,
      151,  606,  151,  151,  151,  151,  151,  151,  151,  151,      621,  149,  621,  149,  149,  149,  149,  621,  149,  149,
      151,  151,  151,  157,  157,  157,  157,  157,  157,  157,      149,  153,  153,  153,  153,  153,  153,  153,  153,  153,
      157,  157,  157,  157,  157,  157,  157,  157,  157,  158,      153,  153,  153,  153,  153,  153,  153,  155,  155,  621,
      158,  606,  158,  158,  158,  158,  158,  158,  158,  158,      155,  621,  155,  155,  155,  155,  155,  155,  155,  155,
      158,  158,  158,  158,  158,  161,  606,  606,  606,  606,      155,  155,  155,  161,  161,  161,  161,  161,  161,  161,
      161,  606,  606,  161,  161,  161,  606,  606,  161,  161,      161,  161,  161,  161,  161,  161,  161,  161,  161,  162,
   
      161,   93,  606,  606,   93,   93,  606,   93,  606,   93,      162,  621,  162,  162,  162,  162,  162,  162,  162,  162,
       93,   93,  606,  606,   93,   93,   93,  169,  169,  606,      162,  162,  162,  162,  162,  165,  621,  621,  621,  621,
      606,  606,  169,  171,  171,  171,  606,  606,  606,  171,      165,  621,  621,  165,  165,  165,  621,  621,  165,  165,
      134,  606,  606,  134,  134,  606,  134,  606,  134,  134,      165,   95,  621,  621,   95,   95,  621,   95,  621,   95,
      134,  606,  606,  134,  134,  134,  200,  200,  200,  200,       95,   95,  621,  621,   95,   95,   95,  173,  173,  621,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,      621,  621,  173,  175,  175,  175,  621,  621,  621,  175,
      200,  200,  207,  207,  606,  606,  606,  207,  213,  213,      138,  621,  621,  138,  138,  621,  138,  621,  138,  138,
      213,  606,  606,  606,  213,  245,  245,  606,  606,  606,      138,  621,  621,  138,  138,  138,  206,  206,  206,  206,
      245,  246,  246,  606,  606,  606,  246,  250,  250,  606,      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
      606,  606,  250,  252,  252,  252,  606,  606,  606,  252,      206,  206,  213,  213,  621,  621,  621,  213,  219,  219,
   
      288,  288,  606,  606,  606,  288,  290,  290,  606,  606,      219,  621,  621,  621,  219,  253,  253,  621,  621,  621,
      606,  290,  291,  291,  606,  606,  606,  291,  293,  293,      253,  254,  254,  621,  621,  621,  254,  258,  258,  621,
      293,  606,  606,  606,  293,  297,  297,  297,  297,  606,      621,  621,  258,  260,  260,  260,  621,  621,  621,  260,
      606,  606,  297,  328,  328,  606,  606,  606,  328,  329,      298,  298,  621,  621,  621,  298,  300,  300,  621,  621,
      329,  606,  606,  606,  329,  330,  330,  606,  606,  606,      621,  300,  301,  301,  621,  621,  621,  301,  303,  303,
      330,  342,  342,  342,  606,  606,  606,  342,  343,  343,      303,  621,  621,  621,  303,  307,  307,  307,  307,  621,
      343,  343,  606,  606,  606,  343,  380,  380,  606,  606,      621,  621,  307,  339,  339,  621,  621,  621,  339,  340,
      606,  380,  381,  381,  606,  606,  606,  381,  397,  397,      340,  621,  621,  621,  340,  341,  341,  621,  621,  621,
      397,  606,  606,  606,  397,  398,  398,  398,  398,  606,      341,  353,  353,  353,  621,  621,  621,  353,  354,  354,
      606,  606,  398,  427,  427,  606,  606,  606,  427,  431,      354,  354,  621,  621,  621,  354,  392,  392,  621,  621,
   
      606,  431,  431,  606,  606,  606,  431,  449,  449,  449,      621,  392,  393,  393,  621,  621,  621,  393,  409,  409,
      606,  606,  606,  449,  450,  450,  450,  450,  606,  606,      409,  621,  621,  621,  409,  410,  410,  410,  410,  621,
      606,  450,  483,  483,  606,  606,  606,  483,  484,  606,      621,  621,  410,  440,  440,  621,  621,  621,  440,  444,
      484,  484,  606,  606,  606,  484,  500,  500,  500,  606,      621,  444,  444,  621,  621,  621,  444,  462,  462,  462,
      606,  606,  500,  501,  501,  501,  606,  606,  606,  606,      621,  621,  621,  462,  463,  463,  463,  463,  621,  621,
      501,  512,  512,  606,  512,  512,  512,  606,  606,  512,      621,  463,  497,  497,  621,  621,  621,  497,  498,  621,
      512,  512,  606,  606,  512,  512,  512,  518,  518,  606,      498,  498,  621,  621,  621,  498,  514,  514,  514,  621,
      518,  518,  518,  606,  606,  518,  518,  518,  606,  606,      621,  621,  514,  515,  515,  515,  621,  621,  621,  621,
      518,  518,  518,  526,  526,  606,  606,  606,  526,  527,      515,  524,  524,  524,  524,  524,  524,  524,  524,  524,
      606,  527,  527,  606,  606,  606,  527,  543,  543,  606,      524,  524,  524,  524,  524,  524,  524,  529,  529,  621,
   
      606,  606,  606,  543,  549,  549,  549,  549,  549,  549,      529,  529,  529,  621,  621,  529,  529,  529,  621,  621,
      549,  549,  549,  549,  549,  549,  549,  549,  549,  549,      529,  529,  529,  535,  535,  621,  535,  535,  535,  621,
      564,  564,  606,  606,  606,  564,  565,  606,  565,  565,      621,  535,  535,  535,  621,  621,  535,  535,  535,  543,
      606,  606,  606,  565,  582,  582,  606,  606,  606,  582,      543,  621,  621,  621,  543,  544,  621,  544,  544,  621,
      583,  606,  583,  606,  606,  606,  606,  583,  598,  598,      621,  621,  544,  560,  560,  621,  621,  621,  621,  560,
      598,  598,  598,  598,  598,  598,  598,  598,  598,  598,      579,  579,  621,  621,  621,  579,  580,  621,  580,  580,
      598,  598,  598,  598,   13,  606,  606,  606,  606,  606,      621,  621,  621,  580,  597,  597,  621,  621,  621,  597,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      598,  621,  598,  621,  621,  621,  621,  598,  602,  602,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      602,  602,  602,  602,  602,  602,  602,  602,  602,  602,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      602,  602,  602,  602,   13,  621,  621,  621,  621,  621,
   
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
      606      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621
     } ;      } ;
   
static yyconst short int yy_chk[3732] =static yyconst short int yy_chk[3663] =
     {   0,      {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
Line 982  static yyconst short int yy_chk[3732] = Line 980  static yyconst short int yy_chk[3732] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    2,   44,    3,   34,        1,    1,    1,    1,    1,    1,    1,    2,  618,    3,
        2,  103,    3,    4,   47,   20,  126,    4,    3,   34,       20,    2,   70,    3,   47,   36,   50,    4,   34,    3,
      103,    3,   52,    4,   44,   48,    4,   11,   11,   11,       36,    4,    3,   11,   11,   11,   11,    4,   20,   34,
       11,  126,   52,   20,    2,    2,   56,   47,    2,   74,        4,   12,   12,   12,   12,    2,    2,   70,   47,    2,
   
        5,    5,    5,   48,    5,    2,   50,    3,    2,    3,       77,   38,  602,   50,    3,  599,   44,    2,    3,    3,
        5,  603,    4,   56,    4,    6,    6,    6,   20,    6,        2,    3,    4,  597,   20,   38,    4,    4,   52,    4,
       64,   64,    5,    5,   75,    6,   12,   12,   12,   12,        5,    5,    5,   44,    5,    6,    6,    6,   52,    6,
        3,  196,   68,   50,   11,    4,   70,    6,    6,   25,        5,   11,    3,   25,   25,    6,  120,   25,   25,   12,
       25,   72,   72,   25,   25,  196,   74,    5,   27,   27,        4,  120,    5,    5,   66,   66,   77,    6,    6,    9,
       27,   27,   27,   27,   27,   27,   68,   88,  124,  127,        9,    9,    9,    9,   58,   25,   74,   74,    9,    9,
       70,   25,    6,    7,    7,    7,   45,    7,  598,   75,        9,   28,   28,   28,   28,   28,   28,   19,    5,  143,
      124,  127,  129,   12,   28,   28,   28,   28,   28,   28,      143,   58,    9,    6,    7,    7,    7,   19,    7,   25,
      139,  139,  129,   43,   25,   43,   43,   43,   43,   43,       19,   19,   19,   19,   19,   19,   19,   19,   27,   27,
       43,   43,   43,  194,   45,   45,   77,   77,   45,   77,       27,   27,   27,   27,   27,   27,  105,    9,   10,   10,
   
       88,  116,  123,  114,  114,   45,  116,  153,   45,  194,       10,   10,   10,   76,  583,  105,   90,   10,   10,   10,
        43,  165,   43,   43,   43,   43,   43,   43,   43,   43,
        45,   10,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,          7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    8,    8,        8,    8,    8,   48,    8,  128,   10,   72,   45,   45,
        8,   53,    8,  206,   53,   53,   53,   53,   53,   53,       90,   76,   45,   79,   79,  165,   79,  128,  582,  127,
       53,   53,   84,   84,   84,   84,   84,   84,   84,   84,       45,   53,   48,   45,   53,   53,   53,   53,   53,   53,
      114,   62,   62,   62,  153,   62,  154,  125,  206,   62,       53,   53,   72,   86,   86,   86,   86,   86,   86,   86,
      123,   62,   85,   85,   85,   85,   85,   85,   85,   85,       86,  103,  103,  103,  103,  103,  103,  580,    8,    8,
      143,  143,  202,   62,   62,    8,    8,    8,    8,    8, 
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,          8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
         8,    8,    8,    9,    9,    9,    9,    9,   62,  125,  
   
      128,  154,    9,    9,    9,   86,  128,  202,   55,   55,        8,    8,    8,    8,    8,    8,   26,  131,   26,   26,
      136,  161,   55,   55,  185,  136,    9,  101,  101,  101,       26,   26,   26,   26,   26,   26,   26,   88,  127,  131,
      101,  101,  101,   86,  155,  155,  198,  185,   87,  587,       26,   26,   26,   26,   26,  130,  191,  112,  579,   55,
       55,   87,   87,   87,   87,   87,   87,   87,   87,  198,       55,  129,  112,   55,   55,   88,  112,  132,  112,  191,
        9,   10,   10,   10,   10,   10,  584,  171,   86,  284,      130,  202,   26,  132,   26,   26,   26,   26,   26,   26,
       10,   10,   10,   55,  161,   89,  171,   89,   89,  222,       32,   55,  140,  147,  147,  202,   32,  140,  575,   32,
      582,   89,   89,  222,   10,   89,  213,   95,   95,   95,       32,   88,   32,   32,   32,   32,   32,   32,   32,   32,
       95,   95,   95,   95,   95,  213,   92,   92,   89,   89,       32,   32,   32,   32,  129,   55,   32,   32,   32,   32,
       92,   92,  192,  195,  284,  195,  510,  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, 
       26,   26,   26,   32,  146,  238,  238,  146,  146,   32, 
      568,  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,
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,         32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
   
        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,         32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
       32,   32,   32,   32,   32,   32,   32,   32,   32,   35,       32,   32,   32,   32,   32,   32,   32,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   35,  210,  210,       35,   35,   35,   35,   35,   35,   65,  118,  118,   35,
      210,   35,   35,   35,   35,   35,  109,  231,  240,  241,       35,   35,   35,   35,  159,  159,   65,  133,   35,   65,
       35,  109,  252,  231,  109,  241,  109,  117,  567,  150,       65,   65,   65,   65,   65,   65,   65,  133,  154,  154,
      150,  252,  239,  240,   35,   35,   35,   35,   35,   35,      201,  208,  201,   35,   35,   35,   35,   35,   35,   42,
       42,   42,   42,   42,   42,  293,   42,   42,  133,  133,       42,   42,   42,   42,  158,   42,   42,  175,  157,   42,
       42,  265,  133,  133,  293,  117,  117,  239,  281,  117,       64,   64,   64,  200,   64,  118,  175,  219,   64,  197,
      388,  388,   42,   42,   42,   46,  117,  163,  281,  117,       64,   42,   42,   42,   46,  198,  219,  208,  212,  200,
      133,  163,  323,  265,  239,   46,  150,  163,   46,   46,      198,  227,   64,   64,   46,  564,  154,   46,   46,   46,
   
       46,   46,   46,   46,   46,   46,  275,  282,  323,  163,       46,   46,   46,   46,   46,   81,  560,   81,   81,   81,
      163,  275,  282,  133,  142,  142,  142,  142,  142,  142,      158,   81,   81,  227,  212,   81,  157,  245,   64,   87,
      142,  142,  159,  159,  159,  159,  159,  159,  159,  159,       87,   87,   87,   87,   87,   87,   87,   81,   81,   81,
      160,  160,  160,  160,  160,  160,  160,  160,  438,  438,      197,   94,   94,  556,  229,   94,   94,  204,   89,  229,
       46,   63,  201,  201,  201,  201,  201,  201,  201,  201,       46,   89,   89,   89,   89,   89,   89,   89,   89,   91,
      279,   63,  565,  280,   63,   63,   63,   63,   63,   63,      204,   91,   91,   94,  544,   91,   91,  239,   93,   91,
       63,   63,   79,  564,   79,   79,   79,  297,   79,   79,       93,   93,   93,  239,   93,   93,  246,  246,   93,  216,
      254,  254,   79,  197,  280,  201,  297,  197,  256,  256,      216,  216,   91,   91,  245,  289,  248,   94,  249,  260,
      254,  321,  322,  197,   79,   79,   79,   91,  256,   91,       93,   93,   93,   96,  249,   96,   96,   96,  260,   96,
       91,   91,  322,   91,   91,  197,  197,   91,  209,  209,       96,  248,  543,   96,   97,   97,   97,   97,   97,   97,
   
      209,  209,  209,  209,  209,  209,  209,  298,  298,   91,       97,   97,  273,  290,  294,   96,   96,   96,  101,  101,
       91,   91,   94,  279,   94,   94,   94,  298,   94,   94,      101,  101,  101,  101,  101,  101,  102,  102,  102,  102,
      313,  383,   94,  162,  313,  162,  162,  452,  452,  162,      102,  102,  102,  102,  273,  290,  482,  291,   97,   98,
      162,  383,  321,  162,   94,   94,   94,   96,   96,   96,       98,   98,   98,   98,   98,   98,   98,  291,  247,  289,
       96,   96,   96,   96,   96,  162,  162,  162,  312,   96,      294,   98,   98,   98,   98,   98,  135,  135,  135,  135,
       96,   96,   96,   96,  205,  368,  205,  205,  205,  205,      135,  135,  135,  135,  332,  433,  285,  433,  137,  137,
      205,  205,  214,  214,  214,  214,  214,  214,  214,  214,      121,  285,  137,  137,  247,   98,   98,   98,   98,   98,
      312,  368,   96,   96,   96,   96,   96,   96,  104,  104,       98,  106,  106,  106,  106,  106,  106,  106,  106,  106,
      104,  104,  104,  104,  104,  104,  104,  316,  371,  205,      137,  247,  482,  106,  106,  106,  106,  106,  121,  121,
      104,  104,  104,  104,  104,  216,  216,  216,  216,  216,      303,  139,  121,  139,  139,  139,  307,  139,  139,  303,
   
      216,  216,  216,  217,  217,  217,  217,  217,  217,  316,      121,  139,  528,  121,  137,  307,  332,  106,  106,  106,
      299,  299,  373,  104,  104,  104,  104,  104,  104,  135,      106,  106,  106,  139,  139,  139,  146,  146,  146,  146,
      299,  135,  135,  135,  560,  135,  135,  373,  219,  135,      146,  146,  146,  146,  150,  292,  324,  150,  150,  334,
      219,  219,  219,  219,  219,  219,  219,  219,  453,  453,      292,  324,  383,  524,  150,  163,  163,  163,  163,  163,
      371,  135,  135,  135,  164,  549,  164,  164,  164,  164,      163,  163,  163,  323,  523,  334,  385,  150,  164,  164,
      164,  164,  164,  164,  247,  247,  247,  247,  247,  247,      164,  164,  164,  164,  164,  164,  166,  522,  166,  166,
      247,  247,  247,  253,  253,  253,  253,  253,  253,  253,      167,  385,  166,  166,  167,  323,  166,  262,  262,  211,
      253,  255,  255,  255,  255,  255,  255,  255,  255,  164,      167,  211,  211,  211,  211,  211,  211,  262,  166,  166,
      165,  547,  165,  165,  165,  165,  165,  165,  165,  165,      166,  521,  167,  167,  168,  383,  168,  168,  168,  168,
      259,  259,  259,  259,  259,  259,  259,  259,  419,  419,      168,  168,  168,  168,  169,  327,  169,  169,  169,  169,
   
      259,  261,  261,  261,  261,  261,  261,  261,  261,  262,      169,  169,  169,  169,  170,  211,  170,  170,  170,  170,
      262,  262,  262,  262,  262,  165,  166,  543,  166,  166,      170,  170,  170,  170,  203,  264,  264,  327,  203,  388,
      166,  166,  166,  166,  166,  166,  264,  317,  264,  264,      168,  308,  308,  380,  203,  264,  329,  515,  309,  309,
      264,  264,  264,  264,  264,  264,  301,  301,  283,  283,      169,  308,  311,  311,  498,  329,  203,  203,  309,  380,
      283,  283,  283,  283,  283,  283,  301,  456,  456,  317,      170,  171,  311,  171,  171,  171,  171,  171,  171,  171,
      419,  166,  167,  318,  167,  167,  167,  167,  167,  167,      171,  400,  400,  497,  388,  171,  171,  171,  171,  171,
      167,  167,  318,  324,  342,  343,  167,  167,  167,  167,      207,  207,  207,  207,  207,  207,  207,  207,  209,  335,
      167,  283,  324,  342,  343,  344,  344,  287,  372,  287,      209,  209,  209,  209,  209,  209,  209,  209,  335,  171,
      287,  287,  287,  287,  287,  344,  420,  372,  420,  167,      171,  171,  171,  171,  171,  174,  174,  174,  174,  174,
      167,  167,  167,  167,  167,  170,  170,  170,  170,  170,      174,  174,  174,  174,  207,  451,  451,  174,  174,  174,
   
      170,  170,  170,  170,  345,  345,  539,  170,  170,  170,      174,  174,  527,  210,  209,  210,  210,  210,  210,  210,
      170,  170,  287,  294,  345,  294,  294,  294,  294,  294,      210,  210,  210,  220,  220,  220,  220,  220,  220,  220,
      294,  294,  294,  307,  307,  307,  307,  307,  307,  527,      220,  174,  174,  174,  174,  174,  174,  176,  176,  176,
      170,  170,  170,  170,  170,  170,  172,  172,  172,  172,      176,  176,  176,  176,  176,  176,  176,  465,  465,  210,
      172,  172,  172,  172,  172,  172,  491,  491,  526,  172,      176,  176,  176,  176,  176,  215,  215,  215,  215,  215,
      172,  172,  172,  172,  295,  376,  295,  295,  295,  295,      215,  215,  215,  215,  222,  222,  222,  222,  222,  222,
      295,  295,  295,  295,  300,  300,  300,  300,  300,  300,      222,  222,  386,  527,  176,  176,  176,  176,  176,  176,
      300,  300,  172,  172,  172,  172,  172,  172,  173,  173,      177,  177,  177,  177,  177,  177,  177,  177,  386,  466,
      173,  173,  173,  173,  173,  173,  347,  347,  511,  376,      466,  328,  177,  177,  177,  177,  177,  223,  223,  223,
      173,  173,  173,  173,  173,  296,  347,  296,  296,  296,      223,  223,  223,  225,  333,  225,  225,  225,  225,  225,
   
      296,  296,  296,  296,  296,  306,  306,  306,  306,  306,      225,  225,  225,  328,  333,  493,  177,  177,  177,  177,
      306,  306,  306,  173,  173,  173,  173,  173,  173,  203,      177,  177,  221,  221,  221,  221,  221,  221,  221,  221,
      509,  203,  203,  203,  203,  203,  203,  203,  203,  304,      221,  221,  221,  353,  469,  469,  221,  221,  221,  221,
      304,  304,  304,  304,  304,  304,  304,  508,  309,  304,      221,  250,  353,  250,  250,  250,  250,  250,  250,  250,
      309,  309,  309,  309,  309,  309,  309,  309,  334,  334,      250,  255,  255,  255,  255,  255,  255,  255,  255,  255,
      334,  334,  334,  334,  203,  204,  507,  204,  204,  204,      221,  221,  221,  221,  221,  221,  224,  224,  224,  224,
      204,  204,  204,  204,  204,  331,  331,  331,  331,  331,      224,  224,  224,  224,  224,  224,  354,  250,  479,  224,
      331,  331,  331,  333,  333,  333,  333,  333,  333,  333,      224,  224,  224,  224,  251,  354,  251,  251,  251,  251,
      333,  337,  337,  337,  337,  337,  337,  337,  337,  358,      251,  251,  251,  251,  261,  261,  261,  261,  261,  261,
      204,  215,  215,  215,  215,  215,  215,  215,  215,  215,      261,  261,  474,  224,  224,  224,  224,  224,  224,  252,
   
      215,  215,  502,  502,  506,  215,  215,  215,  215,  215,      473,  252,  252,  252,  252,  252,  252,  252,  252,  370,
      336,  358,  336,  336,  336,  336,  336,  336,  336,  336,      251,  263,  263,  263,  263,  263,  263,  263,  263,  267,
      341,  501,  341,  341,  341,  341,  341,  341,  215,  215,      267,  267,  267,  267,  267,  267,  267,  481,  481,  267,
      215,  215,  215,  215,  218,  218,  218,  218,  218,  218,      472,  370,  505,  505,  470,  252,  265,  265,  265,  265,
      218,  218,  218,  218,  397,  534,  534,  218,  218,  218,      265,  265,  265,  265,  265,  265,  265,  268,  268,  268,
      218,  218,  339,  397,  339,  339,  339,  339,  339,  339,      268,  268,  268,  268,  268,  268,  268,  268,  376,  378,
      339,  339,  346,  346,  346,  346,  346,  346,  346,  346,      427,  268,  268,  268,  268,  268,  269,  269,  269,  269,
      218,  218,  218,  218,  218,  218,  242,  484,  242,  242,      269,  269,  269,  269,  270,  270,  270,  270,  270,  270,
      242,  242,  242,  242,  242,  242,  340,  364,  340,  340,      376,  378,  427,  516,  516,  268,  268,  268,  268,  268,
      340,  340,  340,  340,  340,  340,  350,  350,  350,  350,      268,  271,  271,  271,  271,  271,  271,  271,  271,  271,
   
      350,  350,  350,  350,  398,  669,  350,  551,  551,  364,      271,  384,  525,  525,  271,  271,  271,  271,  271,  272,
      669,  242,  243,  398,  243,  243,  243,  243,  243,  243,      384,  272,  272,  272,  272,  272,  272,  272,  272,  293,
      243,  243,  352,  352,  352,  352,  352,  352,  352,  352,      293,  293,  293,  293,  293,  293,  293,  458,  271,  271,
      353,  353,  353,  353,  353,  353,  355,  366,  355,  355,      271,  271,  271,  271,  295,  395,  295,  295,  295,  295,
      355,  355,  355,  355,  355,  355,  374,  243,  244,  449,      295,  295,  295,  295,  297,  395,  297,  297,  297,  297,
      244,  244,  244,  244,  244,  244,  244,  244,  449,  366,      297,  297,  296,  293,  296,  296,  296,  296,  296,  296,
      414,  385,  374,  382,  382,  382,  382,  382,  382,  382,      296,  296,  317,  317,  317,  317,  317,  317,  444,  304,
      382,  385,  450,  375,  375,  375,  375,  375,  375,  375,      295,  304,  304,  304,  304,  304,  304,  304,  304,  440,
      375,  450,  414,  244,  257,  257,  257,  257,  257,  257,      297,  345,  345,  345,  345,  345,  345,  435,  296,  302,
      257,  257,  257,  257,  257,  260,  260,  260,  260,  260,      302,  302,  302,  302,  302,  302,  302,  302,  409,  551,
   
      260,  260,  260,  260,  260,  260,  375,  415,  457,  260,      551,  302,  302,  302,  302,  302,  305,  409,  305,  305,
      260,  260,  260,  260,  379,  379,  379,  379,  379,  379,      305,  305,  305,  305,  305,  305,  310,  310,  310,  310,
      379,  384,  384,  384,  384,  384,  384,  384,  384,  415,      310,  310,  310,  310,  431,  302,  302,  302,  302,  302,
      457,  483,  260,  260,  260,  260,  260,  260,  263,  263,      302,  306,  430,  306,  306,  306,  306,  306,  306,  306,
      263,  263,  263,  263,  263,  263,  263,  263,  379,  571,      306,  312,  312,  312,  312,  312,  312,  312,  312,  312,
      571,  263,  263,  263,  263,  263,  390,  390,  390,  390,      312,  312,  314,  314,  314,  314,  314,  314,  314,  314,
      390,  390,  390,  390,  391,  391,  391,  391,  391,  391,      483,  429,  314,  315,  315,  315,  315,  315,  315,  315,
      479,  399,  399,  465,  263,  263,  263,  263,  263,  263,      315,  315,  315,  315,  426,  483,  425,  315,  315,  315,
      285,  399,  285,  285,  285,  285,  285,  285,  285,  285,      315,  315,  316,  316,  316,  316,  316,  316,  316,  316,
      393,  432,  393,  393,  393,  393,  393,  393,  393,  393,      319,  410,  319,  319,  319,  319,  319,  319,  319,  319,
   
      394,  432,  394,  394,  394,  394,  394,  394,  394,  394,      410,  315,  315,  315,  315,  315,  315,  318,  318,  318,
      460,  473,  619,  619,  468,  285,  286,  433,  286,  286,      318,  318,  318,  318,  318,  318,  318,  566,  566,  424,
      286,  286,  286,  286,  286,  286,  395,  433,  395,  395,      318,  318,  318,  318,  318,  336,  336,  336,  336,  336,
      395,  395,  395,  395,  395,  395,  396,  435,  396,  396,      336,  336,  336,  336,  337,  337,  337,  337,  337,  337,
      396,  396,  396,  396,  396,  396,  473,  435,  461,  459,      337,  337,  337,  423,  318,  318,  318,  318,  318,  318,
      458,  286,  292,  292,  292,  292,  292,  292,  292,  292,      338,  338,  338,  338,  338,  338,  338,  338,  338,  422,
      292,  400,  400,  445,  292,  292,  292,  292,  292,  468,      336,  342,  342,  342,  342,  342,  342,  342,  342,  337,
      461,  400,  401,  401,  401,  401,  401,  401,  401,  401,      344,  344,  344,  344,  344,  344,  344,  344,  364,  364,
      408,  408,  408,  408,  408,  408,  431,  292,  292,  292,      364,  364,  364,  364,  428,  338,  343,  397,  343,  343,
      292,  292,  292,  302,  302,  302,  302,  302,  302,  302,      343,  343,  343,  343,  343,  343,  343,  397,  586,  586,
   
      302,  302,  302,  302,  305,  305,  305,  305,  305,  305,      343,  343,  343,  343,  343,  347,  428,  347,  347,  347,
      305,  305,  305,  305,  305,  402,  402,  463,  305,  305,      347,  347,  347,  347,  347,  348,  348,  348,  348,  348,
      305,  305,  305,  469,  477,  402,  405,  405,  405,  405,      348,  348,  348,  393,  343,  343,  343,  343,  343,  343,
      405,  405,  405,  405,  427,  503,  405,  422,  469,  463,      346,  346,  346,  346,  346,  346,  346,  346,  346,  392,
      418,  305,  305,  305,  305,  305,  305,  308,  308,  308,      432,  432,  346,  346,  346,  346,  346,  350,  445,  350,
      308,  308,  308,  308,  308,  308,  308,  503,  417,  477,      350,  350,  350,  350,  350,  350,  350,  352,  445,  352,
      308,  308,  308,  308,  308,  407,  407,  407,  407,  407,      352,  352,  352,  352,  352,  382,  346,  346,  346,  346,
      407,  407,  407,  409,  416,  409,  409,  409,  409,  409,      346,  346,  351,  381,  351,  351,  351,  351,  351,  351,
      409,  409,  409,  308,  308,  308,  308,  308,  308,  325,      351,  351,  355,  355,  356,  356,  403,  403,  403,  403,
      325,  325,  325,  325,  325,  325,  325,  325,  421,  428,      403,  403,  355,  432,  356,  357,  357,  357,  357,  357,
   
      505,  428,  428,  428,  428,  428,  428,  428,  428,  434,      357,  357,  357,  358,  358,  363,  363,  363,  363,  363,
      434,  434,  434,  434,  434,  434,  434,  413,  421,  412,      363,  363,  363,  358,  359,  359,  359,  359,  359,  359,
      421,  421,  505,  325,  326,  326,  326,  326,  326,  326,      359,  359,  359,  359,  359,  361,  361,  361,  361,  361,
      326,  326,  326,  429,  466,  429,  429,  429,  429,  429,      361,  361,  361,  590,  590,  361,  362,  362,  362,  362,
      429,  429,  429,  421,  430,  485,  430,  430,  430,  430,      362,  362,  362,  362,  362,  362,  362,  462,  603,  603,
      430,  430,  430,  430,  466,  485,  466,  466,  326,  327,      362,  362,  362,  362,  362,  366,  462,  366,  366,  366,
      327,  327,  327,  327,  327,  327,  327,  327,  440,  440,      366,  366,  366,  366,  366,  387,  387,  387,  387,  387,
      440,  440,  440,  440,  440,  440,  441,  441,  441,  441,      387,  387,  387,  375,  362,  362,  362,  362,  362,  362,
      441,  441,  443,  500,  443,  443,  443,  443,  443,  443,      365,  365,  365,  365,  365,  365,  365,  365,  365,  463,
      443,  443,  500,  327,  332,  486,  332,  332,  332,  332,      634,  634,  374,  365,  365,  365,  365,  365,  463,  387,
   
      332,  332,  332,  332,  332,  486,  411,  410,  332,  332,      389,  389,  389,  389,  389,  389,  389,  389,  389,  391,
      332,  332,  332,  444,  444,  444,  444,  444,  444,  444,      391,  391,  391,  391,  391,  391,  373,  365,  365,  365,
      444,  446,  381,  446,  446,  446,  446,  446,  446,  446,      365,  365,  365,  390,  390,  390,  390,  390,  390,  390,
      446,  332,  332,  332,  332,  332,  332,  335,  335,  335,      390,  390,  471,  434,  372,  389,  394,  394,  394,  394,
      335,  335,  335,  335,  335,  335,  380,  370,  369,  335,      394,  394,  394,  394,  391,  396,  396,  396,  396,  396,
      335,  335,  335,  335,  447,  488,  447,  447,  447,  447,      396,  396,  396,  434,  471,  434,  434,  398,  390,  398,
      447,  447,  447,  447,  448,  488,  448,  448,  448,  448,      398,  398,  398,  398,  398,  398,  398,  398,  401,  487,
      448,  448,  335,  335,  335,  335,  335,  335,  348,  348,      401,  401,  401,  401,  401,  401,  401,  401,  401,  434,
      348,  348,  348,  348,  348,  348,  348,  348,  348,  351,      369,  368,  401,  401,  401,  401,  401,  402,  402,  402,
      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,      402,  402,  402,  402,  402,  405,  367,  405,  405,  405,
   
      451,  451,  528,  351,  351,  351,  351,  351,  467,  467,      405,  405,  405,  405,  405,  487,  401,  401,  401,  401,
      451,  470,  528,  470,  470,  470,  471,  363,  471,  471,      401,  401,  404,  404,  404,  404,  404,  404,  404,  404,
      471,  467,  544,  362,  555,  589,  351,  351,  351,  351,      404,  514,  349,  341,  404,  404,  404,  404,  404,  406,
      351,  351,  354,  354,  354,  354,  354,  354,  354,  354,      514,  406,  406,  406,  406,  406,  406,  406,  406,  420,
      354,  361,  546,  572,  544,  354,  354,  354,  354,  354,      420,  420,  420,  420,  420,  411,  411,  340,  404,  404,
      472,  472,  472,  472,  472,  472,  472,  472,  470,  555,      404,  404,  404,  404,  407,  411,  407,  407,  407,  407,
      589,  360,  357,  471,  546,  572,  356,  338,  354,  354,      407,  407,  407,  407,  408,  339,  408,  408,  408,  408,
      354,  354,  354,  354,  377,  377,  377,  377,  377,  377,      408,  408,  408,  408,  412,  412,  413,  413,  413,  413,
      377,  377,  377,  472,  476,  330,  476,  476,  476,  476,      413,  413,  413,  413,  412,  414,  414,  419,  419,  419,
      476,  476,  478,  478,  478,  478,  478,  478,  478,  478,      419,  419,  419,  419,  419,  414,  415,  415,  415,  415,
   
      482,  329,  482,  482,  482,  482,  482,  482,  377,  378,      415,  415,  415,  415,  415,  415,  415,  417,  417,  417,
      378,  378,  378,  378,  378,  378,  378,  378,  480,  476,      417,  417,  417,  417,  417,  331,  330,  417,  418,  418,
      480,  480,  480,  480,  480,  480,  480,  480,  481,  529,      418,  418,  418,  418,  418,  418,  418,  418,  446,  326,
      481,  481,  481,  481,  481,  481,  481,  481,  328,  529,      325,  322,  418,  418,  418,  418,  418,  421,  446,  421,
      320,  319,  315,  378,  386,  574,  386,  386,  386,  386,      421,  421,  421,  421,  421,  421,  421,  447,  447,  447,
      386,  386,  386,  386,  386,  389,  531,  389,  389,  389,      447,  447,  447,  447,  447,  321,  418,  418,  418,  418,
      389,  389,  389,  389,  389,  389,  531,  574,  585,  389,      418,  418,  436,  448,  436,  436,  436,  436,  436,  436,
      389,  389,  389,  389,  487,  487,  487,  487,  487,  487,      436,  436,  437,  448,  437,  437,  437,  437,  437,  437,
      487,  487,  493,  493,  493,  493,  493,  493,  493,  493,      437,  437,  438,  499,  438,  438,  438,  438,  438,  438,
      585,  314,  389,  389,  389,  389,  389,  389,  392,  392,      438,  438,  491,  499,  570,  606,  320,  439,  436,  439,
   
      392,  392,  392,  392,  392,  392,  392,  311,  310,  291,      439,  439,  439,  439,  439,  439,  439,  441,  437,  441,
      392,  392,  392,  392,  392,  494,  494,  494,  494,  494,      441,  441,  441,  441,  441,  441,  441,  442,  438,  442,
      494,  496,  566,  496,  496,  496,  496,  496,  496,  496,      442,  442,  442,  442,  442,  442,  442,  301,  491,  300,
      496,  290,  566,  392,  392,  392,  392,  392,  392,  403,      570,  606,  443,  439,  443,  443,  443,  443,  443,  443,
      403,  403,  403,  403,  403,  403,  403,  403,  403,  403,      443,  443,  449,  475,  449,  449,  449,  449,  449,  449,
      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,      449,  449,  449,  452,  299,  452,  452,  452,  452,  452,
      289,  288,  278,  277,  406,  406,  406,  406,  406,  497,      452,  452,  452,  452,  477,  475,  518,  452,  452,  452,
      497,  497,  497,  497,  497,  497,  497,  497,  498,  498,      452,  452,  453,  453,  453,  453,  453,  453,  453,  453,
      498,  498,  498,  498,  498,  498,  498,  406,  406,  406,      454,  454,  454,  454,  454,  454,  477,  298,  518,  288,
      406,  406,  406,  423,  276,  423,  423,  423,  423,  423,      287,  452,  452,  452,  452,  452,  452,  455,  455,  455,
   
      423,  423,  423,  499,  499,  499,  499,  499,  499,  499,      455,  455,  455,  455,  455,  455,  286,  284,  282,  455,
      499,  499,  512,  274,  512,  512,  512,  575,  575,  513,      455,  455,  455,  455,  456,  281,  456,  456,  456,  456,
      273,  513,  513,  513,  272,  271,  270,  269,  423,  424,      456,  456,  456,  456,  457,  457,  457,  457,  457,  457,
      575,  424,  424,  424,  424,  424,  424,  424,  424,  514,      457,  457,  280,  455,  455,  455,  455,  455,  455,  459,
      268,  514,  514,  514,  515,  267,  515,  515,  515,  251,      279,  459,  459,  459,  459,  459,  459,  459,  459,  460,
      518,  250,  518,  518,  518,  249,  248,  246,  245,  512,      480,  460,  460,  460,  460,  460,  460,  460,  460,  461,
      236,  235,  234,  233,  424,  425,  513,  425,  425,  425,      278,  461,  461,  461,  461,  461,  461,  464,  464,  685,
      425,  425,  425,  425,  425,  516,  232,  229,  516,  516,      480,  277,  480,  480,  685,  276,  275,  464,  467,  467,
      516,  516,  516,  516,  516,  516,  514,  227,  226,  225,      467,  467,  467,  467,  467,  467,  467,  467,  484,  259,
      224,  515,  223,  220,  212,  517,  517,  518,  211,  517,      484,  484,  484,  485,  258,  485,  485,  485,  486,  486,
   
      425,  426,  208,  426,  426,  426,  426,  426,  426,  426,      486,  486,  486,  486,  486,  486,  488,  500,  488,  488,
      426,  517,  517,  517,  519,  519,  207,  523,  519,  523,      488,  488,  488,  488,  488,  488,  489,  500,  489,  489,
      523,  523,  523,  523,  523,  523,  523,  200,  199,  193,      489,  489,  489,  489,  489,  489,  257,  502,  545,  520,
      519,  519,  519,  190,  189,  188,  426,  436,  187,  436,      546,  256,  486,  254,  548,  253,  484,  502,  545,  244,
      436,  436,  436,  436,  436,  436,  436,  436,  439,  186,      546,  485,  488,  490,  548,  490,  490,  490,  490,  490,
      439,  439,  439,  439,  439,  439,  439,  439,  439,  184,      490,  520,  489,  492,  492,  492,  492,  492,  492,  492,
      183,  182,  439,  439,  439,  439,  439,  524,  181,  524,      492,  494,  243,  494,  494,  494,  494,  494,  494,  494,
      524,  524,  524,  524,  524,  524,  524,  530,  530,  530,      494,  508,  508,  508,  508,  508,  508,  242,  495,  490,
      530,  530,  530,  530,  530,  439,  439,  439,  439,  439,      495,  495,  495,  495,  495,  495,  495,  495,  496,  241,
      439,  442,  442,  442,  442,  442,  442,  442,  442,  442,      496,  496,  496,  496,  496,  496,  501,  501,  501,  501,
   
      180,  179,  178,  442,  442,  442,  442,  442,  525,  177,      501,  501,  501,  501,  503,  561,  503,  503,  503,  503,
      525,  525,  525,  525,  525,  525,  525,  525,  536,  536,      503,  503,  503,  503,  503,  506,  581,  506,  506,  506,
      536,  536,  536,  536,  536,  536,  442,  442,  442,  442,      506,  506,  506,  506,  506,  506,  581,  561,  240,  506,
      442,  442,  454,  454,  454,  454,  454,  454,  454,  454,      506,  506,  506,  506,  507,  507,  507,  507,  507,  507,
      454,  454,  474,  176,  474,  474,  474,  474,  474,  474,      507,  507,  510,  237,  510,  510,  510,  510,  510,  510,
      474,  474,  537,  537,  537,  537,  537,  537,  538,  175,      510,  510,  235,  506,  506,  506,  506,  506,  506,  509,
      538,  538,  538,  538,  538,  538,  538,  538,  540,  540,      509,  509,  509,  509,  509,  509,  509,  234,  233,  232,
      540,  540,  540,  540,  540,  540,  540,  474,  475,  169,      231,  509,  509,  509,  509,  509,  511,  511,  511,  511,
      475,  475,  475,  475,  475,  475,  475,  475,  541,  541,      511,  511,  511,  511,  511,  512,  512,  512,  512,  512,
      541,  541,  541,  541,  541,  541,  541,  542,  542,  542,      512,  512,  512,  512,  563,  509,  509,  509,  509,  509,
   
      542,  542,  542,  542,  552,  552,  552,  552,  552,  552,      509,  513,  513,  513,  513,  513,  513,  513,  513,  513,
      552,  552,  168,  475,  489,  158,  489,  489,  489,  489,      529,  230,  529,  529,  529,  530,  563,  530,  530,  530,
      489,  489,  489,  489,  489,  492,  157,  492,  492,  492,      531,  228,  531,  531,  531,  532,  226,  532,  532,  532,
      492,  492,  492,  492,  492,  492,  156,  152,  151,  492,      533,  218,  217,  533,  533,  533,  533,  533,  533,  533,
      492,  492,  492,  492,  553,  553,  553,  553,  553,  553,      533,  214,  587,  534,  534,  589,  535,  534,  535,  535,
      553,  553,  554,  554,  554,  554,  554,  554,  554,  554,      535,  213,  206,  536,  536,  205,  199,  536,  529,  534,
      149,  145,  492,  492,  492,  492,  492,  492,  495,  495,      534,  534,  196,  530,  587,  195,  194,  589,  531,  536,
      495,  495,  495,  495,  495,  495,  138,  134,  132,  130,      536,  536,  537,  532,  537,  537,  537,  537,  537,  537,
      495,  495,  495,  495,  495,  554,  558,  122,  558,  558,      537,  537,  538,  600,  538,  538,  538,  538,  538,  538,
      558,  558,  558,  558,  559,  559,  559,  559,  559,  559,      538,  538,  193,  539,  535,  539,  539,  539,  539,  539,
   
      559,  559,  121,  495,  495,  495,  495,  495,  495,  520,      539,  539,  539,  192,  190,  600,  189,  540,  537,  540,
      120,  520,  520,  520,  520,  520,  520,  520,  520,  119,      540,  540,  540,  540,  540,  540,  540,  541,  538,  541,
      561,  558,  561,  561,  561,  561,  561,  561,  561,  561,      541,  541,  541,  541,  541,  541,  541,  188,  542,  539,
      562,  118,  562,  562,  562,  562,  562,  562,  562,  562,      542,  542,  542,  542,  542,  542,  542,  542,  547,  547,
      113,  112,  111,  110,  520,  521,  108,  521,  521,  521,      547,  547,  547,  547,  547,  547,  549,  187,  549,  549,
      521,  521,  521,  521,  521,  563,  107,  563,  563,  563,      549,  549,  549,  549,  549,  549,  549,  552,  186,  552,
      563,  563,  563,  569,  106,  569,  569,  569,  569,  569,      552,  552,  552,  552,  552,  552,  552,  185,  184,  183,
      569,  569,  569,  596,  596,  596,  596,  596,  596,  102,      182,  552,  552,  552,  552,  552,  553,  553,  553,  553,
      521,  522,   98,  522,  522,  522,  522,  522,  522,  522,      553,  553,  553,  553,  554,  554,  554,  554,  554,  554,
      522,  579,  579,  579,  579,  579,  579,  579,  579,  580,      181,  180,  179,  173,  172,  552,  552,  552,  552,  552,
   
      580,  580,  580,  580,  580,  580,  580,  581,  581,  581,      552,  555,  162,  555,  555,  555,  555,  555,  555,  555,
      581,  581,  581,  581,  581,   97,  522,  532,   93,  532,      555,  557,  557,  557,  557,  557,  557,  557,  557,  557,
      532,  532,  532,  532,  532,  532,  532,  532,  535,   90,      558,  558,  558,  558,  558,  558,  558,  558,  558,  559,
      535,  535,  535,  535,  535,  535,  535,  535,   82,   81,      559,  559,  559,  559,  559,  559,  567,  567,  567,  567,
       80,   78,  535,  535,  535,  535,  535,   73,  588,  588,      567,  567,  567,  567,  568,  568,  568,  568,  568,  568,
      588,  588,  588,  588,  588,  588,  592,   66,  592,  592,      568,  568,  569,  569,  569,  569,  569,  569,  569,  569,
      592,  592,  592,  592,   59,  535,  535,  535,  535,  535,      571,  161,  571,  571,  571,  571,  571,  571,  571,  571,
      535,  556,   54,  556,  556,  556,  556,  556,  556,  556,      572,  160,  572,  572,  572,  572,  572,  572,  572,  572,
      556,  588,  594,  594,  594,  594,  594,  594,  594,  594,      156,  155,  153,  149,  142,  573,  569,  573,  573,  573,
       51,  592,  595,  595,  595,  595,  595,  595,  595,  595,      573,  573,  573,  138,  136,  134,  571,  574,  574,  574,
   
       49,   41,   40,   39,   38,   37,  556,  557,   36,  557,      574,  574,  574,  574,  574,  576,  572,  576,  576,  576,
      557,  557,  557,  557,  557,  557,  557,   33,   29,   23,      576,  576,  576,  576,  576,  126,  125,  124,  123,  122,
      600,  600,  600,  600,  600,  600,  600,  600,  601,  601,      577,  573,  577,  577,  577,  577,  577,  577,  577,  577,
      601,  601,  601,  601,  601,  601,   17,   15,   14,   13,      578,  117,  578,  578,  578,  578,  578,  578,  584,  116,
        0,    0,  557,  576,    0,  576,  576,  576,  576,  576,      584,  584,  584,  584,  584,  584,  584,  584,  591,  115,
      576,  576,  576,  600,    0,    0,    0,    0,    0,    0,      591,  591,  591,  591,  591,  591,  591,  591,  592,  114,
        0,  601,  602,  602,  602,  602,  602,  602,  602,  602,      592,  592,  592,  592,  592,  592,  592,  592,  593,  113,
      604,  604,  604,  604,  604,  604,  604,  604,  576,  577,      593,  593,  593,  593,  593,  593,  593,  593,  613,  613,
        0,  577,  577,  577,  577,  577,  577,  577,  577,    0,      613,  613,  613,  613,  591,  594,  594,  594,  594,  594,
        0,    0,    0,    0,    0,  602,  605,  605,  605,  605,      594,  594,  594,  111,  592,  595,  595,  595,  595,  595,
   
      605,  605,    0,  604,    0,    0,    0,    0,    0,    0,      595,  595,  595,  110,  593,  596,  596,  596,  596,  596,
        0,    0,    0,    0,  577,  578,    0,  578,  578,  578,      596,  596,  596,  605,  605,  605,  605,  605,  605,  605,
      578,  578,  578,  578,  578,    0,    0,    0,    0,  605,      605,  607,  109,  607,  607,  607,  607,  607,  607,  607,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      607,  608,  108,  608,  608,  608,  608,  608,  608,  608,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      608,  104,  100,   99,   95,   92,  609,  605,  609,  609,
      578,  590,    0,  590,  590,  590,  590,  590,  590,  590,      609,  609,  609,  609,   84,   83,   82,  607,  611,  611,
      590,    0,    0,    0,    0,    0,    0,    0,    0,    0,      611,  611,  611,  611,  611,  611,   80,  608,  612,  612,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      612,  612,  612,  612,  612,  612,   75,   68,   61,   57,
        0,    0,    0,    0,    0,    0,  590,  591,    0,  591,       56,   54,  609,  615,  615,  615,  615,  615,  615,  615,
      591,  591,  591,  591,  591,  591,  591,    0,    0,    0,      615,  616,  616,  616,  616,  616,  616,  616,  616,  617,
   
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      617,  617,  617,  617,  617,  617,  617,  619,  619,  619,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,      619,  619,  619,  619,  619,   51,   49,  615,  620,  620,
        0,    0,  591,  607,  607,  607,  607,  607,  607,  607,      620,  620,  620,  620,   41,  616,   40,   39,   37,   33,
      607,  607,  607,  607,  607,  607,  607,  607,  607,  608,       29,   23,   17,  617,   15,   14,   13,    0,    0,    0,
      608,  608,  608,  608,  608,  608,  608,  608,  608,  608,        0,  619,    0,    0,    0,    0,    0,    0,    0,    0,
      608,  608,  608,  608,  608,  609,  609,  609,  609,  609,        0,    0,  620,  622,  622,  622,  622,  622,  622,  622,
      609,  609,  609,  609,  609,  609,  609,  609,  609,  609,      622,  622,  622,  622,  622,  622,  622,  622,  622,  623,
      609,  610,  610,  610,  610,  610,  610,  610,  610,  610,      623,  623,  623,  623,  623,  623,  623,  623,  623,  623,
      610,  610,  610,  610,  610,  610,  610,  611,    0,    0,      623,  623,  623,  623,  623,  624,  624,  624,  624,  624,
        0,    0,    0,    0,    0,  611,  611,  611,    0,    0,      624,  624,  624,  624,  624,  624,  624,  624,  624,  624,
   
      611,  611,  611,  612,  612,  612,  612,  612,  612,  612,      624,  625,  625,  625,  625,  625,  625,  625,  625,  625,
      612,  612,  612,  612,  612,  612,  612,  612,  612,  613,      625,  625,  625,  625,  625,  625,  625,  626,    0,    0,
        0,    0,    0,    0,  613,    0,    0,  613,  613,  613,        0,    0,    0,    0,    0,  626,  626,  626,    0,    0,
      613,    0,  613,  613,  613,  614,    0,    0,    0,    0,      626,  626,  626,  627,  627,  627,  627,  627,  627,  627,
        0,    0,    0,  614,  614,  614,    0,    0,  614,  614,      627,  627,  627,  627,  627,  627,  627,  627,  627,  628,
      614,  615,    0,    0,  615,  615,    0,  615,    0,  615,        0,    0,    0,    0,  628,    0,    0,  628,  628,  628,
      615,  615,    0,    0,  615,  615,  615,  616,  616,    0,      628,    0,  628,  628,  628,  629,    0,    0,    0,    0,
        0,    0,  616,  617,    0,    0,  617,  617,    0,  617,        0,    0,    0,  629,  629,  629,    0,    0,  629,  629,
        0,  617,  617,  617,    0,    0,  617,  617,  617,  618,      629,  630,    0,    0,  630,  630,    0,  630,    0,  630,
        0,    0,  618,  618,    0,  618,    0,  618,  618,  618,      630,  630,    0,    0,  630,  630,  630,  631,  631,    0,
   
        0,  618,    0,  618,  618,  620,    0,    0,  620,    0,        0,    0,  631,  632,    0,    0,  632,  632,    0,  632,
        0,  620,    0,  620,  620,  620,  620,    0,  620,  620,        0,  632,  632,  632,    0,    0,  632,  632,  632,  633,
      620,  621,  621,  621,  621,  621,  621,  621,  621,  621,        0,    0,  633,  633,    0,  633,    0,  633,  633,  633,
      621,  621,  621,  621,  621,  621,  621,  622,  622,    0,        0,  633,    0,  633,  633,  635,    0,    0,  635,    0,
      622,    0,  622,  622,  622,  622,  622,  622,  622,  622,        0,  635,    0,  635,  635,  635,  635,    0,  635,  635,
      622,  622,  622,  623,  623,  623,  623,  623,  623,  623,      635,  636,  636,  636,  636,  636,  636,  636,  636,  636,
      623,  623,  623,  623,  623,  623,  623,  623,  623,  624,      636,  636,  636,  636,  636,  636,  636,  637,  637,    0,
      624,    0,  624,  624,  624,  624,  624,  624,  624,  624,      637,    0,  637,  637,  637,  637,  637,  637,  637,  637,
      624,  624,  624,  624,  624,  625,    0,    0,    0,    0,      637,  637,  637,  638,  638,  638,  638,  638,  638,  638,
      625,    0,    0,  625,  625,  625,    0,    0,  625,  625,      638,  638,  638,  638,  638,  638,  638,  638,  638,  639,
   
      625,  626,    0,    0,  626,  626,    0,  626,    0,  626,      639,    0,  639,  639,  639,  639,  639,  639,  639,  639,
      626,  626,    0,    0,  626,  626,  626,  627,  627,    0,      639,  639,  639,  639,  639,  640,    0,    0,    0,    0,
        0,    0,  627,  628,  628,  628,    0,    0,    0,  628,      640,    0,    0,  640,  640,  640,    0,    0,  640,  640,
      629,    0,    0,  629,  629,    0,  629,    0,  629,  629,      640,  641,    0,    0,  641,  641,    0,  641,    0,  641,
      629,    0,    0,  629,  629,  629,  630,  630,  630,  630,      641,  641,    0,    0,  641,  641,  641,  642,  642,    0,
      630,  630,  630,  630,  630,  630,  630,  630,  630,  630,        0,    0,  642,  643,  643,  643,    0,    0,    0,  643,
      630,  630,  631,  631,    0,    0,    0,  631,  632,  632,      644,    0,    0,  644,  644,    0,  644,    0,  644,  644,
      632,    0,    0,    0,  632,  633,  633,    0,    0,    0,      644,    0,    0,  644,  644,  644,  645,  645,  645,  645,
      633,  634,  634,    0,    0,    0,  634,  635,  635,    0,      645,  645,  645,  645,  645,  645,  645,  645,  645,  645,
        0,    0,  635,  636,  636,  636,    0,    0,    0,  636,      645,  645,  646,  646,    0,    0,    0,  646,  647,  647,
   
      637,  637,    0,    0,    0,  637,  638,  638,    0,    0,      647,    0,    0,    0,  647,  648,  648,    0,    0,    0,
        0,  638,  639,  639,    0,    0,    0,  639,  640,  640,      648,  649,  649,    0,    0,    0,  649,  650,  650,    0,
      640,    0,    0,    0,  640,  641,  641,  641,  641,    0,        0,    0,  650,  651,  651,  651,    0,    0,    0,  651,
        0,    0,  641,  642,  642,    0,    0,    0,  642,  643,      652,  652,    0,    0,    0,  652,  653,  653,    0,    0,
      643,    0,    0,    0,  643,  644,  644,    0,    0,    0,        0,  653,  654,  654,    0,    0,    0,  654,  655,  655,
      644,  645,  645,  645,    0,    0,    0,  645,  646,  646,      655,    0,    0,    0,  655,  656,  656,  656,  656,    0,
      646,  646,    0,    0,    0,  646,  647,  647,    0,    0,        0,    0,  656,  657,  657,    0,    0,    0,  657,  658,
        0,  647,  648,  648,    0,    0,    0,  648,  649,  649,      658,    0,    0,    0,  658,  659,  659,    0,    0,    0,
      649,    0,    0,    0,  649,  650,  650,  650,  650,    0,      659,  660,  660,  660,    0,    0,    0,  660,  661,  661,
        0,    0,  650,  651,  651,    0,    0,    0,  651,  652,      661,  661,    0,    0,    0,  661,  662,  662,    0,    0,
   
        0,  652,  652,    0,    0,    0,  652,  653,  653,  653,        0,  662,  663,  663,    0,    0,    0,  663,  664,  664,
        0,    0,    0,  653,  654,  654,  654,  654,    0,    0,      664,    0,    0,    0,  664,  665,  665,  665,  665,    0,
        0,  654,  655,  655,    0,    0,    0,  655,  656,    0,        0,    0,  665,  666,  666,    0,    0,    0,  666,  667,
      656,  656,    0,    0,    0,  656,  657,  657,  657,    0,        0,  667,  667,    0,    0,    0,  667,  668,  668,  668,
        0,    0,  657,  658,  658,  658,    0,    0,    0,    0,        0,    0,    0,  668,  669,  669,  669,  669,    0,    0,
      658,  659,  659,    0,  659,  659,  659,    0,    0,  659,        0,  669,  670,  670,    0,    0,    0,  670,  671,    0,
      659,  659,    0,    0,  659,  659,  659,  660,  660,    0,      671,  671,    0,    0,    0,  671,  672,  672,  672,    0,
      660,  660,  660,    0,    0,  660,  660,  660,    0,    0,        0,    0,  672,  673,  673,  673,    0,    0,    0,    0,
      660,  660,  660,  661,  661,    0,    0,    0,  661,  662,      673,  674,  674,  674,  674,  674,  674,  674,  674,  674,
        0,  662,  662,    0,    0,    0,  662,  663,  663,    0,      674,  674,  674,  674,  674,  674,  674,  675,  675,    0,
   
        0,    0,    0,  663,  664,  664,  664,  664,  664,  664,      675,  675,  675,    0,    0,  675,  675,  675,    0,    0,
      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,      675,  675,  675,  676,  676,    0,  676,  676,  676,    0,
      665,  665,    0,    0,    0,  665,  666,    0,  666,  666,        0,  676,  676,  676,    0,    0,  676,  676,  676,  677,
        0,    0,    0,  666,  667,  667,    0,    0,    0,  667,      677,    0,    0,    0,  677,  678,    0,  678,  678,    0,
      668,    0,  668,    0,    0,    0,    0,  668,  670,  670,        0,    0,  678,  679,  679,    0,    0,    0,    0,  679,
      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,      680,  680,    0,    0,    0,  680,  681,    0,  681,  681,
      670,  670,  670,  670,  606,  606,  606,  606,  606,  606,        0,    0,    0,  681,  682,  682,    0,    0,    0,  682,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      683,    0,  683,    0,    0,    0,    0,  683,  684,  684,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      684,  684,  684,  684,  684,  684,  684,  684,  684,  684,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      684,  684,  684,  684,  621,  621,  621,  621,  621,  621,
   
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
      606,  606,  606,  606,  606,  606,  606,  606,  606,  606,      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
      606      621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621,  621,  621,  621,  621,  621,  621,  621,  621,
       621,  621
     } ;      } ;
   
 static yy_state_type yy_last_accepting_state;  static yy_state_type yy_last_accepting_state;
Line 1404  char *yytext; Line 1394  char *yytext;
 #define INITIAL 0  #define INITIAL 0
 #line 2 "toke.l"  #line 2 "toke.l"
 /*  /*
 * Copyright (c) 1996, 1998-2005, 2007-2011 * Copyright (c) 1996, 1998-2005, 2007-2012
  *      Todd C. Miller <Todd.Miller@courtesan.com>   *      Todd C. Miller <Todd.Miller@courtesan.com>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
Line 1475  char *yytext; Line 1465  char *yytext;
 #include "parse.h"  #include "parse.h"
 #include "toke.h"  #include "toke.h"
 #include <gram.h>  #include <gram.h>
   #include "lbuf.h"
   #include "secure_path.h"
   
 extern YYSTYPE yylval;  extern YYSTYPE yylval;
extern int parse_error;extern bool parse_error;
 extern bool sudoers_warnings;
 int sudolineno;  int sudolineno;
   int last_token;
 char *sudoers;  char *sudoers;
   
static int continued, prev_state, sawspace;/* Default sudoers path, mode and owner (may be set via sudo.conf) */
 const char *sudoers_file = _PATH_SUDOERS;
 mode_t sudoers_mode = SUDOERS_MODE;
 uid_t sudoers_uid = SUDOERS_UID;
 gid_t sudoers_gid = SUDOERS_GID;
   
static int _push_include(char *, int);static bool continued, sawspace;
static int pop_include(void);static int prev_state;
 
 static bool _push_include(char *, bool);
 static bool pop_include(void);
 static char *parse_include(char *);  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;  int (*trace_print)(const char *msg) = sudoers_trace_print;
   
#define push_include(_p)        (_push_include((_p), FALSE))#define LEXRETURN(n)    do {    \
#define push_includedir(_p)     (_push_include((_p), TRUE))        last_token = (n);       \
         return (n);             \
 } while (0)
 
 #define ECHO    ignore_result(fwrite(yytext, yyleng, 1, yyout))
 
 #define push_include(_p)        (_push_include((_p), false))
 #define push_includedir(_p)     (_push_include((_p), true))
 #define YY_NO_INPUT 1  #define YY_NO_INPUT 1
 #define YY_NO_UNPUT 1  #define YY_NO_UNPUT 1
 #define GOTDEFS 1  #define GOTDEFS 1
Line 1508  int (*trace_print)(const char *msg) = sudoers_trace_pr Line 1511  int (*trace_print)(const char *msg) = sudoers_trace_pr
   
 #define INSTR 5  #define INSTR 5
   
#line 1511 "lex.yy.c"#line 1514 "lex.yy.c"
   
 /* Macros after this point can all be overridden by user definitions in  /* Macros after this point can all be overridden by user definitions in
  * section 1.   * section 1.
Line 1662  YY_DECL Line 1665  YY_DECL
         register char *yy_cp, *yy_bp;          register char *yy_cp, *yy_bp;
         register int yy_act;          register int yy_act;
   
#line 119 "toke.l"#line 132 "toke.l"
   
#line 1667 "lex.yy.c"#line 1670 "lex.yy.c"
   
         if ( yy_init )          if ( yy_init )
                 {                  {
Line 1716  yy_match: Line 1719  yy_match:
                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )                          while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                 {                                  {
                                 yy_current_state = (int) yy_def[yy_current_state];                                  yy_current_state = (int) yy_def[yy_current_state];
                                if ( yy_current_state >= 607 )                                if ( yy_current_state >= 622 )
                                         yy_c = yy_meta[(unsigned int) yy_c];                                          yy_c = yy_meta[(unsigned int) yy_c];
                                 }                                  }
                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];                          yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                         ++yy_cp;                          ++yy_cp;
                         }                          }
                while ( yy_base[yy_current_state] != 3665 );                while ( yy_base[yy_current_state] != 3595 );
   
 yy_find_action:  yy_find_action:
                 yy_act = yy_accept[yy_current_state];                  yy_act = yy_accept[yy_current_state];
Line 1750  do_action: /* This label is used only to access EOF ac Line 1753  do_action: /* This label is used only to access EOF ac
   
 case 1:  case 1:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 120 "toke.l"#line 133 "toke.l"
 {  {
                             LEXTRACE(", ");                              LEXTRACE(", ");
                            return ',';                            LEXRETURN(',');
                         }                       /* return ',' */                          }                       /* return ',' */
         YY_BREAK          YY_BREAK
 case 2:  case 2:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 125 "toke.l"#line 138 "toke.l"
 BEGIN STARTDEFS;  BEGIN STARTDEFS;
         YY_BREAK          YY_BREAK
 case 3:  case 3:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 127 "toke.l"#line 140 "toke.l"
 {  {
                             BEGIN INDEFS;                              BEGIN INDEFS;
                             LEXTRACE("DEFVAR ");                              LEXTRACE("DEFVAR ");
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                            return DEFVAR;                            LEXRETURN(DEFVAR);
                         }                          }
         YY_BREAK          YY_BREAK
   
 case 4:  case 4:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 136 "toke.l"#line 149 "toke.l"
 {  {
                             BEGIN STARTDEFS;                              BEGIN STARTDEFS;
                             LEXTRACE(", ");                              LEXTRACE(", ");
                            return ',';                            LEXRETURN(',');
                         }                       /* return ',' */                          }                       /* return ',' */
         YY_BREAK          YY_BREAK
 case 5:  case 5:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 142 "toke.l"#line 155 "toke.l"
 {  {
                             LEXTRACE("= ");                              LEXTRACE("= ");
                            return '=';                            LEXRETURN('=');
                         }                       /* return '=' */                          }                       /* return '=' */
         YY_BREAK          YY_BREAK
 case 6:  case 6:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 147 "toke.l"#line 160 "toke.l"
 {  {
                             LEXTRACE("+= ");                              LEXTRACE("+= ");
                            return '+';                            LEXRETURN('+');
                         }                       /* return '+' */                          }                       /* return '+' */
         YY_BREAK          YY_BREAK
 case 7:  case 7:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 152 "toke.l"#line 165 "toke.l"
 {  {
                             LEXTRACE("-= ");                              LEXTRACE("-= ");
                            return '-';                            LEXRETURN('-');
                         }                       /* return '-' */                          }                       /* return '-' */
         YY_BREAK          YY_BREAK
 case 8:  case 8:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 157 "toke.l"#line 170 "toke.l"
 {  {
                             LEXTRACE("BEGINSTR ");                              LEXTRACE("BEGINSTR ");
                             yylval.string = NULL;                              yylval.string = NULL;
Line 1818  YY_RULE_SETUP Line 1821  YY_RULE_SETUP
         YY_BREAK          YY_BREAK
 case 9:  case 9:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 164 "toke.l"#line 177 "toke.l"
 {  {
                             LEXTRACE("WORD(2) ");                              LEXTRACE("WORD(2) ");
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                            return WORD;                            LEXRETURN(WORD);
                         }                          }
         YY_BREAK          YY_BREAK
   
   
 case 10:  case 10:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 173 "toke.l"#line 186 "toke.l"
 {  {
                             /* Line continuation char followed by newline. */                              /* Line continuation char followed by newline. */
                            ++sudolineno;                            sudolineno++;
                            continued = TRUE;                            continued = true;
                         }                          }
         YY_BREAK          YY_BREAK
 case 11:  case 11:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 179 "toke.l"#line 192 "toke.l"
 {  {
                             LEXTRACE("ENDSTR ");                              LEXTRACE("ENDSTR ");
                             BEGIN prev_state;                              BEGIN prev_state;
   
                             if (yylval.string == NULL) {                              if (yylval.string == NULL) {
                                 LEXTRACE("ERROR "); /* empty string */                                  LEXTRACE("ERROR "); /* empty string */
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
                             if (prev_state == INITIAL) {                              if (prev_state == INITIAL) {
                                 switch (yylval.string[0]) {                                  switch (yylval.string[0]) {
Line 1855  YY_RULE_SETUP Line 1858  YY_RULE_SETUP
                                         (yylval.string[1] == ':' &&                                          (yylval.string[1] == ':' &&
                                         yylval.string[2] == '\0')) {                                          yylval.string[2] == '\0')) {
                                         LEXTRACE("ERROR "); /* empty group */                                          LEXTRACE("ERROR "); /* empty group */
                                        return ERROR;                                        LEXRETURN(ERROR);
                                     }                                      }
                                     LEXTRACE("USERGROUP ");                                      LEXTRACE("USERGROUP ");
                                    return USERGROUP;                                    LEXRETURN(USERGROUP);
                                 case '+':                                  case '+':
                                     if (yylval.string[1] == '\0') {                                      if (yylval.string[1] == '\0') {
                                         LEXTRACE("ERROR "); /* empty netgroup */                                          LEXTRACE("ERROR "); /* empty netgroup */
                                        return ERROR;                                        LEXRETURN(ERROR);
                                     }                                      }
                                     LEXTRACE("NETGROUP ");                                      LEXTRACE("NETGROUP ");
                                    return NETGROUP;                                    LEXRETURN(NETGROUP);
                                 }                                  }
                             }                              }
                             LEXTRACE("WORD(4) ");                              LEXTRACE("WORD(4) ");
                            return WORD;                            LEXRETURN(WORD);
                         }                          }
         YY_BREAK          YY_BREAK
 case 12:  case 12:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 211 "toke.l"#line 224 "toke.l"
 {  {
                             LEXTRACE("BACKSLASH ");                              LEXTRACE("BACKSLASH ");
                             if (!append(yytext, yyleng))                              if (!append(yytext, yyleng))
Line 1883  YY_RULE_SETUP Line 1886  YY_RULE_SETUP
         YY_BREAK          YY_BREAK
 case 13:  case 13:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 217 "toke.l"#line 230 "toke.l"
 {  {
                             LEXTRACE("STRBODY ");                              LEXTRACE("STRBODY ");
                             if (!append(yytext, yyleng))                              if (!append(yytext, yyleng))
Line 1894  YY_RULE_SETUP Line 1897  YY_RULE_SETUP
   
 case 14:  case 14:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 225 "toke.l"#line 238 "toke.l"
 {  {
                             /* quoted fnmatch glob char, pass verbatim */                              /* quoted fnmatch glob char, pass verbatim */
                             LEXTRACE("QUOTEDCHAR ");                              LEXTRACE("QUOTEDCHAR ");
                             if (!fill_args(yytext, 2, sawspace))                              if (!fill_args(yytext, 2, sawspace))
                                 yyterminate();                                  yyterminate();
                            sawspace = FALSE;                            sawspace = false;
                         }                          }
         YY_BREAK          YY_BREAK
 case 15:  case 15:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 233 "toke.l"#line 246 "toke.l"
 {  {
                             /* quoted sudoers special char, strip backslash */                              /* quoted sudoers special char, strip backslash */
                             LEXTRACE("QUOTEDCHAR ");                              LEXTRACE("QUOTEDCHAR ");
                             if (!fill_args(yytext + 1, 1, sawspace))                              if (!fill_args(yytext + 1, 1, sawspace))
                                 yyterminate();                                  yyterminate();
                            sawspace = FALSE;                            sawspace = false;
                         }                          }
         YY_BREAK          YY_BREAK
 case 16:  case 16:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 241 "toke.l"#line 254 "toke.l"
 {  {
                             BEGIN INITIAL;                              BEGIN INITIAL;
                             yyless(0);                              yyless(0);
                            return COMMAND;                            LEXRETURN(COMMAND);
                         }                       /* end of command line args */                          }                       /* end of command line args */
         YY_BREAK          YY_BREAK
 case 17:  case 17:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 247 "toke.l"#line 260 "toke.l"
 {  {
                             LEXTRACE("ARG ");                              LEXTRACE("ARG ");
                             if (!fill_args(yytext, yyleng, sawspace))                              if (!fill_args(yytext, yyleng, sawspace))
                                 yyterminate();                                  yyterminate();
                            sawspace = FALSE;                            sawspace = false;
                         }                       /* a command line arg */                          }                       /* a command line arg */
         YY_BREAK          YY_BREAK
   
 case 18:  case 18:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 255 "toke.l"#line 268 "toke.l"
 {  {
                             char *path;                              char *path;
   
                             if (continued) {                              if (continued) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
   
                             if ((path = parse_include(yytext)) == NULL)                              if ((path = parse_include(yytext)) == NULL)
Line 1957  YY_RULE_SETUP Line 1960  YY_RULE_SETUP
         YY_BREAK          YY_BREAK
 case 19:  case 19:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 273 "toke.l"#line 286 "toke.l"
 {  {
                             char *path;                              char *path;
   
                             if (continued) {                              if (continued) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
   
                             if ((path = parse_include(yytext)) == NULL)                              if ((path = parse_include(yytext)) == NULL)
Line 1981  YY_RULE_SETUP Line 1984  YY_RULE_SETUP
         YY_BREAK          YY_BREAK
 case 20:  case 20:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 294 "toke.l"#line 307 "toke.l"
 {  {
                             char deftype;                              char deftype;
                             int n;                              int n;
   
                             if (continued) {                              if (continued) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
   
                             for (n = 0; isblank((unsigned char)yytext[n]); n++)                              for (n = 0; isblank((unsigned char)yytext[n]); n++)
Line 2003  YY_RULE_SETUP Line 2006  YY_RULE_SETUP
                                 case ':':                                  case ':':
                                     yyless(n);                                      yyless(n);
                                     LEXTRACE("DEFAULTS_USER ");                                      LEXTRACE("DEFAULTS_USER ");
                                    return DEFAULTS_USER;                                    LEXRETURN(DEFAULTS_USER);
                                 case '>':                                  case '>':
                                     yyless(n);                                      yyless(n);
                                     LEXTRACE("DEFAULTS_RUNAS ");                                      LEXTRACE("DEFAULTS_RUNAS ");
                                    return DEFAULTS_RUNAS;                                    LEXRETURN(DEFAULTS_RUNAS);
                                 case '@':                                  case '@':
                                     yyless(n);                                      yyless(n);
                                     LEXTRACE("DEFAULTS_HOST ");                                      LEXTRACE("DEFAULTS_HOST ");
                                    return DEFAULTS_HOST;                                    LEXRETURN(DEFAULTS_HOST);
                                 case '!':                                  case '!':
                                     yyless(n);                                      yyless(n);
                                     LEXTRACE("DEFAULTS_CMND ");                                      LEXTRACE("DEFAULTS_CMND ");
                                    return DEFAULTS_CMND;                                    LEXRETURN(DEFAULTS_CMND);
                                 default:                                  default:
                                     LEXTRACE("DEFAULTS ");                                      LEXTRACE("DEFAULTS ");
                                    return DEFAULTS;                                    LEXRETURN(DEFAULTS);
                             }                              }
                         }                          }
         YY_BREAK          YY_BREAK
 case 21:  case 21:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 334 "toke.l"#line 347 "toke.l"
 {  {
                             int n;                              int n;
   
                             if (continued) {                              if (continued) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
   
                             for (n = 0; isblank((unsigned char)yytext[n]); n++)                              for (n = 0; isblank((unsigned char)yytext[n]); n++)
Line 2038  YY_RULE_SETUP Line 2041  YY_RULE_SETUP
                             switch (yytext[n]) {                              switch (yytext[n]) {
                                 case 'H':                                  case 'H':
                                     LEXTRACE("HOSTALIAS ");                                      LEXTRACE("HOSTALIAS ");
                                    return HOSTALIAS;                                    LEXRETURN(HOSTALIAS);
                                 case 'C':                                  case 'C':
                                     LEXTRACE("CMNDALIAS ");                                      LEXTRACE("CMNDALIAS ");
                                    return CMNDALIAS;                                    LEXRETURN(CMNDALIAS);
                                 case 'U':                                  case 'U':
                                     LEXTRACE("USERALIAS ");                                      LEXTRACE("USERALIAS ");
                                    return USERALIAS;                                    LEXRETURN(USERALIAS);
                                 case 'R':                                  case 'R':
                                     LEXTRACE("RUNASALIAS ");                                      LEXTRACE("RUNASALIAS ");
                                    return RUNASALIAS;                                    LEXRETURN(RUNASALIAS);
                             }                              }
                         }                          }
         YY_BREAK          YY_BREAK
 case 22:  case 22:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 360 "toke.l"#line 373 "toke.l"
 {  {
                                 /* cmnd does not require passwd for this user */                                  /* cmnd does not require passwd for this user */
                                 LEXTRACE("NOPASSWD ");                                  LEXTRACE("NOPASSWD ");
                                return NOPASSWD;                                LEXRETURN(NOPASSWD);
                         }                          }
         YY_BREAK          YY_BREAK
 case 23:  case 23:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 366 "toke.l"#line 379 "toke.l"
 {  {
                                 /* cmnd requires passwd for this user */                                  /* cmnd requires passwd for this user */
                                 LEXTRACE("PASSWD ");                                  LEXTRACE("PASSWD ");
                                return PASSWD;                                LEXRETURN(PASSWD);
                         }                          }
         YY_BREAK          YY_BREAK
 case 24:  case 24:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 372 "toke.l"#line 385 "toke.l"
 {  {
                                 LEXTRACE("NOEXEC ");                                  LEXTRACE("NOEXEC ");
                                return NOEXEC;                                LEXRETURN(NOEXEC);
                         }                          }
         YY_BREAK          YY_BREAK
 case 25:  case 25:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 377 "toke.l"#line 390 "toke.l"
 {  {
                                 LEXTRACE("EXEC ");                                  LEXTRACE("EXEC ");
                                return EXEC;                                LEXRETURN(EXEC);
                         }                          }
         YY_BREAK          YY_BREAK
 case 26:  case 26:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 382 "toke.l"#line 395 "toke.l"
 {  {
                                 LEXTRACE("SETENV ");                                  LEXTRACE("SETENV ");
                                return SETENV;                                LEXRETURN(SETENV);
                         }                          }
         YY_BREAK          YY_BREAK
 case 27:  case 27:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 387 "toke.l"#line 400 "toke.l"
 {  {
                                 LEXTRACE("NOSETENV ");                                  LEXTRACE("NOSETENV ");
                                return NOSETENV;                                LEXRETURN(NOSETENV);
                         }                          }
         YY_BREAK          YY_BREAK
 case 28:  case 28:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 392 "toke.l"#line 405 "toke.l"
 {  {
                                 LEXTRACE("LOG_OUTPUT ");                                  LEXTRACE("LOG_OUTPUT ");
                                return LOG_OUTPUT;                                LEXRETURN(LOG_OUTPUT);
                         }                          }
         YY_BREAK          YY_BREAK
 case 29:  case 29:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 397 "toke.l"#line 410 "toke.l"
 {  {
                                 LEXTRACE("NOLOG_OUTPUT ");                                  LEXTRACE("NOLOG_OUTPUT ");
                                return NOLOG_OUTPUT;                                LEXRETURN(NOLOG_OUTPUT);
                         }                          }
         YY_BREAK          YY_BREAK
 case 30:  case 30:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 402 "toke.l"#line 415 "toke.l"
 {  {
                                 LEXTRACE("LOG_INPUT ");                                  LEXTRACE("LOG_INPUT ");
                                return LOG_INPUT;                                LEXRETURN(LOG_INPUT);
                         }                          }
         YY_BREAK          YY_BREAK
 case 31:  case 31:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 407 "toke.l"#line 420 "toke.l"
 {  {
                                 LEXTRACE("NOLOG_INPUT ");                                  LEXTRACE("NOLOG_INPUT ");
                                return NOLOG_INPUT;                                LEXRETURN(NOLOG_INPUT);
                         }                          }
         YY_BREAK          YY_BREAK
 case 32:  case 32:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 412 "toke.l"#line 425 "toke.l"
 {  {
                             /* empty group or netgroup */                              /* empty group or netgroup */
                             LEXTRACE("ERROR ");                              LEXTRACE("ERROR ");
                            return ERROR;                            LEXRETURN(ERROR);
                         }                          }
         YY_BREAK          YY_BREAK
 case 33:  case 33:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 418 "toke.l"#line 431 "toke.l"
 {  {
                             /* netgroup */                              /* netgroup */
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("NETGROUP ");                              LEXTRACE("NETGROUP ");
                            return NETGROUP;                            LEXRETURN(NETGROUP);
                         }                          }
         YY_BREAK          YY_BREAK
 case 34:  case 34:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 426 "toke.l"#line 439 "toke.l"
 {  {
                             /* group */                              /* group */
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("USERGROUP ");                              LEXTRACE("USERGROUP ");
                            return USERGROUP;                            LEXRETURN(USERGROUP);
                         }                          }
         YY_BREAK          YY_BREAK
 case 35:  case 35:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 434 "toke.l"#line 447 "toke.l"
 {  {
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("NTWKADDR ");                              LEXTRACE("NTWKADDR ");
                            return NTWKADDR;                            LEXRETURN(NTWKADDR);
                         }                          }
         YY_BREAK          YY_BREAK
 case 36:  case 36:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 441 "toke.l"#line 454 "toke.l"
 {  {
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("NTWKADDR ");                              LEXTRACE("NTWKADDR ");
                            return NTWKADDR;                            LEXRETURN(NTWKADDR);
                         }                          }
         YY_BREAK          YY_BREAK
 case 37:  case 37:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 448 "toke.l"#line 461 "toke.l"
 {  {
                             if (!ipv6_valid(yytext)) {                              if (!ipv6_valid(yytext)) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("NTWKADDR ");                              LEXTRACE("NTWKADDR ");
                            return NTWKADDR;                            LEXRETURN(NTWKADDR);
                         }                          }
         YY_BREAK          YY_BREAK
 case 38:  case 38:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 459 "toke.l"#line 472 "toke.l"
 {  {
                             if (!ipv6_valid(yytext)) {                              if (!ipv6_valid(yytext)) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("NTWKADDR ");                              LEXTRACE("NTWKADDR ");
                            return NTWKADDR;                            LEXRETURN(NTWKADDR);
                         }                          }
         YY_BREAK          YY_BREAK
 case 39:  case 39:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 470 "toke.l"#line 483 "toke.l"
 {  {
                             LEXTRACE("ALL ");                              LEXTRACE("ALL ");
                            return ALL;                            LEXRETURN(ALL);
   
                         }                          }
         YY_BREAK          YY_BREAK
 case 40:  case 40:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 476 "toke.l"#line 489 "toke.l"
 {  {
 #ifdef HAVE_SELINUX  #ifdef HAVE_SELINUX
                             LEXTRACE("ROLE ");                              LEXTRACE("ROLE ");
                            return ROLE;                            LEXRETURN(ROLE);
 #else  #else
                             goto got_alias;                              goto got_alias;
 #endif  #endif
Line 2235  YY_RULE_SETUP Line 2238  YY_RULE_SETUP
         YY_BREAK          YY_BREAK
 case 41:  case 41:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 485 "toke.l"#line 498 "toke.l"
 {  {
 #ifdef HAVE_SELINUX  #ifdef HAVE_SELINUX
                             LEXTRACE("TYPE ");                              LEXTRACE("TYPE ");
                            return TYPE;                            LEXRETURN(TYPE);
 #else  #else
                             goto got_alias;                              goto got_alias;
 #endif  #endif
Line 2247  YY_RULE_SETUP Line 2250  YY_RULE_SETUP
         YY_BREAK          YY_BREAK
 case 42:  case 42:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 494 "toke.l"#line 506 "toke.l"
 {  {
#ifndef HAVE_SELINUX#ifdef HAVE_PRIV_SET
                        got_alias:                            LEXTRACE("PRIVS ");
                             LEXRETURN(PRIVS);
 #else
                             goto got_alias;
 #endif  #endif
                           }
           YY_BREAK
   case 43:
   YY_RULE_SETUP
   #line 515 "toke.l"
   {
   #ifdef HAVE_PRIV_SET
                               LEXTRACE("LIMITPRIVS ");
                               LEXRETURN(LIMITPRIVS);
   #else
                               goto got_alias;
   #endif
                           }
           YY_BREAK
   case 44:
   YY_RULE_SETUP
   #line 524 "toke.l"
   {
                           got_alias:
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("ALIAS ");                              LEXTRACE("ALIAS ");
                            return ALIAS;                            LEXRETURN(ALIAS);
                         }                          }
         YY_BREAK          YY_BREAK
case 43:case 45:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 504 "toke.l"#line 532 "toke.l"
 {  {
                             /* no command args allowed for Defaults!/path */                              /* no command args allowed for Defaults!/path */
                             if (!fill_cmnd(yytext, yyleng))                              if (!fill_cmnd(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("COMMAND ");                              LEXTRACE("COMMAND ");
                            return COMMAND;                            LEXRETURN(COMMAND);
                         }                          }
         YY_BREAK          YY_BREAK
case 44:case 46:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 512 "toke.l"#line 540 "toke.l"
 {  {
                             BEGIN GOTCMND;                              BEGIN GOTCMND;
                             LEXTRACE("COMMAND ");                              LEXTRACE("COMMAND ");
Line 2279  YY_RULE_SETUP Line 2304  YY_RULE_SETUP
                                 yyterminate();                                  yyterminate();
                         }                       /* sudo -e */                          }                       /* sudo -e */
         YY_BREAK          YY_BREAK
case 45:case 47:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 519 "toke.l"#line 547 "toke.l"
 {  {
                             /* directories can't have args... */                              /* directories can't have args... */
                             if (yytext[yyleng - 1] == '/') {                              if (yytext[yyleng - 1] == '/') {
                                 LEXTRACE("COMMAND ");                                  LEXTRACE("COMMAND ");
                                 if (!fill_cmnd(yytext, yyleng))                                  if (!fill_cmnd(yytext, yyleng))
                                     yyterminate();                                      yyterminate();
                                return COMMAND;                                LEXRETURN(COMMAND);
                             } else {                              } else {
                                 BEGIN GOTCMND;                                  BEGIN GOTCMND;
                                 LEXTRACE("COMMAND ");                                  LEXTRACE("COMMAND ");
Line 2297  YY_RULE_SETUP Line 2322  YY_RULE_SETUP
                             }                              }
                         }                       /* a pathname */                          }                       /* a pathname */
         YY_BREAK          YY_BREAK
case 46:case 48:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 534 "toke.l"#line 562 "toke.l"
 {  {
                             LEXTRACE("BEGINSTR ");                              LEXTRACE("BEGINSTR ");
                             yylval.string = NULL;                              yylval.string = NULL;
Line 2307  YY_RULE_SETUP Line 2332  YY_RULE_SETUP
                             BEGIN INSTR;                              BEGIN INSTR;
                         }                          }
         YY_BREAK          YY_BREAK
case 47:case 49:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 541 "toke.l"#line 569 "toke.l"
 {  {
                             /* a word */                              /* a word */
                             if (!fill(yytext, yyleng))                              if (!fill(yytext, yyleng))
                                 yyterminate();                                  yyterminate();
                             LEXTRACE("WORD(5) ");                              LEXTRACE("WORD(5) ");
                            return WORD;                            LEXRETURN(WORD);
                         }                          }
         YY_BREAK          YY_BREAK
case 48:case 50:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 549 "toke.l"#line 577 "toke.l"
 {  {
                             LEXTRACE("( ");                              LEXTRACE("( ");
                            return '(';                            LEXRETURN('(');
                         }                          }
         YY_BREAK          YY_BREAK
case 49:case 51:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 554 "toke.l"#line 582 "toke.l"
 {  {
                             LEXTRACE(") ");                              LEXTRACE(") ");
                            return ')';                            LEXRETURN(')');
                         }                          }
         YY_BREAK          YY_BREAK
case 50:case 52:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 559 "toke.l"#line 587 "toke.l"
 {  {
                             LEXTRACE(", ");                              LEXTRACE(", ");
                            return ',';                            LEXRETURN(',');
                         }                       /* return ',' */                          }                       /* return ',' */
         YY_BREAK          YY_BREAK
case 51:case 53:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 564 "toke.l"#line 592 "toke.l"
 {  {
                             LEXTRACE("= ");                              LEXTRACE("= ");
                            return '=';                            LEXRETURN('=');
                         }                       /* return '=' */                          }                       /* return '=' */
         YY_BREAK          YY_BREAK
case 52:case 54:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 569 "toke.l"#line 597 "toke.l"
 {  {
                             LEXTRACE(": ");                              LEXTRACE(": ");
                            return ':';                            LEXRETURN(':');
                         }                       /* return ':' */                          }                       /* return ':' */
         YY_BREAK          YY_BREAK
case 53:case 55:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 574 "toke.l"#line 602 "toke.l"
 {  {
                             if (yyleng & 1) {                              if (yyleng & 1) {
                                 LEXTRACE("!");                                  LEXTRACE("!");
                                return '!';       /* return '!' */                                LEXRETURN('!');       /* return '!' */
                             }                              }
                         }                          }
         YY_BREAK          YY_BREAK
case 54:case 56:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 581 "toke.l"#line 609 "toke.l"
 {  {
                             if (YY_START == INSTR) {                              if (YY_START == INSTR) {
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;       /* line break in string */                                LEXRETURN(ERROR);       /* line break in string */
                             }                              }
                             BEGIN INITIAL;                              BEGIN INITIAL;
                            ++sudolineno;                            sudolineno++;
                            continued = FALSE;                            continued = false;
                             LEXTRACE("\n");                              LEXTRACE("\n");
                            return COMMENT;                            LEXRETURN(COMMENT);
                         }                       /* return newline */                          }                       /* return newline */
         YY_BREAK          YY_BREAK
case 55:case 57:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 593 "toke.l"#line 621 "toke.l"
 {                       /* throw away space/tabs */  {                       /* throw away space/tabs */
                            sawspace = TRUE;       /* but remember for fill_args */                            sawspace = true;       /* but remember for fill_args */
                         }                          }
         YY_BREAK          YY_BREAK
case 56:case 58:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 597 "toke.l"#line 625 "toke.l"
 {  {
                            sawspace = TRUE;       /* remember for fill_args */                            sawspace = true;       /* remember for fill_args */
                            ++sudolineno;                            sudolineno++;
                            continued = TRUE;                            continued = true;
                         }                       /* throw away EOL after \ */                          }                       /* throw away EOL after \ */
         YY_BREAK          YY_BREAK
case 57:case 59:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 603 "toke.l"#line 631 "toke.l"
 {  {
                             BEGIN INITIAL;                              BEGIN INITIAL;
                            ++sudolineno;                            sudolineno++;
                            continued = FALSE;                            continued = false;
                             LEXTRACE("#\n");                              LEXTRACE("#\n");
                            return COMMENT;                            LEXRETURN(COMMENT);
                         }                       /* comment, not uid/gid */                          }                       /* comment, not uid/gid */
         YY_BREAK          YY_BREAK
case 58:case 60:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 611 "toke.l"#line 639 "toke.l"
 {  {
                             LEXTRACE("ERROR ");                              LEXTRACE("ERROR ");
                            return ERROR;                            LEXRETURN(ERROR);
                         }       /* parse error */                          }       /* parse error */
         YY_BREAK          YY_BREAK
 case YY_STATE_EOF(INITIAL):  case YY_STATE_EOF(INITIAL):
Line 2424  case YY_STATE_EOF(GOTCMND): Line 2449  case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):  case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):  case YY_STATE_EOF(INDEFS):
 case YY_STATE_EOF(INSTR):  case YY_STATE_EOF(INSTR):
#line 616 "toke.l"#line 644 "toke.l"
 {  {
                             if (YY_START != INITIAL) {                              if (YY_START != INITIAL) {
                                 BEGIN INITIAL;                                  BEGIN INITIAL;
                                 LEXTRACE("ERROR ");                                  LEXTRACE("ERROR ");
                                return ERROR;                                LEXRETURN(ERROR);
                             }                              }
                             if (!pop_include())                              if (!pop_include())
                                 yyterminate();                                  yyterminate();
                         }                          }
         YY_BREAK          YY_BREAK
case 59:case 61:
 YY_RULE_SETUP  YY_RULE_SETUP
#line 626 "toke.l"#line 654 "toke.l"
 ECHO;  ECHO;
         YY_BREAK          YY_BREAK
#line 2443 "lex.yy.c"#line 2468 "lex.yy.c"
   
         case YY_END_OF_BUFFER:          case YY_END_OF_BUFFER:
                 {                  {
Line 2731  static yy_state_type yy_get_previous_state() Line 2756  static yy_state_type yy_get_previous_state()
                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )                  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                         {                          {
                         yy_current_state = (int) yy_def[yy_current_state];                          yy_current_state = (int) yy_def[yy_current_state];
                        if ( yy_current_state >= 607 )                        if ( yy_current_state >= 622 )
                                 yy_c = yy_meta[(unsigned int) yy_c];                                  yy_c = yy_meta[(unsigned int) yy_c];
                         }                          }
                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];                  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
Line 2766  yy_state_type yy_current_state; Line 2791  yy_state_type yy_current_state;
         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )          while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                 {                  {
                 yy_current_state = (int) yy_def[yy_current_state];                  yy_current_state = (int) yy_def[yy_current_state];
                if ( yy_current_state >= 607 )                if ( yy_current_state >= 622 )
                         yy_c = yy_meta[(unsigned int) yy_c];                          yy_c = yy_meta[(unsigned int) yy_c];
                 }                  }
         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];          yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 606);        yy_is_jam = (yy_current_state == 621);
   
         return yy_is_jam ? 0 : yy_current_state;          return yy_is_jam ? 0 : yy_current_state;
         }          }
Line 3331  int main() Line 3356  int main()
         return 0;          return 0;
         }          }
 #endif  #endif
#line 626 "toke.l"#line 654 "toke.l"
   
 struct path_list {  struct path_list {
     char *path;      char *path;
Line 3343  struct include_stack { Line 3368  struct include_stack {
     char *path;      char *path;
     struct path_list *more; /* more files in case of includedir */      struct path_list *more; /* more files in case of includedir */
     int lineno;      int lineno;
    int keepopen;    bool keepopen;
 };  };
   
 static int  static int
Line 3365  switch_dir(struct include_stack *stack, char *dirpath) Line 3390  switch_dir(struct include_stack *stack, char *dirpath)
     struct stat sb;      struct stat sb;
     struct path_list *pl, *first = NULL;      struct path_list *pl, *first = NULL;
     struct path_list **sorted = NULL;      struct path_list **sorted = NULL;
       debug_decl(switch_dir, SUDO_DEBUG_PARSER)
   
     if (!(dir = opendir(dirpath))) {      if (!(dir = opendir(dirpath))) {
         if (errno != ENOENT) {          if (errno != ENOENT) {
Line 3435  switch_dir(struct include_stack *stack, char *dirpath) Line 3461  switch_dir(struct include_stack *stack, char *dirpath)
     }      }
 done:  done:
     efree(dirpath);      efree(dirpath);
    return path;    debug_return_str(path);
 bad:  bad:
     while (first != NULL) {      while (first != NULL) {
         pl = first;          pl = first;
Line 3446  bad: Line 3472  bad:
     efree(sorted);      efree(sorted);
     efree(dirpath);      efree(dirpath);
     efree(path);      efree(path);
    return NULL;    debug_return_str(NULL);
 }  }
   
 #define MAX_SUDOERS_DEPTH       128  #define MAX_SUDOERS_DEPTH       128
Line 3454  bad: Line 3480  bad:
   
 static size_t istacksize, idepth;  static size_t istacksize, idepth;
 static struct include_stack *istack;  static struct include_stack *istack;
static int keepopen;static bool keepopen;
   
 void  void
 init_lexer(void)  init_lexer(void)
 {  {
     struct path_list *pl;      struct path_list *pl;
       debug_decl(init_lexer, SUDO_DEBUG_PARSER)
   
     while (idepth) {      while (idepth) {
         idepth--;          idepth--;
Line 3477  init_lexer(void) Line 3504  init_lexer(void)
     istack = NULL;      istack = NULL;
     istacksize = idepth = 0;      istacksize = idepth = 0;
     sudolineno = 1;      sudolineno = 1;
    keepopen = FALSE;    keepopen = false;
    sawspace = FALSE;    sawspace = false;
    continued = FALSE;    continued = false;
     prev_state = INITIAL;      prev_state = INITIAL;
   
       debug_return;
 }  }
   
static intstatic bool
_push_include(char *path, int isdir)_push_include(char *path, bool isdir)
 {  {
     struct path_list *pl;      struct path_list *pl;
     FILE *fp;      FILE *fp;
       debug_decl(_push_include, SUDO_DEBUG_PARSER)
   
     /* push current state onto stack */      /* push current state onto stack */
     if (idepth >= istacksize) {      if (idepth >= istacksize) {
         if (idepth > MAX_SUDOERS_DEPTH) {          if (idepth > MAX_SUDOERS_DEPTH) {
             yyerror(_("too many levels of includes"));              yyerror(_("too many levels of includes"));
            return FALSE;            debug_return_bool(false);
         }          }
         istacksize += SUDOERS_STACK_INCREMENT;          istacksize += SUDOERS_STACK_INCREMENT;
         istack = (struct include_stack *) realloc(istack,          istack = (struct include_stack *) realloc(istack,
             sizeof(*istack) * istacksize);              sizeof(*istack) * istacksize);
         if (istack == NULL) {          if (istack == NULL) {
             yyerror(_("unable to allocate memory"));              yyerror(_("unable to allocate memory"));
            return FALSE;            debug_return_bool(false);
         }          }
     }      }
     if (isdir) {      if (isdir) {
           struct stat sb;
           switch (sudo_secure_dir(path, sudoers_uid, sudoers_gid, &sb)) {
               case SUDO_PATH_SECURE:
                   break;
               case SUDO_PATH_MISSING:
                   debug_return_bool(false);
               case SUDO_PATH_BAD_TYPE:
                   errno = ENOTDIR;
                   if (sudoers_warnings) {
                       warning("%s", path);
                   }
                   debug_return_bool(false);
               case SUDO_PATH_WRONG_OWNER:
                   if (sudoers_warnings) {
                       warningx(_("%s is owned by uid %u, should be %u"),   
                           path, (unsigned int) sb.st_uid,
                           (unsigned int) sudoers_uid);
                   }
                   debug_return_bool(false);
               case SUDO_PATH_WORLD_WRITABLE:
                   if (sudoers_warnings) {
                       warningx(_("%s is world writable"), path);
                   }
                   debug_return_bool(false);
               case SUDO_PATH_GROUP_WRITABLE:
                   if (sudoers_warnings) {
                       warningx(_("%s is owned by gid %u, should be %u"),
                           path, (unsigned int) sb.st_gid,
                           (unsigned int) sudoers_gid);
                   }
                   debug_return_bool(false);
               default:
                   /* NOTREACHED */
                   debug_return_bool(false);
           }
         if (!(path = switch_dir(&istack[idepth], path))) {          if (!(path = switch_dir(&istack[idepth], path))) {
             /* switch_dir() called yyerror() for us */              /* 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. */              /* Unable to open path in includedir, go to next one, if any. */
             efree(path);              efree(path);
             if ((pl = istack[idepth].more) == NULL)              if ((pl = istack[idepth].more) == NULL)
                return FALSE;                debug_return_bool(false);
             path = pl->path;              path = pl->path;
             istack[idepth].more = pl->next;              istack[idepth].more = pl->next;
             efree(pl);              efree(pl);
         }          }
     } else {      } else {
        if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {        if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
            char *errbuf;            /* The error was already printed by open_sudoers() */
            if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {            yyerror(NULL);
                yyerror(errbuf);            debug_return_bool(false);
                free(errbuf); 
            } else { 
                yyerror(_("unable to allocate memory")); 
            } 
            return FALSE; 
         }          }
         istack[idepth].more = NULL;          istack[idepth].more = NULL;
     }      }
Line 3540  _push_include(char *path, int isdir) Line 3600  _push_include(char *path, int isdir)
     sudoers = path;      sudoers = path;
     yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));      yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
   
    return TRUE;    debug_return_bool(true);
 }  }
   
static intstatic bool
 pop_include(void)  pop_include(void)
 {  {
     struct path_list *pl;      struct path_list *pl;
     FILE *fp;      FILE *fp;
       debug_decl(pop_include, SUDO_DEBUG_PARSER)
   
     if (idepth == 0)      if (idepth == 0)
        return FALSE;        debug_return_bool(false);
   
     if (!keepopen)      if (!keepopen)
         fclose(YY_CURRENT_BUFFER->yy_input_file);          fclose(YY_CURRENT_BUFFER->yy_input_file);
     yy_delete_buffer(YY_CURRENT_BUFFER);      yy_delete_buffer(YY_CURRENT_BUFFER);
     /* If we are in an include dir, move to the next file. */      /* If we are in an include dir, move to the next file. */
     while ((pl = istack[idepth - 1].more) != NULL) {      while ((pl = istack[idepth - 1].more) != NULL) {
        fp = open_sudoers(pl->path, FALSE, &keepopen);        fp = open_sudoers(pl->path, false, &keepopen);
         if (fp != NULL) {          if (fp != NULL) {
             istack[idepth - 1].more = pl->next;              istack[idepth - 1].more = pl->next;
             efree(sudoers);              efree(sudoers);
Line 3581  pop_include(void) Line 3642  pop_include(void)
         sudolineno = istack[idepth].lineno;          sudolineno = istack[idepth].lineno;
         keepopen = istack[idepth].keepopen;          keepopen = istack[idepth].keepopen;
     }      }
    return TRUE;    debug_return_bool(true);
 }  }
   
 static char *  static char *
 parse_include(char *base)  parse_include(char *base)
 {  {
    char *cp, *ep, *path;    char *cp, *ep, *path, *pp;
    int len = 0, subst = 0;    int dirlen = 0, len = 0, subst = 0;
     size_t shost_len = 0;      size_t shost_len = 0;
       debug_decl(parse_include, SUDO_DEBUG_PARSER)
   
     /* Pull out path from #include line. */      /* Pull out path from #include line. */
     cp = base + sizeof("#include");      cp = base + sizeof("#include");
Line 3607  parse_include(char *base) Line 3669  parse_include(char *base)
         ep++;          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);      len += (int)(ep - cp);
    if ((path = malloc(len + 1)) == NULL) {    path = pp = malloc(len + dirlen + 1);
     if (path == NULL) {
         yyerror(_("unable to allocate memory"));          yyerror(_("unable to allocate memory"));
        return NULL;        debug_return_str(NULL);
     }      }
       if (dirlen) {
           memcpy(path, sudoers, dirlen);
           pp += dirlen;
       }
     if (subst) {      if (subst) {
         /* substitute for %h */          /* substitute for %h */
         char *pp = path;  
         while (cp < ep) {          while (cp < ep) {
             if (cp[0] == '%' && cp[1] == 'h') {              if (cp[0] == '%' && cp[1] == 'h') {
                 memcpy(pp, user_shost, shost_len);                  memcpy(pp, user_shost, shost_len);
Line 3627  parse_include(char *base) Line 3700  parse_include(char *base)
         }          }
         *pp = '\0';          *pp = '\0';
     } else {      } else {
        memcpy(path, cp, len);        memcpy(pp, cp, len);
        path[len] = '\0';        pp[len] = '\0';
     }      }
   
     /* Push any excess characters (e.g. comment, newline) back to the lexer */      /* Push any excess characters (e.g. comment, newline) back to the lexer */
     if (*ep != '\0')      if (*ep != '\0')
         yyless((int)(ep - base));          yyless((int)(ep - base));
   
    return path;    debug_return_str(path);
 }  }
   
 #ifdef TRACELEXER  #ifdef TRACELEXER
static intint
 sudoers_trace_print(const char *msg)  sudoers_trace_print(const char *msg)
 {  {
     return fputs(msg, stderr);      return fputs(msg, stderr);
   }
   #else
   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(NULL, NULL, 0, SUDO_DEBUG_PARSER|SUDO_DEBUG_DEBUG,
               "%s:%d %s", sudoers, sudolineno, lbuf.buf);
           lbuf.len = 0;
       }
       return 0;
 }  }
 #endif /* TRACELEXER */  #endif /* TRACELEXER */

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>