]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- so-sndbuf option for very busy servers, a bit like so-rcvbuf.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 15 Nov 2010 14:30:34 +0000 (14:30 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 15 Nov 2010 14:30:34 +0000 (14:30 +0000)
git-svn-id: file:///svn/unbound/trunk@2344 be551aaa-1e26-0410-a405-d3ace91eadb9

13 files changed:
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
services/listen_dnsport.c
services/listen_dnsport.h
services/outside_network.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index b7de3bf24c0b17f5ae57a897a99c7f6180e06609..6f28a3de8baaefa467082eb37370a68f51d3dc53 100644 (file)
@@ -1,6 +1,7 @@
 15 November 2010: Wouter
        - silence 'tcp connect: broken pipe' and 'net down' at low verbosity.
        - iana portlist updated.
+       - so-sndbuf option for very busy servers, a bit like so-rcvbuf.
 
 9 November 2010: Wouter
        - unbound-anchor compiles with openssl 0.9.7.
index 189a4618ecae3618e288529a1958f448d0a5cda8..5c4abcd1632792e8b686911897c4d15ab967fc60 100644 (file)
@@ -79,6 +79,10 @@ server:
        # 0 is system default.  Use 4m to catch query spikes for busy servers.
        # so-rcvbuf: 0
 
+       # buffer size for UDP port 53 outgoing (SO_SNDBUF socket option).
+       # 0 is system default.  Use 4m to handle spikes on very busy servers.
+       # so-sndbuf: 0
+
        # EDNS reassembly buffer to advertise to UDP peers (the actual buffer
        # is set with msg-buffer-size). 1480 can solve fragmentation (timeouts).
        # edns-buffer-size: 4096
index 7f8c10186f2c61c27456165f2c3b1bf8ef6c4132..31a3d7dcee9680738e33262bb2f19a3dd08cb15b 100644 (file)
@@ -231,6 +231,17 @@ net.core.rmem_max.  On BSD change kern.ipc.maxsockbuf in /etc/sysctl.conf.
 On OpenBSD change header and recompile kernel. On Solaris ndd \-set
 /dev/udp udp_max_buf 8388608.
 .TP
+.B so\-sndbuf: \fI<number>
+If not 0, then set the SO_SNDBUF socket option to get more buffer space on
+UDP port 53 outgoing queries.  This for very busy servers handles spikes
+in answer traffic, otherwise 'send: resource temporarily unavailable'
+can get logged, the buffer overrun is also visible by netstat \-su.
+Default is 0 (use system value).  Specify the number of bytes to ask
+for, try "4m" on a very busy server.  The OS caps it at a maximum, on
+linux unbound needs root permission to bypass the limit, or the admin
+can use sysctl net.core.wmem_max.  On BSD, Solaris changes are similar
+to so\-rcvbuf.
+.TP
 .B rrset\-cache\-size: \fI<number>
 Number of bytes size of the RRset cache. Default is 4 megabytes.
 A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, megabytes
index e8cb70d84eb2567d25f62f926cbdf44538264fd1..e9d5865b732c0da4fbd6114af779adf6671e637f 100644 (file)
@@ -90,7 +90,8 @@ verbose_print_addr(struct addrinfo *addr)
 
 int
 create_udp_sock(int family, int socktype, struct sockaddr* addr,
-        socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv)
+        socklen_t addrlen, int v6only, int* inuse, int* noproto,
+       int rcv, int snd)
 {
        int s;
 #if defined(IPV6_USE_MIN_MTU)
@@ -102,6 +103,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
 #if !defined(SO_RCVBUFFORCE) && !defined(SO_RCVBUF)
        (void)rcv;
 #endif
+#if !defined(SO_SNDBUFFORCE) && !defined(SO_SNDBUF)
+       (void)snd;
+#endif
 #ifndef IPV6_V6ONLY
        (void)v6only;
 #endif
@@ -182,6 +186,65 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
                }
 #  endif
 #endif /* SO_RCVBUF */
+       }
+       /* first do RCVBUF as the receive buffer is more important */
+       if(snd) {
+#ifdef SO_SNDBUF
+               int got;
+               socklen_t slen = (socklen_t)sizeof(got);
+#  ifdef SO_SNDBUFFORCE
+               /* Linux specific: try to use root permission to override
+                * system limits on sndbuf. The limit is stored in 
+                * /proc/sys/net/core/wmem_max or sysctl net.core.wmem_max */
+               if(setsockopt(s, SOL_SOCKET, SO_SNDBUFFORCE, (void*)&snd, 
+                       (socklen_t)sizeof(snd)) < 0) {
+                       if(errno != EPERM) {
+#    ifndef USE_WINSOCK
+                               log_err("setsockopt(..., SO_SNDBUFFORCE, "
+                                       "...) failed: %s", strerror(errno));
+                               close(s);
+#    else
+                               log_err("setsockopt(..., SO_SNDBUFFORCE, "
+                                       "...) failed: %s", 
+                                       wsa_strerror(WSAGetLastError()));
+                               closesocket(s);
+#    endif
+                               *noproto = 0;
+                               *inuse = 0;
+                               return -1;
+                       }
+#  endif /* SO_SNDBUFFORCE */
+                       if(setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&snd, 
+                               (socklen_t)sizeof(snd)) < 0) {
+#  ifndef USE_WINSOCK
+                               log_err("setsockopt(..., SO_SNDBUF, "
+                                       "...) failed: %s", strerror(errno));
+                               close(s);
+#  else
+                               log_err("setsockopt(..., SO_SNDBUF, "
+                                       "...) failed: %s", 
+                                       wsa_strerror(WSAGetLastError()));
+                               closesocket(s);
+#  endif
+                               *noproto = 0;
+                               *inuse = 0;
+                               return -1;
+                       }
+                       /* check if we got the right thing or if system
+                        * reduced to some system max.  Warn if so */
+                       if(getsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&got, 
+                               &slen) >= 0 && got < snd/2) {
+                               log_warn("so-sndbuf %u was not granted. "
+                                       "Got %u. To fix: start with "
+                                       "root permissions(linux) or sysctl "
+                                       "bigger net.core.wmem_max(linux) or "
+                                       "kern.ipc.maxsockbuf(bsd) values.",
+                                       (unsigned)snd, (unsigned)got);
+                       }
+#  ifdef SO_SNDBUFFORCE
+               }
+#  endif
+#endif /* SO_SNDBUF */
        }
        if(family == AF_INET6) {
 # if defined(IPV6_V6ONLY)
@@ -394,7 +457,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto)
  */
 static int
 make_sock(int stype, const char* ifname, const char* port, 
-       struct addrinfo *hints, int v6only, int* noip6, size_t rcv)
+       struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd)
 {
        struct addrinfo *res = NULL;
        int r, s, inuse, noproto;
@@ -420,8 +483,8 @@ make_sock(int stype, const char* ifname, const char* port,
        if(stype == SOCK_DGRAM) {
                verbose_print_addr(res);
                s = create_udp_sock(res->ai_family, res->ai_socktype,
-                       (struct sockaddr*)res->ai_addr,
-                       res->ai_addrlen, v6only, &inuse, &noproto, (int)rcv);
+                       (struct sockaddr*)res->ai_addr, res->ai_addrlen,
+                       v6only, &inuse, &noproto, (int)rcv, (int)snd);
                if(s == -1 && inuse) {
                        log_err("bind: address already in use");
                } else if(s == -1 && noproto && hints->ai_family == AF_INET6){
@@ -440,7 +503,7 @@ make_sock(int stype, const char* ifname, const char* port,
 /** make socket and first see if ifname contains port override info */
 static int
 make_sock_port(int stype, const char* ifname, const char* port, 
-       struct addrinfo *hints, int v6only, int* noip6, size_t rcv)
+       struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd)
 {
        char* s = strchr(ifname, '@');
        if(s) {
@@ -461,9 +524,10 @@ make_sock_port(int stype, const char* ifname, const char* port,
                newif[s-ifname] = 0;
                strncpy(p, s+1, sizeof(p));
                p[strlen(s+1)]=0;
-               return make_sock(stype, newif, p, hints, v6only, noip6, rcv);
+               return make_sock(stype, newif, p, hints, v6only, noip6,
+                       rcv, snd);
        }
-       return make_sock(stype, ifname, port, hints, v6only, noip6, rcv);
+       return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd);
 }
 
 /**
@@ -553,19 +617,20 @@ set_recvpktinfo(int s, int family)
  * @param port: Port number to use (as string).
  * @param list: list of open ports, appended to, changed to point to list head.
  * @param rcv: receive buffer size for UDP
+ * @param snd: send buffer size for UDP
  * @return: returns false on error.
  */
 static int
 ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, 
        struct addrinfo *hints, const char* port, struct listen_port** list,
-       size_t rcv)
+       size_t rcv, size_t snd)
 {
        int s, noip6=0;
        if(!do_udp && !do_tcp)
                return 0;
        if(do_auto) {
                if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, 
-                       &noip6, rcv)) == -1) {
+                       &noip6, rcv, snd)) == -1) {
                        if(noip6) {
                                log_warn("IPv6 protocol not available");
                                return 1;
@@ -586,7 +651,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
        } else if(do_udp) {
                /* regular udp socket */
                if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, 
-                       &noip6, rcv)) == -1) {
+                       &noip6, rcv, snd)) == -1) {
                        if(noip6) {
                                log_warn("IPv6 protocol not available");
                                return 1;
@@ -604,7 +669,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
        }
        if(do_tcp) {
                if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, 
-                       &noip6, 0)) == -1) {
+                       &noip6, 0, 0)) == -1) {
                        if(noip6) {
                                /*log_warn("IPv6 protocol not available");*/
                                return 1;
@@ -750,7 +815,8 @@ listening_ports_open(struct config_file* cfg)
                        hints.ai_family = AF_INET6;
                        if(!ports_create_if(do_auto?"::0":"::1", 
                                do_auto, cfg->do_udp, do_tcp, 
-                               &hints, portbuf, &list, cfg->socket_rcvbuf)) {
+                               &hints, portbuf, &list,
+                               cfg->so_rcvbuf, cfg->so_sndbuf)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -759,7 +825,8 @@ listening_ports_open(struct config_file* cfg)
                        hints.ai_family = AF_INET;
                        if(!ports_create_if(do_auto?"0.0.0.0":"127.0.0.1", 
                                do_auto, cfg->do_udp, do_tcp, 
-                               &hints, portbuf, &list, cfg->socket_rcvbuf)) {
+                               &hints, portbuf, &list,
+                               cfg->so_rcvbuf, cfg->so_sndbuf)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -771,7 +838,7 @@ listening_ports_open(struct config_file* cfg)
                        hints.ai_family = AF_INET6;
                        if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, 
                                do_tcp, &hints, portbuf, &list, 
-                               cfg->socket_rcvbuf)) {
+                               cfg->so_rcvbuf, cfg->so_sndbuf)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -781,7 +848,7 @@ listening_ports_open(struct config_file* cfg)
                        hints.ai_family = AF_INET;
                        if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, 
                                do_tcp, &hints, portbuf, &list, 
-                               cfg->socket_rcvbuf)) {
+                               cfg->so_rcvbuf, cfg->so_sndbuf)) {
                                listening_ports_free(list);
                                return NULL;
                        }
index 728a562531061c7506e004567e6e2e6d044574ac..0abc524789275da5e8f5c3e2a88e6ed5a1d98cef 100644 (file)
@@ -162,10 +162,12 @@ size_t listen_get_mem(struct listen_dnsport* listen);
  * @param noproto: on error, this is set true if cause is that the
        IPv6 proto (family) is not available.
  * @param rcv: set size on rcvbuf with socket option, if 0 it is not set.
+ * @param snd: set size on sndbuf with socket option, if 0 it is not set.
  * @return: the socket. -1 on error.
  */
 int create_udp_sock(int family, int socktype, struct sockaddr* addr, 
-       socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv);
+       socklen_t addrlen, int v6only, int* inuse, int* noproto, int rcv,
+       int snd);
 
 /**
  * Create and bind TCP listening socket
index d980cc712b5f5ec5e18e10b60e3117ffbe0e42e3..b9297940a8d6dd52d4404aae08d2a316d744e3c7 100644 (file)
@@ -820,12 +820,14 @@ udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int port,
                struct sockaddr_in6* sa = (struct sockaddr_in6*)addr;
                sa->sin6_port = (in_port_t)htons((uint16_t)port);
                fd = create_udp_sock(AF_INET6, SOCK_DGRAM, 
-                       (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, 0);
+                       (struct sockaddr*)addr, addrlen, 1, inuse, &noproto,
+                       0, 0);
        } else {
                struct sockaddr_in* sa = (struct sockaddr_in*)addr;
                sa->sin_port = (in_port_t)htons((uint16_t)port);
                fd = create_udp_sock(AF_INET, SOCK_DGRAM, 
-                       (struct sockaddr*)addr, addrlen, 1, inuse, &noproto, 0);
+                       (struct sockaddr*)addr, addrlen, 1, inuse, &noproto,
+                       0, 0);
        }
        return fd;
 }
index 65476bfda9e1b00a8d04a37f22ee24603bb5729d..bcd5426a513893fae70405efd10e4b005f88b2c7 100644 (file)
@@ -140,7 +140,8 @@ config_create(void)
        cfg->root_hints = NULL;
        cfg->do_daemonize = 1;
        cfg->if_automatic = 0;
-       cfg->socket_rcvbuf = 0;
+       cfg->so_rcvbuf = 0;
+       cfg->so_sndbuf = 0;
        cfg->num_ifs = 0;
        cfg->ifs = NULL;
        cfg->num_out_ifs = 0;
@@ -334,7 +335,8 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_POW2("msg-cache-slabs:", msg_cache_slabs)
        else S_SIZET_NONZERO("num-queries-per-thread:",num_queries_per_thread)
        else S_SIZET_OR_ZERO("jostle-timeout:", jostle_time)
-       else S_MEMSIZE("so-rcvbuf:", socket_rcvbuf)
+       else S_MEMSIZE("so-rcvbuf:", so_rcvbuf)
+       else S_MEMSIZE("so-sndbuf:", so_sndbuf)
        else S_MEMSIZE("rrset-cache-size:", rrset_cache_size)
        else S_POW2("rrset-cache-slabs:", rrset_cache_slabs)
        else S_YNO("prefetch:", prefetch)
@@ -553,7 +555,8 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_DEC(opt, "msg-cache-slabs", msg_cache_slabs)
        else O_DEC(opt, "num-queries-per-thread", num_queries_per_thread)
        else O_UNS(opt, "jostle-timeout", jostle_time)
-       else O_MEM(opt, "so-rcvbuf", socket_rcvbuf)
+       else O_MEM(opt, "so-rcvbuf", so_rcvbuf)
+       else O_MEM(opt, "so-sndbuf", so_sndbuf)
        else O_MEM(opt, "rrset-cache-size", rrset_cache_size)
        else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs)
        else O_YNO(opt, "prefetch-key", prefetch_key)
index 85e781c6337eca215b896800e3a6c450340a2a3e..5ca7b1ef0a132deaa8ff8407c17abc52cc727833 100644 (file)
@@ -120,7 +120,9 @@ struct config_file {
         * and recvmsg/sendmsg ancillary data to detect interfaces, boolean */
        int if_automatic;
        /** SO_RCVBUF size to set on port 53 UDP socket */
-       size_t socket_rcvbuf;
+       size_t so_rcvbuf;
+       /** SO_SNDBUF size to set on port 53 UDP socket */
+       size_t so_sndbuf;
 
        /** number of interfaces to open. If 0 default all interfaces. */
        int num_ifs;
index ceaa0677e15e4e6902ed62ef011a4064f8128ba1..9dda30a766600057246d118ac7a843b1c6e38a9d 100644 (file)
@@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 129
-#define YY_END_OF_BUFFER 130
+#define YY_NUM_RULES 130
+#define YY_END_OF_BUFFER 131
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,142 +371,142 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1214] =
+static yyconst flex_int16_t yy_accept[1221] =
     {   0,
-        1,    1,  111,  111,  115,  115,  119,  119,  123,  123,
-        1,    1,  130,  127,    1,  109,  109,  128,    2,  128,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  111,
-      112,  112,  113,  128,  115,  116,  116,  117,  128,  122,
-      119,  120,  120,  121,  128,  123,  124,  124,  125,  128,
-      126,  110,    2,  114,  128,  126,  127,    0,    1,    2,
-        2,    2,    2,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  111,    0,  115,    0,  122,
-        0,  119,  123,    0,  126,    0,    2,    2,  126,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  126,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  126,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,   55,  127,  127,  127,  127,  127,    6,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  127,  127,  126,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  126,  127,  127,  127,  127,   21,
-      127,  127,  127,  127,  127,   12,   13,  127,   15,   14,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  107,  127,  127,  127,  127,    3,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      126,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  118,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,   24,  127,  127,  127,
-      127,  127,  127,  127,   25,  127,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,   68,  118,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,   67,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,   53,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,   22,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,   23,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,   17,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,   20,  127,   56,   57,  127,   54,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,    5,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,   70,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-       93,   92,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,   26,  127,
-      127,  127,  127,   58,  127,  127,  127,  127,  127,   90,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,   45,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,    4,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,   87,
-      127,  127,  127,  127,  127,  127,  127,  101,   88,  127,
-       16,  127,  127,  127,  127,   60,   61,   59,  127,  127,
-      127,  127,  127,   66,  127,  127,  127,  127,  127,  127,
-      127,  127,   89,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,   52,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,   75,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  127,   33,   34,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,   65,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,   69,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  106,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,   79,  127,   82,  127,
-      127,  127,  127,   64,  127,  127,   99,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,   35,   36,  127,   41,   83,  127,   94,
-       91,  127,   29,  127,   85,  127,  127,  127,  127,  127,
-
-        7,  127,   51,   98,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,   71,  127,  127,  108,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-       84,   28,   30,  127,  127,  127,  127,  127,   50,  127,
-      127,  127,  102,  127,  127,  127,  127,  127,  127,   48,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  104,
-      127,  127,   27,  127,  127,  127,  127,  127,   11,  127,
-      127,  127,  127,  127,  127,   10,  127,  127,   31,  127,
-      103,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,   78,   77,  127,  105,  100,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,   37,  127,  127,  127,  127,
-      127,   32,  127,  127,  127,   72,   74,  127,  127,  127,
-       76,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,   18,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,   97,  127,  127,
-      127,  127,  127,  127,   19,  127,    9,  127,  127,   95,
-       42,  127,  127,  127,   81,  127,   62,  127,  127,   44,
-       47,   43,  127,   38,  127,    8,  127,  127,   80,  127,
-      127,  127,  127,   39,  127,   96,  127,  127,   73,   63,
-
-       46,   40,  127,  127,  127,  127,   49,  127,  127,  127,
-      127,   86,    0
+        1,    1,  112,  112,  116,  116,  120,  120,  124,  124,
+        1,    1,  131,  128,    1,  110,  110,  129,    2,  129,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  112,
+      113,  113,  114,  129,  116,  117,  117,  118,  129,  123,
+      120,  121,  121,  122,  129,  124,  125,  125,  126,  129,
+      127,  111,    2,  115,  129,  127,  128,    0,    1,    2,
+        2,    2,    2,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  112,    0,  116,    0,  123,
+        0,  120,  124,    0,  127,    0,    2,    2,  127,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  127,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  127,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,   56,  128,  128,  128,  128,  128,    6,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  127,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  127,  128,  128,
+      128,  128,   22,  128,  128,  128,  128,  128,   12,   13,
+      128,   15,   14,  128,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  108,  128,  128,  128,  128,
+        3,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  127,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  119,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+       25,  128,  128,  128,  128,  128,  128,  128,   26,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   69,
+      119,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   68,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   54,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+
+      128,   23,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,   24,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,   17,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   20,
+       21,  128,   57,   58,  128,   55,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,    5,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+
+      128,  128,   71,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,   94,   93,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   27,  128,  128,  128,  128,
+       59,  128,  128,  128,  128,  128,   91,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   46,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,    4,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,   88,  128,  128,  128,
+      128,  128,  128,  128,  102,   89,  128,   16,  128,  128,
+      128,  128,   61,   62,   60,  128,  128,  128,  128,  128,
+       67,  128,  128,  128,  128,  128,  128,  128,  128,   90,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,   53,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,   76,  128,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,  128,   34,
+       35,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,   66,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,   70,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      107,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,   80,  128,   83,  128,  128,  128,  128,
+       65,  128,  128,  100,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+       36,   37,  128,   42,   84,  128,   95,   92,  128,   30,
+
+      128,   86,  128,  128,  128,  128,  128,    7,  128,   52,
+       99,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,   72,  128,  128,  109,  128,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,   85,   29,   31,
+      128,  128,  128,  128,  128,   51,  128,  128,  128,  103,
+      128,  128,  128,  128,  128,  128,   49,  128,  128,  128,
+      128,  128,  128,  128,  128,  128,  105,  128,  128,   28,
+      128,  128,  128,  128,  128,   11,  128,  128,  128,  128,
+      128,  128,   10,  128,  128,   32,  128,  104,  128,  128,
+
+      128,  128,  128,  128,  128,  128,  128,  128,   79,   78,
+      128,  106,  101,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,   38,  128,  128,  128,  128,  128,   33,  128,
+      128,  128,   73,   75,  128,  128,  128,   77,  128,  128,
+      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,   18,  128,  128,  128,  128,  128,  128,  128,  128,
+      128,  128,  128,  128,   98,  128,  128,  128,  128,  128,
+      128,   19,  128,    9,  128,  128,   96,   43,  128,  128,
+      128,   82,  128,   63,  128,  128,   45,   48,   44,  128,
+       39,  128,    8,  128,  128,   81,  128,  128,  128,  128,
+
+       40,  128,   97,  128,  128,   74,   64,   47,   41,  128,
+      128,  128,  128,   50,  128,  128,  128,  128,   87,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -549,285 +549,287 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1228] =
+static yyconst flex_int16_t yy_base[1235] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2268, 2028,   50, 2440, 2440, 2440,  129,   94,
+       87,  108, 2345, 2331,   50, 2447, 2447, 2447,  129,   94,
        70,  104,  122,   90,   92,  115,  126,   95,   84,  132,
