chiark / gitweb /
@@ -7,7 +7,7 @@
[userv.git] / lexer.c
diff --git a/lexer.c b/lexer.c
index 1a94c7bae9f165716747c0c022d87c24d92e17c6..77542e5b419b260b36e586ae5718c452dbc8af9a 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -285,73 +285,73 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 103
-#define YY_END_OF_BUFFER 104
-static yyconst short int yy_accept[572] =
+#define YY_NUM_RULES 105
+#define YY_END_OF_BUFFER 106
+static yyconst short int yy_accept[578] =
     {   0,
-        0,    0,  104,  102,   96,   97,   89,  101,   99,   86,
-       90,   87,   88,   93,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,   91,  102,   96,   97,
-       99,  101,  101,  100,  101,   99,   99,   98,   95,   93,
-      102,  102,  102,  102,   19,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,   37,  102,  102,  102,  102,
-       32,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  100,  101,  101,  101,
-
-      101,    0,  101,  101,   94,   93,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,   31,   62,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,   70,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  101,  101,  100,    0,  101,  101,   94,   93,  102,
-      102,  102,   66,  102,  102,   63,   67,  102,  102,  102,
-       35,   36,  102,  102,  102,  102,   40,   42,  102,   50,
-      102,  102,   59,   69,  102,   71,  102,   72,  102,  102,
-
-      102,  102,  102,  102,  102,   30,  102,   84,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,   74,   75,
-      102,   61,  102,  101,  101,    0,    0,    0,  101,   94,
-       93,  102,   64,  102,  102,  102,  102,  102,   58,  102,
-       65,  102,   92,  102,   38,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,   41,  102,  102,
-       48,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,   85,  101,    0,    0,   94,   93,  102,  102,  102,
-      102,  102,   68,  102,  102,  102,  102,  102,  102,   69,
-       76,   77,   78,   79,   80,   81,   82,   83,  102,  102,
-
-      102,  102,   60,  102,  102,  102,    1,  102,  102,  102,
-      102,   39,  102,   73,  102,  102,  102,  102,    0,   94,
-       93,  102,  102,  102,  102,  102,  102,  102,  102,   49,
-      102,   21,   26,  102,  102,  102,   10,  102,  102,  102,
-      102,  102,   51,  102,  102,  102,  102,   45,   61,   94,
-       93,  102,    9,   66,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,   47,  102,  102,  102,
-      102,  102,  102,   46,  102,   94,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,   12,  102,  102,  102,
-      102,  102,  102,   44,   11,  102,  102,  102,  102,  102,
-
-      102,   94,  102,  102,  102,  102,  102,   33,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-        8,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,   43,   34,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,   20,  102,
-      102,  102,  102,   52,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,   55,  102,  102,
-      102,  102,  102,   53,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,   56,  102,  102,
-       15,  102,  102,  102,  102,   17,    7,  102,  102,  102,
-
-      102,  102,  102,  102,   23,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,    4,  102,  102,  102,
-       22,  102,  102,  102,  102,  102,   13,  102,  102,  102,
-      102,    5,    6,  102,  102,  102,  102,  102,  102,   16,
-      102,  102,  102,  102,  102,  102,    3,   25,  102,   18,
-      102,  102,  102,   27,  102,   54,  102,   24,   14,   57,
-      102,  102,  102,  102,   28,  102,  102,  102,   29,    2,
-        0
+        0,    0,  106,  104,   98,   99,   90,  103,  101,   87,
+       91,   88,   89,   94,  105,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,   92,  104,   98,
+       99,  101,    0,  103,  103,  102,  103,  101,  101,  100,
+       96,   94,    0,   97,  104,  104,  104,  104,   19,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,   37,
+      104,  104,  104,  104,   32,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+
+      104,  102,  103,  103,  103,    0,  103,  103,   95,   94,
+       97,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,   31,   63,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,   71,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  102,    0,  103,
+      103,   95,   94,  104,  104,  104,   67,  104,  104,   64,
+       68,  104,  104,  104,   35,   36,  104,  104,  104,  104,
+       40,   42,  104,   51,  104,  104,   60,   70,  104,   72,
+
+      104,   73,  104,  104,  104,  104,  104,  104,  104,   30,
+      104,   85,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,   75,   76,  104,   62,  104,    0,    0,
+        0,  103,   95,   94,  104,   65,  104,  104,  104,  104,
+      104,   59,  104,   66,  104,   93,  104,   38,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+       41,  104,  104,   49,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,   86,    0,    0,   95,   94,
+      104,  104,  104,  104,  104,   69,  104,  104,  104,  104,
+      104,  104,   70,   77,   78,   79,   80,   81,   82,   83,
+
+       84,  104,  104,  104,  104,   61,  104,  104,  104,    1,
+      104,  104,  104,  104,  104,   39,  104,   74,  104,  104,
+      104,  104,    0,   95,   94,  104,  104,  104,  104,  104,
+      104,  104,  104,   50,  104,   21,   26,  104,  104,  104,
+       10,  104,  104,  104,  104,  104,   52,  104,  104,  104,
+      104,  104,   45,   62,   95,   94,  104,    9,   67,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,   47,  104,  104,  104,  104,  104,   48,  104,   46,
+      104,   95,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,   12,  104,  104,  104,  104,  104,  104,   44,
+
+       11,  104,  104,  104,  104,  104,  104,   95,  104,  104,
+      104,  104,  104,   33,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,    8,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,   43,   34,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,   20,  104,  104,  104,  104,   53,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,   56,  104,  104,  104,  104,  104,   54,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,   57,  104,  104,   15,  104,  104,  104,
+
+      104,   17,    7,  104,  104,  104,  104,  104,  104,  104,
+       23,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,    4,  104,  104,  104,   22,  104,  104,  104,
+      104,  104,   13,  104,  104,  104,  104,    5,    6,  104,
+      104,  104,  104,  104,  104,   16,  104,  104,  104,  104,
+      104,  104,    3,   25,  104,   18,  104,  104,  104,   27,
+      104,   55,  104,   24,   14,   58,  104,  104,  104,  104,
+       28,  104,  104,  104,   29,    2,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -390,366 +390,358 @@ static yyconst int yy_meta[52] =
     {   0,
         1,    2,    3,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        4,    1,    2,    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
     } ;
 
-static yyconst short int yy_base[582] =
+static yyconst short int yy_base[588] =
     {   0,
-        0,    0,  917,    0,   50,  918,    0,   52,   56,    0,
-        0,    0,    0,   64,  883,   19,   44,   37,   51,  882,
-       25,   36,   64,  885,   34,   67,   62,  867,  887,  866,
-       75,   68,  871,   60,  880,   73,    0,    0,  106,  918,
-      905,  109,  101,  905,  132,  116,  903,  918,  168,  177,
-      867,   87,  860,   24,    0,   87,  874,  876,  858,   88,
-      871,  853,  868,  855,  867,    0,  856,  865,  849,  856,
-        0,  853,   95,  848,  862,  846,  854,  843,  838,  115,
-      848,  854,   98,  849,  843,  130,  114,  841,  839,  835,
-      837,  847,  848,  832,  831,  839,    0,  198,  869,    0,
-
-      126,  134,  245,  265,  283,  292,  843,  827,  829,  835,
-      830,  838,  820,  825,  825,  816,  833,  829,  829,  815,
-      823,    0,  816,  827,  827,  812,  826,  810,  810,  812,
-      808,  808,  820,    0,  808,  800,  799,  132,  808,  804,
-      797,  805,  812,  792,  804,  806,  804,  787,  802,  785,
-      783,  816,  785,  786,  789,  788,  781,  782,  778,  782,
-      775,  301,  318,  918,  348,  384,  393,  411,  420,  782,
-      773,  769,  775,  781,  781,    0,    0,  773,  780,  771,
-        0,    0,  778,  766,  765,  761,    0,    0,  778,    0,
-      762,  758,    0,  773,  765,    0,  775,    0,  766,  132,
-
-      771,  785,  754,  768,  757,    0,  764,    0,  765,  758,
-      746,  747,  755,  758,  744,  743,  745,  754,  770,    0,
-      748,  747,  750,  429,  438,  135,    0,  464,  200,  482,
-      491,  733,    0,  765,  734,  737,  762,  735,    0,  734,
-        0,  732,  727,  725,    0,  739,  739,  730,  500,  734,
-      721,  719,  722,  732,  730,  726,  729,    0,  713,  714,
-        0,  722,  727,  715,  723,  722,  719,  703,  706,  708,
-      708,    0,  139,    0,  508,  526,  535,  717,  714,  710,
-      711,  700,    0,  702,  701,  726,  708,  724,  706,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  705,  706,
-
-      720,  691,    0,  702,  701,  684,  715,  697,  681,  695,
-      677,    0,  679,    0,  692,  693,  681,  687,  198,  544,
-      553,  688,  688,  669,  702,  668,  683,  674,  123,  698,
-      679,  696,    0,  668,  677,  663,    0,  675,  674,  672,
-      689,  651,  687,  665,  654,  660,  665,    0,    0,  562,
-      682,  681,    0,    0,  134,  659,  664,  661,  644,  649,
-      140,  659,  194,  648,  647,  655,    0,  641,  654,  651,
-      179,  638,  667,    0,  645,  571,  198,  635,  633,  631,
-      630,  635,  629,  659,  625,  627,    0,  635,  637,  627,
-      627,  618,  620,    0,    0,  634,  619,  617,  620,  633,
-
-      621,    0,  620,  606,  611,  614,  623,    0,  639,  606,
-      617,  100,  615,  608,  604,  616,  605,  614,  609,  598,
-        0,  601,  610,  600,  595,  607,  602,  591,  604,  587,
-      589,  598,    0,    0,  596,  125,  592,  590,  597,  577,
-      588,  592,  573,  599,  554,  553,  557,  501,    0,  502,
-      461,  434,  435,  462,  428,  436,  443,  427,  418,  449,
-      390,  383,  350,  350,  354,  367,  351,  378,  360,  345,
-      349,  347,  373,    0,  341,  343,  353,  352,  344,  346,
-      198,  334,  334,  336,  363,  336,  331,    0,  329,  333,
-        0,  316,  321,  316,  325,    0,    0,  314,  316,  316,
-
-      320,  327,  303,  286,  317,  296,  290,  295,  293,  280,
-      277,  247,  249,  246,  232,  242,    0,  230,  227,  227,
-        0,  243,  212,  227,  212,  225,    0,  226,  219,  221,
-      214,    0,    0,  220,  216,  196,  208,  202,  202,    0,
-      203,  198,  205,  202,  198,  206,    0,    0,  196,    0,
-      187,  193,  190,    0,  173,    0,  164,    0,    0,    0,
-      177,  177,  165,  145,    0,  134,  141,  119,    0,    0,
-      918,  592,  596,  600,  604,  608,  612,  616,  620,  138,
-       67
+        0,    0,  869,    0,   50,  870,    0,   52,   56,    0,
+        0,    0,    0,   68,   58,  835,   19,   49,   37,   56,
+      834,   27,   38,   69,  837,   32,   72,   67,  819,  839,
+      818,   80,   79,  823,   33,  832,   77,    0,    0,  111,
+      870,  857,  113,  118,  113,  108,  141,  123,  856,  870,
+      177,  186,  127,  125,  820,  103,  813,  101,    0,  114,
+      827,  829,  811,  107,  824,  806,  821,  808,  820,    0,
+      809,  818,  802,  809,    0,  806,  108,  801,  815,  799,
+      807,  796,  791,   78,  801,  807,  126,  802,  796,  140,
+      125,  788,  793,  791,  787,  789,  799,  800,  784,  783,
+
+      791,    0,  147,    0,  169,  128,  195,  212,  230,  239,
+      164,  796,  780,  782,  788,  783,  791,  773,  778,  778,
+      769,  786,  782,  782,  768,  776,    0,  769,  780,  780,
+      765,  779,  763,  763,  765,  761,  761,  773,    0,  761,
+      753,  752,  145,  761,  757,  750,  758,  765,  745,  757,
+      759,  757,  740,  755,  738,  736,  769,  736,  737,  738,
+      741,  740,  733,  734,  730,  734,  727,  870,  260,  296,
+      305,  323,  332,  734,  725,  721,  727,  733,  733,    0,
+        0,  725,  732,  723,    0,    0,  730,  718,  717,  713,
+        0,    0,  730,    0,  714,  710,    0,  725,  717,    0,
+
+      727,    0,  718,  191,  723,  737,  706,  720,  709,    0,
+      716,    0,  717,  710,  698,  699,  707,  710,  710,  695,
+      694,  696,  705,  721,    0,  699,  698,  701,  173,    0,
+      349,  260,  367,  376,  684,    0,  716,  685,  688,  713,
+      686,    0,  685,    0,  683,  678,  676,    0,  690,  690,
+      681,  385,  685,  672,  670,  673,  683,  681,  677,  680,
+        0,  664,  665,    0,  673,  678,  666,  664,  673,  672,
+      669,  653,  656,  658,  658,    0,    0,  393,  411,  420,
+      667,  664,  660,  661,  650,    0,  652,  651,  676,  658,
+      674,  656,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  655,  656,  670,  641,    0,  652,  651,  634,  665,
+      647,  631,  645,  627,  625,    0,  628,    0,  641,  642,
+      630,  636,  261,  429,  438,  637,  637,  618,  651,  617,
+      632,  623,  138,  647,  628,  645,    0,  617,  626,  612,
+        0,  624,  623,  621,  638,  600,  636,  614,  608,  602,
+      608,  613,    0,    0,  447,  630,  629,    0,    0,  240,
+      607,  612,  609,  592,  597,  154,  607,  236,  596,  595,
+      603,    0,  589,  602,  599,  255,  586,    0,  615,    0,
+      593,  456,  260,  583,  581,  579,  578,  583,  577,  607,
+      573,  575,    0,  583,  585,  575,  575,  566,  568,    0,
+
+        0,  582,  567,  565,  568,  581,  569,    0,  568,  554,
+      559,  562,  571,    0,  587,  554,  565,  258,  563,  556,
+      552,  564,  553,  562,  557,  546,    0,  549,  558,  548,
+      543,  555,  550,  539,  552,  535,  537,  546,    0,    0,
+      544,  174,  540,  538,  545,  525,  537,  544,  528,  557,
+      523,  525,  529,  534,    0,  535,  536,  520,  521,  548,
+      514,  522,  529,  513,  511,  542,  526,  519,  506,  506,
+      510,  523,  507,  534,  516,  501,  505,  503,  529,    0,
+      497,  499,  509,  508,  500,  502,  262,  490,  490,  492,
+      519,  492,  487,    0,  485,  489,    0,  482,  487,  482,
+
+      491,    0,    0,  480,  482,  482,  486,  493,  478,  472,
+      503,  482,  476,  481,  479,  466,  496,  474,  473,  467,
+      442,  449,    0,  437,  373,  374,    0,  348,  316,  331,
+      316,  329,    0,  330,  323,  325,  293,    0,    0,  299,
+      275,  257,  268,  259,  260,    0,  261,  257,  264,  261,
+      257,  265,    0,    0,  255,    0,  245,  234,  230,    0,
+      231,    0,  180,    0,    0,    0,  192,  192,  180,  153,
+        0,  143,  148,  128,    0,    0,  870,  477,  481,  485,
+      489,  493,  497,  501,  505,   99,   64
     } ;
 
-static yyconst short int yy_def[582] =
+static yyconst short int yy_def[588] =
     {   0,
-      571,    1,  571,  572,  571,  571,  572,  573,  574,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  571,  571,
-      575,  573,  576,  577,  573,  574,  575,  571,  572,   14,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  578,  576,  577,  578,
-
-      578,  579,  577,  573,  572,   14,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  578,  576,  571,  579,  103,  104,  572,   14,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  578,  163,  571,  580,  579,  573,  572,
-       14,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  576,  581,  228,  572,   14,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  579,  572,
-       14,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
-        0,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571
+      577,    1,  577,  578,  577,  577,  578,  579,  580,  578,
+      578,  578,  578,  578,  577,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  577,
+      577,  581,  577,  579,  582,  583,  582,  580,  581,  577,
+      578,   14,  577,  577,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  584,  583,  584,  584,  585,  584,  582,  578,   14,
+      577,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  577,  585,  584,
+      108,  578,   14,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  577,  586,
+      585,  582,  578,   14,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  587,  231,  578,   14,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  585,  578,   14,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,    0,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577
     } ;
 
-static yyconst short int yy_nxt[970] =
+static yyconst short int yy_nxt[922] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,    4,   11,   12,
        13,    4,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,    4,    4,   15,   16,    4,   17,   18,   19,   20,
-       21,   22,   23,    4,   24,   25,   26,   27,   28,   29,
-       30,   31,   32,   33,   34,   35,   36,    4,    4,    4,
-       37,   39,   40,   43,   52,   41,   44,   47,   48,  111,
-       67,   57,   69,   53,   70,   58,   68,  112,   54,   59,
-      102,   55,   75,   76,   45,   49,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   56,   60,   61,   62,   63,
-       79,   77,   64,   71,   72,   78,   87,   95,   65,   85,
-
-       80,   73,   92,   86,   93,   97,   81,   39,   40,   88,
-       43,   41,   89,   44,   96,  108,   90,   47,   48,  113,
-      118,  130,  109,   98,  131,  114,  138,  101,  102,  435,
-      119,   45,   99,  101,  102,  142,  226,  102,  164,  143,
-      150,  274,  436,   97,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,   99,  146,  151,  165,  152,  139,  199,
-      252,   98,  359,  147,  378,  385,  360,  570,  457,  386,
-      148,  569,  149,  458,  200,  568,  253,  567,  379,  104,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  106,
-      106,  106,  106,  106,  106,  106,  106,  106,  100,  101,
-
-      102,   43,  164,  566,   44,  565,  564,  563,  562,  397,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  100,
-      165,  388,   45,  398,  403,  501,  389,  561,  560,  390,
-      559,  558,  557,  556,  555,  554,  553,  502,  552,  551,
-      404,  550,  405,  549,  548,  163,  100,  547,  546,  545,
-      544,  543,  542,  541,  540,  539,  538,  166,  166,  166,
-      166,  166,  166,  166,  166,  166,   43,  537,  536,   44,
-      535,  534,  533,  532,  531,  530,  529,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,   45,  528,  167,
-      167,  167,  167,  167,  167,  168,  168,  168,  168,  168,
-
-      168,  168,  168,  168,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  224,  224,  224,  224,  224,  224,  224,
-      224,  224,   97,  527,  526,  525,  524,  523,  522,  521,
-      225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
-       98,  520,  225,  225,  225,  225,  225,  225,  571,  226,
-      102,  519,  518,  517,  516,  515,  514,  513,  512,  511,
-      227,  227,  227,  227,  227,  227,  227,  227,  227,  571,
-      510,  509,  508,  507,  506,  505,  504,  503,  500,  499,
-      498,  497,  496,  495,  494,  493,  492,  491,  490,  489,
-      488,  487,  486,  485,  484,  228,   42,   42,   42,   42,
-
-       42,   42,   42,   42,   42,  229,  229,  229,  229,  229,
-      229,  229,  229,  229,  229,  483,  482,  229,  229,  229,
-      229,  229,  229,  230,  230,  230,  230,  230,  230,  230,
-      230,  230,  231,  231,  231,  231,  231,  231,  231,  231,
-      231,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      481,  480,  273,  273,  273,  273,  273,  273,  164,  479,
-      478,  477,  476,  475,  474,  473,  275,  275,  275,  275,
-      275,  275,  275,  275,  275,  275,  165,  472,  275,  275,
-      275,  275,  275,  275,  276,  276,  276,  276,  276,  276,
-
-      276,  276,  276,  277,  277,  277,  277,  277,  277,  277,
-      277,  277,  291,  292,  293,  294,  295,  296,  297,  298,
-      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
-      471,  470,  319,  319,  319,  319,  319,  319,  320,  320,
-      320,  320,  320,  320,  320,  320,  320,  321,  321,  321,
-      321,  321,  321,  321,  321,  321,  350,  350,  350,  350,
-      350,  350,  350,  350,  350,  351,  351,  351,  351,  351,
-      351,  351,  351,  351,  376,  376,  376,  376,  376,  376,
-      376,  376,  376,  402,  402,  402,  402,  402,  402,  402,
-      402,  402,   38,  469,  468,   38,   42,   42,  467,   42,
-
-       46,   46,   46,   46,   47,   47,   47,   47,   43,   43,
-      466,   43,   99,   99,  465,   99,  100,  100,  464,  100,
-      102,  102,  463,  102,  462,  461,  460,  459,  456,  455,
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  443,  442,  441,  440,  439,  438,  437,  434,  433,
-      432,  431,  430,  429,  428,  427,  426,  425,  424,  423,
-      422,  421,  420,  419,  418,  417,  416,  415,  414,  413,
-      412,  411,  410,  409,  408,  407,  406,  401,  400,  399,
-      396,  395,  394,  393,  392,  391,  387,  384,  383,  382,
-      381,  380,  377,   49,  375,  374,  373,  372,  371,  354,
-
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      358,  357,  356,  355,  354,  353,  352,  349,  348,  347,
-      346,  345,  344,  343,  342,  341,  340,  339,  338,  337,
-      336,  335,  334,  333,  332,  331,  330,  329,  328,  327,
-      326,  325,  324,  323,  322,  318,  317,  316,  315,  314,
-      313,  312,  311,  310,  309,  308,  307,  306,  305,  304,
-      303,  302,  301,  300,  299,  290,  289,  288,  287,  286,
-      285,  284,  283,  282,  281,  280,  279,  278,  272,  271,
-      270,  269,  268,  267,  266,  265,  264,  263,  262,  261,
-      260,  259,  258,  257,  241,  256,  255,  254,  251,  250,
-
-      249,  248,  247,  246,  245,  244,  243,  242,  241,  240,
-      239,  238,  237,  236,  235,  234,  233,  232,  223,  222,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      211,  210,  209,  208,  207,  206,  205,  204,  203,  202,
-      201,  198,  197,  196,  195,  194,  193,  192,  191,  190,
-      189,  188,  187,  186,  185,  184,  183,  182,  181,  180,
-      179,  178,  177,  176,  175,  174,  173,  172,  171,  170,
-      100,  161,  160,  159,  158,  157,  156,  155,  154,  153,
-      145,  144,  141,  140,  137,  136,  135,  134,  133,  132,
-      129,  128,  127,  126,  125,  124,  123,  122,  121,  120,
-
-      117,  116,  115,  110,  107,   48,  100,   48,   94,   91,
-       84,   83,   82,   74,   66,   51,  571,    3,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571
+       14,    4,   15,   16,   17,    4,   18,   19,   20,   21,
+       22,   23,   24,    4,   25,   26,   27,   28,   29,   30,
+       31,   32,   33,   34,   35,   36,   37,    4,    4,    4,
+       38,   40,   41,   45,   56,   42,   46,   49,   50,   53,
+       54,   61,   71,   57,   73,   62,   74,  106,   72,   63,
+       79,   80,   43,   58,   47,   97,   59,   98,   49,   51,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,  143,
+       60,   64,   65,   66,   67,   83,   81,   68,   75,   76,
+
+       82,  100,  277,   69,   89,   84,   77,   91,   90,  104,
+       92,   85,   40,   41,   53,   54,   42,  102,  101,   45,
+       93,  144,   46,   94,   49,   50,  111,   95,   53,   54,
+      104,  113,  168,   43,  135,   47,  116,  136,  114,  123,
+       47,  104,  105,  106,  117,   49,  118,   43,  104,  124,
+      169,  155,  119,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  104,  147,  151,  111,  156,  148,  157,  104,
+      105,  106,  203,  152,  229,  106,  576,  364,  575,  391,
+      153,  365,  154,  392,  574,  573,   43,  204,  108,  109,
+      109,  109,  109,  109,  109,  109,  109,  109,  110,  110,
+
+      110,  110,  110,  110,  110,  110,  110,  170,  170,  170,
+      170,  170,  170,  170,  170,  170,  102,  463,  572,  255,
+      571,  570,  464,  569,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,   47,  256,  171,  171,  171,  171,
+      171,  171,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      577,  229,  106,  394,  102,  168,  568,  567,  395,  566,
+      384,  396,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  577,   47,  169,  385,  403,  409,  441,  565,  507,
+      564,  563,  562,  561,  560,  559,  558,  557,  556,  404,
+
+      442,  508,  410,  555,  411,  554,  553,  231,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  232,  232,  232,
+      232,  232,  232,  232,  232,  232,  232,  552,  551,  232,
+      232,  232,  232,  232,  232,  233,  233,  233,  233,  233,
+      233,  233,  233,  233,  234,  234,  234,  234,  234,  234,
+      234,  234,  234,  168,  550,  549,  548,  547,  546,  545,
+      544,  278,  278,  278,  278,  278,  278,  278,  278,  278,
+      278,  169,  543,  278,  278,  278,  278,  278,  278,  279,
+      279,  279,  279,  279,  279,  279,  279,  279,  280,  280,
+      280,  280,  280,  280,  280,  280,  280,  294,  295,  296,
+
+      297,  298,  299,  300,  301,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  542,  541,  323,  323,  323,
+      323,  323,  323,  324,  324,  324,  324,  324,  324,  324,
+      324,  324,  325,  325,  325,  325,  325,  325,  325,  325,
+      325,  355,  355,  355,  355,  355,  355,  355,  355,  355,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  382,
+      382,  382,  382,  382,  382,  382,  382,  382,  408,  408,
+      408,  408,  408,  408,  408,  408,  408,   39,  540,  539,
+       39,   44,   44,  538,   44,   48,   48,   48,   48,   49,
+       49,   49,   49,   45,   45,  537,   45,  103,  103,  536,
+
+      103,  104,  104,  535,  104,  106,  106,  534,  106,  533,
+      532,  531,  530,  529,  528,  527,  526,  525,  524,  523,
+      522,  521,  520,  519,  518,  517,  516,  515,  514,  513,
+      512,  511,  510,  509,  506,  505,  504,  503,  502,  501,
+      500,  499,  498,  497,  496,  495,  494,  493,  492,  491,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
+      470,  469,  468,  467,  466,  465,  462,  461,  460,  459,
+      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
+      448,  447,  446,  445,  444,  443,  440,  439,  438,  437,
+
+      436,  435,  434,  433,  432,  431,  430,  429,  428,  427,
+      426,  425,  424,  423,  422,  421,  420,  419,  418,  417,
+      416,  415,  414,  413,  412,  407,  406,  405,  402,  401,
+      400,  399,  398,  397,  393,  390,  389,  388,  387,  386,
+      383,   51,  381,  380,  379,  378,  377,  376,  359,  375,
+      374,  373,  372,  371,  370,  369,  368,  367,  366,  363,
+      362,  361,  360,  359,  358,  357,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
+      330,  329,  328,  327,  326,  322,  321,  320,  319,  318,
+
+      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
+      307,  306,  305,  304,  303,  302,  293,  292,  291,  290,
+      289,  288,  287,  286,  285,  284,  283,  282,  281,  276,
+      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
+      265,  264,  263,  262,  261,  260,  244,  259,  258,  257,
+      254,  253,  252,  251,  250,  249,  248,  247,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
+      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
+      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
+      208,  207,  206,  205,  202,  201,  200,  199,  198,  197,
+
+      196,  195,  194,  193,  192,  191,  190,  189,  188,  187,
+      186,  185,  184,  183,  182,  181,  180,  179,  178,  177,
+      176,  175,  174,  167,  166,  165,  164,  163,  162,  161,
+      160,  159,  158,  150,  149,  146,  145,  142,  141,  140,
+      139,  138,  137,  134,  133,  132,  131,  130,  129,  128,
+      127,  126,  125,  122,  121,  120,  115,  112,   50,   50,
+       99,   96,   88,   87,   86,   78,   70,   55,  577,    3,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577
     } ;
 
