Take out memory hints, since we are assuming flex over lex, so this shouldn't be...
[mmh] / sbr / dtimep.c
index a8cce79..e5dc812 100644 (file)
@@ -261,9 +261,6 @@ static void yy_flex_free YY_PROTO(( void * ));
 
 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
 
-
-#define yywrap() 1
-#define YY_SKIP_YYWRAP
 typedef unsigned char YY_CHAR;
 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 typedef int yy_state_type;
@@ -285,73 +282,80 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 39
-#define YY_END_OF_BUFFER 40
-static yyconst short int yy_accept[572] =
+#define YY_NUM_RULES 31
+#define YY_END_OF_BUFFER 32
+static yyconst short int yy_accept[636] =
     {   0,
-        0,    0,   40,   38,   37,   38,   38,   38,   38,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   38,   35,
-       35,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+        0,    0,   32,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   14,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   28,
+        0,    0,    0,    0,    0,    0,    0,    0,   14,    0,
 
-        0,   27,    0,   33,   21,   20,    0,   19,   18,    0,
-        0,   15,   32,   31,    0,   17,   16,    0,    0,    0,
-        0,   23,    0,   22,    0,   26,    0,   25,   24,    0,
-        0,    0,    0,    0,    0,   30,   29,   12,   13,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   12,   13,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   14,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   29,   26,   25,    0,
+        0,   19,   18,    0,   17,   16,    0,    0,   15,   28,
+       27,    0,    0,    0,   21,   20,    0,    0,    0,   24,
+        0,    0,   23,   22,    0,    0,    0,    0,    0,    0,
+        0,    0,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+
+       29,   12,   13,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        9,    9,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   12,   13,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    9,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    9,    9,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        9,   10,   11,    7,    7,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        9,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    9,    7,    7,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   10,   11,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    7,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    6,
-        6,    6,    6,    6,    6,    6,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    5,    0,    5,    0,    0,
-        0,    0,    0,    0,    3,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    7,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    8,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    5,    5,    5,    0,    0,
-        8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    5,    0,    0,    6,    6,
-        0,    6,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    3,    0,    0,    6,    0,    0,    0,    0,
-        0,    0,    6,    6,    0,    2,    4,    1,    1,    0,
-        6,    0,    0,    0,    1,    0,    0,    1,    2,    4,
-        0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    6,    6,    6,    6,    6,    6,    6,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
+        0,    5,    0,    0,    0,    0,    0,    0,    3,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
+        5,    5,    0,    0,    8,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
+        0,    0,    6,    6,    0,    6,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    3,    0,    0,    6,
+        0,    0,    0,    0,    0,    0,    6,    6,    0,    2,
+        4,    1,    1,    0,    6,    0,    0,    0,    1,    0,
+        0,    1,    2,    4,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -362,14 +366,14 @@ static yyconst int yy_ec[256] =
         1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    4,    5,    6,    1,    7,    8,    9,    8,
         8,    8,    8,    8,    8,    8,    8,   10,    1,    1,
-        1,    1,    1,    1,   13,   14,   15,   16,   17,   18,
-       19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
-       29,   30,   31,   32,   33,   34,   35,   29,   36,    1,
-       11,    1,   12,    1,    1,    1,   13,   14,   15,   16,
-
-       17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-       27,   28,   29,   30,   31,   32,   33,   34,   35,   29,
-       36,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,   11,   12,   13,   14,   15,   16,
+       17,   18,   12,   19,   12,   12,   20,   21,   22,   23,
+       12,   12,   24,   25,   26,   12,   27,   12,   12,   12,
+       28,    1,   29,    1,    1,    1,   30,   31,   32,   33,
+
+       34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
+       44,   45,   40,   46,   47,   48,   49,   50,   51,   40,
+       52,   40,    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,
@@ -386,354 +390,420 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[37] =
+static yyconst int yy_meta[53] =
     {   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
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    1,    1,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    4,    3,    3,    3,    4,    3,
+        3,    3
     } ;
 
-static yyconst short int yy_base[572] =
+static yyconst short int yy_base[640] =
     {   0,
-        0,    0,  869,  870,  870,   29,   31,   63,   30,   45,
-      837,   31,  850,   44,   24,  841,   50,  870,   61,  870,
-       66,   53,  850,   52,  870,   72,   22,  832,  846,   70,
-       79,   82,   79,  831,   80,   82,  836,   83,   84,   86,
-      829,   87,  827,   88,  118,   98,  119,  845,  829,  824,
-      825,  822,  834,  820,  819,  818,  834,  816,  815,  832,
-      824,  812,  811,  810,  815,  808,  807,   98,   93,  806,
-      811,  804,  801,  802,  801,  800,  799,  798,  801,  802,
-      794,  809,  870,  809,  792,  791,  100,  119,  102,  805,
-      804,   99,  807,  792,  803,  800,  144,  804,  803,  870,
-
-      135,  870,  114,  870,  870,  870,  131,  870,  870,  136,
-       47,  870,  870,  870,  137,  870,  870,  139,  140,  144,
-      812,  870,  153,  870,  159,  870,  152,  870,  870,  158,
-      160,  162,  163,  169,  175,  870,  870,  164,  173,  783,
-      793,  796,  796,  783,  159,  154,  774,  775,  778,  178,
-      182,  794,  793,  194,  779,  771,  776,  767,  202,  797,
-      785,  784,  794,  793,  774,  780,  767,  777,  760,  772,
-      775,  756,  770,  768,  870,  870,  192,  193,  195,  204,
-      197,  196,  205,  206,  782,  214,  212,  203,  228,  232,
-      758,  757,  240,  779,  748,  765,  765,  242,  210,  760,
-
-      759,  233,  762,  747,  758,  755,  735,  740,  767,  732,
-      753,  749,  749,  739,  727,  746,  748,  729,  245,  735,
-      727,  732,  723,  742,  752,  751,  732,  726,  736,  732,
-      250,  253,  723,  722,  255,  744,  263,  743,  727,  713,
-      267,  740,  711,  721,  724,  724,  711,  193,  237,  702,
-      703,  706,  269,  697,  270,  715,  701,  717,  715,  274,
-      715,  691,  710,  269,  273,  723,  692,  709,  709,  691,
-      718,  705,  701,  692,  282,  278,  293,  704,  703,  288,
-      291,  684,  677,  275,  695,  694,  291,  697,  682,  693,
-      690,  286,  223,  303,  304,  307,  308,  309,  310,  704,
-
-      311,  312,  313,  675,  702,  667,  685,  665,  314,  687,
-      321,  329,  697,  681,  667,  660,  678,  664,  679,  333,
-      690,  870,  870,  344,  346,  689,  688,  659,  669,  672,
-      672,  659,  309,  291,  650,  651,  654,  348,  657,  649,
-      654,  645,  664,  674,  673,  654,  648,  658,  654,  668,
-      356,  639,  357,  632,  358,  309,  361,  637,  630,  635,
-      662,  646,  652,  356,  369,  659,  364,  372,  374,  345,
-      366,  373,  377,  380,  382,  383,  658,  388,  384,  386,
-      404,  657,  626,  643,  643,  625,  652,  639,  635,  626,
-      648,  387,  411,  647,  646,  645,  644,  615,  388,  614,
-
-      616,  389,  394,  625,  421,  422,  617,  609,  614,  605,
-      624,  634,  633,  614,  608,  618,  614,  426,  628,  427,
-      627,  611,  597,  590,  608,  594,  609,  612,  399,  619,
-      610,  598,  592,  585,  590,  582,  597,  597,  428,  430,
-      610,  579,  596,  596,  578,  605,  592,  588,  579,  432,
-      435,  444,  573,  566,  571,  598,  582,  439,  441,  582,
-      581,  563,  579,  564,  562,  566,  449,  452,  589,  573,
-      559,  552,  570,  556,  571,  454,  457,  465,  460,  463,
-      582,  581,  580,  551,  570,  468,  566,  565,  547,  563,
-      544,  558,  556,  476,  471,  479,  542,  535,  540,  567,
-
-      551,  481,  565,  483,  485,  493,  495,  503,  564,  498,
-      870,  529,  528,  547,  526,  545,  547,  528,  505,  556,
-      555,  554,  553,  498,  508,  494,  415,  501,  870,  870,
-      473,  870,  469,  419,  417,  405,  511,  391,  381,  513,
-      521,  516,  870,  300,  296,  870,  309,  518,  523,  525,
-      527,  529,  870,  870,  234,  250,  213,  531,  533,  207,
-      870,  535,  537,  539,  541,  543,  545,  870,  870,  870,
-      870
+        0,    0, 1082, 1083,   45,   47,   98,   87,   63,   89,
+       75,  101,  103,  102,  104,   84,  116,  107,  121,  128,
+      109,  110,  116,  110,  139,  124,    0,  130, 1047,  131,
+      133, 1038,  133,   27,  142,  137, 1047,  135,  153,  139,
+     1030, 1043,  182,  184,  171,  180,    0,  182,  183,  184,
+      185,  186,  187,  191,  179,    0,  180,  181, 1034,  184,
+      185, 1028,  186, 1026,  232,  212,  223,    0, 1048, 1047,
+     1025, 1034, 1044, 1043, 1035, 1041, 1040, 1033, 1025, 1037,
+     1036, 1035, 1016,  181, 1033, 1032,  189, 1013, 1030, 1004,
+     1005, 1027, 1026, 1002, 1004, 1005,  998, 1012,    0, 1012,
+
+     1014,  998,    0,  994,  995,  992, 1003,  990,  989, 1004,
+      987,  986, 1002,  994,  983,  982,  981,  985,  195,  193,
+      979,  983,  977,  974,  975,  974,  973,  972,  971,  973,
+      974,  967,  981,    0,  981,  241,  249,   74,  979,  978,
+      193,  981,  966,  977,  974,  274, 1083, 1083, 1083,  235,
+      238, 1083, 1083,  257, 1083, 1083,  242,  259, 1083, 1083,
+     1083,  245,  253,  261, 1083, 1083,  258, 1005,  264, 1083,
+      266,  268, 1083, 1083,  284,  100,  291,  296,  297,  302,
+      977,  976,  270,  276,  275,  282,  301,  283,  308,  309,
+      314, 1002,  315,  313,  311,  316,  320,  321,  325,  333,
+
+      334,  332,  341,  957,  966,  969,  969,  956,  288,  305,
+      948,  949,  951,  344,  352,  354,  954,  947,  951,  943,
+      379,  989,  960,  959,  986,  985,  949,  955,  942,  952,
+      936,  947,  950,  932,  945,  943,  948,  947, 1083, 1083,
+      335,  312,  362,  364,  367,  365,  368,  372,  972,  373,
+      376,  377,  374,  376,  422,  971,  924,  940,  940,  426,
+      125,  935,  934,  342,  937,  922,  933,  930,  911,  916,
+      959,  908,  928,  924,  924,  914,  903,  921,  923,  905,
+      931,  930,  430,  908,  901,  905,  897,  915,  942,  941,
+      905,  899,  909,  905,  434,  438,  442,  936,  384,  935,
+
+      902,  889,  450,  932,  887,  896,  899,  899,  886,  351,
+      359,  878,  879,  881,  443,  873,  451,  890,  877,  892,
+      890,  452,  890,  867,  885,  875,  874,  450,  454,  913,
+      866,  882,  882,  865,  908,  878,  874,  865,  473,  459,
+      482,  468,  470,  860,  853,  370,  870,  869,  411,  872,
+      857,  868,  865,  395,  406,  471,  463,  447,  435,  484,
+      374,  896,  486,  493,  496,  851,  894,  843,  860,  841,
+      497,  862,  862,  861,  498,  502,  887,  854,  841,  834,
+      851,  838,  852,  504,  880,  514,  519,  879,  878,  833,
+      842,  845,  845,  832,  460,  479,  824,  825,  827,  524,
+
+      830,  823,  827,  819,  837,  864,  863,  827,  821,  831,
+      827,  858,  533,  813,  534,  806, 1083, 1083,  532,  521,
+      540,  811,  804,  809,  852,  819,  842,  537,  548,  849,
+      543,  551,  541,  506,  513,  515,  552,  555,  560,  556,
+      848,  563,  561,  564,  569,  847,  800,  816,  816,  799,
+      842,  812,  808,  799,  838,  565,  572,  837,  836,  835,
+      834,  789,  576,  788,  789,  557,  549,  798,  587,  600,
+      790,  783,  787,  779,  797,  824,  823,  787,  781,  791,
+      787,  602,  818,  598,  817,  784,  771,  764,  781,  768,
+      782,  802,  605,  809,  800,  771,  765,  759,  763,  756,
+
+      770,  770,  607,  609,  800,  753,  769,  769,  752,  795,
+      765,  761,  752,  611,  614,  623,  747,  740,  745,  788,
+      755,  618,  620,  755,  754,  737,  752,  738,  736,  739,
+      628,  631,  779,  746,  733,  726,  743,  730,  744,  633,
+      636,  644,  639,  642,  772,  771,  770,  725,  760,  647,
+      739,  738,  721,  736,  718,  731,  729,  655,  650,  658,
+      716,  709,  714,  757,  724,  660,  755,  662,  664,  672,
+      674,  682,  754,  677, 1083,  703,  702,  720,  700,  718,
+      720,  702,  684,  746,  745,  744,  743,  698,  687,  673,
+      696,  680, 1083, 1083,  713, 1083,  712,  684,  632,  651,
+
+      691,  632,  583,  693,  701,  696, 1083,  539,  524, 1083,
+      539,  699,  703,  705,  707,  709, 1083, 1083,  377,  403,
+      309,  711,  713,  108, 1083,  715,  717,  719,  721,  723,
+      725, 1083, 1083, 1083, 1083,  733,  735,   73,  737
     } ;
 
-static yyconst short int yy_def[572] =
+static yyconst short int yy_def[640] =
     {   0,
-      571,    1,  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,  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,  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,  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,
-      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,  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,  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,  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,  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,
-      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,  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,
-        0
+      635,    1,  635,  635,  635,  635,  635,  636,  636,  636,
+      636,   10,   10,   10,   10,  636,   10,   10,   10,   10,
+      636,  636,  636,   13,  635,  637,  637,  637,  637,  637,
+      637,  637,  637,  637,  637,  637,  637,  637,  637,  637,
+      637,  637,  635,  635,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,  637,  637,  637,  637,  637,  637,
+      637,  637,  637,  637,  635,  635,  635,  638,  638,  638,
+      635,  635,  638,  638,  635,  638,  638,  635,  635,  638,
+      638,  638,  635,  635,  638,  638,  635,  635,  638,  635,
+      635,  638,  638,  635,  635,  635,  635,  635,  638,  635,
+
+      635,  635,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,    0,  635,  635,  635,  635
     } ;
 
-static yyconst short int yy_nxt[907] =
+static yyconst short int yy_nxt[1136] =
     {   0,
-        4,    4,    5,    6,    4,    7,    4,    8,    8,    4,
-        9,    4,   10,   11,   12,   13,   14,   15,   16,   17,
-       18,   19,   20,   20,   21,   22,   23,   24,   25,   25,
-       26,   27,   28,   25,   29,   30,   31,   31,   32,   32,
-       60,   81,   48,   33,   34,   35,   55,   36,  159,   37,
-       38,  160,   39,   61,   82,   40,   41,   49,   42,   58,
-       50,   56,  161,   43,   45,   63,   44,   76,   46,   46,
-       47,   47,   51,   65,   59,   52,   66,   53,   69,   73,
-       64,   70,   77,   74,   78,   85,   87,   87,   79,   88,
-       88,   67,   71,   68,   50,   55,   72,   58,   63,   66,
-
-       86,   70,   76,   85,   80,   97,   97,  138,  138,   52,
-       56,  144,   59,   64,   67,  154,   72,   77,   86,   45,
-       45,  118,  120,  119,   46,   46,  139,  139,  121,  140,
-       89,  145,  154,   90,  141,   91,  154,  154,  154,   92,
-      154,  154,   93,   94,   95,  154,  156,  157,   96,  150,
-      150,  151,  151,  154,  159,  155,  164,  160,  165,  159,
-      154,  154,  160,  159,  159,  158,  160,  160,  166,  162,
-      159,  175,  175,  160,  163,  167,  159,  171,  168,  160,
-      176,  176,  182,  184,  183,  189,  190,  150,  150,  185,
-      169,  170,  172,  219,  219,  154,  219,  219,  219,  173,
-
-      174,  193,  193,  159,  219,  219,  219,  219,  541,  198,
-      198,  222,  220,  219,  199,  219,  297,  200,  298,  201,
-      227,  226,  563,  202,  338,  221,  203,  204,  205,  224,
-      228,  225,  206,  223,  230,  231,  231,  243,  229,  232,
-      232,  235,  244,  241,  236,  247,  219,  237,  237,  242,
-      242,  275,  264,  265,  275,  340,  235,  276,  276,  562,
-      277,  277,  280,  281,  235,  248,  299,  236,  241,  561,
-      159,  159,  300,  160,  160,  159,  311,  311,  160,  284,
-      312,  312,  285,  275,  286,  321,  321,  338,  287,  320,
-      320,  288,  289,  290,  275,  324,  324,  291,  325,  325,
-
-      321,  321,  328,  332,  338,  338,  339,  329,  338,  338,
-      338,  338,  338,  338,  338,  159,  394,  394,  160,  341,
-      376,  555,  355,  333,  346,  345,  377,  347,  356,  356,
-      355,  554,  374,  342,  375,  553,  357,  357,  348,  343,
-      363,  363,  364,  344,  349,  365,  406,  365,  366,  338,
-      366,  367,  367,  368,  368,  381,  381,  159,  159,  355,
-      160,  160,  355,  399,  399,  393,  393,  406,  394,  394,
-      365,  405,  405,  365,  406,  406,  366,  408,  406,  405,
-      405,  406,  409,  406,  406,  406,  400,  406,  159,  406,
-      540,  160,  406,  401,  407,  431,  431,  414,  413,  402,
-
-      403,  434,  410,  404,  415,  418,  458,  458,  419,  411,
-      416,  420,  420,  436,  537,  412,  541,  417,  428,  428,
-      429,  435,  365,  406,  542,  366,  437,  418,  418,  439,
-      440,  419,  547,  450,  451,  467,  467,  468,  468,  476,
-      476,  477,  478,  478,  477,  452,  485,  485,  486,  486,
-      494,  479,  480,  494,  546,  502,  495,  495,  503,  496,
-      496,  504,  504,  477,  505,  505,  502,  507,  507,  503,
-      508,  508,  506,  506,  477,  511,  511,  494,  520,  520,
-      494,  545,  502,  519,  519,  544,  520,  520,  525,  525,
-      526,  526,  527,  527,  502,  502,  502,  503,  503,  503,
-
-      526,  526,  504,  504,  502,  528,  528,  503,  543,  543,
-      506,  506,  536,  536,  537,  539,  539,  540,  548,  548,
-      549,  549,  541,  552,  552,  556,  556,  538,  550,  551,
-      557,  557,  558,  558,  559,  559,  560,  560,  564,  564,
-      565,  565,  566,  566,  567,  567,  568,  568,  568,  568,
-      569,  569,  570,  570,  406,  406,  406,  494,  535,  534,
-      533,  532,  531,  530,  529,  338,  502,  524,  406,  523,
-      522,  521,  518,  517,  516,  515,  514,  513,  512,  510,
-      509,  338,  338,  338,  501,  500,  499,  377,  498,  497,
-      406,  493,  492,  491,  490,  489,  488,  487,  484,  338,
-
-      483,  482,  481,  475,  474,  473,  406,  472,  471,  470,
-      469,  406,  466,  465,  464,  463,  462,  461,  460,  459,
-      219,  429,  457,  456,  455,  300,  454,  453,  338,  452,
-      449,  448,  447,  446,  406,  406,  445,  444,  443,  442,
-      441,  438,  433,  432,  430,  219,  219,  219,  355,  154,
-      427,  426,  425,  338,  424,  423,  422,  421,  338,  406,
-      365,  364,  398,  219,  397,  396,  395,  392,  391,  154,
-      390,  389,  388,  387,  338,  338,  386,  385,  384,  383,
-      382,  380,  379,  378,  373,  372,  371,  370,  369,  154,
-      154,  275,  362,  361,  360,  185,  359,  358,  219,  354,
-
-      353,  352,  351,  154,  350,  338,  337,  336,  335,  334,
-      331,  330,  327,  326,  323,  322,  319,  318,  317,  219,
-      316,  315,  314,  313,  219,  310,  309,  308,  307,  306,
-      305,  304,  121,  303,  302,  301,  296,  295,  294,  293,
-      292,  241,  283,  282,  154,  235,  279,  278,  274,  273,
-      272,  271,  219,  219,  270,  269,  268,  267,  266,  263,
-      262,  261,  260,  259,  258,  257,  256,  255,  154,  254,
-      253,  252,  251,  250,  249,  246,  245,  240,  239,  238,
-      154,  234,  233,  219,  218,  217,  216,  215,  214,  213,
-      212,  211,  210,  209,  154,  154,  208,  207,  159,  197,
-
-      196,  195,  194,  192,  191,  188,  187,  186,  181,  180,
-      179,  178,  177,  154,  153,  152,  149,  148,  147,  146,
-      143,  142,  137,  136,  135,  134,  133,  132,  131,  130,
-      129,  128,  127,  126,  125,  124,  123,  122,  117,  116,
-      115,  114,  113,  112,  111,  110,  109,  108,  107,  106,
-      105,  104,  103,  102,  101,  100,   99,   98,   83,   74,
-       62,   54,   84,   83,   75,   62,   57,   54,  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
+        4,    4,    4,    5,    4,    6,    4,    7,    7,    4,
+        8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
+       18,   19,   20,   21,   22,   23,   24,   25,    4,   26,
+       27,   28,   29,   30,   31,   32,   33,   27,   34,   27,
+       27,   35,   36,   37,   38,   27,   39,   40,   41,   27,
+       42,   27,   43,   43,   44,   44,  118,   45,   46,   47,
+       46,   48,   46,   49,   50,   46,   51,   52,   46,   53,
+       46,   46,   54,   46,  147,  119,   55,   56,   57,   56,
+       58,   56,   59,   60,   56,   56,   56,   56,   61,   62,
+       56,   63,   56,   56,   56,   64,   56,   56,   56,   65,
+
+       69,  216,   73,   66,   66,   67,   67,  635,   75,  605,
+       70,  635,   74,   83,   76,   68,   68,   81,  204,  635,
+       68,   80,  205,  635,   77,   68,   68,   82,  635,   85,
+       89,   71,   84,  635,   68,   72,   78,  635,   94,   86,
+       99,   92,   95,  100,   68,   87,   97,  232,   79,  101,
+       90,   93,   91,  635,  635,  635,  104,   96,   98,   88,
+      635,  102,  108,  111,  635,  116,  113,  127,  105,  305,
+      106,  120,  107,  306,  121,  132,  109,  112,  114,  117,
+      124,  128,  129,  125,   69,  122,  130,  133,  123,  136,
+      136,  137,  137,   68,   70,   76,   68,   81,   85,   68,
+
+       92,  131,   80,   68,   68,   77,   68,   82,   86,   89,
+       93,  104,  108,  111,   68,   99,  116,  121,  127,  146,
+      146,  163,  208,  164,   65,  106,  109,  112,   66,   66,
+      117,  123,  128,   65,  167,  189,  216,  190,  191,  216,
+      168,  209,  138,  216,  192,  139,  216,  140,  202,  202,
+      141,  142,  143,  144,  216,  145,  203,  203,  216,  216,
+      221,  138,  216,  222,  139,  221,  140,  216,  222,  216,
+      141,  216,  217,  142,  143,  144,  216,  216,  145,  214,
+      214,  215,  215,  216,  216,  221,  218,  220,  222,  227,
+      219,  223,  221,  224,  226,  222,  228,  221,  221,  229,
+
+      222,  222,  221,  221,  225,  222,  222,  217,  219,  216,
+      216,  230,  216,  283,  216,  216,  221,  221,  627,  222,
+      222,  216,  221,  233,  218,  222,  221,  220,  246,  222,
+      247,  224,  231,  223,  221,  221,  283,  222,  222,  239,
+      239,  234,  226,  235,  236,  227,  229,  228,  240,  240,
+      248,  253,  254,  233,  230,  216,  249,  214,  214,  225,
+      285,  255,  255,  283,  231,  283,  283,  232,  283,  283,
+      234,  309,  284,  283,  283,  400,  236,  283,  283,  235,
+      221,  295,  295,  296,  296,  297,  260,  260,  298,  261,
+      310,  359,  262,  360,  263,  286,  400,  264,  265,  266,
+
+      267,  290,  268,  291,  361,  408,  292,  400,  261,  287,
+      362,  262,  626,  263,  390,  288,  289,  264,  391,  293,
+      265,  266,  267,  297,  294,  268,  298,  303,  625,  299,
+      299,  283,  401,  304,  304,  339,  400,  328,  329,  339,
+      394,  340,  340,  297,  221,  341,  341,  222,  400,  342,
+      343,  303,  221,  221,  402,  222,  222,  375,  375,  395,
+      346,  376,  376,  347,  400,  348,  385,  385,  349,  350,
+      351,  352,  400,  353,  339,  386,  386,  387,  387,  346,
+      384,  384,  347,  339,  348,  400,  406,  400,  349,  385,
+      385,  350,  351,  352,  400,  405,  353,  400,  221,  419,
+
+      438,  222,  439,  419,  403,  420,  420,  470,  404,  421,
+      421,  427,  427,  428,  470,  429,  470,  407,  430,  409,
+      429,  431,  431,  430,  440,  400,  432,  432,  458,  458,
+      441,  445,  445,  419,  221,  221,  410,  222,  222,  457,
+      457,  419,  470,  411,  463,  463,  473,  458,  458,  429,
+      469,  469,  429,  470,  472,  430,  470,  470,  469,  469,
+      474,  470,  470,  464,  470,  470,  221,  465,  619,  222,
+      482,  466,  467,  483,  468,  618,  484,  484,  471,  492,
+      492,  493,  464,  495,  495,  500,  498,  478,  429,  465,
+      617,  430,  604,  477,  466,  467,  479,  501,  468,  482,
+
+      475,  470,  483,  482,  480,  499,  476,  503,  504,  514,
+      515,  481,  522,  522,  531,  531,  532,  532,  540,  540,
+      541,  542,  542,  541,  516,  549,  549,  550,  550,  558,
+      543,  544,  558,  470,  566,  559,  559,  567,  560,  560,
+      568,  568,  541,  569,  569,  566,  571,  571,  567,  572,
+      572,  570,  570,  541,  575,  575,  558,  584,  584,  558,
+      601,  566,  583,  583,  611,  584,  584,  589,  589,  590,
+      590,  591,  591,  566,  566,  566,  567,  567,  567,  590,
+      590,  568,  568,  566,  592,  592,  567,  607,  607,  570,
+      570,  600,  600,  601,  603,  603,  604,  605,  612,  612,
+
+      613,  613,  605,  616,  616,  606,  620,  620,  614,  615,
+      621,  621,  622,  622,  623,  623,  624,  624,  628,  628,
+      629,  629,  630,  630,  631,  631,  632,  632,  632,  632,
+      633,  633,  634,  634,   68,  610,   68,  103,  103,  147,
+      147,  609,  608,  602,  470,  470,  470,  558,  599,  598,
+      597,  596,  595,  594,  593,  400,  566,  588,  470,  587,
+      586,  585,  582,  581,  580,  579,  578,  577,  576,  574,
+      573,  400,  400,  400,  565,  564,  563,  441,  562,  561,
+      470,  557,  556,  555,  554,  553,  552,  551,  548,  400,
+      547,  546,  545,  539,  538,  537,  470,  536,  535,  534,
+
+      533,  470,  530,  529,  528,  527,  526,  525,  524,  523,
+      283,  493,  521,  520,  519,  362,  518,  517,  400,  516,
+      513,  512,  511,  510,  470,  470,  509,  508,  507,  506,
+      505,  502,  497,  496,  494,  283,  283,  283,  419,  216,
+      491,  490,  489,  400,  488,  487,  486,  485,  400,  470,
+      429,  428,  462,  283,  461,  460,  459,  456,  455,  216,
+      454,  453,  452,  451,  400,  400,  450,  449,  448,  447,
+      446,  444,  443,  442,  437,  436,  435,  434,  433,  216,
+      216,  339,  426,  425,  424,  249,  423,  422,  283,  418,
+      417,  416,  415,  414,  413,  216,  412,  400,  399,  398,
+
+      397,  396,  393,  392,  389,  388,  383,  382,  381,  283,
+      380,  379,  378,  377,  283,  374,  373,  372,  371,  370,
+      369,  368,  367,  366,  168,  365,  364,  363,  358,  357,
+      356,  355,  354,  303,  345,  344,  216,  297,  338,  337,
+      336,  335,  283,  283,  334,  333,  332,  331,  330,  327,
+      326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
+      216,  316,  315,  314,  313,  312,  311,  308,  307,  302,
+      301,  300,  216,  283,  282,  281,  280,  279,  278,  277,
+      276,  275,  274,  273,  272,  271,  216,  216,  270,  269,
+      221,  259,  258,  257,  256,  252,  251,  250,  245,  244,
+
+      243,  242,  241,  216,  238,  237,  216,  213,  212,  211,
+      210,  207,  206,  201,  200,  199,  198,  197,  196,  174,
+      173,  195,  170,  194,  166,  193,  165,  188,  161,  160,
+      159,  187,  186,  156,  155,  185,  153,  152,  184,  149,
+      183,  148,  182,  181,  180,  179,  178,  177,  176,  175,
+      174,  173,  172,  171,  170,  169,  166,  165,  162,  161,
+      160,  159,  158,  157,  156,  155,  154,  153,  152,  151,
+      150,  149,  148,  134,  125,  115,  135,  134,  126,  115,
+      110,  635,    3,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635
     } ;
 
-static yyconst short int yy_chk[907] =
+static yyconst short int yy_chk[1136] =
     {   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,    6,    6,    7,    7,
-       15,   27,    9,    7,    7,    7,   12,    7,  111,    7,
-        7,  111,    7,   15,   27,    7,    7,    9,    7,   14,
-       10,   12,  111,    7,    8,   17,    7,   24,    8,    8,
-        8,    8,   10,   19,   14,   10,   19,   10,   21,   22,
-       17,   21,   24,   22,   26,   30,   31,   31,   26,   32,
-       32,   19,   21,   19,   33,   35,   21,   36,   38,   39,
-
-       30,   40,   42,   44,   26,   46,   46,   87,   87,   33,
-       35,   92,   36,   38,   39,  103,   40,   42,   44,   45,
-       47,   68,   69,   68,   47,   47,   88,   88,   69,   89,
-       45,   92,  107,   45,   89,   45,  101,  110,  115,   45,
-      118,  119,   45,   45,   45,  120,  103,  107,   45,   97,
-       97,   97,   97,  127,  123,  101,  119,  123,  120,  130,
-      125,  131,  130,  132,  133,  110,  132,  133,  123,  115,
-      134,  138,  138,  134,  118,  125,  135,  132,  127,  135,
-      139,  139,  145,  146,  145,  150,  150,  151,  151,  146,
-      130,  131,  133,  177,  178,  154,  179,  182,  181,  134,
-
-      135,  154,  154,  159,  188,  180,  183,  184,  560,  159,
-      159,  179,  177,  187,  159,  186,  248,  159,  248,  159,
-      184,  183,  557,  159,  293,  178,  159,  159,  159,  181,
-      186,  182,  159,  180,  188,  189,  189,  199,  187,  190,
-      190,  193,  199,  198,  193,  202,  219,  193,  193,  198,
-      198,  231,  219,  219,  232,  293,  235,  231,  231,  556,
-      232,  232,  235,  235,  237,  202,  249,  237,  241,  555,
-      253,  255,  249,  253,  255,  260,  264,  264,  260,  241,
-      265,  265,  241,  275,  241,  276,  276,  292,  241,  275,
-      275,  241,  241,  241,  277,  280,  280,  241,  281,  281,
-
-      277,  277,  284,  287,  294,  295,  292,  284,  296,  297,
-      298,  299,  301,  302,  303,  309,  356,  356,  309,  294,
-      334,  547,  311,  287,  299,  298,  334,  301,  311,  311,
-      312,  545,  333,  295,  333,  544,  312,  312,  302,  296,
-      320,  320,  320,  297,  303,  324,  370,  325,  324,  338,
-      325,  324,  324,  325,  325,  338,  338,  351,  353,  355,
-      351,  353,  357,  364,  364,  355,  355,  371,  357,  357,
-      365,  367,  367,  368,  372,  369,  368,  370,  373,  368,
-      368,  374,  371,  375,  376,  379,  365,  380,  392,  378,
-      539,  392,  538,  365,  369,  399,  399,  376,  375,  365,
-
-      365,  402,  372,  365,  378,  381,  429,  429,  381,  373,
-      379,  381,  381,  403,  536,  374,  527,  380,  393,  393,
-      393,  402,  405,  406,  527,  405,  403,  418,  420,  406,
-      406,  420,  535,  418,  418,  439,  439,  440,  440,  450,
-      450,  450,  451,  451,  451,  452,  458,  458,  459,  459,
-      467,  452,  452,  468,  534,  476,  467,  467,  476,  468,
-      468,  476,  476,  476,  477,  477,  478,  479,  479,  478,
-      480,  480,  478,  478,  478,  486,  486,  494,  495,  495,
-      496,  533,  502,  494,  494,  531,  496,  496,  502,  502,
-      504,  504,  505,  505,  506,  526,  507,  506,  526,  507,
-
-      506,  506,  507,  507,  508,  510,  510,  508,  528,  528,
-      508,  508,  519,  519,  519,  525,  525,  525,  537,  537,
-      540,  540,  541,  542,  542,  548,  548,  524,  541,  541,
-      549,  549,  550,  550,  551,  551,  552,  552,  558,  558,
-      559,  559,  562,  562,  563,  563,  564,  564,  565,  565,
-      566,  566,  567,  567,  523,  522,  521,  520,  518,  517,
-      516,  515,  514,  513,  512,  509,  503,  501,  500,  499,
-      498,  497,  493,  492,  491,  490,  489,  488,  487,  485,
-      484,  483,  482,  481,  475,  474,  473,  472,  471,  470,
-      469,  466,  465,  464,  463,  462,  461,  460,  457,  456,
-
-      455,  454,  453,  449,  448,  447,  446,  445,  444,  443,
-      442,  441,  438,  437,  436,  435,  434,  433,  432,  431,
-      430,  428,  427,  426,  425,  424,  423,  422,  421,  419,
-      417,  416,  415,  414,  413,  412,  411,  410,  409,  408,
-      407,  404,  401,  400,  398,  397,  396,  395,  394,  391,
-      390,  389,  388,  387,  386,  385,  384,  383,  382,  377,
-      366,  363,  362,  361,  360,  359,  358,  354,  352,  350,
-      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  337,  336,  335,  332,  331,  330,  329,  328,  327,
-      326,  321,  319,  318,  317,  316,  315,  314,  313,  310,
-
-      308,  307,  306,  305,  304,  300,  291,  290,  289,  288,
-      286,  285,  283,  282,  279,  278,  274,  273,  272,  271,
-      270,  269,  268,  267,  266,  263,  262,  261,  259,  258,
-      257,  256,  254,  252,  251,  250,  247,  246,  245,  244,
-      243,  242,  240,  239,  238,  236,  234,  233,  230,  229,
-      228,  227,  226,  225,  224,  223,  222,  221,  220,  218,
-      217,  216,  215,  214,  213,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  203,  201,  200,  197,  196,  195,
-      194,  192,  191,  185,  174,  173,  172,  171,  170,  169,
-      168,  167,  166,  165,  164,  163,  162,  161,  160,  158,
-
-      157,  156,  155,  153,  152,  149,  148,  147,  144,  143,
-      142,  141,  140,  121,   99,   98,   96,   95,   94,   93,
-       91,   90,   86,   85,   84,   82,   81,   80,   79,   78,
-       77,   76,   75,   74,   73,   72,   71,   70,   67,   66,
-       65,   64,   63,   62,   61,   60,   59,   58,   57,   56,
-       55,   54,   53,   52,   51,   50,   49,   48,   43,   41,
-       37,   34,   29,   28,   23,   16,   13,   11,    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
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    5,    5,    6,    6,   34,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,  638,   34,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    7,
+
+        8,  176,   10,    7,    7,    7,    7,    9,   11,  624,
+        8,    9,   10,   16,   12,   14,   13,   15,  138,   11,
+       18,   14,  138,   11,   12,   14,   13,   15,   16,   17,
+       18,    8,   16,   10,   19,    8,   13,   10,   21,   17,
+       23,   20,   21,   24,   19,   17,   22,  176,   13,   25,
+       18,   20,   19,   21,   22,   24,   26,   21,   22,   17,
+       23,   25,   28,   30,   23,   33,   31,   38,   26,  261,
+       26,   35,   26,  261,   35,   40,   28,   30,   31,   33,
+       36,   38,   39,   36,   45,   35,   39,   40,   35,   43,
+       43,   44,   44,   46,   45,   48,   49,   50,   51,   52,
+
+       53,   39,   49,   46,   54,   48,   49,   50,   51,   52,
+       53,   55,   57,   58,   54,   54,   60,   61,   63,   66,
+       66,   84,  141,   84,   67,   55,   57,   58,   67,   67,
+       60,   61,   63,   65,   87,  119,  150,  119,  120,  151,
+       87,  141,   65,  157,  120,   65,  162,   65,  136,  136,
+       65,   65,   65,   65,  163,   65,  137,  137,  154,  167,
+      158,   65,  164,  158,   65,  169,   65,  171,  169,  172,
+       65,  183,  150,   65,   65,   65,  185,  184,   65,  146,
+      146,  146,  146,  186,  188,  175,  151,  157,  175,  167,
+      154,  158,  177,  162,  164,  177,  169,  178,  179,  171,
+
+      178,  179,  187,  180,  163,  187,  180,  183,  185,  189,
+      190,  172,  195,  242,  194,  191,  193,  196,  621,  193,
+      196,  197,  198,  177,  184,  198,  199,  186,  209,  199,
+      209,  188,  175,  187,  200,  201,  241,  200,  201,  202,
+      202,  178,  190,  179,  180,  191,  194,  193,  203,  203,
+      210,  214,  214,  198,  195,  216,  210,  215,  215,  189,
+      242,  216,  216,  243,  196,  244,  246,  197,  245,  247,
+      199,  264,  241,  248,  250,  361,  201,  251,  252,  200,
+      221,  253,  253,  254,  254,  299,  221,  221,  299,  221,
+      264,  310,  221,  310,  221,  243,  354,  221,  221,  221,
+
+      221,  247,  221,  248,  311,  361,  250,  355,  221,  244,
+      311,  221,  620,  221,  346,  245,  246,  221,  346,  251,
+      221,  221,  221,  255,  252,  221,  255,  260,  619,  255,
+      255,  283,  354,  260,  260,  295,  359,  283,  283,  296,
+      349,  295,  295,  297,  315,  296,  296,  315,  358,  297,
+      297,  303,  317,  322,  355,  317,  322,  328,  328,  349,
+      303,  329,  329,  303,  357,  303,  340,  340,  303,  303,
+      303,  303,  356,  303,  339,  342,  342,  343,  343,  303,
+      339,  339,  303,  341,  303,  360,  359,  363,  303,  341,
+      341,  303,  303,  303,  364,  358,  303,  365,  371,  375,
+
+      395,  371,  395,  376,  356,  375,  375,  434,  357,  376,
+      376,  384,  384,  384,  435,  386,  436,  360,  386,  363,
+      387,  386,  386,  387,  396,  400,  387,  387,  420,  420,
+      396,  400,  400,  419,  413,  415,  364,  413,  415,  419,
+      419,  421,  433,  365,  428,  428,  435,  421,  421,  429,
+      431,  431,  432,  437,  434,  432,  438,  440,  432,  432,
+      436,  439,  443,  429,  442,  444,  456,  429,  611,  456,
+      445,  429,  429,  445,  429,  609,  445,  445,  433,  457,
+      457,  457,  429,  463,  463,  467,  466,  440,  469,  429,
+      608,  469,  603,  439,  429,  429,  442,  467,  429,  484,
+
+      437,  470,  484,  482,  443,  466,  438,  470,  470,  482,
+      482,  444,  493,  493,  503,  503,  504,  504,  514,  514,
+      514,  515,  515,  515,  516,  522,  522,  523,  523,  531,
+      516,  516,  532,  602,  540,  531,  531,  540,  532,  532,
+      540,  540,  540,  541,  541,  542,  543,  543,  542,  544,
+      544,  542,  542,  542,  550,  550,  558,  559,  559,  560,
+      600,  566,  558,  558,  599,  560,  560,  566,  566,  568,
+      568,  569,  569,  570,  590,  571,  570,  590,  571,  570,
+      570,  571,  571,  572,  574,  574,  572,  592,  592,  572,
+      572,  583,  583,  583,  589,  589,  589,  591,  601,  601,
+
+      604,  604,  605,  606,  606,  591,  612,  612,  605,  605,
+      613,  613,  614,  614,  615,  615,  616,  616,  622,  622,
+      623,  623,  626,  626,  627,  627,  628,  628,  629,  629,
+      630,  630,  631,  631,  636,  598,  636,  637,  637,  639,
+      639,  597,  595,  588,  587,  586,  585,  584,  582,  581,
+      580,  579,  578,  577,  576,  573,  567,  565,  564,  563,
+      562,  561,  557,  556,  555,  554,  553,  552,  551,  549,
+      548,  547,  546,  545,  539,  538,  537,  536,  535,  534,
+      533,  530,  529,  528,  527,  526,  525,  524,  521,  520,
+      519,  518,  517,  513,  512,  511,  510,  509,  508,  507,
+
+      506,  505,  502,  501,  500,  499,  498,  497,  496,  495,
+      494,  492,  491,  490,  489,  488,  487,  486,  485,  483,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  468,  465,  464,  462,  461,  460,  459,  458,  455,
+      454,  453,  452,  451,  450,  449,  448,  447,  446,  441,
+      430,  427,  426,  425,  424,  423,  422,  416,  414,  412,
+      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
+      401,  399,  398,  397,  394,  393,  392,  391,  390,  389,
+      388,  385,  383,  382,  381,  380,  379,  378,  377,  374,
+      373,  372,  370,  369,  368,  367,  366,  362,  353,  352,
+
+      351,  350,  348,  347,  345,  344,  338,  337,  336,  335,
+      334,  333,  332,  331,  330,  327,  326,  325,  324,  323,
+      321,  320,  319,  318,  316,  314,  313,  312,  309,  308,
+      307,  306,  305,  304,  302,  301,  300,  298,  294,  293,
+      292,  291,  290,  289,  288,  287,  286,  285,  284,  282,
+      281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
+      271,  270,  269,  268,  267,  266,  265,  263,  262,  259,
+      258,  257,  256,  249,  238,  237,  236,  235,  234,  233,
+      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
+      222,  220,  219,  218,  217,  213,  212,  211,  208,  207,
+
+      206,  205,  204,  192,  182,  181,  168,  145,  144,  143,
+      142,  140,  139,  135,  133,  132,  131,  130,  129,  128,
+      127,  126,  125,  124,  123,  122,  121,  118,  117,  116,
+      115,  114,  113,  112,  111,  110,  109,  108,  107,  106,
+      105,  104,  102,  101,  100,   98,   97,   96,   95,   94,
+       93,   92,   91,   90,   89,   88,   86,   85,   83,   82,
+       81,   80,   79,   78,   77,   76,   75,   74,   73,   72,
+       71,   70,   69,   64,   62,   59,   42,   41,   37,   32,
+       29,    3,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
+      635,  635,  635,  635,  635
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -749,12 +819,31 @@ static char *yy_last_accepting_cpos;
 char *yytext;
 #line 1 "dtimep.lex"
 #define INITIAL 0
-#line 3 "dtimep.lex"
+#line 2 "dtimep.lex"
 #include <h/nmh.h>
 #include <h/tws.h>
 
+  /* Since we're looking at a string at a time, don't worry about
+   *  wrapping to the next buffer.
+   */
+#define yywrap() 1
+#define YY_SKIP_YYWRAP
+
 #define YY_NO_UNPUT
-#define YY_DECL struct tws * dparsetime(char *lexstr)
+
+  /* This is the tricky thing that makes this function cool.  We
+   *  replace the traditional int yylex(void) declaration with our
+   *  dparsetime() declaration, essentially piggy-backing off the
+   *  utility of the yylex() function and adding what we need to make
+   *  the parsing function useful to us.
+   */
+#define YY_DECL struct tws *dparsetime(char *lexstr)
+
+  /* yyerminate() is called after the input string is matched to
+   * completion (actually, when the lexer reaches an EOF).  The only
+   * thing that really needs to be in this macro function is the
+   * return call, which must be substituted inline into dparsetime.
+   */
 
 #define yyterminate() (void)yy_delete_buffer(lexhandle); \
   if(!(tw.tw_flags & TW_SUCC)) { \
@@ -814,8 +903,10 @@ static int month_map[] = {
 };
 
 /*
- * Same trick for day-of-week using the hash function
- *  (c1 & 7) + (c2 & 4)
+ * Lookup table for day-of-week using the same hash trick as for above name-of-
+ * month table, but using the first and second character, not second and third.
+ *
+ * Compute index into table using: (day_name[0] & 7) + (day_name[1] & 4)
  */
 static int day_map[] = {
        0,
@@ -832,44 +923,86 @@ static int day_map[] = {
        3       /*11 - Wed */
 };
 
-#define INIT()   { cp = yytext;}
-#define SETWDAY() { cp++; \
-                   tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
-                   tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
-                   SKIPA(); }
-#define SETMON() { cp++; \
-                   tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; \
-                  SKIPA(); }
+/* The SET* macros will parse for the appropriate field, and leave the
+ * cp pointer at the first character after the desired field. Be
+ * careful with variable-length fields or alpha-num mixes.
+
+ * The SKIP* macros skip over characters of a particular class and
+ * leave cp at the position of the first character that doesn't match
+ * that class. Correspondingly, SKIPTO* skips until it reaches a
+ * character of a particular class.
+ */
+
+#define INIT()       { cp = yytext;} 
+#define SETWDAY()    { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
+                       tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
+                       SKIPA(); }
+#define SETMON()     { cp++; \
+                       tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; \
+                      SKIPA(); }
 #define SETMON_NUM() { tw.tw_mon = atoi(cp)-1; \