-      133,  138,   50,  135,  136,  156,  145,  155,  157, 1969,
-     2440, 2440, 2440,   70, 1757, 2440, 2440, 2440,   42, 1694,
-     1495, 2440, 2440, 2440,  176, 1429, 2440, 2440, 2440,  181,
-     1365, 2440,  186, 2440,  190,  111, 1172,  196,  120,    0,
+      133,  138,   50,  135,  136,  156,  145,  155,  157, 2329,
+     2447, 2447, 2447,   70, 2328, 2447, 2447, 2447,   42, 2258,
+     2096, 2447, 2447, 2447,  176, 1978, 2447, 2447, 2447,  181,
+     1860, 2447,  186, 2447,  190,  111, 1300,  196,  120,    0,
       207,    0,    0,  103,  189,  183,  191,  192,  197,  200,
       202,  142,  209,  205,  208,  213,  214,  217,  218,  224,
       215,  233,  236,  225,  235,  237,  240,  241,  226,  245,
 
       248,  251,  252,  255,  259,  257,  253,  267,  263,  261,
-      265,   49,  270,  269,  273, 1040,  286,  663,  289,  576,
-      296,  540,  401,  301,  282,  305,  309,    0,  302,  306,
+      265,   49,  270,  269,  273, 1184,  286, 1051,  289,  811,
+      296,  710,  466,  301,  282,  305,  309,    0,  302,  306,
       312,  289,  308,  295,  313,  319,  315,  322,  334,  323,
       318,  321,  327,  325,  330,  328,  332,  331,  336,  339,
       340,  351,  352,  362,  345,  363,  360,  369,  372,  370,
       373,  361,  374,  371,  375,  376,  378,  382,  384,  385,
-      388,  390,  389,  386,  394,  402,  404,  407,  400,  410,
-      411,  418,  416,  415,  414,  417,  424,  422,  433,  428,
-      431,  435,  436,  439,  442,  441,  449,  447,  456,  443,
-
-      445,  454,  457,  453,  460,  464,  462,  461,  468,  469,
-      470,  474,  480,  481,  475,  483,  485,  487,  491,  489,
-      493,  497,  504,  500,  501,  502,  503,  514,  510,  507,
-      511,  513,  519,  534,  523,  521,  518,  522,  528,  524,
-      531,  535,  542,  545,  547,  540,  551,  561,  552,  562,
-      563,  566,  568,  565,  564,  571,  574,  575,  573,  581,
-      591,  587,  589,  588,  597,  600,  599,  592,  602,  603,
-      605, 2440,  609,  611,  612,  613,  614, 2440,  615,  616,
-      617,  618,  619,  630,  621,  628,  629,  633,  637,  647,
-      638,  643,  640,  645,  651,  655,  653,  654,  656,  664,
-
-      661,  660,  662,  671,  681,  672,  674,  680,  683,  685,
-      686,  687,  688,  690,  695,  700,  701,  705,  707,  713,
-      689,  709,  711,  717,  716,  718,  719,  721,  722,  725,
-      729,  732,  731,  735,  741,  734,  743,  749,  746,  750,
-      751,  755,  724,  756,  757,  758,  759,  773,  771,  765,
-      775,  781,  777,  763,  782,  769,  785,  787,  793,  789,
-      791,  792,  794,  796,  798,  799,  800,  801,  804,  807,
-      813,  814,  816,  818,  817,  820,  824,  819,  826, 2440,
-      834,  833,  830,  836,  838, 2440, 2440,  149, 2440, 2440,
-      841,  839,  842,  852,  854,  851,  849,  843,  860,  855,
-
-      863,  865,  869,  871,  857,  875,  876,  878,  881,  882,
-      886,  888,  883,  890,  892,  893,  897,  899,  904,  901,
-      910,  895, 2440,  912,  907,  916,  919, 2440,  908,  918,
-      920,  913,  925,  923,  933,  926,  936,  938,  928,  941,
-      943,  935,  944,  951,  949,  950,  954,  960,  957,  959,
-      962,  963,  965,  964,  966,  970,  991,  971,  972,  973,
-      979,  974,  985,  976,  986, 1003,  987,  980, 1005, 1008,
-     1009,  998, 1014, 1016, 2440, 1023, 1019, 1020, 1021, 1025,
-     1026, 1024, 1027, 1028, 1031, 1041, 2440, 1037, 1042, 1044,
-     1046, 1050, 1053, 1060, 2440, 1062, 1063, 1065, 1056, 1038,
-
-     1066, 1070, 1072, 1073, 1078, 1074, 1076, 1080, 1082, 1083,
-     1086, 1084, 1090, 1099, 1091, 1098, 1100, 1101, 1102, 1107,
-     1104, 1108, 1105, 1109, 2440,  216, 1111, 1112, 1110, 1118,
-     1121, 1123, 1126, 1129, 1131, 1120, 1132, 1138, 1133, 1139,
-     1141, 1142, 1144, 1145, 1150, 1152, 1153, 1155,  989, 1157,
-     1156, 1158, 1159, 1160, 2440, 1163, 1170, 1165, 1166, 1181,
-     1182, 1183, 1189, 1186, 1188, 1190, 1194, 1196, 1202, 1203,
-     1199, 1201, 1206, 1200, 2440, 1209, 1210, 1212, 1207, 1216,
-     1218, 1219, 1217, 1228, 1229, 1232, 1234, 1236, 1239, 1223,
-     1244, 1240, 1246, 1247, 1249, 2440, 1255, 1259, 1257, 1263,
-
-     1251, 1261, 1265, 1267, 1268, 1269, 1275, 1271, 1273, 1272,
-     1277, 1274, 1279, 1281, 1282, 2440, 1301, 1283, 1284, 1298,
-     1289, 1286, 1308, 1295, 1297, 1310, 1313, 1315, 1316, 1317,
-     1319, 1323, 1320, 1325, 1331, 1332, 1333, 2440, 1337, 1336,
-     1324, 1345, 1347, 1339, 1348, 1356, 1349, 1352, 1353, 1355,
-     1359, 1357, 1360, 1361, 1364, 1363, 1366, 1376, 1370, 1381,
-     1377, 1383, 1389, 2440, 1391, 2440, 2440, 1388, 2440, 1392,
-     1393, 1394, 1396, 1397, 1399, 1400, 1404, 1402, 1406, 1407,
-     1409, 1410, 2440, 1413, 1416, 1421, 1414, 1418, 1423, 1285,
-     1427, 1440, 1425, 1433, 1436, 2440, 1439, 1426, 1446, 1453,
-
-     1454, 1441, 1437, 1456, 1458, 1465, 1462, 1450, 1452, 1460,
-     1469, 1466, 1475, 1471, 1473, 1474, 1477, 1478, 1487, 1481,
-     2440, 2440, 1486, 1494, 1482, 1498, 1500, 1511, 1505, 1488,
-     1502, 1512, 1476, 1513, 1514, 1516, 1518, 1519, 2440, 1525,
-     1526, 1522, 1524, 2440, 1523, 1529, 1535, 1536, 1539, 2440,
-     1540, 1541, 1543, 1544, 1546, 1550, 1542, 1553, 1556, 1558,
-     1561, 1562, 1569, 1563, 1566, 1570, 1578, 1580, 1581, 1583,
-     1591, 1567, 1585, 1587, 1593, 1595, 1597, 1598, 2440, 1605,
-     1571, 1608, 1599, 1610, 1611, 1602, 1612, 1613, 1615, 1617,
-     1619, 1620, 1622, 1625, 1627, 1630, 1631, 1626, 1628, 1634,
-
-     1639, 2440, 1642, 1648, 1641, 1644, 1650, 1653, 1654, 1656,
-     1657, 1659, 1662, 1664, 1665, 1666, 1674, 1682, 1675, 1667,
-     1688, 1684, 1685, 1687, 1690, 1697, 1671, 1700, 1691, 2440,
-     1698, 1705, 1707, 1702, 1709, 1710, 1711, 2440, 2440, 1712,
-     2440, 1717, 1713, 1719, 1721, 2440, 2440, 2440, 1727, 1723,
-     1725, 1732, 1736, 2440, 1733, 1737, 1739, 1742, 1743, 1744,
-     1746, 1745, 2440, 1747, 1748, 1741, 1749, 1763, 1751, 1764,
-     1766, 1767, 1770, 1771, 1773, 1779, 1776, 2440, 1778, 1780,
-     1783, 1784, 1786, 1790, 1788, 1791, 1785, 1787, 1801, 2440,
-     1802, 1792, 1806, 1810, 1811, 1813, 1814, 1818, 1816, 1819,
-
-     1824, 1826, 2440, 2440, 1827, 1829, 1830, 1825, 1835, 1838,
-     1839, 1841, 1843, 1844, 1845, 1847, 1848, 1849, 2440, 1850,
-     1852, 1858, 1855, 1862, 1867, 1859, 1874, 1876, 1877, 1879,
-     1881, 2440, 1882, 1884, 1885, 1889, 1890, 1851, 1891, 1897,
-     1893, 1886, 1900, 2440, 1902, 1895, 1906, 1903, 1909, 1910,
-     1911, 1912, 1917, 1919, 1923, 1920, 2440, 1922, 2440, 1925,
-     1929, 1937, 1935, 2440, 1933, 1938, 2440, 1940, 1941, 1952,
-     1945, 1953, 1955, 1957, 1939, 1947, 1958, 1965, 1964, 1961,
-     1966, 1968, 1972, 2440, 2440, 1978, 2440, 2440, 1981, 2440,
-     2440, 1983, 2440, 1985, 2440, 1991, 1987, 1973, 1975, 1990,
-
-     2440, 1993, 2440, 2440, 1994, 1996, 2000, 2002, 2003, 2004,
-     2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2017, 2016,
-     2023, 2024, 2026, 2027, 2036, 2440, 2025, 2044, 2440, 2047,
-     2041, 2033, 2038, 2048, 2049, 2053, 2059, 2055, 2057, 2058,
-     2440, 2440, 2440, 2060, 2062, 2067, 2069, 2061, 2440, 2072,
-     2063, 2074, 2440, 2085, 2075, 2081, 2083, 2087, 2091, 2440,
-     2089, 2093, 2095, 2094, 2102, 2106, 2108, 2111, 2113, 2440,
-     2114, 2115, 2440, 2117, 2107, 2121, 2122, 2124, 2440, 2077,
-     2118, 2126, 2129, 2128, 2134, 2440, 2131, 2132, 2440, 2142,
-     2440, 2135, 2143, 2146, 2148, 2151, 2152, 2153, 2159, 2157,
-
-     2158, 2440, 2440, 2160, 2440, 2440, 2161, 2163, 2164, 2165,
-     2168, 2169, 2172, 2175, 2174, 2440, 2176, 2177, 2186, 2178,
-     2187, 2440, 2188, 2190, 2191, 2440, 2440, 2199, 2192, 2200,
-     2440, 2201, 2203, 2205, 2207, 2211, 2213, 2208, 2215, 2214,
-     2217, 2218, 2221, 2225, 2440, 2232, 2226, 2228, 2234, 2236,
-     2238, 2239, 2240, 2242, 2244, 2248, 2245, 2440, 2249, 2253,
-     2259, 2262, 2263, 2266, 2440, 2269, 2440, 2272, 2273, 2440,
-     2440, 2267, 2277, 2274, 2440, 2280, 2440, 2281, 2282, 2440,
-     2440, 2440, 2284, 2440, 2287, 2440, 2289, 2290, 2440, 2292,
-     2294, 2296, 2298, 2440, 2300, 2440, 2302, 2303, 2440, 2440,
-
-     2440, 2440, 2307, 2306, 2309, 2312, 2440, 2313, 2315, 2316,
-     2318, 2440, 2440, 2348, 2355, 2362, 2369, 2376,   94, 2383,
-     2390, 2397, 2404, 2411, 2418, 2425, 2432
+      388,  390,  389,  386,  394,  402,  412,  399,  409,  400,
+      414,  415,  411,  413,  417,  423,  424,  425,  429,  432,
+      434,  433,  437,  438,  444,  440,  442,  445,  451,  452,
+
+      453,  455,  456,  458,  459,  465,  461,  463,  462,  469,
+      467,  481,  486,  470,  477,  480,  487,  489,  493,  490,
+      492,  499,  505,  501,  503,  506,  502,  504,  515,  512,
+      511,  514,  520,  518,  540,  522,  524,  525,  526,  529,
+      527,  535,  538,  534,  536,  541,  548,  560,  566,  550,
+      553,  557,  567,  572,  571,  568,  576,  578,  579,  580,
+      582,  594,  577,  592,  585,  595,  604,  593,  601,  603,
+      605,  606, 2447,  609,  611,  612,  614,  615, 2447,  616,
+      617,  619,  624,  622,  639,  625,  618,  631,  628,  641,
+      638,  650,  644,  651,  621,  653,  648,  656,  659,  660,
+
+      661,  665,  662,  666,  669,  672,  678,  675,  677,  680,
+      682,  686,  688,  689,  691,  690,  697,  702,  710,  707,
+      709,  716,  692,  712,  714,  720,  719,  721,  722,  724,
+      725,  728,  732,  735,  734,  738,  744,  737,  746,  752,
+      749,  753,  754,  758,  727,  759,  760,  761,  762,  776,
+      774,  768,  778,  784,  780,  785,  766,  788,  789,  772,
+      791,  798,  794,  796,  797,  799,  801,  803,  805,  808,
+      807,  817,  818,  809,  819,  821,  810,  828,  829,  831,
+      825,  836, 2447,  839,  838,  840,  841,  844, 2447, 2447,
+      149, 2447, 2447,  843,  847,  850,  856,  860,  857,  848,
+
+      855,  869,  863,  873,  861,  881,  883,  865,  871,  884,
+      887,  889,  891,  894,  895,  897,  899,  900,  901,  905,
+      902,  912,  906,  918,  915, 2447,  917,  916,  921,  924,
+     2447,  923,  925,  928,  929,  926,  931,  936,  932,  939,
+      947,  948,  941,  943,  949,  951,  956,  963,  959,  961,
+      964,  970,  966,  968,  974,  969,  971,  976,  978,  980,
+     1003,  981,  982,  983,  987,  988,  990,  991, 1005, 1010,
+      999, 1015,  992, 1016, 1017, 1020, 1022, 1024, 2447, 1031,
+     1029, 1028, 1030, 1033, 1035, 1037, 1040, 1039, 1046, 1053,
+     2447, 1042, 1049, 1050, 1058, 1052, 1064, 1067, 2447, 1071,
+
+     1068, 1073, 1074, 1075, 1077, 1078, 1079, 1081, 1082, 1090,
+     1085, 1086, 1091, 1092, 1094, 1098, 1096, 1105, 1113, 1102,
+     1110, 1111, 1112, 1115, 1118, 1116, 1119, 1120, 1121, 2447,
+      216, 1122, 1123, 1124, 1137, 1140, 1142, 1129, 1131, 1148,
+     1141, 1149, 1151, 1152, 1154, 1155, 1157, 1161, 1158, 1165,
+     1159, 1167, 1162, 1168, 1172, 1173, 1171, 1175, 1178, 2447,
+     1180, 1125, 1183, 1188, 1197, 1185, 1191, 1204, 1201, 1205,
+     1206, 1208, 1209, 1216, 1217, 1213, 1215, 1214, 1220, 2447,
+     1221, 1224, 1226, 1229, 1233, 1234, 1235, 1236, 1238, 1241,
+     1245, 1247, 1249, 1250, 1257, 1251, 1254, 1258, 1259, 1260,
+
+      989, 2447, 1270, 1272, 1268, 1274, 1275, 1276, 1278, 1280,
+     1281, 1282, 1288, 1286, 1287, 1285, 1290, 1292, 1293, 1296,
+     1294, 2447, 1309, 1297, 1298, 1310, 1302, 1299, 1321, 1311,
+     1313, 1322, 1324, 1326, 1331, 1328, 1334, 1332, 1335, 1337,
+     1344, 1345, 1348, 2447, 1350, 1338, 1351, 1358, 1360, 1354,
+     1361, 1368, 1362, 1364, 1365, 1366, 1372, 1369, 1374, 1375,
+     1377, 1387, 1379, 1371, 1378, 1394, 1395, 1388, 1401, 2447,
+     2447, 1402, 2447, 2447, 1404, 2447, 1406, 1399, 1405, 1407,
+     1410, 1416, 1411, 1417, 1413, 1421, 1419, 1420, 1422, 2447,
+     1424, 1426, 1428, 1433, 1434, 1436,  875, 1438, 1446, 1437,
+
+     1444, 1445, 2447, 1447, 1448, 1459, 1455, 1460, 1449, 1463,
+     1464, 1465, 1472, 1474, 1466, 1468, 1475, 1476, 1478, 1482,
+     1480, 1481, 1485, 1487, 1486, 1496, 1494, 2447, 2447, 1489,
+     1498, 1497, 1503, 1504, 1514, 1518, 1499, 1511, 1520, 1521,
+     1522, 1523, 1525, 1527, 1528, 2447, 1534, 1536, 1533, 1542,
+     2447, 1532, 1530, 1537, 1544, 1549, 2447, 1550, 1553, 1554,
+     1558, 1561, 1555, 1552, 1562, 1569, 1565, 1571, 1572, 1578,
+     1574, 1576, 1581, 1589, 1591, 1592, 1596, 1585, 1582, 1593,
+     1597, 1599, 1605, 1607, 1608, 2447, 1614, 1600, 1615, 1602,
+     1620, 1621, 1622, 1613, 1623, 1624, 1625, 1629, 1626, 1630,
+
+     1635, 1638, 1632, 1640, 1637, 1650, 1642, 1645, 2447, 1648,
+     1659, 1656, 1657, 1666, 1662, 1660, 1658, 1670, 1671, 1673,
+     1672, 1674, 1675, 1682, 1688, 1691, 1680, 1698, 1684, 1697,
+     1694, 1699, 1705, 1703, 1707, 1704, 2447, 1708, 1710, 1713,
+     1714, 1717, 1715, 1718, 2447, 2447, 1719, 2447, 1728, 1723,
+     1726, 1730, 2447, 2447, 2447, 1737, 1733, 1742, 1734, 1745,
+     2447, 1738, 1746, 1748, 1749, 1751, 1752, 1753, 1754, 2447,
+     1755, 1757, 1762, 1756, 1767, 1770, 1771, 1773, 1772, 1778,
+     1779, 1781, 1787, 1784, 2447, 1785, 1786, 1791, 1793, 1794,
+     1798, 1799, 1795, 1792, 1802, 1809, 2447, 1810, 1788, 1814,
+
+     1820, 1817, 1822, 1824, 1825, 1827, 1828, 1831, 1834, 2447,
+     2447, 1835, 1837, 1838, 1833, 1846, 1848, 1840, 1849, 1847,
+     1850, 1853, 1856, 1858, 1857, 2447, 1859, 1861, 1863, 1864,
+     1867, 1880, 1868, 1883, 1885, 1871, 1887, 1889, 2447, 1891,
+     1893, 1875, 1898, 1895, 1899, 1900, 1901, 1907, 1904, 1909,
+     2447, 1911, 1912, 1914, 1916, 1919, 1918, 1920, 1921, 1922,
+     1926, 1932, 1929, 2447, 1930, 2447, 1934, 1940, 1942, 1944,
+     2447, 1946, 1947, 2447, 1948, 1949, 1956, 1958, 1957, 1964,
+     1965, 1952, 1966, 1968, 1974, 1971, 1967, 1975, 1976, 1979,
+     2447, 2447, 1987, 2447, 2447, 1990, 2447, 2447, 1992, 2447,
+
+     1994, 2447, 2000, 1996, 1982, 1985, 1999, 2447, 2002, 2447,
+     2447, 2003, 2009, 2005, 2013, 2006, 2014, 2015, 2016, 2017,
+     2019, 2021, 2022, 2023, 2024, 2025, 2026, 2033, 2030, 2035,
+     2036, 2043, 2447, 2034, 2045, 2447, 2054, 2051, 2037, 2056,
+     2057, 2058, 2062, 2064, 2063, 2065, 2066, 2447, 2447, 2447,
+     2067, 2068, 2070, 2075, 2076, 2447, 2080, 2072, 2082, 2447,
+     2088, 2083, 2092, 2093, 2095, 2096, 2447, 2097, 2102, 2103,
+     2099, 2110, 2116, 2111, 2118, 2120, 2447, 2121, 2113, 2447,
+     2124, 2122, 2123, 2128, 2130, 2447, 2133, 2134, 2136, 2137,
+     2140, 2138, 2447, 2141, 2142, 2447, 2145, 2447, 2147, 2156,
+
+     2151, 2159, 2161, 2162, 2149, 2169, 2166, 2168, 2447, 2447,
+     2170, 2447, 2447, 2171, 2173, 2174, 2175, 2177, 2178, 2179,
+     2183, 2184, 2447, 2185, 2189, 2187, 2195, 2194, 2447, 2197,
+     2196, 2200, 2447, 2447, 2209, 2201, 2210, 2447, 2211, 2212,
+     2213, 2215, 2218, 2220, 2222, 2223, 2224, 2226, 2227, 2234,
+     2235, 2447, 2238, 2228, 2239, 2243, 2245, 2247, 2250, 2249,
+     2254, 2251, 2256, 2257, 2447, 2259, 2268, 2271, 2273, 2260,
+     2275, 2447, 2277, 2447, 2280, 2281, 2447, 2447, 2282, 2284,
+     2287, 2447, 2288, 2447, 2285, 2291, 2447, 2447, 2447, 2297,
+     2447, 2294, 2447, 2300, 2289, 2447, 2301, 2303, 2307, 2309,
+
+     2447, 2311, 2447, 2312, 2313, 2447, 2447, 2447, 2447, 2316,
+     2315, 2318, 2321, 2447, 2322, 2325, 2323, 2327, 2447, 2447,
+     2355, 2362, 2369, 2376, 2383,   94, 2390, 2397, 2404, 2411,
+     2418, 2425, 2432, 2439
     } ;
 
