diff -Nru mapserver-5.0.0/debian/changelog mapserver-5.0.0/debian/changelog --- mapserver-5.0.0/debian/changelog 2009-08-18 10:28:52.000000000 -0400 +++ mapserver-5.0.0/debian/changelog 2009-08-18 10:28:53.000000000 -0400 @@ -1,3 +1,29 @@ +mapserver (5.0.0-3ubuntu0.1) hardy-security; urgency=low + + * SECURITY UPDATE: stack-based buffer overflow (LP: #398814) + - debian/patches/01_CVE-2009-0839.dpatch: Apply a regex pattern + to limit an id's value. + - CVE-2009-0839 + * SECURITY UPDATE: heap-based buffer underflow (LP: #398814) + - debian/patches/02_CVE-2009-840-CVE-2009-2281.dpatch: Add validation for + a post request and the content-length. + - CVE-2009-0840, CVE-2009-2281 + * SECURITY UPDATE: relative file path writing (LP: #398814) + - debian/patches/03_CVE-2009-0841.dpatch: Limit the buffer size. + - CVE-2009-0841 + * SECURITY UPDATE: file data leakage (LP: #398814) + - debian/patches/04_CVE-2009-0842.dpatch: Set MAP/SYMBOLSET tag as mandatory. + - CVE-2009-0842 + * SECURITY UPDATE: file existence leakage (LP: #398814) + - debian/patches/05_CVE-2009-0843.dpatch: Add regex validation for the file extension. + - CVE-2009-0843 + * SECURITY UPDATE: paths specified in url vulnerabilities. + - debian/patches/06_urlpath.dpatch: Disable the variable overwriting from URL of a + few variables. + - [http://trac.osgeo.org/mapserver/ticket/1836] + + -- Alan Boudreault Tue, 18 Aug 2009 09:42:23 -0400 + mapserver (5.0.0-3) unstable; urgency=low * debian/php5-mapscript.postinst: fixed a typo. (Closes: #446985) diff -Nru mapserver-5.0.0/debian/patches/00list mapserver-5.0.0/debian/patches/00list --- mapserver-5.0.0/debian/patches/00list 2009-08-18 10:28:52.000000000 -0400 +++ mapserver-5.0.0/debian/patches/00list 2009-08-18 10:28:53.000000000 -0400 @@ -1,3 +1,9 @@ 50_clean 70_ptrreturn 80_gdal_lib +01_CVE-2009-0839 +02_CVE-2009-840-CVE-2009-2281 +03_CVE-2009-0841 +04_CVE-2009-0842 +05_CVE-2009-0843 +06_urlpath diff -Nru mapserver-5.0.0/debian/patches/01_CVE-2009-0839.dpatch mapserver-5.0.0/debian/patches/01_CVE-2009-0839.dpatch --- mapserver-5.0.0/debian/patches/01_CVE-2009-0839.dpatch 1969-12-31 19:00:00.000000000 -0500 +++ mapserver-5.0.0/debian/patches/01_CVE-2009-0839.dpatch 2009-08-18 10:28:53.000000000 -0400 @@ -0,0 +1,195 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +# +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mapserver/+bug/398814 +# Upstream: http://trac.osgeo.org/mapserver/ticket/2942 +# Patch: aboudreault@mapgears.com +# Description: CGI "id" parameter are now sufficiently validated +# +## 01_CVE-2009-0839.dpatch by Alan Boudreault +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad mapserver-5.0.3~/mapserv.c mapserver-5.0.3/mapserv.c +--- mapserver-5.0.3~/mapserv.c 2007-09-10 09:51:19.000000000 -0400 ++++ mapserver-5.0.3/mapserv.c 2009-06-08 13:33:31.870603634 -0400 +@@ -197,10 +197,23 @@ + } else { + if(getenv(msObj->request->ParamValues[i])) /* an environment references the actual file to use */ + map = msLoadMap(getenv(msObj->request->ParamValues[i]), NULL); +- else ++ else { ++ /* by here we know the request isn't for something in an environment variable */ ++ if(getenv("MS_MAP_NO_PATH")) { ++ msSetError(MS_WEBERR, "Mapfile not found in environment variables and this server is not configured for full paths.", "loadMap()"); ++ writeError(); ++ } ++ ++ if(getenv("MS_MAP_PATTERN") && msEvalRegex(getenv("MS_MAP_PATTERN"), msObj->request->ParamValues[i]) != MS_TRUE) { ++ msSetError(MS_WEBERR, "Parameter 'map' value fails to validate.", "loadMap()"); ++ writeError(); ++ } ++ ++ /* ok to try to load now */ + map = msLoadMap(msObj->request->ParamValues[i], NULL); ++ } + } +- ++ + if(!map) writeError(); + + /* check for any %variable% substitutions here, also do any map_ changes, we do this here so WMS/WFS */ +@@ -357,6 +370,10 @@ + } + + if(strcasecmp(msObj->request->ParamNames[i],"id") == 0) { ++ if(msEvalRegex(IDPATTERN, msObj->request->ParamValues[i]) == MS_FALSE) { ++ msSetError(MS_WEBERR, "Parameter 'id' value fails to validate.", "loadMap()"); ++ writeError(); ++ } + strncpy(msObj->Id, msObj->request->ParamValues[i], IDSIZE); + continue; + } +@@ -1207,7 +1224,7 @@ + loadForm(); + + if(msObj->SaveMap) { +- sprintf(buffer, "%s%s%s.map", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id); ++ snprintf(buffer, sizeof(buffer), "%s%s%s.map", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id); + if(msSaveMap(msObj->Map, buffer) == -1) writeError(); + } + +diff -urNad mapserver-5.0.3~/mapserver.h mapserver-5.0.3/mapserver.h +--- mapserver-5.0.3~/mapserver.h 2008-06-04 15:43:45.000000000 -0400 ++++ mapserver-5.0.3/mapserver.h 2009-06-08 13:33:31.870603634 -0400 +@@ -150,7 +150,9 @@ + /* General defines, not wrapable */ + #ifndef SWIG + #define MS_DEFAULT_MAPFILE_PATTERN "\\.map$" +-#define MS_TEMPLATE_EXPR "\\.(jsp|asp|cfm|xml|wml|html|htm|shtml|phtml|php|svg)$" ++ ++#define MS_TEMPLATE_MAGIC_STRING "MapServer Template" ++#define MS_TEMPLATE_EXPR "\\.(xml|wml|html|htm|svg|kml|gml|js|tmpl)$" + + #define MS_INDEX_EXTENSION ".qix" + #define MS_QUERY_EXTENSION ".qy" +diff -urNad mapserver-5.0.3~/maptemplate.c mapserver-5.0.3/maptemplate.c +--- mapserver-5.0.3~/maptemplate.c 2007-08-24 14:22:05.000000000 -0400 ++++ mapserver-5.0.3/maptemplate.c 2009-06-08 13:33:31.870603634 -0400 +@@ -40,6 +40,20 @@ + + char *processLine(mapservObj* msObj, char* instr, int mode); + ++static int isValidTemplate(FILE *stream, const char *filename) ++{ ++ char buffer[MS_BUFFER_LENGTH]; ++ ++ if(fgets(buffer, MS_BUFFER_LENGTH, stream) != NULL) { ++ if(!msCaseFindSubstring(buffer, MS_TEMPLATE_MAGIC_STRING)) { ++ msSetError(MS_WEBERR, "Missing magic string, %s doesn't look like a MapServer template.", "isValidTemplate()", filename); ++ return MS_FALSE; ++ } ++ } ++ ++ return MS_TRUE; ++} ++ + /* + * Redirect to (only use in CGI) + * +@@ -200,7 +214,7 @@ + img = msDrawMap(msObj->Map, MS_TRUE); + if(!img) return MS_FAILURE; + +- snprintf(buffer, 1024, "%s%s%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); ++ snprintf(buffer, sizeof(buffer), "%s%s%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); + + status = msSaveImage(msObj->Map, img, buffer); + if(status != MS_SUCCESS) return status; +@@ -211,7 +225,7 @@ + { + img = msDrawLegend(msObj->Map, MS_FALSE); + if(!img) return MS_FAILURE; +- snprintf(buffer, 1024, "%s%sleg%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); ++ snprintf(buffer, sizeof(buffer), "%s%sleg%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); + status = msSaveImage(msObj->Map, img, buffer); + if(status != MS_SUCCESS) return status; + msFreeImage(img); +@@ -221,7 +235,7 @@ + { + img = msDrawScalebar(msObj->Map); + if(!img) return MS_FAILURE; +- snprintf(buffer, 1024, "%s%ssb%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); ++ snprintf(buffer, sizeof(buffer), "%s%ssb%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); + status = msSaveImage( msObj->Map, img, buffer); + if(status != MS_SUCCESS) return status; + msFreeImage(img); +@@ -231,7 +245,7 @@ + { + img = msDrawReferenceMap(msObj->Map); + if(!img) return MS_FAILURE; +- snprintf(buffer, 1024, "%s%sref%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); ++ snprintf(buffer, sizeof(buffer), "%s%sref%s.%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_IMAGE_EXTENSION(msObj->Map->outputformat)); + status = msSaveImage(msObj->Map, img, buffer); + if(status != MS_SUCCESS) return status; + msFreeImage(img); +@@ -2392,6 +2406,11 @@ + return(NULL); + } + ++ if(isValidTemplate(stream, join->header) != MS_TRUE) { ++ fclose(stream); ++ return NULL; ++ } ++ + /* echo file to the output buffer, no substitutions */ + while(fgets(line, MS_BUFFER_LENGTH, stream) != NULL) outbuf = msStringConcatenate(outbuf, line); + +@@ -2402,7 +2421,12 @@ + msSetError(MS_IOERR, "Error while opening join template file %s.", "processOneToManyJoin()", join->template); + return(NULL); + } +- ++ ++ if(isValidTemplate(stream, join->template) != MS_TRUE) { ++ fclose(stream); ++ return NULL; ++ } ++ + records = MS_TRUE; + } + +@@ -2417,6 +2441,7 @@ + } + + rewind(stream); ++ fgets(line, MS_BUFFER_LENGTH, stream); /* skip the first line since it's the magic string */ + } /* next record */ + + if(records==MS_TRUE && join->footer) { +@@ -2425,6 +2450,11 @@ + return(NULL); + } + ++ if(isValidTemplate(stream, join->footer) != MS_TRUE) { ++ fclose(stream); ++ return NULL; ++ } ++ + /* echo file to the output buffer, no substitutions */ + while(fgets(line, MS_BUFFER_LENGTH, stream) != NULL) outbuf = msStringConcatenate(outbuf, line); + +diff -urNad mapserver-5.0.3~/maptemplate.h mapserver-5.0.3/maptemplate.h +--- mapserver-5.0.3~/maptemplate.h 2007-08-30 09:52:07.000000000 -0400 ++++ mapserver-5.0.3/maptemplate.h 2009-06-08 13:33:31.860604977 -0400 +@@ -33,7 +33,8 @@ + #include "mapserver.h" + #include "maphash.h" + +-#define IDSIZE 128 ++#define IDPATTERN "^[0-9A-Za-z]{1,63}$" ++#define IDSIZE 64 + #define TEMPLATE_TYPE(s) (((strncmp("http://", s, 7) == 0) || (strncmp("https://", s, 8) == 0) || (strncmp("ftp://", s, 6)) == 0) ? MS_URL : MS_FILE) + #define MAXZOOM 25 + #define MINZOOM -25 diff -Nru mapserver-5.0.0/debian/patches/02_CVE-2009-840-CVE-2009-2281.dpatch mapserver-5.0.0/debian/patches/02_CVE-2009-840-CVE-2009-2281.dpatch --- mapserver-5.0.0/debian/patches/02_CVE-2009-840-CVE-2009-2281.dpatch 1969-12-31 19:00:00.000000000 -0500 +++ mapserver-5.0.0/debian/patches/02_CVE-2009-840-CVE-2009-2281.dpatch 2009-08-18 10:28:53.000000000 -0400 @@ -0,0 +1,107 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +# +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mapserver/+bug/398814 +# Upstream: http://trac.osgeo.org/mapserver/ticket/2943 +# Patch: aboudreault@mapgears.com +# Description: Fix buffer overflow for a post request +# +## 02_CVE-2009-840-CVE-2009-2281.dpatch by Alan Boudreault +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad mapserver-5.0.3~/cgiutil.c mapserver-5.0.3/cgiutil.c +--- mapserver-5.0.3~/cgiutil.c 2007-08-31 17:40:06.000000000 -0400 ++++ mapserver-5.0.3/cgiutil.c 2009-07-14 09:04:55.590607889 -0400 +@@ -1,4 +1,5 @@ + /****************************************************************************** ++ * $Id$ + * + * Project: MapServer + * Purpose: cgiRequestObj and CGI parameter parsing. +@@ -41,7 +42,8 @@ + static char *readPostBody( cgiRequestObj *request ) + { + char *data; +- int data_max, data_len, chunk_size; ++ size_t data_max, data_len; ++ int chunk_size; + + msIO_needBinaryStdin(); + +@@ -49,11 +51,17 @@ + /* If the length is provided, read in one gulp. */ + /* -------------------------------------------------------------------- */ + if( getenv("CONTENT_LENGTH") != NULL ) { +- data_max = atoi(getenv("CONTENT_LENGTH")); ++ data_max = (size_t) atoi(getenv("CONTENT_LENGTH")); ++ /* Test for suspicious CONTENT_LENGTH (negative value or SIZE_MAX) */ ++ if( data_max >= SIZE_MAX ) { ++ msIO_printf("Content-type: text/html%c%c",10,10); ++ msIO_printf("Suspicious Content-Length.\n"); ++ exit( 1 ); ++ } + data = (char *) malloc(data_max+1); + if( data == NULL ) { + msIO_printf("Content-type: text/html%c%c",10,10); +- msIO_printf("malloc() failed, Content-Length: %d unreasonably large?\n", data_max ); ++ msIO_printf("malloc() failed, Content-Length: %u unreasonably large?\n", data_max ); + exit( 1 ); + } + +@@ -70,7 +78,9 @@ + /* -------------------------------------------------------------------- */ + /* Otherwise read in chunks to the end. */ + /* -------------------------------------------------------------------- */ +- data_max = 10000; ++#define DATA_ALLOC_SIZE 10000 ++ ++ data_max = DATA_ALLOC_SIZE; + data_len = 0; + data = (char *) malloc(data_max+1); + +@@ -78,12 +88,19 @@ + data_len += chunk_size; + + if( data_len == data_max ) { +- data_max = data_max + 10000; ++ /* Realloc buffer, making sure we check for possible size_t overflow */ ++ if ( data_max > SIZE_MAX - (DATA_ALLOC_SIZE+1) ) { ++ msIO_printf("Content-type: text/html%c%c",10,10); ++ msIO_printf("Possible size_t overflow, cannot reallocate input buffer, POST body too large?\n" ); ++ exit(1); ++ } ++ ++ data_max = data_max + DATA_ALLOC_SIZE; + data = (char *) realloc(data, data_max+1); + + if( data == NULL ) { + msIO_printf("Content-type: text/html%c%c",10,10); +- msIO_printf("out of memory trying to allocate %d input buffer, POST body too large?\n", data_max+1 ); ++ msIO_printf("out of memory trying to allocate %u input buffer, POST body too large?\n", data_max+1 ); + exit(1); + } + } +diff -urNad mapserver-5.0.3~/mapserver.h mapserver-5.0.3/mapserver.h +--- mapserver-5.0.3~/mapserver.h 2008-06-04 15:43:45.000000000 -0400 ++++ mapserver-5.0.3/mapserver.h 2009-07-14 09:04:55.590607889 -0400 +@@ -65,6 +65,10 @@ + + /* definition of ms_int32/ms_uint32 */ + #include ++#ifndef _WIN32 ++#include ++#endif ++ + #if ULONG_MAX == 0xffffffff + typedef long ms_int32; + typedef unsigned long ms_uint32; +@@ -72,7 +76,6 @@ + typedef int ms_int32; + typedef unsigned int ms_uint32; + #else +-#include + typedef int32_t ms_int32; + typedef uint32_t ms_uint32; + #endif diff -Nru mapserver-5.0.0/debian/patches/03_CVE-2009-0841.dpatch mapserver-5.0.0/debian/patches/03_CVE-2009-0841.dpatch --- mapserver-5.0.0/debian/patches/03_CVE-2009-0841.dpatch 1969-12-31 19:00:00.000000000 -0500 +++ mapserver-5.0.0/debian/patches/03_CVE-2009-0841.dpatch 2009-08-18 10:28:53.000000000 -0400 @@ -0,0 +1,25 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +# +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mapserver/+bug/398814 +# Upstream: http://trac.osgeo.org/mapserver/ticket/2942 +# Patch: aboudreault@mapgears.com +# Description: Fix relative file path writing +# +## 03_CVE-2009-0841.dpatch by Alan Boudreault +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad mapserver-5.0.3~/mapserv.c mapserver-5.0.3/mapserv.c +--- mapserver-5.0.3~/mapserv.c 2007-09-10 09:51:19.000000000 -0400 ++++ mapserver-5.0.3/mapserv.c 2009-06-08 13:35:11.130609480 -0400 +@@ -1585,7 +1585,7 @@ + if(msReturnTemplateQuery(msObj, msObj->Map->web.queryformat, NULL) != MS_SUCCESS) writeError(); + + if(msObj->SaveQuery) { +- sprintf(buffer, "%s%s%s%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_QUERY_EXTENSION); ++ snprintf(buffer, sizeof(buffer), "%s%s%s%s", msObj->Map->web.imagepath, msObj->Map->name, msObj->Id, MS_QUERY_EXTENSION); + if((status = msSaveQuery(msObj->Map, buffer)) != MS_SUCCESS) return status; + } + } diff -Nru mapserver-5.0.0/debian/patches/04_CVE-2009-0842.dpatch mapserver-5.0.0/debian/patches/04_CVE-2009-0842.dpatch --- mapserver-5.0.0/debian/patches/04_CVE-2009-0842.dpatch 1969-12-31 19:00:00.000000000 -0500 +++ mapserver-5.0.0/debian/patches/04_CVE-2009-0842.dpatch 2009-08-18 10:28:53.000000000 -0400 @@ -0,0 +1,126 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +# +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mapserver/+bug/398814 +# Upstream: http://trac.osgeo.org/mapserver/ticket/2941 +# Patch: aboudreault@mapgears.com +# Description: Fix mapfile parser leak sensitive data +# +## 04_CVE-2009-0842.dpatch by Alan Boudreault +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad mapserver-5.0.3~/mapfile.c mapserver-5.0.3/mapfile.c +--- mapserver-5.0.3~/mapfile.c 2008-01-20 11:11:29.000000000 -0500 ++++ mapserver-5.0.3/mapfile.c 2009-06-08 13:35:53.641855604 -0400 +@@ -4228,10 +4228,20 @@ + static int loadMapInternal(mapObj *map) + { + int i,j,k; ++ int foundMapToken=MS_FALSE; ++ int token; + + for(;;) { + +- switch(msyylex()) { ++ token = msyylex(); ++ ++ if(!foundMapToken && token != MAP) { ++ msSetError(MS_IDENTERR, "First token must be MAP, this doesn't look like a mapfile.", "msLoadMap()"); ++ return(MS_FAILURE); ++ } ++ ++ switch(token) { ++ + + case(CONFIG): + { +@@ -4358,6 +4368,7 @@ + if(loadLegend(&(map->legend), map) == -1) return MS_FAILURE; + break; + case(MAP): ++ foundMapToken = MS_TRUE; + break; + case(MAXSIZE): + if(getInteger(&(map->maxsize)) == -1) return MS_FAILURE; +diff -urNad mapserver-5.0.3~/mapsymbol.c mapserver-5.0.3/mapsymbol.c +--- mapserver-5.0.3~/mapsymbol.c 2007-11-08 10:19:29.000000000 -0500 ++++ mapserver-5.0.3/mapsymbol.c 2009-06-08 13:35:53.651858522 -0400 +@@ -616,7 +616,7 @@ + int msLoadSymbolSet(symbolSetObj *symbolset, mapObj *map) + { + int retval = MS_FAILURE; +- ++ + msAcquireLock( TLOCK_PARSER ); + retval = loadSymbolSet( symbolset, map ); + msReleaseLock( TLOCK_PARSER ); +@@ -631,6 +631,9 @@ + int status=1; + char szPath[MS_MAXPATHLEN], *pszSymbolPath=NULL; + ++ int foundSymbolSetToken=MS_FALSE; ++ int token; ++ + if(!symbolset) { + msSetError(MS_SYMERR, "Symbol structure unallocated.", "loadSymbolSet()"); + return(-1); +@@ -657,7 +660,15 @@ + ** Read the symbol file + */ + for(;;) { +- switch(msyylex()) { ++ ++ token = msyylex(); ++ ++ if(!foundSymbolSetToken && token != SYMBOLSET) { ++ msSetError(MS_IDENTERR, "First token must be SYMBOLSET, this doesn't look like a symbol file.", "msLoadSymbolSet()"); ++ return(-1); ++ } ++ ++ switch(token) { + case(END): + case(EOF): + status = 0; +@@ -673,6 +684,7 @@ + symbolset->numsymbols++; + break; + case(SYMBOLSET): ++ foundSymbolSetToken = MS_TRUE; + break; + default: + msSetError(MS_IDENTERR, "Parsing error near (%s):(line %d)", "loadSymbolSet()", msyytext, msyylineno); +diff -urNad mapserver-5.0.3~/tests/symbols.txt mapserver-5.0.3/tests/symbols.txt +--- mapserver-5.0.3~/tests/symbols.txt 2004-11-18 10:07:36.000000000 -0500 ++++ mapserver-5.0.3/tests/symbols.txt 2009-06-08 13:35:53.651858522 -0400 +@@ -1,22 +1,22 @@ +- +-SYMBOL ++SYMBOLSET ++ SYMBOL + NAME 'circle' + TYPE ellipse + FILLED true + POINTS + 1 1 + END +-END ++ END + +-SYMBOL ++ SYMBOL + NAME 'xmarks-png' + TYPE PIXMAP + IMAGE 'xmarks.png' +-END ++ END + +-SYMBOL ++ SYMBOL + NAME 'home-png' + TYPE PIXMAP + IMAGE 'home.png' ++ END + END +- diff -Nru mapserver-5.0.0/debian/patches/05_CVE-2009-0843.dpatch mapserver-5.0.0/debian/patches/05_CVE-2009-0843.dpatch --- mapserver-5.0.0/debian/patches/05_CVE-2009-0843.dpatch 1969-12-31 19:00:00.000000000 -0500 +++ mapserver-5.0.0/debian/patches/05_CVE-2009-0843.dpatch 2009-08-18 10:28:53.000000000 -0400 @@ -0,0 +1,29 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +# +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mapserver/+bug/398814 +# Upstream: http://trac.osgeo.org/mapserver/ticket/2939 +# Patch: aboudreault@mapgears.com +# Patch: aboudreault@mapgears.com +# Description: Fix file Existence Leakage +# +## 05_CVE-2009-0843.dpatch by Alan Boudreault +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad mapserver-5.0.3~/mapquery.c mapserver-5.0.3/mapquery.c +--- mapserver-5.0.3~/mapquery.c 2008-05-05 10:46:11.000000000 -0400 ++++ mapserver-5.0.3/mapquery.c 2009-06-08 13:36:44.410605642 -0400 +@@ -120,6 +120,11 @@ + return(MS_FAILURE); + } + ++ /* ++ ** Make sure the file at least has the right extension. ++ */ ++ if(msEvalRegex("\\.qy$", filename) != MS_TRUE) return MS_FAILURE; ++ + stream = fopen(filename, "rb"); + if(!stream) { + msSetError(MS_IOERR, "(%s)", "msLoadQuery()", filename); diff -Nru mapserver-5.0.0/debian/patches/06_urlpath.dpatch mapserver-5.0.0/debian/patches/06_urlpath.dpatch --- mapserver-5.0.0/debian/patches/06_urlpath.dpatch 1969-12-31 19:00:00.000000000 -0500 +++ mapserver-5.0.0/debian/patches/06_urlpath.dpatch 2009-08-18 10:28:53.000000000 -0400 @@ -0,0 +1,2472 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +# +# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mapserver/+bug/398814 +# Upstream: http://trac.osgeo.org/mapserver/ticket/1836 +# Patch: aboudreault@mapgears.com +# Description: Fix handling of IMAGEPATH and IMAGEURL +# +## 06_urlpath.dpatch by Alan Boudreault +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad mapserver-5.0.3~/maplexer.c mapserver-5.0.3/maplexer.c +--- mapserver-5.0.3~/maplexer.c 2008-06-03 11:36:38.000000000 -0400 ++++ mapserver-5.0.3/maplexer.c 2009-07-23 09:07:55.450606144 -0400 +@@ -6,10 +6,29 @@ + + /* A lexical scanner generated by flex */ + ++#define yy_create_buffer msyy_create_buffer ++#define yy_delete_buffer msyy_delete_buffer ++#define yy_flex_debug msyy_flex_debug ++#define yy_init_buffer msyy_init_buffer ++#define yy_flush_buffer msyy_flush_buffer ++#define yy_load_buffer_state msyy_load_buffer_state ++#define yy_switch_to_buffer msyy_switch_to_buffer ++#define yyin msyyin ++#define yyleng msyyleng ++#define yylex msyylex ++#define yylineno msyylineno ++#define yyout msyyout ++#define yyrestart msyyrestart ++#define yytext msyytext ++#define yywrap msyywrap ++#define yyalloc msyyalloc ++#define yyrealloc msyyrealloc ++#define yyfree msyyfree ++ + #define FLEX_SCANNER + #define YY_FLEX_MAJOR_VERSION 2 + #define YY_FLEX_MINOR_VERSION 5 +-#define YY_FLEX_SUBMINOR_VERSION 33 ++#define YY_FLEX_SUBMINOR_VERSION 35 + #if YY_FLEX_SUBMINOR_VERSION > 0 + #define FLEX_BETA + #endif +@@ -31,7 +50,7 @@ + + /* C99 systems have . Non-C99 systems may or may not. */ + +-#if __STDC_VERSION__ >= 199901L ++#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + + /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. +@@ -54,7 +73,6 @@ + typedef unsigned char flex_uint8_t; + typedef unsigned short int flex_uint16_t; + typedef unsigned int flex_uint32_t; +-#endif /* ! C99 */ + + /* Limits of integral types. */ + #ifndef INT8_MIN +@@ -85,6 +103,8 @@ + #define UINT32_MAX (4294967295U) + #endif + ++#endif /* ! C99 */ ++ + #endif /* ! FLEXINT_H */ + + #ifdef __cplusplus +@@ -94,11 +114,12 @@ + + #else /* ! __cplusplus */ + +-#if __STDC__ ++/* C99 requires __STDC__ to be defined as 1. */ ++#if defined (__STDC__) + + #define YY_USE_CONST + +-#endif /* __STDC__ */ ++#endif /* defined (__STDC__) */ + #endif /* ! __cplusplus */ + + #ifdef YY_USE_CONST +@@ -140,7 +161,15 @@ + + /* Size of default input buffer. */ + #ifndef YY_BUF_SIZE ++#ifdef __ia64__ ++/* On IA-64, the buffer size is 16k, not 8k. ++ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ++ * Ditto for the __ia64__ case accordingly. ++ */ ++#define YY_BUF_SIZE 32768 ++#else + #define YY_BUF_SIZE 16384 ++#endif /* __ia64__ */ + #endif + + /* The state buf must be large enough to hold one state per character in the main buffer. +@@ -178,14 +207,9 @@ + + #define unput(c) yyunput( c, (yytext_ptr) ) + +-/* The following is because we cannot portably get our hands on size_t +- * (without autoconf's help, which isn't available because we want +- * flex-generated scanners to compile on their own). +- */ +- + #ifndef YY_TYPEDEF_YY_SIZE_T + #define YY_TYPEDEF_YY_SIZE_T +-typedef unsigned int yy_size_t; ++typedef size_t yy_size_t; + #endif + + #ifndef YY_STRUCT_YY_BUFFER_STATE +@@ -373,13 +397,13 @@ + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +-static yyconst flex_int16_t yy_accept[1538] = ++static yyconst flex_int16_t yy_accept[1536] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 277, 1, 275, 277, 2, 277, 277, +- 277, 258, 274, 258, 277, 274, 274, 274, 274, 274, ++ 277, 258, 274, 258, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 274, 274, 276, ++ 274, 274, 274, 274, 274, 274, 274, 274, 277, 276, + 276, 3, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 1, 277, 277, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +@@ -389,27 +413,27 @@ + 278, 278, 278, 278, 278, 278, 276, 276, 279, 1, + 279, 279, 273, 272, 279, 1, 0, 268, 2, 0, + 268, 0, 265, 258, 258, 274, 258, 274, 0, 274, +- 263, 258, 0, 0, 257, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 189, 274, 274, 192, 274, 193, +- 274, 274, 198, 274, 274, 274, 274, 274, 274, 274, ++ 263, 258, 0, 274, 274, 274, 274, 274, 274, 274, ++ 274, 274, 189, 274, 274, 192, 274, 193, 274, 274, ++ 198, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 274, 210, 274, +- 274, 212, 274, 213, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 223, 274, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 274, 274, 210, 274, 274, 212, ++ 274, 213, 274, 274, 274, 274, 274, 274, 274, 274, ++ 274, 223, 274, 274, 274, 274, 274, 274, 274, 274, + + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 171, 274, 274, 248, 249, 274, 250, 274, 274, 274, +- 274, 274, 274, 274, 0, 0, 256, 0, 0, 0, ++ 274, 274, 274, 274, 274, 274, 274, 274, 171, 274, ++ 274, 248, 249, 274, 250, 274, 274, 274, 274, 274, ++ 274, 274, 0, 257, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 268, 0, 274, 192, 274, 274, 274, ++ 0, 256, 0, 268, 0, 274, 192, 274, 274, 274, ++ 274, 274, 274, 274, 274, 274, 274, 274, 274, 223, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 223, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 7, 0, 0, 5, 0, 0, 259, 259, +- 259, 0, 0, 264, 259, 0, 11, 6, 12, 10, ++ 274, 7, 0, 0, 5, 0, 0, 259, 259, 259, ++ 0, 0, 264, 259, 0, 11, 6, 12, 10, 0, + +- 0, 260, 0, 8, 0, 13, 11, 9, 0, 4, +- 0, 267, 0, 273, 271, 266, 258, 0, 0, 274, ++ 8, 0, 13, 11, 9, 0, 4, 0, 260, 0, ++ 267, 0, 273, 271, 266, 266, 258, 0, 0, 274, + 258, 263, 261, 258, 0, 0, 258, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 194, 274, 274, 274, 274, +@@ -425,10 +449,10 @@ + 274, 238, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 179, 252, 274, 181, 253, +- 274, 0, 255, 0, 0, 0, 0, 0, 0, 96, +- 0, 0, 0, 0, 0, 0, 0, 0, 179, 274, +- 274, 274, 274, 274, 274, 274, 274, 221, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 274, 269, 0, ++ 274, 0, 0, 0, 0, 0, 0, 96, 0, 0, ++ 0, 0, 0, 0, 0, 0, 179, 0, 255, 274, ++ 274, 274, 274, 274, 274, 274, 221, 274, 274, 274, ++ 274, 274, 274, 274, 274, 274, 274, 269, 269, 0, + + 259, 262, 259, 0, 0, 259, 16, 0, 14, 258, + 261, 0, 258, 274, 274, 274, 274, 184, 274, 274, +@@ -449,101 +473,101 @@ + 274, 274, 274, 274, 246, 177, 274, 274, 274, 182, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 155, 0, 0, 0, 274, 37, 274, 54, 274, 274, +- 274, 274, 155, 274, 274, 246, 0, 259, 0, 254, +- 22, 274, 274, 274, 274, 185, 274, 274, 274, 274, ++ 274, 155, 274, 274, 246, 0, 259, 0, 254, 22, ++ 274, 274, 274, 274, 185, 274, 274, 274, 274, 274, + +- 274, 190, 274, 31, 33, 274, 274, 274, 274, 39, +- 274, 274, 274, 200, 42, 274, 45, 274, 274, 201, +- 274, 274, 274, 274, 274, 274, 56, 274, 204, 274, +- 62, 205, 274, 274, 64, 274, 274, 72, 274, 274, +- 274, 274, 274, 79, 209, 274, 89, 274, 274, 274, ++ 190, 274, 31, 33, 274, 274, 274, 274, 39, 274, ++ 274, 274, 200, 42, 274, 45, 274, 274, 201, 274, ++ 274, 274, 274, 274, 274, 56, 274, 204, 274, 62, ++ 205, 274, 274, 64, 274, 274, 72, 274, 274, 274, ++ 274, 274, 79, 209, 274, 89, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 216, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 217, 274, 233, 195, 274, ++ 274, 274, 216, 274, 274, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 217, 274, 233, 195, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 230, 274, 274, 274, 274, 274, ++ 274, 274, 274, 230, 274, 274, 274, 274, 274, 274, + +- 274, 274, 235, 274, 274, 274, 274, 274, 274, 237, +- 149, 274, 274, 274, 274, 274, 274, 242, 274, 274, +- 158, 274, 164, 274, 274, 170, 274, 274, 274, 274, +- 178, 274, 180, 22, 31, 0, 0, 89, 0, 0, +- 0, 0, 0, 158, 0, 178, 33, 274, 274, 79, +- 274, 274, 274, 274, 0, 274, 274, 274, 274, 274, +- 186, 274, 29, 274, 274, 191, 274, 274, 34, 274, +- 274, 274, 274, 40, 274, 274, 274, 274, 47, 274, +- 50, 51, 203, 274, 53, 274, 274, 63, 206, 274, +- 274, 274, 274, 274, 274, 207, 274, 274, 274, 274, ++ 274, 235, 274, 274, 274, 274, 274, 274, 237, 149, ++ 274, 274, 274, 274, 274, 274, 242, 274, 274, 158, ++ 274, 164, 274, 274, 170, 274, 274, 274, 274, 178, ++ 274, 180, 22, 31, 0, 0, 89, 0, 0, 0, ++ 0, 0, 158, 0, 178, 33, 274, 79, 274, 274, ++ 274, 274, 0, 274, 274, 274, 274, 274, 186, 274, ++ 29, 274, 274, 191, 274, 274, 34, 274, 274, 274, ++ 274, 40, 274, 274, 274, 274, 47, 274, 50, 51, ++ 203, 274, 53, 274, 274, 63, 206, 274, 274, 274, ++ 274, 274, 274, 207, 274, 274, 274, 274, 274, 274, + +- 274, 274, 274, 274, 274, 274, 274, 274, 88, 90, +- 274, 274, 97, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 214, 274, 215, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 220, 123, 274, +- 274, 274, 274, 274, 274, 274, 274, 274, 274, 229, +- 228, 234, 137, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 236, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 240, 241, 274, 243, 157, 274, +- 160, 274, 274, 274, 274, 274, 274, 274, 274, 251, +- 47, 0, 0, 90, 0, 0, 0, 0, 0, 274, ++ 274, 274, 274, 274, 274, 274, 88, 90, 274, 274, ++ 97, 274, 274, 274, 274, 274, 274, 274, 274, 274, ++ 214, 274, 215, 274, 274, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 274, 220, 123, 274, 274, 274, ++ 274, 274, 274, 274, 274, 274, 274, 229, 228, 234, ++ 137, 274, 274, 274, 274, 274, 274, 274, 274, 274, ++ 274, 274, 236, 274, 274, 274, 274, 274, 274, 274, ++ 274, 274, 240, 241, 274, 243, 157, 274, 160, 274, ++ 274, 274, 274, 274, 274, 274, 274, 251, 47, 0, ++ 0, 90, 0, 0, 0, 0, 0, 274, 160, 274, + +- 160, 274, 15, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 197, 199, 274, 274, +- 274, 49, 274, 55, 274, 274, 274, 274, 274, 274, +- 274, 274, 71, 274, 274, 274, 77, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 92, 274, 274, 99, +- 274, 274, 274, 274, 105, 274, 274, 274, 274, 274, +- 111, 274, 274, 274, 274, 274, 118, 274, 274, 274, +- 274, 124, 274, 125, 274, 274, 274, 274, 274, 136, +- 274, 231, 274, 232, 274, 274, 274, 274, 274, 274, ++ 15, 274, 274, 274, 274, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 197, 199, 274, 274, 274, 49, ++ 274, 55, 274, 274, 274, 274, 274, 274, 274, 274, ++ 71, 274, 274, 274, 77, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 92, 274, 274, 99, 274, 274, ++ 274, 274, 105, 274, 274, 274, 274, 274, 111, 274, ++ 274, 274, 274, 274, 118, 274, 274, 274, 274, 124, ++ 274, 125, 274, 274, 274, 274, 274, 136, 274, 231, ++ 274, 232, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 0, 0, 0, 0, 0, 0, 0, ++ 274, 0, 0, 0, 0, 0, 0, 0, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 43, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 70, 274, 274, 76, +- 274, 274, 274, 274, 274, 274, 274, 274, 274, 93, +- 274, 274, 274, 274, 103, 274, 274, 108, 109, 110, +- 274, 274, 274, 274, 116, 274, 274, 121, 218, 274, +- 274, 274, 274, 274, 274, 274, 274, 274, 274, 135, +- 274, 138, 274, 274, 140, 274, 274, 274, 144, 274, ++ 274, 274, 274, 43, 274, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 70, 274, 274, 76, 274, 274, ++ 274, 274, 274, 274, 274, 274, 274, 93, 274, 274, ++ 274, 274, 103, 274, 274, 108, 109, 110, 274, 274, ++ 274, 274, 116, 274, 274, 121, 218, 274, 274, 274, ++ 274, 274, 274, 274, 274, 274, 274, 135, 274, 138, ++ 274, 274, 140, 274, 274, 274, 144, 274, 274, 274, + +- 274, 274, 147, 274, 151, 274, 239, 274, 274, 274, +- 274, 274, 274, 274, 165, 274, 169, 274, 274, 274, +- 245, 247, 0, 0, 144, 0, 0, 151, 0, 165, +- 274, 274, 23, 274, 27, 274, 188, 30, 32, 274, +- 274, 274, 19, 274, 48, 274, 274, 61, 274, 68, +- 69, 274, 66, 73, 74, 274, 274, 274, 274, 82, ++ 147, 274, 151, 274, 239, 274, 274, 274, 274, 274, ++ 274, 274, 165, 274, 169, 274, 274, 274, 245, 247, ++ 0, 0, 144, 0, 0, 151, 0, 165, 274, 274, ++ 23, 274, 27, 274, 188, 30, 32, 274, 274, 274, ++ 19, 274, 48, 274, 274, 61, 274, 68, 69, 274, ++ 66, 73, 74, 274, 274, 274, 274, 82, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 20, 145, 274, ++ 274, 274, 274, 274, 274, 20, 145, 274, 274, 274, + +- 274, 274, 274, 274, 154, 156, 159, 274, 163, 274, +- 168, 172, 176, 274, 0, 66, 145, 0, 0, 21, +- 183, 274, 274, 17, 35, 274, 46, 52, 274, 65, +- 274, 78, 208, 80, 274, 274, 274, 274, 274, 274, +- 98, 100, 274, 274, 274, 274, 274, 112, 274, 274, +- 274, 274, 274, 274, 274, 224, 274, 274, 274, 274, +- 274, 274, 274, 274, 274, 274, 274, 196, 274, 141, +- 142, 274, 146, 148, 150, 274, 153, 274, 274, 274, +- 274, 65, 148, 0, 274, 274, 274, 274, 274, 38, +- 274, 274, 81, 274, 274, 274, 274, 274, 101, 102, ++ 274, 274, 154, 156, 159, 274, 163, 274, 168, 172, ++ 176, 274, 0, 66, 145, 0, 0, 21, 183, 274, ++ 274, 17, 35, 274, 46, 52, 274, 65, 274, 78, ++ 208, 80, 274, 274, 274, 274, 274, 274, 98, 100, ++ 274, 274, 274, 274, 274, 112, 274, 274, 274, 274, ++ 274, 274, 274, 224, 274, 274, 274, 274, 274, 274, ++ 274, 274, 274, 274, 274, 196, 274, 141, 142, 274, ++ 146, 148, 150, 274, 153, 274, 274, 274, 274, 65, ++ 148, 0, 274, 274, 274, 274, 274, 38, 274, 274, ++ 81, 274, 274, 274, 274, 274, 101, 102, 274, 274, + +- 274, 274, 107, 113, 274, 115, 274, 274, 120, 225, +- 274, 274, 274, 274, 274, 274, 274, 274, 133, 274, +- 227, 274, 143, 152, 161, 274, 274, 274, 175, 175, +- 274, 274, 274, 28, 274, 57, 67, 274, 274, 274, +- 91, 274, 274, 106, 274, 274, 119, 274, 126, 127, +- 274, 129, 274, 274, 274, 274, 274, 274, 274, 274, +- 174, 274, 274, 274, 274, 83, 85, 87, 274, 104, +- 274, 117, 226, 274, 274, 274, 274, 134, 274, 274, +- 274, 274, 274, 274, 274, 36, 274, 274, 274, 114, +- 274, 130, 131, 274, 139, 274, 274, 173, 18, 24, ++ 107, 113, 274, 115, 274, 274, 120, 225, 274, 274, ++ 274, 274, 274, 274, 274, 274, 133, 274, 227, 274, ++ 143, 152, 161, 274, 274, 274, 175, 175, 274, 274, ++ 274, 28, 274, 57, 67, 274, 274, 274, 91, 274, ++ 274, 106, 274, 274, 119, 274, 126, 127, 274, 129, ++ 274, 274, 274, 274, 274, 274, 274, 274, 174, 274, ++ 274, 274, 274, 83, 85, 87, 274, 104, 274, 117, ++ 226, 274, 274, 274, 274, 134, 274, 274, 274, 274, ++ 274, 274, 274, 36, 274, 274, 274, 114, 274, 130, ++ 131, 274, 139, 274, 274, 173, 18, 24, 274, 274, + +- 274, 274, 274, 94, 274, 274, 274, 166, 274, 274, +- 274, 274, 274, 162, 274, 274, 274, 274, 274, 274, +- 274, 274, 84, 86, 274, 274, 274, 274, 274, 132, +- 274, 26, 274, 25, 274, 128, 0 ++ 274, 94, 274, 274, 274, 166, 274, 274, 274, 274, ++ 274, 162, 274, 274, 274, 274, 274, 274, 274, 274, ++ 84, 86, 274, 274, 274, 274, 274, 132, 274, 26, ++ 274, 25, 274, 128, 0 + } ; + + static yyconst flex_int32_t yy_ec[256] = +@@ -554,14 +578,14 @@ + 1, 2, 5, 6, 7, 1, 1, 8, 9, 10, + 11, 1, 12, 1, 13, 14, 15, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 1, 1, 17, +- 18, 19, 1, 1, 25, 26, 27, 28, 29, 30, +- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, +- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, +- 20, 21, 22, 1, 23, 24, 25, 26, 27, 28, ++ 18, 19, 1, 1, 20, 21, 22, 23, 24, 25, ++ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, ++ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, ++ 46, 47, 48, 1, 49, 50, 51, 52, 53, 54, + +- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, +- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, +- 49, 50, 1, 51, 1, 52, 1, 1, 1, 1, ++ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, ++ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, ++ 75, 76, 1, 77, 1, 78, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +@@ -578,806 +602,1150 @@ + 1, 1, 1, 1, 1 + } ; + +-static yyconst flex_int32_t yy_meta[54] = ++static yyconst flex_int32_t yy_meta[80] = + { 0, + 1, 1, 2, 1, 1, 3, 1, 1, 3, 1, +- 1, 1, 4, 5, 5, 5, 1, 4, 1, 1, +- 3, 6, 7, 1, 5, 5, 5, 5, 5, 5, ++ 1, 1, 4, 5, 5, 5, 1, 4, 1, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, +- 1, 1, 1 ++ 5, 5, 5, 5, 5, 1, 3, 6, 7, 1, ++ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, ++ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, ++ 5, 5, 5, 5, 5, 5, 1, 1, 1 + } ; + +-static yyconst flex_int16_t yy_base[1560] = ++static yyconst flex_int16_t yy_base[1561] = + { 0, +- 0, 0, 51, 102, 155, 0, 208, 0, 54, 55, +- 60, 61, 1920, 1921, 71, 1921, 1913, 0, 1909, 1906, +- 63, 56, 261, 83, 1894, 65, 88, 290, 95, 282, +- 302, 58, 82, 52, 1876, 85, 309, 103, 300, 316, +- 324, 1869, 330, 343, 349, 341, 1884, 360, 0, 1921, +- 1921, 1921, 46, 1874, 1875, 1862, 1872, 125, 1883, 1862, +- 1877, 367, 1863, 1866, 1874, 348, 1896, 1892, 81, 1875, +- 301, 376, 348, 374, 1870, 71, 1865, 381, 381, 382, +- 325, 386, 387, 374, 1921, 429, 430, 1879, 1890, 1887, +- 1885, 422, 408, 1878, 425, 1874, 363, 1873, 1866, 1851, ++ 0, 0, 77, 154, 233, 0, 311, 389, 80, 81, ++ 86, 87, 959, 3448, 96, 3448, 951, 0, 887, 881, ++ 88, 87, 468, 96, 91, 147, 528, 466, 315, 390, ++ 101, 153, 147, 60, 142, 578, 468, 298, 622, 675, ++ 66, 316, 722, 778, 397, 94, 830, 0, 836, 3448, ++ 3448, 3448, 108, 133, 140, 156, 314, 169, 159, 298, ++ 471, 286, 300, 317, 111, 159, 876, 870, 392, 323, ++ 460, 478, 520, 392, 327, 322, 328, 520, 405, 570, ++ 470, 586, 567, 590, 3448, 224, 355, 859, 870, 860, ++ 855, 385, 520, 821, 544, 773, 403, 766, 347, 364, + +- 1847, 396, 113, 413, 414, 1845, 1835, 1921, 1921, 442, +- 1879, 1875, 0, 1921, 0, 443, 1877, 1849, 0, 1872, +- 1847, 1868, 1867, 432, 435, 0, 434, 443, 1862, 0, +- 1843, 436, 454, 1853, 1852, 1833, 431, 1828, 433, 1825, +- 1826, 1830, 428, 1826, 0, 1842, 1824, 1840, 438, 0, +- 1818, 1819, 0, 447, 1829, 1824, 1824, 442, 451, 1817, +- 440, 1822, 456, 1821, 450, 1817, 1815, 1829, 458, 1809, +- 1827, 1815, 1825, 466, 1816, 1799, 1811, 464, 0, 1815, +- 1807, 0, 1813, 0, 456, 459, 463, 1807, 471, 1805, +- 467, 1811, 1798, 1810, 1813, 1812, 1792, 1806, 473, 1792, ++ 537, 634, 584, 626, 399, 721, 670, 3448, 3448, 433, ++ 729, 710, 0, 3448, 0, 507, 709, 467, 0, 698, ++ 472, 627, 617, 561, 650, 0, 649, 656, 612, 898, ++ 521, 659, 664, 586, 699, 614, 649, 629, 646, 653, ++ 671, 655, 0, 677, 663, 688, 689, 0, 670, 678, ++ 0, 708, 693, 692, 705, 738, 756, 720, 733, 731, ++ 750, 734, 780, 753, 759, 775, 800, 761, 787, 777, ++ 796, 818, 791, 777, 799, 890, 0, 806, 802, 0, ++ 823, 0, 881, 858, 899, 825, 857, 858, 886, 869, ++ 883, 898, 913, 915, 897, 913, 902, 903, 900, 912, + +- 1785, 1787, 483, 479, 1802, 278, 491, 1785, 1804, 1799, +- 1791, 1801, 485, 1800, 1779, 495, 1786, 1796, 488, 493, +- 1785, 505, 1780, 0, 0, 1786, 0, 1791, 1791, 1773, +- 1787, 1770, 1770, 1787, 1789, 517, 1921, 1779, 1784, 1764, +- 1782, 1757, 1774, 1764, 1774, 481, 1777, 1751, 1751, 1774, +- 1765, 1771, 1790, 1921, 1786, 1767, 0, 1757, 1748, 1761, +- 1764, 1761, 1744, 504, 1762, 1759, 1759, 1740, 1747, 1752, +- 0, 1737, 1751, 508, 1740, 1753, 1727, 1751, 1738, 508, +- 1738, 1728, 1921, 1766, 1738, 1921, 1761, 1736, 530, 533, +- 532, 541, 1753, 1734, 536, 551, 1921, 1921, 1921, 1921, ++ 950, 945, 932, 947, 959, 942, 966, 965, 960, 972, ++ 961, 976, 958, 987, 967, 980, 971, 1002, 974, 1019, ++ 983, 0, 0, 1012, 0, 1020, 1022, 1006, 1023, 1009, ++ 1012, 1031, 576, 571, 1026, 1033, 1015, 1035, 1012, 1031, ++ 1023, 1036, 1038, 1041, 1020, 1023, 1048, 1041, 1059, 569, ++ 436, 3448, 583, 3448, 569, 1071, 0, 1064, 1058, 1076, ++ 1081, 1080, 1065, 1075, 1083, 1089, 1073, 1082, 1089, 0, ++ 1076, 1092, 1089, 1084, 1099, 1075, 1101, 1090, 1099, 1092, ++ 1085, 3448, 568, 1101, 3448, 563, 1102, 1139, 1143, 1148, ++ 770, 555, 1110, 1150, 811, 3448, 3448, 3448, 3448, 1142, + +- 1742, 1921, 1737, 1921, 1723, 1921, 1725, 1921, 1718, 1921, +- 1755, 1921, 1751, 0, 1921, 1921, 539, 557, 1743, 1742, +- 1741, 1723, 0, 542, 562, 1739, 1738, 1721, 1716, 1712, +- 1717, 1710, 1713, 1719, 1717, 1708, 1697, 1713, 1698, 1697, +- 1698, 1712, 1695, 1698, 335, 0, 1711, 1690, 1709, 1687, +- 1692, 1698, 1701, 1685, 1689, 0, 1688, 1684, 1696, 1681, +- 1679, 1678, 536, 1685, 1676, 1675, 539, 1681, 0, 1679, +- 1672, 1687, 1669, 1686, 1684, 1678, 1679, 545, 1680, 1679, +- 1669, 546, 1667, 1676, 1673, 1667, 1673, 1672, 1671, 0, +- 0, 1664, 557, 1665, 559, 1668, 1667, 580, 1666, 1650, ++ 3448, 1132, 3448, 1137, 3448, 1132, 3448, 519, 3448, 561, ++ 3448, 555, 0, 3448, 3448, 3448, 1159, 857, 538, 489, ++ 446, 1148, 0, 1161, 862, 426, 422, 1151, 1148, 1146, ++ 1153, 1148, 1154, 1163, 1163, 1156, 1147, 1165, 1152, 1153, ++ 1156, 1173, 1159, 1166, 1200, 0, 1184, 1166, 1188, 1186, ++ 1194, 1202, 1208, 1195, 1202, 0, 1204, 1203, 1217, 1204, ++ 1204, 1205, 1214, 1215, 1208, 1209, 1227, 1218, 0, 1218, ++ 1213, 1231, 1215, 1235, 1239, 1238, 1242, 1260, 1246, 1265, ++ 1259, 1266, 1261, 1272, 1272, 1269, 1278, 1279, 1281, 0, ++ 0, 1276, 1318, 1281, 1290, 1287, 1289, 1372, 1292, 1278, + +- 1660, 1651, 1662, 1661, 1652, 1645, 0, 1674, 1659, 1658, +- 555, 1642, 1639, 1638, 1654, 556, 1649, 1641, 1629, 553, +- 1638, 107, 1634, 1644, 1630, 1644, 1647, 1626, 1631, 1631, +- 1632, 0, 1638, 571, 1626, 1634, 1635, 1627, 1637, 1617, +- 1624, 1633, 1622, 1617, 1612, 1626, 1605, 1617, 1623, 1613, +- 1625, 1620, 1619, 1603, 1602, 0, 0, 1601, 0, 0, +- 1604, 1621, 1921, 1606, 1598, 1611, 1608, 1609, 1608, 1921, +- 1594, 1606, 1595, 1597, 1603, 1595, 1592, 1585, 1921, 1589, +- 1602, 1597, 1581, 1593, 1591, 1593, 1592, 0, 1584, 1577, +- 1580, 1584, 1582, 1587, 1585, 1587, 1572, 1582, 1921, 1594, ++ 1291, 1285, 1300, 1304, 1298, 1294, 0, 383, 1327, 1329, ++ 1323, 1316, 1326, 1328, 1346, 1349, 1345, 1339, 1331, 1362, ++ 1342, 1386, 1341, 1360, 1355, 1381, 1393, 1376, 1384, 1386, ++ 1389, 0, 1398, 1417, 1392, 1403, 1406, 1402, 1414, 1396, ++ 1406, 1417, 1412, 1413, 1415, 1431, 1412, 1426, 1435, 1429, ++ 1443, 1443, 1446, 1433, 1434, 0, 0, 1436, 0, 0, ++ 1441, 1446, 1440, 1456, 1455, 1458, 1460, 3448, 1452, 1467, ++ 1458, 1464, 1472, 1466, 1466, 1461, 3448, 337, 3448, 1468, ++ 1485, 1486, 1475, 1489, 1493, 1494, 0, 1488, 1484, 1491, ++ 1497, 1500, 1509, 1510, 1514, 1502, 1514, 3448, 3448, 368, + +- 1593, 1921, 578, 602, 1592, 1591, 1921, 1575, 1921, 1589, +- 1921, 1588, 1587, 1577, 1572, 1556, 1574, 0, 1567, 1554, +- 1560, 1570, 1551, 1564, 0, 1553, 573, 1555, 1547, 1547, +- 1555, 1558, 579, 1555, 1540, 1555, 0, 1543, 1554, 1532, +- 1552, 1537, 1549, 1539, 1547, 1530, 0, 1545, 1544, 1533, +- 1528, 1541, 1540, 1543, 0, 1523, 1533, 0, 1525, 1532, +- 1534, 1518, 1532, 1531, 1514, 1510, 1515, 0, 1519, 563, +- 1518, 1518, 1524, 1513, 1509, 1512, 575, 1520, 1506, 1508, +- 1517, 1507, 589, 1515, 1510, 1497, 1513, 1498, 1496, 1494, +- 1495, 1497, 1502, 1505, 1495, 593, 1503, 1498, 1488, 1496, ++ 344, 3448, 1527, 1541, 305, 216, 3448, 1513, 3448, 213, ++ 3448, 149, 127, 1520, 1518, 1505, 1526, 0, 1532, 1521, ++ 1530, 1542, 1526, 1543, 0, 1538, 1558, 1543, 1538, 1542, ++ 1552, 1557, 1548, 1558, 1546, 1563, 0, 1553, 1568, 1550, ++ 1573, 1562, 1576, 1568, 1578, 1564, 0, 1582, 1584, 1579, ++ 1582, 1597, 1599, 1604, 0, 1587, 1601, 0, 1599, 1609, ++ 1614, 1601, 1617, 1618, 1603, 1602, 1609, 0, 1615, 1621, ++ 1616, 1619, 1629, 1624, 1622, 1628, 1641, 1638, 1627, 1632, ++ 1644, 1642, 1660, 1659, 1657, 1646, 1668, 1659, 1660, 1663, ++ 1666, 1670, 1677, 1683, 1675, 1690, 1685, 1682, 1674, 1687, + +- 1485, 1491, 0, 0, 1501, 596, 1481, 1491, 1487, 1489, +- 1476, 1484, 1486, 1489, 1488, 1480, 1490, 1481, 1469, 1481, +- 1467, 597, 1468, 1480, 1479, 1458, 1477, 1476, 1462, 1459, +- 1469, 1465, 1472, 1470, 1471, 1458, 1467, 1459, 1458, 1448, +- 1456, 1449, 1445, 1460, 1449, 1458, 1450, 0, 1452, 0, +- 1455, 1441, 1439, 1443, 1436, 0, 1436, 1439, 1445, 0, +- 1447, 1432, 1436, 1444, 1430, 1433, 1421, 1427, 1432, 1438, +- 1921, 1437, 1422, 1421, 1421, 0, 1424, 0, 1432, 1424, +- 1423, 1414, 0, 1418, 1420, 0, 1439, 1438, 1409, 1425, +- 0, 1426, 1414, 1407, 1415, 0, 1407, 1417, 1403, 1408, ++ 1682, 1690, 0, 0, 1703, 1700, 1686, 1698, 1701, 1709, ++ 1704, 1714, 1719, 1724, 1726, 1722, 1738, 1732, 1723, 1738, ++ 1726, 1740, 1730, 1745, 1746, 1728, 1749, 1750, 1740, 1741, ++ 1754, 1752, 1762, 1762, 1765, 1754, 1766, 1761, 1763, 1759, ++ 1775, 1770, 1769, 1786, 1778, 1791, 1789, 0, 1794, 0, ++ 1800, 1789, 1789, 1795, 1790, 0, 1793, 1798, 1806, 0, ++ 1810, 1797, 1803, 1815, 1805, 1811, 1801, 1810, 1817, 1825, ++ 3448, 1826, 1814, 1816, 1819, 0, 1828, 0, 1837, 1838, ++ 1832, 0, 1838, 1843, 0, 119, 91, 1838, 1860, 0, ++ 1864, 1855, 1851, 1861, 0, 1855, 1867, 1856, 1863, 1873, + +- 1416, 0, 1413, 1408, 1398, 1408, 1411, 1412, 1411, 0, +- 1399, 1392, 1390, 0, 0, 1399, 0, 1388, 587, 0, +- 1388, 1401, 1386, 1380, 1376, 1297, 0, 1292, 0, 1301, +- 0, 0, 1272, 57, 605, 378, 467, 0, 601, 503, +- 510, 567, 583, 621, 0, 597, 0, 608, 614, 601, +- 599, 616, 596, 627, 609, 630, 606, 631, 622, 632, +- 624, 637, 621, 0, 616, 639, 619, 625, 644, 626, +- 646, 622, 647, 637, 647, 0, 636, 0, 0, 641, +- 634, 635, 641, 637, 653, 645, 640, 660, 661, 645, +- 650, 646, 650, 653, 649, 654, 661, 662, 671, 664, ++ 0, 1872, 1869, 1861, 1875, 1882, 1886, 1887, 0, 1878, ++ 1873, 1873, 0, 0, 1884, 0, 1876, 1892, 0, 1879, ++ 1895, 1886, 1891, 1910, 1899, 0, 1900, 0, 1922, 0, ++ 0, 1909, 1924, 1958, 1912, 1928, 0, 1927, 1932, 1908, ++ 1935, 1932, 1963, 0, 1938, 0, 1949, 1953, 1940, 1939, ++ 1956, 1949, 1976, 1962, 1986, 1963, 1989, 1980, 1990, 1982, ++ 1995, 1979, 0, 1974, 1998, 1987, 1995, 2014, 1996, 2016, ++ 1993, 2019, 2010, 2024, 0, 2015, 0, 0, 2021, 2014, ++ 2015, 2021, 2017, 2033, 2025, 2020, 2040, 2042, 2026, 2035, ++ 2032, 2037, 2041, 2037, 2042, 2049, 2067, 2059, 2052, 2044, + +- 655, 672, 670, 668, 660, 674, 672, 664, 663, 0, +- 683, 666, 665, 673, 685, 686, 678, 0, 688, 675, +- 686, 684, 0, 696, 684, 0, 698, 694, 694, 677, +- 0, 685, 0, 1921, 1921, 685, 703, 1921, 703, 695, +- 704, 690, 710, 1921, 697, 1921, 0, 694, 699, 707, +- 716, 699, 707, 720, 714, 709, 705, 717, 712, 708, +- 0, 723, 0, 721, 711, 0, 712, 732, 0, 714, +- 715, 722, 717, 0, 733, 725, 721, 732, 0, 737, +- 0, 734, 0, 724, 0, 730, 725, 0, 0, 732, +- 733, 748, 729, 726, 734, 0, 748, 753, 754, 749, ++ 2070, 2077, 2068, 2060, 2074, 2072, 2075, 2074, 0, 2094, ++ 2077, 2076, 2084, 2096, 2097, 2089, 0, 2100, 2087, 2102, ++ 2101, 0, 2114, 2103, 0, 2117, 2119, 2112, 2095, 0, ++ 2104, 0, 3448, 3448, 2118, 2137, 3448, 2135, 2128, 2138, ++ 2124, 2145, 3448, 2136, 3448, 0, 2135, 2149, 2158, 2141, ++ 2149, 2161, 2155, 2149, 2145, 2158, 2153, 2153, 0, 2169, ++ 0, 2168, 2159, 0, 2160, 2180, 0, 2162, 2164, 2171, ++ 2167, 0, 2192, 2186, 2182, 2193, 0, 2198, 0, 2196, ++ 0, 2187, 0, 2194, 2193, 0, 0, 2202, 2204, 2219, ++ 2200, 2197, 2205, 0, 2219, 2224, 2225, 2220, 2224, 2227, + +- 752, 755, 739, 759, 746, 742, 762, 759, 0, 759, +- 750, 758, 749, 750, 751, 752, 768, 762, 770, 772, +- 761, 758, 0, 759, 0, 764, 762, 763, 763, 764, +- 780, 774, 782, 784, 773, 770, 779, 0, 0, 787, +- 804, 769, 776, 791, 791, 773, 787, 786, 781, 0, +- 0, 0, 0, 788, 788, 785, 800, 804, 787, 789, +- 789, 795, 810, 792, 0, 799, 792, 810, 796, 816, +- 813, 814, 817, 820, 0, 0, 813, 0, 0, 803, +- 805, 805, 822, 822, 814, 814, 829, 819, 816, 0, +- 1921, 818, 809, 1921, 834, 823, 818, 838, 839, 816, ++ 2215, 2236, 2224, 2221, 2258, 2237, 0, 2237, 2228, 2237, ++ 2228, 2230, 2243, 2243, 2259, 2253, 2264, 2267, 2260, 2259, ++ 0, 2261, 0, 2266, 2264, 2265, 2265, 2266, 2282, 2276, ++ 2284, 2287, 2276, 2277, 2287, 0, 0, 2296, 75, 2278, ++ 2285, 2300, 2300, 2283, 2297, 2297, 2301, 0, 0, 0, ++ 0, 2310, 2310, 2307, 2322, 2327, 2311, 2314, 2318, 2326, ++ 2342, 2324, 0, 2331, 2324, 2342, 2328, 2348, 2345, 2346, ++ 2351, 2352, 0, 0, 2350, 0, 0, 2341, 2344, 2345, ++ 2362, 2362, 2354, 2356, 2372, 2371, 2370, 0, 3448, 2372, ++ 2363, 3448, 2388, 2377, 2373, 2394, 2399, 2378, 0, 2385, + +- 0, 822, 1921, 831, 835, 844, 825, 842, 833, 835, +- 845, 846, 838, 844, 834, 848, 0, 0, 849, 848, +- 843, 0, 839, 0, 844, 849, 850, 859, 844, 864, +- 850, 855, 0, 865, 857, 865, 0, 862, 867, 870, +- 856, 870, 852, 863, 861, 864, 0, 866, 872, 0, +- 873, 862, 866, 880, 0, 877, 875, 880, 888, 885, +- 0, 882, 891, 872, 876, 890, 0, 887, 885, 890, +- 894, 0, 887, 0, 885, 900, 889, 903, 888, 0, +- 907, 0, 895, 0, 891, 906, 887, 904, 905, 897, +- 901, 914, 917, 916, 904, 915, 907, 912, 923, 913, ++ 3448, 2394, 2398, 2407, 2388, 2405, 2396, 2398, 2408, 2410, ++ 2402, 2412, 2403, 2418, 0, 0, 2420, 2419, 2414, 0, ++ 2410, 0, 2416, 2421, 2423, 2441, 2428, 2448, 2434, 2439, ++ 0, 2450, 2443, 2452, 0, 2453, 2460, 2464, 2450, 2464, ++ 2446, 2457, 2455, 2458, 0, 2460, 2466, 0, 2468, 2457, ++ 2465, 2480, 0, 2478, 2477, 2482, 2490, 2487, 0, 2485, ++ 2494, 2476, 2489, 2505, 0, 2502, 2500, 2505, 2510, 0, ++ 2504, 0, 2508, 2524, 2514, 2532, 2511, 0, 2530, 0, ++ 2518, 0, 2514, 2531, 2512, 2530, 2531, 2531, 2536, 2548, ++ 2551, 2551, 2538, 2550, 2551, 2558, 2569, 2559, 2566, 2557, + +- 920, 910, 911, 927, 930, 929, 931, 924, 935, 921, +- 922, 936, 937, 931, 928, 929, 943, 938, 930, 931, +- 948, 947, 938, 939, 936, 942, 944, 940, 954, 942, +- 948, 955, 949, 960, 961, 0, 953, 955, 965, 951, +- 967, 958, 969, 967, 964, 972, 0, 973, 960, 0, +- 966, 963, 974, 970, 971, 966, 967, 966, 970, 976, +- 964, 965, 974, 971, 990, 973, 995, 0, 0, 0, +- 971, 984, 981, 978, 997, 980, 1002, 0, 0, 1003, +- 991, 1005, 992, 990, 1008, 995, 1010, 991, 1004, 0, +- 1007, 0, 998, 1004, 0, 1003, 1003, 1007, 0, 1008, ++ 2559, 2576, 2586, 2581, 2587, 2580, 2591, 2577, 2578, 2592, ++ 2593, 2587, 2585, 2586, 2604, 2600, 2593, 2595, 2616, 2609, ++ 2600, 2601, 2602, 2620, 2623, 2619, 2634, 2623, 2630, 2641, ++ 2636, 2648, 2649, 0, 2640, 2642, 2652, 2638, 2654, 2645, ++ 2656, 2655, 2652, 2664, 0, 2666, 2654, 0, 2661, 2658, ++ 2669, 2665, 2667, 2662, 2664, 2672, 2678, 2684, 2672, 2673, ++ 2683, 2681, 2701, 2688, 2712, 0, 0, 0, 2689, 2702, ++ 2699, 2696, 2715, 2698, 2720, 0, 0, 2721, 2709, 2724, ++ 2711, 2713, 2732, 2720, 2736, 2717, 2730, 0, 2733, 0, ++ 2725, 2731, 0, 2744, 2744, 2747, 0, 2748, 2758, 2745, + +- 1017, 1003, 0, 1009, 0, 1010, 0, 1014, 1001, 1020, +- 1011, 1018, 1031, 1013, 1018, 1011, 0, 1031, 1024, 1033, +- 0, 0, 1024, 1035, 1921, 1036, 1027, 1921, 1038, 0, +- 1026, 1031, 0, 1042, 0, 1034, 0, 0, 0, 1043, +- 1035, 1032, 0, 1037, 0, 1039, 1044, 0, 1036, 0, +- 0, 1046, 0, 0, 0, 1049, 1038, 1053, 1058, 0, +- 1057, 1058, 1053, 1050, 1063, 1060, 1061, 1062, 1067, 1064, +- 1061, 1051, 1067, 1070, 1069, 1074, 1071, 1068, 1058, 1065, +- 1075, 1061, 1070, 1070, 1081, 1073, 1062, 1073, 1068, 1063, +- 1077, 1086, 1080, 1090, 1087, 1081, 1095, 0, 0, 1082, ++ 0, 2752, 0, 2757, 0, 2763, 2751, 2770, 2760, 2767, ++ 2780, 2762, 2767, 2760, 0, 2780, 2774, 2783, 0, 0, ++ 2778, 2790, 3448, 2792, 2784, 3448, 2795, 0, 2783, 2788, ++ 0, 2800, 0, 2792, 0, 0, 0, 2802, 2803, 2802, ++ 0, 2807, 0, 2809, 2814, 0, 2807, 0, 0, 2818, ++ 0, 0, 0, 2822, 2815, 2832, 2838, 0, 2837, 2838, ++ 2833, 2830, 2843, 2840, 2841, 2842, 2848, 2845, 2846, 2837, ++ 2854, 2858, 2857, 2862, 2859, 2857, 2847, 2855, 2874, 2862, ++ 2871, 2871, 2882, 2875, 2865, 2877, 2876, 2873, 2888, 2897, ++ 2891, 2901, 2898, 2892, 2906, 0, 0, 2893, 2895, 2898, + +- 1084, 1086, 1085, 1096, 0, 0, 0, 1090, 0, 1102, +- 0, 1083, 0, 1091, 1088, 1921, 1921, 1093, 1094, 1091, +- 0, 1107, 1110, 0, 1092, 1099, 0, 0, 1099, 0, +- 1095, 0, 0, 0, 1096, 1116, 1117, 1101, 1119, 1097, +- 0, 0, 1103, 1111, 1110, 1121, 1122, 0, 1123, 1110, +- 1118, 1117, 1128, 1128, 1109, 0, 1126, 1121, 1136, 1127, +- 1124, 1121, 1122, 1130, 1138, 1142, 1126, 0, 1145, 0, +- 0, 1127, 0, 0, 0, 1130, 0, 1144, 1130, 1137, +- 1149, 1921, 1921, 1133, 1153, 1140, 1148, 1137, 1133, 0, +- 1145, 1135, 0, 1149, 1150, 1158, 1144, 1146, 0, 0, ++ 2897, 2912, 0, 0, 0, 2907, 0, 2920, 0, 2902, ++ 0, 2910, 2907, 3448, 3448, 2912, 2914, 2911, 0, 2928, ++ 2940, 0, 2924, 2931, 0, 0, 2931, 0, 2929, 0, ++ 0, 0, 2931, 2952, 2957, 2943, 2962, 2940, 0, 0, ++ 2946, 2954, 2953, 2964, 2964, 0, 2965, 2952, 2961, 2960, ++ 2975, 2976, 2958, 0, 2976, 2971, 2986, 2977, 2975, 2972, ++ 2974, 2991, 3001, 3005, 2989, 0, 3008, 0, 0, 2991, ++ 0, 0, 0, 2995, 0, 3010, 3000, 3009, 3023, 3448, ++ 3448, 3005, 3026, 3013, 3021, 3010, 3006, 0, 3018, 3008, ++ 0, 3023, 3024, 3036, 3025, 3028, 0, 0, 3033, 3044, + +- 1151, 1162, 0, 0, 1159, 0, 1155, 1166, 0, 0, +- 1171, 1155, 1154, 1168, 1158, 1168, 1169, 1170, 0, 1165, +- 0, 1178, 0, 0, 1178, 1163, 1175, 1160, 0, 1921, +- 1172, 1175, 1187, 0, 1173, 0, 0, 1185, 1186, 1173, +- 0, 1184, 1181, 0, 1169, 1183, 0, 1185, 0, 0, +- 1180, 0, 1173, 1174, 1187, 1190, 1195, 1199, 1200, 1186, +- 0, 1200, 1193, 1205, 1205, 1207, 1208, 0, 1187, 0, +- 1209, 0, 0, 1200, 1211, 1212, 1213, 0, 1214, 1206, +- 1203, 1203, 1218, 1206, 1210, 0, 1221, 1222, 1223, 0, +- 1208, 0, 0, 1227, 0, 1216, 1218, 0, 0, 0, ++ 0, 0, 3041, 0, 3037, 3048, 0, 0, 3054, 3047, ++ 3048, 3062, 3052, 3062, 3064, 3066, 0, 3062, 0, 3079, ++ 0, 0, 3081, 3067, 3079, 3064, 0, 3448, 3076, 3079, ++ 3091, 0, 3077, 0, 0, 3089, 3090, 3078, 0, 3089, ++ 3090, 0, 3079, 3094, 0, 3097, 0, 0, 3092, 0, ++ 3085, 3086, 3100, 3103, 3109, 3122, 3125, 3111, 0, 3125, ++ 3118, 3131, 3132, 3135, 3140, 0, 3121, 0, 3144, 0, ++ 0, 3135, 3146, 3147, 3148, 0, 3149, 3141, 3138, 3138, ++ 3154, 3142, 3150, 0, 3162, 3164, 3166, 0, 3151, 0, ++ 0, 3170, 0, 3159, 3162, 0, 0, 0, 3154, 3165, + +- 1210, 1220, 1221, 0, 1222, 1222, 1225, 0, 1236, 1225, +- 1226, 1238, 1231, 0, 1229, 1236, 1233, 1234, 1245, 1234, +- 1238, 1225, 0, 0, 1237, 1235, 1239, 1251, 1245, 0, +- 1240, 0, 1244, 0, 1242, 0, 1921, 1284, 1291, 1298, +- 1305, 1312, 1319, 1326, 1330, 1337, 1340, 1346, 1353, 1360, +- 1367, 1374, 1381, 1388, 1395, 1402, 1409, 1416, 1420 ++ 3175, 0, 3178, 3178, 3181, 0, 3192, 3182, 3184, 3197, ++ 3194, 0, 3194, 3203, 3200, 3201, 3212, 3201, 3205, 3192, ++ 0, 0, 3204, 3203, 3207, 3222, 3217, 0, 3213, 0, ++ 3218, 0, 3216, 0, 3448, 3284, 3291, 3298, 3305, 3312, ++ 3319, 3326, 3333, 3337, 3344, 3351, 3354, 3360, 3367, 3374, ++ 3381, 3388, 3395, 3402, 3409, 3416, 3423, 3430, 3437, 3441 + } ; + +-static yyconst flex_int16_t yy_def[1560] = ++static yyconst flex_int16_t yy_def[1561] = + { 0, +- 1537, 1, 1538, 1538, 1537, 5, 1537, 7, 1539, 1539, +- 1540, 1540, 1537, 1537, 1537, 1537, 1541, 1542, 1543, 1544, +- 1537, 1545, 1537, 1537, 1546, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1537, +- 1537, 1537, 1547, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1548, 1549, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1550, 1537, +- 1551, 1537, 1537, 1552, 1537, 1537, 1537, 1537, 1553, 1537, ++ 1535, 1, 1536, 1536, 1535, 5, 1537, 1537, 1538, 1538, ++ 1539, 1539, 1535, 1535, 1535, 1535, 1540, 1541, 1542, 1543, ++ 1535, 1544, 1545, 1535, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1546, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1547, 1535, 1548, 1549, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1535, 1535, 1535, 1535, 1550, 1535, ++ 1551, 1535, 1535, 1552, 1535, 1535, 1535, 1535, 1535, 1535, + +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1554, 1555, 1556, 1537, 1557, 1537, 1541, 1537, 1542, 1543, +- 1537, 1544, 1544, 1537, 1537, 1545, 1545, 1545, 1558, 23, +- 1545, 1537, 1537, 1546, 1546, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1535, 1535, 1535, 1535, 1535, 1553, 1535, 1535, 1535, 1535, ++ 1554, 1555, 1556, 1535, 1557, 1535, 1540, 1535, 1541, 1542, ++ 1535, 1543, 1543, 1535, 1535, 1544, 1544, 1544, 1558, 1559, ++ 1544, 1535, 1535, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1559, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1548, 1537, 1549, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1537, 1550, 1537, 1537, 1551, 1537, 1537, 1537, +- 1537, 1537, 1552, 1537, 1537, 1537, 1537, 1537, 1537, 1537, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1546, 1546, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1560, ++ 1535, 1535, 1548, 1535, 1549, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1535, 1550, 1535, 1535, 1551, 1535, 1535, 1535, 1535, ++ 1535, 1552, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + +- 1553, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1554, 1537, 1555, 1556, 1537, 1537, 1537, 1537, 1537, 1545, +- 1545, 1537, 1545, 1537, 1537, 1537, 1537, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1553, 1535, 1554, ++ 1535, 1555, 1556, 1535, 1535, 1535, 1535, 1535, 1535, 1544, ++ 1544, 1535, 1544, 1535, 1535, 1535, 1535, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1559, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1537, 1537, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1560, 1535, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1535, 1535, 1535, + +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1537, 1537, 1537, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1535, 1535, 1535, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1537, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1535, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1544, 1544, 1544, + +- 1545, 1545, 1537, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1535, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1537, 1537, 1537, 1537, 1537, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1537, 1537, 1537, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1535, 1535, 1535, 1535, 1535, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1535, ++ 1535, 1535, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1537, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1535, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, + +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, +- 1545, 1545, 1545, 1545, 1545, 1545, 0, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537 ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, ++ 1544, 1544, 1544, 1544, 0, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535 + } ; + +-static yyconst flex_int16_t yy_nxt[1975] = ++static yyconst flex_int16_t yy_nxt[3528] = + { 0, + 14, 15, 16, 15, 14, 17, 18, 14, 19, 20, + 14, 14, 21, 22, 23, 24, 14, 14, 14, 25, +- 14, 14, 14, 14, 26, 27, 28, 29, 30, 31, +- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +- 42, 43, 44, 45, 46, 47, 48, 49, 49, 49, +- 14, 14, 14, 50, 51, 110, 110, 110, 110, 111, +- 111, 236, 112, 112, 52, 114, 114, 237, 114, 114, +- 53, 127, 116, 52, 116, 54, 124, 55, 125, 56, +- 115, 115, 167, 57, 128, 889, 58, 59, 173, 174, +- 168, 60, 61, 62, 63, 64, 132, 65, 125, 169, ++ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, ++ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, ++ 46, 47, 48, 48, 48, 49, 14, 14, 14, 14, ++ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, ++ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, ++ 45, 46, 47, 48, 48, 48, 14, 14, 14, 50, ++ 51, 110, 110, 110, 110, 111, 111, 1071, 112, 112, ++ 52, 114, 114, 173, 114, 114, 53, 116, 54, 116, + +- 136, 51, 137, 51, 50, 51, 170, 265, 266, 138, +- 171, 133, 139, 176, 172, 52, 140, 177, 137, 152, +- 141, 53, 153, 154, 52, 138, 54, 185, 55, 142, +- 56, 186, 143, 624, 57, 187, 155, 58, 59, 156, +- 625, 305, 60, 61, 62, 63, 64, 188, 65, 242, +- 306, 189, 51, 243, 51, 14, 15, 50, 66, 14, +- 67, 14, 14, 68, 14, 14, 14, 21, 22, 49, +- 24, 14, 14, 14, 14, 14, 14, 14, 14, 69, +- 70, 71, 72, 73, 74, 49, 75, 76, 49, 77, +- 78, 79, 49, 80, 81, 49, 49, 82, 83, 46, ++ 55, 124, 127, 125, 56, 203, 687, 57, 58, 132, ++ 128, 125, 59, 60, 61, 62, 63, 226, 64, 133, ++ 165, 134, 65, 135, 173, 52, 251, 53, 166, 54, ++ 136, 55, 115, 115, 687, 56, 203, 167, 57, 58, ++ 235, 128, 513, 59, 60, 61, 62, 63, 226, 64, ++ 133, 165, 134, 51, 135, 51, 50, 51, 252, 166, ++ 116, 136, 116, 236, 513, 174, 137, 52, 167, 175, ++ 138, 235, 168, 53, 139, 54, 169, 55, 171, 172, ++ 170, 56, 237, 140, 57, 58, 141, 238, 241, 59, ++ 60, 61, 62, 63, 236, 64, 174, 137, 242, 65, + +- 49, 84, 49, 49, 49, 51, 14, 51, 85, 86, +- 50, 87, 88, 89, 85, 90, 91, 85, 85, 85, +- 92, 93, 94, 95, 96, 97, 98, 85, 85, 85, +- 85, 99, 100, 85, 85, 85, 101, 85, 102, 85, +- 103, 85, 85, 104, 85, 105, 106, 85, 85, 85, +- 85, 85, 85, 85, 85, 85, 85, 85, 107, 85, +- 108, 129, 129, 129, 129, 129, 129, 129, 129, 129, +- 129, 129, 129, 130, 130, 131, 130, 129, 130, 129, +- 129, 129, 129, 130, 129, 130, 130, 130, 130, 130, +- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, ++ 175, 138, 52, 168, 53, 139, 54, 169, 55, 171, ++ 172, 170, 56, 237, 140, 57, 58, 141, 238, 241, ++ 59, 60, 61, 62, 63, 116, 64, 116, 510, 242, ++ 51, 506, 51, 14, 15, 50, 66, 14, 67, 14, ++ 14, 68, 14, 14, 14, 21, 22, 48, 24, 14, ++ 14, 14, 69, 70, 71, 72, 73, 74, 48, 75, ++ 76, 48, 77, 78, 79, 48, 80, 81, 48, 48, ++ 82, 83, 45, 48, 84, 48, 48, 48, 14, 14, ++ 14, 14, 14, 69, 70, 71, 72, 73, 74, 48, ++ 75, 76, 48, 77, 78, 79, 48, 80, 81, 48, + +- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, +- 130, 129, 129, 129, 144, 424, 145, 157, 158, 159, +- 425, 146, 147, 160, 190, 148, 162, 145, 149, 161, +- 163, 150, 151, 178, 164, 179, 257, 180, 191, 258, +- 165, 181, 150, 166, 182, 192, 193, 183, 199, 116, +- 184, 116, 200, 194, 206, 195, 201, 196, 207, 202, +- 197, 198, 203, 274, 531, 204, 275, 224, 208, 209, +- 210, 211, 532, 218, 212, 213, 225, 219, 226, 214, +- 298, 220, 227, 215, 261, 262, 216, 221, 229, 230, +- 222, 217, 231, 247, 232, 263, 233, 223, 162, 248, ++ 48, 82, 83, 45, 48, 84, 48, 48, 48, 51, ++ 14, 51, 86, 50, 87, 88, 89, 188, 90, 91, ++ 506, 243, 247, 92, 93, 94, 95, 96, 97, 98, ++ 99, 189, 248, 239, 100, 204, 101, 240, 102, 205, ++ 249, 103, 256, 104, 105, 155, 156, 157, 188, 206, ++ 169, 158, 243, 247, 265, 175, 116, 159, 116, 501, ++ 106, 99, 189, 248, 239, 100, 204, 101, 240, 102, ++ 205, 249, 103, 256, 104, 105, 155, 156, 157, 300, ++ 206, 169, 158, 501, 479, 265, 175, 107, 159, 108, ++ 86, 50, 87, 88, 89, 607, 90, 91, 288, 297, + +- 259, 234, 163, 153, 260, 267, 231, 179, 232, 268, +- 249, 270, 264, 269, 299, 280, 182, 276, 277, 271, +- 896, 195, 184, 291, 300, 281, 272, 273, 282, 278, +- 116, 116, 116, 116, 279, 289, 292, 290, 295, 304, +- 290, 307, 283, 116, 116, 116, 116, 317, 132, 127, +- 125, 324, 309, 296, 319, 320, 308, 338, 321, 333, +- 318, 329, 128, 133, 325, 326, 326, 353, 330, 327, +- 334, 339, 348, 344, 331, 345, 349, 355, 356, 358, +- 361, 354, 371, 359, 362, 364, 394, 365, 366, 384, +- 372, 367, 378, 379, 897, 391, 373, 392, 396, 397, ++ 289, 92, 93, 94, 95, 96, 97, 98, 99, 160, ++ 300, 160, 100, 161, 101, 161, 102, 162, 222, 103, ++ 297, 104, 105, 163, 135, 264, 164, 223, 267, 224, ++ 297, 136, 268, 225, 116, 307, 116, 327, 106, 99, ++ 160, 327, 160, 100, 161, 101, 161, 102, 162, 222, ++ 103, 251, 104, 105, 163, 135, 264, 164, 223, 267, ++ 224, 321, 136, 268, 225, 107, 307, 108, 129, 129, ++ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, ++ 298, 143, 131, 252, 129, 150, 129, 183, 151, 152, ++ 257, 184, 244, 258, 315, 185, 148, 259, 245, 316, + +- 398, 401, 395, 393, 404, 385, 399, 386, 405, 380, +- 472, 421, 387, 402, 413, 418, 414, 422, 419, 440, +- 426, 435, 436, 473, 444, 420, 427, 900, 446, 450, +- 447, 428, 236, 429, 437, 445, 448, 451, 237, 364, +- 491, 483, 366, 441, 497, 291, 295, 291, 290, 452, +- 492, 503, 500, 500, 317, 445, 501, 324, 292, 901, +- 292, 296, 505, 505, 504, 553, 506, 318, 319, 319, +- 325, 548, 510, 512, 512, 554, 564, 513, 569, 549, +- 565, 579, 580, 587, 616, 621, 581, 588, 570, 582, +- 610, 902, 617, 503, 611, 741, 622, 701, 636, 583, ++ 151, 260, 153, 273, 321, 154, 274, 186, 116, 246, ++ 116, 187, 143, 129, 129, 129, 150, 129, 183, 151, ++ 152, 257, 184, 244, 258, 315, 185, 148, 259, 245, ++ 316, 151, 260, 153, 273, 290, 154, 274, 186, 266, ++ 246, 177, 187, 291, 129, 129, 129, 142, 323, 143, ++ 180, 261, 262, 510, 144, 145, 182, 294, 146, 289, ++ 299, 147, 263, 311, 148, 149, 311, 295, 309, 293, ++ 266, 287, 177, 284, 291, 301, 317, 254, 142, 323, ++ 143, 180, 261, 262, 318, 144, 145, 182, 254, 146, ++ 279, 299, 147, 263, 269, 148, 149, 176, 295, 177, + +- 584, 749, 742, 585, 591, 592, 504, 593, 750, 594, +- 637, 903, 595, 687, 687, 756, 702, 688, 708, 771, +- 709, 757, 596, 597, 781, 772, 598, 798, 782, 878, +- 879, 890, 799, 758, 909, 910, 898, 773, 911, 912, +- 913, 891, 914, 915, 892, 893, 899, 904, 894, 895, +- 905, 916, 917, 906, 918, 919, 920, 907, 921, 922, +- 923, 924, 908, 925, 926, 927, 928, 929, 930, 931, +- 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, +- 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, +- 952, 953, 954, 955, 956, 958, 959, 960, 961, 962, ++ 280, 178, 270, 281, 193, 179, 301, 304, 180, 271, ++ 272, 181, 275, 276, 182, 318, 479, 229, 234, 230, ++ 328, 279, 305, 234, 277, 269, 322, 123, 176, 278, ++ 177, 280, 178, 270, 281, 193, 179, 123, 304, 180, ++ 271, 272, 181, 275, 276, 182, 190, 191, 229, 282, ++ 230, 328, 332, 305, 192, 277, 193, 302, 194, 306, ++ 278, 195, 196, 132, 127, 125, 303, 319, 320, 335, ++ 333, 321, 128, 133, 324, 326, 326, 190, 191, 327, ++ 282, 334, 325, 332, 336, 192, 337, 193, 302, 194, ++ 306, 340, 195, 196, 197, 338, 341, 303, 198, 342, + +- 964, 965, 966, 957, 967, 968, 963, 969, 970, 972, +- 971, 973, 974, 975, 976, 977, 978, 979, 980, 981, +- 982, 983, 985, 986, 988, 989, 990, 984, 991, 992, +- 994, 995, 996, 987, 997, 998, 999, 879, 892, 906, +- 1000, 953, 1001, 895, 1002, 1003, 993, 1004, 1005, 1006, +- 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, +- 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, +- 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, +- 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1045, 1046, 1047, +- 1048, 1049, 1050, 1051, 1044, 1052, 1053, 1054, 1055, 1056, ++ 335, 333, 199, 128, 133, 200, 121, 343, 201, 339, ++ 346, 202, 334, 325, 118, 336, 347, 337, 311, 344, ++ 350, 345, 340, 351, 329, 197, 338, 341, 348, 198, ++ 342, 330, 349, 199, 311, 352, 200, 331, 343, 201, ++ 339, 346, 202, 207, 208, 209, 307, 347, 210, 211, ++ 344, 350, 345, 212, 351, 329, 357, 213, 353, 348, ++ 214, 360, 330, 349, 363, 215, 352, 358, 331, 361, ++ 309, 359, 354, 362, 207, 208, 209, 355, 356, 210, ++ 211, 500, 500, 299, 212, 501, 368, 357, 213, 353, ++ 296, 214, 360, 369, 370, 363, 215, 216, 358, 374, + +- 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, +- 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, +- 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, +- 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, +- 1097, 1098, 1099, 1100, 1102, 1103, 1104, 1105, 1106, 1107, +- 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1101, +- 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, +- 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, +- 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, +- 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, ++ 361, 217, 359, 354, 362, 218, 375, 376, 355, 356, ++ 364, 219, 365, 366, 220, 377, 367, 368, 381, 371, ++ 382, 221, 505, 505, 369, 370, 506, 372, 216, 383, ++ 374, 388, 217, 373, 389, 293, 218, 375, 376, 378, ++ 379, 364, 219, 365, 366, 220, 377, 367, 390, 381, ++ 371, 382, 221, 227, 228, 400, 380, 229, 372, 230, ++ 383, 231, 388, 287, 373, 389, 232, 285, 319, 319, ++ 378, 379, 510, 512, 512, 284, 282, 513, 254, 390, ++ 394, 254, 401, 234, 227, 228, 400, 380, 229, 403, ++ 230, 123, 231, 406, 402, 121, 395, 232, 129, 129, + +- 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, +- 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, +- 1177, 1178, 1179, 1180, 1182, 1181, 1183, 1184, 1185, 1186, +- 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1187, +- 1199, 1188, 1200, 1201, 1202, 1189, 1203, 1204, 1205, 1206, +- 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1215, 1214, 1216, +- 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, +- 1227, 1228, 1229, 1185, 1186, 1230, 1231, 1232, 1233, 1234, +- 1235, 1236, 1237, 1238, 1239, 1240, 1188, 1241, 1242, 1243, +- 1189, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, ++ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, ++ 384, 394, 131, 401, 129, 391, 129, 392, 404, 407, ++ 403, 408, 405, 393, 406, 402, 385, 395, 386, 396, ++ 397, 398, 409, 387, 410, 411, 412, 399, 413, 415, ++ 414, 384, 416, 129, 129, 129, 391, 129, 392, 404, ++ 407, 417, 408, 405, 393, 423, 118, 385, 1535, 386, ++ 396, 397, 398, 409, 387, 410, 411, 412, 399, 413, ++ 415, 414, 421, 416, 129, 129, 129, 418, 422, 424, ++ 419, 430, 417, 426, 425, 431, 423, 420, 432, 427, ++ 433, 434, 435, 436, 428, 438, 429, 439, 442, 1535, + +- 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, +- 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, +- 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, +- 1283, 1284, 1285, 1286, 1287, 1289, 1290, 1292, 1293, 1294, +- 1295, 1296, 1288, 1297, 1298, 1299, 1300, 1301, 1302, 1303, +- 1304, 1305, 1291, 1306, 1307, 1308, 1309, 1310, 1311, 1312, +- 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, +- 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, +- 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, +- 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, ++ 443, 1535, 444, 421, 449, 437, 440, 1535, 418, 422, ++ 424, 419, 430, 445, 426, 425, 431, 453, 420, 432, ++ 427, 433, 434, 435, 436, 428, 438, 429, 439, 442, ++ 441, 443, 446, 444, 447, 449, 437, 440, 450, 454, ++ 448, 455, 456, 457, 445, 458, 451, 459, 453, 460, ++ 461, 462, 463, 464, 465, 466, 467, 468, 452, 469, ++ 472, 441, 470, 446, 473, 447, 474, 475, 476, 450, ++ 454, 448, 455, 456, 457, 471, 458, 451, 459, 477, ++ 460, 461, 462, 463, 464, 465, 466, 467, 468, 452, ++ 469, 472, 333, 470, 480, 473, 481, 474, 475, 476, + +- 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, +- 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, +- 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, +- 1383, 1384, 1385, 1386, 1388, 1389, 1390, 1391, 1392, 1393, +- 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1387, +- 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, +- 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, +- 1423, 1424, 1425, 1426, 1427, 1428, 1430, 1431, 1432, 1433, +- 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, +- 1444, 1445, 1429, 1446, 1447, 1448, 1449, 1450, 1451, 1452, ++ 349, 353, 356, 482, 484, 364, 471, 483, 366, 485, ++ 477, 486, 396, 487, 488, 489, 490, 492, 493, 494, ++ 440, 495, 449, 333, 497, 480, 491, 481, 498, 499, ++ 496, 349, 353, 356, 482, 484, 364, 502, 483, 366, ++ 485, 445, 486, 396, 487, 488, 489, 490, 492, 493, ++ 494, 440, 495, 449, 290, 497, 294, 491, 289, 498, ++ 499, 496, 291, 290, 285, 503, 295, 507, 502, 508, ++ 509, 291, 445, 504, 317, 511, 324, 514, 515, 516, ++ 517, 518, 318, 519, 325, 520, 521, 522, 523, 524, ++ 525, 526, 527, 291, 528, 285, 529, 295, 507, 530, + +- 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, +- 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, +- 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, +- 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, +- 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, +- 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, +- 1513, 1514, 1515, 1517, 1518, 1519, 1520, 1521, 1522, 1523, +- 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1516, 1532, +- 1533, 1534, 1535, 1536, 14, 14, 14, 14, 14, 14, +- 14, 109, 109, 109, 109, 109, 109, 109, 113, 113, ++ 508, 509, 291, 533, 504, 534, 511, 535, 514, 515, ++ 516, 517, 518, 318, 519, 325, 520, 521, 522, 523, ++ 524, 525, 526, 527, 531, 528, 536, 529, 537, 538, ++ 530, 539, 532, 540, 533, 541, 534, 542, 535, 543, ++ 544, 545, 546, 547, 548, 550, 551, 552, 553, 555, ++ 556, 557, 549, 558, 559, 531, 560, 536, 554, 537, ++ 538, 561, 539, 532, 540, 562, 541, 563, 542, 566, ++ 543, 544, 545, 546, 547, 548, 550, 551, 552, 553, ++ 555, 556, 557, 549, 558, 559, 564, 560, 567, 554, ++ 565, 568, 561, 569, 571, 572, 562, 573, 563, 574, + +- 113, 113, 113, 113, 113, 117, 117, 117, 117, 117, +- 117, 117, 119, 888, 119, 119, 119, 119, 119, 120, +- 120, 120, 120, 120, 120, 120, 122, 887, 122, 122, +- 122, 122, 122, 126, 126, 886, 126, 134, 885, 134, +- 134, 134, 134, 134, 235, 235, 253, 253, 253, 253, +- 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, +- 284, 284, 284, 284, 284, 284, 284, 287, 287, 287, +- 287, 287, 287, 287, 293, 293, 293, 293, 293, 293, +- 293, 301, 301, 301, 301, 301, 301, 301, 311, 311, +- 311, 311, 311, 311, 311, 313, 313, 313, 313, 313, ++ 566, 575, 576, 570, 577, 578, 1535, 1535, 586, 587, ++ 589, 1535, 590, 588, 1535, 599, 600, 564, 601, 567, ++ 602, 565, 568, 603, 569, 571, 572, 604, 573, 605, ++ 574, 606, 575, 576, 570, 577, 578, 579, 580, 586, ++ 587, 589, 581, 590, 588, 582, 599, 600, 608, 601, ++ 609, 602, 612, 610, 603, 583, 584, 611, 604, 585, ++ 605, 1535, 606, 1535, 613, 1535, 614, 615, 579, 580, ++ 618, 619, 616, 581, 620, 623, 582, 626, 1535, 608, ++ 617, 609, 1535, 612, 610, 627, 583, 584, 611, 621, ++ 585, 591, 592, 628, 593, 613, 594, 614, 615, 595, + +- 313, 313, 314, 314, 884, 314, 314, 314, 314, 315, +- 315, 315, 315, 315, 315, 315, 129, 129, 129, 129, +- 129, 129, 129, 462, 462, 462, 883, 882, 881, 880, +- 877, 876, 875, 874, 873, 872, 871, 870, 869, 868, +- 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, +- 857, 856, 855, 688, 688, 854, 853, 852, 851, 850, +- 849, 848, 847, 846, 845, 844, 843, 842, 841, 840, +- 839, 838, 837, 836, 835, 834, 833, 832, 831, 830, +- 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, +- 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, ++ 622, 618, 619, 616, 629, 620, 623, 624, 626, 596, ++ 597, 617, 630, 598, 625, 631, 627, 632, 633, 634, ++ 621, 635, 591, 592, 628, 593, 638, 594, 639, 640, ++ 595, 622, 641, 642, 643, 629, 644, 645, 624, 636, ++ 596, 597, 646, 630, 598, 625, 631, 647, 632, 633, ++ 634, 637, 635, 648, 649, 650, 651, 638, 652, 639, ++ 640, 653, 654, 641, 642, 643, 655, 644, 645, 656, ++ 636, 657, 658, 646, 659, 660, 661, 662, 647, 663, ++ 664, 665, 637, 666, 648, 649, 650, 651, 667, 652, ++ 668, 669, 653, 654, 670, 671, 672, 655, 673, 674, + +- 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, +- 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, +- 787, 786, 785, 784, 783, 780, 779, 778, 777, 776, +- 775, 774, 770, 769, 768, 767, 766, 765, 764, 763, +- 762, 761, 760, 759, 755, 754, 753, 752, 751, 748, +- 747, 746, 745, 744, 743, 740, 739, 738, 737, 736, +- 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, +- 725, 724, 723, 722, 721, 720, 719, 718, 717, 716, +- 715, 714, 713, 712, 711, 710, 707, 706, 705, 704, +- 703, 700, 699, 698, 697, 696, 695, 694, 693, 692, ++ 656, 675, 657, 658, 676, 659, 660, 661, 662, 677, ++ 663, 664, 665, 678, 666, 564, 679, 588, 610, 667, ++ 680, 668, 669, 681, 621, 670, 671, 672, 625, 673, ++ 674, 636, 675, 682, 683, 676, 684, 685, 688, 689, ++ 677, 690, 503, 691, 678, 692, 564, 679, 588, 610, ++ 504, 680, 686, 686, 681, 621, 687, 693, 694, 625, ++ 695, 696, 636, 697, 682, 683, 698, 684, 685, 688, ++ 689, 699, 690, 702, 691, 703, 692, 700, 704, 705, ++ 706, 504, 707, 709, 708, 710, 711, 712, 693, 694, ++ 713, 695, 696, 714, 697, 715, 701, 698, 716, 717, + +- 691, 690, 513, 513, 510, 689, 506, 506, 501, 501, +- 686, 685, 684, 683, 636, 625, 621, 682, 681, 610, +- 588, 680, 564, 679, 678, 677, 676, 675, 674, 673, +- 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, +- 662, 661, 463, 660, 659, 658, 657, 656, 655, 654, +- 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, +- 643, 642, 641, 640, 639, 638, 635, 634, 633, 632, +- 631, 630, 629, 628, 627, 626, 623, 620, 619, 618, +- 615, 614, 613, 612, 609, 608, 607, 606, 605, 604, +- 603, 602, 601, 600, 599, 590, 589, 586, 578, 577, ++ 718, 719, 699, 720, 702, 721, 703, 722, 700, 704, ++ 705, 706, 723, 707, 709, 708, 710, 711, 712, 724, ++ 725, 713, 726, 727, 714, 728, 715, 701, 729, 716, ++ 717, 718, 719, 730, 720, 731, 721, 732, 722, 733, ++ 734, 735, 736, 723, 737, 738, 739, 742, 740, 743, ++ 724, 725, 744, 726, 727, 741, 728, 745, 746, 729, ++ 747, 750, 748, 751, 730, 752, 731, 753, 732, 749, ++ 733, 734, 735, 736, 754, 737, 738, 739, 742, 740, ++ 743, 755, 758, 744, 759, 760, 741, 756, 745, 746, ++ 761, 747, 750, 748, 751, 762, 752, 763, 753, 757, + +- 576, 575, 574, 573, 572, 571, 568, 567, 566, 563, +- 562, 561, 560, 559, 558, 557, 556, 555, 552, 551, +- 550, 547, 546, 545, 544, 543, 542, 541, 540, 539, +- 538, 537, 536, 535, 534, 533, 530, 529, 528, 527, +- 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, +- 516, 515, 514, 327, 327, 511, 321, 321, 510, 312, +- 312, 509, 508, 507, 286, 302, 502, 294, 499, 288, +- 499, 285, 498, 449, 496, 440, 495, 494, 493, 490, +- 489, 488, 396, 487, 486, 485, 484, 482, 356, 353, +- 349, 481, 480, 333, 254, 254, 479, 478, 477, 476, ++ 749, 764, 765, 766, 767, 754, 768, 769, 773, 774, ++ 775, 770, 755, 758, 776, 759, 760, 771, 756, 777, ++ 778, 761, 779, 780, 782, 783, 762, 781, 763, 772, ++ 757, 784, 764, 765, 766, 767, 785, 768, 769, 773, ++ 774, 775, 770, 786, 787, 776, 788, 789, 771, 790, ++ 777, 778, 791, 779, 780, 782, 783, 792, 781, 793, ++ 772, 794, 784, 795, 796, 797, 799, 785, 800, 801, ++ 798, 802, 803, 804, 786, 787, 805, 788, 789, 806, ++ 790, 807, 808, 791, 809, 810, 811, 812, 792, 813, ++ 793, 814, 794, 815, 795, 796, 797, 799, 816, 800, + +- 475, 474, 471, 470, 469, 468, 467, 466, 465, 464, +- 463, 461, 460, 459, 458, 457, 456, 455, 454, 453, +- 449, 443, 442, 439, 438, 434, 433, 432, 431, 430, +- 423, 417, 416, 415, 412, 411, 410, 409, 408, 407, +- 406, 403, 400, 390, 389, 388, 383, 382, 381, 377, +- 376, 375, 374, 370, 369, 368, 363, 360, 357, 352, +- 351, 350, 347, 346, 343, 342, 341, 340, 337, 336, +- 335, 332, 328, 135, 135, 323, 322, 123, 123, 316, +- 121, 316, 118, 312, 312, 310, 310, 298, 303, 302, +- 300, 297, 294, 288, 286, 285, 283, 177, 171, 256, ++ 801, 798, 802, 803, 804, 817, 818, 805, 819, 820, ++ 806, 821, 807, 808, 822, 809, 810, 811, 812, 823, ++ 813, 824, 814, 825, 815, 826, 827, 828, 829, 816, ++ 830, 831, 832, 833, 834, 835, 817, 818, 836, 819, ++ 820, 837, 821, 838, 839, 822, 840, 841, 842, 843, ++ 823, 844, 824, 845, 825, 846, 826, 827, 828, 829, ++ 847, 830, 831, 832, 833, 834, 835, 848, 849, 836, ++ 850, 851, 837, 852, 838, 839, 853, 840, 841, 842, ++ 843, 854, 844, 855, 845, 856, 846, 857, 858, 859, ++ 860, 847, 861, 862, 863, 864, 865, 866, 848, 849, + +- 254, 254, 252, 251, 250, 246, 245, 244, 241, 240, +- 239, 238, 228, 205, 175, 135, 123, 121, 118, 1537, +- 13, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537 ++ 867, 850, 851, 868, 852, 869, 870, 853, 871, 872, ++ 873, 874, 854, 875, 855, 878, 856, 879, 857, 858, ++ 859, 860, 880, 861, 862, 863, 864, 865, 866, 876, ++ 877, 867, 881, 882, 868, 883, 869, 870, 884, 871, ++ 872, 873, 874, 885, 875, 886, 878, 887, 879, 894, ++ 895, 898, 899, 880, 900, 901, 1535, 896, 1535, 1535, ++ 876, 877, 1535, 881, 882, 1535, 883, 897, 1535, 884, ++ 907, 908, 909, 910, 885, 911, 886, 912, 887, 888, ++ 894, 895, 898, 899, 902, 900, 901, 903, 896, 889, ++ 904, 913, 890, 891, 905, 914, 892, 893, 897, 906, ++ ++ 915, 907, 908, 909, 910, 916, 911, 917, 912, 918, ++ 888, 919, 920, 921, 922, 902, 923, 924, 903, 925, ++ 889, 904, 913, 890, 891, 905, 914, 892, 893, 926, ++ 906, 915, 927, 928, 929, 930, 916, 931, 917, 932, ++ 918, 933, 919, 920, 921, 922, 934, 923, 924, 935, ++ 925, 936, 937, 938, 939, 940, 941, 942, 943, 944, ++ 926, 945, 946, 927, 928, 929, 930, 947, 931, 948, ++ 932, 949, 933, 950, 951, 952, 953, 934, 956, 957, ++ 935, 958, 936, 937, 938, 939, 940, 941, 942, 943, ++ 944, 959, 945, 946, 954, 962, 963, 964, 947, 965, ++ ++ 948, 960, 949, 955, 950, 951, 952, 953, 961, 956, ++ 957, 966, 958, 967, 968, 970, 969, 971, 972, 973, ++ 974, 975, 959, 976, 977, 954, 962, 963, 964, 978, ++ 965, 979, 960, 980, 955, 981, 983, 986, 987, 961, ++ 988, 982, 966, 984, 967, 968, 970, 969, 971, 972, ++ 973, 974, 975, 985, 976, 977, 989, 992, 990, 993, ++ 978, 994, 979, 995, 980, 996, 981, 983, 986, 987, ++ 997, 988, 982, 877, 984, 991, 904, 998, 951, 999, ++ 1000, 1001, 1002, 1003, 985, 1004, 1005, 989, 992, 990, ++ 993, 1006, 994, 1007, 995, 1008, 996, 1009, 1010, 1011, ++ ++ 1012, 997, 1013, 1014, 877, 1015, 991, 904, 998, 951, ++ 999, 1000, 1001, 1002, 1003, 1016, 1004, 1005, 1017, 1018, ++ 1019, 1020, 1006, 1021, 1007, 1022, 1008, 1023, 1009, 1010, ++ 1011, 1012, 1024, 1013, 1014, 1025, 1015, 1026, 1027, 1028, ++ 1029, 1030, 1031, 1032, 1033, 1034, 1016, 1035, 1036, 1017, ++ 1018, 1019, 1020, 1037, 1021, 1038, 1022, 1039, 1023, 1040, ++ 1043, 1044, 1045, 1024, 1046, 1047, 1025, 1048, 1026, 1027, ++ 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1041, 1035, 1036, ++ 1049, 1050, 1051, 1052, 1037, 1042, 1038, 1053, 1039, 1054, ++ 1040, 1043, 1044, 1045, 1055, 1046, 1047, 1056, 1048, 1057, ++ ++ 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1041, 1066, ++ 1067, 1049, 1050, 1051, 1052, 1068, 1042, 1069, 1053, 1070, ++ 1054, 1072, 1073, 1074, 1075, 1055, 1076, 1077, 1056, 1078, ++ 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1079, ++ 1066, 1067, 1080, 1081, 1082, 1083, 1068, 1084, 1069, 1085, ++ 1070, 1086, 1072, 1073, 1074, 1075, 1087, 1076, 1077, 1088, ++ 1078, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, ++ 1079, 1100, 1098, 1080, 1081, 1082, 1083, 1101, 1084, 1102, ++ 1085, 1103, 1086, 1104, 1105, 1106, 1107, 1087, 1099, 1108, ++ 1088, 1109, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, ++ ++ 1097, 1110, 1100, 1098, 1111, 1112, 1113, 1114, 1101, 1115, ++ 1102, 1116, 1103, 1117, 1104, 1105, 1106, 1107, 1118, 1099, ++ 1108, 1119, 1109, 1120, 1121, 1122, 1123, 1124, 1125, 1126, ++ 1127, 1128, 1110, 1129, 1130, 1111, 1112, 1113, 1114, 1131, ++ 1115, 1132, 1116, 1133, 1117, 1134, 1135, 1136, 1137, 1118, ++ 1138, 1139, 1119, 1140, 1120, 1121, 1122, 1123, 1124, 1125, ++ 1126, 1127, 1128, 1141, 1129, 1130, 1142, 1143, 1144, 1145, ++ 1131, 1146, 1132, 1147, 1133, 1148, 1134, 1135, 1136, 1137, ++ 1149, 1138, 1139, 1150, 1140, 1151, 1152, 1153, 1154, 1155, ++ 1156, 1157, 1158, 1159, 1141, 1160, 1161, 1142, 1143, 1144, ++ ++ 1145, 1162, 1146, 1163, 1147, 1164, 1148, 1165, 1166, 1167, ++ 1168, 1149, 1169, 1170, 1150, 1171, 1151, 1152, 1153, 1154, ++ 1155, 1156, 1157, 1158, 1159, 1172, 1160, 1161, 1173, 1174, ++ 1175, 1176, 1162, 1177, 1163, 1178, 1164, 1179, 1165, 1166, ++ 1167, 1168, 1180, 1169, 1170, 1181, 1171, 1182, 1188, 1189, ++ 1190, 1191, 1183, 1184, 1192, 1193, 1172, 1194, 1195, 1173, ++ 1174, 1175, 1176, 1185, 1177, 1186, 1178, 1196, 1179, 1187, ++ 1197, 1198, 1199, 1180, 1200, 1201, 1181, 1202, 1182, 1188, ++ 1189, 1190, 1191, 1183, 1184, 1192, 1193, 1203, 1194, 1195, ++ 1204, 1205, 1206, 1207, 1185, 1208, 1186, 1209, 1196, 1210, ++ ++ 1187, 1197, 1198, 1199, 1213, 1200, 1201, 1211, 1202, 1212, ++ 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1203, 1222, ++ 1223, 1204, 1205, 1206, 1207, 1224, 1208, 1225, 1209, 1226, ++ 1210, 1227, 1228, 1229, 1230, 1213, 1183, 1184, 1211, 1231, ++ 1212, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1186, ++ 1222, 1223, 1232, 1187, 1233, 1234, 1224, 1235, 1225, 1236, ++ 1226, 1237, 1227, 1228, 1229, 1230, 1238, 1183, 1184, 1239, ++ 1231, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, ++ 1186, 1249, 1250, 1232, 1187, 1233, 1234, 1251, 1235, 1252, ++ 1236, 1253, 1237, 1254, 1255, 1256, 1257, 1238, 1258, 1259, ++ ++ 1239, 1260, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, ++ 1248, 1261, 1249, 1250, 1262, 1263, 1264, 1265, 1251, 1266, ++ 1252, 1267, 1253, 1268, 1254, 1255, 1256, 1257, 1269, 1258, ++ 1259, 1270, 1260, 1271, 1272, 1273, 1274, 1275, 1276, 1277, ++ 1278, 1279, 1261, 1280, 1281, 1262, 1263, 1264, 1265, 1282, ++ 1266, 1283, 1267, 1284, 1268, 1285, 1287, 1288, 1290, 1269, ++ 1291, 1292, 1270, 1286, 1271, 1272, 1273, 1274, 1275, 1276, ++ 1277, 1278, 1279, 1289, 1280, 1281, 1293, 1294, 1295, 1296, ++ 1282, 1297, 1283, 1298, 1284, 1299, 1285, 1287, 1288, 1290, ++ 1300, 1291, 1292, 1301, 1286, 1302, 1303, 1304, 1305, 1306, ++ ++ 1307, 1308, 1309, 1310, 1289, 1311, 1312, 1293, 1294, 1295, ++ 1296, 1313, 1297, 1314, 1298, 1315, 1299, 1316, 1317, 1318, ++ 1319, 1300, 1320, 1321, 1301, 1322, 1302, 1303, 1304, 1305, ++ 1306, 1307, 1308, 1309, 1310, 1323, 1311, 1312, 1324, 1325, ++ 1326, 1327, 1313, 1328, 1314, 1329, 1315, 1330, 1316, 1317, ++ 1318, 1319, 1331, 1320, 1321, 1332, 1322, 1333, 1334, 1335, ++ 1336, 1337, 1338, 1339, 1340, 1341, 1323, 1342, 1343, 1324, ++ 1325, 1326, 1327, 1344, 1328, 1345, 1329, 1346, 1330, 1347, ++ 1348, 1349, 1350, 1331, 1351, 1352, 1332, 1353, 1333, 1334, ++ 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1354, 1342, 1343, ++ ++ 1355, 1356, 1357, 1358, 1344, 1359, 1345, 1360, 1346, 1361, ++ 1347, 1348, 1349, 1350, 1362, 1351, 1352, 1363, 1353, 1364, ++ 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1354, 1373, ++ 1374, 1355, 1356, 1357, 1358, 1375, 1359, 1376, 1360, 1377, ++ 1361, 1378, 1379, 1380, 1381, 1362, 1382, 1383, 1363, 1384, ++ 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1386, ++ 1373, 1374, 1387, 1388, 1389, 1385, 1375, 1390, 1376, 1391, ++ 1377, 1392, 1378, 1379, 1380, 1381, 1393, 1382, 1383, 1394, ++ 1384, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, ++ 1386, 1404, 1405, 1387, 1388, 1389, 1385, 1406, 1390, 1407, ++ ++ 1391, 1408, 1392, 1409, 1410, 1411, 1412, 1393, 1413, 1414, ++ 1394, 1415, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, ++ 1403, 1416, 1404, 1405, 1417, 1418, 1419, 1420, 1406, 1421, ++ 1407, 1422, 1408, 1423, 1409, 1410, 1411, 1412, 1424, 1413, ++ 1414, 1425, 1415, 1428, 1426, 1429, 1430, 1431, 1432, 1433, ++ 1434, 1435, 1416, 1436, 1437, 1417, 1418, 1419, 1420, 1438, ++ 1421, 1427, 1422, 1439, 1423, 1440, 1441, 1442, 1443, 1424, ++ 1444, 1445, 1425, 1446, 1428, 1426, 1429, 1430, 1431, 1432, ++ 1433, 1434, 1435, 1447, 1436, 1437, 1448, 1449, 1450, 1451, ++ 1438, 1452, 1427, 1453, 1439, 1454, 1440, 1441, 1442, 1443, ++ ++ 1455, 1444, 1445, 1456, 1446, 1457, 1458, 1459, 1460, 1461, ++ 1462, 1463, 1464, 1465, 1447, 1466, 1467, 1448, 1449, 1450, ++ 1451, 1468, 1452, 1469, 1453, 1470, 1454, 1471, 1472, 1473, ++ 1474, 1455, 1475, 1476, 1456, 1477, 1457, 1458, 1459, 1460, ++ 1461, 1462, 1463, 1464, 1465, 1478, 1466, 1467, 1479, 1480, ++ 1481, 1482, 1468, 1483, 1469, 1484, 1470, 1485, 1471, 1472, ++ 1473, 1474, 1486, 1475, 1476, 1487, 1477, 1488, 1489, 1490, ++ 1491, 1492, 1493, 1494, 1495, 1496, 1478, 1497, 1498, 1479, ++ 1480, 1481, 1482, 1499, 1483, 1500, 1484, 1501, 1485, 1502, ++ 1503, 1504, 1505, 1486, 1506, 1507, 1487, 1508, 1488, 1489, ++ ++ 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1509, 1497, 1498, ++ 1510, 1511, 1512, 1513, 1499, 1515, 1500, 1516, 1501, 1517, ++ 1502, 1503, 1504, 1505, 1518, 1506, 1507, 1519, 1508, 1514, ++ 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1509, 1528, ++ 1529, 1510, 1511, 1512, 1513, 1530, 1515, 1531, 1516, 1532, ++ 1517, 1533, 1534, 1535, 1535, 1518, 1535, 1535, 1519, 1535, ++ 1514, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1535, ++ 1528, 1529, 1535, 1535, 1535, 1535, 1530, 1535, 1531, 1535, ++ 1532, 1535, 1533, 1534, 14, 14, 14, 14, 14, 14, ++ 14, 85, 85, 85, 85, 85, 85, 85, 109, 109, ++ ++ 109, 109, 109, 109, 109, 113, 113, 113, 113, 113, ++ 113, 113, 117, 117, 117, 117, 117, 117, 117, 119, ++ 1535, 119, 119, 119, 119, 119, 120, 120, 120, 120, ++ 120, 120, 120, 122, 1535, 122, 122, 122, 122, 122, ++ 126, 126, 1535, 126, 130, 130, 130, 130, 130, 130, ++ 130, 233, 1535, 233, 233, 233, 233, 233, 250, 250, ++ 253, 253, 253, 253, 253, 253, 253, 255, 255, 255, ++ 255, 255, 255, 255, 283, 283, 283, 283, 283, 283, ++ 283, 286, 286, 286, 286, 286, 286, 286, 292, 292, ++ 292, 292, 292, 292, 292, 308, 308, 308, 308, 308, ++ ++ 308, 308, 310, 310, 310, 310, 310, 310, 310, 312, ++ 312, 312, 312, 312, 312, 312, 313, 313, 1535, 313, ++ 313, 313, 313, 314, 314, 314, 314, 314, 314, 314, ++ 129, 129, 129, 129, 129, 129, 129, 130, 130, 130, ++ 130, 130, 130, 130, 478, 478, 478, 13, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535 + } ; + +-static yyconst flex_int16_t yy_chk[1975] = ++static yyconst flex_int16_t yy_chk[3528] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 3, 3, 9, 10, 9, 10, 9, +- 10, 53, 9, 10, 3, 11, 12, 53, 11, 12, +- 3, 22, 15, 3, 15, 3, 21, 3, 21, 3, +- 11, 12, 32, 3, 22, 734, 3, 3, 34, 34, +- 32, 3, 3, 3, 3, 3, 24, 3, 24, 32, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, ++ 3, 9, 10, 9, 10, 9, 10, 939, 9, 10, ++ 3, 11, 12, 34, 11, 12, 3, 15, 3, 15, + +- 26, 3, 26, 3, 4, 4, 33, 76, 76, 26, +- 33, 24, 27, 36, 33, 4, 27, 36, 69, 29, +- 27, 4, 29, 29, 4, 69, 4, 38, 4, 27, +- 4, 38, 27, 422, 4, 38, 29, 4, 4, 29, +- 422, 103, 4, 4, 4, 4, 4, 38, 4, 58, +- 103, 38, 4, 58, 4, 5, 5, 5, 5, 5, ++ 3, 21, 22, 21, 3, 41, 687, 3, 3, 24, ++ 22, 24, 3, 3, 3, 3, 3, 46, 3, 24, ++ 31, 25, 3, 25, 34, 3, 65, 3, 31, 3, ++ 25, 3, 11, 12, 686, 3, 41, 31, 3, 3, ++ 53, 22, 513, 3, 3, 3, 3, 3, 46, 3, ++ 24, 31, 25, 3, 25, 3, 4, 4, 65, 31, ++ 66, 25, 66, 54, 512, 35, 26, 4, 31, 35, ++ 26, 53, 32, 4, 26, 4, 32, 4, 33, 33, ++ 32, 4, 55, 26, 4, 4, 26, 56, 58, 4, ++ 4, 4, 4, 4, 54, 4, 35, 26, 59, 4, ++ ++ 35, 26, 4, 32, 4, 26, 4, 32, 4, 33, ++ 33, 32, 4, 55, 26, 4, 4, 26, 56, 58, ++ 4, 4, 4, 4, 4, 86, 4, 86, 510, 59, ++ 4, 506, 4, 5, 5, 5, 5, 5, 5, 5, ++ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, ++ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + +- 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, +- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +- 7, 23, 23, 23, 23, 23, 23, 23, 23, 23, +- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, +- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, +- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, ++ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, ++ 5, 5, 7, 7, 7, 7, 7, 38, 7, 7, ++ 505, 60, 62, 7, 7, 7, 7, 7, 7, 7, ++ 7, 38, 63, 57, 7, 42, 7, 57, 7, 42, ++ 64, 7, 70, 7, 7, 29, 29, 29, 38, 42, ++ 75, 29, 60, 62, 76, 77, 87, 29, 87, 501, ++ 7, 7, 38, 63, 57, 7, 42, 7, 57, 7, ++ 42, 64, 7, 70, 7, 7, 29, 29, 29, 99, ++ 42, 75, 29, 500, 478, 76, 77, 7, 29, 7, ++ 8, 8, 8, 8, 8, 408, 8, 8, 92, 100, + ++ 92, 8, 8, 8, 8, 8, 8, 8, 8, 30, ++ 99, 74, 8, 30, 8, 74, 8, 30, 45, 8, ++ 97, 8, 8, 30, 69, 74, 30, 45, 79, 45, ++ 100, 69, 79, 45, 110, 105, 110, 327, 8, 8, ++ 30, 326, 74, 8, 30, 8, 74, 8, 30, 45, ++ 8, 251, 8, 8, 30, 69, 74, 30, 45, 79, ++ 45, 321, 69, 79, 45, 8, 105, 8, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, +- 23, 23, 23, 23, 28, 206, 28, 30, 30, 30, +- 206, 28, 28, 30, 39, 28, 31, 71, 28, 30, +- 31, 28, 28, 37, 31, 37, 71, 37, 39, 71, +- 31, 37, 71, 31, 37, 40, 40, 37, 41, 66, +- 37, 66, 41, 40, 43, 40, 41, 40, 43, 41, +- 40, 40, 41, 81, 345, 41, 81, 46, 43, 44, +- 44, 44, 345, 45, 44, 44, 46, 45, 46, 44, +- 97, 45, 46, 44, 73, 73, 44, 45, 48, 48, +- 45, 44, 48, 62, 48, 73, 48, 45, 74, 62, ++ 97, 71, 23, 251, 23, 28, 23, 37, 28, 28, ++ 71, 37, 61, 71, 118, 37, 71, 72, 61, 121, + +- 72, 48, 74, 72, 72, 78, 84, 78, 84, 79, +- 62, 80, 74, 79, 97, 83, 78, 82, 82, 80, +- 736, 80, 78, 93, 102, 83, 80, 80, 83, 82, +- 86, 87, 86, 87, 82, 92, 93, 92, 95, 102, +- 95, 104, 105, 110, 116, 110, 116, 124, 125, 127, +- 125, 132, 105, 95, 128, 128, 104, 143, 128, 139, +- 124, 137, 127, 125, 132, 133, 133, 158, 137, 133, +- 139, 143, 154, 149, 137, 149, 154, 159, 159, 161, +- 163, 158, 169, 161, 163, 165, 186, 165, 165, 178, +- 169, 165, 174, 174, 737, 185, 169, 185, 187, 187, ++ 72, 72, 28, 81, 320, 28, 81, 37, 116, 61, ++ 116, 37, 71, 23, 23, 23, 28, 23, 37, 28, ++ 28, 71, 37, 61, 71, 118, 37, 71, 72, 61, ++ 121, 72, 72, 28, 81, 93, 28, 81, 37, 78, ++ 61, 78, 37, 93, 23, 23, 23, 27, 131, 27, ++ 78, 73, 73, 319, 27, 27, 78, 95, 27, 95, ++ 101, 27, 73, 312, 27, 27, 310, 95, 308, 292, ++ 78, 286, 78, 283, 93, 101, 124, 255, 27, 131, ++ 27, 78, 73, 73, 124, 27, 27, 78, 253, 27, ++ 83, 101, 27, 73, 80, 27, 27, 36, 95, 36, + +- 187, 189, 186, 185, 191, 178, 187, 178, 191, 174, +- 246, 204, 178, 189, 199, 203, 199, 204, 203, 216, +- 207, 213, 213, 246, 219, 203, 207, 740, 220, 222, +- 220, 207, 236, 207, 213, 219, 220, 222, 236, 264, +- 274, 264, 264, 216, 280, 289, 290, 291, 290, 222, +- 274, 295, 292, 292, 317, 280, 292, 324, 289, 741, +- 291, 290, 296, 296, 295, 367, 296, 317, 318, 318, +- 324, 363, 318, 325, 325, 367, 378, 325, 382, 363, +- 378, 393, 393, 395, 416, 420, 393, 395, 382, 393, +- 411, 742, 416, 503, 411, 570, 420, 527, 434, 393, ++ 83, 36, 80, 83, 80, 36, 101, 103, 36, 80, ++ 80, 36, 82, 82, 36, 124, 250, 84, 234, 84, ++ 134, 83, 103, 233, 82, 80, 129, 123, 36, 82, ++ 36, 83, 36, 80, 83, 80, 36, 122, 103, 36, ++ 80, 80, 36, 82, 82, 36, 39, 39, 84, 104, ++ 84, 134, 136, 103, 39, 82, 39, 102, 39, 104, ++ 82, 39, 39, 125, 127, 125, 102, 128, 128, 138, ++ 137, 128, 127, 125, 132, 133, 133, 39, 39, 133, ++ 104, 137, 132, 136, 139, 39, 140, 39, 102, 39, ++ 104, 142, 39, 39, 40, 141, 144, 102, 40, 145, + +- 393, 577, 570, 393, 398, 398, 503, 398, 577, 398, +- 434, 743, 398, 504, 504, 583, 527, 504, 533, 596, +- 533, 583, 398, 398, 606, 596, 398, 622, 606, 719, +- 719, 735, 622, 583, 746, 748, 739, 596, 749, 750, +- 751, 735, 752, 753, 735, 735, 739, 744, 735, 735, +- 744, 754, 755, 744, 756, 757, 758, 744, 759, 760, +- 761, 762, 744, 763, 765, 766, 767, 768, 769, 770, +- 771, 772, 773, 774, 775, 777, 780, 781, 782, 783, +- 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, +- 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, ++ 138, 137, 40, 127, 125, 40, 120, 146, 40, 141, ++ 149, 40, 137, 132, 117, 139, 150, 140, 112, 147, ++ 153, 147, 142, 154, 135, 40, 141, 144, 152, 40, ++ 145, 135, 152, 40, 111, 155, 40, 135, 146, 40, ++ 141, 149, 40, 43, 43, 43, 107, 150, 43, 43, ++ 147, 153, 147, 43, 154, 135, 158, 43, 156, 152, ++ 43, 160, 135, 152, 162, 43, 155, 159, 135, 161, ++ 106, 159, 156, 161, 43, 43, 43, 157, 157, 43, ++ 43, 291, 291, 98, 43, 291, 164, 158, 43, 156, ++ 96, 43, 160, 165, 166, 162, 43, 44, 159, 168, + +- 804, 805, 806, 798, 807, 808, 803, 809, 811, 812, +- 811, 813, 814, 815, 816, 817, 819, 820, 821, 822, +- 824, 825, 827, 828, 829, 830, 832, 825, 836, 837, +- 839, 840, 841, 828, 842, 843, 845, 848, 849, 850, +- 851, 852, 853, 849, 854, 855, 837, 856, 857, 858, +- 859, 860, 862, 864, 865, 867, 868, 870, 871, 872, +- 873, 875, 876, 877, 878, 880, 882, 884, 886, 887, +- 890, 891, 892, 893, 894, 895, 897, 898, 899, 900, +- 901, 902, 903, 904, 905, 906, 907, 908, 910, 911, +- 912, 913, 914, 915, 907, 916, 917, 918, 919, 920, ++ 161, 44, 159, 156, 161, 44, 169, 170, 157, 157, ++ 163, 44, 163, 163, 44, 171, 163, 164, 173, 167, ++ 174, 44, 295, 295, 165, 166, 295, 167, 44, 175, ++ 168, 178, 44, 167, 179, 94, 44, 169, 170, 172, ++ 172, 163, 44, 163, 163, 44, 171, 163, 181, 173, ++ 167, 174, 44, 47, 47, 186, 172, 47, 167, 47, ++ 175, 47, 178, 91, 167, 179, 47, 90, 318, 318, ++ 172, 172, 318, 325, 325, 89, 88, 325, 68, 181, ++ 184, 67, 187, 49, 47, 47, 186, 172, 47, 188, ++ 47, 20, 47, 190, 187, 19, 184, 47, 130, 130, + +- 921, 922, 924, 926, 927, 928, 929, 930, 931, 932, +- 933, 934, 935, 936, 937, 940, 941, 942, 943, 944, +- 945, 946, 947, 948, 949, 954, 955, 956, 957, 958, +- 959, 960, 961, 962, 963, 964, 966, 967, 968, 969, +- 970, 971, 972, 973, 974, 977, 980, 981, 982, 983, +- 984, 985, 986, 987, 988, 989, 992, 993, 995, 973, +- 996, 997, 998, 999, 1000, 1002, 1004, 1005, 1006, 1007, +- 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1019, +- 1020, 1021, 1023, 1025, 1026, 1027, 1028, 1029, 1030, 1031, +- 1032, 1034, 1035, 1036, 1038, 1039, 1040, 1041, 1042, 1043, ++ 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, ++ 176, 184, 130, 187, 130, 183, 130, 183, 189, 191, ++ 188, 192, 189, 183, 190, 187, 176, 184, 176, 185, ++ 185, 185, 193, 176, 194, 195, 196, 185, 197, 198, ++ 197, 176, 199, 130, 130, 130, 183, 130, 183, 189, ++ 191, 200, 192, 189, 183, 203, 17, 176, 13, 176, ++ 185, 185, 185, 193, 176, 194, 195, 196, 185, 197, ++ 198, 197, 202, 199, 130, 130, 130, 201, 202, 204, ++ 201, 206, 200, 205, 204, 207, 203, 201, 208, 205, ++ 209, 210, 211, 211, 205, 212, 205, 213, 215, 0, + +- 1044, 1045, 1046, 1048, 1049, 1051, 1052, 1053, 1054, 1056, +- 1057, 1058, 1059, 1060, 1062, 1063, 1064, 1065, 1066, 1068, +- 1069, 1070, 1071, 1073, 1075, 1073, 1076, 1077, 1078, 1078, +- 1079, 1081, 1083, 1085, 1086, 1087, 1088, 1089, 1090, 1078, +- 1091, 1078, 1092, 1093, 1094, 1078, 1095, 1096, 1097, 1098, +- 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1105, 1107, +- 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, +- 1118, 1119, 1120, 1121, 1121, 1122, 1123, 1124, 1125, 1126, +- 1127, 1128, 1129, 1130, 1131, 1132, 1121, 1133, 1134, 1135, +- 1121, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, ++ 216, 0, 217, 202, 219, 211, 214, 0, 201, 202, ++ 204, 201, 206, 217, 205, 204, 207, 221, 201, 208, ++ 205, 209, 210, 211, 211, 205, 212, 205, 213, 215, ++ 214, 216, 218, 217, 218, 219, 211, 214, 220, 224, ++ 218, 226, 227, 228, 217, 229, 220, 230, 221, 231, ++ 232, 235, 236, 237, 238, 239, 240, 241, 220, 242, ++ 244, 214, 243, 218, 245, 218, 246, 247, 248, 220, ++ 224, 218, 226, 227, 228, 243, 229, 220, 230, 249, ++ 231, 232, 235, 236, 237, 238, 239, 240, 241, 220, ++ 242, 244, 256, 243, 258, 245, 259, 246, 247, 248, + +- 1146, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1156, 1157, +- 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, +- 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1180, 1181, 1182, +- 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1193, 1194, +- 1196, 1197, 1187, 1198, 1200, 1201, 1202, 1204, 1206, 1208, +- 1209, 1210, 1189, 1211, 1212, 1213, 1214, 1215, 1216, 1218, +- 1219, 1220, 1223, 1224, 1226, 1227, 1229, 1231, 1232, 1234, +- 1236, 1240, 1241, 1242, 1244, 1246, 1247, 1249, 1252, 1256, +- 1257, 1258, 1259, 1261, 1262, 1263, 1264, 1265, 1266, 1267, +- 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, ++ 260, 261, 262, 263, 265, 264, 243, 264, 264, 266, ++ 249, 267, 268, 269, 271, 272, 273, 274, 275, 276, ++ 277, 278, 280, 256, 281, 258, 273, 259, 284, 287, ++ 279, 260, 261, 262, 263, 265, 264, 293, 264, 264, ++ 266, 279, 267, 268, 269, 271, 272, 273, 274, 275, ++ 276, 277, 278, 280, 288, 281, 289, 273, 289, 284, ++ 287, 279, 288, 290, 300, 294, 289, 302, 293, 304, ++ 306, 290, 279, 294, 317, 322, 324, 328, 329, 330, ++ 331, 332, 317, 333, 324, 334, 335, 336, 337, 338, ++ 339, 340, 341, 288, 342, 300, 343, 289, 302, 344, + +- 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, +- 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, +- 1300, 1301, 1302, 1303, 1304, 1308, 1310, 1312, 1314, 1315, +- 1318, 1319, 1320, 1322, 1323, 1325, 1326, 1329, 1331, 1335, +- 1336, 1337, 1338, 1339, 1340, 1343, 1344, 1345, 1346, 1322, +- 1347, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1357, 1358, +- 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1369, +- 1372, 1376, 1378, 1379, 1380, 1381, 1384, 1385, 1386, 1387, +- 1388, 1389, 1391, 1392, 1394, 1395, 1396, 1397, 1398, 1401, +- 1402, 1405, 1381, 1407, 1408, 1411, 1412, 1413, 1414, 1415, ++ 304, 306, 290, 347, 294, 348, 322, 349, 328, 329, ++ 330, 331, 332, 317, 333, 324, 334, 335, 336, 337, ++ 338, 339, 340, 341, 345, 342, 350, 343, 351, 352, ++ 344, 353, 345, 354, 347, 355, 348, 357, 349, 358, ++ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, ++ 370, 371, 363, 372, 373, 345, 374, 350, 367, 351, ++ 352, 375, 353, 345, 354, 376, 355, 377, 357, 379, ++ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, ++ 368, 370, 371, 363, 372, 373, 378, 374, 380, 367, ++ 378, 381, 375, 382, 383, 384, 376, 385, 377, 386, + +- 1416, 1417, 1418, 1420, 1422, 1425, 1426, 1427, 1428, 1431, +- 1432, 1433, 1435, 1438, 1439, 1440, 1442, 1443, 1445, 1446, +- 1448, 1451, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, +- 1462, 1463, 1464, 1465, 1466, 1467, 1469, 1471, 1474, 1475, +- 1476, 1477, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1487, +- 1488, 1489, 1491, 1494, 1496, 1497, 1501, 1502, 1503, 1505, +- 1506, 1507, 1509, 1510, 1511, 1512, 1513, 1515, 1516, 1517, +- 1518, 1519, 1520, 1521, 1522, 1525, 1526, 1527, 1509, 1528, +- 1529, 1531, 1533, 1535, 1538, 1538, 1538, 1538, 1538, 1538, +- 1538, 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1540, 1540, ++ 379, 387, 388, 382, 389, 392, 0, 0, 394, 395, ++ 396, 0, 397, 395, 0, 399, 400, 378, 401, 380, ++ 402, 378, 381, 403, 382, 383, 384, 404, 385, 405, ++ 386, 406, 387, 388, 382, 389, 392, 393, 393, 394, ++ 395, 396, 393, 397, 395, 393, 399, 400, 409, 401, ++ 410, 402, 412, 411, 403, 393, 393, 411, 404, 393, ++ 405, 0, 406, 0, 413, 0, 414, 415, 393, 393, ++ 417, 418, 416, 393, 419, 421, 393, 423, 0, 409, ++ 416, 410, 0, 412, 411, 424, 393, 393, 411, 420, ++ 393, 398, 398, 425, 398, 413, 398, 414, 415, 398, + +- 1540, 1540, 1540, 1540, 1540, 1541, 1541, 1541, 1541, 1541, +- 1541, 1541, 1542, 733, 1542, 1542, 1542, 1542, 1542, 1543, +- 1543, 1543, 1543, 1543, 1543, 1543, 1544, 730, 1544, 1544, +- 1544, 1544, 1544, 1545, 1545, 728, 1545, 1546, 726, 1546, +- 1546, 1546, 1546, 1546, 1547, 1547, 1548, 1548, 1548, 1548, +- 1548, 1548, 1548, 1549, 1549, 1549, 1549, 1549, 1549, 1549, +- 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1551, 1551, 1551, +- 1551, 1551, 1551, 1551, 1552, 1552, 1552, 1552, 1552, 1552, +- 1552, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1554, 1554, +- 1554, 1554, 1554, 1554, 1554, 1555, 1555, 1555, 1555, 1555, ++ 420, 417, 418, 416, 426, 419, 421, 422, 423, 398, ++ 398, 416, 427, 398, 422, 428, 424, 429, 430, 431, ++ 420, 433, 398, 398, 425, 398, 435, 398, 436, 437, ++ 398, 420, 438, 439, 440, 426, 441, 442, 422, 434, ++ 398, 398, 443, 427, 398, 422, 428, 444, 429, 430, ++ 431, 434, 433, 445, 446, 447, 448, 435, 449, 436, ++ 437, 450, 451, 438, 439, 440, 452, 441, 442, 453, ++ 434, 454, 455, 443, 458, 461, 462, 463, 444, 464, ++ 465, 466, 434, 467, 445, 446, 447, 448, 469, 449, ++ 470, 471, 450, 451, 472, 473, 474, 452, 475, 476, + +- 1555, 1555, 1556, 1556, 725, 1556, 1556, 1556, 1556, 1557, +- 1557, 1557, 1557, 1557, 1557, 1557, 1558, 1558, 1558, 1558, +- 1558, 1558, 1558, 1559, 1559, 1559, 724, 723, 722, 721, +- 718, 716, 713, 712, 711, 709, 708, 707, 706, 705, +- 704, 703, 701, 700, 699, 698, 697, 695, 694, 693, +- 692, 690, 689, 688, 687, 685, 684, 682, 681, 680, +- 679, 677, 675, 674, 673, 672, 670, 669, 668, 667, +- 666, 665, 664, 663, 662, 661, 659, 658, 657, 655, +- 654, 653, 652, 651, 649, 647, 646, 645, 644, 643, +- 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, ++ 453, 480, 454, 455, 481, 458, 461, 462, 463, 482, ++ 464, 465, 466, 483, 467, 484, 485, 486, 488, 469, ++ 489, 470, 471, 490, 491, 472, 473, 474, 492, 475, ++ 476, 493, 480, 494, 495, 481, 496, 497, 508, 514, ++ 482, 515, 503, 516, 483, 517, 484, 485, 486, 488, ++ 503, 489, 504, 504, 490, 491, 504, 519, 520, 492, ++ 521, 522, 493, 523, 494, 495, 524, 496, 497, 508, ++ 514, 526, 515, 528, 516, 529, 517, 527, 530, 531, ++ 532, 503, 533, 534, 533, 535, 536, 538, 519, 520, ++ 539, 521, 522, 540, 523, 541, 527, 524, 542, 543, + +- 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, +- 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, +- 611, 610, 609, 608, 607, 605, 602, 601, 600, 599, +- 598, 597, 595, 594, 593, 592, 591, 590, 589, 588, +- 587, 586, 585, 584, 582, 581, 580, 579, 578, 576, +- 575, 574, 573, 572, 571, 569, 567, 566, 565, 564, +- 563, 562, 561, 560, 559, 557, 556, 554, 553, 552, +- 551, 550, 549, 548, 546, 545, 544, 543, 542, 541, +- 540, 539, 538, 536, 535, 534, 532, 531, 530, 529, +- 528, 526, 524, 523, 522, 521, 520, 519, 517, 516, ++ 544, 545, 526, 546, 528, 548, 529, 549, 527, 530, ++ 531, 532, 550, 533, 534, 533, 535, 536, 538, 551, ++ 552, 539, 553, 554, 540, 556, 541, 527, 557, 542, ++ 543, 544, 545, 559, 546, 560, 548, 561, 549, 562, ++ 563, 564, 565, 550, 566, 567, 569, 571, 570, 572, ++ 551, 552, 573, 553, 554, 570, 556, 574, 575, 557, ++ 576, 578, 577, 579, 559, 580, 560, 581, 561, 577, ++ 562, 563, 564, 565, 582, 566, 567, 569, 571, 570, ++ 572, 583, 584, 573, 585, 586, 570, 583, 574, 575, ++ 587, 576, 578, 577, 579, 588, 580, 589, 581, 583, + +- 515, 514, 513, 512, 510, 508, 506, 505, 501, 500, +- 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, +- 487, 486, 485, 484, 483, 482, 481, 480, 478, 477, +- 476, 475, 474, 473, 472, 471, 469, 468, 467, 466, +- 465, 464, 462, 461, 458, 455, 454, 453, 452, 451, +- 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, +- 440, 439, 438, 437, 436, 435, 433, 431, 430, 429, +- 428, 427, 426, 425, 424, 423, 421, 419, 418, 417, +- 415, 414, 413, 412, 410, 409, 408, 406, 405, 404, +- 403, 402, 401, 400, 399, 397, 396, 394, 392, 389, ++ 577, 590, 591, 592, 593, 582, 594, 595, 597, 598, ++ 599, 596, 583, 584, 600, 585, 586, 596, 583, 601, ++ 602, 587, 605, 606, 607, 608, 588, 606, 589, 596, ++ 583, 609, 590, 591, 592, 593, 610, 594, 595, 597, ++ 598, 599, 596, 611, 612, 600, 613, 614, 596, 615, ++ 601, 602, 616, 605, 606, 607, 608, 617, 606, 618, ++ 596, 619, 609, 620, 621, 622, 623, 610, 624, 625, ++ 622, 626, 627, 628, 611, 612, 629, 613, 614, 630, ++ 615, 631, 632, 616, 633, 634, 635, 636, 617, 637, ++ 618, 638, 619, 639, 620, 621, 622, 623, 640, 624, + +- 388, 387, 386, 385, 384, 383, 381, 380, 379, 377, +- 376, 375, 374, 373, 372, 371, 370, 368, 366, 365, +- 364, 362, 361, 360, 359, 358, 357, 355, 354, 353, +- 352, 351, 350, 349, 348, 347, 344, 343, 342, 341, +- 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, +- 330, 329, 328, 327, 326, 322, 321, 320, 319, 313, +- 311, 309, 307, 305, 303, 301, 294, 293, 288, 287, +- 285, 284, 282, 281, 279, 278, 277, 276, 275, 273, +- 272, 270, 269, 268, 267, 266, 265, 263, 262, 261, +- 260, 259, 258, 256, 255, 253, 252, 251, 250, 249, ++ 625, 622, 626, 627, 628, 641, 642, 629, 643, 644, ++ 630, 645, 631, 632, 646, 633, 634, 635, 636, 647, ++ 637, 649, 638, 651, 639, 652, 653, 654, 655, 640, ++ 657, 658, 659, 661, 662, 663, 641, 642, 664, 643, ++ 644, 665, 645, 666, 667, 646, 668, 669, 670, 672, ++ 647, 673, 649, 674, 651, 675, 652, 653, 654, 655, ++ 677, 657, 658, 659, 661, 662, 663, 679, 680, 664, ++ 681, 683, 665, 684, 666, 667, 688, 668, 669, 670, ++ 672, 689, 673, 691, 674, 692, 675, 693, 694, 696, ++ 697, 677, 698, 699, 700, 702, 703, 704, 679, 680, + +- 248, 247, 245, 244, 243, 242, 241, 240, 239, 238, +- 235, 234, 233, 232, 231, 230, 229, 228, 226, 223, +- 221, 218, 217, 215, 214, 212, 211, 210, 209, 208, +- 205, 202, 201, 200, 198, 197, 196, 195, 194, 193, +- 192, 190, 188, 183, 181, 180, 177, 176, 175, 173, +- 172, 171, 170, 168, 167, 166, 164, 162, 160, 157, +- 156, 155, 152, 151, 148, 147, 146, 144, 142, 141, +- 140, 138, 136, 135, 134, 131, 129, 123, 122, 121, +- 120, 118, 117, 112, 111, 107, 106, 101, 100, 99, +- 98, 96, 94, 91, 90, 89, 88, 77, 75, 70, ++ 705, 681, 683, 706, 684, 707, 708, 688, 710, 711, ++ 712, 715, 689, 717, 691, 720, 692, 721, 693, 694, ++ 696, 697, 722, 698, 699, 700, 702, 703, 704, 718, ++ 718, 705, 723, 724, 706, 725, 707, 708, 727, 710, ++ 711, 712, 715, 729, 717, 732, 720, 733, 721, 735, ++ 736, 739, 740, 722, 741, 742, 0, 738, 0, 0, ++ 718, 718, 0, 723, 724, 0, 725, 738, 0, 727, ++ 745, 747, 748, 749, 729, 750, 732, 751, 733, 734, ++ 735, 736, 739, 740, 743, 741, 742, 743, 738, 734, ++ 743, 752, 734, 734, 743, 753, 734, 734, 738, 743, + +- 68, 67, 65, 64, 63, 61, 60, 59, 57, 56, +- 55, 54, 47, 42, 35, 25, 20, 19, 17, 13, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, +- 1537, 1537, 1537, 1537 ++ 754, 745, 747, 748, 749, 755, 750, 756, 751, 757, ++ 734, 758, 759, 760, 761, 743, 762, 764, 743, 765, ++ 734, 743, 752, 734, 734, 743, 753, 734, 734, 766, ++ 743, 754, 767, 768, 769, 770, 755, 771, 756, 772, ++ 757, 773, 758, 759, 760, 761, 774, 762, 764, 776, ++ 765, 779, 780, 781, 782, 783, 784, 785, 786, 787, ++ 766, 788, 789, 767, 768, 769, 770, 790, 771, 791, ++ 772, 792, 773, 793, 794, 795, 796, 774, 798, 799, ++ 776, 800, 779, 780, 781, 782, 783, 784, 785, 786, ++ 787, 801, 788, 789, 797, 803, 804, 805, 790, 806, ++ ++ 791, 802, 792, 797, 793, 794, 795, 796, 802, 798, ++ 799, 807, 800, 808, 810, 811, 810, 812, 813, 814, ++ 815, 816, 801, 818, 819, 797, 803, 804, 805, 820, ++ 806, 821, 802, 823, 797, 824, 826, 828, 829, 802, ++ 831, 824, 807, 827, 808, 810, 811, 810, 812, 813, ++ 814, 815, 816, 827, 818, 819, 835, 838, 836, 839, ++ 820, 840, 821, 841, 823, 842, 824, 826, 828, 829, ++ 844, 831, 824, 847, 827, 836, 848, 849, 850, 851, ++ 852, 853, 854, 855, 827, 856, 857, 835, 838, 836, ++ 839, 858, 840, 860, 841, 862, 842, 863, 865, 866, ++ ++ 868, 844, 869, 870, 847, 871, 836, 848, 849, 850, ++ 851, 852, 853, 854, 855, 873, 856, 857, 874, 875, ++ 876, 878, 858, 880, 860, 882, 862, 884, 863, 865, ++ 866, 868, 885, 869, 870, 888, 871, 889, 890, 891, ++ 892, 893, 895, 896, 897, 898, 873, 899, 900, 874, ++ 875, 876, 878, 901, 880, 902, 882, 903, 884, 904, ++ 906, 908, 909, 885, 910, 911, 888, 912, 889, 890, ++ 891, 892, 893, 895, 896, 897, 898, 905, 899, 900, ++ 913, 914, 915, 916, 901, 905, 902, 917, 903, 918, ++ 904, 906, 908, 909, 919, 910, 911, 920, 912, 922, ++ ++ 924, 925, 926, 927, 928, 929, 930, 931, 905, 932, ++ 933, 913, 914, 915, 916, 934, 905, 935, 917, 938, ++ 918, 940, 941, 942, 943, 919, 944, 945, 920, 946, ++ 922, 924, 925, 926, 927, 928, 929, 930, 931, 947, ++ 932, 933, 952, 953, 954, 955, 934, 956, 935, 957, ++ 938, 958, 940, 941, 942, 943, 959, 944, 945, 960, ++ 946, 961, 962, 964, 965, 966, 967, 968, 969, 970, ++ 947, 972, 971, 952, 953, 954, 955, 975, 956, 978, ++ 957, 979, 958, 980, 981, 982, 983, 959, 971, 984, ++ 960, 985, 961, 962, 964, 965, 966, 967, 968, 969, ++ ++ 970, 986, 972, 971, 987, 990, 991, 993, 975, 994, ++ 978, 995, 979, 996, 980, 981, 982, 983, 997, 971, ++ 984, 998, 985, 1000, 1002, 1003, 1004, 1005, 1006, 1007, ++ 1008, 1009, 986, 1010, 1011, 987, 990, 991, 993, 1012, ++ 994, 1013, 995, 1014, 996, 1017, 1018, 1019, 1021, 997, ++ 1023, 1024, 998, 1025, 1000, 1002, 1003, 1004, 1005, 1006, ++ 1007, 1008, 1009, 1026, 1010, 1011, 1027, 1028, 1029, 1030, ++ 1012, 1032, 1013, 1033, 1014, 1034, 1017, 1018, 1019, 1021, ++ 1036, 1023, 1024, 1037, 1025, 1038, 1039, 1040, 1041, 1042, ++ 1043, 1044, 1046, 1047, 1026, 1049, 1050, 1027, 1028, 1029, ++ ++ 1030, 1051, 1032, 1052, 1033, 1054, 1034, 1055, 1056, 1057, ++ 1058, 1036, 1060, 1061, 1037, 1062, 1038, 1039, 1040, 1041, ++ 1042, 1043, 1044, 1046, 1047, 1063, 1049, 1050, 1064, 1066, ++ 1067, 1068, 1051, 1069, 1052, 1071, 1054, 1071, 1055, 1056, ++ 1057, 1058, 1073, 1060, 1061, 1074, 1062, 1075, 1077, 1079, ++ 1081, 1083, 1076, 1076, 1084, 1085, 1063, 1086, 1087, 1064, ++ 1066, 1067, 1068, 1076, 1069, 1076, 1071, 1088, 1071, 1076, ++ 1089, 1090, 1091, 1073, 1092, 1093, 1074, 1094, 1075, 1077, ++ 1079, 1081, 1083, 1076, 1076, 1084, 1085, 1095, 1086, 1087, ++ 1096, 1097, 1098, 1099, 1076, 1100, 1076, 1101, 1088, 1102, ++ ++ 1076, 1089, 1090, 1091, 1104, 1092, 1093, 1103, 1094, 1103, ++ 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1095, 1113, ++ 1114, 1096, 1097, 1098, 1099, 1115, 1100, 1116, 1101, 1117, ++ 1102, 1118, 1120, 1121, 1122, 1104, 1119, 1119, 1103, 1123, ++ 1103, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1119, ++ 1113, 1114, 1124, 1119, 1125, 1126, 1115, 1127, 1116, 1128, ++ 1117, 1129, 1118, 1120, 1121, 1122, 1130, 1119, 1119, 1131, ++ 1123, 1132, 1133, 1135, 1136, 1137, 1138, 1139, 1140, 1141, ++ 1119, 1142, 1143, 1124, 1119, 1125, 1126, 1144, 1127, 1146, ++ 1128, 1147, 1129, 1149, 1150, 1151, 1152, 1130, 1153, 1154, ++ ++ 1131, 1155, 1132, 1133, 1135, 1136, 1137, 1138, 1139, 1140, ++ 1141, 1156, 1142, 1143, 1157, 1158, 1159, 1160, 1144, 1161, ++ 1146, 1162, 1147, 1163, 1149, 1150, 1151, 1152, 1164, 1153, ++ 1154, 1165, 1155, 1169, 1170, 1171, 1172, 1173, 1174, 1175, ++ 1178, 1179, 1156, 1180, 1181, 1157, 1158, 1159, 1160, 1182, ++ 1161, 1183, 1162, 1184, 1163, 1185, 1186, 1187, 1189, 1164, ++ 1191, 1192, 1165, 1185, 1169, 1170, 1171, 1172, 1173, 1174, ++ 1175, 1178, 1179, 1187, 1180, 1181, 1194, 1195, 1196, 1198, ++ 1182, 1199, 1183, 1200, 1184, 1202, 1185, 1186, 1187, 1189, ++ 1204, 1191, 1192, 1206, 1185, 1207, 1208, 1209, 1210, 1211, ++ ++ 1212, 1213, 1214, 1216, 1187, 1217, 1218, 1194, 1195, 1196, ++ 1198, 1221, 1199, 1222, 1200, 1224, 1202, 1225, 1227, 1229, ++ 1230, 1204, 1232, 1234, 1206, 1238, 1207, 1208, 1209, 1210, ++ 1211, 1212, 1213, 1214, 1216, 1239, 1217, 1218, 1240, 1242, ++ 1244, 1245, 1221, 1247, 1222, 1250, 1224, 1254, 1225, 1227, ++ 1229, 1230, 1255, 1232, 1234, 1256, 1238, 1257, 1259, 1260, ++ 1261, 1262, 1263, 1264, 1265, 1266, 1239, 1267, 1268, 1240, ++ 1242, 1244, 1245, 1269, 1247, 1270, 1250, 1271, 1254, 1272, ++ 1273, 1274, 1275, 1255, 1276, 1277, 1256, 1278, 1257, 1259, ++ 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1279, 1267, 1268, ++ ++ 1280, 1281, 1282, 1283, 1269, 1284, 1270, 1285, 1271, 1286, ++ 1272, 1273, 1274, 1275, 1287, 1276, 1277, 1288, 1278, 1289, ++ 1290, 1291, 1292, 1293, 1294, 1295, 1298, 1299, 1279, 1300, ++ 1301, 1280, 1281, 1282, 1283, 1302, 1284, 1306, 1285, 1308, ++ 1286, 1310, 1312, 1313, 1316, 1287, 1317, 1318, 1288, 1320, ++ 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1298, 1299, 1321, ++ 1300, 1301, 1323, 1324, 1327, 1320, 1302, 1329, 1306, 1333, ++ 1308, 1334, 1310, 1312, 1313, 1316, 1335, 1317, 1318, 1336, ++ 1320, 1337, 1338, 1341, 1342, 1343, 1344, 1345, 1347, 1348, ++ 1321, 1349, 1350, 1323, 1324, 1327, 1320, 1351, 1329, 1352, ++ ++ 1333, 1353, 1334, 1355, 1356, 1357, 1358, 1335, 1359, 1360, ++ 1336, 1361, 1337, 1338, 1341, 1342, 1343, 1344, 1345, 1347, ++ 1348, 1362, 1349, 1350, 1363, 1364, 1365, 1367, 1351, 1370, ++ 1352, 1374, 1353, 1376, 1355, 1356, 1357, 1358, 1377, 1359, ++ 1360, 1378, 1361, 1382, 1379, 1383, 1384, 1385, 1386, 1387, ++ 1389, 1390, 1362, 1392, 1393, 1363, 1364, 1365, 1367, 1394, ++ 1370, 1379, 1374, 1395, 1376, 1396, 1399, 1400, 1403, 1377, ++ 1405, 1406, 1378, 1409, 1382, 1379, 1383, 1384, 1385, 1386, ++ 1387, 1389, 1390, 1410, 1392, 1393, 1411, 1412, 1413, 1414, ++ 1394, 1415, 1379, 1416, 1395, 1418, 1396, 1399, 1400, 1403, ++ ++ 1420, 1405, 1406, 1423, 1409, 1424, 1425, 1426, 1429, 1430, ++ 1431, 1433, 1436, 1437, 1410, 1438, 1440, 1411, 1412, 1413, ++ 1414, 1441, 1415, 1443, 1416, 1444, 1418, 1446, 1449, 1451, ++ 1452, 1420, 1453, 1454, 1423, 1455, 1424, 1425, 1426, 1429, ++ 1430, 1431, 1433, 1436, 1437, 1456, 1438, 1440, 1457, 1458, ++ 1460, 1461, 1441, 1462, 1443, 1463, 1444, 1464, 1446, 1449, ++ 1451, 1452, 1465, 1453, 1454, 1467, 1455, 1469, 1472, 1473, ++ 1474, 1475, 1477, 1478, 1479, 1480, 1456, 1481, 1482, 1457, ++ 1458, 1460, 1461, 1483, 1462, 1485, 1463, 1486, 1464, 1487, ++ 1489, 1492, 1494, 1465, 1495, 1499, 1467, 1500, 1469, 1472, ++ ++ 1473, 1474, 1475, 1477, 1478, 1479, 1480, 1501, 1481, 1482, ++ 1503, 1504, 1505, 1507, 1483, 1508, 1485, 1509, 1486, 1510, ++ 1487, 1489, 1492, 1494, 1511, 1495, 1499, 1513, 1500, 1507, ++ 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1523, 1501, 1524, ++ 1525, 1503, 1504, 1505, 1507, 1526, 1508, 1527, 1509, 1529, ++ 1510, 1531, 1533, 0, 0, 1511, 0, 0, 1513, 0, ++ 1507, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1523, 0, ++ 1524, 1525, 0, 0, 0, 0, 1526, 0, 1527, 0, ++ 1529, 0, 1531, 1533, 1536, 1536, 1536, 1536, 1536, 1536, ++ 1536, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1538, 1538, ++ ++ 1538, 1538, 1538, 1538, 1538, 1539, 1539, 1539, 1539, 1539, ++ 1539, 1539, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1541, ++ 0, 1541, 1541, 1541, 1541, 1541, 1542, 1542, 1542, 1542, ++ 1542, 1542, 1542, 1543, 0, 1543, 1543, 1543, 1543, 1543, ++ 1544, 1544, 0, 1544, 1545, 1545, 1545, 1545, 1545, 1545, ++ 1545, 1546, 0, 1546, 1546, 1546, 1546, 1546, 1547, 1547, ++ 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1549, 1549, 1549, ++ 1549, 1549, 1549, 1549, 1550, 1550, 1550, 1550, 1550, 1550, ++ 1550, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1552, 1552, ++ 1552, 1552, 1552, 1552, 1552, 1553, 1553, 1553, 1553, 1553, ++ ++ 1553, 1553, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1555, ++ 1555, 1555, 1555, 1555, 1555, 1555, 1556, 1556, 0, 1556, ++ 1556, 1556, 1556, 1557, 1557, 1557, 1557, 1557, 1557, 1557, ++ 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1559, 1559, 1559, ++ 1559, 1559, 1559, 1559, 1560, 1560, 1560, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, ++ 1535, 1535, 1535, 1535, 1535, 1535, 1535 + } ; + + static yy_state_type yy_last_accepting_state; +@@ -1440,7 +1808,7 @@ + + + +-#line 1444 "maplexer.c" ++#line 1812 "maplexer.c" + + #define INITIAL 0 + #define URL_VARIABLE 1 +@@ -1455,6 +1823,35 @@ + + static int yy_init_globals (void ); + ++/* Accessor methods to globals. ++ These are made visible to non-reentrant scanners for convenience. */ ++ ++int msyylex_destroy (void ); ++ ++int msyyget_debug (void ); ++ ++void msyyset_debug (int debug_flag ); ++ ++YY_EXTRA_TYPE msyyget_extra (void ); ++ ++void msyyset_extra (YY_EXTRA_TYPE user_defined ); ++ ++FILE *msyyget_in (void ); ++ ++void msyyset_in (FILE * in_str ); ++ ++FILE *msyyget_out (void ); ++ ++void msyyset_out (FILE * out_str ); ++ ++int msyyget_leng (void ); ++ ++char *msyyget_text (void ); ++ ++int msyyget_lineno (void ); ++ ++void msyyset_lineno (int line_number ); ++ + /* Macros after this point can all be overridden by user definitions in + * section 1. + */ +@@ -1489,7 +1886,12 @@ + + /* Amount of stuff to slurp up with each read. */ + #ifndef YY_READ_BUF_SIZE ++#ifdef __ia64__ ++/* On IA-64, the buffer size is 16k, not 8k */ ++#define YY_READ_BUF_SIZE 16384 ++#else + #define YY_READ_BUF_SIZE 8192 ++#endif /* __ia64__ */ + #endif + + /* Copy whatever the last rule matched to the standard output. */ +@@ -1497,7 +1899,7 @@ + /* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +-#define ECHO (void) fwrite( msyytext, msyyleng, 1, msyyout ) ++#define ECHO do { if (fwrite( msyytext, msyyleng, 1, msyyout )) {} } while (0) + #endif + + /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, +@@ -1653,7 +2055,7 @@ + break; + } + +-#line 1657 "maplexer.c" ++#line 2059 "maplexer.c" + + if ( !(yy_init) ) + { +@@ -1706,13 +2108,13 @@ + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; +- if ( yy_current_state >= 1538 ) ++ if ( yy_current_state >= 1536 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } +- while ( yy_base[yy_current_state] != 1921 ); ++ while ( yy_base[yy_current_state] != 3448 ); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; +@@ -3274,7 +3676,7 @@ + #line 546 "maplexer.l" + ECHO; + YY_BREAK +-#line 3278 "maplexer.c" ++#line 3680 "maplexer.c" + case YY_STATE_EOF(URL_VARIABLE): + case YY_STATE_EOF(URL_STRING): + case YY_STATE_EOF(EXPRESSION_STRING): +@@ -3509,7 +3911,7 @@ + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +- (yy_n_chars), num_to_read ); ++ (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } +@@ -3533,6 +3935,14 @@ + else + ret_val = EOB_ACT_CONTINUE_SCAN; + ++ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { ++ /* Extend the array by 50%, plus the number we really need. */ ++ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); ++ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) msyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); ++ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) ++ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); ++ } ++ + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +@@ -3553,7 +3963,7 @@ + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { +- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 53); ++ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 79); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -3562,7 +3972,7 @@ + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; +- if ( yy_current_state >= 1538 ) ++ if ( yy_current_state >= 1536 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; +@@ -3581,7 +3991,7 @@ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + +- register YY_CHAR yy_c = 53; ++ register YY_CHAR yy_c = 79; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -3590,11 +4000,11 @@ + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; +- if ( yy_current_state >= 1538 ) ++ if ( yy_current_state >= 1536 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; +- yy_is_jam = (yy_current_state == 1537); ++ yy_is_jam = (yy_current_state == 1535); + + return yy_is_jam ? 0 : yy_current_state; + } +@@ -3948,7 +4358,9 @@ + (yy_buffer_stack) = (struct yy_buffer_state**)msyyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); +- ++ if ( ! (yy_buffer_stack) ) ++ YY_FATAL_ERROR( "out of dynamic memory in msyyensure_buffer_stack()" ); ++ + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; +@@ -3966,6 +4378,8 @@ + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); ++ if ( ! (yy_buffer_stack) ) ++ YY_FATAL_ERROR( "out of dynamic memory in msyyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +@@ -4010,7 +4424,7 @@ + + /** Setup the input buffer state to scan a string. The next call to msyylex() will + * scan from a @e copy of @a str. +- * @param str a NUL-terminated string to scan ++ * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use +@@ -4024,8 +4438,8 @@ + + /** Setup the input buffer state to scan the given bytes. The next call to msyylex() will + * scan from a @e copy of @a bytes. +- * @param bytes the byte buffer to scan +- * @param len the number of bytes in the buffer pointed to by @a bytes. ++ * @param yybytes the byte buffer to scan ++ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +diff -urNad mapserver-5.0.3~/maplexer.l mapserver-5.0.3/maplexer.l +--- mapserver-5.0.3~/maplexer.l 2008-06-03 10:49:01.000000000 -0400 ++++ mapserver-5.0.3/maplexer.l 2009-07-23 09:07:55.450606144 -0400 +@@ -186,8 +186,8 @@ + imagetype { return(IMAGETYPE); } + imagequality { return(IMAGEQUALITY); } + imagemode { return(IMAGEMODE); } +-imagepath { return(IMAGEPATH); } +-imageurl { return(IMAGEURL); } ++imagepath { return(IMAGEPATH); } ++imageurl { return(IMAGEURL); } + include { BEGIN(INCLUDE); } + index { return(INDEX); } + interlace { return(INTERLACE); }