-                  SKIPD(); }
-#define SETYEAR() { tw.tw_year = atoi(cp); \
-                  SKIPD(); }
-#define SETDAY() { tw.tw_mday = atoi(cp); \
-                   tw.tw_flags |= TW_YES; \
-                  SKIPD(); }
-#define SETTIME() { tw.tw_hour = atoi(cp); \
-                    cp += 2; \
-                    SKIPTOD(); \
-                    tw.tw_min = atoi(cp); \
-                    cp += 2; \
-                    if(*cp == ':') { tw.tw_sec = atoi(++cp); SKIPD(); } \
-                    }
-#define SETZONE(x) { tw.tw_zone = ((x)/100)*60+(x)%100; \
-                     tw.tw_flags |= TW_SZEXP; \
-                     SKIPD(); }
-#define SETDST()   { tw.tw_flags |= TW_DST; }
-#define SKIPD()  { while ( isdigit(*cp++) ) ; \
-                      --cp; }
-#define SKIPTOD()  { while ( !isdigit(*cp++) ) ; \
-                      --cp; }
-#define SKIPA()  { while ( isalpha(*cp++) ) ; \
-                      --cp; }
-#define SKIPTOA()  { while ( !isalpha(*cp++) ) ; \
-                      --cp; }
-#define SKIPSP()  { while ( isspace(*cp++) ) ; \
-                      --cp; }
-#define SKIPTOSP()  { while ( !isspace(*cp++) ) ; \
-                      --cp; }
+                      SKIPD(); }
+#define SETYEAR()    { tw.tw_year = atoi(cp); \
+                      SKIPD(); }
+#define SETDAY()     { tw.tw_mday = atoi(cp); \
+                       tw.tw_flags |= TW_YES; \
+                      SKIPD(); }
+#define SETTIME()    { tw.tw_hour = atoi(cp); \
+                       cp += 2; \
+                       SKIPTOD(); \
+                       tw.tw_min = atoi(cp); \
+                       cp += 2; \
+                       if(*cp == ':') { \
+                          tw.tw_sec = atoi(++cp); SKIPD(); } }
+#define SETZONE(x)   { tw.tw_zone = ((x)/100)*60+(x)%100; \
+                       tw.tw_flags |= TW_SZEXP; \
+                       SKIPD(); }
+#define SETDST()     { tw.tw_flags |= TW_DST; }
+#define SKIPD()      { while ( isdigit(*cp++) ) ; \
+                       --cp; }
+#define SKIPTOD()    { while ( !isdigit(*cp++) ) ; \
+                       --cp; }
+#define SKIPA()      { while ( isalpha(*cp++) ) ; \
+                       --cp; }
+#define SKIPTOA()    { while ( !isalpha(*cp++) ) ; \
+                       --cp; }
+#define SKIPSP()     { while ( isspace(*cp++) ) ; \
+                       --cp; }
+#define SKIPTOSP()   { while ( !isspace(*cp++) ) ; \
+                       --cp; }
+
+#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
+# ifdef TIME_WITH_SYS_TIME
+#  include <sys/time.h>
+#  include <time.h>
+# else
+#  ifdef HAVE_SYS_TIME_H
+#   include <sys/time.h>
+#  else
+#   include <time.h>
+#  endif
+# endif
+
+static void
+zonehack (struct tws *tw)
+{
+    register struct tm *tm;
+
+    if (dmktime (tw) == (time_t) -1)
+       return;
+
+    tm = localtime (&tw->tw_clock);
+    if (tm->tm_isdst) {
+       tw->tw_flags |= TW_DST;
+       tw->tw_zone -= 60;
+    }
+}
+#endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
+/* The year can either be 2 digits, or 4. However, after
+Y2K, we found that some MUA were reporting the year 100, hence
+the middle term here. yyterminate() resolves the actual
+issues with 2-digit years.
+*/
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1020,16 +1153,19 @@ YY_DECL
        register char *yy_cp = NULL, *yy_bp = NULL;
        register int yy_act;
 