-static yyconst flex_int16_t yy_def[1228] =
+static yyconst flex_int16_t yy_def[1235] =
     {   0,
-     1213,    1, 1214, 1214, 1215, 1215, 1216, 1216, 1217, 1217,
-     1218, 1218, 1213, 1219, 1213, 1213, 1213, 1213, 1220, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1221,
-     1213, 1213, 1213, 1221, 1222, 1213, 1213, 1213, 1222, 1223,
-     1213, 1213, 1213, 1213, 1223, 1224, 1213, 1213, 1213, 1224,
-     1225, 1213, 1226, 1213, 1225, 1225, 1219, 1219, 1213, 1227,
-     1220, 1227, 1220, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1221, 1221, 1222, 1222, 1223,
-     1223, 1213, 1224, 1224, 1225, 1225, 1226, 1226, 1225, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1225, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1225, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1213, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1225, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1225, 1219, 1219, 1219, 1219, 1213,
-     1219, 1219, 1219, 1219, 1219, 1213, 1213, 1219, 1213, 1213,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1225, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1225, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1213, 1219, 1213, 1213, 1219, 1213, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1213, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
-     1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1213,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1213, 1219,
-     1213, 1219, 1219, 1219, 1219, 1213, 1213, 1213, 1219, 1219,
-     1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1219, 1213, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1213, 1219,
-     1219, 1219, 1219, 1213, 1219, 1219, 1213, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1213, 1213, 1219, 1213, 1213, 1219, 1213,
-     1213, 1219, 1213, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
-
-     1213, 1219, 1213, 1213, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1213, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1213, 1213, 1213, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
-     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213,
-     1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219, 1213, 1219,
-     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1213, 1219,
-     1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
-     1219, 1213, 1213, 1219, 1213, 1213, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219,
-     1219, 1213, 1219, 1219, 1219, 1213, 1213, 1219, 1219, 1219,
-     1213, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219, 1219, 1219,
-     1219, 1219, 1219, 1219, 1219, 1219, 1219, 1213, 1219, 1219,
-     1219, 1219, 1219, 1219, 1213, 1219, 1213, 1219, 1219, 1213,
-     1213, 1219, 1219, 1219, 1213, 1219, 1213, 1219, 1219, 1213,
-     1213, 1213, 1219, 1213, 1219, 1213, 1219, 1219, 1213, 1219,
-     1219, 1219, 1219, 1213, 1219, 1213, 1219, 1219, 1213, 1213,
-
-     1213, 1213, 1219, 1219, 1219, 1219, 1213, 1219, 1219, 1219,
-     1219, 1213,    0, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213
+     1220,    1, 1221, 1221, 1222, 1222, 1223, 1223, 1224, 1224,
+     1225, 1225, 1220, 1226, 1220, 1220, 1220, 1220, 1227, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1228,
+     1220, 1220, 1220, 1228, 1229, 1220, 1220, 1220, 1229, 1230,
+     1220, 1220, 1220, 1220, 1230, 1231, 1220, 1220, 1220, 1231,
+     1232, 1220, 1233, 1220, 1232, 1232, 1226, 1226, 1220, 1234,
+     1227, 1234, 1227, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1228, 1228, 1229, 1229, 1230,
+     1230, 1220, 1231, 1231, 1232, 1232, 1233, 1233, 1232, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1232, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1232, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1232, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1232, 1226, 1226,
+     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1220,
+     1226, 1220, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1232, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1232, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1220, 1226, 1220, 1220, 1226, 1220, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1220, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+     1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1220, 1220, 1226, 1220, 1226, 1226,
+     1226, 1226, 1220, 1220, 1220, 1226, 1226, 1226, 1226, 1226,
+     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220,
+     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1220, 1226, 1220, 1226, 1226, 1226, 1226,
+     1220, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1220, 1220, 1226, 1220, 1220, 1226, 1220, 1220, 1226, 1220,
+
+     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1220,
+     1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1220, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1220, 1220,
+     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1220,
+     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1220,
+     1226, 1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+     1226, 1226, 1220, 1226, 1226, 1220, 1226, 1220, 1226, 1226,
+
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1220, 1220,
+     1226, 1220, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226, 1220, 1226,
+     1226, 1226, 1220, 1220, 1226, 1226, 1226, 1220, 1226, 1226,
+     1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1220, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226,
+     1226, 1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1226,
+     1226, 1220, 1226, 1220, 1226, 1226, 1220, 1220, 1226, 1226,
+     1226, 1220, 1226, 1220, 1226, 1226, 1220, 1220, 1220, 1226,
+     1220, 1226, 1220, 1226, 1226, 1220, 1226, 1226, 1226, 1226,
+
+     1220, 1226, 1220, 1226, 1226, 1220, 1220, 1220, 1220, 1226,
+     1226, 1226, 1226, 1220, 1226, 1226, 1226, 1226, 1220,    0,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220
     } ;
 
-static yyconst flex_int16_t yy_nxt[2480] =
+static yyconst flex_int16_t yy_nxt[2487] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -847,7 +849,7 @@ static yyconst flex_int16_t yy_nxt[2480] =
        72,   73,   89,   81,   68,   68,   82,   68,   68,   83,
        68,   96,   90,  104,   68,   97,  100,   68,  110,   93,
        94,   68,  101,  105,   95,  102,  106,   68,   68,   68,
-      114,   98,  103,  107,  115,  111,  138,  120,  462,  120,
+      114,   98,  103,  107,  115,  111,  138,  120,  466,  120,
       120,  112,  120,  108,  123,  123,  113,   72,  109,   72,
        72,  125,   72,  125,  125,   68,  125,   67,  128,   67,
 
@@ -873,237 +875,238 @@ static yyconst flex_int16_t yy_nxt[2480] =
       210,   68,   68,   68,   68,   68,   68,   68,   68,  216,
        68,  217,  219,  218,   68,  221,   68,   68,   68,  224,
 