-static yyconst short int yy_chk[970] =
+static yyconst short int yy_chk[922] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    5,    5,    8,   16,    5,    8,    9,    9,   54,
-       21,   18,   22,   16,   22,   18,   21,   54,   17,   18,
-      581,   17,   25,   25,    8,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   17,   19,   19,   19,   19,
-       27,   26,   19,   23,   23,   26,   32,   36,   19,   31,
-
-       27,   23,   34,   31,   34,   43,   27,   39,   39,   32,
-       42,   39,   32,   42,   36,   52,   32,   46,   46,   56,
-       60,   73,   52,   43,   73,   56,   80,  101,  101,  412,
-       60,   42,   45,   45,   45,   83,  226,  226,  102,   83,
-       87,  580,  412,  273,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   86,   87,  102,   87,   80,  138,
-      200,  273,  329,   86,  355,  361,  329,  568,  436,  361,
-       86,  567,   86,  436,  138,  566,  200,  564,  355,   45,
-       49,   49,   49,   49,   49,   49,   49,   49,   49,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   98,   98,
-
-       98,  229,  319,  563,  229,  562,  561,  557,  555,  371,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-      319,  363,  229,  371,  377,  481,  363,  553,  552,  363,
-      551,  549,  546,  545,  544,  543,  542,  481,  541,  539,
-      377,  538,  377,  537,  536,   98,  103,  535,  534,  531,
-      530,  529,  528,  526,  525,  524,  523,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  104,  522,  520,  104,
-      519,  518,  516,  515,  514,  513,  512,  104,  104,  104,
-      104,  104,  104,  104,  104,  104,  104,  104,  511,  104,
-      104,  104,  104,  104,  104,  105,  105,  105,  105,  105,
-
-      105,  105,  105,  105,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  163,  510,  509,  508,  507,  506,  505,  504,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  503,  163,  163,  163,  163,  163,  163,  165,  165,
-      165,  502,  501,  500,  499,  498,  495,  494,  493,  492,
-      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
-      490,  489,  487,  486,  485,  484,  483,  482,  480,  479,
-      478,  477,  476,  475,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  165,  166,  166,  166,  166,
-
-      166,  166,  166,  166,  166,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  462,  461,  167,  167,  167,
-      167,  167,  167,  168,  168,  168,  168,  168,  168,  168,
-      168,  168,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  224,  224,  224,  224,  224,  224,  224,  224,  224,
-      225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
-      460,  459,  225,  225,  225,  225,  225,  225,  228,  458,
-      457,  456,  455,  454,  453,  452,  228,  228,  228,  228,
-      228,  228,  228,  228,  228,  228,  228,  451,  228,  228,
-      228,  228,  228,  228,  230,  230,  230,  230,  230,  230,
-
-      230,  230,  230,  231,  231,  231,  231,  231,  231,  231,
-      231,  231,  249,  249,  249,  249,  249,  249,  249,  249,
-      275,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      450,  448,  275,  275,  275,  275,  275,  275,  276,  276,
-      276,  276,  276,  276,  276,  276,  276,  277,  277,  277,
-      277,  277,  277,  277,  277,  277,  320,  320,  320,  320,
-      320,  320,  320,  320,  320,  321,  321,  321,  321,  321,
-      321,  321,  321,  321,  350,  350,  350,  350,  350,  350,
-      350,  350,  350,  376,  376,  376,  376,  376,  376,  376,
-      376,  376,  572,  447,  446,  572,  573,  573,  445,  573,
-
-      574,  574,  574,  574,  575,  575,  575,  575,  576,  576,
-      444,  576,  577,  577,  443,  577,  578,  578,  442,  578,
-      579,  579,  441,  579,  440,  439,  438,  437,  435,  432,
-      431,  430,  429,  428,  427,  426,  425,  424,  423,  422,
-      420,  419,  418,  417,  416,  415,  414,  413,  411,  410,
-      409,  407,  406,  405,  404,  403,  401,  400,  399,  398,
-      397,  396,  393,  392,  391,  390,  389,  388,  386,  385,
-      384,  383,  382,  381,  380,  379,  378,  375,  373,  372,
-      370,  369,  368,  366,  365,  364,  362,  360,  359,  358,
-      357,  356,  352,  351,  347,  346,  345,  344,  343,  342,
-
-      341,  340,  339,  338,  336,  335,  334,  332,  331,  330,
-      328,  327,  326,  325,  324,  323,  322,  318,  317,  316,
-      315,  313,  311,  310,  309,  308,  307,  306,  305,  304,
-      302,  301,  300,  299,  289,  288,  287,  286,  285,  284,
-      282,  281,  280,  279,  278,  271,  270,  269,  268,  267,
-      266,  265,  264,  263,  262,  260,  259,  257,  256,  255,
-      254,  253,  252,  251,  250,  248,  247,  246,  244,  243,
-      242,  240,  238,  237,  236,  235,  234,  232,  223,  222,
-      221,  219,  218,  217,  216,  215,  214,  213,  212,  211,
-      210,  209,  207,  205,  204,  203,  202,  201,  199,  197,
-
-      195,  194,  192,  191,  189,  186,  185,  184,  183,  180,
-      179,  178,  175,  174,  173,  172,  171,  170,  161,  160,
-      159,  158,  157,  156,  155,  154,  153,  152,  151,  150,
-      149,  148,  147,  146,  145,  144,  143,  142,  141,  140,
-      139,  137,  136,  135,  133,  132,  131,  130,  129,  128,
-      127,  126,  125,  124,  123,  121,  120,  119,  118,  117,
-      116,  115,  114,  113,  112,  111,  110,  109,  108,  107,
-       99,   96,   95,   94,   93,   92,   91,   90,   89,   88,
-       85,   84,   82,   81,   79,   78,   77,   76,   75,   74,
-       72,   70,   69,   68,   67,   65,   64,   63,   62,   61,
-
-       59,   58,   57,   53,   51,   47,   44,   41,   35,   33,
-       30,   29,   28,   24,   20,   15,    3,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571
+        1,    5,    5,    8,   17,    5,    8,    9,    9,   15,
+       15,   19,   22,   17,   23,   19,   23,  587,   22,   19,
+       26,   26,    5,   18,    8,   35,   18,   35,    9,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   84,
+       18,   20,   20,   20,   20,   28,   27,   20,   24,   24,
+
+       27,   37,  586,   20,   32,   28,   24,   33,   32,   46,
+       33,   28,   40,   40,   43,   43,   40,   45,   37,   44,
+       33,   84,   44,   33,   48,   48,   54,   33,   53,   53,
+       46,   56,  106,   40,   77,   45,   58,   77,   56,   64,
+       44,   47,   47,   47,   58,   48,   60,   54,  103,   64,
+      106,   91,   60,   47,   47,   47,   47,   47,   47,   47,
+       47,   47,   47,   87,   90,  111,   91,   87,   91,  103,
+      105,  105,  143,   90,  229,  229,  574,  333,  573,  366,
+       90,  333,   90,  366,  572,  570,  111,  143,   47,   51,
+       51,   51,   51,   51,   51,   51,   51,   51,   52,   52,
+
+       52,   52,   52,   52,   52,   52,   52,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  108,  442,  569,  204,
+      568,  567,  442,  563,  108,  108,  108,  108,  108,  108,
+      108,  108,  108,  108,  108,  204,  108,  108,  108,  108,
+      108,  108,  109,  109,  109,  109,  109,  109,  109,  109,
+      109,  110,  110,  110,  110,  110,  110,  110,  110,  110,
+      169,  169,  169,  368,  232,  323,  561,  559,  368,  558,
+      360,  368,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  232,  323,  360,  376,  383,  418,  557,  487,
+      555,  552,  551,  550,  549,  548,  547,  545,  544,  376,
+
+      418,  487,  383,  543,  383,  542,  541,  169,  170,  170,
+      170,  170,  170,  170,  170,  170,  170,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  540,  537,  171,
+      171,  171,  171,  171,  171,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  231,  536,  535,  534,  532,  531,  530,
+      529,  231,  231,  231,  231,  231,  231,  231,  231,  231,
+      231,  231,  528,  231,  231,  231,  231,  231,  231,  233,
+      233,  233,  233,  233,  233,  233,  233,  233,  234,  234,
+      234,  234,  234,  234,  234,  234,  234,  252,  252,  252,
+
+      252,  252,  252,  252,  252,  278,  278,  278,  278,  278,
+      278,  278,  278,  278,  278,  526,  525,  278,  278,  278,
+      278,  278,  278,  279,  279,  279,  279,  279,  279,  279,
+      279,  279,  280,  280,  280,  280,  280,  280,  280,  280,
+      280,  324,  324,  324,  324,  324,  324,  324,  324,  324,
+      325,  325,  325,  325,  325,  325,  325,  325,  325,  355,
+      355,  355,  355,  355,  355,  355,  355,  355,  382,  382,
+      382,  382,  382,  382,  382,  382,  382,  578,  524,  522,
+      578,  579,  579,  521,  579,  580,  580,  580,  580,  581,
+      581,  581,  581,  582,  582,  520,  582,  583,  583,  519,
+
+      583,  584,  584,  518,  584,  585,  585,  517,  585,  516,
+      515,  514,  513,  512,  511,  510,  509,  508,  507,  506,
+      505,  504,  501,  500,  499,  498,  496,  495,  493,  492,
+      491,  490,  489,  488,  486,  485,  484,  483,  482,  481,
+      479,  478,  477,  476,  475,  474,  473,  472,  471,  470,
+      469,  468,  467,  466,  465,  464,  463,  462,  461,  460,
+      459,  458,  457,  456,  454,  453,  452,  451,  450,  449,
+      448,  447,  446,  445,  444,  443,  441,  438,  437,  436,
+      435,  434,  433,  432,  431,  430,  429,  428,  426,  425,
+      424,  423,  422,  421,  420,  419,  417,  416,  415,  413,
+
+      412,  411,  410,  409,  407,  406,  405,  404,  403,  402,
+      399,  398,  397,  396,  395,  394,  392,  391,  390,  389,
+      388,  387,  386,  385,  384,  381,  379,  377,  375,  374,
+      373,  371,  370,  369,  367,  365,  364,  363,  362,  361,
+      357,  356,  352,  351,  350,  349,  348,  347,  346,  345,
+      344,  343,  342,  340,  339,  338,  336,  335,  334,  332,
+      331,  330,  329,  328,  327,  326,  322,  321,  320,  319,
+      317,  315,  314,  313,  312,  311,  310,  309,  308,  307,
+      305,  304,  303,  302,  292,  291,  290,  289,  288,  287,
+      285,  284,  283,  282,  281,  275,  274,  273,  272,  271,
+
+      270,  269,  268,  267,  266,  265,  263,  262,  260,  259,
+      258,  257,  256,  255,  254,  253,  251,  250,  249,  247,
+      246,  245,  243,  241,  240,  239,  238,  237,  235,  228,
+      227,  226,  224,  223,  222,  221,  220,  219,  218,  217,
+      216,  215,  214,  213,  211,  209,  208,  207,  206,  205,
+      203,  201,  199,  198,  196,  195,  193,  190,  189,  188,
+      187,  184,  183,  182,  179,  178,  177,  176,  175,  174,
+      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
+      157,  156,  155,  154,  153,  152,  151,  150,  149,  148,
+      147,  146,  145,  144,  142,  141,  140,  138,  137,  136,
+
+      135,  134,  133,  132,  131,  130,  129,  128,  126,  125,
+      124,  123,  122,  121,  120,  119,  118,  117,  116,  115,
+      114,  113,  112,  101,  100,   99,   98,   97,   96,   95,
+       94,   93,   92,   89,   88,   86,   85,   83,   82,   81,
+       80,   79,   78,   76,   74,   73,   72,   71,   69,   68,
+       67,   66,   65,   63,   62,   61,   57,   55,   49,   42,
+       36,   34,   31,   30,   29,   25,   21,   16,    3,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -809,6 +801,7 @@ char *yytext;
 #include "common.h"
 #include "daemon.h"
 #include "lib.h"
