From f2f90767311355cafabff604a7a857ca60ee3f01 Mon Sep 17 00:00:00 2001
From: Li Zhou <li.zhou@windriver.com>
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 <li.zhou@windriver.com>
---
 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