-       68,   68,   68,  222,  228,  220,   68,  231,  229,  232,
-      223,  234,  126,  124,   68,  226,   68,  230,  225,   68,
-      227,  235,   68,   68,  237,  240,   68,   68,   68,   68,
-       68,  239,  233,  241,   68,  246,   68,  244,  236,  245,
-       68,  238,  242,   68,  243,   68,  247,   68,   68,  253,
-      250,   68,  251,   68,   68,   68,  248,   68,  249,   68,
-      252,   68,  255,  257,  256,   68,   68,  254,   68,   68,
-      261,  264,   68,   68,   68,  258,   68,  265,  259,  260,
-       68,   68,   68,  262,  263,  266,   68,   68,  270,  271,
-      268,  272,   68,   68,  269,   68,  273,   68,  278,   68,
-
-      267,   68,  280,   68,  274,   68,  277,  275,  279,   68,
-      276,  283,   68,   68,   68,   68,   68,  286,  285,   68,
-      281,  288,   68,   68,  287,   68,   68,  289,  292,  282,
-      126,   68,  284,   68,   68,   68,   68,  291,  308,  290,
-       68,  122,  303,   68,  293,  294,   68,   68,  295,  296,
-      302,  304,   68,  305,   68,  306,  307,   68,  297,   68,
-      298,  299,  300,   68,   68,  301,  313,  309,  314,  310,
-      315,  316,  311,   68,   68,   68,   68,   68,   68,  312,
-       68,  322,  321,   68,  317,   68,   68,   68,  121,  328,
-      318,  319,  320,   68,  323,  325,  327,  324,  330,   68,
-
-       68,   68,  329,   68,   68,  331,  332,  335,  326,   68,
-      334,   68,   68,  333,   68,   68,  337,   68,  340,  338,
-      336,   68,  341,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,  343,   68,  344,  349,  339,  351,  345,  350,
-       68,   68,   68,  348,  342,   68,  355,  346,  347,   68,
-       68,  352,   68,  356,  360,   68,  363,   68,  365,   68,
-      354,  357,  353,   68,  361,   68,   68,   68,   68,  359,
-      362,  358,   68,   68,   68,  119,   68,  364,  366,  367,
-      368,  371,  372,  126,   68,  369,   68,  375,  376,  374,
-      370,  373,   68,   68,  380,   68,  377,   68,   68,   68,
-
-       68,   68,   68,  384,  378,  379,  386,   68,  388,  381,
-      382,  387,   68,   68,  383,  385,  389,   68,  390,   68,
-      391,   68,  392,   68,  395,   68,  393,  394,   68,   68,
-       68,   68,  396,   68,   68,  397,   68,   68,  399,  405,
-      401,   68,  404,   68,   68,  402,   68,   68,  400,  403,
-      407,  398,  406,   68,  417,   68,  412,  408,   68,  410,
-      411,   68,   68,   68,  413,  414,  415,   68,   68,   68,
-       68,   68,  416,  420,  419,   68,  421,   68,  424,  409,
-      422,   68,  418,   68,  423,   68,  425,   68,  427,   68,
-      426,  429,  428,   68,   68,  430,  432,   68,  431,   68,
-
-      435,   68,  436,   68,   68,   68,   68,  437,   68,  438,
-       68,   68,   68,   68,  434,  433,   68,  443,  442,   68,
-      444,  445,  439,  441,  446,   68,   68,  440,   68,  126,
-       68,   68,   68,  448,  451,  452,   68,  449,   68,  455,
-      453,  457,   68,  447,  450,   68,   68,  456,   68,  458,
-       68,   68,  454,   68,   68,   68,  460,  464,  465,  466,
-      459,   68,  463,   68,   68,  461,   68,   68,  472,   68,
-      467,  475,   68,  468,  476,   68,  477,   68,  469,  473,
-      474,   68,  479,   68,  470,  471,  480,   68,   68,  481,
-       68,  484,  478,   68,   68,   68,  483,  487,   68,  486,
-
-       68,  489,   68,  488,   68,   68,  482,   68,  485,   68,
-      490,   68,  491,   68,  493,  495,   68,  497,  494,   68,
-       68,  496,   68,  492,   68,   68,  498,  499,   68,  501,
-       68,   68,   68,  500,  502,   68,  506,   68,   68,  505,
-       68,  504,  503,  512,  507,   68,  508,   68,   68,  509,
-       68,  510,  511,   68,  513,   68,   68,  518,  519,  514,
-      516,   68,   68,   68,  520,  515,   68,  523,  517,   68,
-      525,   68,   68,  526,  126,   68,   68,   68,   68,  522,
-      521,  528,   68,   68,   68,   68,   68,  537,   68,  524,
-      527,   68,   68,  544,  543,  529,  531,   68,   68,   68,
-
-      539,   68,  530,   68,  549,  540,  532,  541,  533,  538,
-       68,  542,  534,  548,  535,   68,  545,   68,  550,  536,
-       68,   68,  627,  546,  553,  551,   68,  555,   68,  552,
-      556,   68,   68,   68,  557,   68,   68,   68,   68,   68,
-       68,  547,  560,   68,  563,  554,  559,  561,  566,   68,
-       68,  558,  117,   68,   68,  562,   68,  565,   68,  568,
-      564,  569,   68,  570,  567,   68,  572,  573,   68,  574,
-      580,  571,   68,  575,   68,   68,  576,   68,   68,  577,
-      578,  581,   68,  579,   68,   68,   68,  582,   68,  583,
-       68,  584,   68,  585,   68,   68,   68,  593,   68,  589,
-
-      590,  591,   68,   68,  586,  588,  594,  592,  587,  596,
-       68,   68,   68,   68,   68,  600,   68,   68,  595,   68,
-       68,   68,   68,   68,   68,  608,  599,  598,  609,  602,
-       68,  597,   68,   68,  601,   68,  603,  605,   68,  606,
-      610,   68,  607,   68,   68,   68,  604,  614,  613,  616,
-       68,   68,  611,   68,   68,  612,   68,   68,  619,  615,
-      618,  621,   68,  617,   68,   68,  623,   68,   68,   68,
-       68,   68,   68,  620,  629,   68,  622,   68,   68,  624,
-      625,  632,   68,  636,   68,  630,  626,  628,  637,  633,
-      634,  631,  638,   68,   68,   68,  641,  635,   68,  642,
-
-       68,   68,   68,  644,  640,  643,   68,  639,   68,  647,
-      648,   68,   68,   68,   68,   68,  649,  650,   68,   68,
-      645,   68,   68,  655,   68,  656,  646,  651,   68,   68,
-       68,   68,  652,  659,  653,   68,  654,  657,  661,  664,
-       68,   68,  658,  666,   68,  667,   68,  660,   68,  662,
-      669,   68,   68,  668,  663,  670,   68,  672,   68,   68,
-      665,   68,  676,   68,  671,  674,  677,   68,  675,   68,
-      679,   68,  680,   68,  678,   68,  673,   68,  683,   68,
-       68,   68,  686,   68,   68,   68,   68,   68,  682,   68,
-      690,   68,  681,   68,   68,   68,   68,   68,   68,  764,
-
-      684,   68,  689,  687,  685,  688,  691,   68,  695,   68,
-       68,  693,  696,   68,  698,  699,  692,  694,  701,  700,
-       68,  697,   68,  704,  702,   68,  703,   68,   68,   68,
-      706,   68,   68,  708,  707,   68,   68,   68,  714,  715,
-      710,  705,  713,   68,   68,   68,  716,  709,   68,   68,
-      711,   68,  720,  712,  717,  719,  721,   68,  722,   68,
-       68,   68,  718,  725,   68,   68,  724,   68,   68,   68,
-      723,   68,   68,   68,  733,   68,   68,  126,   68,  735,
-      726,  734,   68,  727,  728,  730,  729,  732,   68,   68,
-      731,  736,  739,   68,  740,   68,  742,  737,  743,  744,
-
-       68,   68,  738,   68,   68,   68,   68,  745,   68,   68,
-      750,   68,   68,  748,   68,  741,   68,  752,   68,   68,
-      746,   68,   68,  755,  749,   68,   68,  757,   68,  754,
-       68,  747,  751,   68,  760,   68,  753,   68,   68,   68,
-      756,  124,  759,  758,  765,   68,  761,  766,   68,   68,
-      762,   68,   68,   68,  769,  763,  770,  767,   68,  768,
-      773,  772,   68,  771,   68,   68,   68,  774,   68,  776,
-       68,  775,   68,  777,   68,  778,  779,   68,   68,  780,
-      781,   68,  786,   68,  782,   68,   68,   68,   68,   68,
-       68,  785,  783,   68,   68,  784,  122,  791,   68,   68,
-
-       68,  795,  806,  787,  790,  788,   68,  789,  792,  794,
-       68,  793,   68,  797,   68,  796,  802,   68,  801,  798,
-      803,  800,  799,   68,   68,   68,   68,  804,   68,  809,
-       68,   68,  812,  813,   68,   68,   68,   68,   68,  815,
-      814,   68,  805,  817,  808,  816,  810,   68,   68,  811,
-      807,   68,   68,   68,   68,   68,   68,  823,   68,  818,
-      824,  825,   68,  826,  820,   68,  819,  830,   68,  821,
-       68,  827,  822,   68,   68,   68,  834,  828,   68,   68,
-      829,   68,   68,   68,  831,  832,  833,  835,  837,  838,
-       68,  839,   68,   68,  841,   68,  836,   68,  842,   68,
-
-      843,  851,  840,   68,  846,   68,  847,   68,  848,   68,
-       68,   68,  850,  849,   68,  852,  844,   68,  855,  845,
-       68,  854,   68,   68,   68,   68,  856,   68,  857,   68,
-      863,   68,   68,  858,   68,  865,  853,   68,   68,   68,
-       68,  871,   68,   68,  859,  860,   68,  861,  867,  868,
-      862,   68,  869,   68,   68,  875,   68,  866,  864,  874,
-       68,  878,   68,  877,  870,   68,   68,  873,   68,   68,
-      879,   68,  872,  876,   68,  880,   68,   68,   68,   68,
-      884,  888,  891,   68,  882,  885,   68,   68,  881,  889,
-      883,  892,  887,  890,   68,  893,   68,   68,  886,   68,
-
-       68,  895,   68,   68,  898,  899,  121,  900,  894,   68,
-       68,  896,   68,  902,   68,  901,  903,   68,  904,   68,
-      905,   68,   68,   68,   68,   68,  906,  897,  907,   68,
-      910,   68,  908,   68,  915,   68,  909,   68,  917,   68,
-      913,  911,  914,  912,   68,   68,  918,  919,   68,   68,
-      921,   68,  916,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,  929,   68,  928,  920,  923,  924,  925,  119,
-      931,  930,  922,  926,  932,   68,   68,  927,   68,   68,
-      935,  934,   68,   68,  936,   68,  940,  937,   68,  933,
-       68,   68,   68,  941,  944,   68,   68,   68,   68,   68,
-
-       68,  938,   68,   68,   68,  939,  943,  946,  945,  942,
-      947,  948,  949,   68,   68,  952,  950,  951,   68,  953,
-      954,  957,   68,   68,  959,   68,   68,  956,   68,  955,
-       68,   68,  958,  962,  961,  964,   68,   68,   68,   68,
-      967,   68,   68,  968,  963,  960,  965,   68,  966,  969,
-       68,   68,  970,   68,  971,   68,   68,   68,  973,   68,
-       68,   68,   68,   68,   68,  980,  972,   68,  983,  997,
-       68,   68,  978,  984,   68,  975,  976,  981,  985,   68,
-      977,  974,  979,  982,  986,  987,   68,  988,   68,   68,
-      990,   68,  991,   68,   68,  993,   68,   68,   68,  992,
-
-      995,   68,   68,   68, 1001,   68,  998,   68,  989,   68,
-      999, 1003,   68, 1004,   68,   68,  994, 1002,   68, 1006,
-      996,   68,   68,   68,   68, 1000, 1008, 1007, 1010,   68,
-     1014,   68,   68, 1005,   68,   68, 1015,   68, 1012, 1011,
-     1013,   68, 1018, 1009, 1019,   68, 1017,   68, 1020,   68,
-       68,   68,   68,   68, 1016, 1024, 1021,   68, 1025,   68,
-     1022, 1027, 1023, 1026,   68,   68, 1029,   68, 1028,   68,
-       68, 1031, 1034,   68, 1030, 1033,   68,   68,   68, 1032,
-       68,  117, 1035, 1037,   68,   68, 1039,   68, 1038, 1036,
-       68, 1040, 1041,   68, 1042,   68, 1043,   68, 1044,   68,
-
-     1045, 1046,   68,   68, 1049,   68,   68, 1048,   68, 1047,
-     1051, 1050,   68, 1053,   68,   68,   68, 1052,   68,   68,
-       68,   68, 1060,   68,   68,   68,   68, 1054,   68,   68,
-     1056, 1057, 1058, 1061, 1055,   68,   68,   68,   68,   68,
-       68, 1059, 1064, 1068, 1069,   68, 1063, 1070,   68, 1066,
-       68, 1062, 1065,   68, 1067, 1071,   68, 1072, 1073,   68,
-       68,   68, 1074, 1075, 1079,   68, 1080,   68, 1076,   68,
-       68,   68,   68,   68,   68,   68, 1077, 1085, 1086,   68,
-     1078,   68, 1081, 1089,   68, 1091,   68,   68, 1082,   68,
-     1083, 1088, 1084,   68, 1090,   68, 1087,   68, 1092,   68,
-
-     1095,   68, 1094,   68, 1096,   68,   68,   68, 1114, 1093,
-     1099, 1097, 1100, 1102,   68, 1104, 1098, 1103,   68,   68,
-       68, 1101, 1105,   68, 1106,   68,   68,   68, 1110,   68,
-       68, 1107, 1109,   68,   68, 1112,   68, 1116,   68, 1108,
-       68,   68, 1111,   68,   68, 1113,   68,   68, 1118, 1115,
-     1117, 1119, 1120, 1122,   68,   68, 1124, 1121,   68, 1126,
-       68, 1125, 1127,   68,   68,   68, 1130, 1123, 1131,   68,
-       68,   68,   68,   68, 1132,   68,   68,   68, 1133, 1129,
-       68,   68, 1128, 1135,   68, 1138,   68,   68,   68,   68,
-       68, 1143, 1134, 1137, 1146, 1136, 1141, 1145,   68,   68,
-
-       68, 1139,   68,   68,   68, 1152, 1142, 1144, 1147, 1148,
-     1140,   68,   68,   68, 1149,   68, 1151,   68, 1154,   68,
-       68, 1153, 1158,   68, 1155,   68,   68,   68, 1150,   68,
-       68, 1162, 1165,   68, 1157, 1161, 1156,   68,   68, 1160,
-       68, 1159, 1166, 1167,   68, 1170,   68, 1171,   68, 1164,
-       68,   68,   68, 1175,   68, 1163,   68,   68, 1168, 1177,
-       68,   68, 1169, 1173, 1180,   68, 1179, 1213, 1176, 1172,
-     1181,   68, 1174, 1182,   68,   68, 1178, 1184,   68,   68,
-     1183,   68, 1185, 1186,   68,   68,   68, 1188, 1189,   68,
-     1187, 1190,   68,   68,   68, 1194,   68, 1191, 1193,   68,
-
-     1196,   68,   68, 1195,   68, 1199,   68, 1200,   68, 1201,
-       68, 1202,   68, 1192,   68,   68, 1204, 1197,   68,   68,
-     1207,   68, 1198, 1205,   68,   68, 1203,   68,   68, 1212,
-       68, 1213, 1213, 1208, 1213, 1213, 1213, 1213, 1206, 1213,
-     1209, 1210, 1213, 1213, 1213, 1213, 1213, 1211,   40,   40,
-       40,   40,   40,   40,   40,   45,   45,   45,   45,   45,
-       45,   45,   50,   50,   50,   50,   50,   50,   50,   56,
-       56,   56,   56,   56,   56,   56,   61,   61,   61,   61,
-       61,   61,   61,   71,   71, 1213,   71,   71,   71,   71,
-      116,  116, 1213, 1213, 1213,  116,  116,  118,  118, 1213,
-
-     1213,  118, 1213,  118,  120, 1213, 1213, 1213, 1213, 1213,
-      120,  123,  123, 1213, 1213, 1213,  123,  123,  125, 1213,
-     1213, 1213, 1213, 1213,  125,  127,  127, 1213,  127,  127,
-      127,  127,   72,   72, 1213,   72,   72,   72,   72,   13,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213
+       68,   68,   68,  222,  229,  220,   68,  232,  230,  233,
+      223,   68,   68,  236,   68,  226,  227,  231,  225,  235,
+      228,  126,  241,   68,   68,   68,   68,   68,  242,   68,
+      237,  239,  234,  238,  240,   68,   68,   68,  247,  246,
+      243,   68,  248,  245,   68,   68,   68,  244,  251,   68,
+       68,  254,   68,  252,   68,  256,   68,   68,  258,  253,
+      249,  250,  257,   68,   68,   68,  255,   68,   68,  262,
+       68,   68,  265,   68,   68,   68,  266,   68,  124,   68,
+      261,   68,   68,  264,  259,  274,  260,  267,  263,   68,
+      269,  270,   68,   68,  268,  271,  272,  273,   68,   68,
+
+      279,   68,   68,  281,   68,   68,  275,  277,  278,  276,
+      280,   68,  284,   68,   68,   68,   68,   68,   68,  282,
+      286,  287,  290,   68,   68,  289,   68,   68,  288,  291,
+       68,  283,   68,  285,   68,  294,   68,  126,   68,   68,
+      293,   68,  310,  292,  296,  305,   68,   68,   68,  304,
+       68,  295,   68,   68,  297,  298,  308,  307,  306,  309,
+       68,  312,   68,  313,  299,   68,  300,  301,  302,   68,
+      311,  303,   68,  314,  315,  317,  318,  316,   68,   68,
+       68,  320,  319,   68,   68,  321,  323,  324,   68,   68,
+       68,   68,   68,  322,   68,  333,  330,   68,  325,  327,
+
+      329,  332,  326,  331,   68,   68,   68,   68,  336,  334,
+      335,  337,  328,   68,  338,   68,   68,   68,   68,  342,
+      340,   68,  343,   68,   68,  339,   68,   68,   68,   68,
+       68,   68,  345,   68,   68,  346,   68,   68,  341,  347,
+       68,  351,  352,   68,  344,  350,  353,  356,  348,  349,
+       68,   68,  355,   68,  358,  354,   68,  363,  367,  357,
+       68,  359,   68,   68,  366,   68,  368,  364,   68,  360,
+      362,   68,   68,   68,   68,  369,  365,   68,   68,  361,
+      370,   68,  374,  375,  126,  379,  371,   68,  378,   68,
+       68,  372,   68,  383,   68,  373,  377,  376,   68,  380,
+
+       68,   68,   68,   68,   68,  382,  387,  381,  389,   68,
+      384,  122,  385,  390,   68,  388,  386,  391,  392,   68,
+      393,   68,   68,  394,   68,  395,   68,  398,   68,  396,
+      397,   68,   68,   68,   68,  399,   68,   68,  400,   68,
+       68,  402,  408,  404,   68,  407,   68,   68,  405,   68,
+       68,  403,  406,  410,  401,  409,   68,  420,   68,  415,
+      411,   68,  413,  414,   68,   68,   68,  416,  417,  418,
+       68,   68,   68,   68,   68,  419,  423,  422,   68,  424,
+       68,  427,  412,  425,   68,  421,   68,  426,   68,  428,
+       68,  430,   68,  429,  432,  431,   68,   68,  434,  433,
+
+       68,   68,  437,   68,  435,  439,   68,  440,   68,   68,
+       68,   68,  441,   68,  442,   68,  436,   68,  438,   68,
+       68,   68,   68,  121,  446,  447,  448,  443,  445,   68,
+       68,   68,  444,   68,  449,  450,  454,   68,  452,  451,
+      126,   68,  453,   68,  456,  455,  461,  457,   68,  459,
+       68,   68,   68,   68,  462,   68,   68,  460,  458,   68,
+       68,  464,   68,  470,  467,  468,  469,   68,   68,   68,
+      463,  465,   68,   68,  476,   68,  471,   68,  477,  472,
+      479,   68,  480,   68,  473,   68,  481,   68,  482,  771,
+      474,  475,  478,   68,  483,   68,   68,  485,  484,   68,
+
+      488,   68,  486,   68,  487,  491,   68,   68,  490,   68,
+      492,   68,   68,   68,   68,  493,  489,   68,   68,  494,
+      495,  498,  497,  499,   68,  501,  500,   68,   68,   68,
+       68,  496,  503,   68,  505,   68,   68,   68,   68,  506,
+       68,   68,  504,   68,   68,  511,  502,  507,   68,  510,
+      515,   68,  513,   68,  517,   68,  508,  512,  509,   68,
+       68,   68,  514,   68,  518,  516,  521,  520,   68,  523,
+      524,   68,  519,   68,  525,   68,   68,  528,   68,  530,
+       68,   68,   68,   68,  522,  531,  126,  533,   68,  527,
+       68,  526,   68,   68,   68,   68,  532,  542,  529,   68,
+
+       68,   68,   68,   68,   68,  555,  536,  534,  682,  548,
+      544,   68,  549,  545,  535,   68,  547,   68,  537,  543,
+      538,  546,   68,  550,  539,  553,  540,   68,   68,   68,
+      551,  541,   68,  556,   68,  560,   68,  557,  561,  554,
+       68,   68,   68,   68,  562,   68,  558,   68,  552,   68,
+      565,   68,   68,  559,   68,  564,  566,  568,   68,  563,
+      571,   68,   68,  119,   68,   68,  573,  574,  567,  572,
+       68,  569,  570,  576,  578,  575,   68,  577,  579,   68,
+       68,  581,  580,   68,  582,   68,   68,   68,  583,   68,
+       68,   68,  586,   68,   68,  587,  588,   68,   68,  589,
+
+      590,  584,   68,   68,   68,  591,   68,  585,   68,  595,
+       68,  596,  599,  597,   68,  592,  594,   68,  593,  598,
+      600,  602,   68,   68,   68,   68,  606,   68,   68,  601,
+       68,   68,   68,   68,   68,   68,   68,   68,  604,  605,
+      608,   68,  603,   68,  614,  640,  607,  615,  611,   68,
+      612,  609,   68,   68,   68,  617,  613,  618,  610,  616,
+       68,   68,  622,   68,   68,  619,   68,   68,  620,   68,
+       68,   68,  625,   68,   68,  624,  621,   68,  627,   68,
+       68,  629,  623,   68,   68,   68,  630,   68,  626,  628,
+       68,  635,   68,  632,  631,   68,  117,   68,  636,  638,
+
+       68,  633,  634,   68,  643,  642,  639,  637,  644,   68,
+      645,  647,  646,   68,  648,  641,   68,   68,   68,  650,
+       68,   68,  649,  653,  654,   68,   68,   68,   68,   68,
+      655,  656,   68,   68,  651,  657,   68,  662,   68,  652,
+      658,   68,  659,  661,  660,   68,   68,   68,   68,  670,
+       68,  663,  671,   68,  667,  665,  664,   68,  673,   68,
+      674,   68,   68,   68,  666,  668,   68,  675,  676,   68,
+       68,   68,   68,  669,  678,  679,  672,  683,  681,  684,
+       68,  686,   68,  677,   68,  685,   68,   68,   68,  680,
+       68,  690,   68,   68,   68,  693,  687,   68,   68,   68,
+
+       68,  689,   68,  697,   68,   68,   68,  688,   68,   68,
+       68,   68,   68,  691,   68,  696,  702,  692,  694,  695,
+      703,   68,   68,   68,  698,   68,  700,  706,  705,  701,
+      699,  708,  707,   68,   68,  704,   68,  709,   68,  711,
+       68,  713,  710,   68,   68,  714,   68,   68,  715,   68,
+       68,  721,  722,  712,  720,  717,   68,   68,  716,  718,
+       68,  723,   68,   68,  725,  727,   68,  724,  719,  728,
+       68,  729,   68,   68,   68,  732,   68,   68,   68,  731,
+       68,   68,  726,   68,   68,  730,   68,   68,  740,   68,
+       68,   68,  744,  733,  741,  734,  735,  736,  737,   68,
+
+       68,  739,  738,  742,  743,  746,   68,   68,  749,  750,
+      745,   68,  747,   68,   68,  751,   68,   68,   68,   68,
+      748,  752,   68,   68,  755,   68,  753,  757,   68,   68,
+      759,   68,   68,   68,   68,  762,   68,  756,   68,  764,
+       68,  767,  754,  758,  761,   68,   68,  760,   68,   68,
+       68,  763,  766,  773,  765,  772,   68,   68,   68,   68,
+       68,   68,  780,  776,  777,  768,  769,   68,  770,  774,
+      775,   68,   68,  781,  779,   68,   68,   68,   68,  782,
+       68,  784,  785,  786,   68,  778,   68,   68,   68,  793,
+       68,  787,   68,   68,   68,  783,  788,   68,   68,   68,
+
+      789,   68,  791,  792,  802,  798,   68,  790,   68,   68,
+       68,   68,  794,  795,  797,   68,   68,  799,  796,  803,
+      800,  808,  801,   68,  805,  807,   68,  806,  804,  809,
+       68,  810,   68,   68,   68,   68,  811,   68,  816,   68,
+       68,  819,   68,  820,   68,   68,   68,  813,   68,   68,
+      812,  821,  824,  815,   68,  817,   68,  822,  818,  814,
+      825,   68,   68,  823,   68,   68,   68,   68,  826,  830,
+       68,  831,  827,   68,   68,  832,  834,   68,  833,  828,
+      837,   68,  829,   68,   68,  841,   68,  835,   68,  836,
+       68,  838,  849,   68,   68,  839,  840,   68,  842,  844,
+
+      845,   68,  846,   68,   68,   68,  843,  848,   68,   68,
+      853,   68,   68,  847,   68,  850,  854,   68,  855,   68,
+       68,  857,  859,  856,  851,   68,   68,   68,  862,  852,
+      858,  861,   68,   68,   68,   68,   68,   68,   68,  860,
+      870,   68,   68,  872,   68,  866,  863,   68,  864,   68,
+       68,  875,   68,  865,   68,  867,  868,   68,  869,  874,
+       68,  876,   68,  878,  871,  881,  882,  873,   68,   68,
+       68,   68,   68,  880,   68,  877,  884,  885,   68,  886,
+      879,  887,   68,   68,   68,   68,   68,   68,  883,  895,
+      888,  891,   68,  892,   68,  896,   68,  889,  898,  897,
+
+       68,  894,  890,   68,  899,  900,   68,  893,  901,   68,
+       68,   68,  905,  902,  907,   68,   68,   68,  903,   68,
+       68,  910,   68,  909,  911,   68,   68,   68,  908,   68,
+       68,   68,  912,  914,  913,   68,  904,  906,   68,  915,
+       68,  917,   68,  916,  922,   68,   68,  920,  925,   68,
+       68,  921,  918,  919,   68,  924,  926,   68,   68,  928,
+       68,   68,  923,   68,   68,   68,   68,   68,   68,   68,
+      927,  936,  935,  930,   68,  931,  932,  938,  939,   68,
+      933,  929,   68,   68,   68,   68,  934,  942,  941,  943,
+       68,   68,  937,   68,  947,  944,   68,   68,   68,   68,
+
+       68,  948,  951,   68,   68,   68,   68,   68,  940,  945,
+       68,   68,  950,  946,   68,  953,  949,  952,  954,  955,
+      957,   68,   68,  956,  958,  962,   68,  960,  961,   68,
+      959,  964,   68,  966,   68,  963,   68,   68,  965,   68,
+       68,  968,  971,   68,  969,   68,   68,   68,  974,   68,
+       68,  975,   68,  970,  972,  967,  973,  976,   68,   68,
+       68,   68,   68,  977,  978,   68,  980,  979,   68,   68,
+       68,   68,  126,   68,  987,   68,   68,  990,  991,   68,
+       68,  982,  985,   68,  983,  981,  988,   68,  989,  984,
+      986,  992,   68,  993,  994,   68,  995,   68,  997,   68,
+
+      998,   68,  996,   68, 1000,   68, 1001,   68,  999, 1002,
+       68,   68,   68,   68, 1006, 1005,   68, 1004, 1008,   68,
+     1010,   68, 1011,   68,   68, 1003,   68, 1013,   68, 1007,
+       68,   68,   68,   68,   68, 1009, 1015, 1017,   68, 1021,
+     1014,   68,   68, 1019,   68, 1022,   68, 1020, 1018, 1026,
+     1012, 1016,   68, 1025,   68, 1024,   68, 1027,   68,   68,
+       68,   68, 1023, 1031,   68, 1028, 1032, 1033,   68,   68,
+       68, 1030, 1035, 1029, 1034, 1036,   68,   68,   68,   68,
+       68, 1041, 1037,   68, 1038, 1040,   68,   68,   68, 1042,
+      124,   68, 1044, 1046,   68, 1043, 1045,   68, 1039,   68,
+
+     1047, 1048,   68, 1049,   68, 1050,   68, 1051,   68, 1052,
+     1053,   68,   68, 1056,   68,   68, 1055,   68,   68, 1054,
+     1057,   68, 1059, 1058, 1060,   68,   68,   68,   68,   68,
+     1061,   68, 1067,   68,   68,   68,   68,   68,   68, 1063,
+     1064, 1065,   68, 1068, 1062,   68,   68,   68,   68,   68,
+     1071, 1066, 1075, 1076, 1077,   68, 1070,   68, 1079, 1073,
+     1074, 1069, 1072,   68, 1078, 1080,   68, 1082,   68,   68,
+       68, 1087, 1081, 1086,   68,   68,   68,   68,   68,   68,
+       68, 1093,   68, 1092,   68, 1084, 1083,   68,   68, 1085,
+     1088, 1096,   68, 1098,   68,   68, 1089,  122, 1090, 1091,
+
+       68, 1099, 1094, 1097,   68,   68, 1095,   68,   68,   68,
+     1102,   68, 1103, 1101,   68,   68, 1104, 1100, 1111, 1106,
+     1107, 1109,   68,   68, 1105,   68, 1108, 1110,   68, 1112,
+       68, 1113,   68,   68,   68,   68,   68, 1115, 1114, 1116,
+       68, 1119,   68, 1117, 1118,   68,   68, 1123,   68,   68,
+       68, 1120,   68,   68,   68, 1126, 1129,   68, 1124,   68,
+     1125,   68, 1127,   68, 1121, 1122, 1132, 1128,   68, 1131,
+     1133,   68, 1134,   68,   68, 1136, 1137, 1138,   68, 1130,
+       68,   68,   68,   68, 1139,   68,   68,   68, 1140,   68,
+       68,   68, 1135, 1142, 1145,   68,   68,   68, 1152,   68,
+
+     1150,   68, 1141, 1144, 1148, 1143,   68,   68,   68,   68,
+     1146, 1153,   68,   68, 1159, 1154, 1149, 1147, 1155, 1151,
+     1156,   68,   68,   68,   68,   68, 1158,   68, 1161, 1165,
+       68, 1160,   68, 1162,   68,   68,   68, 1157,   68,   68,
+       68, 1169, 1164, 1168, 1163, 1172,   68,   68, 1166, 1174,
+       68,   68, 1173, 1167, 1177,   68, 1178,   68, 1171,   68,
+     1175,   68,   68,   68, 1170, 1182,   68, 1184,   68,   68,
+      121,   68,   68, 1176, 1180, 1183, 1186, 1190, 1179, 1187,
+       68, 1181, 1188,   68, 1189,   68, 1191,   68, 1185,   68,
+     1192, 1193,   68,   68,   68, 1196,   68,   68, 1194,   68,
+
+       68,   68, 1195,   68, 1197, 1198,   68, 1200, 1201,   68,
+     1202, 1203,   68,   68, 1206,   68, 1204, 1199, 1207,   68,
+     1208,   68, 1209,   68,   68,   68, 1211,   68,   68, 1214,
+       68, 1205, 1212,   68,   68,   68, 1210,   68, 1219,   68,
+      119,  117, 1215,   68, 1220, 1220, 1220, 1213, 1220, 1216,
+     1220, 1217, 1220, 1220, 1218,   40,   40,   40,   40,   40,
+       40,   40,   45,   45,   45,   45,   45,   45,   45,   50,
+       50,   50,   50,   50,   50,   50,   56,   56,   56,   56,
+       56,   56,   56,   61,   61,   61,   61,   61,   61,   61,
+       71,   71, 1220,   71,   71,   71,   71,  116,  116, 1220,
+
+     1220, 1220,  116,  116,  118,  118, 1220, 1220,  118, 1220,
+      118,  120, 1220, 1220, 1220, 1220, 1220,  120,  123,  123,
+     1220, 1220, 1220,  123,  123,  125, 1220, 1220, 1220, 1220,
+     1220,  125,  127,  127, 1220,  127,  127,  127,  127,   72,
+       72, 1220,   72,   72,   72,   72,   13, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220
     } ;
 
-static yyconst flex_int16_t yy_chk[2480] =
+static yyconst flex_int16_t yy_chk[2487] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1114,7 +1117,7 @@ static yyconst flex_int16_t yy_chk[2480] =
         9,  112,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  112,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1219,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1226,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   74,   22,   22,   74,   25,
@@ -1122,14 +1125,14 @@ static yyconst flex_int16_t yy_chk[2480] =
        19,   22,   19,   19,   23,   19,   26,   66,   27,   23,
        19,   19,   27,   23,   30,   31,   23,   34,   35,   23,
        32,   32,   27,   35,   82,   32,   34,   37,   37,   30,
-       31,  388,   34,   35,   31,   34,   35,   38,   36,   39,
-       39,   32,   34,   36,   39,   37,   82,   55,  388,   55,
+       31,  391,   34,   35,   31,   34,   35,   38,   36,   39,
+       39,   32,   34,   36,   39,   37,   82,   55,  391,   55,
        55,   38,   55,   36,   60,   60,   38,   63,   36,   63,
        63,   65,   63,   65,   65,   76,   65,   68,   63,   68,
 
        68,   75,   68,   77,   78,   75,   77,   68,   71,   79,
        71,   71,   80,   71,   81,   76,   83,   84,   71,   71,
-       85,   83,   78,   79,   80,   86,   87,   91,  526,   88,
+       85,   83,   78,   79,   80,   86,   87,   91,  531,   88,
        89,   84,   81,   88,   83,   89,   90,   94,   99,   90,
        85,   94,   90,   86,   87,   92,   91,   95,   93,   96,
        92,   93,   97,   98,   95,   93,   90,  100,   99,   97,
@@ -1150,233 +1153,234 @@ static yyconst flex_int16_t yy_chk[2480] =
       167,  161,  163,  162,  168,  165,  169,  170,  174,  168,
 
       171,  173,  172,  166,  172,  164,  175,  175,  173,  176,