+#include "both.h"
 #include "tokens.h"
 
 #define HYPHEN '-'
@@ -1051,7 +1044,7 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 142 "lexer.l"
+#line 143 "lexer.l"
 
 
 
@@ -1104,13 +1097,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 572 )
+                               if ( yy_current_state >= 578 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 918 );
+               while ( yy_base[yy_current_state] != 870 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1138,467 +1131,472 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 144 "lexer.l"
+#line 145 "lexer.l"
 { lr_dir= df_reject; return tokv_word_reject; }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 145 "lexer.l"
+#line 146 "lexer.l"
 { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 146 "lexer.l"
+#line 147 "lexer.l"
 { lr_dir= df_executefrompath; return tokv_word_executefrompath; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 147 "lexer.l"
+#line 148 "lexer.l"
 { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 148 "lexer.l"
+#line 149 "lexer.l"
 { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 149 "lexer.l"
+#line 150 "lexer.l"
 { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 150 "lexer.l"
+#line 151 "lexer.l"
 { lr_dir= df_errorstofile; return tokv_word_errorstofile; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 151 "lexer.l"
+#line 152 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 152 "lexer.l"
+#line 153 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 153 "lexer.l"
+#line 154 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 154 "lexer.l"
+#line 155 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 155 "lexer.l"
+#line 156 "lexer.l"
 { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 156 "lexer.l"
+#line 157 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 157 "lexer.l"
+#line 158 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 158 "lexer.l"
+#line 159 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 159 "lexer.l"
+#line 160 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 160 "lexer.l"
+#line 161 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 161 "lexer.l"
+#line 162 "lexer.l"
 { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 162 "lexer.l"
+#line 163 "lexer.l"
 { lr_dir= df_cd; return tokv_word_cd; }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 163 "lexer.l"
+#line 164 "lexer.l"
 { lr_dir= df_userrcfile; return tokv_word_userrcfile; }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 164 "lexer.l"
+#line 165 "lexer.l"
 { lr_dir= df_include; return tokv_word_include; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 165 "lexer.l"
+#line 166 "lexer.l"
 { lr_dir= df_include; return tokv_word_includeifexist; }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 166 "lexer.l"
+#line 167 "lexer.l"
 { lr_dir= df_includelookup; return tokv_word_includelookup; }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 167 "lexer.l"
+#line 168 "lexer.l"
 { lr_dir= df_includelookup; return tokv_word_includelookupall; }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 168 "lexer.l"
+#line 169 "lexer.l"
 { lr_dir= df_includedirectory; return tokv_word_includedirectory; }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 169 "lexer.l"
+#line 170 "lexer.l"
 { lr_dir= df_message; return tokv_word_message; }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 170 "lexer.l"
+#line 171 "lexer.l"
 { lr_dir= df_include; return tokv_word_includesysconfig; }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 171 "lexer.l"
+#line 172 "lexer.l"
 { lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 172 "lexer.l"
+#line 173 "lexer.l"
 { lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 173 "lexer.l"
+#line 174 "lexer.l"
 { lr_dir= df_quit; return tokv_word_quit; }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 174 "lexer.l"
+#line 175 "lexer.l"
 { lr_dir= df_eof; return tokv_word_eof; }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 175 "lexer.l"
+#line 176 "lexer.l"
 { lr_dir= df_if; return tokv_word_if; }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 176 "lexer.l"
+#line 177 "lexer.l"
 { lr_dir= df_catchquit; return tokv_word_catchquit; }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 177 "lexer.l"
+#line 178 "lexer.l"
 { lr_dir= df_errorspush; return tokv_word_errorspush; }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 178 "lexer.l"
+#line 179 "lexer.l"
 { lr_controlend= tokv_word_if; return tokv_word_elif; }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 179 "lexer.l"
+#line 180 "lexer.l"
 { lr_controlend= tokv_word_if; return tokv_word_else; }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 180 "lexer.l"
+#line 181 "lexer.l"
 { lr_controlend= tokv_word_if; return tokv_word_fi; }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 181 "lexer.l"
+#line 182 "lexer.l"
 { lr_controlend= tokv_word_catchquit; return tokv_word_hctac; }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 182 "lexer.l"
+#line 183 "lexer.l"
 { lr_controlend= tokv_word_errorspush; return tokv_word_srorre; }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 183 "lexer.l"
+#line 184 "lexer.l"
 { lr_parmcond= pcf_glob; return tokv_word_glob; }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 184 "lexer.l"
+#line 185 "lexer.l"
 { lr_parmcond= pcf_range; return tokv_word_range; }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 185 "lexer.l"
+#line 186 "lexer.l"
 { lr_parmcond= pcf_grep; return tokv_word_grep; }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 186 "lexer.l"
+#line 187 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 187 "lexer.l"
+#line 188 "lexer.l"
 { lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 188 "lexer.l"
+#line 189 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 189 "lexer.l"
+#line 190 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 190 "lexer.l"
+#line 191 "lexer.l"
 { lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 191 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; }
+#line 192 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 192 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; }
+#line 193 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 193 "lexer.l"
-{ lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
+#line 194 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 194 "lexer.l"
-{ lr_parameter= pf_service; return tokv_word_service; }
+#line 195 "lexer.l"
+{ lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 195 "lexer.l"
-{ lr_parameter= pf_callinguser; return tokv_word_callinguser; }
+#line 196 "lexer.l"
+{ lr_parameter= pf_service; return tokv_word_service; }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 196 "lexer.l"
-{ lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
+#line 197 "lexer.l"
+{ lr_parameter= pf_callinguser; return tokv_word_callinguser; }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 197 "lexer.l"
-{ lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
+#line 198 "lexer.l"
+{ lr_parameter= pf_callinggroup; return tokv_word_callinggroup; }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 198 "lexer.l"
-{ lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
+#line 199 "lexer.l"
+{ lr_parameter= pf_callingusershell; return tokv_word_callingusershell; }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 199 "lexer.l"
-{ lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
+#line 200 "lexer.l"
+{ lr_parameter= pf_serviceuser; return tokv_word_serviceuser; }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 200 "lexer.l"
-{ lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
+#line 201 "lexer.l"
+{ lr_parameter= pf_servicegroup; return tokv_word_servicegroup; }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 201 "lexer.l"
-{ lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
+#line 202 "lexer.l"
+{ lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 202 "lexer.l"
-{ lr_loglevel= LOG_INFO; return tokv_syslog_info; }
+#line 203 "lexer.l"
+{ lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 203 "lexer.l"
-{ lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
+#line 204 "lexer.l"
+{ lr_loglevel= LOG_INFO; return tokv_syslog_info; }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 204 "lexer.l"
-{ lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
+#line 205 "lexer.l"
+{ lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 205 "lexer.l"
-{ lr_loglevel= LOG_ERR; return tokv_syslog_err; }
+#line 206 "lexer.l"
+{ lr_loglevel= LOG_WARNING; return tokv_syslog_warning; }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 206 "lexer.l"
-{ lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
+#line 207 "lexer.l"
+{ lr_loglevel= LOG_ERR; return tokv_syslog_err; }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 207 "lexer.l"
-{ lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
+#line 208 "lexer.l"
+{ lr_loglevel= LOG_CRIT; return tokv_syslog_crit; }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 208 "lexer.l"
-{ lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
+#line 209 "lexer.l"
+{ lr_loglevel= LOG_ALERT; return tokv_syslog_alert; }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 209 "lexer.l"
-{ lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
+#line 210 "lexer.l"
+{ lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 210 "lexer.l"
-{ lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
+#line 211 "lexer.l"
+{ lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 211 "lexer.l"
-{ lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
+#line 212 "lexer.l"
+{ lr_logfacility= LOG_CRON; return tokv_syslog_cron; }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 212 "lexer.l"
-{ lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
+#line 213 "lexer.l"
+{ lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 213 "lexer.l"
-{ lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
+#line 214 "lexer.l"
+{ lr_logfacility= LOG_KERN; return tokv_syslog_kern; }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 214 "lexer.l"
-{ lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
+#line 215 "lexer.l"
+{ lr_logfacility= LOG_LPR; return tokv_syslog_lpr; }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 215 "lexer.l"
-{ lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
+#line 216 "lexer.l"
+{ lr_logfacility= LOG_MAIL; return tokv_syslog_mail; }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 216 "lexer.l"
-{ lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
+#line 217 "lexer.l"
+{ lr_logfacility= LOG_NEWS; return tokv_syslog_news; }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 217 "lexer.l"
-{ lr_logfacility= LOG_USER; return tokv_syslog_user; }
+#line 218 "lexer.l"
+{ lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 218 "lexer.l"
-{ lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
+#line 219 "lexer.l"
+{ lr_logfacility= LOG_USER; return tokv_syslog_user; }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 219 "lexer.l"
-{ lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
+#line 220 "lexer.l"
+{ lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 220 "lexer.l"
-{ lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
+#line 221 "lexer.l"
+{ lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 221 "lexer.l"
-{ lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
+#line 222 "lexer.l"
+{ lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 222 "lexer.l"
-{ lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
+#line 223 "lexer.l"
+{ lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 223 "lexer.l"
-{ lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
+#line 224 "lexer.l"
+{ lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 224 "lexer.l"
-{ lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
+#line 225 "lexer.l"
+{ lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 225 "lexer.l"
-{ lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
+#line 226 "lexer.l"
+{ lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 226 "lexer.l"
-{ lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
+#line 227 "lexer.l"
+{ lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 227 "lexer.l"
-{ return tokv_word_read; }
+#line 228 "lexer.l"
+{ lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 228 "lexer.l"
-{ return tokv_word_write; }
+#line 229 "lexer.l"
+{ return tokv_word_read; }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 229 "lexer.l"
-{ return tokv_dollar; }
+#line 230 "lexer.l"
+{ return tokv_word_write; }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 230 "lexer.l"
-{ return tokv_openparen; }
+#line 231 "lexer.l"
+{ return tokv_dollar; }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 231 "lexer.l"
-{ return tokv_closeparen; }
+#line 232 "lexer.l"
+{ return tokv_openparen; }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 232 "lexer.l"
-{ return tokv_not; }
+#line 233 "lexer.l"
+{ return tokv_closeparen; }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 233 "lexer.l"
-{ return tokv_and; }
+#line 234 "lexer.l"
+{ return tokv_not; }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 234 "lexer.l"
-{ return tokv_or; }
+#line 235 "lexer.l"
+{ return tokv_and; }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 235 "lexer.l"
-{ lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
+#line 236 "lexer.l"
+{ return tokv_or; }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 239 "lexer.l"
+#line 237 "lexer.l"
+{ lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; }
+       YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 241 "lexer.l"
 {
                          char *ep;
                          lr_min=lr_max= (int)strtoul(yytext,&ep,10);
@@ -1606,9 +1604,9 @@ YY_RULE_SETUP
                          return tokv_ordinal;
                        }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 245 "lexer.l"
+#line 247 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1623,9 +1621,9 @@ YY_RULE_SETUP
                          return tokv_fdrange;
                        }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 258 "lexer.l"
+#line 260 "lexer.l"
 {
                          char *ep;
                          lr_min= (int)strtoul(yytext,&ep,10);
@@ -1635,56 +1633,61 @@ YY_RULE_SETUP
                          return tokv_fdstoend;
                        }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 266 "lexer.l"
+#line 268 "lexer.l"
 return tokv_lwsp;
        YY_BREAK
-case 97:
+case 98:
+YY_RULE_SETUP
+#line 269 "lexer.l"
+return tokv_lwsp;
+       YY_BREAK
+case 99:
 YY_RULE_SETUP
-#line 267 "lexer.l"
+#line 270 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 268 "lexer.l"
+#line 271 "lexer.l"
 cstate->lineno++; return tokv_newline;
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 269 "lexer.l"
+#line 272 "lexer.l"
 {
                          parseerrprint("missing newline at eof after comment");
                          return tokv_error;
                        }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 273 "lexer.l"
+#line 276 "lexer.l"
 {
                          return dequote(yytext);
                        }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 276 "lexer.l"
+#line 279 "lexer.l"
 {
                          parseerrprint("misquoted or unterminated string");
                          return tokv_error;
                        }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 280 "lexer.l"
+#line 283 "lexer.l"
 return tokv_barestring;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 281 "lexer.l"
+#line 284 "lexer.l"
 return tokv_eof;
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 284 "lexer.l"
+#line 287 "lexer.l"
 ECHO;
        YY_BREAK
 
@@ -1976,7 +1979,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 572 )
+                       if ( yy_current_state >= 578 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2011,11 +2014,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 572 )
+               if ( yy_current_state >= 578 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 571);
+       yy_is_jam = (yy_current_state == 577);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2570,7 +2573,7 @@ int main()
        return 0;
        }
 #endif
-#line 284 "lexer.l"
+#line 287 "lexer.l"
 
 
 const char *const builtinservicehelpstrings[]= {
@@ -2579,6 +2582,7 @@ const char *const builtinservicehelpstrings[]= {
   "version",
   "toplevel",
   "override",
+  "shutdown",
   "reset",
   "execute",
   "help",