-#line 159 "dtimep.lex"
+#line 222 "dtimep.lex"
 
 
+  /* This section begins the definition of dparsetime().
+     Put here any local variable definitions and initializations */
   
   YY_BUFFER_STATE lexhandle;
 
-  register char *cp;  /* *cp is internal to the lexing function yylex() */
+  register char *cp;
   static struct tws tw; 
 
   memset(&tw,0,sizeof(struct tws));
+
   lexhandle = yy_scan_string(lexstr);
 
 
@@ -1083,13 +1219,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 >= 636 )
                                        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] != 870 );
+               while ( yy_base[yy_current_state] != 1083 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1117,7 +1253,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 171 "dtimep.lex"
+#line 237 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1129,11 +1265,11 @@ YY_RULE_SETUP
                                     SETTIME();
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 184 "dtimep.lex"
+#line 250 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1145,11 +1281,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 196 "dtimep.lex"
+#line 262 "dtimep.lex"
 {
                                      INIT();
                                     SETDAY();
@@ -1159,11 +1295,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 206 "dtimep.lex"
+#line 272 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1175,11 +1311,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 218 "dtimep.lex"
+#line 284 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1189,11 +1325,11 @@ YY_RULE_SETUP
                                     SETDAY();
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 228 "dtimep.lex"
+#line 294 "dtimep.lex"
 {
                                      INIT();
                                     SETMON();
@@ -1203,11 +1339,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOA();
                                     SETWDAY();
-                                  }
+                                     }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 238 "dtimep.lex"
+#line 304 "dtimep.lex"
 {
                                      INIT();
                                     SETMON();
@@ -1215,11 +1351,11 @@ YY_RULE_SETUP
                                     SETDAY();
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 246 "dtimep.lex"
+#line 312 "dtimep.lex"
 {
                                      INIT();
                                     if(europeandate) {
@@ -1237,11 +1373,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 264 "dtimep.lex"
+#line 330 "dtimep.lex"
 {
                                      INIT();
                                     if(europeandate) {
@@ -1257,173 +1393,133 @@ YY_RULE_SETUP
                                     }
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 281 "dtimep.lex"
+#line 347 "dtimep.lex"
 
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 282 "dtimep.lex"
+#line 348 "dtimep.lex"
 tw.tw_hour += 12;
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 284 "dtimep.lex"
+#line 350 "dtimep.lex"
 {
                                     INIT();
                                     SKIPTOD();
                                     SETZONE(atoi(cp));
-                                }
+#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
+                                   zonehack (&tw);
+#endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
+                                   //                              yyterminate();
+                                    }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 289 "dtimep.lex"
+#line 359 "dtimep.lex"
 {
                                     INIT();
                                     SKIPTOD();
                                     SETZONE(-atoi(cp));
-                                }
+#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
+                                   zonehack (&tw);
+#endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
+                                   //                              yyterminate();
+                                   
+                                    }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 294 "dtimep.lex"
+#line 369 "dtimep.lex"
 INIT(); SETZONE(0);
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 295 "dtimep.lex"
+#line 370 "dtimep.lex"
 INIT(); SETZONE(0);
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 296 "dtimep.lex"
-INIT(); SETZONE(200);
+#line 371 "dtimep.lex"
+INIT(); SETZONE(-500);
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 297 "dtimep.lex"
-INIT(); SETDST(); SETZONE(2);
+#line 372 "dtimep.lex"
+INIT(); SETDST(); SETZONE(-500);
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 298 "dtimep.lex"
-INIT(); SETZONE(-500);
+#line 373 "dtimep.lex"
+INIT(); SETZONE(-600);
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 299 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-500);
+#line 374 "dtimep.lex"
+INIT(); SETDST(); SETZONE(-600);
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 300 "dtimep.lex"
-INIT(); SETZONE(-600);
+#line 375 "dtimep.lex"
+INIT(); SETZONE(-700);
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 301 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-600);
+#line 376 "dtimep.lex"
+INIT(); SETDST(); SETZONE(-700);
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 302 "dtimep.lex"
-INIT(); SETZONE(-700);
+#line 377 "dtimep.lex"
+INIT(); SETZONE(-800);
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 303 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-700);
+#line 378 "dtimep.lex"
+INIT(); SETDST(); SETZONE(-800);
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 304 "dtimep.lex"
-INIT(); SETZONE(-800);
+#line 379 "dtimep.lex"
+INIT(); SETZONE(-330);
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 305 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-800);
+#line 380 "dtimep.lex"
+INIT(); SETZONE(-400);
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 306 "dtimep.lex"
-INIT(); SETZONE(-330);
+#line 381 "dtimep.lex"
+INIT(); SETDST(); SETZONE(-400);
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 307 "dtimep.lex"
-INIT(); SETZONE(-400);
+#line 382 "dtimep.lex"
+INIT(); SETZONE(-1000);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 308 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-400);
+#line 383 "dtimep.lex"
+INIT(); SETDST(); SETZONE(-1000);
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 309 "dtimep.lex"
-INIT(); SETZONE(-900);
+#line 384 "dtimep.lex"
+;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 310 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-900);
-       YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 311 "dtimep.lex"
-INIT(); SETZONE(-1000);
-       YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 312 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-1000);
-       YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 313 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-100);
-       YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 314 "dtimep.lex"
-{
-                                       INIT();
-                                       SETZONE(100*(('a'-1) - tolower(*cp)));
-                       }
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 318 "dtimep.lex"
-{
-                                       INIT();
-                                       SETZONE(100*('a' - tolower(*cp)));
-                       }
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 322 "dtimep.lex"
-{
-                                       INIT();
-                                       SETZONE(100*(tolower(*cp) - 'm'));
-                       }
-       YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 328 "dtimep.lex"
+#line 385 "dtimep.lex"
 
        YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 329 "dtimep.lex"
-
-       YY_BREAK
-case 39:
+case 31:
 YY_RULE_SETUP
-#line 333 "dtimep.lex"
+#line 386 "dtimep.lex"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -1717,7 +1813,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 >= 636 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1752,11 +1848,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 >= 636 )
                        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 == 635);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2311,4 +2407,4 @@ int main()
        return 0;
        }
 #endif
-#line 333 "dtimep.lex"
+#line 386 "dtimep.lex"