-      167,  177,  179,  123,  176,  170,  177,  174,  169,  178,
-      171,  178,  180,  181,  179,  182,  185,  184,  183,  186,
-      182,  181,  176,  183,  188,  188,  187,  186,  178,  187,
-      190,  180,  184,  191,  185,  189,  189,  192,  193,  195,
-      192,  194,  193,  196,  195,  200,  190,  201,  191,  198,
-      194,  197,  197,  199,  198,  204,  202,  196,  199,  203,
-      203,  206,  205,  208,  207,  200,  206,  207,  201,  202,
-      209,  210,  211,  204,  205,  208,  212,  215,  212,  212,
-      210,  213,  213,  214,  211,  216,  214,  217,  218,  218,
-
-      209,  220,  220,  219,  215,  221,  217,  215,  219,  222,
-      216,  223,  224,  225,  226,  227,  223,  226,  225,  230,
-      221,  228,  229,  231,  227,  232,  228,  229,  232,  222,
-      237,  233,  224,  236,  238,  235,  240,  231,  241,  230,
-      239,  122,  236,  241,  232,  233,  234,  242,  234,  234,
-      235,  237,  246,  238,  243,  239,  240,  244,  234,  245,
-      234,  234,  234,  247,  249,  234,  246,  242,  247,  243,
-      248,  248,  244,  248,  250,  251,  255,  254,  252,  245,
-      253,  254,  253,  256,  249,  259,  257,  258,  120,  259,
-      250,  251,  252,  260,  255,  257,  258,  256,  261,  262,
-
-      264,  263,  260,  261,  268,  262,  263,  266,  257,  265,
-      265,  267,  266,  264,  269,  270,  268,  271,  271,  269,
-      267,  273,  273,  274,  275,  276,  277,  279,  280,  281,
-      282,  283,  275,  285,  276,  282,  270,  284,  277,  283,
-      286,  287,  284,  281,  274,  288,  288,  279,  280,  289,
-      291,  285,  293,  288,  290,  292,  292,  294,  294,  290,
-      287,  288,  286,  295,  290,  297,  298,  296,  299,  289,
-      291,  288,  302,  301,  303,  118,  300,  293,  295,  296,
-      297,  300,  301,  304,  306,  298,  307,  304,  305,  303,
-      299,  302,  308,  305,  309,  309,  306,  310,  311,  312,
-
-      313,  321,  314,  313,  307,  308,  315,  315,  317,  310,
-      311,  316,  316,  317,  312,  314,  318,  318,  319,  319,
-      320,  322,  321,  323,  324,  320,  322,  323,  325,  324,
-      326,  327,  325,  328,  329,  326,  343,  330,  328,  332,
-      330,  331,  331,  333,  332,  330,  336,  334,  329,  330,
-      334,  327,  333,  335,  343,  337,  338,  335,  339,  336,
-      337,  338,  340,  341,  339,  340,  341,  342,  344,  345,
-      346,  347,  342,  346,  345,  354,  347,  350,  349,  335,
-      348,  356,  344,  349,  348,  348,  350,  351,  352,  353,
-      351,  353,  352,  352,  355,  354,  356,  357,  355,  358,
-
-      359,  360,  360,  361,  362,  359,  363,  361,  364,  362,
-      365,  366,  367,  368,  358,  357,  369,  367,  366,  370,
-      368,  369,  363,  365,  370,  371,  372,  364,  373,  375,
-      374,  378,  376,  372,  375,  376,  377,  373,  379,  379,
-      377,  381,  383,  371,  374,  382,  381,  379,  384,  382,
-      385,  392,  378,  391,  393,  398,  384,  392,  393,  394,
-      383,  397,  391,  396,  394,  385,  395,  400,  396,  405,
-      395,  399,  399,  395,  400,  401,  401,  402,  395,  397,
-      398,  403,  403,  404,  395,  395,  404,  406,  407,  405,
-      408,  408,  402,  409,  410,  413,  407,  411,  411,  410,
-
-      412,  413,  414,  412,  415,  416,  406,  422,  409,  417,
-      414,  418,  415,  420,  417,  419,  419,  421,  418,  425,
-      429,  420,  421,  416,  424,  432,  422,  424,  426,  426,
-      430,  427,  431,  425,  427,  434,  431,  433,  436,  430,
-      439,  429,  427,  437,  432,  435,  433,  442,  437,  434,
-      438,  435,  436,  440,  438,  441,  443,  443,  444,  439,
-      441,  445,  446,  444,  445,  440,  447,  448,  442,  449,
-      450,  450,  448,  451,  451,  452,  454,  453,  455,  447,
-      446,  453,  456,  458,  459,  460,  462,  458,  464,  449,
-      452,  461,  468,  465,  464,  454,  456,  463,  465,  467,
-
-      460,  549,  455,  457,  468,  461,  457,  462,  457,  459,
-      472,  463,  457,  467,  457,  466,  466,  469,  469,  457,
-      470,  471,  549,  466,  472,  470,  473,  474,  474,  471,
-      476,  477,  478,  479,  477,  476,  482,  480,  481,  483,
-      484,  466,  480,  485,  483,  473,  479,  481,  486,  488,
-      500,  478,  116,  486,  489,  482,  490,  485,  491,  489,
-      484,  490,  492,  491,  488,  493,  493,  494,  499,  496,
-      500,  492,  494,  496,  496,  497,  497,  498,  501,  497,
-      498,  501,  502,  499,  503,  504,  506,  502,  507,  503,
-      505,  504,  508,  505,  509,  510,  512,  513,  511,  509,
-
-      510,  511,  513,  515,  506,  508,  514,  512,  507,  516,
-      516,  514,  517,  518,  519,  520,  521,  523,  515,  520,
-      522,  524,  529,  527,  528,  530,  519,  518,  531,  522,
-      530,  517,  536,  531,  521,  532,  523,  527,  533,  528,
-      532,  534,  529,  535,  537,  539,  524,  536,  535,  538,
-      538,  540,  533,  541,  542,  534,  543,  544,  541,  537,
-      540,  543,  545,  539,  546,  547,  545,  548,  551,  550,
-      552,  553,  554,  542,  551,  556,  544,  558,  559,  546,
-      547,  554,  557,  559,   67,  552,  548,  550,  560,  556,
-      557,  553,  560,  560,  561,  562,  563,  558,  564,  564,
-
-      565,  563,  566,  566,  562,  565,  567,  561,  568,  569,
-      570,  571,  574,  572,  569,  570,  571,  572,  573,  579,
-      567,  576,  577,  574,  578,  576,  568,  573,  580,  583,
-      581,  582,  573,  579,  573,  590,  573,  577,  581,  584,
-      584,  585,  578,  586,  586,  587,  587,  580,  588,  582,
-      589,  589,  592,  588,  583,  590,  591,  592,  593,  594,
-      585,  595,  597,  601,  591,  594,  598,  597,  595,  599,
-      600,  598,  601,  602,  599,  600,  593,  603,  604,  604,
-      605,  606,  607,  608,  610,  609,  612,  607,  603,  611,
-      611,  613,  602,  614,  615,  618,  619,  690,  622,  690,
-
-      605,  621,  610,  608,  606,  609,  612,  624,  617,  625,
-      620,  614,  617,  617,  619,  620,  613,  615,  622,  621,
-      623,  618,  626,  625,  623,  627,  624,  628,  629,  630,
-      627,  631,  633,  629,  628,  632,  641,  634,  635,  636,
-      631,  626,  634,  635,  636,  637,  637,  630,  640,  639,
-      632,  644,  642,  633,  639,  641,  642,  642,  643,  643,
-      645,  647,  640,  646,  648,  649,  645,  650,  646,  652,
-      644,  651,  653,  654,  654,  656,  655,   61,  657,  656,
-      647,  655,  659,  648,  649,  651,  650,  653,  658,  661,
-      652,  657,  660,  660,  661,  662,  663,  658,  665,  668,
-
-      668,  663,  659,  665,  670,  671,  672,  670,  673,  674,
-      675,  675,  676,  673,  678,  662,  677,  677,  679,  680,
-      671,  681,  682,  680,  674,  684,  687,  682,  685,  679,
-      688,  672,  676,  686,  686,  689,  678,  693,  698,  691,
-      681,   56,  685,  684,  691,  694,  687,  692,  695,  703,
-      688,  697,  692,  702,  695,  689,  697,  693,  699,  694,
-      700,  699,  708,  698,  709,  700,  701,  701,  704,  703,
-      705,  702,  710,  704,  707,  705,  706,  706,  712,  707,
-      708,  711,  713,  714,  709,  715,  716,  713,  733,  717,
-      718,  712,  710,  720,  725,  711,   51,  718,  723,  719,
-
-      730,  723,  733,  714,  717,  715,  724,  716,  719,  720,
-      726,  719,  727,  725,  731,  724,  729,  729,  728,  726,
-      730,  727,  726,  728,  732,  734,  735,  731,  736,  736,
-      737,  738,  740,  741,  742,  745,  743,  740,  741,  743,
-      742,  746,  732,  745,  735,  743,  737,  747,  748,  738,
-      734,  749,  751,  752,  757,  753,  754,  752,  755,  746,
-      753,  754,  756,  755,  748,  758,  747,  759,  759,  749,
-      760,  756,  751,  761,  762,  764,  763,  757,  765,  772,
-      758,  763,  766,  781,  760,  761,  762,  764,  766,  767,
-      767,  768,  768,  769,  770,  770,  765,  773,  771,  774,
-
-      772,  781,  769,  771,  775,  775,  776,  776,  777,  777,
-      778,  783,  780,  778,  786,  782,  773,  780,  785,  774,
-      782,  784,  784,  785,  787,  788,  786,  789,  786,  790,
-      791,  791,  792,  786,  793,  793,  783,  794,  798,  795,
-      799,  799,  796,  797,  787,  788,  800,  789,  795,  796,
-      790,  801,  797,  805,  803,  804,  806,  794,  792,  803,
-      804,  807,  807,  806,  798,  808,  809,  801,  810,  811,
-      808,  812,  800,  805,  813,  809,  814,  815,  816,  820,
-      813,  817,  819,  827,  811,  814,  817,  819,  810,  818,
-      812,  820,  816,  818,  818,  821,  822,  823,  815,  824,
-
-      821,  823,  825,  829,  826,  827,   50,  828,  822,  826,
-      831,  824,  828,  831,  834,  829,  832,  832,  833,  833,
-      834,  835,  836,  837,  840,  843,  835,  825,  836,  842,
-      842,  844,  837,  845,  849,  850,  840,  851,  851,  849,
-      844,  842,  845,  843,  852,  855,  852,  853,  853,  856,
-      856,  857,  850,  866,  858,  859,  860,  862,  861,  864,
-      865,  867,  865,  869,  864,  855,  858,  859,  860,   45,
-      867,  866,  857,  861,  868,  868,  870,  862,  871,  872,
-      871,  870,  873,  874,  872,  875,  876,  873,  877,  869,
-      879,  876,  880,  877,  881,  881,  882,  887,  883,  888,
-
-      885,  874,  884,  886,  892,  875,  880,  883,  882,  879,
-      883,  884,  885,  889,  891,  888,  886,  887,  893,  889,
-      891,  894,  894,  895,  896,  896,  897,  893,  899,  892,
-      898,  900,  895,  899,  898,  901,  901,  908,  902,  905,
-      906,  906,  907,  907,  900,  897,  902,  909,  905,  908,
-      910,  911,  909,  912,  910,  913,  914,  915,  912,  916,
-      917,  918,  920,  938,  921,  920,  911,  923,  923,  938,
-      922,  926,  917,  924,  924,  914,  915,  921,  925,  925,
-      916,  913,  918,  922,  926,  927,  927,  928,  928,  929,
-      930,  930,  931,  931,  933,  934,  934,  935,  942,  933,
-
-      936,  936,  937,  939,  941,  941,  939,  946,  929,  940,
-      940,  943,  943,  945,  945,  948,  935,  942,  947,  947,
-      937,  949,  950,  951,  952,  940,  949,  948,  951,  953,
-      955,  954,  956,  946,  958,  955,  956,  960,  953,  952,
-      954,  961,  961,  950,  962,  965,  960,  963,  963,  962,
-      966,  975,  968,  969,  958,  968,  963,  971,  969,  976,
-      965,  971,  966,  970,  970,  972,  973,  973,  972,  974,
-      977,  975,  978,  980,  974,  977,  979,  978,  981,  976,
-      982,   40,  979,  981,  983,  998,  983,  999,  982,  980,
-      986,  986,  989,  989,  992,  992,  994,  994,  996,  997,
-
-      997,  998, 1000,  996, 1002, 1002, 1005, 1000, 1006,  999,
-     1006, 1005, 1007, 1008, 1008, 1009, 1010, 1007, 1011, 1012,
-     1013, 1014, 1015, 1015, 1016, 1017, 1018, 1009, 1020, 1019,
-     1011, 1012, 1013, 1016, 1010, 1021, 1022, 1027, 1023, 1024,
-       14, 1014, 1019, 1023, 1024, 1032, 1018, 1025, 1025, 1021,
-     1033, 1017, 1020, 1031, 1022, 1027, 1028, 1028, 1030, 1030,
-     1034, 1035, 1031, 1032, 1036, 1036, 1037, 1038, 1033, 1039,
-     1040, 1037, 1044, 1048, 1045, 1051, 1034, 1045, 1046, 1046,
-     1035, 1047, 1038, 1050, 1050, 1052, 1052, 1055, 1039, 1080,
-     1040, 1048, 1044, 1056, 1051, 1057, 1047, 1054, 1054, 1058,
-
-     1057, 1061, 1056, 1059, 1058, 1062, 1064, 1063, 1080, 1055,
-     1062, 1059, 1063, 1065, 1065, 1067, 1061, 1066, 1066, 1075,
-     1067, 1064, 1068, 1068, 1069, 1069, 1071, 1072, 1075, 1074,
-     1081, 1071, 1074, 1076, 1077, 1077, 1078, 1082, 1082, 1072,
-     1084, 1083, 1076, 1087, 1088, 1078, 1085, 1092, 1084, 1081,
-     1083, 1085, 1087, 1090, 1090, 1093, 1093, 1088, 1094, 1095,
-     1095, 1094, 1096, 1096, 1097, 1098, 1099, 1092, 1100, 1100,
-     1101, 1099, 1104, 1107, 1101, 1108, 1109, 1110, 1104, 1098,
-     1111, 1112, 1097, 1108, 1113, 1111, 1115, 1114, 1117, 1118,
-     1120, 1117, 1107, 1110, 1120, 1109, 1114, 1119, 1119, 1121,
-
-     1123, 1112, 1124, 1125, 1129, 1129, 1115, 1118, 1121, 1123,
-     1113, 1128, 1130, 1132, 1124, 1133, 1128, 1134, 1132, 1135,
-     1138, 1130, 1136, 1136, 1133, 1137, 1140, 1139, 1125, 1141,
-     1142, 1140, 1143, 1143, 1135, 1139, 1134, 1144, 1147, 1138,
-     1148, 1137, 1144, 1146, 1146, 1149, 1149, 1150, 1150, 1142,
-     1151, 1152, 1153, 1154, 1154, 1141, 1155, 1157, 1147, 1156,
-     1156, 1159, 1148, 1152, 1160, 1160, 1159,   13, 1155, 1151,
-     1161, 1161, 1153, 1162, 1162, 1163, 1157, 1164, 1164, 1172,
-     1163, 1166, 1166, 1168, 1168, 1169, 1174, 1172, 1173, 1173,
-     1169, 1174, 1176, 1178, 1179, 1183, 1183, 1176, 1179, 1185,
-
-     1187, 1187, 1188, 1185, 1190, 1191, 1191, 1192, 1192, 1193,
-     1193, 1195, 1195, 1178, 1197, 1198, 1198, 1188, 1204, 1203,
-     1205, 1205, 1190, 1203, 1206, 1208, 1197, 1209, 1210, 1211,
-     1211,    0,    0, 1206,    0,    0,    0,    0, 1204,    0,
-     1208, 1209,    0,    0,    0,    0,    0, 1210, 1214, 1214,
-     1214, 1214, 1214, 1214, 1214, 1215, 1215, 1215, 1215, 1215,
-     1215, 1215, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1217,
-     1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218, 1218, 1218,
-     1218, 1218, 1218, 1220, 1220,    0, 1220, 1220, 1220, 1220,
-     1221, 1221,    0,    0,    0, 1221, 1221, 1222, 1222,    0,
-
-        0, 1222,    0, 1222, 1223,    0,    0,    0,    0,    0,
-     1223, 1224, 1224,    0,    0,    0, 1224, 1224, 1225,    0,
-        0,    0,    0,    0, 1225, 1226, 1226,    0, 1226, 1226,
-     1226, 1226, 1227, 1227,    0, 1227, 1227, 1227, 1227, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
-     1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1213
+      167,  178,  180,  178,  176,  170,  170,  174,  169,  177,
+      171,  179,  182,  183,  177,  184,  181,  182,  183,  185,
+      178,  180,  176,  179,  181,  186,  187,  188,  188,  187,
+      184,  189,  189,  186,  190,  192,  191,  185,  192,  193,
+      194,  195,  196,  193,  197,  197,  195,  198,  199,  194,
+      190,  191,  198,  199,  200,  201,  196,  202,  203,  203,
+      204,  205,  206,  207,  209,  208,  207,  206,  123,  211,
+      202,  210,  214,  205,  200,  214,  201,  208,  204,  215,
+      210,  211,  216,  212,  209,  212,  212,  213,  213,  217,
+
+      218,  218,  220,  220,  221,  219,  215,  216,  217,  215,
+      219,  222,  223,  224,  227,  225,  228,  223,  226,  221,
+      225,  226,  229,  231,  230,  228,  232,  229,  227,  230,
+      234,  222,  233,  224,  236,  233,  237,  238,  239,  241,
+      232,  240,  242,  231,  234,  237,  244,  242,  245,  236,
+      243,  233,  235,  246,  235,  235,  240,  239,  238,  241,
+      247,  244,  250,  245,  235,  251,  235,  235,  235,  252,
+      243,  235,  248,  246,  247,  249,  249,  248,  249,  253,
+      256,  251,  250,  255,  254,  252,  254,  255,  257,  263,
+      258,  259,  260,  253,  261,  263,  260,  265,  256,  258,
+
+      259,  262,  257,  261,  264,  268,  262,  266,  266,  264,
+      265,  267,  258,  269,  268,  270,  267,  271,  272,  272,
+      270,  274,  274,  275,  276,  269,  277,  278,  280,  281,
+      287,  282,  276,  295,  284,  277,  283,  286,  271,  278,
+      289,  283,  284,  288,  275,  282,  285,  288,  280,  281,
+      291,  285,  287,  290,  290,  286,  293,  292,  295,  289,
+      297,  290,  292,  294,  294,  296,  296,  292,  298,  290,
+      291,  299,  300,  301,  303,  297,  293,  302,  304,  290,
+      298,  305,  302,  303,  306,  307,  299,  308,  306,  309,
+      307,  300,  310,  311,  311,  301,  305,  304,  312,  308,
+
+      313,  314,  316,  315,  323,  310,  315,  309,  317,  317,
+      312,  122,  313,  318,  318,  316,  314,  319,  320,  320,
+      321,  321,  319,  322,  324,  323,  325,  326,  322,  324,
+      325,  327,  326,  328,  329,  327,  330,  331,  328,  345,
+      332,  330,  334,  332,  333,  333,  335,  334,  332,  338,
+      336,  331,  332,  336,  329,  335,  337,  345,  339,  340,
+      337,  341,  338,  339,  340,  342,  343,  341,  342,  343,
+      344,  346,  347,  348,  349,  344,  348,  347,  357,  349,
+      352,  351,  337,  350,  360,  346,  351,  350,  350,  352,
+      353,  354,  355,  353,  355,  354,  354,  356,  357,  356,
+
+      358,  359,  360,  361,  358,  362,  363,  363,  364,  365,
+      362,  366,  364,  367,  365,  368,  359,  369,  361,  371,
+      370,  374,  377,  120,  369,  370,  371,  366,  368,  372,
+      373,  375,  367,  376,  372,  373,  377,  381,  375,  374,
+      378,  379,  376,  380,  379,  378,  384,  380,  382,  382,
+      385,  384,  386,  387,  385,  394,  388,  382,  381,  395,
+      400,  387,  396,  397,  394,  395,  396,  401,  397,  399,
+      386,  388,  398,  405,  399,  403,  398,  408,  400,  398,
+      402,  402,  403,  409,  398,  404,  404,  697,  405,  697,
+      398,  398,  401,  406,  406,  407,  410,  408,  407,  411,
+
+      411,  412,  409,  413,  410,  414,  414,  415,  413,  416,
+      415,  417,  418,  419,  421,  416,  412,  420,  423,  417,
+      418,  421,  420,  422,  422,  424,  423,  425,  428,  427,
+      424,  419,  427,  429,  429,  432,  430,  433,  436,  430,
+      434,  435,  428,  437,  439,  435,  425,  430,  438,  434,
+      439,  440,  437,  443,  441,  444,  432,  436,  433,  441,
+      442,  445,  438,  446,  442,  440,  445,  444,  447,  447,
+      448,  449,  443,  450,  449,  448,  451,  452,  453,  454,
+      454,  456,  452,  457,  446,  455,  455,  457,  458,  451,
+      459,  450,  460,  462,  463,  464,  456,  462,  453,  465,
+
+      466,  601,  467,  468,  473,  473,  460,  458,  601,  468,
+      464,  471,  469,  465,  459,  461,  467,  469,  461,  463,
+      461,  466,  470,  470,  461,  471,  461,  472,  474,  475,
+      470,  461,  476,  474,  477,  478,  478,  475,  480,  472,
+      482,  481,  483,  480,  481,  484,  476,  485,  470,  486,
+      484,  488,  487,  477,  492,  483,  485,  487,  489,  482,
+      490,  493,  494,  118,  496,  490,  493,  494,  486,  492,
+      495,  488,  489,  496,  498,  495,  497,  497,  500,  498,
+      501,  501,  500,  500,  501,  502,  503,  504,  502,  505,
+      506,  507,  505,  508,  509,  506,  507,  511,  512,  508,
+
+      509,  503,  510,  513,  514,  510,  515,  504,  517,  514,
+      516,  515,  518,  516,  520,  511,  513,  518,  512,  517,
+      519,  521,  521,  522,  523,  519,  525,  524,  526,  520,
+      525,  527,  528,  529,  532,  533,  534,  562,  523,  524,
+      527,  538,  522,  539,  535,  562,  526,  536,  532,  535,
+      533,  528,  536,  541,  537,  538,  534,  539,  529,  537,
+      540,  542,  543,  543,  544,  540,  545,  546,  541,  547,
+      549,  551,  546,  548,  553,  545,  542,  550,  548,  552,
+      554,  550,  544,  557,  555,  556,  551,  558,  547,  549,
+      559,  556,  561,  553,  552,  563,  116,  566,  557,  559,
+
+      564,  554,  555,  567,  565,  564,  561,  558,  565,  565,
+      566,  568,  567,  569,  569,  563,  568,  570,  571,  571,
+      572,  573,  570,  574,  575,  576,  578,  577,  574,  575,
+      576,  577,  579,  581,  572,  578,  582,  581,  583,  573,
+      578,  584,  578,  579,  578,  585,  586,  587,  588,  589,
+      589,  582,  590,  590,  586,  584,  583,  591,  592,  592,
+      593,  593,  594,  596,  585,  587,  597,  594,  595,  595,
+      598,  599,  600,  588,  597,  598,  591,  603,  600,  604,
+      605,  606,  603,  596,  604,  605,  606,  607,  608,  599,
+      609,  610,  610,  611,  612,  613,  607,  616,  614,  615,
+
+      613,  609,  617,  617,  618,  619,  621,  608,  620,  624,
+      625,  628,   67,  611,  627,  616,  623,  612,  614,  615,
+      623,  623,  626,  630,  618,  631,  620,  626,  625,  621,
+      619,  628,  627,  629,  632,  624,  633,  629,  634,  631,
+      636,  633,  630,  635,  638,  634,  637,  639,  635,  640,
+      646,  641,  642,  632,  640,  637,  641,  642,  636,  638,
+      643,  643,  645,  647,  646,  648,  650,  645,  639,  648,
+      648,  649,  649,  651,  653,  652,  654,  655,  656,  651,
+      652,  658,  647,  664,  657,  650,  659,  660,  660,  661,
+      665,  663,  664,  653,  661,  654,  655,  656,  657,  662,
+
+      668,  659,  658,  662,  663,  666,  666,  667,  669,  672,
+      665,  678,  667,  669,  672,  675,  675,  679,  677,  680,
+      668,  677,  681,  683,  680,  685,  678,  682,  682,  684,
+      684,  687,  688,  686,  689,  687,  691,  681,  692,  689,
+      693,  693,  679,  683,  686,  694,  695,  685,  696,  700,
+      698,  688,  692,  699,  691,  698,  701,  702,  699,  704,
+      705,  709,  707,  702,  704,  694,  695,  707,  696,  700,
+      701,  706,  708,  708,  706,  710,  711,  712,  715,  709,
+      716,  711,  712,  713,  713,  705,  714,  717,  718,  720,
+      719,  714,  721,  722,  720,  710,  715,  723,  725,  724,
+
+      716,  730,  718,  719,  730,  725,  727,  717,  726,  732,
+      731,  737,  721,  722,  724,  733,  734,  726,  723,  731,
+      726,  735,  727,  738,  733,  734,  735,  733,  732,  736,
+      736,  737,  739,  740,  741,  742,  738,  743,  743,  744,
+      745,  747,  753,  748,  752,  749,  747,  740,  748,  754,
+      739,  749,  752,  742,  750,  744,  755,  750,  745,  741,
+      753,  756,  758,  750,  764,  759,  760,  763,  754,  759,
+      761,  760,  755,  762,  765,  761,  763,  767,  762,  756,
+      766,  766,  758,  768,  769,  770,  771,  764,  772,  765,
+      770,  767,  778,  773,  779,  768,  769,  778,  771,  773,
+
+      774,  774,  775,  775,  776,  780,  772,  777,  777,  781,
+      782,  782,  788,  776,  790,  779,  783,  783,  784,  784,
+      785,  787,  789,  785,  780,  794,  787,  789,  792,  781,
+      788,  791,  791,  792,  793,  795,  796,  797,  799,  790,
+      798,  798,  800,  800,  803,  794,  793,  801,  793,  805,
+      802,  803,  804,  793,  807,  795,  796,  808,  797,  802,
+      810,  804,  806,  806,  799,  810,  811,  801,  812,  813,
+      817,  811,  816,  808,  815,  805,  813,  814,  814,  815,
+      807,  816,  818,  819,  821,  820,  822,  823,  812,  824,
+      817,  820,  827,  821,  824,  825,  829,  818,  826,  825,
+
+      825,  823,  819,  826,  827,  828,  831,  822,  829,  830,
+      828,  832,  833,  830,  835,  834,  836,  833,  831,  835,
+      838,  839,  839,  838,  840,  840,  841,  843,  836,  842,
+      844,  847,  841,  843,  842,  850,  832,  834,  851,  844,
+      849,  849,  852,  847,  856,  857,  859,  851,  859,  856,
+      862,  852,  849,  850,  858,  858,  860,  860,  863,  863,
+      864,  865,  857,  866,  867,  868,  869,  871,  874,  872,
+      862,  872,  871,  865,  873,  866,  867,  874,  875,  875,
+      868,  864,  876,  877,  879,  878,  869,  878,  877,  879,
+      880,  881,  873,  882,  883,  880,  884,  886,  887,  883,
+
+      899,  884,  888,  888,  894,  889,  890,  893,  876,  881,
+      891,  892,  887,  882,  895,  890,  886,  889,  890,  891,
+      893,  896,  898,  892,  894,  899,  900,  896,  898,  902,
+      895,  901,  901,  903,  903,  900,  904,  905,  902,  906,
+      907,  905,  908,  908,  906,  915,  909,  912,  913,  913,
+      914,  914,  918,  907,  909,  904,  912,  915,  916,  920,
+      917,  919,  921,  916,  917,  922,  919,  918,  923,  925,
+      924,  927,   61,  928,  927,  929,  930,  930,  931,  931,
+      933,  921,  924,  936,  922,  920,  928,  942,  929,  923,
+      925,  932,  932,  933,  934,  934,  935,  935,  937,  937,
+
+      938,  938,  936,  940,  941,  941,  942,  944,  940,  943,
+      943,  945,  946,  947,  947,  946,  949,  945,  948,  948,
+      950,  950,  952,  952,  953,  944,  954,  954,  955,  947,
+      957,  956,  958,  959,  960,  949,  956,  958,  961,  962,
+      955,  963,  965,  960,  962,  963,  967,  961,  959,  969,
+      953,  957,  968,  968,  969,  967,  970,  970,  972,  973,
+      975,  976,  965,  975,  982,  970,  976,  977,  977,  979,
+      978,  973,  979,  972,  978,  980,  980,  981,  983,  987,
+      984,  985,  981,  986,  982,  984,  985,  988,  989,  986,
+       56,  990,  988,  990, 1005,  987,  989, 1006,  983,  993,
+
+      993,  996,  996,  999,  999, 1001, 1001, 1003, 1004, 1004,
+     1005, 1007, 1003, 1009, 1009, 1012, 1007, 1014, 1016, 1006,
+     1012, 1013, 1014, 1013, 1015, 1015, 1017, 1018, 1019, 1020,
+     1016, 1021, 1022, 1022, 1023, 1024, 1025, 1026, 1027, 1018,
+     1019, 1020, 1029, 1023, 1017, 1028, 1034, 1030, 1031, 1039,
+     1026, 1021, 1030, 1031, 1032, 1032, 1025, 1035, 1035, 1028,
+     1029, 1024, 1027, 1038, 1034, 1037, 1037, 1039, 1040, 1041,
+     1042, 1044, 1038, 1043, 1043, 1045, 1044, 1046, 1047, 1051,
+     1052, 1053, 1053, 1052, 1058, 1041, 1040, 1054, 1055, 1042,
+     1045, 1057, 1057, 1059, 1059, 1062, 1046,   51, 1047, 1051,
+
+     1061, 1061, 1054, 1058, 1063, 1064, 1055, 1065, 1066, 1068,
+     1064, 1071, 1065, 1063, 1069, 1070, 1066, 1062, 1074, 1069,
+     1070, 1072, 1072, 1074, 1068, 1079, 1071, 1073, 1073, 1075,
+     1075, 1076, 1076, 1078, 1082, 1083, 1081, 1079, 1078, 1081,
+     1084, 1084, 1085, 1082, 1083, 1087, 1088, 1089, 1089, 1090,
+     1092, 1085, 1091, 1094, 1095, 1092, 1097, 1097, 1090, 1099,
+     1091, 1105, 1094, 1101, 1087, 1088, 1101, 1095, 1100, 1100,
+     1102, 1102, 1103, 1103, 1104, 1105, 1106, 1107, 1107, 1099,
+     1108, 1106, 1111, 1114, 1108, 1115, 1116, 1117, 1111, 1118,
+     1119, 1120, 1104, 1115, 1118, 1121, 1122, 1124, 1126, 1126,
+
+     1124, 1125, 1114, 1117, 1121, 1116, 1128, 1127, 1131, 1130,
+     1119, 1127, 1132, 1136, 1136, 1128, 1122, 1120, 1130, 1125,
+     1131, 1135, 1137, 1139, 1140, 1141, 1135, 1142, 1139, 1143,
+     1143, 1137, 1144, 1140, 1145, 1146, 1147, 1132, 1148, 1149,
+     1154, 1147, 1142, 1146, 1141, 1150, 1150, 1151, 1144, 1153,
+     1153, 1155, 1151, 1145, 1156, 1156, 1157, 1157, 1149, 1158,
+     1154, 1160, 1159, 1162, 1148, 1161, 1161, 1163, 1163, 1164,
+       50, 1166, 1170, 1155, 1159, 1162, 1166, 1170, 1158, 1167,
+     1167, 1160, 1168, 1168, 1169, 1169, 1171, 1171, 1164, 1173,
+     1173, 1175, 1175, 1176, 1179, 1180, 1180, 1185, 1176, 1181,
+
+     1183, 1195, 1179, 1186, 1181, 1183, 1192, 1186, 1190, 1190,
+     1192, 1194, 1194, 1197, 1198, 1198, 1195, 1185, 1199, 1199,
+     1200, 1200, 1202, 1202, 1204, 1205, 1205, 1211, 1210, 1212,
+     1212, 1197, 1210, 1213, 1215, 1217, 1204, 1216, 1218, 1218,
+       45,   40, 1213,   14,   13,    0,    0, 1211,    0, 1215,
+        0, 1216,    0,    0, 1217, 1221, 1221, 1221, 1221, 1221,
+     1221, 1221, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1223,
+     1223, 1223, 1223, 1223, 1223, 1223, 1224, 1224, 1224, 1224,
+     1224, 1224, 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225,
+     1227, 1227,    0, 1227, 1227, 1227, 1227, 1228, 1228,    0,
+
+        0,    0, 1228, 1228, 1229, 1229,    0,    0, 1229,    0,
+     1229, 1230,    0,    0,    0,    0,    0, 1230, 1231, 1231,
+        0,    0,    0, 1231, 1231, 1232,    0,    0,    0,    0,
+        0, 1232, 1233, 1233,    0, 1233, 1233, 1233, 1233, 1234,
+     1234,    0, 1234, 1234, 1234, 1234, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1500,7 +1504,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1502 "<stdout>"
+#line 1506 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1687,7 +1691,7 @@ YY_DECL
     
 #line 120 "util/configlexer.lex"
 
