From: Li Zhou <[email protected]>

Porting the patch from <https://github.com/php/php-src/commit/
5c0455bf2c8cd3c25401407f158e820aa3b239e1> to solve CVE-2017-16642.

Signed-off-by: Li Zhou <[email protected]>
Signed-off-by: Armin Kuster <[email protected]>
(cherry picked from commit 90f4b75fe7313ada0974df47912d1e3c57256ae3)
Signed-off-by: Armin Kuster <[email protected]>
---
 .../php/php-7.1.9/CVE-2017-16642.patch             | 5241 ++++++++++++++++++++
 meta-oe/recipes-devtools/php/php_7.1.9.bb          |    1 +
 2 files changed, 5242 insertions(+)
 create mode 100644 meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch

diff --git a/meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch 
b/meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch
new file mode 100644
index 0000000..41d2a0f
--- /dev/null
+++ b/meta-oe/recipes-devtools/php/php-7.1.9/CVE-2017-16642.patch
@@ -0,0 +1,5241 @@
+From f2f90767311355cafabff604a7a857ca60ee3f01 Mon Sep 17 00:00:00 2001
+From: Li Zhou <[email protected]>
+Date: Wed, 22 Nov 2017 21:14:59 -0800
+Subject: [PATCH] Fixed bug #75055 Out-Of-Bounds Read in timelib_meridian()
+
+Upstream-Status: Backport
+CVE: CVE-2017-16642
+Signed-off-by: Li Zhou <[email protected]>
+---
+ ext/date/lib/parse_date.c         | 1544 +++++++++++++++++++++----------------
+ ext/date/lib/parse_date.re        |    4 +-
+ ext/date/tests/bug53437_var3.phpt |    2 +-
+ ext/wddx/tests/bug75055.phpt      |   20 +
+ ext/wddx/tests/bug75055.wddx      |   13 +
+ 5 files changed, 911 insertions(+), 672 deletions(-)
+ create mode 100644 ext/wddx/tests/bug75055.phpt
+ create mode 100644 ext/wddx/tests/bug75055.wddx
+
+diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
+index f929619..6b11418 100644
+--- a/ext/date/lib/parse_date.c
++++ b/ext/date/lib/parse_date.c
+@@ -1,4 +1,5 @@
+-/* Generated by re2c 0.15.3 on Tue Jul  4 21:15:17 2017 */
++/* Generated by re2c 0.15.3 on Wed Nov 22 21:14:47 2017 */
++#line 1 "ext/date/lib/parse_date.re"
+ /*
+  * The MIT License (MIT)
+  *
+@@ -837,9 +838,11 @@ static int scan(Scanner *s, timelib_tz_get_wrapper 
tz_get_wrapper)
+ std:
+       s->tok = cursor;
+       s->len = 0;
++#line 965 "ext/date/lib/parse_date.re"
+ 
+ 
+ 
++#line 846 "ext/date/lib/parse_date.c"
+ {
+       YYCTYPE yych;
+       unsigned int yyaccept = 0;
+@@ -962,18 +965,19 @@ yy2:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+-                      goto yy1521;
++                      goto yy1523;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych >= 'a') goto yy170;
+               } else {
+-                      if (yych <= 'e') goto yy1530;
++                      if (yych <= 'e') goto yy1532;
+                       if (yych <= 'z') goto yy170;
+               }
+       }
+ yy3:
++#line 1673 "ext/date/lib/parse_date.re"
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("tzcorrection | tz");
+@@ -986,6 +990,7 @@ yy3:
+               TIMELIB_DEINIT;
+               return TIMELIB_TIMEZONE;
+       }
++#line 994 "ext/date/lib/parse_date.c"
+ yy4:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+@@ -995,7 +1000,7 @@ yy4:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy165;
+-                      goto yy1521;
++                      goto yy1523;
+               }
+       } else {
+               if (yych <= 'd') {
+@@ -1003,7 +1008,7 @@ yy4:
+                       if (yych <= '`') goto yy3;
+                       goto yy165;
+               } else {
+-                      if (yych <= 'e') goto yy1521;
++                      if (yych <= 'e') goto yy1523;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+@@ -1017,12 +1022,12 @@ yy5:
+                       goto yy165;
+               } else {
+                       if (yych <= 'H') {
+-                              if (yych <= 'E') goto yy1492;
++                              if (yych <= 'E') goto yy1494;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'I') goto yy1493;
++                              if (yych <= 'I') goto yy1495;
+                               if (yych <= 'N') goto yy165;
+-                              goto yy1491;
++                              goto yy1493;
+                       }
+               }
+       } else {
+@@ -1031,15 +1036,15 @@ yy5:
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'e') goto yy1508;
++                              if (yych == 'e') goto yy1510;
+                               goto yy170;
+                       }
+               } else {
+                       if (yych <= 'n') {
+-                              if (yych <= 'i') goto yy1509;
++                              if (yych <= 'i') goto yy1511;
+                               goto yy170;
+                       } else {
+-                              if (yych <= 'o') goto yy1507;
++                              if (yych <= 'o') goto yy1509;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+@@ -1054,12 +1059,12 @@ yy6:
+                       goto yy165;
+               } else {
+                       if (yych <= 'H') {
+-                              if (yych <= 'E') goto yy1492;
++                              if (yych <= 'E') goto yy1494;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'I') goto yy1493;
++                              if (yych <= 'I') goto yy1495;
+                               if (yych <= 'N') goto yy165;
+-                              goto yy1491;
++                              goto yy1493;
+                       }
+               }
+       } else {
+@@ -1068,15 +1073,15 @@ yy6:
+                               if (yych <= 'Z') goto yy165;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'e') goto yy1492;
++                              if (yych == 'e') goto yy1494;
+                               goto yy165;
+                       }
+               } else {
+                       if (yych <= 'n') {
+-                              if (yych <= 'i') goto yy1493;
++                              if (yych <= 'i') goto yy1495;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'o') goto yy1491;
++                              if (yych <= 'o') goto yy1493;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+@@ -1088,24 +1093,24 @@ yy7:
+               if (yych <= 'A') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+-                      goto yy1461;
++                      goto yy1463;
+               } else {
+-                      if (yych == 'I') goto yy1462;
++                      if (yych == 'I') goto yy1464;
+                       if (yych <= 'N') goto yy165;
+-                      goto yy1463;
++                      goto yy1465;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1476;
++                      if (yych <= 'a') goto yy1478;
+                       goto yy170;
+               } else {
+                       if (yych <= 'n') {
+-                              if (yych <= 'i') goto yy1477;
++                              if (yych <= 'i') goto yy1479;
+                               goto yy170;
+                       } else {
+-                              if (yych <= 'o') goto yy1478;
++                              if (yych <= 'o') goto yy1480;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+@@ -1117,24 +1122,24 @@ yy8:
+               if (yych <= 'A') {
+                       if (yych == ')') goto yy164;
+                       if (yych <= '@') goto yy3;
+-                      goto yy1461;
++                      goto yy1463;
+               } else {
+-                      if (yych == 'I') goto yy1462;
++                      if (yych == 'I') goto yy1464;
+                       if (yych <= 'N') goto yy165;
+-                      goto yy1463;
++                      goto yy1465;
+               }
+       } else {
+               if (yych <= 'h') {
+                       if (yych <= 'Z') goto yy165;
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1461;
++                      if (yych <= 'a') goto yy1463;
+                       goto yy165;
+               } else {
+                       if (yych <= 'n') {
+-                              if (yych <= 'i') goto yy1462;
++                              if (yych <= 'i') goto yy1464;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'o') goto yy1463;
++                              if (yych <= 'o') goto yy1465;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+@@ -1146,15 +1151,15 @@ yy9:
+       switch (yych) {
+       case ')':       goto yy164;
+       case '0':
+-      case '1':       goto yy1391;
+-      case '2':       goto yy1392;
++      case '1':       goto yy1393;
++      case '2':       goto yy1394;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+-      case '9':       goto yy1393;
++      case '9':       goto yy1395;
+       case 'A':
+       case 'B':
+       case 'C':
+@@ -1176,11 +1181,11 @@ yy9:
+       case 'X':
+       case 'Y':
+       case 'Z':       goto yy165;
+-      case 'E':       goto yy1386;
+-      case 'H':       goto yy1387;
+-      case 'O':       goto yy1388;
+-      case 'U':       goto yy1389;
+-      case 'W':       goto yy1390;
++      case 'E':       goto yy1388;
++      case 'H':       goto yy1389;
++      case 'O':       goto yy1390;
++      case 'U':       goto yy1391;
++      case 'W':       goto yy1392;
+       case 'a':
+       case 'b':
+       case 'c':
+@@ -1202,11 +1207,11 @@ yy9:
+       case 'x':
+       case 'y':
+       case 'z':       goto yy170;
+-      case 'e':       goto yy1429;
+-      case 'h':       goto yy1430;
+-      case 'o':       goto yy1431;
+-      case 'u':       goto yy1432;
+-      case 'w':       goto yy1433;
++      case 'e':       goto yy1431;
++      case 'h':       goto yy1432;
++      case 'o':       goto yy1433;
++      case 'u':       goto yy1434;
++      case 'w':       goto yy1435;
+       default:        goto yy3;
+       }
+ yy10:
+@@ -1215,15 +1220,15 @@ yy10:
+       switch (yych) {
+       case ')':       goto yy164;
+       case '0':
+-      case '1':       goto yy1391;
+-      case '2':       goto yy1392;
++      case '1':       goto yy1393;
++      case '2':       goto yy1394;
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+-      case '9':       goto yy1393;
++      case '9':       goto yy1395;
+       case 'A':
+       case 'B':
+       case 'C':
+@@ -1267,28 +1272,30 @@ yy10:
+       case 'y':
+       case 'z':       goto yy165;
+       case 'E':
+-      case 'e':       goto yy1386;
++      case 'e':       goto yy1388;
+       case 'H':
+-      case 'h':       goto yy1387;
++      case 'h':       goto yy1389;
+       case 'O':
+-      case 'o':       goto yy1388;
++      case 'o':       goto yy1390;
+       case 'U':
+-      case 'u':       goto yy1389;
++      case 'u':       goto yy1391;
+       case 'W':
+-      case 'w':       goto yy1390;
++      case 'w':       goto yy1392;
+       default:        goto yy3;
+       }
+ yy11:
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+-      if (yych == '-') goto yy1374;
++      if (yych == '-') goto yy1376;
+       if (yych <= '/') goto yy12;
+-      if (yych <= '9') goto yy1375;
++      if (yych <= '9') goto yy1377;
+ yy12:
++#line 1768 "ext/date/lib/parse_date.re"
+       {
+               add_error(s, "Unexpected character");
+               goto std;
+       }
++#line 1299 "ext/date/lib/parse_date.c"
+ yy13:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+@@ -1299,16 +1306,16 @@ yy13:
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'D') goto yy165;
+-                              goto yy1310;
++                              goto yy1311;
+                       }
+               } else {
+                       if (yych <= 'N') {
+-                              if (yych == 'I') goto yy1311;
++                              if (yych == 'I') goto yy1312;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'O') goto yy1312;
++                              if (yych <= 'O') goto yy1313;
+                               if (yych <= 'Q') goto yy165;
+-                              goto yy1313;
++                              goto yy1314;
+                       }
+               }
+       } else {
+@@ -1318,16 +1325,16 @@ yy13:
+                               if (yych <= '`') goto yy3;
+                               goto yy170;
+                       } else {
+-                              if (yych <= 'e') goto yy1351;
++                              if (yych <= 'e') goto yy1353;
+                               if (yych <= 'h') goto yy170;
+-                              goto yy1352;
++                              goto yy1354;
+                       }
+               } else {
+                       if (yych <= 'q') {
+-                              if (yych == 'o') goto yy1353;
++                              if (yych == 'o') goto yy1355;
+                               goto yy170;
+                       } else {
+-                              if (yych <= 'r') goto yy1354;
++                              if (yych <= 'r') goto yy1356;
+                               if (yych <= 'z') goto yy170;
+                               goto yy3;
+                       }
+@@ -1343,16 +1350,16 @@ yy14:
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'D') goto yy165;
+-                              goto yy1310;
++                              goto yy1311;
+                       }
+               } else {
+                       if (yych <= 'N') {
+-                              if (yych == 'I') goto yy1311;
++                              if (yych == 'I') goto yy1312;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'O') goto yy1312;
++                              if (yych <= 'O') goto yy1313;
+                               if (yych <= 'Q') goto yy165;
+-                              goto yy1313;
++                              goto yy1314;
+                       }
+               }
+       } else {
+@@ -1362,16 +1369,16 @@ yy14:
+                               if (yych <= '`') goto yy3;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'e') goto yy1310;
++                              if (yych <= 'e') goto yy1311;
+                               if (yych <= 'h') goto yy165;
+-                              goto yy1311;
++                              goto yy1312;
+                       }
+               } else {
+                       if (yych <= 'q') {
+-                              if (yych == 'o') goto yy1312;
++                              if (yych == 'o') goto yy1313;
+                               goto yy165;
+                       } else {
+-                              if (yych <= 'r') goto yy1313;
++                              if (yych <= 'r') goto yy1314;
+                               if (yych <= 'z') goto yy165;
+                               goto yy3;
+                       }
+@@ -1382,13 +1389,13 @@ yy15:
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+-              goto yy1296;
++              goto yy1297;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1307;
++                      if (yych <= 'a') goto yy1308;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+@@ -1398,13 +1405,13 @@ yy16:
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+-              goto yy1296;
++              goto yy1297;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1296;
++                      if (yych <= 'a') goto yy1297;
+                       if (yych <= 'z') goto yy165;
+                       goto yy3;
+               }
+@@ -1420,7 +1427,7 @@ yy17:
+                       if (yych <= 'Z') goto yy165;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1293;
++                      if (yych <= 'a') goto yy1294;
+                       if (yych <= 'z') goto yy170;
+                       goto yy3;
+               }
+@@ -2495,18 +2502,22 @@ yy48:
+       if (yych <= '/') goto yy49;
+       if (yych <= '9') goto yy54;
+ yy49:
++#line 1757 "ext/date/lib/parse_date.re"
+       {
+               goto std;
+       }
++#line 2510 "ext/date/lib/parse_date.c"
+ yy50:
+       yych = *++YYCURSOR;
+       goto yy49;
+ yy51:
+       ++YYCURSOR;
++#line 1762 "ext/date/lib/parse_date.re"
+       {
+               s->pos = cursor; s->line++;
+               goto std;
+       }
++#line 2521 "ext/date/lib/parse_date.c"
+ yy53:
+       yych = *++YYCURSOR;
+       goto yy12;
+@@ -2693,23 +2704,23 @@ yy56:
+                                       }
+                               } else {
+                                       if (yyaccept == 28) {
+-                                              goto yy1377;
++                                              goto yy1379;
+                                       } else {
+-                                              goto yy1415;
++                                              goto yy1417;
+                                       }
+                               }
+                       } else {
+                               if (yyaccept <= 31) {
+                                       if (yyaccept == 30) {
+-                                              goto yy1418;
++                                              goto yy1420;
+                                       } else {
+-                                              goto yy1498;
++                                              goto yy1500;
+                                       }
+                               } else {
+                                       if (yyaccept == 32) {
+-                                              goto yy1506;
++                                              goto yy1508;
+                                       } else {
+-                                              goto yy1529;
++                                              goto yy1531;
+                                       }
+                               }
+                       }
+@@ -2920,6 +2931,7 @@ yy73:
+       if (yych == 'S') goto yy75;
+       if (yych == 's') goto yy75;
+ yy74:
++#line 1741 "ext/date/lib/parse_date.re"
+       {
+               timelib_ull i;
+               DEBUG_OUTPUT("relative");
+@@ -2934,6 +2946,7 @@ yy74:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
++#line 2950 "ext/date/lib/parse_date.c"
+ yy75:
+       yych = *++YYCURSOR;
+       if (yych == 'D') goto yy76;
+@@ -3719,6 +3732,7 @@ yy190:
+               }
+       }
+ yy191:
++#line 1604 "ext/date/lib/parse_date.re"
+       {
+               const timelib_relunit* relunit;
+               DEBUG_OUTPUT("daytext");
+@@ -3735,6 +3749,7 @@ yy191:
+               TIMELIB_DEINIT;
+               return TIMELIB_WEEKDAY;
+       }
++#line 3753 "ext/date/lib/parse_date.c"
+ yy192:
+       yych = *++YYCURSOR;
+       if (yych <= 'K') {
+@@ -4227,6 +4242,7 @@ yy217:
+               }
+       }
+ yy218:
++#line 1663 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("monthtext");
+               TIMELIB_INIT;
+@@ -4235,6 +4251,7 @@ yy218:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_TEXT;
+       }
++#line 4255 "ext/date/lib/parse_date.c"
+ yy219:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23);
+@@ -4469,6 +4486,7 @@ yy231:
+       if (yych == 't') goto yy319;
+       goto yy237;
+ yy232:
++#line 1409 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datetextual | datenoyear");
+@@ -4481,6 +4499,7 @@ yy232:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_TEXT;
+       }
++#line 4503 "ext/date/lib/parse_date.c"
+ yy233:
+       yyaccept = 6;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -4593,6 +4612,7 @@ yy245:
+               if (yych <= ':') goto yy248;
+       }
+ yy246:
++#line 1711 "ext/date/lib/parse_date.re"
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | 
dateshortwithtimelongtz");
+@@ -4621,6 +4641,7 @@ yy246:
+               TIMELIB_DEINIT;
+               return TIMELIB_SHORTDATE_WITH_TIME;
+       }
++#line 4645 "ext/date/lib/parse_date.c"
+ yy247:
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -4893,6 +4914,7 @@ yy269:
+       }
+ yy270:
+       ++YYCURSOR;
++#line 1687 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("dateshortwithtimeshort12 | 
dateshortwithtimelong12");
+               TIMELIB_INIT;
+@@ -4915,6 +4937,7 @@ yy270:
+               TIMELIB_DEINIT;
+               return TIMELIB_SHORTDATE_WITH_TIME;
+       }
++#line 4941 "ext/date/lib/parse_date.c"
+ yy272:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+@@ -5470,6 +5493,7 @@ yy320:
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
++#line 1381 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datenoday");
+@@ -5482,6 +5506,7 @@ yy320:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NO_DAY;
+       }
++#line 5510 "ext/date/lib/parse_date.c"
+ yy323:
+       yych = *++YYCURSOR;
+       if (yych <= '9') {
+@@ -5704,6 +5729,7 @@ yy327:
+       if ((yych = *YYCURSOR) <= '/') goto yy330;
+       if (yych <= '9') goto yy331;
+ yy330:
++#line 1525 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pgtextshort");
+@@ -5716,6 +5742,7 @@ yy330:
+               TIMELIB_DEINIT;
+               return TIMELIB_PG_TEXT;
+       }
++#line 5746 "ext/date/lib/parse_date.c"
+ yy331:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy330;
+@@ -6270,6 +6297,7 @@ yy356:
+               if (yych <= 'z') goto yy167;
+       }
+ yy357:
++#line 1583 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("ago");
+               TIMELIB_INIT;
+@@ -6289,6 +6317,7 @@ yy357:
+               TIMELIB_DEINIT;
+               return TIMELIB_AGO;
+       }
++#line 6321 "ext/date/lib/parse_date.c"
+ yy358:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -8009,6 +8038,7 @@ yy417:
+ yy418:
+       ++YYCURSOR;
+ yy419:
++#line 1286 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | 
dateslash");
+               TIMELIB_INIT;
+@@ -8019,6 +8049,7 @@ yy419:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
++#line 8053 "ext/date/lib/parse_date.c"
+ yy420:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -8641,6 +8672,7 @@ yy439:
+               }
+       }
+ yy440:
++#line 1423 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("datenoyearrev");
+               TIMELIB_INIT;
+@@ -8651,6 +8683,7 @@ yy440:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_TEXT;
+       }
++#line 8687 "ext/date/lib/parse_date.c"
+ yy441:
+       yyaccept = 9;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -8778,6 +8811,7 @@ yy450:
+       }
+ yy452:
+       ++YYCURSOR;
++#line 1141 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
+               TIMELIB_INIT;
+@@ -8793,6 +8827,7 @@ yy452:
+               TIMELIB_DEINIT;
+               return TIMELIB_TIME12;
+       }
++#line 8831 "ext/date/lib/parse_date.c"
+ yy454:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -8803,6 +8838,7 @@ yy454:
+               if (yych <= ':') goto yy457;
+       }
+ yy455:
++#line 1178 "ext/date/lib/parse_date.re"
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
+@@ -8827,6 +8863,7 @@ yy455:
+               TIMELIB_DEINIT;
+               return TIMELIB_TIME24_WITH_ZONE;
+       }
++#line 8867 "ext/date/lib/parse_date.c"
+ yy456:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -9103,6 +9140,7 @@ yy485:
+       }
+ yy487:
+       ++YYCURSOR;
++#line 1158 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("mssqltime");
+               TIMELIB_INIT;
+@@ -9121,6 +9159,7 @@ yy487:
+               TIMELIB_DEINIT;
+               return TIMELIB_TIME24_WITH_ZONE;
+       }
++#line 9163 "ext/date/lib/parse_date.c"
+ yy489:
+       yyaccept = 10;
+       YYMARKER = ++YYCURSOR;
+@@ -9215,6 +9254,7 @@ yy498:
+       if ((yych = *YYCURSOR) <= '/') goto yy499;
+       if (yych <= '9') goto yy505;
+ yy499:
++#line 1340 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datefull");
+@@ -9228,6 +9268,7 @@ yy499:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_FULL;
+       }
++#line 9272 "ext/date/lib/parse_date.c"
+ yy500:
+       yych = *++YYCURSOR;
+       if (yych == 'M') goto yy501;
+@@ -9891,6 +9932,7 @@ yy569:
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
++#line 1355 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("pointed date YYYY");
+               TIMELIB_INIT;
+@@ -9901,6 +9943,7 @@ yy569:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_FULL_POINTED;
+       }
++#line 9947 "ext/date/lib/parse_date.c"
+ yy572:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -9931,6 +9974,7 @@ yy575:
+       if (yych <= '/') goto yy576;
+       if (yych <= '9') goto yy569;
+ yy576:
++#line 1367 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pointed date YY");
+@@ -9943,6 +9987,7 @@ yy576:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_FULL_POINTED;
+       }
++#line 9991 "ext/date/lib/parse_date.c"
+ yy577:
+       yyaccept = 10;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -10538,6 +10583,7 @@ yy620:
+               }
+       }
+ yy621:
++#line 1326 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("gnudateshort");
+@@ -10550,6 +10596,7 @@ yy621:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
++#line 10600 "ext/date/lib/parse_date.c"
+ yy622:
+       yyaccept = 12;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -10645,6 +10692,7 @@ yy630:
+               }
+       }
+ yy631:
++#line 1270 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("americanshort | american");
+@@ -10659,6 +10707,7 @@ yy631:
+               TIMELIB_DEINIT;
+               return TIMELIB_AMERICAN;
+       }
++#line 10711 "ext/date/lib/parse_date.c"
+ yy632:
+       yyaccept = 13;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -10857,6 +10906,7 @@ yy664:
+       if (yych <= '9') goto yy667;
+       if (yych <= ':') goto yy668;
+ yy665:
++#line 1553 "ext/date/lib/parse_date.re"
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("clf");
+@@ -10876,6 +10926,7 @@ yy665:
+               TIMELIB_DEINIT;
+               return TIMELIB_CLF;
+       }
++#line 10930 "ext/date/lib/parse_date.c"
+ yy666:
+       yych = *++YYCURSOR;
+       if (yych <= '5') {
+@@ -11362,6 +11413,7 @@ yy727:
+               if (yych <= 't') goto yy627;
+       }
+ yy728:
++#line 1298 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("iso8601date2");
+@@ -11374,6 +11426,7 @@ yy728:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
++#line 11430 "ext/date/lib/parse_date.c"
+ yy729:
+       yych = *++YYCURSOR;
+       if (yych == 'C') goto yy730;
+@@ -11404,6 +11457,7 @@ yy734:
+       if (yych >= '2') goto yy56;
+ yy735:
+       ++YYCURSOR;
++#line 1539 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pgtextreverse");
+@@ -11416,6 +11470,7 @@ yy735:
+               TIMELIB_DEINIT;
+               return TIMELIB_PG_TEXT;
+       }
++#line 11474 "ext/date/lib/parse_date.c"
+ yy737:
+       yych = *++YYCURSOR;
+       if (yych == 'V') goto yy730;
+@@ -11568,6 +11623,7 @@ yy747:
+               }
+       }
+ yy748:
++#line 1574 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("year4");
+               TIMELIB_INIT;
+@@ -11575,6 +11631,7 @@ yy748:
+               TIMELIB_DEINIT;
+               return TIMELIB_CLF;
+       }
++#line 11635 "ext/date/lib/parse_date.c"
+ yy749:
+       yych = *++YYCURSOR;
+       switch (yych) {
+@@ -11769,6 +11826,7 @@ yy757:
+               if (yych <= 'X') goto yy848;
+       }
+ yy758:
++#line 1395 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("datenodayrev");
+@@ -11781,6 +11839,7 @@ yy758:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NO_DAY;
+       }
++#line 11843 "ext/date/lib/parse_date.c"
+ yy759:
+       yych = *++YYCURSOR;
+       if (yych == 'I') goto yy892;
+@@ -11980,6 +12039,7 @@ yy778:
+       if (yych <= '/') goto yy779;
+       if (yych <= '7') goto yy781;
+ yy779:
++#line 1506 "ext/date/lib/parse_date.re"
+       {
+               timelib_sll w, d;
+               DEBUG_OUTPUT("isoweek");
+@@ -11997,12 +12057,14 @@ yy779:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_WEEK;
+       }
++#line 12061 "ext/date/lib/parse_date.c"
+ yy780:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= '8') goto yy56;
+ yy781:
+       ++YYCURSOR;
++#line 1487 "ext/date/lib/parse_date.re"
+       {
+               timelib_sll w, d;
+               DEBUG_OUTPUT("isoweekday");
+@@ -12020,6 +12082,7 @@ yy781:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_WEEK;
+       }
++#line 12086 "ext/date/lib/parse_date.c"
+ yy783:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+@@ -12085,6 +12148,7 @@ yy785:
+               }
+       }
+ yy786:
++#line 1473 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("pgydotd");
+@@ -12097,6 +12161,7 @@ yy786:
+               TIMELIB_DEINIT;
+               return TIMELIB_PG_YEARDAY;
+       }
++#line 12165 "ext/date/lib/parse_date.c"
+ yy787:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+@@ -12178,6 +12243,7 @@ yy805:
+ yy806:
+       ++YYCURSOR;
+ yy807:
++#line 1447 "ext/date/lib/parse_date.re"
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
+@@ -12202,6 +12268,7 @@ yy807:
+               TIMELIB_DEINIT;
+               return TIMELIB_XMLRPC_SOAP;
+       }
++#line 12272 "ext/date/lib/parse_date.c"
+ yy808:
+       yych = *++YYCURSOR;
+       if (yych <= '2') {
+@@ -12490,6 +12557,7 @@ yy812:
+               }
+       }
+ yy813:
++#line 1435 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("datenocolon");
+               TIMELIB_INIT;
+@@ -12500,6 +12568,7 @@ yy813:
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NOCOLON;
+       }
++#line 12572 "ext/date/lib/parse_date.c"
+ yy814:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+@@ -13293,6 +13362,7 @@ yy937:
+       if (yych <= '/') goto yy938;
+       if (yych <= '9') goto yy960;
+ yy938:
++#line 1312 "ext/date/lib/parse_date.re"
+       {
+               int length = 0;
+               DEBUG_OUTPUT("gnudateshorter");
+@@ -13305,6 +13375,7 @@ yy938:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_DATE;
+       }
++#line 13379 "ext/date/lib/parse_date.c"
+ yy939:
+       yyaccept = 21;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -14303,6 +14374,7 @@ yy1030:
+               }
+       }
+ yy1032:
++#line 1204 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("gnunocolon");
+               TIMELIB_INIT;
+@@ -14324,6 +14396,7 @@ yy1032:
+               TIMELIB_DEINIT;
+               return TIMELIB_GNU_NOCOLON;
+       }
++#line 14400 "ext/date/lib/parse_date.c"
+ yy1033:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy60;
+@@ -14413,6 +14486,7 @@ yy1039:
+               }
+       }
+ yy1040:
++#line 1250 "ext/date/lib/parse_date.re"
+       {
+               int tz_not_found;
+               DEBUG_OUTPUT("iso8601nocolon");
+@@ -14431,6 +14505,7 @@ yy1040:
+               TIMELIB_DEINIT;
+               return TIMELIB_ISO_NOCOLON;
+       }
++#line 14509 "ext/date/lib/parse_date.c"
+ yy1041:
+       yyaccept = 24;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -15362,6 +15437,7 @@ yy1083:
+               }
+       }
+ yy1084:
++#line 1646 "ext/date/lib/parse_date.re"
+       {
+               timelib_sll i;
+               int         behavior = 0;
+@@ -15377,6 +15453,7 @@ yy1084:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
++#line 15457 "ext/date/lib/parse_date.c"
+ yy1085:
+       ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+@@ -15418,6 +15495,7 @@ yy1091:
+       if (yych != 'f') goto yy56;
+ yy1092:
+       ++YYCURSOR;
++#line 1119 "ext/date/lib/parse_date.re"
+       {
+               timelib_sll i;
+               int         behavior = 0;
+@@ -15438,6 +15516,7 @@ yy1092:
+               TIMELIB_DEINIT;
+               return TIMELIB_WEEK_DAY_OF_MONTH;
+       }
++#line 15520 "ext/date/lib/parse_date.c"
+ yy1094:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -15530,6 +15609,7 @@ yy1107:
+               }
+       }
+ yy1108:
++#line 1622 "ext/date/lib/parse_date.re"
+       {
+               timelib_sll i;
+               int         behavior = 0;
+@@ -15552,6 +15632,7 @@ yy1108:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
++#line 15636 "ext/date/lib/parse_date.c"
+ yy1109:
+       yych = *++YYCURSOR;
+       goto yy1084;
+@@ -18206,10 +18287,25 @@ yy1281:
+ yy1283:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+-      if (yych <= '/') goto yy1287;
+-      if (yych <= '9') goto yy1286;
+-      goto yy1287;
++      if (yych <= '@') {
++              if (yych <= 0x1F) {
++                      if (yych == '\t') goto yy1287;
++              } else {
++                      if (yych <= ' ') goto yy1287;
++                      if (yych <= '/') goto yy1284;
++                      if (yych <= '9') goto yy1286;
++              }
++      } else {
++              if (yych <= '`') {
++                      if (yych <= 'A') goto yy1289;
++                      if (yych == 'P') goto yy1289;
++              } else {
++                      if (yych <= 'a') goto yy1289;
++                      if (yych == 'p') goto yy1289;
++              }
++      }
+ yy1284:
++#line 1096 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("backof | frontof");
+               TIMELIB_INIT;
+@@ -18231,66 +18327,104 @@ yy1284:
+               TIMELIB_DEINIT;
+               return TIMELIB_LF_DAY_OF_MONTH;
+       }
++#line 18331 "ext/date/lib/parse_date.c"
+ yy1285:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+-      if (yych <= '/') goto yy1287;
+-      if (yych >= '5') goto yy1287;
++      if (yych <= '@') {
++              if (yych <= 0x1F) {
++                      if (yych == '\t') goto yy1287;
++                      goto yy1284;
++              } else {
++                      if (yych <= ' ') goto yy1287;
++                      if (yych <= '/') goto yy1284;
++                      if (yych >= '5') goto yy1284;
++              }
++      } else {
++              if (yych <= '`') {
++                      if (yych <= 'A') goto yy1289;
++                      if (yych == 'P') goto yy1289;
++                      goto yy1284;
++              } else {
++                      if (yych <= 'a') goto yy1289;
++                      if (yych == 'p') goto yy1289;
++                      goto yy1284;
++              }
++      }
+ yy1286:
+       yyaccept = 27;
+-      YYMARKER = ++YYCURSOR;
++      yych = *(YYMARKER = ++YYCURSOR);
++      if (yych <= 'A') {
++              if (yych <= 0x1F) {
++                      if (yych != '\t') goto yy1284;
++              } else {
++                      if (yych <= ' ') goto yy1287;
++                      if (yych <= '@') goto yy1284;
++                      goto yy1289;
++              }
++      } else {
++              if (yych <= '`') {
++                      if (yych == 'P') goto yy1289;
++                      goto yy1284;
++              } else {
++                      if (yych <= 'a') goto yy1289;
++                      if (yych == 'p') goto yy1289;
++                      goto yy1284;
++              }
++      }
++yy1287:
++      ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+       yych = *YYCURSOR;
+-yy1287:
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+-                      if (yych == '\t') goto yy1286;
+-                      goto yy1284;
++                      if (yych == '\t') goto yy1287;
++                      goto yy56;
+               } else {
+-                      if (yych <= ' ') goto yy1286;
+-                      if (yych <= '@') goto yy1284;
++                      if (yych <= ' ') goto yy1287;
++                      if (yych <= '@') goto yy56;
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych != 'P') goto yy1284;
++                      if (yych != 'P') goto yy56;
+               } else {
+-                      if (yych <= 'a') goto yy1288;
+-                      if (yych != 'p') goto yy1284;
++                      if (yych <= 'a') goto yy1289;
++                      if (yych != 'p') goto yy56;
+               }
+       }
+-yy1288:
++yy1289:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+-              if (yych <= 'M') goto yy1290;
+-              if (yych == 'm') goto yy1290;
++              if (yych <= 'M') goto yy1291;
++              if (yych == 'm') goto yy1291;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+-      if (yych == 'M') goto yy1290;
++      if (yych == 'M') goto yy1291;
+       if (yych != 'm') goto yy56;
+-yy1290:
++yy1291:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+-              if (yych <= 0x00) goto yy1292;
+-              if (yych == '\t') goto yy1292;
++              if (yych <= 0x00) goto yy1293;
++              if (yych == '\t') goto yy1293;
+               goto yy56;
+       } else {
+-              if (yych <= ' ') goto yy1292;
++              if (yych <= ' ') goto yy1293;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+-              if (yych <= 0x00) goto yy1292;
++              if (yych <= 0x00) goto yy1293;
+               if (yych <= 0x08) goto yy56;
+       } else {
+               if (yych != ' ') goto yy56;
+       }
+-yy1292:
++yy1293:
+       yych = *++YYCURSOR;
+       goto yy1284;
+-yy1293:
++yy1294:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'B') {
+@@ -18314,13 +18448,13 @@ yy1293:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'c') goto yy1294;
++                              if (yych <= 'c') goto yy1295;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1294:
++yy1295:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'J') {
+@@ -18344,13 +18478,13 @@ yy1294:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'k') goto yy1295;
++                              if (yych <= 'k') goto yy1296;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1295:
++yy1296:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+@@ -18375,7 +18509,7 @@ yy1295:
+                       goto yy3;
+               }
+       }
+-yy1296:
++yy1297:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+@@ -18391,12 +18525,12 @@ yy1296:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 's') goto yy1297;
++                      if (yych <= 's') goto yy1298;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1297:
++yy1298:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -18412,12 +18546,12 @@ yy1297:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 't') goto yy1298;
++                      if (yych <= 't') goto yy1299;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1298:
++yy1299:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+@@ -18438,19 +18572,19 @@ yy1298:
+                       goto yy3;
+               }
+       }
+-yy1299:
++yy1300:
+       yych = *++YYCURSOR;
+-      if (yych == 'D') goto yy1300;
++      if (yych == 'D') goto yy1301;
+       if (yych != 'd') goto yy1070;
+-yy1300:
++yy1301:
+       yych = *++YYCURSOR;
+-      if (yych == 'A') goto yy1301;
++      if (yych == 'A') goto yy1302;
+       if (yych != 'a') goto yy56;
+-yy1301:
++yy1302:
+       yych = *++YYCURSOR;
+-      if (yych == 'Y') goto yy1302;
++      if (yych == 'Y') goto yy1303;
+       if (yych != 'y') goto yy56;
+-yy1302:
++yy1303:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -18461,14 +18595,15 @@ yy1302:
+               goto yy1084;
+       }
+       yych = *++YYCURSOR;
+-      if (yych == 'O') goto yy1304;
++      if (yych == 'O') goto yy1305;
+       if (yych != 'o') goto yy56;
+-yy1304:
++yy1305:
+       yych = *++YYCURSOR;
+-      if (yych == 'F') goto yy1305;
++      if (yych == 'F') goto yy1306;
+       if (yych != 'f') goto yy56;
+-yy1305:
++yy1306:
+       ++YYCURSOR;
++#line 1079 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("firstdayof | lastdayof");
+               TIMELIB_INIT;
+@@ -18484,7 +18619,8 @@ yy1305:
+               TIMELIB_DEINIT;
+               return TIMELIB_LF_DAY_OF_MONTH;
+       }
+-yy1307:
++#line 18623 "ext/date/lib/parse_date.c"
++yy1308:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -18499,7 +18635,7 @@ yy1307:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'S') goto yy1297;
++                      if (yych <= 'S') goto yy1298;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -18508,13 +18644,13 @@ yy1307:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 's') goto yy1308;
++                              if (yych <= 's') goto yy1309;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1308:
++yy1309:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -18529,7 +18665,7 @@ yy1308:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1298;
++                      if (yych <= 'T') goto yy1299;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -18538,20 +18674,20 @@ yy1308:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 't') goto yy1309;
++                              if (yych <= 't') goto yy1310;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1309:
++yy1310:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy1069;
+                       if (yych <= 0x1F) goto yy3;
+-                      goto yy1299;
++                      goto yy1300;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+@@ -18573,7 +18709,7 @@ yy1309:
+                       }
+               }
+       }
+-yy1310:
++yy1311:
+       yych = *++YYCURSOR;
+       if (yych <= 'B') {
+               if (yych <= ')') {
+@@ -18582,7 +18718,7 @@ yy1310:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'A') goto yy166;
+-                      goto yy1346;
++                      goto yy1348;
+               }
+       } else {
+               if (yych <= 'a') {
+@@ -18590,35 +18726,35 @@ yy1310:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'b') goto yy1346;
++                      if (yych <= 'b') goto yy1348;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1311:
++yy1312:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+-                      if (yych == 'F') goto yy1336;
++                      if (yych == 'F') goto yy1338;
+                       if (yych <= 'Q') goto yy166;
+-                      goto yy1335;
++                      goto yy1337;
+               }
+       } else {
+               if (yych <= 'f') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'e') goto yy166;
+-                      goto yy1336;
++                      goto yy1338;
+               } else {
+-                      if (yych == 'r') goto yy1335;
++                      if (yych == 'r') goto yy1337;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1312:
++yy1313:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= ')') {
+@@ -18627,7 +18763,7 @@ yy1312:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'T') goto yy166;
+-                      goto yy1332;
++                      goto yy1334;
+               }
+       } else {
+               if (yych <= 't') {
+@@ -18635,19 +18771,19 @@ yy1312:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'u') goto yy1332;
++                      if (yych <= 'u') goto yy1334;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1313:
++yy1314:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+-                      if (yych == 'I') goto yy1315;
++                      if (yych == 'I') goto yy1316;
+                       if (yych <= 'N') goto yy166;
+               }
+       } else {
+@@ -18655,14 +18791,14 @@ yy1313:
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'h') goto yy166;
+-                      goto yy1315;
++                      goto yy1316;
+               } else {
+-                      if (yych == 'o') goto yy1314;
++                      if (yych == 'o') goto yy1315;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1314:
++yy1315:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+@@ -18671,7 +18807,7 @@ yy1314:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy167;
+-                      goto yy1318;
++                      goto yy1319;
+               }
+       } else {
+               if (yych <= 'm') {
+@@ -18679,12 +18815,12 @@ yy1314:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'n') goto yy1318;
++                      if (yych <= 'n') goto yy1319;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1315:
++yy1316:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+@@ -18700,12 +18836,12 @@ yy1315:
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'd') goto yy1316;
++                      if (yych <= 'd') goto yy1317;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+-yy1316:
++yy1317:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+@@ -18715,12 +18851,12 @@ yy1316:
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1317;
++                      if (yych <= 'a') goto yy1318;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1317:
++yy1318:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+@@ -18742,7 +18878,7 @@ yy1317:
+                       goto yy3;
+               }
+       }
+-yy1318:
++yy1319:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -18758,16 +18894,16 @@ yy1318:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 't') goto yy1319;
++                      if (yych <= 't') goto yy1320;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1319:
++yy1320:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= ')') {
+-              if (yych == ' ') goto yy1320;
++              if (yych == ' ') goto yy1321;
+               if (yych <= '(') goto yy3;
+               goto yy164;
+       } else {
+@@ -18780,88 +18916,143 @@ yy1319:
+                       goto yy3;
+               }
+       }
+-yy1320:
++yy1321:
+       yych = *++YYCURSOR;
+-      if (yych == 'O') goto yy1321;
++      if (yych == 'O') goto yy1322;
+       if (yych != 'o') goto yy56;
+-yy1321:
++yy1322:
+       yych = *++YYCURSOR;
+-      if (yych == 'F') goto yy1322;
++      if (yych == 'F') goto yy1323;
+       if (yych != 'f') goto yy56;
+-yy1322:
++yy1323:
+       yych = *++YYCURSOR;
+       if (yych != ' ') goto yy56;
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+-      if (yych <= '1') goto yy1324;
+-      if (yych <= '2') goto yy1325;
+-      if (yych <= '9') goto yy1326;
++      if (yych <= '1') goto yy1325;
++      if (yych <= '2') goto yy1326;
++      if (yych <= '9') goto yy1327;
+       goto yy56;
+-yy1324:
+-      yyaccept = 27;
+-      yych = *(YYMARKER = ++YYCURSOR);
+-      if (yych <= '/') goto yy1327;
+-      if (yych <= '9') goto yy1326;
+-      goto yy1327;
+ yy1325:
+       yyaccept = 27;
+       yych = *(YYMARKER = ++YYCURSOR);
+-      if (yych <= '/') goto yy1327;
+-      if (yych >= '5') goto yy1327;
++      if (yych <= '@') {
++              if (yych <= 0x1F) {
++                      if (yych == '\t') goto yy1328;
++                      goto yy1284;
++              } else {
++                      if (yych <= ' ') goto yy1328;
++                      if (yych <= '/') goto yy1284;
++                      if (yych <= '9') goto yy1327;
++                      goto yy1284;
++              }
++      } else {
++              if (yych <= '`') {
++                      if (yych <= 'A') goto yy1330;
++                      if (yych == 'P') goto yy1330;
++                      goto yy1284;
++              } else {
++                      if (yych <= 'a') goto yy1330;
++                      if (yych == 'p') goto yy1330;
++                      goto yy1284;
++              }
++      }
+ yy1326:
+       yyaccept = 27;
+-      YYMARKER = ++YYCURSOR;
+-      if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+-      yych = *YYCURSOR;
++      yych = *(YYMARKER = ++YYCURSOR);
++      if (yych <= '@') {
++              if (yych <= 0x1F) {
++                      if (yych == '\t') goto yy1328;
++                      goto yy1284;
++              } else {
++                      if (yych <= ' ') goto yy1328;
++                      if (yych <= '/') goto yy1284;
++                      if (yych >= '5') goto yy1284;
++              }
++      } else {
++              if (yych <= '`') {
++                      if (yych <= 'A') goto yy1330;
++                      if (yych == 'P') goto yy1330;
++                      goto yy1284;
++              } else {
++                      if (yych <= 'a') goto yy1330;
++                      if (yych == 'p') goto yy1330;
++                      goto yy1284;
++              }
++      }
+ yy1327:
++      yyaccept = 27;
++      yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+               if (yych <= 0x1F) {
+-                      if (yych == '\t') goto yy1326;
+-                      goto yy1284;
++                      if (yych != '\t') goto yy1284;
+               } else {
+-                      if (yych <= ' ') goto yy1326;
++                      if (yych <= ' ') goto yy1328;
+                       if (yych <= '@') goto yy1284;
++                      goto yy1330;
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych != 'P') goto yy1284;
++                      if (yych == 'P') goto yy1330;
++                      goto yy1284;
+               } else {
+-                      if (yych <= 'a') goto yy1328;
+-                      if (yych != 'p') goto yy1284;
++                      if (yych <= 'a') goto yy1330;
++                      if (yych == 'p') goto yy1330;
++                      goto yy1284;
+               }
+       }
+ yy1328:
++      ++YYCURSOR;
++      if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
++      yych = *YYCURSOR;
++      if (yych <= 'A') {
++              if (yych <= 0x1F) {
++                      if (yych == '\t') goto yy1328;
++                      goto yy56;
++              } else {
++                      if (yych <= ' ') goto yy1328;
++                      if (yych <= '@') goto yy56;
++              }
++      } else {
++              if (yych <= '`') {
++                      if (yych != 'P') goto yy56;
++              } else {
++                      if (yych <= 'a') goto yy1330;
++                      if (yych != 'p') goto yy56;
++              }
++      }
++yy1330:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych != '.') goto yy56;
+       } else {
+-              if (yych <= 'M') goto yy1330;
+-              if (yych == 'm') goto yy1330;
++              if (yych <= 'M') goto yy1332;
++              if (yych == 'm') goto yy1332;
+               goto yy56;
+       }
+       yych = *++YYCURSOR;
+-      if (yych == 'M') goto yy1330;
++      if (yych == 'M') goto yy1332;
+       if (yych != 'm') goto yy56;
+-yy1330:
++yy1332:
+       yych = *++YYCURSOR;
+       if (yych <= 0x1F) {
+-              if (yych <= 0x00) goto yy1292;
+-              if (yych == '\t') goto yy1292;
++              if (yych <= 0x00) goto yy1293;
++              if (yych == '\t') goto yy1293;
+               goto yy56;
+       } else {
+-              if (yych <= ' ') goto yy1292;
++              if (yych <= ' ') goto yy1293;
+               if (yych != '.') goto yy56;
+       }
+       yych = *++YYCURSOR;
+       if (yych <= '\t') {
+-              if (yych <= 0x00) goto yy1292;
++              if (yych <= 0x00) goto yy1293;
+               if (yych <= 0x08) goto yy56;
+-              goto yy1292;
++              goto yy1293;
+       } else {
+-              if (yych == ' ') goto yy1292;
++              if (yych == ' ') goto yy1293;
+               goto yy56;
+       }
+-yy1332:
++yy1334:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+@@ -18877,12 +19068,12 @@ yy1332:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'r') goto yy1333;
++                      if (yych <= 'r') goto yy1335;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1333:
++yy1335:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -18898,12 +19089,12 @@ yy1333:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 't') goto yy1334;
++                      if (yych <= 't') goto yy1336;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1334:
++yy1336:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+@@ -18925,7 +19116,7 @@ yy1334:
+                       goto yy3;
+               }
+       }
+-yy1335:
++yy1337:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+@@ -18934,7 +19125,7 @@ yy1335:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'R') goto yy167;
+-                      goto yy1338;
++                      goto yy1340;
+               }
+       } else {
+               if (yych <= 'r') {
+@@ -18942,12 +19133,12 @@ yy1335:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 's') goto yy1338;
++                      if (yych <= 's') goto yy1340;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1336:
++yy1338:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -18963,12 +19154,12 @@ yy1336:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 't') goto yy1337;
++                      if (yych <= 't') goto yy1339;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1337:
++yy1339:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+@@ -18990,7 +19181,7 @@ yy1337:
+                       goto yy3;
+               }
+       }
+-yy1338:
++yy1340:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -19006,12 +19197,12 @@ yy1338:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 't') goto yy1339;
++                      if (yych <= 't') goto yy1341;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1339:
++yy1341:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+@@ -19032,19 +19223,19 @@ yy1339:
+                       goto yy3;
+               }
+       }
+-yy1340:
++yy1342:
+       yych = *++YYCURSOR;
+-      if (yych == 'D') goto yy1341;
++      if (yych == 'D') goto yy1343;
+       if (yych != 'd') goto yy1197;
+-yy1341:
++yy1343:
+       yych = *++YYCURSOR;
+-      if (yych == 'A') goto yy1342;
++      if (yych == 'A') goto yy1344;
+       if (yych != 'a') goto yy56;
+-yy1342:
++yy1344:
+       yych = *++YYCURSOR;
+-      if (yych == 'Y') goto yy1343;
++      if (yych == 'Y') goto yy1345;
+       if (yych != 'y') goto yy56;
+-yy1343:
++yy1345:
+       yyaccept = 25;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -19055,14 +19246,14 @@ yy1343:
+               goto yy1084;
+       }
+       yych = *++YYCURSOR;
+-      if (yych == 'O') goto yy1345;
++      if (yych == 'O') goto yy1347;
+       if (yych != 'o') goto yy56;
+-yy1345:
++yy1347:
+       yych = *++YYCURSOR;
+-      if (yych == 'F') goto yy1305;
+-      if (yych == 'f') goto yy1305;
++      if (yych == 'F') goto yy1306;
++      if (yych == 'f') goto yy1306;
+       goto yy56;
+-yy1346:
++yy1348:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+@@ -19097,13 +19288,13 @@ yy1346:
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+-                              if (yych <= 'r') goto yy1347;
++                              if (yych <= 'r') goto yy1349;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+-yy1347:
++yy1349:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= ')') {
+@@ -19119,12 +19310,12 @@ yy1347:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'u') goto yy1348;
++                      if (yych <= 'u') goto yy1350;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1348:
++yy1350:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+@@ -19134,27 +19325,27 @@ yy1348:
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1349;
++                      if (yych <= 'a') goto yy1351;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1349:
++yy1351:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+-              if (yych <= 'R') goto yy1350;
++              if (yych <= 'R') goto yy1352;
+               if (yych != 'r') goto yy3;
+       }
+-yy1350:
++yy1352:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy229;
+       if (yych == 'y') goto yy229;
+       goto yy56;
+-yy1351:
++yy1353:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+@@ -19169,7 +19360,7 @@ yy1351:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'B') goto yy1346;
++                      if (yych <= 'B') goto yy1348;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19178,13 +19369,13 @@ yy1351:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'b') goto yy1369;
++                              if (yych <= 'b') goto yy1371;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1352:
++yy1354:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -19201,14 +19392,14 @@ yy1352:
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'F') goto yy1336;
++                              if (yych == 'F') goto yy1338;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+-                              if (yych <= 'R') goto yy1335;
++                              if (yych <= 'R') goto yy1337;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+@@ -19216,16 +19407,16 @@ yy1352:
+                       }
+               } else {
+                       if (yych <= 'q') {
+-                              if (yych == 'f') goto yy1365;
++                              if (yych == 'f') goto yy1367;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'r') goto yy1364;
++                              if (yych <= 'r') goto yy1366;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1353:
++yy1355:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+@@ -19240,7 +19431,7 @@ yy1353:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'U') goto yy1332;
++                      if (yych <= 'U') goto yy1334;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19249,13 +19440,13 @@ yy1353:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'u') goto yy1361;
++                              if (yych <= 'u') goto yy1363;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1354:
++yy1356:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+@@ -19272,14 +19463,14 @@ yy1354:
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'I') goto yy1315;
++                              if (yych == 'I') goto yy1316;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+-                              if (yych <= 'O') goto yy1314;
++                              if (yych <= 'O') goto yy1315;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+@@ -19287,16 +19478,16 @@ yy1354:
+                       }
+               } else {
+                       if (yych <= 'n') {
+-                              if (yych == 'i') goto yy1356;
++                              if (yych == 'i') goto yy1358;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'o') goto yy1355;
++                              if (yych <= 'o') goto yy1357;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1355:
++yy1357:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+@@ -19311,7 +19502,7 @@ yy1355:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'N') goto yy1318;
++                      if (yych <= 'N') goto yy1319;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19320,13 +19511,13 @@ yy1355:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'n') goto yy1359;
++                              if (yych <= 'n') goto yy1361;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1356:
++yy1358:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -19341,7 +19532,7 @@ yy1356:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'D') goto yy1316;
++                      if (yych <= 'D') goto yy1317;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+@@ -19350,13 +19541,13 @@ yy1356:
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'd') goto yy1357;
++                              if (yych <= 'd') goto yy1359;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+-yy1357:
++yy1359:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+@@ -19370,18 +19561,18 @@ yy1357:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'A') goto yy1317;
++                      if (yych <= 'A') goto yy1318;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1358;
++                      if (yych <= 'a') goto yy1360;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+-yy1358:
++yy1360:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+@@ -19411,7 +19602,7 @@ yy1358:
+                       }
+               }
+       }
+-yy1359:
++yy1361:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -19426,7 +19617,7 @@ yy1359:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1319;
++                      if (yych <= 'T') goto yy1320;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19435,18 +19626,18 @@ yy1359:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 't') goto yy1360;
++                              if (yych <= 't') goto yy1362;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1360:
++yy1362:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+               if (yych <= '(') {
+-                      if (yych == ' ') goto yy1320;
++                      if (yych == ' ') goto yy1321;
+                       goto yy3;
+               } else {
+                       if (yych <= ')') goto yy164;
+@@ -19466,7 +19657,7 @@ yy1360:
+                       goto yy3;
+               }
+       }
+-yy1361:
++yy1363:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -19481,7 +19672,7 @@ yy1361:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'R') goto yy1333;
++                      if (yych <= 'R') goto yy1335;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19490,13 +19681,13 @@ yy1361:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'r') goto yy1362;
++                              if (yych <= 'r') goto yy1364;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1362:
++yy1364:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -19511,7 +19702,7 @@ yy1362:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1334;
++                      if (yych <= 'T') goto yy1336;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19520,13 +19711,13 @@ yy1362:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 't') goto yy1363;
++                              if (yych <= 't') goto yy1365;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1363:
++yy1365:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -19556,7 +19747,7 @@ yy1363:
+                       }
+               }
+       }
+-yy1364:
++yy1366:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -19571,7 +19762,7 @@ yy1364:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'S') goto yy1338;
++                      if (yych <= 'S') goto yy1340;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19580,13 +19771,13 @@ yy1364:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 's') goto yy1367;
++                              if (yych <= 's') goto yy1369;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1365:
++yy1367:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -19601,7 +19792,7 @@ yy1365:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1337;
++                      if (yych <= 'T') goto yy1339;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19610,13 +19801,13 @@ yy1365:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 't') goto yy1366;
++                              if (yych <= 't') goto yy1368;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1366:
++yy1368:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -19646,7 +19837,7 @@ yy1366:
+                       }
+               }
+       }
+-yy1367:
++yy1369:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -19661,7 +19852,7 @@ yy1367:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1339;
++                      if (yych <= 'T') goto yy1341;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19670,20 +19861,20 @@ yy1367:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 't') goto yy1368;
++                              if (yych <= 't') goto yy1370;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1368:
++yy1370:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+               if (yych <= ' ') {
+                       if (yych == '\t') goto yy1196;
+                       if (yych <= 0x1F) goto yy3;
+-                      goto yy1340;
++                      goto yy1342;
+               } else {
+                       if (yych == ')') goto yy164;
+                       if (yych <= ',') goto yy3;
+@@ -19705,7 +19896,7 @@ yy1368:
+                       }
+               }
+       }
+-yy1369:
++yy1371:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+@@ -19733,7 +19924,7 @@ yy1369:
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+-                              if (yych <= 'R') goto yy1347;
++                              if (yych <= 'R') goto yy1349;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+@@ -19743,13 +19934,13 @@ yy1369:
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'r') goto yy1370;
++                              if (yych <= 'r') goto yy1372;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+-yy1370:
++yy1372:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+@@ -19764,7 +19955,7 @@ yy1370:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'U') goto yy1348;
++                      if (yych <= 'U') goto yy1350;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -19773,13 +19964,13 @@ yy1370:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'u') goto yy1371;
++                              if (yych <= 'u') goto yy1373;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1371:
++yy1373:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+@@ -19793,18 +19984,18 @@ yy1371:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'A') goto yy1349;
++                      if (yych <= 'A') goto yy1351;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1372;
++                      if (yych <= 'a') goto yy1374;
+                       if (yych <= 'z') goto yy177;
+                       goto yy3;
+               }
+       }
+-yy1372:
++yy1374:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -19818,33 +20009,34 @@ yy1372:
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych <= 'R') goto yy1350;
++                      if (yych <= 'R') goto yy1352;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+-                      if (yych == 'r') goto yy1373;
++                      if (yych == 'r') goto yy1375;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+-yy1373:
++yy1375:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy229;
+       if (yych == 'y') goto yy341;
+       goto yy179;
+-yy1374:
++yy1376:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+-yy1375:
++yy1377:
+       yyaccept = 28;
+       YYMARKER = ++YYCURSOR;
+       if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+       yych = *YYCURSOR;
+-      if (yych == '.') goto yy1378;
+-      if (yych <= '/') goto yy1377;
+-      if (yych <= '9') goto yy1375;
+-yy1377:
++      if (yych == '.') goto yy1380;
++      if (yych <= '/') goto yy1379;
++      if (yych <= '9') goto yy1377;
++yy1379:
++#line 1025 "ext/date/lib/parse_date.re"
+       {
+               timelib_ull i;
+ 
+@@ -19869,7 +20061,8 @@ yy1377:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1378:
++#line 20065 "ext/date/lib/parse_date.c"
++yy1380:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+@@ -19889,6 +20082,7 @@ yy1378:
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       ++YYCURSOR;
++#line 1051 "ext/date/lib/parse_date.re"
+       {
+               timelib_ull i, ms;
+ 
+@@ -19915,7 +20109,8 @@ yy1378:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1386:
++#line 20113 "ext/date/lib/parse_date.c"
++yy1388:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+@@ -19924,7 +20119,7 @@ yy1386:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy166;
+-                      goto yy1427;
++                      goto yy1429;
+               }
+       } else {
+               if (yych <= 'm') {
+@@ -19932,58 +20127,58 @@ yy1386:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'n') goto yy1427;
++                      if (yych <= 'n') goto yy1429;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1387:
++yy1389:
+       yych = *++YYCURSOR;
+       if (yych <= 'U') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+-                      if (yych == 'I') goto yy1419;
++                      if (yych == 'I') goto yy1421;
+                       if (yych <= 'T') goto yy166;
+-                      goto yy1420;
++                      goto yy1422;
+               }
+       } else {
+               if (yych <= 'i') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'h') goto yy166;
+-                      goto yy1419;
++                      goto yy1421;
+               } else {
+-                      if (yych == 'u') goto yy1420;
++                      if (yych == 'u') goto yy1422;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1388:
++yy1390:
+       yych = *++YYCURSOR;
+       if (yych <= 'M') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+-                      if (yych == 'D') goto yy1408;
++                      if (yych == 'D') goto yy1410;
+                       if (yych <= 'L') goto yy166;
+-                      goto yy1409;
++                      goto yy1411;
+               }
+       } else {
+               if (yych <= 'd') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'c') goto yy166;
+-                      goto yy1408;
++                      goto yy1410;
+               } else {
+-                      if (yych == 'm') goto yy1409;
++                      if (yych == 'm') goto yy1411;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1389:
++yy1391:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+@@ -19992,7 +20187,7 @@ yy1389:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy166;
+-                      goto yy1404;
++                      goto yy1406;
+               }
+       } else {
+               if (yych <= 'd') {
+@@ -20000,12 +20195,12 @@ yy1389:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'e') goto yy1404;
++                      if (yych <= 'e') goto yy1406;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1390:
++yy1392:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+@@ -20014,7 +20209,7 @@ yy1390:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'D') goto yy166;
+-                      goto yy1400;
++                      goto yy1402;
+               }
+       } else {
+               if (yych <= 'd') {
+@@ -20022,68 +20217,68 @@ yy1390:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'e') goto yy1400;
++                      if (yych <= 'e') goto yy1402;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1391:
++yy1393:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy1029;
+               goto yy56;
+       } else {
+-              if (yych <= '9') goto yy1394;
++              if (yych <= '9') goto yy1396;
+               if (yych <= ':') goto yy1029;
+               goto yy56;
+       }
+-yy1392:
++yy1394:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy1029;
+               goto yy56;
+       } else {
+-              if (yych <= '4') goto yy1394;
++              if (yych <= '4') goto yy1396;
+               if (yych == ':') goto yy1029;
+               goto yy56;
+       }
+-yy1393:
++yy1395:
+       yych = *++YYCURSOR;
+       if (yych == '.') goto yy1029;
+       if (yych == ':') goto yy1029;
+       goto yy56;
+-yy1394:
++yy1396:
+       yych = *++YYCURSOR;
+       if (yych <= '/') {
+               if (yych == '.') goto yy1029;
+               goto yy56;
+       } else {
+-              if (yych <= '5') goto yy1395;
++              if (yych <= '5') goto yy1397;
+               if (yych == ':') goto yy1029;
+               goto yy56;
+       }
+-yy1395:
++yy1397:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+       if (yych >= ':') goto yy56;
+       yyaccept = 23;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') goto yy1032;
+-      if (yych <= '5') goto yy1397;
+-      if (yych <= '6') goto yy1398;
++      if (yych <= '5') goto yy1399;
++      if (yych <= '6') goto yy1400;
+       goto yy1032;
+-yy1397:
++yy1399:
+       yych = *++YYCURSOR;
+       if (yych <= '/') goto yy56;
+-      if (yych <= '9') goto yy1399;
++      if (yych <= '9') goto yy1401;
+       goto yy56;
+-yy1398:
++yy1400:
+       yych = *++YYCURSOR;
+       if (yych != '0') goto yy56;
+-yy1399:
++yy1401:
+       yych = *++YYCURSOR;
+       goto yy1040;
+-yy1400:
++yy1402:
+       yych = *++YYCURSOR;
+       if (yych <= 'L') {
+               if (yych <= ')') {
+@@ -20099,12 +20294,12 @@ yy1400:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'l') goto yy1401;
++                      if (yych <= 'l') goto yy1403;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1401:
++yy1403:
+       yych = *++YYCURSOR;
+       if (yych <= 'F') {
+               if (yych <= ')') {
+@@ -20120,12 +20315,12 @@ yy1401:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'f') goto yy1402;
++                      if (yych <= 'f') goto yy1404;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1402:
++yy1404:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -20141,12 +20336,12 @@ yy1402:
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+-                      if (yych <= 't') goto yy1403;
++                      if (yych <= 't') goto yy1405;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1403:
++yy1405:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -20157,7 +20352,7 @@ yy1403:
+               if (yych == 'h') goto yy1195;
+               goto yy3;
+       }
+-yy1404:
++yy1406:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+@@ -20173,12 +20368,12 @@ yy1404:
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+-                      if (yych <= 's') goto yy1405;
++                      if (yych <= 's') goto yy1407;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+-yy1405:
++yy1407:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+@@ -20194,12 +20389,12 @@ yy1405:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'd') goto yy1406;
++                      if (yych <= 'd') goto yy1408;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1406:
++yy1408:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+@@ -20209,12 +20404,12 @@ yy1406:
+                       if (yych <= 'Z') goto yy169;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1407;
++                      if (yych <= 'a') goto yy1409;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1407:
++yy1409:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych == ')') goto yy164;
+@@ -20224,23 +20419,23 @@ yy1407:
+               if (yych == 'y') goto yy197;
+               goto yy3;
+       }
+-yy1408:
++yy1410:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+               if (yych <= '@') goto yy3;
+-              goto yy1416;
++              goto yy1418;
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') goto yy167;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1416;
++                      if (yych <= 'a') goto yy1418;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1409:
++yy1411:
+       yych = *++YYCURSOR;
+       if (yych <= 'O') {
+               if (yych <= ')') {
+@@ -20256,12 +20451,12 @@ yy1409:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'o') goto yy1410;
++                      if (yych <= 'o') goto yy1412;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1410:
++yy1412:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+@@ -20277,12 +20472,12 @@ yy1410:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'r') goto yy1411;
++                      if (yych <= 'r') goto yy1413;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1411:
++yy1413:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+@@ -20298,28 +20493,29 @@ yy1411:
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+-                      if (yych <= 'r') goto yy1412;
++                      if (yych <= 'r') goto yy1414;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1412:
++yy1414:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+-              if (yych <= 'O') goto yy1413;
++              if (yych <= 'O') goto yy1415;
+               if (yych != 'o') goto yy3;
+       }
+-yy1413:
++yy1415:
+       yych = *++YYCURSOR;
+-      if (yych == 'W') goto yy1414;
++      if (yych == 'W') goto yy1416;
+       if (yych != 'w') goto yy56;
+-yy1414:
++yy1416:
+       ++YYCURSOR;
+-yy1415:
++yy1417:
++#line 1013 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("tomorrow");
+               TIMELIB_INIT;
+@@ -20330,7 +20526,8 @@ yy1415:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1416:
++#line 20530 "ext/date/lib/parse_date.c"
++yy1418:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+@@ -20346,21 +20543,22 @@ yy1416:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'y') goto yy1417;
++                      if (yych <= 'y') goto yy1419;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1417:
++yy1419:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy169;
+-              if (yych <= '`') goto yy1418;
++              if (yych <= '`') goto yy1420;
+               if (yych <= 'z') goto yy169;
+       }
+-yy1418:
++yy1420:
++#line 1003 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("midnight | today");
+               TIMELIB_INIT;
+@@ -20369,7 +20567,8 @@ yy1418:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1419:
++#line 20571 "ext/date/lib/parse_date.c"
++yy1421:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= '@') {
+@@ -20377,8 +20576,8 @@ yy1419:
+                       goto yy3;
+               } else {
+                       if (yych <= 'Q') goto yy167;
+-                      if (yych <= 'R') goto yy1425;
+-                      goto yy1426;
++                      if (yych <= 'R') goto yy1427;
++                      goto yy1428;
+               }
+       } else {
+               if (yych <= 'q') {
+@@ -20386,13 +20585,13 @@ yy1419:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'r') goto yy1425;
+-                      if (yych <= 's') goto yy1426;
++                      if (yych <= 'r') goto yy1427;
++                      if (yych <= 's') goto yy1428;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1420:
++yy1422:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+@@ -20408,12 +20607,12 @@ yy1420:
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'r') goto yy1421;
++                      if (yych <= 'r') goto yy1423;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+-yy1421:
++yy1423:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+@@ -20429,12 +20628,12 @@ yy1421:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 's') goto yy1422;
++                      if (yych <= 's') goto yy1424;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1422:
++yy1424:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+@@ -20450,27 +20649,27 @@ yy1422:
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+-                      if (yych <= 'd') goto yy1423;
++                      if (yych <= 'd') goto yy1425;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1423:
++yy1425:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+-              if (yych <= 'A') goto yy1424;
++              if (yych <= 'A') goto yy1426;
+               if (yych != 'a') goto yy3;
+       }
+-yy1424:
++yy1426:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy197;
+       goto yy56;
+-yy1425:
++yy1427:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+@@ -20492,7 +20691,7 @@ yy1425:
+                       goto yy3;
+               }
+       }
+-yy1426:
++yy1428:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '(') {
+@@ -20514,7 +20713,7 @@ yy1426:
+                       goto yy3;
+               }
+       }
+-yy1427:
++yy1429:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -20530,12 +20729,12 @@ yy1427:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 't') goto yy1428;
++                      if (yych <= 't') goto yy1430;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1428:
++yy1430:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+@@ -20557,7 +20756,7 @@ yy1428:
+                       goto yy3;
+               }
+       }
+-yy1429:
++yy1431:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+@@ -20572,7 +20771,7 @@ yy1429:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'N') goto yy1427;
++                      if (yych <= 'N') goto yy1429;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20581,13 +20780,13 @@ yy1429:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'n') goto yy1459;
++                              if (yych <= 'n') goto yy1461;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1430:
++yy1432:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'T') {
+@@ -20604,14 +20803,14 @@ yy1430:
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'I') goto yy1419;
++                              if (yych == 'I') goto yy1421;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+-                              if (yych <= 'U') goto yy1420;
++                              if (yych <= 'U') goto yy1422;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+@@ -20619,16 +20818,16 @@ yy1430:
+                       }
+               } else {
+                       if (yych <= 't') {
+-                              if (yych == 'i') goto yy1451;
++                              if (yych == 'i') goto yy1453;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'u') goto yy1452;
++                              if (yych <= 'u') goto yy1454;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1431:
++yy1433:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+@@ -20645,14 +20844,14 @@ yy1431:
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'D') goto yy1408;
++                              if (yych == 'D') goto yy1410;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+-                              if (yych <= 'M') goto yy1409;
++                              if (yych <= 'M') goto yy1411;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+@@ -20660,16 +20859,16 @@ yy1431:
+                       }
+               } else {
+                       if (yych <= 'l') {
+-                              if (yych == 'd') goto yy1442;
++                              if (yych == 'd') goto yy1444;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'm') goto yy1443;
++                              if (yych <= 'm') goto yy1445;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1432:
++yy1434:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+@@ -20684,7 +20883,7 @@ yy1432:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'E') goto yy1404;
++                      if (yych <= 'E') goto yy1406;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20693,13 +20892,13 @@ yy1432:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'e') goto yy1438;
++                              if (yych <= 'e') goto yy1440;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1433:
++yy1435:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+@@ -20714,7 +20913,7 @@ yy1433:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'E') goto yy1400;
++                      if (yych <= 'E') goto yy1402;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20723,13 +20922,13 @@ yy1433:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'e') goto yy1434;
++                              if (yych <= 'e') goto yy1436;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1434:
++yy1436:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'K') {
+@@ -20744,7 +20943,7 @@ yy1434:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'L') goto yy1401;
++                      if (yych <= 'L') goto yy1403;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20753,13 +20952,13 @@ yy1434:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'l') goto yy1435;
++                              if (yych <= 'l') goto yy1437;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1435:
++yy1437:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'E') {
+@@ -20774,7 +20973,7 @@ yy1435:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'F') goto yy1402;
++                      if (yych <= 'F') goto yy1404;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20783,13 +20982,13 @@ yy1435:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'f') goto yy1436;
++                              if (yych <= 'f') goto yy1438;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1436:
++yy1438:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -20804,7 +21003,7 @@ yy1436:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1403;
++                      if (yych <= 'T') goto yy1405;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20813,13 +21012,13 @@ yy1436:
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+-                              if (yych <= 't') goto yy1437;
++                              if (yych <= 't') goto yy1439;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1437:
++yy1439:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -20842,7 +21041,7 @@ yy1437:
+                       goto yy3;
+               }
+       }
+-yy1438:
++yy1440:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -20857,7 +21056,7 @@ yy1438:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'S') goto yy1405;
++                      if (yych <= 'S') goto yy1407;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+@@ -20866,13 +21065,13 @@ yy1438:
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 's') goto yy1439;
++                              if (yych <= 's') goto yy1441;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+-yy1439:
++yy1441:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -20887,7 +21086,7 @@ yy1439:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'D') goto yy1406;
++                      if (yych <= 'D') goto yy1408;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20896,13 +21095,13 @@ yy1439:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'd') goto yy1440;
++                              if (yych <= 'd') goto yy1442;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1440:
++yy1442:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+@@ -20916,18 +21115,18 @@ yy1440:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'A') goto yy1407;
++                      if (yych <= 'A') goto yy1409;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1441;
++                      if (yych <= 'a') goto yy1443;
+                       if (yych <= 'z') goto yy177;
+                       goto yy3;
+               }
+       }
+-yy1441:
++yy1443:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+@@ -20950,7 +21149,7 @@ yy1441:
+                       goto yy3;
+               }
+       }
+-yy1442:
++yy1444:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+@@ -20964,18 +21163,18 @@ yy1442:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'A') goto yy1416;
++                      if (yych <= 'A') goto yy1418;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1449;
++                      if (yych <= 'a') goto yy1451;
+                       if (yych <= 'z') goto yy175;
+                       goto yy3;
+               }
+       }
+-yy1443:
++yy1445:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+@@ -20990,7 +21189,7 @@ yy1443:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'O') goto yy1410;
++                      if (yych <= 'O') goto yy1412;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -20999,13 +21198,13 @@ yy1443:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'o') goto yy1444;
++                              if (yych <= 'o') goto yy1446;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1444:
++yy1446:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -21020,7 +21219,7 @@ yy1444:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'R') goto yy1411;
++                      if (yych <= 'R') goto yy1413;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21029,13 +21228,13 @@ yy1444:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'r') goto yy1445;
++                              if (yych <= 'r') goto yy1447;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1445:
++yy1447:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -21050,7 +21249,7 @@ yy1445:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'R') goto yy1412;
++                      if (yych <= 'R') goto yy1414;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21059,13 +21258,13 @@ yy1445:
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+-                              if (yych <= 'r') goto yy1446;
++                              if (yych <= 'r') goto yy1448;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1446:
++yy1448:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'N') {
+@@ -21079,18 +21278,18 @@ yy1446:
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych <= 'O') goto yy1413;
++                      if (yych <= 'O') goto yy1415;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+-                      if (yych == 'o') goto yy1447;
++                      if (yych == 'o') goto yy1449;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+-yy1447:
++yy1449:
+       yych = *++YYCURSOR;
+-      if (yych == 'W') goto yy1414;
++      if (yych == 'W') goto yy1416;
+       if (yych != 'w') goto yy179;
+       yyaccept = 29;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -21099,13 +21298,13 @@ yy1447:
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+-              goto yy1415;
++              goto yy1417;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+-              goto yy1415;
++              goto yy1417;
+       }
+-yy1449:
++yy1451:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+@@ -21120,7 +21319,7 @@ yy1449:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'Y') goto yy1417;
++                      if (yych <= 'Y') goto yy1419;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21129,36 +21328,36 @@ yy1449:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'y') goto yy1450;
++                              if (yych <= 'y') goto yy1452;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1450:
++yy1452:
+       yyaccept = 30;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+-                      goto yy1418;
++                      goto yy1420;
+               } else {
+-                      if (yych == '.') goto yy1418;
++                      if (yych == '.') goto yy1420;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+-                      if (yych <= '@') goto yy1418;
++                      if (yych <= '@') goto yy1420;
+                       if (yych <= 'Z') goto yy169;
+-                      goto yy1418;
++                      goto yy1420;
+               } else {
+                       if (yych <= '_') goto yy172;
+-                      if (yych <= '`') goto yy1418;
++                      if (yych <= '`') goto yy1420;
+                       if (yych <= 'z') goto yy177;
+-                      goto yy1418;
++                      goto yy1420;
+               }
+       }
+-yy1451:
++yy1453:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -21173,13 +21372,13 @@ yy1451:
+                       } else {
+                               if (yych <= '@') goto yy3;
+                               if (yych <= 'Q') goto yy167;
+-                              goto yy1425;
++                              goto yy1427;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+-                              if (yych <= 'S') goto yy1426;
++                              if (yych <= 'S') goto yy1428;
+                               goto yy167;
+                       } else {
+                               if (yych == '_') goto yy172;
+@@ -21188,15 +21387,15 @@ yy1451:
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'q') goto yy175;
+-                              goto yy1457;
++                              goto yy1459;
+                       } else {
+-                              if (yych <= 's') goto yy1458;
++                              if (yych <= 's') goto yy1460;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1452:
++yy1454:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -21211,7 +21410,7 @@ yy1452:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'R') goto yy1421;
++                      if (yych <= 'R') goto yy1423;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+@@ -21220,13 +21419,13 @@ yy1452:
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'r') goto yy1453;
++                              if (yych <= 'r') goto yy1455;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+-yy1453:
++yy1455:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -21241,7 +21440,7 @@ yy1453:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'S') goto yy1422;
++                      if (yych <= 'S') goto yy1424;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21250,13 +21449,13 @@ yy1453:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 's') goto yy1454;
++                              if (yych <= 's') goto yy1456;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1454:
++yy1456:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -21271,7 +21470,7 @@ yy1454:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'D') goto yy1423;
++                      if (yych <= 'D') goto yy1425;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21280,13 +21479,13 @@ yy1454:
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+-                              if (yych <= 'd') goto yy1455;
++                              if (yych <= 'd') goto yy1457;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1455:
++yy1457:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+@@ -21300,22 +21499,22 @@ yy1455:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'A') goto yy1424;
++                      if (yych <= 'A') goto yy1426;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1456;
++                      if (yych <= 'a') goto yy1458;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+-yy1456:
++yy1458:
+       yych = *++YYCURSOR;
+       if (yych == 'Y') goto yy197;
+       if (yych == 'y') goto yy210;
+       goto yy179;
+-yy1457:
++yy1459:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -21345,7 +21544,7 @@ yy1457:
+                       }
+               }
+       }
+-yy1458:
++yy1460:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+@@ -21374,7 +21573,7 @@ yy1458:
+                       }
+               }
+       }
+-yy1459:
++yy1461:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -21389,7 +21588,7 @@ yy1459:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1428;
++                      if (yych <= 'T') goto yy1430;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21398,13 +21597,13 @@ yy1459:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 't') goto yy1460;
++                              if (yych <= 't') goto yy1462;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1460:
++yy1462:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -21434,30 +21633,30 @@ yy1460:
+                       }
+               }
+       }
+-yy1461:
++yy1463:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= '@') {
+                       if (yych == ')') goto yy164;
+                       goto yy3;
+               } else {
+-                      if (yych == 'R') goto yy1473;
++                      if (yych == 'R') goto yy1475;
+                       if (yych <= 'X') goto yy166;
+-                      goto yy1474;
++                      goto yy1476;
+               }
+       } else {
+               if (yych <= 'r') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'q') goto yy166;
+-                      goto yy1473;
++                      goto yy1475;
+               } else {
+-                      if (yych == 'y') goto yy1474;
++                      if (yych == 'y') goto yy1476;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1462:
++yy1464:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+@@ -21466,7 +21665,7 @@ yy1462:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'C') goto yy166;
+-                      goto yy1467;
++                      goto yy1469;
+               }
+       } else {
+               if (yych <= 'c') {
+@@ -21474,12 +21673,12 @@ yy1462:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'd') goto yy1467;
++                      if (yych <= 'd') goto yy1469;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1463:
++yy1465:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+@@ -21495,12 +21694,12 @@ yy1463:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'n') goto yy1464;
++                      if (yych <= 'n') goto yy1466;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1464:
++yy1466:
+       yych = *++YYCURSOR;
+       if (yych <= 'D') {
+               if (yych <= ')') {
+@@ -21516,12 +21715,12 @@ yy1464:
+                       if (yych <= '`') goto yy191;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'd') goto yy1465;
++                      if (yych <= 'd') goto yy1467;
+                       if (yych <= 'z') goto yy167;
+                       goto yy191;
+               }
+       }
+-yy1465:
++yy1467:
+       yych = *++YYCURSOR;
+       if (yych <= 'A') {
+               if (yych == ')') goto yy164;
+@@ -21531,12 +21730,12 @@ yy1465:
+                       if (yych <= 'Z') goto yy168;
+                       goto yy3;
+               } else {
+-                      if (yych <= 'a') goto yy1466;
++                      if (yych <= 'a') goto yy1468;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1466:
++yy1468:
+       yych = *++YYCURSOR;
+       if (yych <= 'Y') {
+               if (yych <= ')') {
+@@ -21558,7 +21757,7 @@ yy1466:
+                       goto yy3;
+               }
+       }
+-yy1467:
++yy1469:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+@@ -21574,12 +21773,12 @@ yy1467:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'n') goto yy1468;
++                      if (yych <= 'n') goto yy1470;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1468:
++yy1470:
+       yych = *++YYCURSOR;
+       if (yych <= 'I') {
+               if (yych <= ')') {
+@@ -21595,12 +21794,12 @@ yy1468:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'i') goto yy1469;
++                      if (yych <= 'i') goto yy1471;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1469:
++yy1471:
+       yych = *++YYCURSOR;
+       if (yych <= 'G') {
+               if (yych <= ')') {
+@@ -21616,29 +21815,29 @@ yy1469:
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+-                      if (yych <= 'g') goto yy1470;
++                      if (yych <= 'g') goto yy1472;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1470:
++yy1472:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+-              if (yych <= 'H') goto yy1471;
++              if (yych <= 'H') goto yy1473;
+               if (yych != 'h') goto yy3;
+       }
+-yy1471:
++yy1473:
+       yych = *++YYCURSOR;
+-      if (yych == 'T') goto yy1472;
++      if (yych == 'T') goto yy1474;
+       if (yych != 't') goto yy56;
+-yy1472:
++yy1474:
+       yych = *++YYCURSOR;
+-      goto yy1418;
+-yy1473:
++      goto yy1420;
++yy1475:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+@@ -21666,7 +21865,7 @@ yy1473:
+                               if (yych <= '9') goto yy220;
+                               goto yy218;
+                       } else {
+-                              if (yych == 'C') goto yy1475;
++                              if (yych == 'C') goto yy1477;
+                               goto yy167;
+                       }
+               } else {
+@@ -21674,13 +21873,13 @@ yy1473:
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+-                              if (yych <= 'c') goto yy1475;
++                              if (yych <= 'c') goto yy1477;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+-yy1474:
++yy1476:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '-') {
+@@ -21705,7 +21904,7 @@ yy1474:
+                       goto yy218;
+               }
+       }
+-yy1475:
++yy1477:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+@@ -21727,7 +21926,7 @@ yy1475:
+                       goto yy3;
+               }
+       }
+-yy1476:
++yy1478:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+@@ -21744,14 +21943,14 @@ yy1476:
+                               if (yych <= '/') goto yy172;
+                               goto yy3;
+                       } else {
+-                              if (yych == 'R') goto yy1473;
++                              if (yych == 'R') goto yy1475;
+                               goto yy166;
+                       }
+               }
+       } else {
+               if (yych <= '`') {
+                       if (yych <= 'Z') {
+-                              if (yych <= 'Y') goto yy1474;
++                              if (yych <= 'Y') goto yy1476;
+                               goto yy166;
+                       } else {
+                               if (yych == '_') goto yy172;
+@@ -21759,16 +21958,16 @@ yy1476:
+                       }
+               } else {
+                       if (yych <= 'x') {
+-                              if (yych == 'r') goto yy1488;
++                              if (yych == 'r') goto yy1490;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'y') goto yy1489;
++                              if (yych <= 'y') goto yy1491;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1477:
++yy1479:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -21783,7 +21982,7 @@ yy1477:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'D') goto yy1467;
++                      if (yych <= 'D') goto yy1469;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21792,13 +21991,13 @@ yy1477:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'd') goto yy1482;
++                              if (yych <= 'd') goto yy1484;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1478:
++yy1480:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+@@ -21813,7 +22012,7 @@ yy1478:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'N') goto yy1464;
++                      if (yych <= 'N') goto yy1466;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21822,13 +22021,13 @@ yy1478:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'n') goto yy1479;
++                              if (yych <= 'n') goto yy1481;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1479:
++yy1481:
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -21843,7 +22042,7 @@ yy1479:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'D') goto yy1465;
++                      if (yych <= 'D') goto yy1467;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy191;
+                       goto yy172;
+@@ -21852,13 +22051,13 @@ yy1479:
+                               if (yych <= '`') goto yy191;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'd') goto yy1480;
++                              if (yych <= 'd') goto yy1482;
+                               if (yych <= 'z') goto yy175;
+                               goto yy191;
+                       }
+               }
+       }
+-yy1480:
++yy1482:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '@') {
+@@ -21872,18 +22071,18 @@ yy1480:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'A') goto yy1466;
++                      if (yych <= 'A') goto yy1468;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+               } else {
+                       if (yych <= '`') goto yy3;
+-                      if (yych <= 'a') goto yy1481;
++                      if (yych <= 'a') goto yy1483;
+                       if (yych <= 'z') goto yy176;
+                       goto yy3;
+               }
+       }
+-yy1481:
++yy1483:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'X') {
+@@ -21913,7 +22112,7 @@ yy1481:
+                       }
+               }
+       }
+-yy1482:
++yy1484:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+@@ -21928,7 +22127,7 @@ yy1482:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'N') goto yy1468;
++                      if (yych <= 'N') goto yy1470;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21937,13 +22136,13 @@ yy1482:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'n') goto yy1483;
++                              if (yych <= 'n') goto yy1485;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1483:
++yy1485:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'H') {
+@@ -21958,7 +22157,7 @@ yy1483:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'I') goto yy1469;
++                      if (yych <= 'I') goto yy1471;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21967,13 +22166,13 @@ yy1483:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'i') goto yy1484;
++                              if (yych <= 'i') goto yy1486;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1484:
++yy1486:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'F') {
+@@ -21988,7 +22187,7 @@ yy1484:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'G') goto yy1470;
++                      if (yych <= 'G') goto yy1472;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -21997,13 +22196,13 @@ yy1484:
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+-                              if (yych <= 'g') goto yy1485;
++                              if (yych <= 'g') goto yy1487;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1485:
++yy1487:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -22017,18 +22216,18 @@ yy1485:
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych <= 'H') goto yy1471;
++                      if (yych <= 'H') goto yy1473;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+-                      if (yych == 'h') goto yy1486;
++                      if (yych == 'h') goto yy1488;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+-yy1486:
++yy1488:
+       yych = *++YYCURSOR;
+-      if (yych == 'T') goto yy1472;
++      if (yych == 'T') goto yy1474;
+       if (yych != 't') goto yy179;
+       yyaccept = 30;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -22037,13 +22236,13 @@ yy1486:
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+-              goto yy1418;
++              goto yy1420;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+-              goto yy1418;
++              goto yy1420;
+       }
+-yy1488:
++yy1490:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+@@ -22071,7 +22270,7 @@ yy1488:
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+-                              if (yych <= 'C') goto yy1475;
++                              if (yych <= 'C') goto yy1477;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+@@ -22081,13 +22280,13 @@ yy1488:
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'c') goto yy1490;
++                              if (yych <= 'c') goto yy1492;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+-yy1489:
++yy1491:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '.') {
+@@ -22122,7 +22321,7 @@ yy1489:
+                       }
+               }
+       }
+-yy1490:
++yy1492:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -22152,7 +22351,7 @@ yy1490:
+                       }
+               }
+       }
+-yy1491:
++yy1493:
+       yych = *++YYCURSOR;
+       if (yych <= 'W') {
+               if (yych <= 'N') {
+@@ -22160,29 +22359,29 @@ yy1491:
+                       if (yych <= '@') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'O') goto yy1499;
++                      if (yych <= 'O') goto yy1501;
+                       if (yych <= 'U') goto yy166;
+-                      if (yych <= 'V') goto yy1500;
+-                      goto yy1497;
++                      if (yych <= 'V') goto yy1502;
++                      goto yy1499;
+               }
+       } else {
+               if (yych <= 'o') {
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '`') goto yy3;
+                       if (yych <= 'n') goto yy166;
+-                      goto yy1499;
++                      goto yy1501;
+               } else {
+                       if (yych <= 'v') {
+                               if (yych <= 'u') goto yy166;
+-                              goto yy1500;
++                              goto yy1502;
+                       } else {
+-                              if (yych <= 'w') goto yy1497;
++                              if (yych <= 'w') goto yy1499;
+                               if (yych <= 'z') goto yy166;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1492:
++yy1494:
+       yych = *++YYCURSOR;
+       if (yych <= 'X') {
+               if (yych <= ')') {
+@@ -22191,7 +22390,7 @@ yy1492:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'W') goto yy166;
+-                      goto yy1496;
++                      goto yy1498;
+               }
+       } else {
+               if (yych <= 'w') {
+@@ -22199,12 +22398,12 @@ yy1492:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'x') goto yy1496;
++                      if (yych <= 'x') goto yy1498;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1493:
++yy1495:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+@@ -22220,12 +22419,12 @@ yy1493:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 'n') goto yy1494;
++                      if (yych <= 'n') goto yy1496;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1494:
++yy1496:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -22241,12 +22440,12 @@ yy1494:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 't') goto yy1495;
++                      if (yych <= 't') goto yy1497;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1495:
++yy1497:
+       yych = *++YYCURSOR;
+       if (yych <= 'H') {
+               if (yych <= ')') {
+@@ -22268,7 +22467,7 @@ yy1495:
+                       goto yy3;
+               }
+       }
+-yy1496:
++yy1498:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -22277,7 +22476,7 @@ yy1496:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'S') goto yy167;
+-                      goto yy1426;
++                      goto yy1428;
+               }
+       } else {
+               if (yych <= 's') {
+@@ -22285,21 +22484,22 @@ yy1496:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 't') goto yy1426;
++                      if (yych <= 't') goto yy1428;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1497:
++yy1499:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy167;
+-              if (yych <= '`') goto yy1498;
++              if (yych <= '`') goto yy1500;
+               if (yych <= 'z') goto yy167;
+       }
+-yy1498:
++yy1500:
++#line 982 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("now");
+               TIMELIB_INIT;
+@@ -22307,7 +22507,8 @@ yy1498:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1499:
++#line 22511 "ext/date/lib/parse_date.c"
++yy1501:
+       yych = *++YYCURSOR;
+       if (yych <= 'N') {
+               if (yych <= ')') {
+@@ -22316,7 +22517,7 @@ yy1499:
+               } else {
+                       if (yych <= '@') goto yy3;
+                       if (yych <= 'M') goto yy167;
+-                      goto yy1505;
++                      goto yy1507;
+               }
+       } else {
+               if (yych <= 'm') {
+@@ -22324,12 +22525,12 @@ yy1499:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 'n') goto yy1505;
++                      if (yych <= 'n') goto yy1507;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1500:
++yy1502:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+@@ -22364,13 +22565,13 @@ yy1500:
+                               if (yych <= '`') goto yy218;
+                               goto yy167;
+                       } else {
+-                              if (yych <= 'e') goto yy1501;
++                              if (yych <= 'e') goto yy1503;
+                               if (yych <= 'z') goto yy167;
+                               goto yy218;
+                       }
+               }
+       }
+-yy1501:
++yy1503:
+       yych = *++YYCURSOR;
+       if (yych <= 'M') {
+               if (yych <= ')') {
+@@ -22386,12 +22587,12 @@ yy1501:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'm') goto yy1502;
++                      if (yych <= 'm') goto yy1504;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1502:
++yy1504:
+       yych = *++YYCURSOR;
+       if (yych <= 'B') {
+               if (yych <= ')') {
+@@ -22407,36 +22608,37 @@ yy1502:
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+-                      if (yych <= 'b') goto yy1503;
++                      if (yych <= 'b') goto yy1505;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1503:
++yy1505:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+-              if (yych <= 'E') goto yy1504;
++              if (yych <= 'E') goto yy1506;
+               if (yych != 'e') goto yy3;
+       }
+-yy1504:
++yy1506:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych == 'r') goto yy229;
+       goto yy56;
+-yy1505:
++yy1507:
+       ++YYCURSOR;
+       if ((yych = *YYCURSOR) <= '@') {
+               if (yych == ')') goto yy164;
+       } else {
+               if (yych <= 'Z') goto yy168;
+-              if (yych <= '`') goto yy1506;
++              if (yych <= '`') goto yy1508;
+               if (yych <= 'z') goto yy168;
+       }
+-yy1506:
++yy1508:
++#line 991 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("noon");
+               TIMELIB_INIT;
+@@ -22447,7 +22649,8 @@ yy1506:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1507:
++#line 22653 "ext/date/lib/parse_date.c"
++yy1509:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'V') {
+@@ -22465,15 +22668,15 @@ yy1507:
+                               if (yych <= '@') goto yy3;
+                               goto yy166;
+                       } else {
+-                              if (yych <= 'O') goto yy1499;
++                              if (yych <= 'O') goto yy1501;
+                               if (yych <= 'U') goto yy166;
+-                              goto yy1500;
++                              goto yy1502;
+                       }
+               }
+       } else {
+               if (yych <= 'n') {
+                       if (yych <= '^') {
+-                              if (yych <= 'W') goto yy1497;
++                              if (yych <= 'W') goto yy1499;
+                               if (yych <= 'Z') goto yy166;
+                               goto yy3;
+                       } else {
+@@ -22483,17 +22686,17 @@ yy1507:
+                       }
+               } else {
+                       if (yych <= 'v') {
+-                              if (yych <= 'o') goto yy1514;
++                              if (yych <= 'o') goto yy1516;
+                               if (yych <= 'u') goto yy171;
+-                              goto yy1515;
++                              goto yy1517;
+                       } else {
+-                              if (yych <= 'w') goto yy1513;
++                              if (yych <= 'w') goto yy1515;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1508:
++yy1510:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'W') {
+@@ -22508,7 +22711,7 @@ yy1508:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'X') goto yy1496;
++                      if (yych <= 'X') goto yy1498;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22517,13 +22720,13 @@ yy1508:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'x') goto yy1512;
++                              if (yych <= 'x') goto yy1514;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1509:
++yy1511:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+@@ -22538,7 +22741,7 @@ yy1509:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'N') goto yy1494;
++                      if (yych <= 'N') goto yy1496;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22547,13 +22750,13 @@ yy1509:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 'n') goto yy1510;
++                              if (yych <= 'n') goto yy1512;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1510:
++yy1512:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -22568,7 +22771,7 @@ yy1510:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1495;
++                      if (yych <= 'T') goto yy1497;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22577,13 +22780,13 @@ yy1510:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 't') goto yy1511;
++                              if (yych <= 't') goto yy1513;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1511:
++yy1513:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'G') {
+@@ -22613,7 +22816,7 @@ yy1511:
+                       }
+               }
+       }
+-yy1512:
++yy1514:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -22628,7 +22831,7 @@ yy1512:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1426;
++                      if (yych <= 'T') goto yy1428;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22637,36 +22840,36 @@ yy1512:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 't') goto yy1458;
++                              if (yych <= 't') goto yy1460;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1513:
++yy1515:
+       yyaccept = 31;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+-                      goto yy1498;
++                      goto yy1500;
+               } else {
+-                      if (yych == '.') goto yy1498;
++                      if (yych == '.') goto yy1500;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+-                      if (yych <= '@') goto yy1498;
++                      if (yych <= '@') goto yy1500;
+                       if (yych <= 'Z') goto yy167;
+-                      goto yy1498;
++                      goto yy1500;
+               } else {
+                       if (yych <= '_') goto yy172;
+-                      if (yych <= '`') goto yy1498;
++                      if (yych <= '`') goto yy1500;
+                       if (yych <= 'z') goto yy175;
+-                      goto yy1498;
++                      goto yy1500;
+               }
+       }
+-yy1514:
++yy1516:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'M') {
+@@ -22681,7 +22884,7 @@ yy1514:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'N') goto yy1505;
++                      if (yych <= 'N') goto yy1507;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22690,13 +22893,13 @@ yy1514:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'n') goto yy1520;
++                              if (yych <= 'n') goto yy1522;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1515:
++yy1517:
+       yyaccept = 5;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '9') {
+@@ -22724,7 +22927,7 @@ yy1515:
+                               if (yych <= '@') goto yy218;
+                               goto yy167;
+                       } else {
+-                              if (yych <= 'E') goto yy1501;
++                              if (yych <= 'E') goto yy1503;
+                               if (yych <= 'Z') goto yy167;
+                               goto yy218;
+                       }
+@@ -22734,13 +22937,13 @@ yy1515:
+                               if (yych <= '`') goto yy218;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 'e') goto yy1516;
++                              if (yych <= 'e') goto yy1518;
+                               if (yych <= 'z') goto yy175;
+                               goto yy218;
+                       }
+               }
+       }
+-yy1516:
++yy1518:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'L') {
+@@ -22755,7 +22958,7 @@ yy1516:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'M') goto yy1502;
++                      if (yych <= 'M') goto yy1504;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22764,13 +22967,13 @@ yy1516:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'm') goto yy1517;
++                              if (yych <= 'm') goto yy1519;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1517:
++yy1519:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'A') {
+@@ -22785,7 +22988,7 @@ yy1517:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'B') goto yy1503;
++                      if (yych <= 'B') goto yy1505;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22794,13 +22997,13 @@ yy1517:
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+-                              if (yych <= 'b') goto yy1518;
++                              if (yych <= 'b') goto yy1520;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1518:
++yy1520:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+@@ -22814,44 +23017,44 @@ yy1518:
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych <= 'E') goto yy1504;
++                      if (yych <= 'E') goto yy1506;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+-                      if (yych == 'e') goto yy1519;
++                      if (yych == 'e') goto yy1521;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+-yy1519:
++yy1521:
+       yych = *++YYCURSOR;
+       if (yych == 'R') goto yy229;
+       if (yych == 'r') goto yy341;
+       goto yy179;
+-yy1520:
++yy1522:
+       yyaccept = 32;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= '/') {
+               if (yych <= ',') {
+                       if (yych == ')') goto yy164;
+-                      goto yy1506;
++                      goto yy1508;
+               } else {
+-                      if (yych == '.') goto yy1506;
++                      if (yych == '.') goto yy1508;
+                       goto yy172;
+               }
+       } else {
+               if (yych <= '^') {
+-                      if (yych <= '@') goto yy1506;
++                      if (yych <= '@') goto yy1508;
+                       if (yych <= 'Z') goto yy168;
+-                      goto yy1506;
++                      goto yy1508;
+               } else {
+                       if (yych <= '_') goto yy172;
+-                      if (yych <= '`') goto yy1506;
++                      if (yych <= '`') goto yy1508;
+                       if (yych <= 'z') goto yy176;
+-                      goto yy1506;
++                      goto yy1508;
+               }
+       }
+-yy1521:
++yy1523:
+       yych = *++YYCURSOR;
+       if (yych <= 'S') {
+               if (yych <= ')') {
+@@ -22867,12 +23070,12 @@ yy1521:
+                       if (yych <= '`') goto yy3;
+                       goto yy166;
+               } else {
+-                      if (yych <= 's') goto yy1522;
++                      if (yych <= 's') goto yy1524;
+                       if (yych <= 'z') goto yy166;
+                       goto yy3;
+               }
+       }
+-yy1522:
++yy1524:
+       yych = *++YYCURSOR;
+       if (yych <= 'T') {
+               if (yych <= ')') {
+@@ -22888,12 +23091,12 @@ yy1522:
+                       if (yych <= '`') goto yy3;
+                       goto yy167;
+               } else {
+-                      if (yych <= 't') goto yy1523;
++                      if (yych <= 't') goto yy1525;
+                       if (yych <= 'z') goto yy167;
+                       goto yy3;
+               }
+       }
+-yy1523:
++yy1525:
+       yych = *++YYCURSOR;
+       if (yych <= 'E') {
+               if (yych <= ')') {
+@@ -22909,12 +23112,12 @@ yy1523:
+                       if (yych <= '`') goto yy3;
+                       goto yy168;
+               } else {
+-                      if (yych <= 'e') goto yy1524;
++                      if (yych <= 'e') goto yy1526;
+                       if (yych <= 'z') goto yy168;
+                       goto yy3;
+               }
+       }
+-yy1524:
++yy1526:
+       yych = *++YYCURSOR;
+       if (yych <= 'R') {
+               if (yych <= ')') {
+@@ -22930,32 +23133,33 @@ yy1524:
+                       if (yych <= '`') goto yy3;
+                       goto yy169;
+               } else {
+-                      if (yych <= 'r') goto yy1525;
++                      if (yych <= 'r') goto yy1527;
+                       if (yych <= 'z') goto yy169;
+                       goto yy3;
+               }
+       }
+-yy1525:
++yy1527:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+               if (yych == ')') goto yy164;
+               goto yy3;
+       } else {
+-              if (yych <= 'D') goto yy1526;
++              if (yych <= 'D') goto yy1528;
+               if (yych != 'd') goto yy3;
+       }
+-yy1526:
++yy1528:
+       yych = *++YYCURSOR;
+-      if (yych == 'A') goto yy1527;
++      if (yych == 'A') goto yy1529;
+       if (yych != 'a') goto yy56;
+-yy1527:
++yy1529:
+       yych = *++YYCURSOR;
+-      if (yych == 'Y') goto yy1528;
++      if (yych == 'Y') goto yy1530;
+       if (yych != 'y') goto yy56;
+-yy1528:
++yy1530:
+       ++YYCURSOR;
+-yy1529:
++yy1531:
++#line 970 "ext/date/lib/parse_date.re"
+       {
+               DEBUG_OUTPUT("yesterday");
+               TIMELIB_INIT;
+@@ -22966,7 +23170,8 @@ yy1529:
+               TIMELIB_DEINIT;
+               return TIMELIB_RELATIVE;
+       }
+-yy1530:
++#line 23174 "ext/date/lib/parse_date.c"
++yy1532:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'R') {
+@@ -22981,7 +23186,7 @@ yy1530:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'S') goto yy1522;
++                      if (yych <= 'S') goto yy1524;
+                       if (yych <= 'Z') goto yy166;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -22990,13 +23195,13 @@ yy1530:
+                               if (yych <= '`') goto yy3;
+                               goto yy171;
+                       } else {
+-                              if (yych <= 's') goto yy1531;
++                              if (yych <= 's') goto yy1533;
+                               if (yych <= 'z') goto yy171;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1531:
++yy1533:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'S') {
+@@ -23011,7 +23216,7 @@ yy1531:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'T') goto yy1523;
++                      if (yych <= 'T') goto yy1525;
+                       if (yych <= 'Z') goto yy167;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -23020,13 +23225,13 @@ yy1531:
+                               if (yych <= '`') goto yy3;
+                               goto yy175;
+                       } else {
+-                              if (yych <= 't') goto yy1532;
++                              if (yych <= 't') goto yy1534;
+                               if (yych <= 'z') goto yy175;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1532:
++yy1534:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'D') {
+@@ -23041,7 +23246,7 @@ yy1532:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'E') goto yy1524;
++                      if (yych <= 'E') goto yy1526;
+                       if (yych <= 'Z') goto yy168;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -23050,13 +23255,13 @@ yy1532:
+                               if (yych <= '`') goto yy3;
+                               goto yy176;
+                       } else {
+-                              if (yych <= 'e') goto yy1533;
++                              if (yych <= 'e') goto yy1535;
+                               if (yych <= 'z') goto yy176;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1533:
++yy1535:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'Q') {
+@@ -23071,7 +23276,7 @@ yy1533:
+               }
+       } else {
+               if (yych <= '_') {
+-                      if (yych <= 'R') goto yy1525;
++                      if (yych <= 'R') goto yy1527;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy3;
+                       goto yy172;
+@@ -23080,13 +23285,13 @@ yy1533:
+                               if (yych <= '`') goto yy3;
+                               goto yy177;
+                       } else {
+-                              if (yych <= 'r') goto yy1534;
++                              if (yych <= 'r') goto yy1536;
+                               if (yych <= 'z') goto yy177;
+                               goto yy3;
+                       }
+               }
+       }
+-yy1534:
++yy1536:
+       yyaccept = 0;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if (yych <= 'C') {
+@@ -23100,21 +23305,21 @@ yy1534:
+               }
+       } else {
+               if (yych <= '`') {
+-                      if (yych <= 'D') goto yy1526;
++                      if (yych <= 'D') goto yy1528;
+                       if (yych == '_') goto yy172;
+                       goto yy3;
+               } else {
+-                      if (yych == 'd') goto yy1535;
++                      if (yych == 'd') goto yy1537;
+                       if (yych <= 'z') goto yy178;
+                       goto yy3;
+               }
+       }
+-yy1535:
++yy1537:
+       yych = *++YYCURSOR;
+-      if (yych == 'A') goto yy1527;
++      if (yych == 'A') goto yy1529;
+       if (yych != 'a') goto yy179;
+       yych = *++YYCURSOR;
+-      if (yych == 'Y') goto yy1528;
++      if (yych == 'Y') goto yy1530;
+       if (yych != 'y') goto yy179;
+       yyaccept = 33;
+       yych = *(YYMARKER = ++YYCURSOR);
+@@ -23123,13 +23328,14 @@ yy1535:
+       }
+       if (yych <= '.') {
+               if (yych == '-') goto yy172;
+-              goto yy1529;
++              goto yy1531;
+       } else {
+               if (yych <= '/') goto yy172;
+               if (yych == '_') goto yy172;
+-              goto yy1529;
++              goto yy1531;
+       }
+ }
++#line 1772 "ext/date/lib/parse_date.re"
+ 
+ }
+ 
+diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
+index 74d9ea3..f26e276 100644
+--- a/ext/date/lib/parse_date.re
++++ b/ext/date/lib/parse_date.re
+@@ -931,8 +931,8 @@ isoweek          = year4 "-"? "W" weekofyear;
+ exif             = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" 
secondlz;
+ firstdayof       = 'first day of';
+ lastdayof        = 'last day of';
+-backof           = 'back of ' hour24 space? meridian?;
+-frontof          = 'front of ' hour24 space? meridian?;
++backof           = 'back of ' hour24 (space? meridian)?;
++frontof          = 'front of ' hour24 (space? meridian)?;
+ 
+ /* Common Log Format: 10/Oct/2000:13:55:36 -0700 */
+ clf              = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" 
secondlz space tzcorrection;
+diff --git a/ext/date/tests/bug53437_var3.phpt 
b/ext/date/tests/bug53437_var3.phpt
+index 8f48b1b..8dcd4c8 100644
+--- a/ext/date/tests/bug53437_var3.phpt
++++ b/ext/date/tests/bug53437_var3.phpt
+@@ -40,7 +40,7 @@ object(DateInterval)#%d (16) {
+   ["special_amount"]=>
+   int(-1)
+   ["have_weekday_relative"]=>
+-  int(9)
++  int(0)
+   ["have_special_relative"]=>
+   int(0)
+   ["f"]=>
+diff --git a/ext/wddx/tests/bug75055.phpt b/ext/wddx/tests/bug75055.phpt
+new file mode 100644
+index 0000000..2956284
+--- /dev/null
++++ b/ext/wddx/tests/bug75055.phpt
+@@ -0,0 +1,20 @@
++--TEST--
++Bug #75055 Out-Of-Bounds Read in timelib_meridian()
++--SKIPIF--
++<?php if (!extension_loaded("wddx")) print "skip"; ?>
++--FILE--
++<?php
++
++$file_str = dirname(__FILE__) . "/bug75055.wddx";
++
++$wddx_str = file_get_contents($file_str);
++print strlen($wddx_str) . " bytes read.\n";
++
++var_dump(wddx_deserialize($wddx_str));
++?>
++--EXPECT--
++323 bytes read.
++array(1) {
++  ["aDateTime"]=>
++  string(12) "frONt of 0 0"
++}
+diff --git a/ext/wddx/tests/bug75055.wddx b/ext/wddx/tests/bug75055.wddx
+new file mode 100644
+index 0000000..6493352
+--- /dev/null
++++ b/ext/wddx/tests/bug75055.wddx
+@@ -0,0 +1,13 @@
++<?xml version='1.0'?>
++<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'>
++<wddxPacket version='1.0'>
++<header/>
++      <data>
++              <struct>
++                    <var name='aDateTime'>
++                         <dateTime>frONt of 0 0</dateTime>
++                     </var>
++                </struct>
++      </data>
++</wddxPacket>
++
+-- 
+2.11.0
+
diff --git a/meta-oe/recipes-devtools/php/php_7.1.9.bb 
b/meta-oe/recipes-devtools/php/php_7.1.9.bb
index 157369e..acf68a0 100644
--- a/meta-oe/recipes-devtools/php/php_7.1.9.bb
+++ b/meta-oe/recipes-devtools/php/php_7.1.9.bb
@@ -4,6 +4,7 @@ LIC_FILES_CHKSUM = 
"file://LICENSE;md5=c0af599f66d0461c5837c695fcbc5c1e"
 
 SRC_URI += "file://change-AC_TRY_RUN-to-AC_TRY_LINK.patch \
             file://0001-Specify-tag-with-libtool.patch \
+            file://CVE-2017-16642.patch \
            "
 SRC_URI[md5sum] = "2397be54f3281cdf30c7ef076b28f7d0"
 SRC_URI[sha256sum] = 
"314dcc10dfdd7c4443edb4fe1e133a44f2b2a8351be8c9eb6ab9222d45fd9bae"
-- 
2.7.4

-- 
_______________________________________________
Openembedded-devel mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Reply via email to