-#line 1689 "<stdout>"
+#line 1693 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1746,13 +1750,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 1214 )
+                               if ( yy_current_state >= 1221 )
                                        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] != 2440 );
+               while ( yy_base[yy_current_state] != 2447 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1882,479 +1886,484 @@ YY_RULE_SETUP
 case 21:
 YY_RULE_SETUP
 #line 144 "util/configlexer.lex"
-{ YDVAR(1, VAR_CHROOT) }
+{ YDVAR(1, VAR_SO_SNDBUF) }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 145 "util/configlexer.lex"
-{ YDVAR(1, VAR_USERNAME) }
+{ YDVAR(1, VAR_CHROOT) }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 146 "util/configlexer.lex"
-{ YDVAR(1, VAR_DIRECTORY) }
+{ YDVAR(1, VAR_USERNAME) }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 147 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOGFILE) }
+{ YDVAR(1, VAR_DIRECTORY) }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 148 "util/configlexer.lex"
-{ YDVAR(1, VAR_PIDFILE) }
+{ YDVAR(1, VAR_LOGFILE) }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 149 "util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_HINTS) }
+{ YDVAR(1, VAR_PIDFILE) }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 150 "util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
+{ YDVAR(1, VAR_ROOT_HINTS) }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 151 "util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
+{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 152 "util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 153 "util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
+{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 154 "util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 155 "util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
+{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 156 "util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_TTL) }
+{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 157 "util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_TTL) }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 158 "util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 159 "util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 160 "util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 161 "util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 162 "util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 163 "util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 164 "util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 165 "util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 166 "util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 167 "util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 168 "util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 169 "util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 170 "util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 171 "util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 172 "util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 173 "util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 174 "util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 175 "util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 176 "util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 177 "util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 178 "util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 179 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 180 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 181 "util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 182 "util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 183 "util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 184 "util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 185 "util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 186 "util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 187 "util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 188 "util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 189 "util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 190 "util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 191 "util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 192 "util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 193 "util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 194 "util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 195 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 196 "util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 197 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 198 "util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 199 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 200 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 201 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 202 "util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 203 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 204 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 205 "util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 206 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 207 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 208 "util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 209 "util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 211 "util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 210 "util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 212 "util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 213 "util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 214 "util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 215 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 216 "util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 217 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 218 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 219 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 220 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 221 "util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 222 "util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 223 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 224 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 225 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 226 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 227 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 228 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 229 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 230 "util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 231 "util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 232 "util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 109:
-/* rule 109 can match eol */
 YY_RULE_SETUP
 #line 233 "util/configlexer.lex"
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+       YY_BREAK
+case 110:
+/* rule 110 can match eol */
+YY_RULE_SETUP
+#line 234 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 236 "util/configlexer.lex"
+#line 237 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 237 "util/configlexer.lex"
+#line 238 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 242 "util/configlexer.lex"
+#line 243 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 112:
-/* rule 112 can match eol */
+case 113:
+/* rule 113 can match eol */
 YY_RULE_SETUP
-#line 243 "util/configlexer.lex"
+#line 244 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 245 "util/configlexer.lex"
+#line 246 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2367,34 +2376,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 257 "util/configlexer.lex"
+#line 258 "util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 258 "util/configlexer.lex"
+#line 259 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 263 "util/configlexer.lex"
+#line 264 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 116:
-/* rule 116 can match eol */
+case 117:
+/* rule 117 can match eol */
 YY_RULE_SETUP
-#line 264 "util/configlexer.lex"
+#line 265 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 266 "util/configlexer.lex"
+#line 267 "util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2407,38 +2416,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 278 "util/configlexer.lex"
+#line 279 "util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 280 "util/configlexer.lex"
+#line 281 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 284 "util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 120:
-/* rule 120 can match eol */
 YY_RULE_SETUP
 #line 285 "util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 121:
+/* rule 121 can match eol */
 YY_RULE_SETUP
 #line 286 "util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 287 "util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 288 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -2446,27 +2455,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 292 "util/configlexer.lex"
+#line 293 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 296 "util/configlexer.lex"
+#line 297 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 124:
-/* rule 124 can match eol */
+case 125:
+/* rule 125 can match eol */
 YY_RULE_SETUP
-#line 297 "util/configlexer.lex"
+#line 298 "util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 299 "util/configlexer.lex"
+#line 300 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2476,7 +2485,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 305 "util/configlexer.lex"
+#line 306 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -2487,33 +2496,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 315 "util/configlexer.lex"
+#line 316 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 319 "util/configlexer.lex"
+#line 320 "util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 323 "util/configlexer.lex"
+#line 324 "util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 327 "util/configlexer.lex"
+#line 328 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2515 "<stdout>"
+#line 2524 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2803,7 +2812,7 @@ static int yy_get_next_buffer (void)
                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 >= 1214 )
+                       if ( yy_current_state >= 1221 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2831,11 +2840,11 @@ static int yy_get_next_buffer (void)
        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 >= 1214 )
+               if ( yy_current_state >= 1221 )
                        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 == 1213);
+       yy_is_jam = (yy_current_state == 1220);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3472,7 +3481,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 327 "util/configlexer.lex"
+#line 328 "util/configlexer.lex"
 
 
 
index 2d9b4704f3fd01595594ace3bad915108b4815e7..43d82f72dba640b83d5dc4544964cfd13ddca81c 100644 (file)
@@ -141,6 +141,7 @@ interface{COLON}            { YDVAR(1, VAR_INTERFACE) }
 outgoing-interface{COLON}      { YDVAR(1, VAR_OUTGOING_INTERFACE) }
 interface-automatic{COLON}     { YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
 so-rcvbuf{COLON}               { YDVAR(1, VAR_SO_RCVBUF) }
+so-sndbuf{COLON}               { YDVAR(1, VAR_SO_SNDBUF) }
 chroot{COLON}                  { YDVAR(1, VAR_CHROOT) }
 username{COLON}                        { YDVAR(1, VAR_USERNAME) }
 directory{COLON}               { YDVAR(1, VAR_DIRECTORY) }
index cec2006b570d64bc559d3f01ddd480651a35c0e2..d202af2a1ba208d6b3375e8973402d12cebefd8f 100644 (file)
@@ -237,7 +237,8 @@ extern struct config_parser_state* cfg_parser;
      VAR_SO_RCVBUF = 368,
      VAR_EDNS_BUFFER_SIZE = 369,
      VAR_PREFETCH = 370,
-     VAR_PREFETCH_KEY = 371
+     VAR_PREFETCH_KEY = 371,
+     VAR_SO_SNDBUF = 372
    };
 #endif
 /* Tokens.  */
@@ -355,6 +356,7 @@ extern struct config_parser_state* cfg_parser;
 #define VAR_EDNS_BUFFER_SIZE 369
 #define VAR_PREFETCH 370
 #define VAR_PREFETCH_KEY 371
+#define VAR_SO_SNDBUF 372
 
 
 
@@ -371,7 +373,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 375 "util/configparser.c"
+#line 377 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -383,7 +385,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 387 "util/configparser.c"
+#line 389 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -598,20 +600,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   212
+#define YYLAST   214
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  117
+#define YYNTOKENS  118
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  120
+#define YYNNTS  121
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  227
+#define YYNRULES  229
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  332
+#define YYNSTATES  335
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   371
+#define YYMAXUTOK   372
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -656,7 +658,7 @@ static const yytype_uint8 yytranslate[] =
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116
+     115,   116,   117
 };
 
 #if YYDEBUG
@@ -674,81 +676,81 @@ static const yytype_uint16 yyprhs[] =
      144,   146,   148,   150,   152,   154,   156,   158,   160,   162,
      164,   166,   168,   170,   172,   174,   176,   178,   180,   182,
      184,   186,   188,   190,   192,   194,   196,   198,   200,   202,
-     204,   207,   208,   210,   212,   214,   216,   218,   221,   222,
-     224,   226,   228,   231,   234,   237,   240,   243,   246,   249,
-     252,   255,   258,   261,   264,   267,   270,   273,   276,   279,
-     282,   285,   288,   291,   294,   297,   300,   303,   306,   309,
-     312,   315,   318,   321,   324,   327,   330,   333,   336,   339,
-     342,   345,   348,   351,   354,   357,   360,   363,   366,   369,
-     372,   375,   378,   381,   384,   387,   390,   393,   396,   399,
-     402,   405,   408,   411,   414,   417,   420,   423,   426,   430,
-     433,   436,   439,   442,   445,   448,   451,   454,   457,   460,
-     463,   466,   469,   472,   475,   478,   481,   485,   488,   491,
-     494,   497,   500,   503,   506,   509,   512,   514,   517,   518,
-     520,   522,   524,   526,   528,   530,   532,   535,   538,   541,
-     544,   547,   550,   553,   555,   558,   559,   561
+     204,   206,   209,   210,   212,   214,   216,   218,   220,   223,
+     224,   226,   228,   230,   233,   236,   239,   242,   245,   248,
+     251,   254,   257,   260,   263,   266,   269,   272,   275,   278,
+     281,   284,   287,   290,   293,   296,   299,   302,   305,   308,
+     311,   314,   317,   320,   323,   326,   329,   332,   335,   338,
+     341,   344,   347,   350,   353,   356,   359,   362,   365,   368,
+     371,   374,   377,   380,   383,   386,   389,   392,   395,   398,
+     401,   404,   407,   410,   413,   416,   419,   422,   425,   428,
+     431,   435,   438,   441,   444,   447,   450,   453,   456,   459,
+     462,   465,   468,   471,   474,   477,   480,   483,   486,   490,
+     493,   496,   499,   502,   505,   508,   511,   514,   517,   519,
+     522,   523,   525,   527,   529,   531,   533,   535,   537,   540,
+     543,   546,   549,   552,   555,   558,   560,   563,   564,   566
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     118,     0,    -1,    -1,   118,   119,    -1,   120,   121,    -1,
-     123,   124,    -1,   126,   127,    -1,   233,   234,    -1,   223,
-     224,    -1,    11,    -1,   121,   122,    -1,    -1,   129,    -1,
-     130,    -1,   134,    -1,   137,    -1,   143,    -1,   144,    -1,
-     145,    -1,   146,    -1,   135,    -1,   150,    -1,   151,    -1,
-     152,    -1,   153,    -1,   154,    -1,   170,    -1,   171,    -1,
-     172,    -1,   174,    -1,   175,    -1,   140,    -1,   176,    -1,
-     177,    -1,   180,    -1,   178,    -1,   179,    -1,   181,    -1,
-     182,    -1,   183,    -1,   193,    -1,   163,    -1,   164,    -1,
-     165,    -1,   166,    -1,   184,    -1,   196,    -1,   159,    -1,
-     161,    -1,   197,    -1,   202,    -1,   203,    -1,   204,    -1,
-     141,    -1,   169,    -1,   210,    -1,   211,    -1,   160,    -1,
-     206,    -1,   148,    -1,   136,    -1,   155,    -1,   194,    -1,
-     200,    -1,   185,    -1,   195,    -1,   213,    -1,   214,    -1,
-     142,    -1,   131,    -1,   147,    -1,   187,    -1,   132,    -1,
-     138,    -1,   139,    -1,   156,    -1,   157,    -1,   212,    -1,
-     186,    -1,   188,    -1,   189,    -1,   133,    -1,   215,    -1,
-     173,    -1,   192,    -1,   149,    -1,   162,    -1,   198,    -1,
-     199,    -1,   201,    -1,   205,    -1,   158,    -1,   207,    -1,
-     208,    -1,   209,    -1,   167,    -1,   168,    -1,   190,    -1,
-     191,    -1,    38,    -1,   124,   125,    -1,    -1,   216,    -1,
-     217,    -1,   218,    -1,   219,    -1,    44,    -1,   127,   128,
-      -1,    -1,   220,    -1,   221,    -1,   222,    -1,    13,    10,
-      -1,    12,    10,    -1,    76,    10,    -1,    79,    10,    -1,
-      96,    10,    -1,    14,    10,    -1,    16,    10,    -1,    67,
-      10,    -1,    15,    10,    -1,    80,    10,    -1,    81,    10,
-      -1,    31,    10,    -1,    60,    10,    -1,    75,    10,    -1,
-      17,    10,    -1,    18,    10,    -1,    19,    10,    -1,    20,
-      10,    -1,    77,    10,    -1,    66,    10,    -1,   101,    10,
-      -1,    21,    10,    -1,    22,    10,    -1,    23,    10,    -1,
-      24,    10,    -1,    25,    10,    -1,    68,    10,    -1,    82,
-      10,    -1,    83,    10,    -1,   109,    10,    -1,    54,    10,
-      -1,    64,    10,    -1,    55,    10,    -1,   102,    10,    -1,
-      48,    10,    -1,    49,    10,    -1,    50,    10,    -1,    51,
-      10,    -1,   113,    10,    -1,   114,    10,    -1,    61,    10,
-      -1,    26,    10,    -1,    27,    10,    -1,    28,    10,    -1,
-      98,    10,    -1,    29,    10,    -1,    30,    10,    -1,    32,
-      10,    -1,    33,    10,    -1,    35,    10,    -1,    36,    10,
-      -1,    34,    10,    -1,    41,    10,    -1,    42,    10,    -1,
-      43,    10,    -1,    52,    10,    -1,    71,    10,    -1,    85,
-      10,    -1,    78,    10,    -1,    86,    10,    -1,    87,    10,
-      -1,   115,    10,    -1,   116,    10,    -1,   100,    10,    -1,
-      47,    10,    -1,    69,    10,    -1,    72,    10,    10,    -1,
-      53,    10,    -1,    56,    10,    -1,   105,    10,    -1,   106,
-      10,    -1,    70,    10,    -1,   107,    10,    -1,    57,    10,
-      -1,    58,    10,    -1,    59,    10,    -1,   108,    10,    -1,
-      65,    10,    -1,   111,    10,    -1,   112,    10,    -1,   110,
-      10,    -1,    62,    10,    -1,    63,    10,    -1,    84,    10,
-      -1,    73,    10,    10,    -1,    74,    10,    -1,    97,    10,
-      -1,    37,    10,    -1,    39,    10,    -1,    40,    10,    -1,
-      99,    10,    -1,    37,    10,    -1,    45,    10,    -1,    46,
-      10,    -1,    88,    -1,   224,   225,    -1,    -1,   226,    -1,
-     228,    -1,   227,    -1,   229,    -1,   230,    -1,   231,    -1,
-     232,    -1,    89,    10,    -1,    91,    10,    -1,    90,    10,
-      -1,    92,    10,    -1,    93,    10,    -1,    94,    10,    -1,
-      95,    10,    -1,   103,    -1,   234,   235,    -1,    -1,   236,
-      -1,   104,    10,    -1
+     119,     0,    -1,    -1,   119,   120,    -1,   121,   122,    -1,
+     124,   125,    -1,   127,   128,    -1,   235,   236,    -1,   225,
+     226,    -1,    11,    -1,   122,   123,    -1,    -1,   130,    -1,
+     131,    -1,   135,    -1,   138,    -1,   144,    -1,   145,    -1,
+     146,    -1,   147,    -1,   136,    -1,   151,    -1,   152,    -1,
+     153,    -1,   154,    -1,   155,    -1,   172,    -1,   173,    -1,
+     174,    -1,   176,    -1,   177,    -1,   141,    -1,   178,    -1,
+     179,    -1,   182,    -1,   180,    -1,   181,    -1,   183,    -1,
+     184,    -1,   185,    -1,   195,    -1,   164,    -1,   165,    -1,
+     166,    -1,   167,    -1,   186,    -1,   198,    -1,   160,    -1,
+     162,    -1,   199,    -1,   204,    -1,   205,    -1,   206,    -1,
+     142,    -1,   171,    -1,   212,    -1,   213,    -1,   161,    -1,
+     208,    -1,   149,    -1,   137,    -1,   156,    -1,   196,    -1,
+     202,    -1,   187,    -1,   197,    -1,   215,    -1,   216,    -1,
+     143,    -1,   132,    -1,   148,    -1,   189,    -1,   133,    -1,
+     139,    -1,   140,    -1,   157,    -1,   158,    -1,   214,    -1,
+     188,    -1,   190,    -1,   191,    -1,   134,    -1,   217,    -1,
+     175,    -1,   194,    -1,   150,    -1,   163,    -1,   200,    -1,
+     201,    -1,   203,    -1,   207,    -1,   159,    -1,   209,    -1,
+     210,    -1,   211,    -1,   168,    -1,   170,    -1,   192,    -1,
+     193,    -1,   169,    -1,    38,    -1,   125,   126,    -1,    -1,
+     218,    -1,   219,    -1,   220,    -1,   221,    -1,    44,    -1,
+     128,   129,    -1,    -1,   222,    -1,   223,    -1,   224,    -1,
+      13,    10,    -1,    12,    10,    -1,    76,    10,    -1,    79,
+      10,    -1,    96,    10,    -1,    14,    10,    -1,    16,    10,
+      -1,    67,    10,    -1,    15,    10,    -1,    80,    10,    -1,
+      81,    10,    -1,    31,    10,    -1,    60,    10,    -1,    75,
+      10,    -1,    17,    10,    -1,    18,    10,    -1,    19,    10,
+      -1,    20,    10,    -1,    77,    10,    -1,    66,    10,    -1,
+     101,    10,    -1,    21,    10,    -1,    22,    10,    -1,    23,
+      10,    -1,    24,    10,    -1,    25,    10,    -1,    68,    10,
+      -1,    82,    10,    -1,    83,    10,    -1,   109,    10,    -1,
+      54,    10,    -1,    64,    10,    -1,    55,    10,    -1,   102,
+      10,    -1,    48,    10,    -1,    49,    10,    -1,    50,    10,
+      -1,    51,    10,    -1,   113,    10,    -1,   117,    10,    -1,
+     114,    10,    -1,    61,    10,    -1,    26,    10,    -1,    27,
+      10,    -1,    28,    10,    -1,    98,    10,    -1,    29,    10,
+      -1,    30,    10,    -1,    32,    10,    -1,    33,    10,    -1,
+      35,    10,    -1,    36,    10,    -1,    34,    10,    -1,    41,
+      10,    -1,    42,    10,    -1,    43,    10,    -1,    52,    10,
+      -1,    71,    10,    -1,    85,    10,    -1,    78,    10,    -1,
+      86,    10,    -1,    87,    10,    -1,   115,    10,    -1,   116,
+      10,    -1,   100,    10,    -1,    47,    10,    -1,    69,    10,
+      -1,    72,    10,    10,    -1,    53,    10,    -1,    56,    10,
+      -1,   105,    10,    -1,   106,    10,    -1,    70,    10,    -1,
+     107,    10,    -1,    57,    10,    -1,    58,    10,    -1,    59,
+      10,    -1,   108,    10,    -1,    65,    10,    -1,   111,    10,
+      -1,   112,    10,    -1,   110,    10,    -1,    62,    10,    -1,
+      63,    10,    -1,    84,    10,    -1,    73,    10,    10,    -1,
+      74,    10,    -1,    97,    10,    -1,    37,    10,    -1,    39,
+      10,    -1,    40,    10,    -1,    99,    10,    -1,    37,    10,
+      -1,    45,    10,    -1,    46,    10,    -1,    88,    -1,   226,
+     227,    -1,    -1,   228,    -1,   230,    -1,   229,    -1,   231,
+      -1,   232,    -1,   233,    -1,   234,    -1,    89,    10,    -1,
+      91,    10,    -1,    90,    10,    -1,    92,    10,    -1,    93,
+      10,    -1,    94,    10,    -1,    95,    10,    -1,   103,    -1,
+     236,   237,    -1,    -1,   238,    -1,   104,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -763,20 +765,20 @@ static const yytype_uint16 yyrline[] =
      141,   141,   142,   142,   143,   143,   144,   144,   144,   145,
      145,   146,   146,   147,   147,   148,   148,   148,   149,   149,
      150,   150,   151,   151,   152,   152,   153,   153,   154,   154,
-     154,   155,   155,   156,   156,   156,   157,   157,   157,   159,
-     171,   172,   173,   173,   173,   173,   175,   187,   188,   189,
-     189,   189,   191,   200,   209,   220,   229,   238,   247,   260,
-     275,   284,   293,   302,   311,   320,   329,   338,   347,   356,
-     365,   374,   388,   397,   404,   411,   418,   426,   433,   440,
-     447,   454,   462,   470,   478,   485,   492,   501,   510,   517,
-     524,   532,   545,   556,   564,   577,   586,   595,   603,   616,
-     625,   634,   643,   652,   665,   672,   682,   692,   702,   712,
-     722,   732,   739,   746,   755,   764,   773,   780,   790,   804,
-     811,   829,   842,   855,   864,   873,   882,   892,   902,   911,
-     918,   927,   936,   945,   953,   966,   974,   994,  1001,  1016,
-    1023,  1030,  1037,  1047,  1054,  1061,  1068,  1073,  1074,  1075,
-    1075,  1075,  1076,  1076,  1076,  1077,  1079,  1089,  1098,  1105,
-    1112,  1119,  1126,  1133,  1138,  1139,  1140,  1142
+     154,   155,   155,   156,   156,   156,   157,   157,   157,   158,
+     160,   172,   173,   174,   174,   174,   174,   176,   188,   189,
+     190,   190,   190,   192,   201,   210,   221,   230,   239,   248,
+     261,   276,   285,   294,   303,   312,   321,   330,   339,   348,
+     357,   366,   375,   389,   398,   405,   412,   419,   427,   434,
+     441,   448,   455,   463,   471,   479,   486,   493,   502,   511,
+     518,   525,   533,   541,   554,   565,   573,   586,   595,   604,
+     612,   625,   634,   643,   652,   661,   674,   681,   691,   701,
+     711,   721,   731,   741,   748,   755,   764,   773,   782,   789,
+     799,   813,   820,   838,   851,   864,   873,   882,   891,   901,
+     911,   920,   927,   936,   945,   954,   962,   975,   983,  1003,
+    1010,  1025,  1032,  1039,  1046,  1056,  1063,  1070,  1077,  1082,
+    1083,  1084,  1084,  1084,  1085,  1085,  1085,  1086,  1088,  1098,
+    1107,  1114,  1121,  1128,  1135,  1142,  1147,  1148,  1149,  1151
 };
 #endif
 
@@ -821,10 +823,10 @@ static const char *const yytname[] =
   "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_CACHE_MIN_TTL",
   "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING",
   "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF",
-  "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY", "$accept",
-  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
-  "content_server", "stubstart", "contents_stub", "content_stub",
-  "forwardstart", "contents_forward", "content_forward",
+  "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "VAR_PREFETCH_KEY",
+  "VAR_SO_SNDBUF", "$accept", "toplevelvars", "toplevelvar", "serverstart",
+  "contents_server", "content_server", "stubstart", "contents_stub",
+  "content_stub", "forwardstart", "contents_forward", "content_forward",
   "server_num_threads", "server_verbosity", "server_statistics_interval",
   "server_statistics_cumulative", "server_extended_statistics",
   "server_port", "server_interface", "server_outgoing_interface",
@@ -839,23 +841,23 @@ static const char *const yytname[] =
   "server_trust_anchor_file", "server_trusted_keys_file",
   "server_trust_anchor", "server_domain_insecure", "server_hide_identity",
   "server_hide_version", "server_identity", "server_version",
-  "server_so_rcvbuf", "server_edns_buffer_size", "server_msg_buffer_size",
-  "server_msg_cache_size", "server_msg_cache_slabs",
-  "server_num_queries_per_thread", "server_jostle_timeout",
-  "server_rrset_cache_size", "server_rrset_cache_slabs",
-  "server_infra_host_ttl", "server_infra_lame_ttl",
-  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
-  "server_infra_cache_slabs", "server_target_fetch_policy",
-  "server_harden_short_bufsize", "server_harden_large_queries",
-  "server_harden_glue", "server_harden_dnssec_stripped",
-  "server_harden_referral_path", "server_use_caps_for_id",
-  "server_private_address", "server_private_domain", "server_prefetch",
-  "server_prefetch_key", "server_unwanted_reply_threshold",
-  "server_do_not_query_address", "server_do_not_query_localhost",
-  "server_access_control", "server_module_conf",
-  "server_val_override_date", "server_val_sig_skew_min",
-  "server_val_sig_skew_max", "server_cache_max_ttl",
-  "server_cache_min_ttl", "server_bogus_ttl",
+  "server_so_rcvbuf", "server_so_sndbuf", "server_edns_buffer_size",
+  "server_msg_buffer_size", "server_msg_cache_size",
+  "server_msg_cache_slabs", "server_num_queries_per_thread",
+  "server_jostle_timeout", "server_rrset_cache_size",
+  "server_rrset_cache_slabs", "server_infra_host_ttl",
+  "server_infra_lame_ttl", "server_infra_cache_numhosts",
+  "server_infra_cache_lame_size", "server_infra_cache_slabs",
+  "server_target_fetch_policy", "server_harden_short_bufsize",
+  "server_harden_large_queries", "server_harden_glue",
+  "server_harden_dnssec_stripped", "server_harden_referral_path",
+  "server_use_caps_for_id", "server_private_address",
+  "server_private_domain", "server_prefetch", "server_prefetch_key",
+  "server_unwanted_reply_threshold", "server_do_not_query_address",
+  "server_do_not_query_localhost", "server_access_control",
+  "server_module_conf", "server_val_override_date",
+  "server_val_sig_skew_min", "server_val_sig_skew_max",
+  "server_cache_max_ttl", "server_cache_min_ttl", "server_bogus_ttl",
   "server_val_clean_additional", "server_val_permissive_mode",
   "server_val_log_level", "server_val_nsec3_keysize_iterations",
   "server_add_holddown", "server_del_holddown", "server_keep_missing",
@@ -886,25 +888,25 @@ static const yytype_uint16 yytoknum[] =
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371
+     365,   366,   367,   368,   369,   370,   371,   372
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   117,   118,   118,   119,   119,   119,   119,   119,   120,
-     121,   121,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
-     122,   122,   122,   122,   122,   122,   122,   122,   122,   123,
-     124,   124,   125,   125,   125,   125,   126,   127,   127,   128,
-     128,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+       0,   118,   119,   119,   120,   120,   120,   120,   120,   121,
+     122,   122,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
+     124,   125,   125,   126,   126,   126,   126,   127,   128,   128,
+     129,   129,   129,   130,   131,   132,   133,   134,   135,   136,
      137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
      147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
@@ -913,9 +915,9 @@ static const yytype_uint8 yyr1[] =
      187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
      207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   224,   225,
-     225,   225,   225,   225,   225,   225,   226,   227,   228,   229,
-     230,   231,   232,   233,   234,   234,   235,   236
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
+     226,   227,   227,   227,   227,   227,   227,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,   236,   237,   238
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -931,19 +933,19 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     0,     1,     1,     1,     1,     1,     2,     0,     1,
-       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     2,     0,     1,     1,     1,     1,     1,     2,     0,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     2,     2,     1,     2,     0,     1,     2
+       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+       0,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     2,     1,     2,     0,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -951,8 +953,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     9,    99,   106,   206,   223,     3,    11,
-     101,   108,   208,   225,     4,     5,     6,     8,     7,     0,
+       2,     0,     1,     9,   100,   107,   208,   225,     3,    11,
+     102,   109,   210,   227,     4,     5,     6,     8,     7,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -961,47 +963,48 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    10,    12,    13,    69,
-      72,    81,    14,    20,    60,    15,    73,    74,    31,    53,
-      68,    16,    17,    18,    19,    70,    59,    85,    21,    22,
-      23,    24,    25,    61,    75,    76,    91,    47,    57,    48,
-      86,    41,    42,    43,    44,    95,    96,    54,    26,    27,
-      28,    83,    29,    30,    32,    33,    35,    36,    34,    37,
-      38,    39,    45,    64,    78,    71,    79,    80,    97,    98,
-      84,    40,    62,    65,    46,    49,    87,    88,    63,    89,
-      50,    51,    52,    90,    58,    92,    93,    94,    55,    56,
-      77,    66,    67,    82,     0,     0,     0,     0,   100,   102,
-     103,   104,   105,     0,     0,     0,   107,   109,   110,   111,
-       0,     0,     0,     0,     0,     0,     0,   207,   209,   211,
-     210,   212,   213,   214,   215,     0,   224,   226,   113,   112,
-     117,   120,   118,   126,   127,   128,   129,   133,   134,   135,
-     136,   137,   153,   154,   155,   157,   158,   123,   159,   160,
-     163,   161,   162,   164,   165,   166,   176,   146,   147,   148,
-     149,   167,   179,   142,   144,   180,   185,   186,   187,   124,
-     152,   193,   194,   143,   189,   131,   119,   138,   177,   183,
-     168,     0,     0,   197,   125,   114,   130,   170,   115,   121,
-     122,   139,   140,   195,   169,   171,   172,   116,   198,   156,
-     175,   132,   145,   181,   182,   184,   188,   141,   192,   190,
-     191,   150,   151,   173,   174,   199,   200,   201,   202,   203,
-     204,   205,   216,   218,   217,   219,   220,   221,   222,   227,
-     178,   196
+       0,     0,     0,     0,     0,     0,     0,    10,    12,    13,
+      69,    72,    81,    14,    20,    60,    15,    73,    74,    31,
+      53,    68,    16,    17,    18,    19,    70,    59,    85,    21,
+      22,    23,    24,    25,    61,    75,    76,    91,    47,    57,
+      48,    86,    41,    42,    43,    44,    95,    99,    96,    54,
+      26,    27,    28,    83,    29,    30,    32,    33,    35,    36,
+      34,    37,    38,    39,    45,    64,    78,    71,    79,    80,
+      97,    98,    84,    40,    62,    65,    46,    49,    87,    88,
+      63,    89,    50,    51,    52,    90,    58,    92,    93,    94,
+      55,    56,    77,    66,    67,    82,     0,     0,     0,     0,
+     101,   103,   104,   105,   106,     0,     0,     0,   108,   110,
+     111,   112,     0,     0,     0,     0,     0,     0,     0,   209,
+     211,   213,   212,   214,   215,   216,   217,     0,   226,   228,
+     114,   113,   118,   121,   119,   127,   128,   129,   130,   134,
+     135,   136,   137,   138,   155,   156,   157,   159,   160,   124,
+     161,   162,   165,   163,   164,   166,   167,   168,   178,   147,
+     148,   149,   150,   169,   181,   143,   145,   182,   187,   188,
+     189,   125,   154,   195,   196,   144,   191,   132,   120,   139,
+     179,   185,   170,     0,     0,   199,   126,   115,   131,   172,
+     116,   122,   123,   140,   141,   197,   171,   173,   174,   117,
+     200,   158,   177,   133,   146,   183,   184,   186,   190,   142,
+     194,   192,   193,   151,   153,   175,   176,   152,   201,   202,
+     203,   204,   205,   206,   207,   218,   220,   219,   221,   222,
+     223,   224,   229,   180,   198
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     8,     9,    14,   106,    10,    15,   198,    11,
-      16,   206,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   199,
-     200,   201,   202,   207,   208,   209,    12,    17,   217,   218,
-     219,   220,   221,   222,   223,   224,    13,    18,   226,   227
+      -1,     1,     8,     9,    14,   107,    10,    15,   200,    11,
+      16,   208,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     201,   202,   203,   204,   209,   210,   211,    12,    17,   219,
+     220,   221,   222,   223,   224,   225,   226,    13,    18,   228,
+     229
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1010,16 +1013,16 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yypact[] =
 {
      -80,    76,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -12,    40,    46,    16,   -79,    17,
-      18,    22,    23,    24,    68,    71,    72,   102,   103,   105,
-     106,   107,   108,   109,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-     127,   128,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -12,    40,    46,    17,   -79,    16,
+      18,    22,    23,    24,    68,    71,    72,   103,   105,   106,
+     107,   108,   109,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   170,
+     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
@@ -1028,21 +1031,21 @@ static const yytype_int16 yypact[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   186,   187,   188,   189,   -80,   -80,
-     -80,   -80,   -80,   190,   191,   192,   -80,   -80,   -80,   -80,
-     193,   194,   195,   196,   197,   198,   199,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80,   200,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   188,   189,   190,   191,
+     -80,   -80,   -80,   -80,   -80,   192,   193,   194,   -80,   -80,
+     -80,   -80,   195,   196,   197,   198,   199,   200,   201,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   202,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   201,   202,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   203,   204,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80
+     -80,   -80,   -80,   -80,   -80
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1059,7 +1062,8 @@ static const yytype_int8 yypgoto[] =
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
      -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
-     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1071,33 +1075,33 @@ static const yytype_uint16 yytable[] =
 {
       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,   225,     0,   228,   229,    44,
-      45,    46,   230,   231,   232,    47,    48,    49,    50,    51,
+      39,    40,    41,    42,    43,   227,   230,     0,   231,    44,
+      45,    46,   232,   233,   234,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,     2,   194,   233,   195,
-     196,   234,   235,   203,    88,    89,    90,     3,    91,    92,
-      93,   204,   205,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   210,   211,   212,   213,   214,
-     215,   216,   236,   237,     4,   238,   239,   240,   241,   242,
-       5,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   197,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,     6,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,     7,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331
+      82,    83,    84,    85,    86,    87,     2,   196,   235,   197,
+     198,   236,   237,   205,    88,    89,    90,     3,    91,    92,
+      93,   206,   207,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   212,   213,   214,   215,
+     216,   217,   218,   238,     4,   239,   240,   241,   242,   243,
+       5,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   199,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,     6,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,     7,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
+     330,   331,   332,   333,   334
 };
 
 static const yytype_int8 yycheck[] =
 {
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,   104,    -1,    10,    10,    41,
+      32,    33,    34,    35,    36,   104,    10,    -1,    10,    41,
       42,    43,    10,    10,    10,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
@@ -1105,8 +1109,8 @@ static const yytype_int8 yycheck[] =
       82,    83,    84,    85,    86,    87,     0,    37,    10,    39,
       40,    10,    10,    37,    96,    97,    98,    11,   100,   101,
      102,    45,    46,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,    89,    90,    91,    92,    93,
-      94,    95,    10,    10,    38,    10,    10,    10,    10,    10,
+     112,   113,   114,   115,   116,   117,    89,    90,    91,    92,
+      93,    94,    95,    10,    38,    10,    10,    10,    10,    10,
       44,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    99,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1116,15 +1120,15 @@ static const yytype_int8 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10
+      10,    10,    10,    10,    10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,   118,     0,    11,    38,    44,    88,   103,   119,   120,
-     123,   126,   223,   233,   121,   124,   127,   224,   234,    12,
+       0,   119,     0,    11,    38,    44,    88,   103,   120,   121,
+     124,   127,   225,   235,   122,   125,   128,   226,   236,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    41,    42,    43,    47,    48,    49,
@@ -1133,7 +1137,7 @@ static const yytype_uint8 yystos[] =
       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
       80,    81,    82,    83,    84,    85,    86,    87,    96,    97,
       98,   100,   101,   102,   105,   106,   107,   108,   109,   110,
-     111,   112,   113,   114,   115,   116,   122,   129,   130,   131,
+     111,   112,   113,   114,   115,   116,   117,   123,   130,   131,
      132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
@@ -1142,10 +1146,10 @@ static const yytype_uint8 yystos[] =
      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,    37,    39,    40,    99,   125,   216,
-     217,   218,   219,    37,    45,    46,   128,   220,   221,   222,
-      89,    90,    91,    92,    93,    94,    95,   225,   226,   227,
-     228,   229,   230,   231,   232,   104,   235,   236,    10,    10,
+     212,   213,   214,   215,   216,   217,    37,    39,    40,    99,
+     126,   218,   219,   220,   221,    37,    45,    46,   129,   222,
+     223,   224,    89,    90,    91,    92,    93,    94,    95,   227,
+     228,   229,   230,   231,   232,   233,   234,   104,   237,   238,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1156,7 +1160,7 @@ static const yytype_uint8 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10
+      10,    10,    10,    10,    10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1976,10 +1980,10 @@ yyreduce:
        }
     break;
 
-  case 99:
+  case 100:
 
 /* Line 1455 of yacc.c  */
-#line 160 "util/configparser.y"
+#line 161 "util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -1992,10 +1996,10 @@ yyreduce:
        }
     break;
 
-  case 106:
+  case 107:
 
 /* Line 1455 of yacc.c  */
-#line 176 "util/configparser.y"
+#line 177 "util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2008,10 +2012,10 @@ yyreduce:
        }
     break;
 
-  case 112:
+  case 113:
 
 /* Line 1455 of yacc.c  */
-#line 192 "util/configparser.y"
+#line 193 "util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2021,10 +2025,10 @@ yyreduce:
        }
     break;
 
-  case 113:
+  case 114:
 
 /* Line 1455 of yacc.c  */
-#line 201 "util/configparser.y"
+#line 202 "util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2034,10 +2038,10 @@ yyreduce:
        }
     break;
 
-  case 114:
+  case 115:
 
 /* Line 1455 of yacc.c  */
-#line 210 "util/configparser.y"
+#line 211 "util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
@@ -2049,10 +2053,10 @@ yyreduce:
        }
     break;
 
-  case 115:
+  case 116:
 
 /* Line 1455 of yacc.c  */
-#line 221 "util/configparser.y"
+#line 222 "util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2062,10 +2066,10 @@ yyreduce:
        }
     break;
 
-  case 116:
+  case 117:
 
 /* Line 1455 of yacc.c  */
-#line 230 "util/configparser.y"
+#line 231 "util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2075,10 +2079,10 @@ yyreduce:
        }
     break;
 
-  case 117:
+  case 118:
 
 /* Line 1455 of yacc.c  */
-#line 239 "util/configparser.y"
+#line 240 "util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2088,10 +2092,10 @@ yyreduce:
        }
     break;
 
-  case 118:
+  case 119:
 
 /* Line 1455 of yacc.c  */
-#line 248 "util/configparser.y"
+#line 249 "util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2105,10 +2109,10 @@ yyreduce:
        }
     break;
 
-  case 119:
+  case 120:
 
 /* Line 1455 of yacc.c  */
-#line 261 "util/configparser.y"
+#line 262 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2124,10 +2128,10 @@ yyreduce:
        }
     break;
 
-  case 120:
+  case 121:
 
 /* Line 1455 of yacc.c  */
-#line 276 "util/configparser.y"
+#line 277 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2137,10 +2141,10 @@ yyreduce:
        }
     break;
 
-  case 121:
+  case 122:
 
 /* Line 1455 of yacc.c  */
-#line 285 "util/configparser.y"
+#line 286 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2150,10 +2154,10 @@ yyreduce:
        }
     break;
 
-  case 122:
+  case 123:
 
 /* Line 1455 of yacc.c  */
-#line 294 "util/configparser.y"
+#line 295 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2163,10 +2167,10 @@ yyreduce:
        }
     break;
 
-  case 123:
+  case 124:
 
 /* Line 1455 of yacc.c  */
-#line 303 "util/configparser.y"
+#line 304 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2176,10 +2180,10 @@ yyreduce:
        }
     break;
 
-  case 124:
+  case 125:
 
 /* Line 1455 of yacc.c  */
-#line 312 "util/configparser.y"
+#line 313 "util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2189,10 +2193,10 @@ yyreduce:
        }
     break;
 
-  case 125:
+  case 126:
 
 /* Line 1455 of yacc.c  */
-#line 321 "util/configparser.y"
+#line 322 "util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2202,10 +2206,10 @@ yyreduce:
        }
     break;
 
-  case 126:
+  case 127:
 
 /* Line 1455 of yacc.c  */
-#line 330 "util/configparser.y"
+#line 331 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2215,10 +2219,10 @@ yyreduce:
        }
     break;
 
-  case 127:
+  case 128:
 
 /* Line 1455 of yacc.c  */
-#line 339 "util/configparser.y"
+#line 340 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2228,10 +2232,10 @@ yyreduce:
        }
     break;
 
-  case 128:
+  case 129:
 
 /* Line 1455 of yacc.c  */
-#line 348 "util/configparser.y"
+#line 349 "util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2241,10 +2245,10 @@ yyreduce:
        }
     break;
 
-  case 129:
+  case 130:
 
 /* Line 1455 of yacc.c  */
-#line 357 "util/configparser.y"
+#line 358 "util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2254,10 +2258,10 @@ yyreduce:
        }
     break;
 
-  case 130:
+  case 131:
 
 /* Line 1455 of yacc.c  */
-#line 366 "util/configparser.y"
+#line 367 "util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2267,10 +2271,10 @@ yyreduce:
        }
     break;
 
-  case 131:
+  case 132:
 
 /* Line 1455 of yacc.c  */
-#line 375 "util/configparser.y"
+#line 376 "util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2285,10 +2289,10 @@ yyreduce:
        }
     break;
 
-  case 132:
+  case 133:
 
 /* Line 1455 of yacc.c  */
-#line 389 "util/configparser.y"
+#line 390 "util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2298,10 +2302,10 @@ yyreduce:
        }
     break;
 
-  case 133:
+  case 134:
 
 /* Line 1455 of yacc.c  */
-#line 398 "util/configparser.y"
+#line 399 "util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2309,10 +2313,10 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 135:
 
 /* Line 1455 of yacc.c  */
-#line 405 "util/configparser.y"
+#line 406 "util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2320,10 +2324,10 @@ yyreduce:
        }
     break;
 
-  case 135:
+  case 136:
 
 /* Line 1455 of yacc.c  */
-#line 412 "util/configparser.y"
+#line 413 "util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2331,10 +2335,10 @@ yyreduce:
        }
     break;
 
-  case 136:
+  case 137:
 
 /* Line 1455 of yacc.c  */
-#line 419 "util/configparser.y"
+#line 420 "util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2343,10 +2347,10 @@ yyreduce:
        }
     break;
 
-  case 137:
+  case 138:
 
 /* Line 1455 of yacc.c  */
-#line 427 "util/configparser.y"
+#line 428 "util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2354,10 +2358,10 @@ yyreduce:
        }
     break;
 
-  case 138:
+  case 139:
 
 /* Line 1455 of yacc.c  */
-#line 434 "util/configparser.y"
+#line 435 "util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2365,10 +2369,10 @@ yyreduce:
        }
     break;
 
-  case 139:
+  case 140:
 
 /* Line 1455 of yacc.c  */
-#line 441 "util/configparser.y"
+#line 442 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2376,10 +2380,10 @@ yyreduce:
        }
     break;
 
-  case 140:
+  case 141:
 
 /* Line 1455 of yacc.c  */
-#line 448 "util/configparser.y"
+#line 449 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2387,10 +2391,10 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 142:
 
 /* Line 1455 of yacc.c  */
-#line 455 "util/configparser.y"
+#line 456 "util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2399,10 +2403,10 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 143:
 
 /* Line 1455 of yacc.c  */
-#line 463 "util/configparser.y"
+#line 464 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2411,10 +2415,10 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 144:
 
 /* Line 1455 of yacc.c  */
-#line 471 "util/configparser.y"
+#line 472 "util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2423,10 +2427,10 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 145:
 
 /* Line 1455 of yacc.c  */
-#line 479 "util/configparser.y"
+#line 480 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2434,10 +2438,10 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 146:
 
 /* Line 1455 of yacc.c  */
-#line 486 "util/configparser.y"
+#line 487 "util/configparser.y"
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
@@ -2445,10 +2449,10 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 147:
 
 /* Line 1455 of yacc.c  */
-#line 493 "util/configparser.y"
+#line 494 "util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2458,10 +2462,10 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 148:
 
 /* Line 1455 of yacc.c  */
-#line 502 "util/configparser.y"
+#line 503 "util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2471,10 +2475,10 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 149:
 
 /* Line 1455 of yacc.c  */
-#line 511 "util/configparser.y"
+#line 512 "util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2482,10 +2486,10 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 150:
 
 /* Line 1455 of yacc.c  */
-#line 518 "util/configparser.y"
+#line 519 "util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2493,22 +2497,34 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 151:
 
 /* Line 1455 of yacc.c  */
-#line 525 "util/configparser.y"
+#line 526 "util/configparser.y"
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
-               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->socket_rcvbuf))
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[(2) - (2)].str));
        }
     break;
 
-  case 151:
+  case 152:
 
 /* Line 1455 of yacc.c  */
-#line 533 "util/configparser.y"
+#line 534 "util/configparser.y"
+    {
+               OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf))
+                       yyerror("buffer size expected");
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 153:
+
+/* Line 1455 of yacc.c  */
+#line 542 "util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2522,10 +2538,10 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 154:
 
 /* Line 1455 of yacc.c  */
-#line 546 "util/configparser.y"
+#line 555 "util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2537,10 +2553,10 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 155:
 
 /* Line 1455 of yacc.c  */
-#line 557 "util/configparser.y"
+#line 566 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2549,10 +2565,10 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 156:
 
 /* Line 1455 of yacc.c  */
-#line 565 "util/configparser.y"
+#line 574 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2566,10 +2582,10 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 157:
 
 /* Line 1455 of yacc.c  */
-#line 578 "util/configparser.y"
+#line 587 "util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2579,10 +2595,10 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 158:
 
 /* Line 1455 of yacc.c  */
-#line 587 "util/configparser.y"
+#line 596 "util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2592,10 +2608,10 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 159:
 
 /* Line 1455 of yacc.c  */
-#line 596 "util/configparser.y"
+#line 605 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2604,10 +2620,10 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 160:
 
 /* Line 1455 of yacc.c  */
-#line 604 "util/configparser.y"
+#line 613 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2621,10 +2637,10 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 161:
 
 /* Line 1455 of yacc.c  */
-#line 617 "util/configparser.y"
+#line 626 "util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2634,10 +2650,10 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 162:
 
 /* Line 1455 of yacc.c  */
-#line 626 "util/configparser.y"
+#line 635 "util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2647,10 +2663,10 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 163:
 
 /* Line 1455 of yacc.c  */
-#line 635 "util/configparser.y"
+#line 644 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2660,10 +2676,10 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 164:
 
 /* Line 1455 of yacc.c  */
-#line 644 "util/configparser.y"
+#line 653 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->
@@ -2673,10 +2689,10 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 165:
 
 /* Line 1455 of yacc.c  */
-#line 653 "util/configparser.y"
+#line 662 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2690,10 +2706,10 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 166:
 
 /* Line 1455 of yacc.c  */
-#line 666 "util/configparser.y"
+#line 675 "util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2701,10 +2717,10 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 167:
 
 /* Line 1455 of yacc.c  */
-#line 673 "util/configparser.y"
+#line 682 "util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2715,10 +2731,10 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 168:
 
 /* Line 1455 of yacc.c  */
-#line 683 "util/configparser.y"
+#line 692 "util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2729,10 +2745,10 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 169:
 
 /* Line 1455 of yacc.c  */
-#line 693 "util/configparser.y"
+#line 702 "util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2743,10 +2759,10 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 170:
 
 /* Line 1455 of yacc.c  */
-#line 703 "util/configparser.y"
+#line 712 "util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2757,10 +2773,10 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 171:
 
 /* Line 1455 of yacc.c  */
-#line 713 "util/configparser.y"
+#line 722 "util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2771,10 +2787,10 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 172:
 
 /* Line 1455 of yacc.c  */
-#line 723 "util/configparser.y"
+#line 732 "util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2785,10 +2801,10 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 173:
 
 /* Line 1455 of yacc.c  */
-#line 733 "util/configparser.y"
+#line 742 "util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -2796,10 +2812,10 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 174:
 
 /* Line 1455 of yacc.c  */
-#line 740 "util/configparser.y"
+#line 749 "util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -2807,10 +2823,10 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 175:
 
 /* Line 1455 of yacc.c  */
-#line 747 "util/configparser.y"
+#line 756 "util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2820,10 +2836,10 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 176:
 
 /* Line 1455 of yacc.c  */
-#line 756 "util/configparser.y"
+#line 765 "util/configparser.y"
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2833,10 +2849,10 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 177:
 
 /* Line 1455 of yacc.c  */
-#line 765 "util/configparser.y"
+#line 774 "util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2846,10 +2862,10 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 178:
 
 /* Line 1455 of yacc.c  */
-#line 774 "util/configparser.y"
+#line 783 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -2857,10 +2873,10 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 179:
 
 /* Line 1455 of yacc.c  */
-#line 781 "util/configparser.y"
+#line 790 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2871,10 +2887,10 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 180:
 
 /* Line 1455 of yacc.c  */
-#line 791 "util/configparser.y"
+#line 800 "util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -2889,10 +2905,10 @@ yyreduce:
        }
     break;
 
-  case 179:
+  case 181:
 
 /* Line 1455 of yacc.c  */
-#line 805 "util/configparser.y"
+#line 814 "util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -2900,10 +2916,10 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 182:
 
 /* Line 1455 of yacc.c  */
-#line 812 "util/configparser.y"
+#line 821 "util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2922,10 +2938,10 @@ yyreduce:
        }
     break;
 
-  case 181:
+  case 183:
 
 /* Line 1455 of yacc.c  */
-#line 830 "util/configparser.y"
+#line 839 "util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2939,10 +2955,10 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 184:
 
 /* Line 1455 of yacc.c  */
-#line 843 "util/configparser.y"
+#line 852 "util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2956,10 +2972,10 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 185:
 
 /* Line 1455 of yacc.c  */
-#line 856 "util/configparser.y"
+#line 865 "util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2969,10 +2985,10 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 186:
 
 /* Line 1455 of yacc.c  */
-#line 865 "util/configparser.y"
+#line 874 "util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2982,10 +2998,10 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 187:
 
 /* Line 1455 of yacc.c  */
-#line 874 "util/configparser.y"
+#line 883 "util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2995,10 +3011,10 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 188:
 
 /* Line 1455 of yacc.c  */
-#line 883 "util/configparser.y"
+#line 892 "util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3009,10 +3025,10 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 189:
 
 /* Line 1455 of yacc.c  */
-#line 893 "util/configparser.y"
+#line 902 "util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3023,10 +3039,10 @@ yyreduce:
        }
     break;
 
-  case 188:
+  case 190:
 
 /* Line 1455 of yacc.c  */
-#line 903 "util/configparser.y"
+#line 912 "util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3036,10 +3052,10 @@ yyreduce:
        }
     break;
 
-  case 189:
+  case 191:
 
 /* Line 1455 of yacc.c  */
-#line 912 "util/configparser.y"
+#line 921 "util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3047,10 +3063,10 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 192:
 
 /* Line 1455 of yacc.c  */
-#line 919 "util/configparser.y"
+#line 928 "util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3060,10 +3076,10 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 193:
 
 /* Line 1455 of yacc.c  */
-#line 928 "util/configparser.y"
+#line 937 "util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3073,10 +3089,10 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 194:
 
 /* Line 1455 of yacc.c  */
-#line 937 "util/configparser.y"
+#line 946 "util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3086,10 +3102,10 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 195:
 
 /* Line 1455 of yacc.c  */
-#line 946 "util/configparser.y"
+#line 955 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -3098,10 +3114,10 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 196:
 
 /* Line 1455 of yacc.c  */
-#line 954 "util/configparser.y"
+#line 963 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3115,10 +3131,10 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 197:
 
 /* Line 1455 of yacc.c  */
-#line 967 "util/configparser.y"
+#line 976 "util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -3127,10 +3143,10 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 198:
 
 /* Line 1455 of yacc.c  */
-#line 975 "util/configparser.y"
+#line 984 "util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -3151,10 +3167,10 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 199:
 
 /* Line 1455 of yacc.c  */
-#line 995 "util/configparser.y"
+#line 1004 "util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -3162,10 +3178,10 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 200:
 
 /* Line 1455 of yacc.c  */
-#line 1002 "util/configparser.y"
+#line 1011 "util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3181,10 +3197,10 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 201:
 
 /* Line 1455 of yacc.c  */
-#line 1017 "util/configparser.y"
+#line 1026 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->stubs->name);
@@ -3192,10 +3208,10 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1024 "util/configparser.y"
+#line 1033 "util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -3203,10 +3219,10 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1031 "util/configparser.y"
+#line 1040 "util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -3214,10 +3230,10 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1038 "util/configparser.y"
+#line 1047 "util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3228,10 +3244,10 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1048 "util/configparser.y"
+#line 1057 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->forwards->name);
@@ -3239,10 +3255,10 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1055 "util/configparser.y"
+#line 1064 "util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -3250,10 +3266,10 @@ yyreduce:
        }
     break;
 
-  case 205:
+  case 207:
 
 /* Line 1455 of yacc.c  */
-#line 1062 "util/configparser.y"
+#line 1071 "util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -3261,19 +3277,19 @@ yyreduce:
        }
     break;
 
-  case 206:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 1069 "util/configparser.y"
+#line 1078 "util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 216:
+  case 218:
 
 /* Line 1455 of yacc.c  */
-#line 1080 "util/configparser.y"
+#line 1089 "util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3284,10 +3300,10 @@ yyreduce:
        }
     break;
 
-  case 217:
+  case 219:
 
 /* Line 1455 of yacc.c  */
-#line 1090 "util/configparser.y"
+#line 1099 "util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3297,10 +3313,10 @@ yyreduce:
        }
     break;
 
-  case 218:
+  case 220:
 
 /* Line 1455 of yacc.c  */
-#line 1099 "util/configparser.y"
+#line 1108 "util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -3308,10 +3324,10 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 
 /* Line 1455 of yacc.c  */
-#line 1106 "util/configparser.y"
+#line 1115 "util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3319,10 +3335,10 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1113 "util/configparser.y"
+#line 1122 "util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3330,10 +3346,10 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1120 "util/configparser.y"
+#line 1129 "util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3341,10 +3357,10 @@ yyreduce:
        }
     break;
 
-  case 222:
+  case 224:
 
 /* Line 1455 of yacc.c  */
-#line 1127 "util/configparser.y"
+#line 1136 "util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3352,19 +3368,19 @@ yyreduce:
        }
     break;
 
-  case 223:
+  case 225:
 
 /* Line 1455 of yacc.c  */
-#line 1134 "util/configparser.y"
+#line 1143 "util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 227:
+  case 229:
 
 /* Line 1455 of yacc.c  */
-#line 1143 "util/configparser.y"
+#line 1152 "util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -3375,7 +3391,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 3379 "util/configparser.c"
+#line 3395 "util/configparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3587,7 +3603,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 1148 "util/configparser.y"
+#line 1157 "util/configparser.y"
 
 
 /* parse helper routines could be here */
index 524854371f2ad43779d54f46b596866d93aacf54..f3c908678d82e587e6ad400b378b3369a7b107f8 100644 (file)
      VAR_SO_RCVBUF = 368,
      VAR_EDNS_BUFFER_SIZE = 369,
      VAR_PREFETCH = 370,
-     VAR_PREFETCH_KEY = 371
+     VAR_PREFETCH_KEY = 371,
+     VAR_SO_SNDBUF = 372
    };
 #endif
 /* Tokens.  */
 #define VAR_EDNS_BUFFER_SIZE 369
 #define VAR_PREFETCH 370
 #define VAR_PREFETCH_KEY 371
+#define VAR_SO_SNDBUF 372
 
 
 
@@ -286,7 +288,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 290 "util/configparser.h"
+#line 292 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index 4bc49cdc1b9effc036717e978e64375270d4b5e9..093a107d254abbd4ae3839589fe69f37f69f97ab 100644 (file)
@@ -101,7 +101,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL
 %token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN 
 %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH
-%token VAR_PREFETCH_KEY
+%token VAR_PREFETCH_KEY VAR_SO_SNDBUF
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -154,7 +154,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level |
        server_auto_trust_anchor_file | server_add_holddown | 
        server_del_holddown | server_keep_missing | server_so_rcvbuf |
-       server_edns_buffer_size | server_prefetch | server_prefetch_key
+       server_edns_buffer_size | server_prefetch | server_prefetch_key |
+       server_so_sndbuf
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -524,7 +525,15 @@ server_version: VAR_VERSION STRING_ARG
 server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG
        {
                OUTYY(("P(server_so_rcvbuf:%s)\n", $2));
-               if(!cfg_parse_memsize($2, &cfg_parser->cfg->socket_rcvbuf))
+               if(!cfg_parse_memsize($2, &cfg_parser->cfg->so_rcvbuf))
+                       yyerror("buffer size expected");
+               free($2);
+       }
+       ;
+server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG
+       {
+               OUTYY(("P(server_so_sndbuf:%s)\n", $2));
+               if(!cfg_parse_memsize($2, &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free($2);
        }