]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Add ip-transparent config option for bind to non-local addresses.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 19 Mar 2015 09:50:35 +0000 (09:50 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 19 Mar 2015 09:50:35 +0000 (09:50 +0000)
git-svn-id: file:///svn/unbound/trunk@3369 be551aaa-1e26-0410-a405-d3ace91eadb9

14 files changed:
daemon/remote.c
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 6e8afeabb3cd2704c30c0c36995033c9327236d0..f88e0e58030162ff78131142b92987bc36ebc027 100644 (file)
@@ -357,7 +357,8 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err,
                }
 
                /* open fd */
-               fd = create_tcp_accept_sock(res, 1, &noproto, 0);
+               fd = create_tcp_accept_sock(res, 1, &noproto, 0,
+                       cfg->ip_transparent);
                freeaddrinfo(res);
        }
 
index 163e57473d102e9f659283edfc11a2ce45880f67..0a24cd1bc8171598f30c23f3419570b1f1ca04ea 100644 (file)
@@ -1,3 +1,6 @@
+19 March 2015: Wouter
+       - Add ip-transparent config option for bind to non-local addresses.
+
 17 March 2015: Wouter
        - Use reallocarray for integer overflow protection, patch submitted
          by Loganaden Velvindron.
index 48ea59e06f80a859d937d237990d33d98dfe00b8..69b3cf39ec6a5463b5f664cc45bcde20a20fe868 100644 (file)
@@ -87,6 +87,10 @@ server:
        
        # use SO_REUSEPORT to distribute queries over threads.
        # so-reuseport: no
+       
+       # use IP_TRANSPARENT so the interface: addresses can be non-local
+       # and you can config non-existing IPs that are going to work later on
+       # ip-transparent: no
 
        # EDNS reassembly buffer to advertise to UDP peers (the actual buffer
        # is set with msg-buffer-size). 1480 can solve fragmentation (timeouts).
index 14bfa68b28d315a050a6ff96374f5f8863ad97c3..91b8b24ae6adaa85b57494e9eaf5eef315f99549 100644 (file)
@@ -267,6 +267,16 @@ it then attempts to open the port and passes the option if it was available
 at compile time, if that works it is used, if it fails, it continues
 silently (unless verbosity 3) without the option.
 .TP
+.B ip\-transparent: \fI<yes or no>
+If yes, then use IP_TRANSPARENT socket option on sockets where unbound
+is listening for incoming traffic.  Default no.  Allows you to bind to
+non\-local interfaces.  For example for non\-existant IP addresses that
+are going to exist later on, with host failover configuration.  This is
+a lot like interface\-automatic, but that one services all interfaces
+and with this option you can select which (future) interfaces unbound
+provides service on.  This option needs unbound to be started with root
+permissions on some systems.
+.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 3e5bf40044485fad76347ca091f7f9b7ad77d4da..e261e3b1f2cba6a8345a162ceaa03d7be506190d 100644 (file)
@@ -96,10 +96,10 @@ 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, int snd, int listen, int* reuseport)
+       int rcv, int snd, int listen, int* reuseport, int transparent)
 {
        int s;
-#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU)
+#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_USE_MIN_MTU)  || defined(IP_TRANSPARENT)
        int on=1;
 #endif
 #ifdef IPV6_MTU
@@ -177,6 +177,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
 #else
                (void)reuseport;
 #endif /* defined(SO_REUSEPORT) */
+#ifdef IP_TRANSPARENT
+               if (transparent &&
+                   setsockopt(s, IPPROTO_IP, IP_TRANSPARENT, (void*)&on,
+                   (socklen_t)sizeof(on)) < 0) {
+                       log_warn("setsockopt(.. IP_TRANSPARENT ..) failed: %s",
+                       strerror(errno));
+               }
+#endif /* IP_TRANSPARENT */
        }
        if(rcv) {
 #ifdef SO_RCVBUF
@@ -472,10 +480,10 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
 
 int
 create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
-       int* reuseport)
+       int* reuseport, int transparent)
 {
        int s;
-#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY)
+#if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT)
        int on = 1;
 #endif /* SO_REUSEADDR || IPV6_V6ONLY */
        verbose_print_addr(addr);
@@ -552,6 +560,14 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
 #else
        (void)v6only;
 #endif /* IPV6_V6ONLY */
+#ifdef IP_TRANSPARENT
+       if (transparent &&
+           setsockopt(s, IPPROTO_IP, IP_TRANSPARENT, (void*)&on,
+           (socklen_t)sizeof(on)) < 0) {
+               log_warn("setsockopt(.. IP_TRANSPARENT ..) failed: %s",
+                       strerror(errno));
+       }
+#endif /* IP_TRANSPARENT */
        if(bind(s, addr->ai_addr, addr->ai_addrlen) != 0) {
 #ifndef USE_WINSOCK
                /* detect freebsd jail with no ipv6 permission */
@@ -656,7 +672,7 @@ create_local_accept_sock(const char *path, int* noproto)
 static int
 make_sock(int stype, const char* ifname, const char* port, 
        struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
-       int* reuseport)
+       int* reuseport, int transparent)
 {
        struct addrinfo *res = NULL;
        int r, s, inuse, noproto;
@@ -684,14 +700,15 @@ make_sock(int stype, const char* ifname, const char* port,
                s = create_udp_sock(res->ai_family, res->ai_socktype,
                        (struct sockaddr*)res->ai_addr, res->ai_addrlen,
                        v6only, &inuse, &noproto, (int)rcv, (int)snd, 1,
-                       reuseport);
+                       reuseport, transparent);
                if(s == -1 && inuse) {
                        log_err("bind: address already in use");
                } else if(s == -1 && noproto && hints->ai_family == AF_INET6){
                        *noip6 = 1;
                }
        } else  {
-               s = create_tcp_accept_sock(res, v6only, &noproto, reuseport);
+               s = create_tcp_accept_sock(res, v6only, &noproto, reuseport,
+                       transparent);
                if(s == -1 && noproto && hints->ai_family == AF_INET6){
                        *noip6 = 1;
                }
@@ -704,7 +721,7 @@ make_sock(int stype, const char* ifname, const char* port,
 static int
 make_sock_port(int stype, const char* ifname, const char* port, 
        struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,
-       int* reuseport)
+       int* reuseport, int transparent)
 {
        char* s = strchr(ifname, '@');
        if(s) {
@@ -726,10 +743,10 @@ make_sock_port(int stype, const char* ifname, const char* port,
                (void)strlcpy(p, s+1, sizeof(p));
                p[strlen(s+1)]=0;
                return make_sock(stype, newif, p, hints, v6only, noip6,
-                       rcv, snd, reuseport);
+                       rcv, snd, reuseport, transparent);
        }
        return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd,
-               reuseport);
+               reuseport, transparent);
 }
 
 /**
@@ -823,19 +840,20 @@ set_recvpktinfo(int s, int family)
  * @param ssl_port: ssl service port number
  * @param reuseport: try to set SO_REUSEPORT if nonNULL and true.
  *     set to false on exit if reuseport failed due to no kernel support.
+ * @param transparent: set IP_TRANSPARENT socket option.
  * @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 snd, int ssl_port, int* reuseport)
+       size_t rcv, size_t snd, int ssl_port, int* reuseport, int transparent)
 {
        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, snd, reuseport)) == -1) {
+                       &noip6, rcv, snd, reuseport, transparent)) == -1) {
                        if(noip6) {
                                log_warn("IPv6 protocol not available");
                                return 1;
@@ -862,7 +880,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, snd, reuseport)) == -1) {
+                       &noip6, rcv, snd, reuseport, transparent)) == -1) {
                        if(noip6) {
                                log_warn("IPv6 protocol not available");
                                return 1;
@@ -883,7 +901,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
                        atoi(strchr(ifname, '@')+1) == ssl_port) ||
                        (!strchr(ifname, '@') && atoi(port) == ssl_port));
                if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, 
-                       &noip6, 0, 0, reuseport)) == -1) {
+                       &noip6, 0, 0, reuseport, transparent)) == -1) {
                        if(noip6) {
                                /*log_warn("IPv6 protocol not available");*/
                                return 1;
@@ -1039,7 +1057,8 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                                do_auto, cfg->do_udp, do_tcp, 
                                &hints, portbuf, &list,
                                cfg->so_rcvbuf, cfg->so_sndbuf,
-                               cfg->ssl_port, reuseport)) {
+                               cfg->ssl_port, reuseport,
+                               cfg->ip_transparent)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -1050,7 +1069,8 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                                do_auto, cfg->do_udp, do_tcp, 
                                &hints, portbuf, &list,
                                cfg->so_rcvbuf, cfg->so_sndbuf,
-                               cfg->ssl_port, reuseport)) {
+                               cfg->ssl_port, reuseport,
+                               cfg->ip_transparent)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -1063,7 +1083,8 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                        if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, 
                                do_tcp, &hints, portbuf, &list, 
                                cfg->so_rcvbuf, cfg->so_sndbuf,
-                               cfg->ssl_port, reuseport)) {
+                               cfg->ssl_port, reuseport,
+                               cfg->ip_transparent)) {
                                listening_ports_free(list);
                                return NULL;
                        }
@@ -1074,7 +1095,8 @@ listening_ports_open(struct config_file* cfg, int* reuseport)
                        if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, 
                                do_tcp, &hints, portbuf, &list, 
                                cfg->so_rcvbuf, cfg->so_sndbuf,
-                               cfg->ssl_port, reuseport)) {
+                               cfg->ssl_port, reuseport,
+                               cfg->ip_transparent)) {
                                listening_ports_free(list);
                                return NULL;
                        }
index e9883a8f4f972b9cc80af852a3f69cae1130d061..676f0c638ca4858da91a9623ccc806f719646cfb 100644 (file)
@@ -189,11 +189,12 @@ void listen_start_accept(struct listen_dnsport* listen);
  *     set SO_REUSEADDR on it.
  * @param reuseport: if nonNULL and true, try to set SO_REUSEPORT on
  *     listening UDP port.  Set to false on return if it failed to do so.
+ * @param transparent: set IP_TRANSPARENT socket option.
  * @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,
-       int snd, int listen, int* reuseport);
+       int snd, int listen, int* reuseport, int transparent);
 
 /**
  * Create and bind TCP listening socket
@@ -202,10 +203,11 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr,
  * @param noproto: if error caused by lack of protocol support.
  * @param reuseport: if nonNULL and true, try to set SO_REUSEPORT on
  *     listening UDP port.  Set to false on return if it failed to do so.
+ * @param transparent: set IP_TRANSPARENT socket option.
  * @return: the socket. -1 on error.
  */
 int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto,
-       int* reuseport);
+       int* reuseport, int transparent);
 
 /**
  * Create and bind local listening socket
index 5bb52ff9fe444cbc33f1b421150745b2906a036d..171787bd88e3ccf41d9438482fd740ed07d61b24 100644 (file)
@@ -893,13 +893,13 @@ udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen, int port,
                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, 0, 0, NULL);
+                       0, 0, 0, NULL, 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, 0, 0, NULL);
+                       0, 0, 0, NULL, 0);
        }
        return fd;
 }
index 195fadaea2e30f73616a02d092547a518e723030..a212d1787299864a76feba4ee59bd04dbbf34a68 100644 (file)
@@ -156,6 +156,7 @@ config_create(void)
        cfg->so_rcvbuf = 0;
        cfg->so_sndbuf = 0;
        cfg->so_reuseport = 0;
+       cfg->ip_transparent = 0;
        cfg->num_ifs = 0;
        cfg->ifs = NULL;
        cfg->num_out_ifs = 0;
@@ -373,6 +374,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_MEMSIZE("so-rcvbuf:", so_rcvbuf)
        else S_MEMSIZE("so-sndbuf:", so_sndbuf)
        else S_YNO("so-reuseport:", so_reuseport)
+       else S_YNO("ip-transparent:", ip_transparent)
        else S_MEMSIZE("rrset-cache-size:", rrset_cache_size)
        else S_POW2("rrset-cache-slabs:", rrset_cache_slabs)
        else S_YNO("prefetch:", prefetch)
@@ -627,6 +629,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_MEM(opt, "so-rcvbuf", so_rcvbuf)
        else O_MEM(opt, "so-sndbuf", so_sndbuf)
        else O_YNO(opt, "so-reuseport", so_reuseport)
+       else O_YNO(opt, "ip-transparent", ip_transparent)
        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 faa275accbbc55b198c9405975638e0c0966a5f6..7c81f1c578153f2235ee00dfbca6f133c17fc3f9 100644 (file)
@@ -136,6 +136,8 @@ struct config_file {
        size_t so_sndbuf;
        /** SO_REUSEPORT requested on port 53 sockets */
        int so_reuseport;
+       /** IP_TRANSPRENT socket option requested on port 53 sockets */
+       int ip_transparent;
 
        /** number of interfaces to open. If 0 default all interfaces. */
        int num_ifs;
index d708977188be498368d827032d7d7c8c55bd46ad..fcade1ac326ef6df573aa4cbd78c9c30acf7d231 100644 (file)
@@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 165
-#define YY_END_OF_BUFFER 166
+#define YY_NUM_RULES 166
+#define YY_END_OF_BUFFER 167
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -372,189 +372,190 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1643] =
+static yyconst flex_int16_t yy_accept[1655] =
     {   0,
-        1,    1,  147,  147,  151,  151,  155,  155,  159,  159,
-        1,    1,  166,  163,    1,  145,  145,  164,    2,  164,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  147,
-      148,  148,  149,  164,  151,  152,  152,  153,  164,  158,
-      155,  156,  156,  157,  164,  159,  160,  160,  161,  164,
-      162,  146,    2,  150,  164,  162,  163,    0,    1,    2,
-        2,    2,    2,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  147,    0,  151,    0,  158,    0,  155,  159,
-        0,  162,    0,    2,    2,  162,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  162,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  162,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,   67,  163,  163,  163,  163,
-      163,    6,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  162,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  162,  163,  163,  163,  163,   29,  163,  163,  163,
-      163,  163,  163,  163,  163,  132,  163,   12,   13,  163,
-       15,   14,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  125,
-      163,  163,  163,  163,  163,    3,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  162,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  154,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,   32,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,   33,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,   82,  154,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,   81,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,   65,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,   20,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,   30,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,   31,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,   22,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,   26,
-      163,   27,  163,  163,  163,   68,  163,   69,  163,   66,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,    5,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-       84,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,   23,  163,  163,  163,  163,  109,  108,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,   34,
-      163,  163,  163,  163,  163,  163,  163,  163,   71,   70,
-      163,  163,  163,  163,  163,  163,  163,  105,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,   51,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,   55,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  107,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,    4,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  102,  163,  163,  163,  163,  163,  163,  163,
-      118,  163,  103,  163,  130,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,   21,  163,  163,  163,  163,
-       73,  163,   74,   72,  163,  163,  163,  163,  163,  163,
-      163,   80,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  104,  163,  163,  163,  163,  129,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,   64,
-
-      163,  163,  163,  163,  163,  163,  163,  163,   28,  163,
-      163,   17,  163,  163,  163,   16,  163,   89,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,   41,   42,  163,  163,  163,  163,  163,  163,  163,
-      133,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,   75,  163,  163,  163,  163,  163,
-      163,   79,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,   83,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  124,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  163,   93,  163,   97,  163,
-      163,  163,  163,   78,  163,  163,  116,  163,  163,  163,
-      163,  131,  163,  163,  163,  163,  163,  163,  163,  138,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,   96,  163,  163,  163,  163,  163,   43,   44,  163,
-       50,   98,  163,  110,  106,  163,  163,   37,  163,  100,
-      163,  163,  163,  163,  163,    7,  163,   63,  115,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,   85,  137,  163,  163,  163,
-
-      163,  163,  163,  163,  163,  126,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-       99,  163,   36,   38,  163,  163,  163,  163,  163,   62,
-      163,  163,  163,  163,  120,   18,   19,  163,  163,  163,
-      163,  163,  163,  163,   60,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  122,  119,  163,  163,  163,  163,
-      163,  163,  163,  163,   35,  163,  163,  163,  163,  163,
-      163,  163,   11,  163,  163,  163,  163,  163,  163,  163,
-      163,   10,  163,  163,   39,  163,  128,  121,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,   92,
-
-       91,  163,  123,  117,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,   45,  163,  127,  163,  163,  163,  163,   40,
-      163,  163,  163,   86,   88,  111,  163,  163,  163,   90,
-      163,  163,  163,  163,  163,  163,  163,  163,  134,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,   24,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  136,
-      163,  163,  114,  163,  163,  163,  163,  163,  163,  163,
-       48,  163,   25,  163,    9,  163,  163,  112,   52,  163,
-
-      163,  163,   95,  163,  163,  163,  163,  163,  163,  135,
-       76,  163,  163,  163,  163,   54,   58,   53,  163,   46,
-      163,    8,  163,  163,   94,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,   59,   57,  163,   47,  163,  113,
-      163,  163,   87,  163,  163,  163,  163,  163,  163,   77,
-       56,   49,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,   61,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  101,  163,  163,
-
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  141,  163,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
-      139,  163,  142,  143,  163,  163,  163,  163,  163,  140,
-      144,    0
+        1,    1,  148,  148,  152,  152,  156,  156,  160,  160,
+        1,    1,  167,  164,    1,  146,  146,  165,    2,  165,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  148,
+      149,  149,  150,  165,  152,  153,  153,  154,  165,  159,
+      156,  157,  157,  158,  165,  160,  161,  161,  162,  165,
+      163,  147,    2,  151,  165,  163,  164,    0,    1,    2,
+        2,    2,    2,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  148,    0,  152,    0,  159,    0,  156,  160,
+        0,  163,    0,    2,    2,  163,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  163,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  163,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,   68,  164,  164,
+      164,  164,  164,    6,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  163,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  163,  164,  164,  164,  164,   30,
+      164,  164,  164,  164,  164,  164,  164,  164,  133,  164,
+       12,   13,  164,   15,   14,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  126,  164,  164,  164,  164,  164,    3,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      163,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  155,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+       33,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+       34,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,   83,
+      155,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,   82,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,   66,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,   20,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,   31,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+       32,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,   22,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,   26,  164,   27,  164,
+      164,  164,   69,  164,   70,  164,   67,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,    5,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,   85,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+       23,  164,  164,  164,  164,  164,  110,  109,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,   35,  164,  164,
+      164,  164,  164,  164,  164,  164,   72,   71,  164,  164,
+      164,  164,  164,  164,  164,  106,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,   52,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,   56,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  108,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,    4,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  103,  164,  164,  164,  164,  164,  164,  164,  119,
+      164,  104,  164,  131,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,   21,  164,  164,  164,  164,   74,
+      164,   75,   73,  164,  164,  164,  164,  164,  164,  164,
+       81,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  105,  164,  164,  164,  164,  130,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,   65,
+      164,  164,  164,  164,  164,  164,  164,  164,   28,  164,
+      164,   17,  164,  164,  164,   16,  164,   90,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,   42,   43,  164,  164,  164,  164,  164,  164,  164,
+      134,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,   76,  164,  164,  164,  164,  164,
+      164,   80,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,   84,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      125,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,   94,  164,   98,
+      164,  164,  164,  164,   79,  164,  164,  117,  164,  164,
+      164,  164,  132,  164,  164,  164,  164,  164,  164,  164,
+      139,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,   97,  164,  164,  164,  164,  164,   44,   45,
+      164,   29,   51,   99,  164,  111,  107,  164,  164,   38,
+      164,  101,  164,  164,  164,  164,  164,    7,  164,   64,
+      116,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,   86,  138,  164,
+      164,  164,  164,  164,  164,  164,  164,  127,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  100,  164,   37,   39,  164,  164,  164,  164,
+      164,   63,  164,  164,  164,  164,  121,   18,   19,  164,
+      164,  164,  164,  164,  164,  164,   61,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  123,  120,  164,  164,
+      164,  164,  164,  164,  164,  164,   36,  164,  164,  164,
+      164,  164,  164,  164,   11,  164,  164,  164,  164,  164,
+      164,  164,  164,   10,  164,  164,   40,  164,  129,  122,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,   93,   92,  164,  124,  118,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,   46,  164,  128,  164,  164,  164,
+      164,   41,  164,  164,  164,   87,   89,  112,  164,  164,
+      164,   91,  164,  164,  164,  164,  164,  164,  164,  164,
+      135,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,   24,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  137,  164,  164,  115,  164,  164,  164,  164,  164,
+
+      164,  164,   49,  164,   25,  164,    9,  164,  164,  113,
+       53,  164,  164,  164,   96,  164,  164,  164,  164,  164,
+      164,  136,   77,  164,  164,  164,  164,   55,   59,   54,
+      164,   47,  164,    8,  164,  164,   95,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,   60,   58,  164,   48,
+      164,  114,  164,  164,   88,  164,  164,  164,  164,  164,
+      164,   78,   57,   50,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+       62,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  102,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  142,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  140,  164,  143,  144,  164,  164,  164,  164,
+      164,  141,  145,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -597,379 +598,381 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1657] =
+static yyconst flex_int16_t yy_base[1669] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2902, 2887,   50, 3255, 3255, 3255,  129,   94,
+       87,  108, 2501, 2145,   50, 3281, 3281, 3281,  129,   94,
        70,  104,  130,   90,   92,  115,  127,   95,   84,  111,
-      137,  148,   50,  150,  155,  157,  163,  171,  178, 2486,
-     3255, 3255, 3255,   70, 2352, 3255, 3255, 3255,   42, 2150,
-     2132, 3255, 3255, 3255,  195, 2010, 3255, 3255, 3255,  141,
-     1942, 3255,  202, 3255,  206,  122, 1156,  212,  120,    0,
+      137,  148,   50,  150,  155,  157,  163,  171,  178, 2001,
+     3281, 3281, 3281,   70, 1900, 3281, 3281, 3281,   42, 1856,
+     1448, 3281, 3281, 3281,  195, 1202, 3281, 3281, 3281,  141,
+     1174, 3281,  202, 3281,  206,  122, 1044,  212,  120,    0,
       223,    0,    0,  103,  147,  154,  158,  192,  199,  207,
       208,  205,  209,  221,  218,  220,  224,  225,  229,  230,
       231,  238,  251,  236,  247,  250,  237,  248,  256,  259,
 
       167,  263,  254,  249,  264,  265,  271,  273,  274,  125,
       275,  277,  284,  278,  281,  285,  288,  286,  289,  292,
-      296,  298,  987,  308,  860,  315,  829,  326,  692,  342,
+      296,  298, 1016,  308,  746,  315,  650,  326,  474,  368,
       319,  301,  330,  334,    0,  327,  331,  337,  314,  305,
       333,  335,  343,  340,  346,  349,  370,  350,  339,  352,
-       49,  356,  354,  353,  361,  363,  362,  366,  364,  368,
-      373,  377,  381,  392,  399,  386,  383,  401,  397,  405,
-      408,  406,  182,  407,  409,  410,  385,  411,  414,  412,
-      416,  418,  424,  420,  421,  422,  430,  428,  431,  441,
-      444,  450,  433,  446,  448,  449,  456,  454,  453,  455,
-
-      461,  460,  463,  464,  474,  475,  477,  470,  472,  479,
-      480,  481,  488,  489,  491,  493,  499,  495,  496,  497,
-      500,  501,  504,  505,  507,  511,  517,  512,  508,  521,
-      510,  516,  523,  534,  527,  538,  532,  533,  542,  540,
-      545,  543,  546,  547,  558,  554,  555,  559,  556,  557,
-      563,  571,  575,  565,  568,  569,  577,  579,  581,  599,
-      585,  583,  587,  590,  589,  596,  610,  597,  606,  607,
-      624,  603,  612,  625,  627,  628,  632,  631,  634,  636,
-      635,  637,  638,  640,  641,  644,  645,  656,  659,  648,
-      665,  662,  667,  664,  670,  593,  677,  673,  675,  674,
-
-      676,  646,  682,  678,  688, 3255,  690,  679,  685,  692,
-      695, 3255,  696,  697,  698,  703,  702,  709,  705,  706,
-      711,  714,  715,  719,  713,  720,  740,  722,  721,  731,
-      735,  725,  733,  727,  743,  747,  749,  750,  751,  753,
-      754,  755,  757,  758,  763,  774,  760,  768,  771,  778,
-      779,  780,  782,  781,  787,  783,  794,  788,  798,  804,
-      800,  806,  808,  814,  810,  811,  813,  820,  818,  819,
-      812,  826,  823,  825,  830,  834,  827,  841,  837,  840,
-      844,  847,  849,  850,  851,  853,  859,  857,  858,  866,
-      868,  856,  864,  871,  872,  877,  884,  885,  881,  886,
-
-      892,  893,  888,  894,  897,  898,  899,  900,  901,  902,
-      906,  908,  909,  917,  903,  913,  919,  925,  927,  928,
-      910,  930,  931,  934,  933,  937,  941,  935,  945,  947,
-      948,  949,  955,  957,  950,  959, 3255,  969,  963,  965,
-      966,  970,  972,  951,  991, 3255,  973, 3255, 3255,  975,
-     3255, 3255,  974,  979,  982,  994, 1014,  993,  981,  980,
-     1001, 1007,  995, 1008,  997, 1019, 1022, 1023, 1011, 1017,
-     1027, 1029, 1024, 1034, 1037, 1041, 1043, 1049, 1045, 1047,
-     1046, 1050, 1051, 1055, 1056, 1062, 1057, 1064, 1066, 3255,
-     1067, 1068, 1071, 1073, 1075, 3255, 1074, 1076, 1077, 1079,
-
-     1080, 1083, 1084, 1087, 1089, 1090, 1092, 1094, 1100, 1096,
-     1097, 1110, 1117, 1114, 1104, 1113, 1115, 1119, 1121, 1129,
-     1127, 1126, 1128, 1136, 1132, 1134, 1138, 1135, 1139, 1142,
-     1145, 1146, 1170, 1147, 1148, 1149, 1153, 1154, 1157, 1158,
-     1162, 1165, 1177, 1178, 1176, 1164, 1184, 1187, 1194, 1195,
-     1155, 1197, 1199, 1188, 1204, 1206, 1207, 1208, 1209, 1217,
-     1210, 3255, 1223, 1224, 1212, 1219, 1220, 1226, 1229, 1230,
-     1234, 1233, 1236, 1235, 1242, 3255, 1240, 1243, 1241, 1246,
-     1247, 1255, 1248, 1262, 1269, 3255, 1271, 1272, 1265, 1267,
-     1254, 1275, 1258, 1280, 1281, 1277, 1284, 1287, 1289, 1290,
-
-     1291, 1292, 1294, 1296, 1297, 1298, 1301, 1302, 1303, 1305,
-     1313, 1304, 1319, 1323, 1310, 1327, 1320, 1322, 1328, 1333,
-     1330, 1332, 1331, 1334, 3255,  239, 1335, 1337, 1338, 1347,
-     1351, 1355, 1343, 1353, 1356, 1354, 1344, 1362, 1345, 1366,
-     1368, 1370, 1371, 1372, 1374, 1375, 1378, 1380, 1381, 1384,
-     1385, 1387, 1389, 1388, 1396, 1395, 1397, 1398, 1401, 1402,
-     1403, 1405, 1409, 1410, 1415, 1411, 1419, 3255, 1423, 1420,
-     1417, 1421, 1424, 1437, 1433, 1435, 1438, 1444, 1442, 1440,
-     1446, 1449, 1453, 1454, 1455, 1456, 1463, 1465, 1461, 1464,
-     1467, 1471, 3255, 1473, 1457, 1470, 1475, 1478, 1479, 1480,
-
-     1484, 1486, 1491, 1492, 1496, 3255, 1498, 1499, 1493, 1506,
-     1500, 1509, 1510, 1514, 1503, 1516, 1517, 1519, 1526, 1518,
-     1522, 1530, 3255, 1534, 1538, 1535, 1544, 1532, 1531, 1542,
-     1546, 1543, 1547, 1554, 1548, 1551, 1555, 1556, 1552, 1558,
-     1559, 1560, 1561, 1562, 3255, 1579, 1566, 1580, 1585, 1576,
-     1569, 1582, 1581, 1589, 1591, 1593, 1594, 1595, 1596, 1597,
-     1600, 1602, 1598, 1604, 1605, 1603, 1609, 1623, 1610, 1606,
-     1625, 1626, 1627, 1607, 1631, 1637, 1640, 1638, 3255, 1643,
-     1644, 1645, 1629, 1651, 1653, 1647, 1654, 1655, 1656, 1657,
-     1665, 1658, 1661, 1664, 1667, 1662, 1668, 1669, 1670, 1674,
-
-     1678, 1672, 1687, 1688, 1691, 1692, 1694, 1693, 1700, 3255,
-     1699, 3255, 1701, 1702, 1709, 3255, 1711, 3255, 1715, 3255,
-     1716, 1720, 1707, 1705, 1712, 1718, 1724, 1728, 1725, 1731,
-     1729, 1733, 1734, 1735, 1736, 3255, 1737, 1742, 1746, 1740,
-     1743, 1748, 1750, 1753, 1762, 1749, 1764, 1761, 1766, 1767,
-     3255, 1770, 1771, 1774, 1776, 1777, 1784, 1782, 1781, 1788,
-     1778, 1789, 1802, 1798, 1791, 1785, 1800, 1801, 1810, 1807,
-     1808, 1812, 1814, 1815, 1816, 1817, 1818, 1822, 1825, 1826,
-     1823, 1824, 1827, 3255, 1831, 1828, 1840, 1829, 3255, 3255,
-     1842, 1847, 1851, 1839, 1853, 1854, 1857, 1858, 1864, 1861,
-
-     1863, 1865, 1868, 1870, 1871, 1872, 1874, 1876, 1877, 3255,
-     1885, 1879, 1887, 1888, 1881, 1898, 1889, 1900, 3255, 3255,
-     1891, 1904, 1905, 1906, 1912, 1908, 1910, 3255, 1911, 1914,
-     1915, 1916, 1922, 1926, 1913, 1919, 1930, 1932, 1933, 1937,
-     1943, 1939, 1940, 1941, 1953, 1954, 1956, 3255, 1950, 1961,
-     1962, 1963, 1964, 1965, 1966, 1967, 1969, 1970, 1971, 1976,
-     1984, 1980, 1983, 1985, 1988, 1989, 1993, 1995, 1944, 2003,
-     1996, 3255, 2011, 1982, 2012, 1997, 2014, 2015, 2023, 2017,
-     2004, 2008, 2019, 2020, 2026, 2021, 2032, 2034, 3255, 2035,
-     2038, 2027, 2043, 2040, 2045, 2051, 2046, 2048, 3255, 2053,
-
-     2060, 2056, 2059, 2062, 2063, 2065, 2057, 2067, 2069, 2070,
-     2073, 2075, 2081, 2078, 2087, 2083, 2091, 2095, 2093, 2101,
-     2102, 2098, 2099, 2108, 2106, 2109, 2107, 2110, 2117, 2114,
-     2120, 2116, 3255, 2122, 2127, 2130, 2131, 2133, 2134, 2123,
-     3255, 2139, 3255, 2141, 3255, 2142, 2146, 2143, 2147, 2148,
-     2149, 2151, 2152, 2164, 2158, 3255, 2161, 2160, 2165, 2167,
-     3255, 2170, 3255, 3255, 2171, 2175, 2182, 2179, 2180, 2183,
-     2188, 3255, 2184, 2190, 2192, 2194, 2195, 2197, 2199, 2200,
-     2198, 2201, 3255, 2202, 2204, 2205, 2208, 3255, 2214, 2219,
-     2215, 2220, 2222, 2226, 2227, 2229, 2230, 2238, 2234, 3255,
-
-     2235, 2237, 2243, 2236, 2240, 2244, 2253, 2245, 3255, 2255,
-     2256, 3255, 2258, 2259, 2264, 3255, 2263, 3255, 2266, 2267,
-     2265, 2268, 2274, 2275, 2286, 2270, 2283, 2276, 2278, 2293,
-     2288, 3255, 3255, 2294, 2298, 2299, 2295, 2301, 2304, 2306,
-     3255, 2302, 2308, 2310, 2311, 2312, 2314, 2315, 2321, 2318,
-     2323, 2324, 2316, 2325, 3255, 2328, 2330, 2334, 2335, 2336,
-     2337, 3255, 2340, 2343, 2347, 2341, 2349, 2363, 2366, 2368,
-     2357, 2372, 2374, 2350, 2376, 2378, 2361, 3255, 2379, 2382,
-     2383, 2386, 2387, 2388, 2389, 2390, 2396, 2393, 2398, 3255,
-     2400, 2401, 2403, 2407, 2408, 2409, 2410, 2411, 2413, 2417,
-
-     2415, 2419, 2423, 2345, 2426, 2425, 3255, 2418, 3255, 2431,
-     2436, 2444, 2441, 3255, 2433, 2443, 3255, 2446, 2447, 2445,
-     2454, 3255, 2457, 2458, 2459, 2451, 2461, 2462, 2466, 3255,
-     2464, 2470, 2477, 2469, 2471, 2478, 2479, 2480, 2482, 2489,
-     2488, 3255, 2485, 2490, 2498, 2496, 2497, 3255, 3255, 2502,
-     3255, 3255, 2506, 3255, 3255, 2507, 2509, 3255, 2511, 3255,
-     2518, 2514, 2516, 2517, 2519, 3255, 2521, 3255, 3255, 2522,
-     2523, 2526, 2528, 2530, 2535, 2537, 2531, 2538, 2541, 2542,
-     2545, 2544, 2546, 2548, 2550, 2551, 2552, 2555, 2558, 2560,
-     2561, 2562, 2564, 2571, 2576, 3255, 3255, 2563, 2573, 2565,
-
-     2578, 2580, 2581, 2584, 2585, 3255, 2593, 2588, 2596, 2590,
-     2594, 2595, 2599, 2600, 2607, 2609, 2608, 2610, 2611, 2614,
-     3255, 2616, 3255, 3255, 2617, 2618, 2623, 2624, 2620, 3255,
-     2628, 2629, 2632, 2641, 3255, 3255, 3255, 2642, 2633, 2636,
-     2644, 2646, 2647, 2650, 3255, 2652, 2654, 2656, 2653, 2663,
-     2665, 2674, 2671, 2673, 3255, 3255, 2680, 2677, 2678, 2676,
-     2679, 2682, 2684, 2686, 3255, 2657, 2687, 2688, 2691, 2693,
-     2695, 2697, 3255, 2692, 2699, 2703, 2708, 2704, 2710, 2712,
-     2716, 3255, 2714, 2715, 3255, 2718, 3255, 3255, 2724, 2725,
-     2727, 2732, 2734, 2736, 2729, 2737, 2743, 2740, 2741, 3255,
-
-     3255, 2742, 3255, 3255, 2746, 2749, 2750, 2752, 2753, 2756,
-     2757, 2758, 2759, 2760, 2769, 2765, 2774, 2762, 2771, 2775,
-     2773, 2780, 3255, 2783, 3255, 2777, 2788, 2785, 2790, 3255,
-     2792, 2791, 2794, 3255, 3255, 3255, 2802, 2804, 2806, 3255,
-     2808, 2809, 2796, 2811, 2810, 2825, 2798, 2822, 3255, 2812,
-     2814, 2827, 2830, 2824, 2832, 2835, 2836, 2837, 2838, 2840,
-     2841, 2846, 2847, 3255, 2850, 2843, 2851, 2856, 2858, 2853,
-     2859, 2861, 2866, 2862, 2870, 2867, 2882, 2876, 2869, 3255,
-     2879, 2880, 3255, 2883, 2884, 2885, 2892, 2896, 2901, 2897,
-     3255, 2904, 3255, 2905, 3255, 2908, 2909, 3255, 3255, 2910,
-
-     2912, 2915, 3255, 2916, 2913, 2917, 2919, 2922, 2923, 3255,
-     3255, 2924, 2926, 2930, 2934, 3255, 3255, 3255, 2940, 3255,
-     2941, 3255, 2947, 2927, 3255, 2932, 2949, 2935, 2951, 2952,
-     2953, 2954, 2955, 2957, 3255, 3255, 2962, 3255, 2964, 3255,
-     2965, 2967, 3255, 2975, 2969, 2971, 2972, 2978, 2979, 3255,
-     3255, 3255, 2980, 2981, 2985, 2986, 2982, 2987, 2988, 2989,
-     2993, 2990, 2997, 3006, 2994, 3007, 3014, 3010, 3255, 3008,
-     3012, 3020, 3021, 3018, 3017, 3025, 3026, 3027, 3028, 3029,
-     3033, 3034, 3038, 3035, 3036, 3045, 3048, 3051, 3047, 3060,
-     3058, 3061, 3059, 3062, 3069, 3063, 3067, 3255, 3065, 3071,
-
-     3072, 3073, 3074, 3079, 3076, 3087, 3092, 3089, 3096, 3083,
-     3098, 3099, 3100, 3085, 3105, 3101, 3255, 3108, 3109, 3111,
-     3112, 3115, 3117, 3118, 3121, 3124, 3119, 3128, 3133, 3134,
-     3255, 3135, 3255, 3255, 3138, 3125, 3129, 3146, 3150, 3255,
-     3255, 3255, 3163, 3170, 3177, 3184, 3191,   94, 3198, 3205,
-     3212, 3219, 3226, 3233, 3240, 3247
+       49,  356,  354,  353,  361,  363,  362,  366,  372,  365,
+      377,  386,  382,  394,  401,  388,  387,  403,  399,  407,
+      410,  406,  182,  395,  411,  342,  412,  409,  414,  416,
+      418,  419,  427,  423,  426,  425,  435,  429,  433,  441,
+      436,  444,  447,  446,  450,  451,  457,  455,  453,  456,
+
+      462,  461,  464,  471,  476,  477,  479,  465,  475,  482,
+      483,  484,  494,  488,  491,  495,  501,  497,  498,  499,
+      505,  503,  506,  507,  508,  509,  515,  519,  513,  512,
+      514,  527,  528,  530,  531,  536,  537,  538,  539,  543,
+      545,  546,  549,  547,  553,  561,  557,  559,  560,  566,
+      567,  569,  575,  571,  568,  572,  579,  581,  582,  584,
+      602,  591,  587,  590,  574,  597,  599,  608,  600,  607,
+      609,  615,  613,  623,  630,  626,  627,  631,  634,  635,
+      636,  639,  638,  641,  643,  644,  646,  647,  657,  659,
+      660,  670,  666,  667,  648,  673,  664,  674,  681,  679,
+
+      680,  682,  683,  684,  686,  688,  692, 3281,  695,  690,
+      697,  698,  701, 3281,  699,  702,  703,  710,  704,  721,
+      706,  708,  714,  723,  718,  720,  726,  728,  748,  731,
+      729,  739,  737,  732,  757,  736,  759,  738,  743,  750,
+      762,  741,  766,  767,  768,  769,  773,  775,  778,  779,
+      772,  783,  780,  786,  788,  789,  793,  794,  800,  801,
+      803,  806,  812,  809,  816,  822,  811,  818,  820,  826,
+      825,  828,  819,  835,  831,  827,  834,  843,  838,  840,
+      850,  848,  849,  847,  853,  855,  859,  860,  862,  866,
+      863,  867,  872,  877,  865,  871,  879,  878,  886,  893,
+
+      894,  887,  895,  902,  903,  880,  904,  890,  900,  907,
+      909,  910,  911,  912,  915,  916,  922,  919,  923,  921,
+      928,  930,  932,  934,  936,  937,  940,  943,  941,  942,
+      951,  952,  954,  956,  955,  958,  962,  957,  964, 3281,
+      972,  971,  968,  974,  976,  977,  979, 1005, 3281,  981,
+     3281, 3281,  982, 3281, 3281,  985,  983,  986,  993, 1028,
+      997,  991,  987,  998, 1007, 1008, 1018, 1011, 1020, 1000,
+     1031, 1022, 1013, 1023, 1037, 1038, 1034, 1025, 1048, 1051,
+     1057, 1059, 1055, 1056, 1060, 1061, 1063, 1065, 1064, 1067,
+     1072, 1078, 1074, 3281, 1076, 1075, 1082, 1077, 1084, 3281,
+
+     1085, 1086, 1088, 1090, 1094, 1097, 1096, 1098, 1100, 1101,
+     1099, 1107, 1113, 1103, 1111, 1127, 1129, 1126, 1112, 1128,
+     1132, 1114, 1133, 1141, 1139, 1138, 1144, 1148, 1145, 1147,
+     1150, 1151, 1154, 1152, 1153, 1155, 1178, 1159, 1160, 1161,
+     1164, 1162, 1168, 1170, 1172, 1173, 1180, 1191, 1190, 1192,
+     1193, 1197, 1205, 1208, 1198, 1201, 1211, 1212, 1217, 1215,
+     1219, 1221, 1222, 1229, 1226, 3281, 1236, 1237, 1223, 1232,
+     1233, 1239, 1243, 1244, 1246, 1247, 1248, 1249, 1251, 1255,
+     3281, 1254, 1256, 1257, 1261, 1262, 1264, 1270, 1275, 1282,
+     3281, 1285, 1286, 1278, 1283, 1271, 1289, 1288, 1294, 1295,
+
+     1296, 1297, 1301, 1304, 1305, 1293, 1312, 1306, 1308, 1310,
+     1316, 1317, 1318, 1319, 1325, 1104, 1320, 1326, 1336, 1333,
+     1335, 1338, 1339, 1340, 1345, 1342, 1346, 1343, 1344, 3281,
+      239, 1347, 1349, 1350, 1356, 1359, 1358, 1365, 1366, 1367,
+     1368, 1371, 1373, 1374, 1376, 1377, 1378, 1381, 1385, 1382,
+     1389, 1391, 1394, 1392, 1398, 1399, 1400, 1403, 1402, 1409,
+     1406, 1411, 1412, 1416, 1417, 1414, 1418, 1420, 1422, 1425,
+     1424, 1432, 3281, 1435, 1431, 1434, 1436, 1443, 1451, 1447,
+     1452, 1449, 1454, 1460, 1457, 1459, 1465, 1467, 1469, 1471,
+     1461, 1472, 1479, 1482, 1480, 1483, 1484, 1481, 3281, 1491,
+
+     1473, 1486, 1489, 1494, 1497, 1496, 1499, 1501, 1507, 1508,
+     1512, 3281, 1515, 1509, 1516, 1520, 1521, 1525, 1522, 1529,
+     1530, 1531, 1532, 1533, 1542, 1534, 1539, 1537, 3281, 1551,
+     1553, 1549, 1560, 1547, 1557, 1558, 1562, 1559, 1563, 1570,
+     1564, 1567, 1571, 1572, 1568, 1566, 1574, 1575, 1577, 1578,
+     3281, 1595, 1593, 1596, 1597, 1598, 1606, 1581, 1603, 1605,
+     1582, 1607, 1610, 1609, 1611, 1613, 1616, 1618, 1619, 1620,
+     1621, 1622, 1623, 1632, 1638, 1626, 1640, 1630, 1642, 1629,
+     1646, 1652, 1658, 1654, 3281, 1657, 1659, 1660, 1661, 1662,
+     1668, 1670, 1664, 1666, 1671, 1672, 1673, 1687, 1674, 1676,
+
+     1680, 1684, 1678, 1686, 1689, 1700, 1705, 1690, 1696, 1702,
+     1688, 1713, 1714, 1716, 1698, 1722, 3281, 1706, 3281, 1721,
+     1727, 1730, 3281, 1732, 3281, 1734, 3281, 1735, 1736, 1729,
+     1715, 1739, 1741, 1742, 1748, 1723, 1749, 1745, 1751, 1752,
+     1754, 1755, 3281, 1758, 1761, 1763, 1759, 1765, 1766, 1768,
+     1769, 1777, 1771, 1783, 1780, 1782, 1784, 3281, 1787, 1788,
+     1792, 1793, 1796, 1800, 1798, 1797, 1805, 1801, 1809, 1820,
+     1807, 1816, 1817, 1818, 1819, 1827, 1821, 1823, 1830, 1832,
+     1825, 1831, 1833, 1835, 1840, 1841, 1847, 1839, 1845, 1846,
+     3281, 1850, 1848, 1857, 1860, 1858, 3281, 3281, 1862, 1868,
+
+     1870, 1866, 1876, 1873, 1877, 1878, 1884, 1881, 1883, 1888,
+     1890, 1891, 1893, 1894, 1895, 1897, 1898, 3281, 1904, 1902,
+     1911, 1909, 1907, 1919, 1910, 1921, 3281, 3281, 1917, 1922,
+     1926, 1928, 1934, 1932, 1931, 3281, 1933, 1936, 1937, 1938,
+     1941, 1945, 1939, 1950, 1952, 1955, 1956, 1958, 1964, 1960,
+     1957, 1961, 1974, 1963, 1977, 3281, 1971, 1979, 1981, 1982,
+     1983, 1984, 1985, 1986, 1988, 1989, 1990, 1995, 2003, 1999,
+     2002, 2004, 2007, 2008, 2012, 2014, 2015, 2022, 2023, 3281,
+     2030, 2016, 2032, 2018, 2036, 2037, 2044, 2033, 2029, 2031,
+     2040, 2041, 2042, 2054, 2048, 2056, 2050, 3281, 2058, 2062,
+
+     2064, 2059, 2068, 2065, 2071, 2069, 2073, 3281, 2075, 2081,
+     2078, 2083, 2085, 2082, 2088, 2086, 2092, 2093, 2094, 2096,
+     2099, 2101, 2103, 2105, 2110, 2111, 2118, 2116, 2122, 2128,
+     2120, 2124, 2132, 2126, 2129, 2130, 2134, 2140, 2139, 2148,
+     2137, 3281, 2141, 2151, 2153, 2154, 2157, 2158, 2147, 3281,
+     2163, 3281, 2155, 3281, 2165, 2170, 2166, 2171, 2172, 2173,
+     2174, 2176, 2184, 2175, 3281, 2182, 2185, 2187, 2188, 3281,
+     2199, 3281, 3281, 2191, 2193, 2200, 2201, 2204, 2208, 2212,
+     3281, 2202, 2213, 2214, 2216, 2217, 2219, 2220, 2222, 2221,
+     2223, 2224, 3281, 2230, 2226, 2227, 2237, 3281, 2239, 2241,
+
+     2229, 2242, 2248, 2249, 2251, 2252, 2257, 2263, 2259, 3281,
+     2260, 2261, 2266, 2262, 2269, 2271, 2267, 2268, 3281, 2282,
+     2283, 3281, 2272, 2284, 2286, 3281, 2289, 3281, 2290, 2291,
+     2292, 2294, 2298, 2299, 2301, 2293, 2305, 2310, 2307, 2314,
+     2311, 3281, 3281, 2316, 2322, 2323, 2318, 2326, 2327, 2329,
+     3281, 2331, 2333, 2334, 2335, 2336, 2337, 2342, 2340, 2343,
+     2345, 2346, 2348, 2349, 3281, 2352, 2353, 2354, 2359, 2364,
+     2361, 3281, 2363, 2366, 2365, 2367, 2370, 2371, 2385, 2387,
+     2379, 2389, 2391, 2394, 2395, 2397, 2399, 2400, 3281, 2401,
+     2403, 2404, 2408, 2409, 2405, 2410, 2415, 2418, 2420, 2422,
+
+     3281, 2425, 2412, 2428, 2426, 2430, 2432, 2433, 2434, 2436,
+     2440, 2441, 2443, 2444, 2446, 2454, 2451, 3281, 2448, 3281,
+     2450, 2461, 2469, 2465, 3281, 2463, 2467, 3281, 2470, 2471,
+     2472, 2481, 3281, 2483, 2475, 2484, 2486, 2477, 2487, 2493,
+     3281, 2495, 2497, 2502, 2503, 2490, 2504, 2505, 2496, 2507,
+     2519, 2511, 3281, 2513, 2515, 2526, 2522, 2523, 3281, 3281,
+     2527, 3281, 3281, 3281, 2532, 3281, 3281, 2533, 2535, 3281,
+     2537, 3281, 2544, 2540, 2542, 2524, 2543, 3281, 2550, 3281,
+     3281, 2547, 2551, 2545, 2555, 2557, 2562, 2564, 2554, 2565,
+     2567, 2568, 2569, 2570, 2571, 2573, 2576, 2574, 2577, 2582,
+
+     2578, 2584, 2586, 2587, 2588, 2590, 2606, 3281, 3281, 2594,
+     2599, 2596, 2601, 2603, 2607, 2608, 2609, 3281, 2616, 2611,
+     2622, 2613, 2619, 2623, 2624, 2625, 2631, 2638, 2632, 2634,
+     2635, 2636, 3281, 2639, 3281, 3281, 2642, 2643, 2648, 2645,
+     2651, 3281, 2653, 2655, 2664, 2666, 3281, 3281, 3281, 2667,
+     2657, 2661, 2671, 2672, 2659, 2673, 3281, 2675, 2680, 2682,
+     2683, 2689, 2692, 2699, 2696, 2701, 3281, 3281, 2702, 2703,
+     2704, 2684, 2705, 2706, 2708, 2710, 3281, 2712, 2711, 2717,
+     2716, 2718, 2723, 2719, 3281, 2721, 2726, 2731, 2733, 2734,
+     2736, 2737, 2739, 3281, 2738, 2741, 3281, 2749, 3281, 3281,
+
+     2742, 2751, 2753, 2758, 2760, 2764, 2755, 2761, 2770, 2767,
+     2768, 3281, 3281, 2771, 3281, 3281, 2769, 2774, 2776, 2778,
+     2781, 2783, 2780, 2784, 2785, 2788, 2790, 2793, 2796, 2797,
+     2800, 2802, 2803, 2805, 3281, 2807, 3281, 2806, 2813, 2814,
+     2819, 3281, 2820, 2815, 2808, 3281, 3281, 3281, 2816, 2830,
+     2832, 3281, 2834, 2835, 2822, 2837, 2836, 2845, 2838, 2847,
+     3281, 2848, 2849, 2851, 2852, 2853, 2855, 2857, 2858, 2860,
+     2859, 2869, 2861, 2873, 2870, 3281, 2878, 2874, 2879, 2882,
+     2884, 2886, 2887, 2888, 2890, 2891, 2892, 2893, 2900, 2896,
+     2907, 3281, 2910, 2898, 3281, 2911, 2904, 2915, 2922, 2924,
+
+     2926, 2927, 3281, 2929, 3281, 2930, 3281, 2934, 2935, 3281,
+     3281, 2936, 2938, 2941, 3281, 2942, 2939, 2943, 2945, 2948,
+     2949, 3281, 3281, 2950, 2952, 2956, 2960, 3281, 3281, 3281,
+     2966, 3281, 2967, 3281, 2973, 2953, 3281, 2958, 2975, 2961,
+     2977, 2978, 2979, 2980, 2981, 2983, 3281, 3281, 2988, 3281,
+     2990, 3281, 2991, 2993, 3281, 3001, 2995, 2997, 2998, 3004,
+     3005, 3281, 3281, 3281, 3006, 3007, 3011, 3012, 3008, 3013,
+     3014, 3015, 3019, 3016, 3023, 3032, 3020, 3033, 3040, 3036,
+     3281, 3034, 3038, 3046, 3047, 3044, 3043, 3051, 3052, 3053,
+     3054, 3055, 3059, 3060, 3064, 3061, 3062, 3071, 3074, 3077,
+
+     3073, 3086, 3084, 3087, 3085, 3088, 3095, 3089, 3093, 3281,
+     3091, 3097, 3098, 3099, 3100, 3105, 3102, 3113, 3118, 3115,
+     3122, 3109, 3124, 3125, 3126, 3111, 3131, 3127, 3281, 3134,
+     3135, 3137, 3138, 3141, 3143, 3144, 3147, 3150, 3145, 3154,
+     3159, 3160, 3281, 3161, 3281, 3281, 3164, 3151, 3155, 3172,
+     3176, 3281, 3281, 3281, 3189, 3196, 3203, 3210, 3217,   94,
+     3224, 3231, 3238, 3245, 3252, 3259, 3266, 3273
     } ;
 
-static yyconst flex_int16_t yy_def[1657] =
+static yyconst flex_int16_t yy_def[1669] =
     {   0,
-     1642,    1, 1643, 1643, 1644, 1644, 1645, 1645, 1646, 1646,
-     1647, 1647, 1642, 1648, 1642, 1642, 1642, 1642, 1649, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1650,
-     1642, 1642, 1642, 1650, 1651, 1642, 1642, 1642, 1651, 1652,
-     1642, 1642, 1642, 1642, 1652, 1653, 1642, 1642, 1642, 1653,
-     1654, 1642, 1655, 1642, 1654, 1654, 1648, 1648, 1642, 1656,
-     1649, 1656, 1649, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1650, 1650, 1651, 1651, 1652, 1652, 1642, 1653,
-     1653, 1654, 1654, 1655, 1655, 1654, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1654, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1654, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1654, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1654, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1642, 1642, 1648,
-     1642, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1654, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1654, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1642, 1648, 1648, 1648, 1642, 1648, 1642, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1642, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1642, 1648, 1642, 1648, 1642, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1642, 1648, 1642, 1642, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648,
-     1648, 1642, 1648, 1648, 1648, 1642, 1648, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1642, 1648,
-     1648, 1648, 1648, 1642, 1648, 1648, 1642, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1648, 1648, 1648, 1642, 1642, 1648,
-     1642, 1642, 1648, 1642, 1642, 1648, 1648, 1642, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1642, 1642, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1642, 1642, 1648, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1642, 1648, 1642, 1642, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1648, 1642, 1642, 1642, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1642, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1642, 1648, 1648, 1642, 1648, 1642, 1642, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-
-     1642, 1648, 1642, 1642, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1642, 1648, 1642, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1642, 1642, 1642, 1648, 1648, 1648, 1642,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1642, 1648, 1642, 1648, 1642, 1648, 1648, 1642, 1642, 1648,
-
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1642, 1648, 1648, 1648, 1648, 1642, 1642, 1642, 1648, 1642,
-     1648, 1642, 1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1642, 1642, 1648, 1642, 1648, 1642,
-     1648, 1648, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1642,
-     1642, 1642, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648,
-
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1642, 1648, 1648, 1648,
-     1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648, 1648,
-     1642, 1648, 1642, 1642, 1648, 1648, 1648, 1648, 1648, 1642,
-     1642,    0, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642
+     1654,    1, 1655, 1655, 1656, 1656, 1657, 1657, 1658, 1658,
+     1659, 1659, 1654, 1660, 1654, 1654, 1654, 1654, 1661, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1662,
+     1654, 1654, 1654, 1662, 1663, 1654, 1654, 1654, 1663, 1664,
+     1654, 1654, 1654, 1654, 1664, 1665, 1654, 1654, 1654, 1665,
+     1666, 1654, 1667, 1654, 1666, 1666, 1660, 1660, 1654, 1668,
+     1661, 1668, 1661, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1662, 1662, 1663, 1663, 1664, 1664, 1654, 1665,
+     1665, 1666, 1666, 1667, 1667, 1666, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1666, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1666, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+     1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1666, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1666, 1660, 1660, 1660, 1660, 1654,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660,
+     1654, 1654, 1660, 1654, 1654, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1654,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1666, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654,
+     1666, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1654, 1660,
+     1660, 1660, 1654, 1660, 1654, 1660, 1654, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1654, 1654, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1654, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654,
+     1660, 1654, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1654,
+     1660, 1654, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1654, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660,
+     1660, 1654, 1660, 1660, 1660, 1654, 1660, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1654,
+     1660, 1660, 1660, 1660, 1654, 1660, 1660, 1654, 1660, 1660,
+     1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660, 1654, 1654,
+     1660, 1654, 1654, 1654, 1660, 1654, 1654, 1660, 1660, 1654,
+     1660, 1654, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1654,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1654, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1654, 1660, 1654, 1654, 1660, 1660, 1660, 1660,
+     1660, 1654, 1660, 1660, 1660, 1660, 1654, 1654, 1654, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1654, 1654, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1654, 1660, 1660, 1654, 1660, 1654, 1654,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1654, 1660, 1654, 1654, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1654, 1660, 1654, 1660, 1660, 1660,
+     1660, 1654, 1660, 1660, 1660, 1654, 1654, 1654, 1660, 1660,
+     1660, 1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1654, 1660, 1654, 1660, 1654, 1660, 1660, 1654,
+     1654, 1660, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1654, 1660, 1660, 1660, 1660, 1654, 1654, 1654,
+     1660, 1654, 1660, 1654, 1660, 1660, 1654, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1654, 1654, 1660, 1654,
+     1660, 1654, 1660, 1660, 1654, 1660, 1660, 1660, 1660, 1660,
+     1660, 1654, 1654, 1654, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1654, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1654, 1660,
+     1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660, 1660,
+     1660, 1660, 1654, 1660, 1654, 1654, 1660, 1660, 1660, 1660,
+     1660, 1654, 1654,    0, 1654, 1654, 1654, 1654, 1654, 1654,
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654
     } ;
 
-static yyconst flex_int16_t yy_nxt[3295] =
+static yyconst flex_int16_t yy_nxt[3321] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -993,7 +996,7 @@ static yyconst flex_int16_t yy_nxt[3295] =
       107,  103,  110,   68,  113,  111,  139,  108,  114,  115,
        68,  121,  169,  118,   68,  122,  127,  119,  127,  127,
 
-      239,  127,  120,   72,   68,   72,   72,  132,   72,  132,
+      240,  127,  120,   72,   68,   72,   72,  132,   72,  132,
       132,   68,  132,   67,  135,   67,   67,   68,   67,   68,
        68,   68,  141,   67,   72,  142,   72,   72,  147,   72,
        68,  143,   68,   68,   72,   73,   68,   68,  144,  145,
@@ -1009,334 +1012,336 @@ static yyconst flex_int16_t yy_nxt[3295] =
       192,  125,  130,  130,  190,  198,   68,  127,  193,  127,
       127,  132,  127,  132,  132,   72,  132,   72,   72,  133,
        72,  197,  194,   68,  196,   68,  135,   68,  195,   68,
-      201,   68,   68,  204,  131,   68,  202,  203,   68,  205,
+      201,   68,   68,  204,   68,   68,  202,  203,   68,  205,
       199,   68,   68,  212,   68,   68,   68,  200,   68,  214,
-      213,  217,  216,   68,   68,   68,   68,  224,   68,  218,
-       68,  206,   68,  223,  227,   68,  207,  220,  219,   68,
-      221,  208,  222,   68,  228,   68,  209,   68,   68,  229,
-
-      225,  226,  210,  211,   68,  243,  231,  232,  234,   68,
-      230,   68,  236,   68,  235,  237,  233,   68,   68,   68,
-       68,   68,   68,   68,   68,  238,   68,  241,   68,  246,
-       68,  250,   68,   68,   68,  252,   68,  254,  244,  240,
-       68,  253,   68,   68,  242,   68,  245,  261,  248,  249,
-      247,  258,  251,   68,  257,  256,   68,  260,  133,  255,
-       68,   68,   68,  266,  262,   68,   68,   68,   68,  265,
-      263,  267,   68,   68,  259,   68,   68,  273,  272,  264,
-      268,  270,   68,  274,   68,  269,   68,   68,  275,   68,
-      276,   68,   68,   68,  279,  282,  280,  271,  277,  278,
-
-       68,   68,  281,   68,  284,   68,  286,   68,   68,   68,
-      285,   68,   68,   68,  291,  283,   68,   68,  295,   68,
-       68,  293,   68,   68,   68,  290,  288,  287,   68,   68,
-      289,  294,  296,   68,  292,   68,  297,  298,  306,   68,
-      299,  302,  300,  301,   68,   68,   68,  303,  304,  305,
-       68,  312,   68,  307,   68,   68,  314,   68,   68,   68,
-      310,  308,  313,  311,  309,  317,   68,   68,   68,   68,
-       68,   68,  319,  315,  320,   68,  321,   68,  327,  316,
-       68,   68,  322,   68,  326,  323,  318,   68,  324,   68,
-      325,   68,  328,   68,  333,   68,  331,   68,  329,  133,
-
-      330,   68,   68,  332,  344,   68,  380,  335,   68,   68,
-      334,   68,  343,  336,  337,   68,  347,  349,   68,   68,
-      345,  346,   68,  338,   68,  339,  340,  341,  348,  350,
-      342,  353,  356,  351,  352,  354,   68,   68,  355,   68,
-       68,  359,  360,   68,   68,  358,   68,   68,   68,   68,
-       68,  365,   68,   68,  366,  357,   68,   68,   68,  386,
-       68,  364,  362,  361,  363,  369,  371,  368,   68,  374,
-      367,   68,  375,  372,   68,  373,   68,   68,  370,   68,
-      376,  378,   68,  377,  381,   68,   68,   68,   68,   68,
-       68,   68,  385,  129,   68,  379,  383,   68,  384,  387,
-
-       68,  389,   68,  390,   68,  392,  382,   68,   68,   68,
-       68,  388,  391,  393,   68,   68,  400,   68,   68,  394,
-      398,   68,  399,   68,  397,   68,   68,   68,  395,  396,
-      404,   68,   68,   68,   68,  401,  406,   68,  416,   68,
-      402,  407,  405,   68,  403,   68,  420,   68,  417,  415,
-      418,  408,   68,  409,  414,   68,  422,  419,  410,   68,
-      411,   68,   68,   68,  421,   68,   68,   68,  412,   68,
-       68,  428,   68,  424,  423,  133,  429,  425,  413,  432,
-       68,  433,  426,   68,  434,  431,   68,  427,  430,  437,
-       68,   68,   68,   68,   68,   68,  436,  440,  435,   68,
-
-       68,  445,  442,  438,  439,  446,   68,  450,  441,  448,
-       68,  443,   68,  447,  444,  449,   68,  451,   68,  452,
-       68,  453,   68,   68,   68,   68,   68,  457,  455,  456,
-       68,   68,   68,  461,  458,   68,  459,   68,   68,   68,
-      462,  128,   68,  454,  460,  464,   68,  467,  469,   68,
-      465,  463,   68,   68,  466,  471,   68,  468,  470,   68,
-      472,   68,   68,   68,  474,   68,  479,  476,   68,   68,
-       68,   68,  126,  481,  475,  480,   68,  478,   68,  477,
-       68,  482,  473,   68,   68,  483,  484,  487,  486,   68,
-      485,  489,  491,   68,  488,  490,   68,   68,   68,  495,
-
-       68,  493,  492,  496,   68,   68,   68,  497,  499,   68,
-       68,   68,   68,   68,   68,   68,  494,  504,   68,  498,
-       68,   68,   68,  505,  509,   68,  511,  500,  501,   68,
-      502,   68,  503,  506,  510,  512,  508,   68,  507,   68,
-       68,  516,   68,   68,  514,   68,   68,   68,  513,   68,
-      518,  519,  520,   68,  521,  517,  515,   68,  522,   68,
-       68,  133,   68,   68,  524,  523,  527,   68,  525,   68,
-      528,   68,  531,  529,  526,   68,  533,   68,   68,  534,
-      532,   68,   68,  530,   68,   68,   68,   68,  539,  535,
-      537,   68,   68,   68,   68,  547,  536,  548,  549,  124,
-
-      545,  550,  538,   68,  546,   68,   68,   68,  540,   68,
-      558,  559,  541,   68,  563,  542,  561,  560,  562,   68,
-       68,  564,  543,   68,  565,  544,   68,  551,  552,   68,
-      553,   68,  566,  554,   68,   68,   68,  567,  555,   68,
-      568,   68,  572,  569,  556,  557,   68,  571,  570,   68,
-      577,  573,  576,   68,  575,   68,  578,   68,   68,   68,
-      579,   68,   68,   68,  574,  580,  581,   68,   68,   68,
-      582,  588,  584,  586,   68,  585,   68,  587,   68,   68,
-       68,  583,  590,   68,  592,   68,   68,   68,   68,   68,
-      594,   68,   68,  597,  591,   68,   68,  589,  595,   68,
-
-      593,   68,   68,  603,   68,  602,   68,  596,   68,   68,
-      598,  599,   68,  606,  600,  601,   68,  611,  608,  604,
-      607,  605,   68,  610,  612,   68,   68,   68,  609,   68,
-      613,   68,  616,   68,  618,  614,  619,  615,   68,   68,
-       68,   68,  620,  623,   68,  625,   68,   68,   68,  626,
-      133,   68,  617,  622,   68,  628,  621,   68,   68,   68,
-       68,   68,  627,  638,  624,   68,   68,   68,   68,   68,
-       68,  642,  631,  629,   68,  639,   68,   68,  645,  659,
-      641,  630,   68,  643,  644,  632,  640,  633,   68,   68,
-       68,  634,  646,  635,  647,  649,   68,  651,  636,   68,
-
-       68,  654,  650,  637,  648,  653,   68,   68,  655,   68,
-      652,   68,  662,  656,  660,  657,   68,  663,   68,   68,
-       68,   68,   68,  664,   68,  661,  669,  665,  668,   68,
-      670,   68,   68,  658,  666,   68,   68,  674,   68,  671,
-      667,   68,   68,  672,  673,   68,   68,   68,   68,  682,
-      676,  678,   68,   68,   68,   68,  681,  675,   68,   68,
-       68,  677,  680,  686,  687,  679,   68,   68,  685,  689,
-       68,  683,  688,  684,   68,  690,  691,   68,  692,   68,
-      696,   68,  693,   68,   68,  694,  698,   68,  695,   68,
-      699,  700,   68,   68,  697,  703,   68,  701,  702,   68,
-
-      706,   68,   68,   68,   68,  705,   68,  709,   68,   68,
-       68,  707,  704,   68,   68,   68,   68,   68,  714,  715,
-      717,  708,   68,  713,  710,   68,  720,  711,  719,  712,
-      721,   68,   68,  716,   68,   68,  718,  722,  723,   68,
-       68,  727,   68,   68,   68,   68,   68,   68,  725,   68,
-       68,  724,  726,  729,  735,   68,   68,   68,  736,   68,
-      728,  732,  730,   68,  733,   68,   68,   68,   68,  738,
-      734,  731,  737,  740,   68,  742,  744,  745,   68,  739,
-       68,  741,   68,   68,   68,  749,   68,   68,  747,  743,
-       68,  750,   68,   68,  751,  753,   68,   68,  746,   68,
-
-       68,   68,  756,  748,  752,  755,  758,   68,   68,   68,
-       68,  754,  760,   68,   68,   68,  761,   68,  757,  759,
-      764,   68,   68,   68,  762,  763,  765,   68,  769,   68,
-      773,   68,   68,   68,  766,   68,   68,  775,  767,  768,
-      772,  777,  770,  771,  778,   68,  774,   68,  779,   68,
-       68,  783,   68,  776,   68,  784,   68,  785,   68,  782,
-      781,   68,  787,  786,  780,   68,   68,   68,   68,   68,
-      792,  789,  793,   68,  788,   68,   68,   68,  794,   68,
-      795,  790,   68,   68,  802,   68,  791,   68,  796,  801,
-       68,   68,   68,  797,  800,  798,   68,  799,   68,  806,
-
-      803,  804,  810,   68,   68,   68,  807,  812,   68,  805,
-       68,   68,   68,  813,  808,   68,  814,  816,   68,  811,
-      818,   68,   68,  809,  815,  820,   68,  819,   68,   68,
-       68,   68,  817,  822,   68,  821,  824,  823,   68,  825,
-      827,  829,   68,   68,   68,  830,   68,   68,  826,  828,
-       68,  832,  831,  833,   68,   68,   68,  836,   68,   68,
-       68,  839,  834,   68,   68,  835,   68,   68,   68,  843,
-       68,   68,   68,   68,   68,  837,  856,  847,   68,  849,
-      840,   68,  838,  841,  844,  842,  850,  852,   68,  846,
-      851,   68,   68,   68,   68,  845,  848,   68,  857,  854,
-
-      853,   68,  855,   68,  858,   68,   68,   68,   68,   68,
-       68,  862,   68,  865,   68,   68,   68,   68,   68,   68,
-      859,   68,   68,  861,  868,  863,  872,  874,  864,  860,
-      866,  869,  870,  867,  871,   68,  875,   68,   68,   68,
-      879,   68,  873,   68,  881,  878,  876,  882,  880,   68,
-       68,  883,   68,  877,  884,   68,   68,   68,  888,   68,
-      887,  885,  889,   68,  890,   68,   68,   68,   68,   68,
-       68,  886,  896,   68,   68,  895,   68,   68,  891,   68,
-       68,   68,   68,  904,   68,  892,   68,  894,  901,  897,
-       68,  905,  898,  893,  906,  899,  903,  907,  900,   68,
-
-       68,  902,  910,   68,   68,   68,   68,  914,  908,  911,
-      912,   68,   68,   68,   68,  917,  918,   68,  916,   68,
-      909,   68,  919,   68,   68,  913,  920,   68,   68,  915,
-       68,  921,   68,  922,  923,  926,   68,   68,  925,  928,
-       68,   68,  924,   68,  930,   68,   68,   68,   68,   68,
-      933,  927,   68,  935,   68,   68,  932,  929,   68,  938,
-       68,   68,   68,  931,  942,   68,  934,  936,  937,  944,
-      943,  946,  939,   68,   68,  940,   68,  948,   68,   68,
-      941,  945,   68,   68,  951,  949,   68,  947,   68,   68,
-       68,  957,  954,   68,   68,  955,   68,   68,  952,  958,
-
-       68,   68,  959,   68,  962,  960,  950,  956,  953,  963,
-       68,  964,   68,   68,   68,  961,  966,  969,  968,   68,
-       68,  965,   68,  972,   68,  971,   68,   68,   68,   68,
-       68,  973,  967,  980,   68,   68,   68,   68,   68,   68,
-       68,   68,  970,   68,  977,  974,  978,  985,  975,  976,
-      979,   68,   68,  989,   68,  981,  982,  988,  984,   68,
-      983,  986,  990,   68,  987,   68,   68,  992,  991,   68,
-       68,  998,  999,   68,  993,   68,   68,   68,  995,  997,
-       68,  996,   68,   68,   68,  994,   68, 1006,   68,   68,
-     1001,   68, 1009,   68, 1011, 1000, 1003,   68, 1002,   68,
-
-       68,   68, 1005,   68, 1007, 1014, 1012, 1008, 1004, 1010,
-       68, 1018,   68, 1013, 1015, 1016,   68,   68,   68, 1022,
-       68, 1017,   68,   68,   68,   68,   68,   68,   68, 1019,
-     1026,   68, 1027, 1028,   68, 1020, 1023, 1021,   68, 1029,
-     1024, 1033,   68, 1025,   68,   68, 1032, 1030, 1031,   68,
-     1037,   68,   68,   68,  133,   68,   68, 1035, 1034, 1040,
-     1065, 1036,   68, 1038, 1041,   68,   68, 1043,   68, 1042,
-     1039, 1044, 1045,   68,   68,   68,   68,   68,   68,   68,
-     1047,   68,   68,   68, 1051, 1048, 1046, 1056,   68, 1049,
-     1052, 1057,   68, 1050,   68,   68,   68,   68, 1055, 1061,
-
-       68,   68, 1054, 1053, 1063,   68, 1064,   68,   68,   68,
-     1066, 1067, 1069, 1058, 1059,   68,   68, 1060, 1068, 1070,
-       68, 1062,  131,   68,   68, 1072,   68,   68, 1073,   68,
-     1074,   68,   68,   68, 1071,   68, 1079, 1083,   68,   68,
-     1080, 1075, 1076, 1077,   68, 1085,   68,   68, 1078, 1088,
-       68, 1081,   68, 1082, 1089,   68, 1087,   68,   68, 1084,
-       68, 1091, 1090,   68, 1093,   68, 1086, 1097,   68,   68,
-     1096,   68,   68, 1100,   68,   68, 1095,   68, 1099,   68,
-     1101,   68,   68, 1092, 1094,   68, 1102,   68, 1098, 1103,
-       68, 1107, 1109,   68, 1104,   68, 1108, 1106, 1112,   68,
-
-     1105, 1110, 1115,   68, 1116,   68, 1111,   68, 1117, 1119,
-       68,   68, 1118,   68,   68, 1122, 1113, 1114,   68,   68,
-       68,   68,   68, 1121, 1127, 1124,   68, 1129,   68,   68,
-     1123, 1125,   68,  129,   68,   68, 1120, 1131, 1132,   68,
-     1130, 1133,   68,   68, 1137,   68,   68, 1126, 1128, 1134,
-     1135,   68, 1136,   68,   68,   68, 1138, 1141,   68,   68,
-       68,   68,  128,   68,   68, 1139, 1140, 1146, 1143, 1147,
-       68, 1148,   68,   68, 1150, 1142,   68,   68, 1144,   68,
-     1145, 1155,   68,   68, 1149, 1151, 1153,   68, 1154, 1158,
-     1152,   68,   68, 1160,   68,   68,   68, 1161, 1156, 1162,
-
-       68, 1157,   68, 1163,   68, 1165,   68,   68, 1159,   68,
-       68,   68,   68,   68,   68, 1166,   68,   68, 1174, 1173,
-       68, 1168, 1164, 1169, 1170, 1171,   68,   68, 1167, 1176,
-     1178,   68,   68, 1172,   68, 1175, 1181, 1180,   68,   68,
-     1177,   68,   68, 1182, 1183, 1186,   68,   68,   68,   68,
-       68, 1187,   68, 1179, 1190,   68,   68,   68, 1194, 1184,
-     1191, 1192, 1185, 1189, 1193,   68, 1188,   68,   68, 1196,
-       68,   68, 1197, 1198, 1195,   68,   68,   68,   68,   68,
-       68, 1202,   68, 1199, 1203, 1207,   68,   68,   68, 1206,
-       68, 1200, 1201, 1212, 1204,   68, 1208, 1209,   68, 1211,
-
-       68, 1210, 1205, 1213, 1214,   68,   68,   68, 1215, 1217,
-       68,   68, 1218,   68,   68, 1216,   68, 1222,   68, 1219,
-       68, 1221,   68,   68,   68, 1224,   68,   68,   68, 1227,
-       68, 1220, 1230,   68, 1231,   68,   68,   68, 1226, 1223,
-       68, 1233,   68, 1229, 1228, 1225,   68,   68,   68,   68,
-     1232, 1242,   68,   68, 1234,   68, 1235,   68, 1243,   68,
-     1240,   68,   68, 1236,  126, 1238, 1237, 1245, 1239,   68,
-     1241, 1282, 1244,   68, 1246,   68, 1247, 1248,   68, 1249,
-       68, 1253, 1250, 1251,   68, 1252,   68, 1254,   68, 1255,
-       68,   68, 1256, 1258,   68,   68, 1257, 1260,   68,   68,
-
-       68,   68,   68, 1264, 1263,   68, 1262, 1266,   68, 1268,
-       68, 1269,   68,   68, 1259,   68, 1271, 1261, 1265,   68,
-       68,   68,   68,   68, 1267,   68, 1274,   68, 1272,   68,
-       68,   68, 1273, 1283, 1278,   68, 1276,   68,   68, 1270,
-     1280, 1284, 1279,   68, 1281,   68, 1277, 1275,   68, 1287,
-     1285, 1288, 1286,   68, 1289,   68,   68,   68,   68,   68,
-     1291, 1293, 1290,   68, 1294, 1296,   68, 1292, 1297,   68,
-       68,   68, 1299,   68,   68, 1300,   68, 1295,   68, 1303,
-     1304,   68,   68,   68, 1298, 1305, 1307, 1301, 1306,   68,
-       68,   68,   68, 1302,   68, 1310, 1313,   68,  124, 1312,
-
-       68,   68,   68, 1308, 1309, 1317, 1314, 1316,   68,   68,
-       68, 1319, 1311, 1315,   68, 1320, 1318, 1321,   68,   68,
-     1323,   68, 1324,   68, 1322, 1325,   68, 1326,   68,   68,
-       68,   68, 1330,   68,   68,   68, 1329, 1332,   68, 1331,
-       68, 1335,   68,   68, 1327, 1334, 1336,   68, 1337,   68,
-       68, 1328, 1333,   68,   68, 1338,   68,   68,   68, 1345,
-       68, 1343,   68,   68,   68, 1340, 1341,   68, 1339, 1342,
-       68, 1346,   68,   68,   68,   68,   68,   68, 1344, 1353,
-     1349, 1354, 1355,   68, 1348,   68, 1351, 1356,   68, 1347,
-       68, 1352,   68,   68, 1350, 1357,   68,   68, 1364, 1359,
-
-       68, 1361,   68, 1358, 1365,   68,   68,   68,   68, 1366,
-     1360,   68,   68, 1362, 1363, 1367, 1374, 1368, 1373,   68,
-       68,   68,   68,   68, 1369, 1370,   68, 1371,   68,   68,
-       68, 1372,   68, 1381, 1382,   68,   68, 1376, 1375, 1385,
-       68,   68, 1377, 1387,   68,   68, 1378, 1379,   68, 1380,
-     1384, 1383, 1388,   68,   68, 1389,   68, 1391,   68,   68,
-     1386, 1392,   68, 1393,   68,   68,   68, 1390,   68,   68,
-     1395, 1397, 1413, 1398, 1400,   68, 1401,   68, 1394, 1396,
-     1399, 1402, 1403,   68, 1404,   68,   68, 1405,   68,   68,
-       68,   68,   68, 1406,   68, 1407,   68, 1408,   68,   68,
-
-       68, 1411, 1410,   68,   68,   68, 1409,   68, 1418,   68,
-     1412,   68, 1416, 1415, 1417,   68,   68, 1414, 1419, 1423,
-       68, 1425,   68, 1420,   68, 1424,   68,   68,   68, 1430,
-       68, 1421, 1426, 1427, 1422, 1428,   68,   68, 1432,   68,
-     1429,   68, 1433, 1434,   68, 1435,   68, 1436,   68,   68,
-     1439, 1440,   68,   68,   68,   68, 1431, 1441,   68, 1437,
-     1442,   68,   68, 1438,   68,   68, 1445, 1449,   68,   68,
-       68,   68,   68, 1453,   68, 1443, 1444,   68, 1451, 1448,
-     1446,   68, 1454,   68, 1447,   68,   68,   68, 1450,   68,
-     1452, 1456,   68, 1455, 1457,   68, 1459,   68, 1462, 1464,
-
-       68, 1465,   68,   68,   68, 1460,   68, 1463,   68, 1458,
-       68, 1466, 1461, 1467,   68, 1468,   68, 1471,   68, 1470,
-       68,   68,   68,   68,   68, 1473,   68, 1472, 1476, 1475,
-     1474, 1469, 1478, 1480,   68, 1479,   68,   68, 1483,   68,
-     1477, 1482,   68, 1481,   68, 1485, 1484,   68,   68,   68,
-       68, 1491,   68,   68, 1489,   68, 1488, 1493,   68,   68,
-     1486, 1495,   68,   68, 1494,   68, 1487, 1498,   68, 1499,
-       68,   68, 1492,   68,   68, 1496, 1490, 1503,   68,   68,
-     1510,   68,   68, 1501, 1500, 1497, 1504, 1505,   68, 1507,
-     1511,   68,   68, 1502,   68,   68,   68,   68, 1506,   68,
-
-     1513, 1642, 1515, 1516,   68, 1508, 1509, 1517,   68,   68,
-     1514, 1512, 1518,   68, 1519, 1520,   68,   68, 1521, 1522,
-       68,   68,   68, 1525,   68,   68, 1523,   68,   68,   68,
-     1524,   68, 1526, 1527,   68,   68,   68, 1535,   68,   68,
-     1533, 1536,   68, 1528,   68, 1529,   68,   68, 1530, 1531,
-     1537, 1538,   68,   68, 1541, 1532, 1534, 1539, 1540,   68,
-     1543,   68, 1542,   68,   68,   68,   68,   68, 1550,   68,
-     1547, 1548, 1544, 1551,   68, 1552,   68,   68, 1545,   68,
-     1554,   68, 1555,   68,   68, 1546, 1549,   68, 1557, 1553,
-       68,   68,   68,   68,   68, 1556, 1561,   68,   68,   68,
-
-       68,   68,   68, 1558, 1569,   68,   68, 1560, 1559,   68,
-     1563, 1570, 1565, 1562, 1571, 1566, 1568, 1564,   68,   68,
-       68, 1575,   68, 1572,   68, 1567,   68, 1579, 1580,   68,
-       68, 1573,   68,   68, 1574, 1577, 1576,   68,   68,   68,
-       68,   68, 1582, 1578, 1581,   68,   68,   68,   68, 1592,
-       68, 1589, 1584, 1586, 1587, 1590, 1583,   68, 1585,   68,
-       68, 1642, 1593,   68, 1588, 1594, 1591, 1597, 1595, 1598,
-       68,   68,   68,   68,   68,   68, 1602,   68, 1596,   68,
-     1599,   68, 1605,   68,   68,   68,   68, 1609,   68, 1642,
-     1600,   68, 1604, 1601, 1603,   68, 1610,   68, 1608,   68,
-
-     1612,   68, 1606, 1607,   68, 1613, 1614, 1611,   68, 1617,
-       68,   68,   68,   68, 1616, 1615, 1620,   68, 1618, 1619,
-       68,   68, 1621,   68,   68, 1623, 1624,   68, 1627,   68,
-       68,   68, 1622,   68, 1630, 1631,   68,   68, 1632, 1633,
-       68,   68, 1625, 1626, 1634,   68,   68,   68, 1628, 1629,
-       68, 1642, 1636, 1635, 1642, 1637, 1638, 1640,   68, 1642,
-     1639, 1641,   68,   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,
-
-     1642,   71,   71,   71,   71,  123,  123, 1642, 1642, 1642,
-      123,  123,  125,  125, 1642, 1642,  125, 1642,  125,  127,
-     1642, 1642, 1642, 1642, 1642,  127,  130,  130, 1642, 1642,
-     1642,  130,  130,  132, 1642, 1642, 1642, 1642, 1642,  132,
-      134,  134, 1642,  134,  134,  134,  134,   72,   72, 1642,
-       72,   72,   72,   72,   13, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642
-
+      213,  217,  216,   68,   68,   68,  243,   68,   68,  218,
+      131,  206,   68,  223,   68,  224,  207,  220,  219,   68,
+      221,  208,  222,  228,   68,  229,  209,  226,   68,   68,
+
+       68,  230,  210,  211,  225,  227,   68,   68,  232,  233,
+      235,   68,  231,   68,  237,   68,  236,  238,   68,   68,
+      234,   68,   68,   68,   68,  239,   68,  241,   68,  242,
+       68,   68,  244,  247,  251,   68,  245,   68,   68,   68,
+      253,   68,  255,  259,  254,   68,  246,   68,   68,  249,
+      250,  261,  248,   68,  258,  252,   68,  257,  133,   68,
+      256,  262,   68,   68,  267,   68,  260,   68,   68,   68,
+      264,  266,  268,   68,   68,  129,   68,   68,  263,  273,
+      269,  265,  271,   68,  274,  275,  270,   68,   68,   68,
+      276,   68,  277,  278,   68,   68,   68,  280,  272,  281,
+
+       68,  283,  279,   68,  285,  282,   68,   68,  287,   68,
+       68,   68,  286,   68,  284,   68,  292,   68,   68,   68,
+       68,   68,  297,  294,   68,   68,   68,   68,  289,  288,
+      291,   68,  290,  296,  298,  302,  293,  299,  295,   68,
+       68,  300,   68,   68,  301,  306,  307,  308,   68,   68,
+       68,   68,  309,  304,  305,   68,  314,   68,   68,   68,
+      303,   68,  316,  315,  313,   68,  312,  310,  319,   68,
+      311,   68,   68,   68,  317,  322,  321,  323,   68,   68,
+       68,   68,  329,   68,   68,  318,   68,   68,  330,  320,
+      328,   68,  324,   68,   68,  325,   68,  335,  326,   68,
+
+      327,  331,  133,   68,  332,  348,  333,  334,  346,   68,
+      337,   68,   68,  336,   68,  351,  338,  339,  345,   68,
+       68,   68,  355,  347,  349,   68,  340,   68,  341,  342,
+      343,  350,  352,  344,  353,   68,  354,  358,   68,   68,
+      361,  362,   68,   68,  360,  356,   68,   68,   68,  357,
+       68,   68,  367,   68,  359,   68,   68,  368,   68,   68,
+       68,  380,  128,  364,  365,  366,  363,  371,  373,   68,
+      370,   68,   68,  369,  374,  375,   68,  377,   68,   68,
+      372,  376,   68,  379,  378,   68,   68,  383,  384,  382,
+      381,   68,   68,   68,   68,   68,   68,  389,   68,  388,
+
+       68,  386,   68,  390,   68,  392,  387,   68,  393,   68,
+       68,   68,  385,   68,   68,   68,   68,  395,   68,  396,
+       68,  391,   68,  394,  402,  397,   68,  401,  403,  400,
+       68,  398,   68,   68,  399,   68,  404,  409,   68,  407,
+       68,   68,  405,   68,   68,  408,  419,  406,   68,   68,
+       68,   68,  421,   68,  410,   68,  420,  418,  126,  411,
+       68,  412,   68,  417,  422,  426,  413,  427,  414,   68,
+      423,   68,  425,  424,   68,  430,  415,  428,   68,   68,
+       68,   68,  436,  431,   68,  133,  416,   68,  432,  435,
+       68,   68,   68,  429,  440,   68,  434,  439,   68,  433,
+
+       68,   68,  437,  443,  441,   68,   68,  448,  445,  438,
+      442,  449,   68,   68,  451,   68,  444,  452,   68,  453,
+      454,   68,  446,   68,   68,  447,  450,  455,   68,  456,
+       68,   68,   68,  460,   68,  458,  459,   68,   68,   68,
+       68,  461,  464,   68,  457,  462,   68,   68,  465,  467,
+       68,  463,   68,  466,  468,   68,  470,  473,  469,   68,
+       68,   68,   68,  476,  475,   68,  472,   68,  471,  474,
+      478,   68,   68,  483,   68,   68,  480,   68,   68,   68,
+      479,  484,  485,   68,   68,  477,  482,  486,  481,   68,
+       68,   68,   68,  491,  487,  488,  490,  489,   68,   68,
+
+      493,  495,   68,  492,  494,   68,   68,   68,  496,  499,
+      497,  502,   68,  500,   68,   68,   68,  501,  503,   68,
+      504,   68,   68,   68,   68,  498,  508,   68,   68,  513,
+      505,   68,  509,   68,   68,   68,  515,  516,  506,  510,
+       68,  507,   68,  512,   68,  511,   68,  518,   68,   68,
+      514,  517,   68,   68,   68,   68,  522,  523,  525,  526,
+      519,  521,  524,   68,   68,  520,   68,  133,   68,   68,
+       68,  528,  531,  532,   68,  529,   68,  535,  533,  537,
+       68,  527,  530,   68,   68,  536,   68,  538,   68,   68,
+      534,   68,  539,   68,   68,   68,  541,   68,   68,   68,
+
+      554,  552,  553,   68,  540,   68,  551,  542,  549,   68,
+       68,  550,   68,  565,  562,  571,  543,   68,  566,   68,
+       68,  563,  544,   68,  564,   68,  545,  567,  124,  546,
+       68,  568,   68,  570,   68,   68,  547,   68,  569,  548,
+       68,  555,  556,   68,  557,  574,   68,  558,  572,   68,
+       68,  577,  559,  573,  575,  579,   68,  576,  560,  561,
+       68,  578,  581,   68,  582,  580,  583,   68,   68,   68,
+      584,   68,   68,   68,  585,   68,   68,   68,  591,   68,
+      586,  587,  589,  590,   68,  593,   68,   68,   68,   68,
+       68,  595,  592,  588,   68,  597,   68,   68,   68,  599,
+
+       68,  596,   68,  602,  598,  594,   68,  600,   68,   68,
+       68,   68,   68,   68,  608,   68,   68,  607,  601,   68,
+      611,  603,  604,   68,   68,   68,   68,  724,  605,  606,
+      609,  613,  610,  612,  616,  614,  617,  615,   68,   68,
+       68,   68,  618,  619,   68,   68,  623,  622,  624,  621,
+       68,   68,  620,   68,  625,  628,   68,   68,  630,   68,
+       68,  631,  133,   68,   68,   68,   68,   68,  626,  627,
+      633,   68,   68,   68,   68,  643,   68,  629,  632,  647,
+       68,  636,   68,  634,   68,   68,  133,  644,  650,  635,
+       68,  646,   68,  637,  648,  638,  649,  652,  645,  639,
+
+      651,  640,   68,   68,   68,   68,  641,  653,  654,   68,
+       68,  642,  659,   68,  131,  658,  655,   68,  665,  657,
+       68,  660,  664,   68,   68,  656,  661,   68,  662,   68,
+      668,   68,  669,   68,   68,   68,  667,  666,   68,  670,
+      673,   68,  674,  675,   68,   68,  663,  671,   68,   68,
+      679,   68,  676,  672,  677,   68,   68,  678,   68,   68,
+       68,   68,  688,   68,  684,  682,   68,   68,   68,   68,
+      680,  681,  687,   68,   68,  686,   68,  683,  692,  693,
+      685,  694,   68,   68,  691,  689,  690,   68,  696,  697,
+       68,  695,  698,  702,   68,   68,  699,   68,   68,  700,
+
+       68,   68,  701,  704,  705,   68,   68,   68,   68,   68,
+      703,  707,  708,   68,  709,  712,   68,   68,   68,  711,
+       68,  706,   68,  714,   68,  710,  713,  715,   68,   68,
+       68,   68,   68,  726,  720,  721,  716,   68,   68,  717,
+      723,  719,  718,  727,  725,   68,  729,   68,   68,  722,
+       68,   68,   68,  733,   68,   68,   68,   68,   68,   68,
+      728,   68,   68,  741,  732,  731,  742,  735,   68,  730,
+       68,   68,  734,  738,  736,  743,  739,   68,   68,   68,
+       68,  737,  740,   68,  746,   68,   68,  751,   68,   68,
+       68,  744,  745,   68,   68,  747,  753,   68,  755,  756,
+
+      749,   68,  748,   68,   68,  750,   68,  752,  757,  759,
+       68,   68,   68,  754,   68,   68,  762,  758,   68,  761,
+      764,   68,  760,   68,   68,  766,   68,  767,   68,   68,
+       68,  763,   68,  765,   68,  770,   68,   68,  768,  769,
+      775,  771,  779,   68,   68,  772,   68,   68,   68,  129,
+      774,  773,  776,  778,  781,   68,  777,  780,  784,   68,
+      783,   68,  785,   68,   68,  787,   68,  790,  782,   68,
+      791,   68,   68,   68,  788,  789,  792,   68,  786,   68,
+      794,   68,  793,   68,   68,   68,  799,  797,  796,  800,
+      795,   68,   68,   68,   68,   68,   68,  801,   68,  802,
+
+      809,   68,  798,   68,  807,  803,   68,  808,   68,   68,
+      804,   68,  805,   68,  806,  811,  810,  813,  817,   68,
+       68,   68,  814,  819,   68,  812,  821,   68,   68,  815,
+      820,  823,   68,   68,   68,  818,  825,   68,  816,  826,
+      827,   68,   68,   68,   68,   68,   68,  822,  829,   68,
+      831,   68,  830,  824,   68,  832,  835,  834,  836,   68,
+      837,   68,  828,   68,  833,   68,  838,  839,  840,   68,
+       68,   68,   68,  843,   68,   68,   68,  846,   68,   68,
+       68,  842,   68,   68,   68,  850,   68,   68,  841,   68,
+       68,  844,  854,   68,   68,  856,  847,  864,  845,  848,
+
+      851,  849,  857,  852,  853,   68,  858,   68,   68,   68,
+       68,  861,  855,  863,  859,   68,  860,   68,   68,   68,
+      867,   68,   68,   68,  862,   68,  865,  869,   68,  872,
+       68,   68,   68,   68,   68,   68,  866,  868,   68,  870,
+      879,   68,   68,  871,   68,  875,  873,  876,  877,  874,
+       68,  880,   68,  878,   68,  881,  882,  884,   68,  888,
+      885,  883,  886,  887,   68,  889,   68,  890,  891,   68,
+       68,   68,   68,   68,   68,  896,   68,  893,   68,  897,
+       68,  898,   68,   68,   68,   68,   68,  894,   68,  892,
+       68,  903,   68,  895,  904,  899,   68,  900,   68,   68,
+
+       68,   68,   68,  902,  909,  905,  914,  906,   68,  901,
+       68,  907,   68,  912,   68,  908,  911,   68,   68,  910,
+      917,  915,  913,  916,  918,   68,   68,   68,   68,  922,
+      921,  919,  920,   68,   68,   68,  923,  926,  924,   68,
+      925,   68,   68,  927,   68,  928,   68,   68,   68,  930,
+      929,   68,  932,   68,   68,  937,  931,   68,  934,  936,
+       68,   68,  938,   68,   68,  933,   68,   68,  941,  935,
+       68,   68,  943,   68,  940,   68,  946,   68,   68,  939,
+       68,   68,  950,   68,  952,  942,  951,  945,  944,   68,
+      954,  947,   68,  956,   68,   68,   68,  948,  949,   68,
+
+       68,  959,  957,  953,   68,   68,  955,  965,   68,   68,
+       68,  962,   68,   68,  963,  966,  960,   68,  967,   68,
+      972,   68,  968,  958,  970,  961,  964,  971,   68,   68,
+       68,   68,   68,   68,  977,   68,  976,   68,  969,   68,
+      979,  980,   68,   68,   68,   68,  973,   68,  974,  981,
+      975,   68,   68,   68,  988,  982,  978,   68,   68,   68,
+       68,  985,   68,  983,  986,  984,  987,  992,  128,   68,
+       68,  989,   68,  998,   68,  993,  994,  990,   68,  991,
+       68,  995,   68,  999,  996,   68,  997, 1000,   68,   68,
+       68, 1007, 1008,   68, 1001,   68,   68, 1002, 1004, 1006,
+
+       68, 1005,   68,   68, 1003,   68,   68,   68, 1015,   68,
+       68, 1018,  126, 1010,   68, 1009,   68, 1012, 1020,   68,
+     1011,   68,   68,   68, 1014, 1016, 1023, 1021, 1017,   68,
+     1013,   68, 1019,   68,   68, 1024, 1025, 1027,   68, 1022,
+       68, 1031, 1026,   68,   68,   68,   68, 1028,   68,   68,
+       68,   68, 1035,   68, 1036, 1037, 1029,   68, 1038, 1030,
+     1032, 1033,   68, 1042,   68, 1034, 1039,   68,   68,   68,
+       68, 1046,   68,   68, 1040,   68,   68, 1041, 1051, 1049,
+     1044, 1043, 1045,   68, 1047, 1050,   68, 1048, 1052,   68,
+     1054,   68, 1053,   68,   68,   68,   68,   68,   68, 1056,
+
+       68,   68,   68, 1060, 1057, 1055, 1065,   68, 1058, 1061,
+     1066,   68, 1059,  124,   68,   68,   68, 1064, 1070,   68,
+       68, 1063, 1062, 1072,   68, 1073,   68,   68,   68, 1075,
+       68, 1074, 1067, 1068,   68,   68, 1069, 1077, 1076, 1079,
+     1071,   68,   68,   68,   68,   68, 1078, 1081,   68,   68,
+     1082, 1083,   68,   68,   68, 1080,   68, 1084, 1085, 1086,
+       68, 1088,   68, 1089, 1087, 1093,   68, 1091,   68, 1095,
+       68,   68, 1090, 1098,   68, 1092,   68,   68, 1100, 1097,
+       68,   68, 1096,   68, 1103,   68, 1094,   68, 1107, 1101,
+       68, 1099, 1106,   68,   68,   68, 1110,   68,   68, 1111,
+
+       68, 1105, 1109, 1102,   68,   68,   68, 1104,   68, 1112,
+     1108,   68, 1119,   68, 1117,   68, 1122,   68, 1113, 1114,
+     1118, 1116,   68,   68, 1115, 1125, 1120, 1126,   68, 1127,
+       68, 1121,   68, 1128,   68, 1129,   68, 1124,   68, 1132,
+       68,   68,   68, 1123,   68, 1134,   68, 1137, 1131,   68,
+     1133,   68,   68,   68, 1135, 1139, 1141,   68, 1130,   68,
+       68, 1140, 1142,   68, 1143,   68,   68,   68, 1147,   68,
+       68, 1136, 1144, 1138, 1145,   68, 1146,   68,   68, 1149,
+     1148, 1151,   68,   68,   68,   68,   68,   68,   68, 1150,
+     1156, 1158, 1153, 1157,   68, 1160,   68,   68, 1152,   68,
+
+       68, 1159, 1154,   68, 1155,   68, 1161, 1168, 1163, 1164,
+     1165,   68,   68,   68,   68, 1162,   68, 1170, 1166, 1167,
+       68, 1173, 1171, 1172,   68,   68,   68, 1175,   68,   68,
+     1169,   68,   68,   68,   68,   68,   68, 1176,   68,   68,
+     1185,   68,   68, 1178, 1179, 1174, 1180, 1184, 1181,   68,
+     1177,   68, 1189,   68,   68, 1182, 1183, 1186, 1187, 1191,
+       68,   68, 1192,   68,   68, 1188, 1193, 1190, 1194,   68,
+     1197,   68,   68,   68,   68,   68, 1198, 1201,   68,   68,
+       68,   68, 1195,   68,   68, 1205, 1202, 1200, 1206, 1196,
+     1203, 1199, 1207, 1204,   68,   68,   68, 1210,   68, 1208,
+
+     1209,   68,   68,   68,   68,   68,   68, 1213, 1214, 1218,
+       68,   68, 1220,   68, 1212, 1217, 1211,   68, 1215,   68,
+     1219, 1222,   68,   68, 1221, 1225,   68, 1223,   68, 1216,
+       68, 1226, 1224, 1228,   68,   68, 1229, 1227,   68,   68,
+     1233,   68, 1230,   68, 1232,   68,   68,   68,   68,   68,
+     1235, 1241,   68, 1238,   68,   68, 1231,   68,   68, 1242,
+       68,   68, 1237, 1244,   68,   68,   68, 1239, 1234, 1236,
+     1240,   68, 1243,   68, 1253,   68,   68,   68,   68,   68,
+     1246, 1254,   68,   68, 1258, 1249, 1245, 1247, 1251, 1248,
+     1255,   68, 1250, 1256, 1252, 1257, 1259,   68, 1260,   68,
+
+     1262,   68, 1263,   68, 1261, 1264,   68,   68, 1266,   68,
+     1267,   68,   68,   68, 1270,   68,   68,   68, 1269, 1272,
+       68,   68,   68, 1274,   68, 1275, 1265,   68, 1276, 1278,
+       68, 1268,   68, 1280,   68, 1271, 1281,   68,   68, 1273,
+       68, 1283,   68, 1277,   68,   68,   68, 1284,   68, 1286,
+     1282, 1279,   68,   68, 1285,   68,   68, 1290,   68, 1288,
+       68, 1295,   68,   68, 1292, 1293,   68, 1296, 1291, 1289,
+     1287, 1298, 1294,   68, 1299,   68, 1300,   68, 1301,   68,
+     1297,   68,   68,   68,   68, 1305, 1302,   68, 1306,   68,
+     1303, 1304, 1308,   68, 1309,   68,   68, 1311,   68,   68,
+
+     1654, 1310,   68, 1313, 1307,   68, 1315,   68,   68,   68,
+     1312, 1316, 1317, 1318,   68,   68,   68,   68, 1314,   68,
+     1319, 1322, 1320,   68, 1324,   68, 1325,   68, 1323, 1326,
+     1321,   68, 1328, 1329,   68,   68,   68, 1331,   68,   68,
+     1332, 1327, 1330, 1333,   68,   68, 1335,   68, 1336,   68,
+     1334, 1337,   68, 1338,   68,   68,   68,   68, 1340,   68,
+     1341, 1342,   68,   68, 1343, 1344,   68,   68, 1347,   68,
+     1339, 1345, 1346, 1348,   68, 1349,   68,   68, 1350,   68,
+       68,   68,   68,   68, 1357,   68,   68, 1355,   68,   68,
+       68, 1352, 1353, 1354,   68, 1351,   68, 1358,   68,   68,
+
+       68, 1367,   68, 1356, 1365, 1366,   68, 1361,   68, 1360,
+     1363,   68, 1359,   68, 1362,   68, 1364, 1368,   68,   68,
+       68,   68, 1376,   68, 1373,   68, 1369, 1377,   68, 1370,
+     1371,   68, 1378, 1372,   68,   68,   68,   68, 1375, 1374,
+     1380, 1379, 1385,   68,   68, 1386,   68,   68,   68, 1381,
+       68,   68, 1383, 1382,   68,   68, 1384,   68, 1393, 1394,
+       68, 1388, 1387,   68, 1397,   68, 1389,   68, 1390,   68,
+     1391,   68, 1395,   68, 1392, 1399,   68, 1400,   68,   68,
+     1401, 1396, 1403,   68,   68,   68, 1398,   68, 1404, 1405,
+     1406, 1402,   68, 1407,   68,   68,   68, 1409, 1654, 1410,
+
+     1412,   68, 1408, 1413,   68, 1420, 1414, 1415,   68, 1417,
+     1411,   68, 1416,   68,   68,   68,   68,   68,   68, 1418,
+       68, 1419,   68,   68,   68, 1423, 1422, 1425,   68,   68,
+       68,   68, 1421,   68, 1424,   68, 1430, 1428,   68, 1429,
+     1431, 1426, 1427,   68, 1435,   68,   68, 1437,   68,   68,
+       68,   68, 1432,   68,   68, 1436, 1439, 1438, 1433, 1440,
+     1442,   68, 1434,   68, 1444,   68, 1441,   68, 1445, 1446,
+       68, 1447,   68,   68, 1443, 1448,   68, 1451, 1452,   68,
+       68,   68,   68,   68, 1453, 1449,   68, 1450,   68, 1454,
+       68, 1457,   68,   68, 1461,   68,   68,   68, 1455, 1456,
+
+       68, 1465,   68, 1466, 1463,   68, 1458, 1460,   68,   68,
+     1459, 1462,   68, 1468,   68,   68, 1464,   68,   68,   68,
+       68, 1467, 1474, 1471, 1476,   68,   68,   68,   68, 1469,
+     1477,   68,   68, 1482,   68, 1472, 1475, 1473, 1470, 1480,
+     1478, 1479,   68, 1483,   68, 1481,   68,   68,   68,   68,
+       68, 1485, 1490, 1484, 1488, 1487, 1486,   68, 1492,   68,
+       68,   68, 1495,   68,   68,   68, 1489,   68, 1496,   68,
+       68,   68,   68,   68, 1497, 1491, 1494, 1501, 1500, 1493,
+     1503,   68,   68, 1498, 1505,   68,   68, 1506, 1499, 1507,
+       68,   68, 1504, 1510,   68, 1511,   68, 1502,   68,   68,
+
+       68, 1515,   68,   68,   68,   68, 1508, 1519,   68, 1517,
+       68, 1513,   68, 1509, 1654, 1516,   68, 1512, 1522,   68,
+     1514, 1523,   68,   68, 1518, 1520, 1521,   68, 1525, 1524,
+     1526, 1654, 1527, 1528,   68, 1529,   68, 1530,   68,   68,
+     1532,   68,   68, 1533, 1531, 1534,   68,   68,   68, 1537,
+       68,   68, 1535,   68,   68,   68, 1536,   68, 1538, 1539,
+       68,   68,   68, 1547,   68,   68, 1545, 1548,   68, 1540,
+       68, 1541,   68,   68, 1542, 1543, 1549, 1550,   68,   68,
+     1553, 1544, 1546, 1551, 1552,   68, 1555,   68, 1554,   68,
+       68,   68,   68,   68, 1562,   68, 1559, 1560, 1556, 1563,
+
+       68, 1564,   68,   68, 1557,   68, 1566,   68, 1567,   68,
+       68, 1558, 1561,   68, 1569, 1565,   68,   68,   68,   68,
+       68, 1568, 1573,   68,   68,   68,   68,   68,   68, 1570,
+     1581,   68,   68, 1572, 1571,   68, 1575, 1582, 1577, 1574,
+     1583, 1578, 1580, 1576,   68,   68,   68, 1587,   68, 1584,
+       68, 1579,   68, 1591, 1592,   68,   68, 1585,   68,   68,
+     1586, 1589, 1588,   68,   68,   68,   68,   68, 1594, 1590,
+     1593,   68,   68,   68,   68, 1604,   68, 1601, 1596, 1598,
+     1599, 1602, 1595,   68, 1597,   68,   68, 1654, 1605,   68,
+     1600, 1606, 1603, 1609, 1607, 1610,   68,   68,   68,   68,
+
+       68,   68, 1614,   68, 1608,   68, 1611,   68, 1617,   68,
+       68,   68,   68, 1621,   68, 1654, 1612,   68, 1616, 1613,
+     1615,   68, 1622,   68, 1620,   68, 1624,   68, 1618, 1619,
+       68, 1625, 1626, 1623,   68, 1629,   68,   68,   68,   68,
+     1628, 1627, 1632,   68, 1630, 1631,   68,   68, 1633,   68,
+       68, 1635, 1636,   68, 1639,   68,   68,   68, 1634,   68,
+     1642, 1643,   68,   68, 1644, 1645,   68,   68, 1637, 1638,
+     1646,   68,   68,   68, 1640, 1641,   68, 1654, 1648, 1647,
+     1654, 1649, 1650, 1652,   68, 1654, 1651, 1653,   68,   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, 1654,   71,   71,   71,
+       71,  123,  123, 1654, 1654, 1654,  123,  123,  125,  125,
+     1654, 1654,  125, 1654,  125,  127, 1654, 1654, 1654, 1654,
+     1654,  127,  130,  130, 1654, 1654, 1654,  130,  130,  132,
+     1654, 1654, 1654, 1654, 1654,  132,  134,  134, 1654,  134,
+      134,  134,  134,   72,   72, 1654,   72,   72,   72,   72,
+       13, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654
     } ;
 
-static yyconst flex_int16_t yy_chk[3295] =
+static yyconst flex_int16_t yy_chk[3321] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1347,7 +1352,7 @@ static yyconst flex_int16_t yy_chk[3295] =
         9,  151,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  151,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1648,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1660,   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,
@@ -1365,7 +1370,7 @@ static yyconst flex_int16_t yy_chk[3295] =
        81,   83,   78,   68,   71,   79,   71,   71,   84,   71,
        85,   80,   86,   84,   71,   71,   87,   88,   81,   82,
        83,   89,   90,   91,   85,   89,   84,   90,   94,   97,
-       92,  626,   86,   92,   87,   88,   92,   91,   93,   95,
+       92,  631,   86,   92,   87,   88,   92,   91,   93,   95,
        98,  104,   96,   93,   95,   96,  103,   94,   99,   96,
        92,  100,   99,   97,   98,  102,  105,  106,  100,  103,
       105,  104,  102,  107,   95,  108,  109,  111,  107,  112,
@@ -1376,331 +1381,333 @@ static yyconst flex_int16_t yy_chk[3295] =
       121,  126,  131,  131,  119,  140,  139,  128,  122,  128,
       128,  133,  128,  133,  133,  134,  133,  134,  134,  136,
       134,  139,  136,  137,  138,  141,  134,  142,  137,  138,
-      143,  149,  144,  145,  130,  143,  143,  144,  145,  146,
+      143,  149,  144,  145,  176,  143,  143,  144,  145,  146,
       141,  146,  148,  148,  150,  154,  153,  142,  152,  150,
-      149,  153,  152,  155,  157,  156,  159,  159,  158,  154,
-      160,  146,  147,  158,  162,  161,  147,  156,  155,  162,
-      156,  147,  157,  163,  163,  167,  147,  177,  166,  164,
-
-      160,  161,  147,  147,  164,  177,  165,  166,  168,  169,
-      164,  165,  170,  168,  169,  171,  167,  170,  172,  174,
-      171,  175,  176,  178,  180,  172,  179,  175,  181,  180,
-      182,  183,  184,  185,  186,  185,  183,  187,  178,  174,
-      188,  186,  187,  189,  176,  193,  179,  193,  182,  182,
-      181,  191,  184,  190,  190,  189,  191,  192,  194,  188,
-      195,  196,  192,  197,  193,  199,  198,  200,  197,  196,
-      194,  198,  202,  201,  191,  203,  204,  204,  203,  195,
-      199,  201,  208,  205,  209,  200,  205,  206,  206,  207,
-      207,  210,  211,  212,  210,  213,  211,  202,  208,  209,
-
-      213,  214,  212,  215,  215,  216,  217,  218,  219,  220,
-      216,  217,  221,  222,  222,  214,  223,  224,  226,  225,
-      229,  224,  231,  226,  228,  221,  219,  218,  232,  227,
-      220,  225,  227,  230,  223,  233,  228,  229,  235,  235,
-      229,  232,  230,  231,  237,  238,  234,  233,  234,  234,
-      236,  240,  240,  236,  239,  242,  242,  241,  243,  244,
-      238,  237,  241,  239,  237,  245,  246,  247,  249,  250,
-      245,  248,  247,  243,  248,  251,  248,  254,  252,  244,
-      255,  256,  249,  252,  251,  250,  246,  253,  250,  257,
-      250,  258,  253,  259,  258,  262,  256,  261,  254,  263,
-
-      255,  265,  264,  257,  262,  296,  296,  259,  266,  268,
-      258,  260,  261,  260,  260,  272,  265,  267,  269,  270,
-      263,  264,  267,  260,  273,  260,  260,  260,  266,  268,
-      260,  271,  274,  269,  270,  272,  271,  274,  273,  275,
-      276,  277,  277,  278,  277,  276,  279,  281,  280,  282,
-      283,  282,  284,  285,  283,  275,  286,  287,  302,  302,
-      290,  281,  279,  278,  280,  286,  287,  285,  288,  290,
-      284,  289,  291,  288,  292,  289,  294,  291,  286,  293,
-      292,  294,  295,  293,  297,  298,  300,  299,  301,  297,
-      304,  308,  301,  129,  303,  295,  299,  309,  300,  303,
-
-      305,  305,  307,  307,  310,  309,  298,  311,  313,  314,
-      315,  304,  308,  310,  317,  316,  318,  319,  320,  311,
-      316,  318,  317,  321,  315,  325,  322,  323,  313,  314,
-      322,  324,  326,  329,  328,  319,  324,  332,  330,  334,
-      320,  325,  323,  330,  321,  333,  333,  331,  330,  329,
-      331,  326,  327,  327,  328,  335,  335,  332,  327,  336,
-      327,  337,  338,  339,  334,  340,  341,  342,  327,  343,
-      344,  341,  347,  337,  336,  345,  342,  338,  327,  345,
-      348,  346,  339,  349,  347,  344,  346,  340,  343,  350,
-      350,  351,  352,  354,  353,  356,  349,  353,  348,  355,
-
-      358,  357,  355,  351,  352,  357,  357,  361,  354,  359,
-      359,  356,  361,  358,  356,  360,  360,  362,  362,  363,
-      363,  364,  365,  366,  371,  367,  364,  368,  366,  367,
-      369,  370,  368,  372,  369,  373,  370,  374,  372,  377,
-      373,  127,  375,  365,  371,  375,  376,  376,  378,  379,
-      375,  374,  380,  378,  375,  380,  381,  377,  379,  382,
-      381,  383,  384,  385,  382,  386,  387,  384,  392,  388,
-      389,  387,  125,  389,  383,  388,  393,  386,  390,  385,
-      391,  390,  381,  394,  395,  391,  392,  395,  394,  396,
-      393,  397,  398,  399,  396,  397,  397,  398,  400,  401,
-
-      403,  400,  399,  401,  401,  402,  404,  402,  404,  405,
-      406,  407,  408,  409,  410,  415,  400,  409,  411,  403,
-      412,  413,  421,  410,  414,  416,  416,  405,  406,  414,
-      407,  417,  408,  411,  415,  417,  413,  418,  412,  419,
-      420,  421,  422,  423,  419,  425,  424,  428,  418,  426,
-      423,  424,  425,  427,  426,  422,  420,  429,  427,  430,
-      431,  432,  435,  444,  429,  428,  432,  433,  430,  434,
-      433,  436,  436,  434,  431,  439,  438,  440,  441,  439,
-      436,  438,  442,  435,  443,  447,  453,  450,  444,  440,
-      442,  454,  460,  459,  455,  453,  441,  454,  455,  123,
-
-      447,  456,  443,  445,  450,  458,  456,  463,  445,  465,
-      458,  459,  445,  461,  463,  445,  461,  460,  462,  462,
-      464,  464,  445,  469,  465,  445,  457,  457,  457,  470,
-      457,  466,  466,  457,  467,  468,  473,  467,  457,  471,
-      468,  472,  472,  469,  457,  457,  474,  471,  470,  475,
-      477,  473,  476,  476,  475,  477,  478,  479,  481,  480,
-      479,  478,  482,  483,  474,  480,  481,  484,  485,  487,
-      482,  488,  484,  486,  486,  485,  488,  487,  489,  491,
-      492,  483,  491,  493,  493,  494,  497,  495,  498,  499,
-      495,  500,  501,  498,  492,  502,  503,  489,  495,  504,
-
-      494,  505,  506,  504,  507,  503,  508,  497,  510,  511,
-      499,  500,  509,  507,  501,  502,  515,  512,  509,  505,
-      508,  506,  512,  511,  513,  516,  514,  517,  510,  513,
-      514,  518,  517,  519,  519,  515,  520,  516,  522,  521,
-      523,  520,  521,  524,  525,  526,  526,  528,  524,  527,
-      527,  529,  518,  523,  530,  529,  522,  531,  532,  534,
-      535,  536,  528,  534,  525,  537,  538,  551,   67,  539,
-      540,  538,  532,  530,  541,  535,  546,  542,  541,  551,
-      537,  531,  533,  539,  540,  533,  536,  533,  545,  543,
-      544,  533,  542,  533,  543,  544,  547,  546,  533,  548,
-
-      554,  549,  545,  533,  543,  548,  549,  550,  550,  552,
-      547,  553,  554,  550,  552,  550,  555,  555,  556,  557,
-      558,  559,  561,  556,  565,  553,  561,  557,  560,  560,
-      563,  566,  567,  550,  558,  563,  564,  567,  568,  564,
-      559,  569,  570,  565,  566,  572,  571,  574,  573,  575,
-      569,  571,  577,  579,  575,  578,  574,  568,  580,  581,
-      583,  570,  573,  580,  581,  572,  591,  582,  579,  583,
-      593,  577,  582,  578,  584,  584,  585,  589,  587,  590,
-      589,  585,  587,  587,  588,  588,  591,  592,  588,  596,
-      592,  593,  594,  595,  590,  596,  597,  594,  595,  598,
-
-      599,  599,  600,  601,  602,  598,  603,  602,  604,  605,
-      606,  600,  597,  607,  608,  609,  612,  610,  607,  608,
-      610,  601,  615,  606,  603,  611,  613,  604,  612,  605,
-      614,  613,  617,  609,  618,  614,  611,  615,  616,  616,
-      619,  620,  621,  623,  622,  620,  624,  627,  618,  628,
-      629,  617,  619,  622,  630,  633,  637,  639,  631,  630,
-      621,  627,  623,  631,  628,  634,  636,  632,  635,  633,
-      629,  624,  632,  635,  638,  637,  639,  640,  640,  634,
-      641,  636,  642,  643,  644,  644,  645,  646,  642,  638,
-      647,  645,  648,  649,  646,  648,  650,  651,  641,  652,
-
-      654,  653,  651,  643,  647,  650,  653,  656,  655,  657,
-      658,  649,  655,  659,  660,  661,  656,  662,  652,  654,
-      659,  663,  664,  666,  657,  658,  660,  665,  664,  671,
-      669,  667,  670,  672,  661,  669,  673,  671,  662,  663,
-      667,  673,  665,  666,  674,  675,  670,  676,  674,  674,
-      677,  678,  680,  672,  679,  679,  678,  680,  681,  677,
-      676,  682,  682,  681,  675,  683,  684,  685,  686,  695,
-      687,  684,  688,  689,  683,  687,  690,  688,  689,  691,
-      690,  685,  696,  692,  695,  694,  686,  697,  691,  694,
-      698,  699,  700,  691,  692,  691,  701,  691,  702,  699,
-
-      696,  697,  703,  703,  704,  709,  700,  705,  705,  698,
-      707,  708,  711,  707,  701,  715,  708,  710,  710,  704,
-      712,  712,  713,  702,  709,  714,  714,  713,  716,  717,
-      720,  718,  711,  716,  721,  715,  718,  717,  719,  719,
-      721,  724,  722,  729,  728,  725,  724,  726,  720,  722,
-      725,  727,  726,  728,  730,  732,  727,  731,  731,  733,
-      735,  734,  729,  736,  739,  730,  734,  737,  738,  738,
-      740,  741,  742,  743,  744,  732,  751,  742,  747,  744,
-      735,  751,  733,  736,  739,  737,  746,  747,  750,  741,
-      746,  746,  748,  753,  752,  740,  743,  749,  752,  749,
-
-      748,  754,  750,  755,  753,  756,  757,  758,  759,  760,
-      763,  757,  761,  760,  762,  766,  764,  765,  770,  774,
-      754,  767,  769,  756,  763,  758,  767,  769,  759,  755,
-      761,  764,  765,  762,  766,  768,  770,  771,  772,  773,
-      774,  783,  768,  775,  776,  773,  771,  777,  775,  776,
-      778,  778,  777,  772,  780,  780,  781,  782,  784,  786,
-      783,  781,  784,  784,  785,  785,  787,  788,  789,  790,
-      792,  782,  791,  793,  796,  790,  794,  791,  786,  795,
-      797,  798,  799,  799,  802,  787,  800,  789,  796,  792,
-      801,  800,  793,  788,  801,  794,  798,  802,  795,  803,
-
-      804,  797,  805,  805,  806,  808,  807,  809,  803,  806,
-      807,  811,  809,  813,  814,  814,  815,  824,  813,  823,
-      804,  815,  817,  817,  825,  808,  819,  819,  821,  811,
-      826,  821,  822,  822,  823,  826,  827,  829,  825,  828,
-      828,  831,  824,  830,  830,  832,  833,  834,  835,  837,
-      833,  827,  840,  835,  838,  841,  832,  829,  839,  839,
-      842,  846,  843,  831,  843,  844,  834,  837,  838,  845,
-      844,  847,  840,  848,  845,  841,  847,  849,  849,  850,
-      842,  846,  852,  853,  853,  850,  854,  848,  855,  856,
-      861,  857,  856,  859,  858,  856,  857,  866,  854,  858,
-
-      860,  862,  859,  865,  862,  860,  852,  856,  855,  863,
-      864,  864,  867,  868,  863,  861,  866,  869,  868,  870,
-      871,  865,  869,  872,  872,  871,  873,  874,  875,  876,
-      877,  873,  867,  880,  878,  881,  882,  879,  880,  883,
-      886,  888,  870,  885,  877,  874,  878,  886,  875,  876,
-      879,  894,  887,  891,  891,  881,  882,  888,  885,  892,
-      883,  887,  892,  893,  887,  895,  896,  894,  893,  897,
-      898,  899,  900,  900,  895,  901,  899,  902,  897,  898,
-      903,  897,  904,  905,  906,  896,  907,  907,  908,  909,
-      902,  912,  911,  915,  913,  901,  904,  911,  903,  913,
-
-      914,  917,  906,  921,  908,  916,  914,  909,  905,  912,
-      916,  921,  918,  915,  917,  918,  922,  923,  924,  925,
-      926,  918,  927,  929,  925,  935,  930,  931,  932,  922,
-      930,  936,  931,  932,  933,  923,  926,  924,  934,  933,
-      927,  937,  937,  929,  938,  939,  936,  934,  935,  940,
-      941,  942,  943,  944,   61,  941,  969,  939,  938,  944,
-      969,  940,  949,  942,  945,  945,  946,  947,  947,  946,
-      943,  949,  950,  950,  951,  952,  953,  954,  955,  956,
-      952,  957,  958,  959,  956,  953,  951,  960,  960,  954,
-      957,  961,  962,  955,  974,  963,  961,  964,  959,  965,
-
-      965,  966,  958,  957,  967,  967,  968,  968,  971,  976,
-      970,  971,  974,  962,  963,  970,  981,  964,  973,  975,
-      982,  966,   56,  973,  975,  977,  977,  978,  978,  980,
-      979,  983,  984,  986,  976,  979,  981,  985,  985,  992,
-      982,  980,  980,  980,  987,  987,  988,  990,  980,  991,
-      991,  983,  994,  984,  992,  993,  990,  995,  997,  986,
-      998,  994,  993,  996,  996, 1000,  988, 1001, 1002, 1007,
-     1000, 1003, 1001, 1004, 1004, 1005,  998, 1006, 1003, 1008,
-     1005, 1009, 1010,  995,  997, 1011, 1006, 1012, 1002, 1007,
-     1014, 1011, 1013, 1013, 1008, 1016, 1012, 1010, 1015, 1015,
-
-     1009, 1014, 1018, 1017, 1019, 1019, 1014, 1018, 1020, 1021,
-     1022, 1023, 1020, 1020, 1021, 1024, 1016, 1017, 1025, 1027,
-     1024, 1026, 1028, 1023, 1029, 1026, 1030, 1031, 1032, 1029,
-     1025, 1027, 1031,   51, 1034, 1040, 1022, 1034, 1035, 1035,
-     1032, 1036, 1036, 1037, 1040, 1038, 1039, 1028, 1030, 1037,
-     1038, 1042, 1039, 1044, 1046, 1048, 1042, 1047, 1047, 1049,
-     1050, 1051,   50, 1052, 1053, 1044, 1046, 1052, 1049, 1053,
-     1055, 1054, 1058, 1057, 1057, 1048, 1054, 1059, 1050, 1060,
-     1051, 1062, 1062, 1065, 1055, 1057, 1059, 1066, 1060, 1067,
-     1058, 1068, 1069, 1069, 1067, 1070, 1073, 1070, 1065, 1071,
-
-     1071, 1066, 1074, 1073, 1075, 1075, 1076, 1077, 1068, 1078,
-     1081, 1079, 1080, 1082, 1084, 1076, 1085, 1086, 1085, 1084,
-     1087, 1078, 1074, 1079, 1080, 1081, 1089, 1091, 1077, 1087,
-     1090, 1090, 1092, 1082, 1093, 1086, 1093, 1092, 1094, 1095,
-     1089, 1096, 1097, 1094, 1095, 1098, 1099, 1101, 1104, 1102,
-     1098, 1099, 1105, 1091, 1103, 1103, 1106, 1108, 1106, 1096,
-     1104, 1105, 1097, 1102, 1105, 1107, 1101, 1110, 1111, 1108,
-     1113, 1114, 1110, 1111, 1107, 1117, 1115, 1121, 1119, 1120,
-     1122, 1117, 1126, 1113, 1119, 1123, 1123, 1124, 1128, 1122,
-     1129, 1114, 1115, 1128, 1120, 1127, 1124, 1125, 1125, 1127,
-
-     1131, 1126, 1121, 1129, 1130, 1130, 1134, 1137, 1131, 1135,
-     1135, 1136, 1136, 1138, 1142, 1134, 1139, 1140, 1140, 1137,
-     1143, 1139, 1144, 1145, 1146, 1143, 1147, 1148, 1153, 1146,
-     1150, 1138, 1149, 1149, 1150, 1151, 1152, 1154, 1145, 1142,
-     1156, 1152, 1157, 1148, 1147, 1144, 1158, 1159, 1160, 1161,
-     1151, 1163, 1163, 1166, 1153, 1164, 1154, 1204, 1164, 1165,
-     1160, 1167, 1174, 1156,   45, 1158, 1157, 1166, 1159, 1171,
-     1161, 1204, 1165, 1177, 1167, 1168, 1168, 1169, 1169, 1170,
-     1170, 1174, 1171, 1172, 1172, 1173, 1173, 1175, 1175, 1176,
-     1176, 1179, 1177, 1180, 1180, 1181, 1179, 1182, 1182, 1183,
-
-     1184, 1185, 1186, 1186, 1185, 1188, 1184, 1187, 1187, 1189,
-     1189, 1191, 1191, 1192, 1181, 1193, 1193, 1183, 1186, 1194,
-     1195, 1196, 1197, 1198, 1188, 1199, 1196, 1201, 1194, 1200,
-     1208, 1202, 1195, 1205, 1200, 1203, 1198, 1206, 1205, 1192,
-     1202, 1206, 1201, 1210, 1203, 1215, 1199, 1197, 1211, 1211,
-     1208, 1212, 1210, 1213, 1213, 1216, 1212, 1220, 1218, 1219,
-     1215, 1218, 1213, 1226, 1219, 1221, 1221, 1216, 1223, 1223,
-     1224, 1225, 1225, 1227, 1228, 1226, 1231, 1220, 1229, 1229,
-     1231, 1234, 1232, 1235, 1224, 1232, 1234, 1227, 1233, 1233,
-     1236, 1237, 1238, 1228, 1239, 1237, 1240, 1243,   40, 1239,
-
-     1241, 1240, 1244, 1235, 1236, 1245, 1241, 1244, 1246, 1247,
-     1245, 1247, 1238, 1243, 1250, 1250, 1246, 1253, 1253, 1256,
-     1257, 1257, 1259, 1259, 1256, 1261, 1262, 1262, 1263, 1264,
-     1261, 1265, 1267, 1267, 1270, 1271, 1265, 1271, 1272, 1270,
-     1273, 1274, 1274, 1277, 1263, 1273, 1275, 1275, 1276, 1276,
-     1278, 1264, 1272, 1279, 1280, 1277, 1282, 1281, 1283, 1284,
-     1284, 1282, 1285, 1286, 1287, 1279, 1280, 1288, 1278, 1281,
-     1289, 1285, 1290, 1291, 1292, 1298, 1293, 1300, 1283, 1292,
-     1288, 1293, 1294, 1294, 1287, 1299, 1290, 1295, 1295, 1286,
-     1301, 1291, 1302, 1303, 1289, 1298, 1304, 1305, 1305, 1300,
-
-     1308, 1302, 1310, 1299, 1307, 1307, 1311, 1312, 1309, 1308,
-     1301, 1313, 1314, 1303, 1304, 1309, 1316, 1310, 1315, 1315,
-     1317, 1316, 1318, 1319, 1311, 1312, 1320, 1313, 1322, 1325,
-     1326, 1314, 1329, 1326, 1327, 1327, 1328, 1318, 1317, 1331,
-     1331, 1332, 1319, 1333, 1333, 1339, 1320, 1322, 1340, 1325,
-     1329, 1328, 1334, 1334, 1338, 1338, 1341, 1340, 1342, 1343,
-     1332, 1341, 1344, 1342, 1346, 1349, 1347, 1339, 1348, 1366,
-     1344, 1347, 1366, 1348, 1350, 1350, 1351, 1351, 1343, 1346,
-     1349, 1352, 1353, 1353, 1354, 1354, 1352, 1357, 1360, 1358,
-     1359, 1361, 1357, 1358, 1362, 1359, 1363, 1360, 1364, 1367,
-
-     1368, 1363, 1362, 1369, 1374, 1370, 1361, 1371, 1371, 1372,
-     1364, 1375, 1369, 1368, 1370, 1376, 1378, 1367, 1372, 1377,
-     1377, 1379, 1379, 1374, 1380, 1378, 1383, 1384, 1381, 1386,
-     1386, 1375, 1380, 1381, 1376, 1383, 1389, 1390, 1390, 1391,
-     1384, 1395, 1391, 1392, 1392, 1393, 1393, 1394, 1394, 1396,
-     1397, 1398, 1398, 1399, 1402, 1397, 1389, 1399, 1405, 1395,
-     1402, 1406, 1407, 1396, 1408, 1409, 1406, 1410, 1410, 1411,
-     1412, 1413, 1414, 1414, 1418, 1405, 1405, 1416, 1412, 1409,
-     1407, 1415, 1415, 1419, 1408, 1421, 1417, 1420, 1411, 1426,
-     1413, 1417, 1422, 1416, 1418, 1424, 1420, 1428, 1424, 1427,
-
-     1427, 1428, 1429, 1432, 1431, 1421, 1433, 1426, 1443, 1419,
-     1447, 1429, 1422, 1431, 1437, 1432, 1438, 1438, 1439, 1437,
-     1441, 1442, 1445, 1444, 1450, 1441, 1451, 1439, 1444, 1443,
-     1442, 1433, 1446, 1448, 1448, 1447, 1454, 1446, 1452, 1452,
-     1445, 1451, 1453, 1450, 1455, 1454, 1453, 1456, 1457, 1458,
-     1459, 1460, 1460, 1461, 1458, 1466, 1457, 1462, 1462, 1463,
-     1455, 1465, 1465, 1467, 1463, 1470, 1456, 1468, 1468, 1469,
-     1469, 1471, 1461, 1472, 1474, 1466, 1459, 1473, 1473, 1476,
-     1479, 1479, 1475, 1471, 1470, 1467, 1474, 1475, 1478, 1477,
-     1481, 1481, 1482, 1472, 1477, 1484, 1485, 1486, 1476,   14,
-
-     1484,   13, 1486, 1487, 1487, 1478, 1478, 1488, 1488, 1490,
-     1485, 1482, 1489, 1489, 1490, 1492, 1492, 1494, 1494, 1496,
-     1496, 1497, 1500, 1501, 1501, 1505, 1497, 1502, 1504, 1506,
-     1500, 1507, 1502, 1504, 1508, 1509, 1512, 1513, 1513, 1524,
-     1509, 1514, 1514, 1505, 1526, 1506, 1515, 1528, 1507, 1507,
-     1515, 1519, 1519, 1521, 1524, 1508, 1512, 1521, 1523, 1523,
-     1527, 1527, 1526, 1529, 1530, 1531, 1532, 1533, 1534, 1534,
-     1531, 1532, 1528, 1537, 1537, 1539, 1539, 1541, 1529, 1542,
-     1542, 1545, 1544, 1546, 1547, 1530, 1533, 1544, 1546, 1541,
-     1548, 1549, 1553, 1554, 1557, 1545, 1553, 1555, 1556, 1558,
-
-     1559, 1560, 1562, 1547, 1561, 1561, 1565, 1549, 1548, 1563,
-     1555, 1562, 1557, 1554, 1563, 1558, 1560, 1556, 1564, 1566,
-     1570, 1567, 1568, 1564, 1571, 1559, 1567, 1572, 1573, 1575,
-     1574, 1565, 1572, 1573, 1566, 1570, 1568, 1576, 1577, 1578,
-     1579, 1580, 1575, 1571, 1574, 1581, 1582, 1584, 1585, 1585,
-     1583, 1582, 1577, 1579, 1580, 1583, 1576, 1586, 1578, 1589,
-     1587,    0, 1586, 1588, 1581, 1587, 1584, 1590, 1588, 1591,
-     1591, 1593, 1590, 1592, 1594, 1596, 1595, 1599, 1589, 1597,
-     1592, 1595, 1599, 1600, 1601, 1602, 1603, 1603, 1605,    0,
-     1593, 1604, 1597, 1594, 1596, 1610, 1604, 1614, 1602, 1606,
-
-     1606, 1608, 1600, 1601, 1607, 1607, 1608, 1605, 1609, 1611,
-     1611, 1612, 1613, 1616, 1610, 1609, 1614, 1615, 1612, 1613,
-     1618, 1619, 1615, 1620, 1621, 1618, 1619, 1622, 1622, 1623,
-     1624, 1627, 1616, 1625, 1625, 1626, 1626, 1636, 1627, 1628,
-     1628, 1637, 1620, 1621, 1629, 1629, 1630, 1632, 1623, 1624,
-     1635,    0, 1632, 1630,    0, 1635, 1636, 1638, 1638,    0,
-     1637, 1639, 1639, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
-     1644, 1644, 1644, 1644, 1644, 1644, 1644, 1645, 1645, 1645,
-     1645, 1645, 1645, 1645, 1646, 1646, 1646, 1646, 1646, 1646,
-     1646, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1649, 1649,
-
-        0, 1649, 1649, 1649, 1649, 1650, 1650,    0,    0,    0,
-     1650, 1650, 1651, 1651,    0,    0, 1651,    0, 1651, 1652,
-        0,    0,    0,    0,    0, 1652, 1653, 1653,    0,    0,
-        0, 1653, 1653, 1654,    0,    0,    0,    0,    0, 1654,
-     1655, 1655,    0, 1655, 1655, 1655, 1655, 1656, 1656,    0,
-     1656, 1656, 1656, 1656, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642,
-     1642, 1642, 1642, 1642
-
+      149,  153,  152,  155,  157,  156,  176,  160,  158,  154,
+      130,  146,  147,  158,  159,  159,  147,  156,  155,  161,
+      156,  147,  157,  162,  163,  163,  147,  160,  162,  167,
+
+      166,  164,  147,  147,  159,  161,  164,  174,  165,  166,
+      168,  169,  164,  165,  170,  168,  169,  171,  172,  170,
+      167,  178,  171,  175,  177,  172,  179,  174,  180,  175,
+      181,  182,  177,  180,  183,  184,  178,  186,  185,  183,
+      185,  188,  187,  191,  186,  189,  179,  187,  191,  182,
+      182,  192,  181,  190,  190,  184,  192,  189,  194,  193,
+      188,  193,  195,  196,  197,  199,  191,  198,  200,  197,
+      194,  196,  198,  202,  201,  129,  203,  208,  193,  203,
+      199,  195,  201,  204,  204,  205,  200,  209,  205,  206,
+      206,  207,  207,  208,  210,  211,  212,  210,  202,  211,
+
+      214,  213,  209,  215,  215,  212,  213,  216,  217,  218,
+      219,  220,  216,  217,  214,  222,  222,  221,  223,  224,
+      225,  226,  227,  224,  230,  229,  231,  227,  219,  218,
+      221,  228,  220,  226,  228,  231,  223,  229,  225,  232,
+      233,  230,  234,  235,  230,  235,  235,  236,  236,  237,
+      238,  239,  237,  233,  234,  240,  241,  241,  242,  244,
+      232,  243,  243,  242,  240,  245,  239,  238,  246,  247,
+      238,  248,  249,  246,  244,  249,  248,  249,  250,  251,
+      255,  252,  253,  254,  256,  245,  265,  253,  254,  247,
+      252,  257,  250,  258,  259,  251,  260,  259,  251,  263,
+
+      251,  255,  264,  262,  256,  265,  257,  258,  263,  266,
+      260,  267,  269,  259,  261,  268,  261,  261,  262,  270,
+      268,  271,  272,  264,  266,  273,  261,  272,  261,  261,
+      261,  267,  269,  261,  270,  274,  271,  275,  276,  277,
+      278,  278,  275,  278,  277,  273,  279,  280,  281,  274,
+      283,  282,  283,  284,  276,  285,  286,  284,  287,  288,
+      295,  295,  127,  280,  281,  282,  279,  287,  288,  289,
+      286,  290,  291,  285,  289,  290,  297,  292,  293,  294,
+      287,  291,  292,  294,  293,  296,  298,  298,  299,  297,
+      296,  300,  301,  299,  302,  303,  304,  304,  305,  303,
+
+      306,  301,  310,  305,  307,  307,  302,  309,  309,  311,
+      312,  315,  300,  313,  316,  317,  319,  311,  321,  312,
+      322,  306,  318,  310,  319,  313,  323,  318,  320,  317,
+      325,  315,  326,  320,  316,  324,  321,  326,  327,  324,
+      328,  331,  322,  330,  334,  325,  332,  323,  336,  333,
+      338,  332,  333,  342,  327,  339,  332,  331,  125,  328,
+      329,  329,  340,  330,  334,  338,  329,  339,  329,  335,
+      335,  337,  337,  336,  341,  342,  329,  340,  343,  344,
+      345,  346,  348,  343,  351,  347,  329,  348,  344,  347,
+      349,  350,  353,  341,  352,  352,  346,  351,  354,  345,
+
+      355,  356,  349,  355,  353,  357,  358,  359,  357,  350,
+      354,  359,  359,  360,  361,  361,  356,  362,  362,  363,
+      364,  364,  358,  367,  363,  358,  360,  365,  365,  366,
+      368,  373,  369,  370,  366,  368,  369,  371,  370,  376,
+      372,  371,  374,  375,  367,  372,  377,  374,  375,  377,
+      379,  373,  380,  376,  377,  378,  378,  381,  377,  384,
+      382,  383,  381,  384,  383,  385,  380,  386,  379,  382,
+      385,  387,  388,  390,  389,  391,  387,  395,  390,  392,
+      386,  391,  392,  396,  393,  384,  389,  393,  388,  394,
+      398,  397,  406,  398,  394,  395,  397,  396,  399,  402,
+
+      400,  401,  408,  399,  400,  400,  401,  403,  402,  404,
+      403,  406,  409,  404,  404,  405,  407,  405,  407,  410,
+      408,  411,  412,  413,  414,  403,  412,  415,  416,  417,
+      409,  418,  413,  420,  417,  419,  419,  420,  410,  414,
+      421,  411,  422,  416,  423,  415,  424,  422,  425,  426,
+      418,  421,  427,  429,  430,  428,  426,  427,  429,  430,
+      423,  425,  428,  431,  432,  424,  433,  435,  434,  438,
+      436,  432,  435,  436,  437,  433,  439,  439,  437,  441,
+      443,  431,  434,  442,  441,  439,  444,  442,  445,  446,
+      438,  447,  443,  450,  453,  457,  445,  456,  458,  463,
+
+      459,  457,  458,  462,  444,  459,  456,  446,  450,  461,
+      464,  453,  470,  464,  461,  470,  447,  448,  465,  465,
+      466,  462,  448,  468,  463,  473,  448,  466,  123,  448,
+      467,  467,  469,  469,  472,  474,  448,  478,  468,  448,
+      460,  460,  460,  471,  460,  473,  477,  460,  471,  475,
+      476,  476,  460,  472,  474,  478,   67,  475,  460,  460,
+      479,  477,  480,  480,  481,  479,  482,  483,  484,  481,
+      483,  482,  485,  486,  484,  487,  489,  488,  490,  490,
+      485,  486,  488,  489,  491,  492,  493,  496,  495,  498,
+      492,  495,  491,  487,  497,  497,  499,  501,  502,  499,
+
+      503,  496,  504,  502,  498,  493,  505,  499,  507,  506,
+      508,  511,  509,  510,  508,  514,  616,  507,  501,  512,
+      511,  503,  504,  515,  519,  513,  522,  616,  505,  506,
+      509,  513,  510,  512,  516,  514,  517,  515,  518,  516,
+      520,  517,  518,  519,  521,  523,  523,  522,  524,  521,
+      526,  525,  520,  524,  525,  528,  527,  529,  530,  530,
+      528,  531,  531,  532,  534,  535,  533,  536,  526,  527,
+      533,  538,  539,  540,  542,  538,  541,  529,  532,  542,
+      543,  536,  544,  534,  545,  546,   61,  539,  545,  535,
+      537,  541,  547,  537,  543,  537,  544,  547,  540,  537,
+
+      546,  537,  549,  548,  550,  551,  537,  547,  548,  552,
+      555,  537,  553,  556,   56,  552,  549,  553,  556,  551,
+      554,  554,  555,  557,  558,  550,  554,  560,  554,  559,
+      559,  561,  560,  562,  563,  569,  558,  557,  565,  561,
+      564,  564,  565,  567,  570,  571,  554,  562,  567,  568,
+      571,  572,  568,  563,  569,  573,  574,  570,  575,  576,
+      577,  578,  580,  579,  576,  574,  582,  580,  583,  584,
+      572,  573,  579,  585,  586,  578,  587,  575,  585,  586,
+      577,  587,  588,  596,  584,  582,  583,  589,  589,  590,
+      594,  588,  592,  594,  590,  595,  592,  592,  593,  593,
+
+      598,  597,  593,  596,  597,  606,  599,  600,  601,  602,
+      595,  599,  600,  603,  601,  604,  604,  605,  608,  603,
+      609,  598,  610,  606,  607,  602,  605,  607,  611,  612,
+      613,  614,  617,  618,  612,  613,  608,  615,  618,  609,
+      615,  611,  610,  619,  617,  620,  621,  621,  619,  614,
+      622,  623,  624,  625,  626,  628,  629,  625,  627,  632,
+      620,  633,  634,  635,  624,  623,  636,  627,  635,  622,
+      637,  636,  626,  632,  628,  637,  633,  638,  639,  640,
+      641,  629,  634,  642,  640,  643,  644,  645,  645,  646,
+      647,  638,  639,  648,  650,  641,  647,  649,  649,  650,
+
+      643,  651,  642,  652,  654,  644,  653,  646,  651,  653,
+      655,  656,  657,  648,  659,  658,  656,  652,  661,  655,
+      658,  660,  654,  662,  663,  660,  666,  661,  664,  665,
+      667,  657,  668,  659,  669,  664,  671,  670,  662,  663,
+      669,  665,  674,  675,  672,  666,  676,  674,  677,   51,
+      668,  667,  670,  672,  676,  678,  671,  675,  679,  680,
+      678,  682,  679,  679,  681,  681,  683,  684,  677,  685,
+      685,  686,  684,  691,  682,  683,  686,  687,  680,  688,
+      688,  689,  687,  690,  692,  701,  693,  691,  690,  694,
+      689,  693,  695,  698,  694,  696,  697,  695,  702,  696,
+
+      701,  703,  692,  700,  698,  697,  704,  700,  706,  705,
+      697,  707,  697,  708,  697,  703,  702,  705,  709,  709,
+      710,  714,  706,  711,  711,  704,  714,  713,  715,  707,
+      713,  716,  716,  717,  719,  710,  718,  718,  708,  719,
+      720,  720,  721,  722,  723,  724,  726,  715,  722,  728,
+      724,  727,  723,  717,  725,  725,  728,  727,  730,  734,
+      731,  732,  721,  730,  726,  731,  732,  733,  734,  735,
+      736,  738,  733,  737,  737,  739,  741,  740,  746,  742,
+      745,  736,  740,  743,  744,  744,  747,  748,  735,  749,
+      750,  738,  748,  758,  761,  750,  741,  758,  739,  742,
+
+      745,  743,  752,  746,  747,  753,  752,  752,  754,  755,
+      756,  755,  749,  757,  753,  759,  754,  760,  757,  762,
+      761,  764,  763,  765,  756,  766,  759,  763,  767,  766,
+      768,  769,  770,  771,  772,  773,  760,  762,  776,  764,
+      773,  780,  778,  765,  774,  769,  767,  770,  771,  768,
+      775,  774,  777,  772,  779,  775,  776,  778,  781,  782,
+      779,  777,  780,  781,  782,  783,  784,  784,  786,  786,
+      783,  787,  788,  789,  790,  791,  793,  788,  794,  791,
+      791,  792,  792,  795,  796,  797,  799,  789,  800,  787,
+      803,  797,  801,  790,  798,  793,  802,  794,  804,  798,
+
+      811,  805,  808,  796,  803,  799,  808,  800,  809,  795,
+      815,  801,  806,  806,  810,  802,  805,  807,  818,  804,
+      811,  809,  807,  810,  812,  812,  813,  831,  814,  816,
+      815,  813,  814,  820,  816,  836,  818,  822,  820,  821,
+      821,  830,  822,  824,  824,  826,  826,  828,  829,  829,
+      828,  832,  831,  833,  834,  836,  830,  838,  833,  835,
+      835,  837,  837,  839,  840,  832,  841,  842,  840,  834,
+      844,  847,  842,  845,  839,  846,  846,  848,  849,  838,
+      850,  851,  850,  853,  852,  841,  851,  845,  844,  852,
+      854,  847,  855,  856,  856,  854,  857,  848,  849,  859,
+
+      860,  860,  857,  853,  861,  862,  855,  864,  863,  866,
+      865,  863,  864,  868,  863,  865,  861,  867,  866,  871,
+      871,  869,  867,  859,  869,  862,  863,  870,  872,  873,
+      874,  875,  870,  877,  876,  878,  875,  881,  868,  876,
+      878,  879,  879,  882,  880,  883,  872,  884,  873,  880,
+      874,  888,  885,  886,  887,  881,  877,  889,  890,  887,
+      893,  884,  892,  882,  885,  883,  886,  892,   50,  894,
+      896,  888,  895,  899,  899,  893,  894,  889,  902,  890,
+      900,  895,  901,  900,  895,  904,  896,  901,  903,  905,
+      906,  907,  908,  908,  902,  909,  907,  903,  905,  906,
+
+      910,  905,  911,  912,  904,  913,  914,  915,  915,  916,
+      917,  919,   45,  910,  920,  909,  919,  912,  921,  923,
+      911,  922,  925,  921,  914,  916,  924,  922,  917,  929,
+      913,  924,  920,  926,  930,  925,  926,  929,  931,  923,
+      932,  933,  926,  935,  934,  937,  933,  930,  938,  939,
+      940,  943,  938,  941,  939,  940,  931,  942,  941,  932,
+      934,  935,  944,  945,  945,  937,  942,  946,  947,  951,
+      948,  949,  950,  952,  943,  954,  949,  944,  954,  952,
+      947,  946,  948,  957,  950,  953,  953,  951,  955,  955,
+      958,  958,  957,  959,  960,  961,  962,  963,  964,  960,
+
+      965,  966,  967,  964,  961,  959,  968,  968,  962,  965,
+      969,  970,  963,   40,  971,  969,  972,  967,  973,  973,
+      974,  966,  965,  975,  975,  976,  976,  977,  982,  978,
+      984,  977,  970,  971,  978,  979,  972,  981,  979,  983,
+      974,  989,  981,  990,  983,  988,  982,  985,  985,  986,
+      986,  987,  991,  992,  993,  984,  987,  988,  988,  988,
+      995,  989,  997,  990,  988,  994,  994,  992,  996,  996,
+      999, 1002,  991, 1000, 1000,  993, 1001, 1004, 1002,  999,
+     1003, 1006,  997, 1005, 1005, 1007,  995, 1009, 1010, 1003,
+     1011, 1001, 1009, 1010, 1014, 1012, 1013, 1013, 1016, 1014,
+
+     1015, 1007, 1012, 1004, 1017, 1018, 1019, 1006, 1020, 1015,
+     1011, 1021, 1022, 1022, 1020, 1023, 1024, 1024, 1016, 1017,
+     1021, 1019, 1025, 1026, 1018, 1027, 1023, 1028, 1028, 1029,
+     1027, 1023, 1031, 1029, 1029, 1030, 1032, 1026, 1034, 1033,
+     1030, 1035, 1036, 1025, 1033, 1035, 1037, 1038, 1032, 1041,
+     1034, 1039, 1038, 1043, 1036, 1040, 1043,   14, 1031, 1049,
+     1040, 1041, 1044, 1044, 1045, 1045, 1046, 1053, 1049, 1047,
+     1048, 1037, 1046, 1039, 1047, 1051, 1048, 1055, 1057, 1053,
+     1051, 1056, 1056, 1058, 1059, 1060, 1061, 1064, 1062, 1055,
+     1061, 1063, 1058, 1062, 1066, 1066, 1063, 1067, 1057, 1068,
+
+     1069, 1064, 1059, 1074, 1060, 1075, 1066, 1076, 1068, 1069,
+     1071, 1071, 1076, 1077, 1082, 1067, 1078, 1078, 1074, 1075,
+     1079, 1082, 1079, 1080, 1080, 1083, 1084, 1084, 1085, 1086,
+     1077, 1087, 1088, 1090, 1089, 1091, 1092, 1085, 1095, 1096,
+     1095, 1101, 1094, 1087, 1088, 1083, 1089, 1094, 1090, 1097,
+     1086, 1099, 1100, 1100, 1102, 1091, 1092, 1096, 1097, 1102,
+     1103, 1104, 1103, 1105, 1106, 1099, 1104, 1101, 1105, 1107,
+     1108, 1109, 1111, 1112, 1114, 1108, 1109, 1113, 1113, 1117,
+     1118, 1115, 1106, 1116, 1123, 1116, 1114, 1112, 1117, 1107,
+     1115, 1111, 1118, 1115, 1120, 1121, 1124, 1123, 1125, 1120,
+
+     1121, 1127, 1129, 1130, 1131, 1136, 1132, 1127, 1129, 1133,
+     1133, 1134, 1135, 1135, 1125, 1132, 1124, 1137, 1130, 1139,
+     1134, 1137, 1138, 1141, 1136, 1140, 1140, 1138, 1144, 1131,
+     1147, 1141, 1139, 1145, 1145, 1146, 1146, 1144, 1148, 1149,
+     1150, 1150, 1147, 1152, 1149, 1153, 1154, 1155, 1156, 1157,
+     1153, 1159, 1159, 1156, 1158, 1160, 1148, 1161, 1162, 1160,
+     1163, 1164, 1155, 1162, 1166, 1167, 1168, 1157, 1152, 1154,
+     1158, 1169, 1161, 1171, 1173, 1173, 1170, 1175, 1174, 1176,
+     1164, 1174, 1177, 1178, 1178, 1168, 1163, 1166, 1170, 1167,
+     1175, 1181, 1169, 1176, 1171, 1177, 1179, 1179, 1180, 1180,
+
+     1182, 1182, 1183, 1183, 1181, 1184, 1184, 1185, 1186, 1186,
+     1187, 1187, 1188, 1190, 1191, 1191, 1192, 1195, 1190, 1193,
+     1193, 1194, 1196, 1195, 1203, 1196, 1185, 1197, 1197, 1198,
+     1198, 1188, 1199, 1200, 1200, 1192, 1202, 1202, 1205, 1194,
+     1204, 1204, 1206, 1197, 1207, 1208, 1209, 1205, 1210, 1207,
+     1203, 1199, 1211, 1212, 1206, 1213, 1214, 1211, 1215, 1209,
+     1219, 1216, 1221, 1217, 1213, 1214, 1216, 1217, 1212, 1210,
+     1208, 1221, 1215, 1222, 1222, 1226, 1223, 1224, 1224, 1227,
+     1219, 1223, 1229, 1230, 1231, 1229, 1224, 1235, 1230, 1238,
+     1226, 1227, 1232, 1232, 1234, 1234, 1236, 1236, 1237, 1239,
+
+       13, 1235, 1246, 1238, 1231, 1240, 1240, 1242, 1249, 1243,
+     1237, 1242, 1243, 1244, 1244, 1245, 1247, 1248, 1239, 1250,
+     1245, 1248, 1246, 1252, 1250, 1254, 1251, 1255, 1249, 1252,
+     1247, 1251, 1255, 1256, 1257, 1258, 1276, 1258, 1256, 1261,
+     1261, 1254, 1257, 1265, 1265, 1268, 1269, 1269, 1271, 1271,
+     1268, 1273, 1274, 1274, 1275, 1277, 1273, 1284, 1276, 1282,
+     1277, 1279, 1279, 1283, 1282, 1283, 1289, 1285, 1286, 1286,
+     1275, 1284, 1285, 1287, 1287, 1288, 1288, 1290, 1289, 1291,
+     1292, 1293, 1294, 1295, 1296, 1296, 1298, 1294, 1297, 1299,
+     1301, 1291, 1292, 1293, 1300, 1290, 1302, 1297, 1303, 1304,
+
+     1305, 1306, 1306, 1295, 1304, 1305, 1310, 1300, 1312, 1299,
+     1302, 1311, 1298, 1313, 1301, 1314, 1303, 1307, 1307, 1315,
+     1316, 1317, 1317, 1320, 1314, 1322, 1310, 1319, 1319, 1311,
+     1312, 1323, 1320, 1313, 1321, 1324, 1325, 1326, 1316, 1315,
+     1322, 1321, 1327, 1327, 1329, 1328, 1330, 1331, 1332, 1323,
+     1328, 1334, 1325, 1324, 1337, 1338, 1326, 1340, 1338, 1339,
+     1339, 1330, 1329, 1341, 1343, 1343, 1331, 1344, 1332, 1351,
+     1334, 1355, 1340, 1352, 1337, 1345, 1345, 1346, 1346, 1350,
+     1350, 1341, 1352, 1353, 1354, 1356, 1344, 1358, 1353, 1354,
+     1355, 1351, 1359, 1356, 1360, 1361, 1372, 1359,    0, 1360,
+
+     1362, 1362, 1358, 1363, 1363, 1372, 1364, 1365, 1365, 1369,
+     1361, 1364, 1366, 1366, 1369, 1370, 1371, 1373, 1374, 1370,
+     1375, 1371, 1376, 1379, 1378, 1375, 1374, 1378, 1381, 1380,
+     1382, 1384, 1373, 1386, 1376, 1383, 1383, 1381, 1387, 1382,
+     1384, 1379, 1380, 1388, 1389, 1389, 1390, 1391, 1391, 1392,
+     1395, 1393, 1386, 1396, 1401, 1390, 1393, 1392, 1387, 1395,
+     1398, 1398, 1388, 1402, 1402, 1403, 1396, 1407, 1403, 1404,
+     1404, 1405, 1405, 1408, 1401, 1406, 1406, 1409, 1410, 1410,
+     1411, 1417, 1409, 1414, 1411, 1407, 1418, 1408, 1419, 1414,
+     1420, 1418, 1423, 1421, 1422, 1422, 1424, 1425, 1417, 1417,
+
+     1426, 1426, 1427, 1427, 1424, 1428, 1419, 1421, 1429, 1430,
+     1420, 1423, 1431, 1429, 1432, 1433, 1425, 1434, 1438, 1436,
+     1445, 1428, 1436, 1432, 1439, 1439, 1440, 1444, 1449, 1430,
+     1440, 1441, 1443, 1449, 1455, 1433, 1438, 1434, 1431, 1444,
+     1441, 1443, 1450, 1450, 1451, 1445, 1453, 1454, 1457, 1456,
+     1459, 1453, 1458, 1451, 1456, 1455, 1454, 1458, 1460, 1460,
+     1462, 1463, 1464, 1464, 1465, 1466, 1457, 1467, 1465, 1468,
+     1469, 1471, 1470, 1473, 1466, 1459, 1463, 1470, 1469, 1462,
+     1472, 1472, 1475, 1467, 1474, 1474, 1478, 1475, 1468, 1477,
+     1477, 1479, 1473, 1480, 1480, 1481, 1481, 1471, 1482, 1483,
+
+     1484, 1485, 1485, 1486, 1487, 1488, 1478, 1489, 1490, 1487,
+     1494, 1483, 1489, 1479,    0, 1486, 1497, 1482, 1491, 1491,
+     1484, 1493, 1493, 1496, 1488, 1490, 1490, 1498, 1496, 1494,
+     1497,    0, 1498, 1499, 1499, 1500, 1500, 1501, 1501, 1502,
+     1504, 1504, 1506, 1506, 1502, 1508, 1508, 1509, 1512, 1513,
+     1513, 1517, 1509, 1514, 1516, 1518, 1512, 1519, 1514, 1516,
+     1520, 1521, 1524, 1525, 1525, 1536, 1521, 1526, 1526, 1517,
+     1538, 1518, 1527, 1540, 1519, 1519, 1527, 1531, 1531, 1533,
+     1536, 1520, 1524, 1533, 1535, 1535, 1539, 1539, 1538, 1541,
+     1542, 1543, 1544, 1545, 1546, 1546, 1543, 1544, 1540, 1549,
+
+     1549, 1551, 1551, 1553, 1541, 1554, 1554, 1557, 1556, 1558,
+     1559, 1542, 1545, 1556, 1558, 1553, 1560, 1561, 1565, 1566,
+     1569, 1557, 1565, 1567, 1568, 1570, 1571, 1572, 1574, 1559,
+     1573, 1573, 1577, 1561, 1560, 1575, 1567, 1574, 1569, 1566,
+     1575, 1570, 1572, 1568, 1576, 1578, 1582, 1579, 1580, 1576,
+     1583, 1571, 1579, 1584, 1585, 1587, 1586, 1577, 1584, 1585,
+     1578, 1582, 1580, 1588, 1589, 1590, 1591, 1592, 1587, 1583,
+     1586, 1593, 1594, 1596, 1597, 1597, 1595, 1594, 1589, 1591,
+     1592, 1595, 1588, 1598, 1590, 1601, 1599,    0, 1598, 1600,
+     1593, 1599, 1596, 1602, 1600, 1603, 1603, 1605, 1602, 1604,
+
+     1606, 1608, 1607, 1611, 1601, 1609, 1604, 1607, 1611, 1612,
+     1613, 1614, 1615, 1615, 1617,    0, 1605, 1616, 1609, 1606,
+     1608, 1622, 1616, 1626, 1614, 1618, 1618, 1620, 1612, 1613,
+     1619, 1619, 1620, 1617, 1621, 1623, 1623, 1624, 1625, 1628,
+     1622, 1621, 1626, 1627, 1624, 1625, 1630, 1631, 1627, 1632,
+     1633, 1630, 1631, 1634, 1634, 1635, 1636, 1639, 1628, 1637,
+     1637, 1638, 1638, 1648, 1639, 1640, 1640, 1649, 1632, 1633,
+     1641, 1641, 1642, 1644, 1635, 1636, 1647,    0, 1644, 1642,
+        0, 1647, 1648, 1650, 1650,    0, 1649, 1651, 1651, 1655,
+     1655, 1655, 1655, 1655, 1655, 1655, 1656, 1656, 1656, 1656,
+
+     1656, 1656, 1656, 1657, 1657, 1657, 1657, 1657, 1657, 1657,
+     1658, 1658, 1658, 1658, 1658, 1658, 1658, 1659, 1659, 1659,
+     1659, 1659, 1659, 1659, 1661, 1661,    0, 1661, 1661, 1661,
+     1661, 1662, 1662,    0,    0,    0, 1662, 1662, 1663, 1663,
+        0,    0, 1663,    0, 1663, 1664,    0,    0,    0,    0,
+        0, 1664, 1665, 1665,    0,    0,    0, 1665, 1665, 1666,
+        0,    0,    0,    0,    0, 1666, 1667, 1667,    0, 1667,
+     1667, 1667, 1667, 1668, 1668,    0, 1668, 1668, 1668, 1668,
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654,
+     1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1901,7 +1908,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1903 "<stdout>"
+#line 1910 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2088,7 +2095,7 @@ YY_DECL
     
 #line 197 "./util/configlexer.lex"
 
-#line 2090 "<stdout>"
+#line 2097 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -2147,13 +2154,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 >= 1643 )
+                               if ( yy_current_state >= 1655 )
                                        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] != 3255 );
+               while ( yy_base[yy_current_state] != 3281 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2323,625 +2330,630 @@ YY_RULE_SETUP
 case 29:
 YY_RULE_SETUP
 #line 229 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CHROOT) }
+{ YDVAR(1, VAR_IP_TRANSPARENT) }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 230 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USERNAME) }
+{ YDVAR(1, VAR_CHROOT) }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 231 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DIRECTORY) }
+{ YDVAR(1, VAR_USERNAME) }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 232 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOGFILE) }
+{ YDVAR(1, VAR_DIRECTORY) }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 233 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PIDFILE) }
+{ YDVAR(1, VAR_LOGFILE) }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 234 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_HINTS) }
+{ YDVAR(1, VAR_PIDFILE) }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 235 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
+{ YDVAR(1, VAR_ROOT_HINTS) }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 236 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
+{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 237 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 238 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
+{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 239 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 240 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
+{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 241 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_TTL) }
+{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 242 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_TTL) }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 243 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 244 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 245 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 246 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 247 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 248 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 249 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 250 "./util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 251 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 252 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 253 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 254 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 255 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 256 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 257 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 258 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 259 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 260 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 261 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 262 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 263 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 264 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 265 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 266 "./util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 267 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 268 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 269 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 270 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 271 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 272 "./util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 273 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 274 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 275 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 276 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 277 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 278 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 279 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 280 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 281 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 282 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 283 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 284 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 285 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 286 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 287 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 288 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 289 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 290 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 291 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 292 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 293 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 294 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 295 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 296 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 297 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 298 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 299 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 300 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 301 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 303 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 302 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 312 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 318 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 320 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 333 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 336 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
+       YY_BREAK
+case 140:
+YY_RULE_SETUP
+#line 341 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 342 "./util/configlexer.lex"
+#line 343 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 344 "./util/configlexer.lex"
+#line 345 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 346 "./util/configlexer.lex"
+#line 347 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 348 "./util/configlexer.lex"
+#line 349 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 350 "./util/configlexer.lex"
+#line 351 "./util/configlexer.lex"
 {
                YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
-case 145:
-/* rule 145 can match eol */
+case 146:
+/* rule 146 can match eol */
 YY_RULE_SETUP
-#line 352 "./util/configlexer.lex"
+#line 353 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 355 "./util/configlexer.lex"
+#line 356 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 356 "./util/configlexer.lex"
+#line 357 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 361 "./util/configlexer.lex"
+#line 362 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 148:
-/* rule 148 can match eol */
+case 149:
+/* rule 149 can match eol */
 YY_RULE_SETUP
-#line 362 "./util/configlexer.lex"
+#line 363 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 149:
+case 150:
 YY_RULE_SETUP
-#line 364 "./util/configlexer.lex"
+#line 365 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2954,34 +2966,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 150:
+case 151:
 YY_RULE_SETUP
-#line 376 "./util/configlexer.lex"
+#line 377 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 377 "./util/configlexer.lex"
+#line 378 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 151:
+case 152:
 YY_RULE_SETUP
-#line 382 "./util/configlexer.lex"
+#line 383 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 152:
-/* rule 152 can match eol */
+case 153:
+/* rule 153 can match eol */
 YY_RULE_SETUP
-#line 383 "./util/configlexer.lex"
+#line 384 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 385 "./util/configlexer.lex"
+#line 386 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2994,38 +3006,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 397 "./util/configlexer.lex"
+#line 398 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 399 "./util/configlexer.lex"
+#line 400 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 155:
-YY_RULE_SETUP
-#line 403 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 156:
-/* rule 156 can match eol */
 YY_RULE_SETUP
 #line 404 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 157:
+/* rule 157 can match eol */
 YY_RULE_SETUP
 #line 405 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 406 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 159:
+YY_RULE_SETUP
+#line 407 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3033,27 +3045,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 411 "./util/configlexer.lex"
+#line 412 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 159:
+case 160:
 YY_RULE_SETUP
-#line 415 "./util/configlexer.lex"
+#line 416 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 160:
-/* rule 160 can match eol */
+case 161:
+/* rule 161 can match eol */
 YY_RULE_SETUP
-#line 416 "./util/configlexer.lex"
+#line 417 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 418 "./util/configlexer.lex"
+#line 419 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3063,7 +3075,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 424 "./util/configlexer.lex"
+#line 425 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3075,33 +3087,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 435 "./util/configlexer.lex"
+#line 436 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 439 "./util/configlexer.lex"
+#line 440 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 443 "./util/configlexer.lex"
+#line 444 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 447 "./util/configlexer.lex"
+#line 448 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3103 "<stdout>"
+#line 3115 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3391,7 +3403,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 >= 1643 )
+                       if ( yy_current_state >= 1655 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3419,11 +3431,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 >= 1643 )
+               if ( yy_current_state >= 1655 )
                        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 == 1642);
+       yy_is_jam = (yy_current_state == 1654);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4056,7 +4068,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 447 "./util/configlexer.lex"
+#line 448 "./util/configlexer.lex"
 
 
 
index c2b00ceeb24e82a49097bcf7161378867435088c..5b1389dfb0c7bca7c9a05f67b0a0346a0a33a1c9 100644 (file)
@@ -226,6 +226,7 @@ interface-automatic{COLON}  { YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
 so-rcvbuf{COLON}               { YDVAR(1, VAR_SO_RCVBUF) }
 so-sndbuf{COLON}               { YDVAR(1, VAR_SO_SNDBUF) }
 so-reuseport{COLON}            { YDVAR(1, VAR_SO_REUSEPORT) }
+ip-transparent{COLON}          { YDVAR(1, VAR_IP_TRANSPARENT) }
 chroot{COLON}                  { YDVAR(1, VAR_CHROOT) }
 username{COLON}                        { YDVAR(1, VAR_USERNAME) }
 directory{COLON}               { YDVAR(1, VAR_DIRECTORY) }
index 476449fc08b5f066278696ea084984100bec36cd..745a9ba79890fc66e5873164f673aa9491cda9cd 100644 (file)
@@ -275,7 +275,8 @@ extern int yydebug;
      VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403,
      VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404,
      VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405,
-     VAR_HARDEN_ALGO_DOWNGRADE = 406
+     VAR_HARDEN_ALGO_DOWNGRADE = 406,
+     VAR_IP_TRANSPARENT = 407
    };
 #endif
 /* Tokens.  */
@@ -428,6 +429,7 @@ extern int yydebug;
 #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404
 #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405
 #define VAR_HARDEN_ALGO_DOWNGRADE 406
+#define VAR_IP_TRANSPARENT 407
 
 
 
@@ -441,7 +443,7 @@ typedef union YYSTYPE
 
 
 /* Line 387 of yacc.c  */
-#line 445 "util/configparser.c"
+#line 447 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -469,7 +471,7 @@ int yyparse ();
 /* Copy the second part of user declarations.  */
 
 /* Line 390 of yacc.c  */
-#line 473 "util/configparser.c"
+#line 475 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -689,20 +691,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   281
+#define YYLAST   283
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  152
+#define YYNTOKENS  153
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  157
+#define YYNNTS  158
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  299
+#define YYNRULES  301
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  438
+#define YYNSTATES  441
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   406
+#define YYMAXUTOK   407
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -750,7 +752,7 @@ static const yytype_uint8 yytranslate[] =
      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
+     145,   146,   147,   148,   149,   150,   151,   152
 };
 
 #if YYDEBUG
@@ -770,104 +772,105 @@ static const yytype_uint16 yyprhs[] =
      185,   187,   189,   191,   193,   195,   197,   199,   201,   203,
      205,   207,   209,   211,   213,   215,   217,   219,   221,   223,
      225,   227,   229,   231,   233,   235,   237,   239,   241,   243,
-     245,   248,   249,   251,   253,   255,   257,   259,   261,   264,
-     265,   267,   269,   271,   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,   429,   432,   435,   438,
-     441,   444,   447,   450,   453,   456,   459,   462,   465,   468,
-     471,   474,   477,   480,   483,   486,   489,   492,   495,   498,
-     501,   504,   507,   510,   514,   517,   520,   523,   526,   529,
-     532,   535,   538,   541,   544,   547,   550,   553,   556,   559,
-     562,   565,   568,   572,   575,   578,   581,   584,   587,   590,
-     593,   596,   599,   602,   605,   608,   611,   614,   617,   620,
-     622,   625,   626,   628,   630,   632,   634,   636,   638,   640,
-     642,   645,   648,   651,   654,   657,   660,   663,   666,   668,
-     671,   672,   674,   676,   678,   680,   682,   684,   686,   688,
-     690,   692,   694,   696,   699,   702,   705,   708,   711,   714,
-     717,   720,   723,   726,   729,   732,   734,   737,   738,   740
+     245,   247,   250,   251,   253,   255,   257,   259,   261,   263,
+     266,   267,   269,   271,   273,   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,   434,   437,
+     440,   443,   446,   449,   452,   455,   458,   461,   464,   467,
+     470,   473,   476,   479,   482,   485,   488,   491,   494,   497,
+     500,   503,   506,   509,   512,   515,   519,   522,   525,   528,
+     531,   534,   537,   540,   543,   546,   549,   552,   555,   558,
+     561,   564,   567,   570,   573,   577,   580,   583,   586,   589,
+     592,   595,   598,   601,   604,   607,   610,   613,   616,   619,
+     622,   625,   627,   630,   631,   633,   635,   637,   639,   641,
+     643,   645,   647,   650,   653,   656,   659,   662,   665,   668,
+     671,   673,   676,   677,   679,   681,   683,   685,   687,   689,
+     691,   693,   695,   697,   699,   701,   704,   707,   710,   713,
+     716,   719,   722,   725,   728,   731,   734,   737,   739,   742,
+     743,   745
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     153,     0,    -1,    -1,   153,   154,    -1,   155,   156,    -1,
-     158,   159,    -1,   161,   162,    -1,   305,   306,    -1,   279,
-     280,    -1,   290,   291,    -1,    11,    -1,   156,   157,    -1,
-      -1,   164,    -1,   165,    -1,   169,    -1,   172,    -1,   178,
-      -1,   179,    -1,   180,    -1,   181,    -1,   170,    -1,   191,
-      -1,   192,    -1,   193,    -1,   194,    -1,   195,    -1,   213,
-      -1,   214,    -1,   215,    -1,   219,    -1,   220,    -1,   175,
-      -1,   221,    -1,   222,    -1,   225,    -1,   223,    -1,   224,
-      -1,   227,    -1,   228,    -1,   229,    -1,   241,    -1,   204,
-      -1,   205,    -1,   206,    -1,   207,    -1,   230,    -1,   244,
-      -1,   200,    -1,   202,    -1,   245,    -1,   250,    -1,   251,
-      -1,   252,    -1,   176,    -1,   212,    -1,   259,    -1,   260,
-      -1,   201,    -1,   255,    -1,   188,    -1,   171,    -1,   196,
-      -1,   242,    -1,   248,    -1,   231,    -1,   243,    -1,   262,
-      -1,   263,    -1,   177,    -1,   166,    -1,   187,    -1,   235,
-      -1,   167,    -1,   173,    -1,   174,    -1,   197,    -1,   198,
-      -1,   261,    -1,   233,    -1,   236,    -1,   237,    -1,   168,
-      -1,   264,    -1,   216,    -1,   240,    -1,   189,    -1,   203,
-      -1,   246,    -1,   247,    -1,   249,    -1,   254,    -1,   199,
-      -1,   256,    -1,   257,    -1,   258,    -1,   208,    -1,   211,
-      -1,   238,    -1,   239,    -1,   209,    -1,   232,    -1,   253,
-      -1,   190,    -1,   182,    -1,   183,    -1,   184,    -1,   185,
-      -1,   186,    -1,   265,    -1,   266,    -1,   267,    -1,   210,
-      -1,   217,    -1,   218,    -1,   268,    -1,   269,    -1,   226,
-      -1,   234,    -1,    38,    -1,   159,   160,    -1,    -1,   270,
-      -1,   271,    -1,   272,    -1,   274,    -1,   273,    -1,    44,
-      -1,   162,   163,    -1,    -1,   275,    -1,   276,    -1,   277,
-      -1,   278,    -1,    13,    10,    -1,    12,    10,    -1,    76,
-      10,    -1,    79,    10,    -1,    97,    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,   123,    10,    -1,
-     124,    10,    -1,   125,    10,    -1,   126,    10,    -1,   127,
-      10,    -1,    77,    10,    -1,    66,    10,    -1,   102,    10,
-      -1,   122,    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,   110,    10,
-      -1,    54,    10,    -1,    64,    10,    -1,    55,    10,    -1,
-     103,    10,    -1,    48,    10,    -1,    49,    10,    -1,    50,
-      10,    -1,    51,    10,    -1,   114,    10,    -1,   118,    10,
-      -1,   119,    10,    -1,   115,    10,    -1,    61,    10,    -1,
-      26,    10,    -1,    27,    10,    -1,    28,    10,    -1,    99,
-      10,    -1,   133,    10,    -1,   134,    10,    -1,    29,    10,
-      -1,    30,    10,    -1,    32,    10,    -1,    33,    10,    -1,
-      35,    10,    -1,    36,    10,    -1,    34,    10,    -1,   135,
-      10,    -1,    41,    10,    -1,    42,    10,    -1,    43,    10,
-      -1,    52,    10,    -1,    71,    10,    -1,   120,    10,    -1,
-      85,    10,    -1,   151,    10,    -1,    78,    10,    -1,    86,
-      10,    -1,    87,    10,    -1,   116,    10,    -1,   117,    10,
-      -1,   101,    10,    -1,    47,    10,    -1,    69,    10,    -1,
-      72,    10,    10,    -1,    53,    10,    -1,    56,    10,    -1,
-     106,    10,    -1,   107,    10,    -1,    70,    10,    -1,   108,
-      10,    -1,    57,    10,    -1,    58,    10,    -1,    59,    10,
-      -1,   121,    10,    -1,   109,    10,    -1,    65,    10,    -1,
-     112,    10,    -1,   113,    10,    -1,   111,    10,    -1,    62,
-      10,    -1,    63,    10,    -1,    84,    10,    -1,    73,    10,
-      10,    -1,    74,    10,    -1,    98,    10,    -1,   130,    10,
-      -1,   131,    10,    -1,   132,    10,    -1,   136,    10,    -1,
-     137,    10,    -1,    37,    10,    -1,    39,    10,    -1,    40,
-      10,    -1,   129,    10,    -1,   100,    10,    -1,    37,    10,
-      -1,    45,    10,    -1,    46,    10,    -1,   128,    10,    -1,
-      88,    -1,   280,   281,    -1,    -1,   282,    -1,   284,    -1,
-     283,    -1,   286,    -1,   287,    -1,   288,    -1,   289,    -1,
-     285,    -1,    89,    10,    -1,    91,    10,    -1,    90,    10,
-      -1,    96,    10,    -1,    92,    10,    -1,    93,    10,    -1,
-      94,    10,    -1,    95,    10,    -1,   138,    -1,   291,   292,
-      -1,    -1,   293,    -1,   294,    -1,   295,    -1,   296,    -1,
-     297,    -1,   298,    -1,   299,    -1,   300,    -1,   301,    -1,
-     302,    -1,   303,    -1,   304,    -1,   139,    10,    -1,   140,
-      10,    -1,   141,    10,    -1,   142,    10,    -1,   143,    10,
-      -1,   144,    10,    -1,   145,    10,    -1,   146,    10,    -1,
-     147,    10,    -1,   148,    10,    -1,   149,    10,    -1,   150,
-      10,    -1,   104,    -1,   306,   307,    -1,    -1,   308,    -1,
-     105,    10,    -1
+     154,     0,    -1,    -1,   154,   155,    -1,   156,   157,    -1,
+     159,   160,    -1,   162,   163,    -1,   307,   308,    -1,   281,
+     282,    -1,   292,   293,    -1,    11,    -1,   157,   158,    -1,
+      -1,   165,    -1,   166,    -1,   170,    -1,   173,    -1,   179,
+      -1,   180,    -1,   181,    -1,   182,    -1,   171,    -1,   192,
+      -1,   193,    -1,   194,    -1,   195,    -1,   196,    -1,   215,
+      -1,   216,    -1,   217,    -1,   221,    -1,   222,    -1,   176,
+      -1,   223,    -1,   224,    -1,   227,    -1,   225,    -1,   226,
+      -1,   229,    -1,   230,    -1,   231,    -1,   243,    -1,   205,
+      -1,   206,    -1,   207,    -1,   208,    -1,   232,    -1,   246,
+      -1,   201,    -1,   203,    -1,   247,    -1,   252,    -1,   253,
+      -1,   254,    -1,   177,    -1,   214,    -1,   261,    -1,   262,
+      -1,   202,    -1,   257,    -1,   189,    -1,   172,    -1,   197,
+      -1,   244,    -1,   250,    -1,   233,    -1,   245,    -1,   264,
+      -1,   265,    -1,   178,    -1,   167,    -1,   188,    -1,   237,
+      -1,   168,    -1,   174,    -1,   175,    -1,   198,    -1,   199,
+      -1,   263,    -1,   235,    -1,   238,    -1,   239,    -1,   169,
+      -1,   266,    -1,   218,    -1,   242,    -1,   190,    -1,   204,
+      -1,   248,    -1,   249,    -1,   251,    -1,   256,    -1,   200,
+      -1,   258,    -1,   259,    -1,   260,    -1,   209,    -1,   213,
+      -1,   240,    -1,   241,    -1,   210,    -1,   234,    -1,   255,
+      -1,   191,    -1,   183,    -1,   184,    -1,   185,    -1,   186,
+      -1,   187,    -1,   267,    -1,   268,    -1,   269,    -1,   211,
+      -1,   219,    -1,   220,    -1,   270,    -1,   271,    -1,   228,
+      -1,   236,    -1,   212,    -1,    38,    -1,   160,   161,    -1,
+      -1,   272,    -1,   273,    -1,   274,    -1,   276,    -1,   275,
+      -1,    44,    -1,   163,   164,    -1,    -1,   277,    -1,   278,
+      -1,   279,    -1,   280,    -1,    13,    10,    -1,    12,    10,
+      -1,    76,    10,    -1,    79,    10,    -1,    97,    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,   123,
+      10,    -1,   124,    10,    -1,   125,    10,    -1,   126,    10,
+      -1,   127,    10,    -1,    77,    10,    -1,    66,    10,    -1,
+     102,    10,    -1,   122,    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,
+     110,    10,    -1,    54,    10,    -1,    64,    10,    -1,    55,
+      10,    -1,   103,    10,    -1,    48,    10,    -1,    49,    10,
+      -1,    50,    10,    -1,    51,    10,    -1,   114,    10,    -1,
+     118,    10,    -1,   119,    10,    -1,   152,    10,    -1,   115,
+      10,    -1,    61,    10,    -1,    26,    10,    -1,    27,    10,
+      -1,    28,    10,    -1,    99,    10,    -1,   133,    10,    -1,
+     134,    10,    -1,    29,    10,    -1,    30,    10,    -1,    32,
+      10,    -1,    33,    10,    -1,    35,    10,    -1,    36,    10,
+      -1,    34,    10,    -1,   135,    10,    -1,    41,    10,    -1,
+      42,    10,    -1,    43,    10,    -1,    52,    10,    -1,    71,
+      10,    -1,   120,    10,    -1,    85,    10,    -1,   151,    10,
+      -1,    78,    10,    -1,    86,    10,    -1,    87,    10,    -1,
+     116,    10,    -1,   117,    10,    -1,   101,    10,    -1,    47,
+      10,    -1,    69,    10,    -1,    72,    10,    10,    -1,    53,
+      10,    -1,    56,    10,    -1,   106,    10,    -1,   107,    10,
+      -1,    70,    10,    -1,   108,    10,    -1,    57,    10,    -1,
+      58,    10,    -1,    59,    10,    -1,   121,    10,    -1,   109,
+      10,    -1,    65,    10,    -1,   112,    10,    -1,   113,    10,
+      -1,   111,    10,    -1,    62,    10,    -1,    63,    10,    -1,
+      84,    10,    -1,    73,    10,    10,    -1,    74,    10,    -1,
+      98,    10,    -1,   130,    10,    -1,   131,    10,    -1,   132,
+      10,    -1,   136,    10,    -1,   137,    10,    -1,    37,    10,
+      -1,    39,    10,    -1,    40,    10,    -1,   129,    10,    -1,
+     100,    10,    -1,    37,    10,    -1,    45,    10,    -1,    46,
+      10,    -1,   128,    10,    -1,    88,    -1,   282,   283,    -1,
+      -1,   284,    -1,   286,    -1,   285,    -1,   288,    -1,   289,
+      -1,   290,    -1,   291,    -1,   287,    -1,    89,    10,    -1,
+      91,    10,    -1,    90,    10,    -1,    96,    10,    -1,    92,
+      10,    -1,    93,    10,    -1,    94,    10,    -1,    95,    10,
+      -1,   138,    -1,   293,   294,    -1,    -1,   295,    -1,   296,
+      -1,   297,    -1,   298,    -1,   299,    -1,   300,    -1,   301,
+      -1,   302,    -1,   303,    -1,   304,    -1,   305,    -1,   306,
+      -1,   139,    10,    -1,   140,    10,    -1,   141,    10,    -1,
+     142,    10,    -1,   143,    10,    -1,   144,    10,    -1,   145,
+      10,    -1,   146,    10,    -1,   147,    10,    -1,   148,    10,
+      -1,   149,    10,    -1,   150,    10,    -1,   104,    -1,   308,
+     309,    -1,    -1,   310,    -1,   105,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -884,25 +887,26 @@ static const yytype_uint16 yyrline[] =
      166,   167,   167,   168,   168,   169,   169,   170,   170,   171,
      171,   171,   172,   172,   173,   173,   173,   174,   174,   174,
      175,   175,   175,   176,   176,   176,   177,   177,   177,   178,
-     178,   178,   179,   179,   179,   180,   180,   181,   181,   183,
-     195,   196,   197,   197,   197,   197,   197,   199,   211,   212,
-     213,   213,   213,   213,   215,   224,   233,   244,   253,   262,
-     271,   284,   299,   308,   317,   326,   335,   344,   353,   362,
-     371,   380,   389,   398,   407,   414,   421,   430,   439,   453,
-     462,   471,   478,   485,   492,   500,   507,   514,   521,   528,
-     536,   544,   552,   559,   566,   575,   584,   591,   598,   606,
-     614,   624,   637,   648,   656,   669,   678,   687,   696,   706,
-     714,   727,   736,   744,   753,   761,   774,   783,   790,   800,
-     810,   820,   830,   840,   850,   860,   870,   877,   884,   893,
-     902,   911,   918,   928,   945,   952,   970,   983,   996,  1005,
-    1014,  1023,  1033,  1043,  1052,  1061,  1068,  1077,  1086,  1095,
-    1103,  1116,  1124,  1147,  1154,  1169,  1179,  1189,  1196,  1203,
-    1212,  1222,  1229,  1236,  1245,  1255,  1265,  1272,  1279,  1288,
-    1293,  1294,  1295,  1295,  1295,  1296,  1296,  1296,  1297,  1297,
-    1299,  1309,  1318,  1325,  1335,  1342,  1349,  1356,  1363,  1368,
-    1369,  1370,  1370,  1371,  1371,  1372,  1372,  1373,  1374,  1375,
-    1376,  1377,  1378,  1380,  1388,  1395,  1403,  1411,  1418,  1425,
-    1434,  1443,  1452,  1461,  1470,  1479,  1484,  1485,  1486,  1488
+     178,   178,   179,   179,   179,   180,   180,   181,   181,   182,
+     184,   196,   197,   198,   198,   198,   198,   198,   200,   212,
+     213,   214,   214,   214,   214,   216,   225,   234,   245,   254,
+     263,   272,   285,   300,   309,   318,   327,   336,   345,   354,
+     363,   372,   381,   390,   399,   408,   415,   422,   431,   440,
+     454,   463,   472,   479,   486,   493,   501,   508,   515,   522,
+     529,   537,   545,   553,   560,   567,   576,   585,   592,   599,
+     607,   615,   625,   635,   648,   659,   667,   680,   689,   698,
+     707,   717,   725,   738,   747,   755,   764,   772,   785,   794,
+     801,   811,   821,   831,   841,   851,   861,   871,   881,   888,
+     895,   904,   913,   922,   929,   939,   956,   963,   981,   994,
+    1007,  1016,  1025,  1034,  1044,  1054,  1063,  1072,  1079,  1088,
+    1097,  1106,  1114,  1127,  1135,  1158,  1165,  1180,  1190,  1200,
+    1207,  1214,  1223,  1233,  1240,  1247,  1256,  1266,  1276,  1283,
+    1290,  1299,  1304,  1305,  1306,  1306,  1306,  1307,  1307,  1307,
+    1308,  1308,  1310,  1320,  1329,  1336,  1346,  1353,  1360,  1367,
+    1374,  1379,  1380,  1381,  1381,  1382,  1382,  1383,  1383,  1384,
+    1385,  1386,  1387,  1388,  1389,  1391,  1399,  1406,  1414,  1422,
+    1429,  1436,  1445,  1454,  1463,  1472,  1481,  1490,  1495,  1496,
+    1497,  1499
 };
 #endif
 
@@ -964,17 +968,17 @@ static const char *const yytname[] =
   "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES",
   "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES",
   "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES",
-  "VAR_HARDEN_ALGO_DOWNGRADE", "$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", "server_outgoing_range",
-  "server_outgoing_port_permit", "server_outgoing_port_avoid",
-  "server_outgoing_num_tcp", "server_incoming_num_tcp",
-  "server_interface_automatic", "server_do_ip4", "server_do_ip6",
-  "server_do_udp", "server_do_tcp", "server_tcp_upstream",
+  "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "$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",
+  "server_outgoing_range", "server_outgoing_port_permit",
+  "server_outgoing_port_avoid", "server_outgoing_num_tcp",
+  "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4",
+  "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_upstream",
   "server_ssl_upstream", "server_ssl_service_key",
   "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize",
   "server_use_syslog", "server_log_time_ascii", "server_log_queries",
@@ -985,25 +989,26 @@ static const char *const yytname[] =
   "server_trust_anchor", "server_domain_insecure", "server_hide_identity",
   "server_hide_version", "server_identity", "server_version",
   "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport",
-  "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_delay_close", "server_unblock_lan_zones",
-  "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_infra_cache_min_rtt",
-  "server_target_fetch_policy", "server_harden_short_bufsize",
-  "server_harden_large_queries", "server_harden_glue",
-  "server_harden_dnssec_stripped", "server_harden_below_nxdomain",
-  "server_harden_referral_path", "server_harden_algo_downgrade",
-  "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_ip_transparent", "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_delay_close",
+  "server_unblock_lan_zones", "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_infra_cache_min_rtt", "server_target_fetch_policy",
+  "server_harden_short_bufsize", "server_harden_large_queries",
+  "server_harden_glue", "server_harden_dnssec_stripped",
+  "server_harden_below_nxdomain", "server_harden_referral_path",
+  "server_harden_algo_downgrade", "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_ignore_cd_flag", "server_val_log_level",
   "server_val_nsec3_keysize_iterations", "server_add_holddown",
@@ -1050,27 +1055,27 @@ static const yytype_uint16 yytoknum[] =
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406
+     405,   406,   407
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   152,   153,   153,   154,   154,   154,   154,   154,   154,
-     155,   156,   156,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   158,
-     159,   159,   160,   160,   160,   160,   160,   161,   162,   162,
-     163,   163,   163,   163,   164,   165,   166,   167,   168,   169,
+       0,   153,   154,   154,   155,   155,   155,   155,   155,   155,
+     156,   157,   157,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     159,   160,   160,   161,   161,   161,   161,   161,   162,   163,
+     163,   164,   164,   164,   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,   196,   197,   198,   199,
@@ -1082,11 +1087,12 @@ static const yytype_uint16 yyr1[] =
      250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
      260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   280,   281,   281,   281,   281,   281,   281,   281,   281,
-     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
-     291,   292,   292,   292,   292,   292,   292,   292,   292,   292,
-     292,   292,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   301,   302,   303,   304,   305,   306,   306,   307,   308
+     280,   281,   282,   282,   283,   283,   283,   283,   283,   283,
+     283,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   293,   294,   294,   294,   294,   294,   294,   294,
+     294,   294,   294,   294,   294,   295,   296,   297,   298,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   308,
+     309,   310
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1104,8 +1110,8 @@ 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,     1,     2,     0,
-       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     2,
+       0,     1,     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,
@@ -1113,15 +1119,16 @@ static const yytype_uint8 yyr2[] =
        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,     3,     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,     1,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     2
+       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     1,     2,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
+       1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -1129,8 +1136,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    10,   119,   127,   249,   295,   268,     3,
-      12,   121,   129,   251,   270,   297,     4,     5,     6,     8,
+       2,     0,     1,    10,   120,   128,   251,   297,   270,     3,
+      12,   122,   130,   253,   272,   299,     4,     5,     6,     8,
        9,     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,
@@ -1141,59 +1148,60 @@ static const yytype_uint16 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,     0,     0,    11,    13,
-      14,    70,    73,    82,    15,    21,    61,    16,    74,    75,
-      32,    54,    69,    17,    18,    19,    20,   104,   105,   106,
-     107,   108,    71,    60,    86,   103,    22,    23,    24,    25,
-      26,    62,    76,    77,    92,    48,    58,    49,    87,    42,
-      43,    44,    45,    96,   100,   112,    97,    55,    27,    28,
-      29,    84,   113,   114,    30,    31,    33,    34,    36,    37,
-      35,   117,    38,    39,    40,    46,    65,   101,    79,   118,
-      72,    80,    81,    98,    99,    85,    41,    63,    66,    47,
-      50,    88,    89,    64,    90,    51,    52,    53,   102,    91,
-      59,    93,    94,    95,    56,    57,    78,    67,    68,    83,
-     109,   110,   111,   115,   116,     0,     0,     0,     0,     0,
-     120,   122,   123,   124,   126,   125,     0,     0,     0,     0,
-     128,   130,   131,   132,   133,     0,     0,     0,     0,     0,
-       0,     0,     0,   250,   252,   254,   253,   259,   255,   256,
-     257,   258,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   269,   271,   272,   273,   274,   275,
-     276,   277,   278,   279,   280,   281,   282,     0,   296,   298,
-     135,   134,   139,   142,   140,   148,   149,   150,   151,   161,
-     162,   163,   164,   165,   183,   184,   185,   189,   190,   145,
-     191,   192,   195,   193,   194,   197,   198,   199,   211,   174,
-     175,   176,   177,   200,   214,   170,   172,   215,   220,   221,
-     222,   146,   182,   229,   230,   171,   225,   158,   141,   166,
-     212,   218,   201,     0,     0,   233,   147,   136,   157,   205,
-     137,   143,   144,   167,   168,   231,   203,   206,   207,   138,
-     234,   186,   210,   159,   173,   216,   217,   219,   224,   169,
-     228,   226,   227,   178,   181,   208,   209,   179,   180,   202,
-     223,   160,   152,   153,   154,   155,   156,   235,   236,   237,
-     187,   188,   196,   238,   239,   204,   240,   241,   242,   244,
-     243,   245,   246,   247,   248,   260,   262,   261,   264,   265,
-     266,   267,   263,   283,   284,   285,   286,   287,   288,   289,
-     290,   291,   292,   293,   294,   299,   213,   232
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
+      13,    14,    70,    73,    82,    15,    21,    61,    16,    74,
+      75,    32,    54,    69,    17,    18,    19,    20,   104,   105,
+     106,   107,   108,    71,    60,    86,   103,    22,    23,    24,
+      25,    26,    62,    76,    77,    92,    48,    58,    49,    87,
+      42,    43,    44,    45,    96,   100,   112,   119,    97,    55,
+      27,    28,    29,    84,   113,   114,    30,    31,    33,    34,
+      36,    37,    35,   117,    38,    39,    40,    46,    65,   101,
+      79,   118,    72,    80,    81,    98,    99,    85,    41,    63,
+      66,    47,    50,    88,    89,    64,    90,    51,    52,    53,
+     102,    91,    59,    93,    94,    95,    56,    57,    78,    67,
+      68,    83,   109,   110,   111,   115,   116,     0,     0,     0,
+       0,     0,   121,   123,   124,   125,   127,   126,     0,     0,
+       0,     0,   129,   131,   132,   133,   134,     0,     0,     0,
+       0,     0,     0,     0,     0,   252,   254,   256,   255,   261,
+     257,   258,   259,   260,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   271,   273,   274,   275,
+     276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     298,   300,   136,   135,   140,   143,   141,   149,   150,   151,
+     152,   162,   163,   164,   165,   166,   185,   186,   187,   191,
+     192,   146,   193,   194,   197,   195,   196,   199,   200,   201,
+     213,   175,   176,   177,   178,   202,   216,   171,   173,   217,
+     222,   223,   224,   147,   184,   231,   232,   172,   227,   159,
+     142,   167,   214,   220,   203,     0,     0,   235,   148,   137,
+     158,   207,   138,   144,   145,   168,   169,   233,   205,   208,
+     209,   139,   236,   188,   212,   160,   174,   218,   219,   221,
+     226,   170,   230,   228,   229,   179,   183,   210,   211,   180,
+     181,   204,   225,   161,   153,   154,   155,   156,   157,   237,
+     238,   239,   189,   190,   198,   240,   241,   206,   182,   242,
+     243,   244,   246,   245,   247,   248,   249,   250,   262,   264,
+     263,   266,   267,   268,   269,   265,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   301,   215,
+     234
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     9,    10,    16,   128,    11,    17,   240,    12,
-      18,   250,   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,   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,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   241,   242,
-     243,   244,   245,   251,   252,   253,   254,    13,    19,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,    14,    20,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,    15,    21,   298,   299
+      -1,     1,     9,    10,    16,   129,    11,    17,   242,    12,
+      18,   252,   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,   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,   225,   226,   227,
+     228,   229,   230,   231,   232,   233,   234,   235,   236,   243,
+     244,   245,   246,   247,   253,   254,   255,   256,    13,    19,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,    14,
+      20,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,    15,    21,   300,   301
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1202,18 +1210,18 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yypact[] =
 {
      -81,   116,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -12,    40,    47,    39,
-       2,   -80,    16,    17,    18,    22,    23,    24,    66,    68,
-      71,    72,    73,    78,   107,   126,   127,   128,   143,   145,
-     146,   147,   148,   149,   151,   152,   153,   154,   155,   156,
-     157,   158,   160,   161,   162,   163,   164,   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,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -12,    41,    47,    39,
+       3,   -80,    16,    17,    18,    22,    23,    24,    66,    67,
+      69,    72,    73,    78,   107,   126,   127,   128,   145,   146,
+     147,   148,   149,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   161,   162,   163,   164,   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,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
@@ -1224,19 +1232,19 @@ static const yytype_int16 yypact[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   239,   240,   241,   242,   243,
-     -81,   -81,   -81,   -81,   -81,   -81,   245,   246,   247,   248,
-     -81,   -81,   -81,   -81,   -81,   249,   250,   251,   252,   253,
-     254,   255,   256,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   269,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   241,   242,   243,
+     245,   246,   -81,   -81,   -81,   -81,   -81,   -81,   247,   248,
+     249,   250,   -81,   -81,   -81,   -81,   -81,   251,   252,   253,
+     254,   255,   256,   257,   258,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   271,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   270,   271,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   272,   273,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
@@ -1244,7 +1252,8 @@ static const yytype_int16 yypact[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1265,7 +1274,7 @@ static const yytype_int8 yypgoto[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1276,33 +1285,33 @@ static const yytype_uint16 yytable[] =
 {
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,   297,   300,   301,   302,    47,
-      48,    49,   303,   304,   305,    50,    51,    52,    53,    54,
+      42,    43,    44,    45,    46,   299,   302,   303,   304,    47,
+      48,    49,   305,   306,   307,    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,    88,    89,    90,   306,   235,   307,   236,
-     237,   308,   309,   310,   246,    91,    92,    93,   311,    94,
-      95,    96,   247,   248,    97,    98,    99,   100,   101,   102,
+      85,    86,    87,    88,    89,    90,   308,   309,   237,   310,
+     238,   239,   311,   312,   248,    91,    92,    93,   313,    94,
+      95,    96,   249,   250,    97,    98,    99,   100,   101,   102,
      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,     2,   312,   119,   120,
-     121,   122,   123,   124,   125,   126,     0,     3,   255,   256,
-     257,   258,   259,   260,   261,   262,   313,   314,   315,   127,
-     238,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   316,     4,   317,   318,   319,   320,   321,
-       5,   322,   323,   324,   325,   326,   327,   328,   329,   239,
-     330,   331,   332,   333,   334,   249,   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,     6,   363,   364,   365,   366,   367,
-     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
-       7,   378,   379,   380,   381,   382,   383,   384,   385,   386,
-     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,     8,   411,   412,   413,   414,   415,
-     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
-     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
-     436,   437
+     113,   114,   115,   116,   117,   118,     2,   314,   119,   120,
+     121,   122,   123,   124,   125,   126,     0,     3,   257,   258,
+     259,   260,   261,   262,   263,   264,   315,   316,   317,   127,
+     128,   240,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,     4,   318,   319,   320,   321,   322,
+       5,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     241,   332,   333,   334,   335,   251,   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,     6,   364,   365,   366,   367,   368,
+     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
+       7,   379,   380,   381,   382,   383,   384,   385,   386,   387,
+     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
+     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
+     408,   409,   410,   411,     8,   412,   413,   414,   415,   416,
+     417,   418,   419,   420,   421,   422,   423,   424,   425,   426,
+     427,   428,   429,   430,   431,   432,   433,   434,   435,   436,
+     437,   438,   439,   440
 };
 
 #define yypact_value_is_default(Yystate) \
@@ -1320,17 +1329,17 @@ static const yytype_int16 yycheck[] =
       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,    10,    37,    10,    39,
-      40,    10,    10,    10,    37,    97,    98,    99,    10,   101,
+      82,    83,    84,    85,    86,    87,    10,    10,    37,    10,
+      39,    40,    10,    10,    37,    97,    98,    99,    10,   101,
      102,   103,    45,    46,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
      122,   123,   124,   125,   126,   127,     0,    10,   130,   131,
      132,   133,   134,   135,   136,   137,    -1,    11,    89,    90,
       91,    92,    93,    94,    95,    96,    10,    10,    10,   151,
-     100,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,    10,    38,    10,    10,    10,    10,    10,
-      44,    10,    10,    10,    10,    10,    10,    10,    10,   129,
-      10,    10,    10,    10,    10,   128,    10,    10,    10,    10,
+     152,   100,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,    38,    10,    10,    10,    10,    10,
+      44,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+     129,    10,    10,    10,    10,   128,    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,    88,    10,    10,    10,    10,    10,
@@ -1341,16 +1350,16 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,   138,    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_uint16 yystos[] =
 {
-       0,   153,     0,    11,    38,    44,    88,   104,   138,   154,
-     155,   158,   161,   279,   290,   305,   156,   159,   162,   280,
-     291,   306,    12,    13,    14,    15,    16,    17,    18,    19,
+       0,   154,     0,    11,    38,    44,    88,   104,   138,   155,
+     156,   159,   162,   281,   292,   307,   157,   160,   163,   282,
+     293,   308,    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,    50,    51,    52,    53,    54,    55,    56,
@@ -1360,7 +1369,7 @@ static const yytype_uint16 yystos[] =
       87,    97,    98,    99,   101,   102,   103,   106,   107,   108,
      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
      119,   120,   121,   122,   123,   124,   125,   126,   127,   130,
-     131,   132,   133,   134,   135,   136,   137,   151,   157,   164,
+     131,   132,   133,   134,   135,   136,   137,   151,   152,   158,
      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,
@@ -1371,13 +1380,14 @@ static const yytype_uint16 yystos[] =
      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,    37,    39,    40,   100,   129,
-     160,   270,   271,   272,   273,   274,    37,    45,    46,   128,
-     163,   275,   276,   277,   278,    89,    90,    91,    92,    93,
-      94,    95,    96,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   304,   105,   307,   308,
+     265,   266,   267,   268,   269,   270,   271,    37,    39,    40,
+     100,   129,   161,   272,   273,   274,   275,   276,    37,    45,
+      46,   128,   164,   277,   278,   279,   280,    89,    90,    91,
+      92,    93,    94,    95,    96,   283,   284,   285,   286,   287,
+     288,   289,   290,   291,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   294,   295,   296,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   306,   105,
+     309,   310,    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,
@@ -1391,7 +1401,7 @@ static const yytype_uint16 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,    10
+      10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2199,9 +2209,9 @@ yyreduce:
        }
     break;
 
-  case 119:
+  case 120:
 /* Line 1792 of yacc.c  */
-#line 184 "./util/configparser.y"
+#line 185 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2214,9 +2224,9 @@ yyreduce:
        }
     break;
 
-  case 127:
+  case 128:
 /* Line 1792 of yacc.c  */
-#line 200 "./util/configparser.y"
+#line 201 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2229,9 +2239,9 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 135:
 /* Line 1792 of yacc.c  */
-#line 216 "./util/configparser.y"
+#line 217 "./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)
@@ -2241,9 +2251,9 @@ yyreduce:
        }
     break;
 
-  case 135:
+  case 136:
 /* Line 1792 of yacc.c  */
-#line 225 "./util/configparser.y"
+#line 226 "./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)
@@ -2253,9 +2263,9 @@ yyreduce:
        }
     break;
 
-  case 136:
+  case 137:
 /* Line 1792 of yacc.c  */
-#line 234 "./util/configparser.y"
+#line 235 "./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)
@@ -2267,9 +2277,9 @@ yyreduce:
        }
     break;
 
-  case 137:
+  case 138:
 /* Line 1792 of yacc.c  */
-#line 245 "./util/configparser.y"
+#line 246 "./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)
@@ -2279,9 +2289,9 @@ yyreduce:
        }
     break;
 
-  case 138:
+  case 139:
 /* Line 1792 of yacc.c  */
-#line 254 "./util/configparser.y"
+#line 255 "./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)
@@ -2291,9 +2301,9 @@ yyreduce:
        }
     break;
 
-  case 139:
+  case 140:
 /* Line 1792 of yacc.c  */
-#line 263 "./util/configparser.y"
+#line 264 "./util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2303,9 +2313,9 @@ yyreduce:
        }
     break;
 
-  case 140:
+  case 141:
 /* Line 1792 of yacc.c  */
-#line 272 "./util/configparser.y"
+#line 273 "./util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2319,9 +2329,9 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 142:
 /* Line 1792 of yacc.c  */
-#line 285 "./util/configparser.y"
+#line 286 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2337,9 +2347,9 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 143:
 /* Line 1792 of yacc.c  */
-#line 300 "./util/configparser.y"
+#line 301 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2349,9 +2359,9 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 144:
 /* Line 1792 of yacc.c  */
-#line 309 "./util/configparser.y"
+#line 310 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2361,9 +2371,9 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 145:
 /* Line 1792 of yacc.c  */
-#line 318 "./util/configparser.y"
+#line 319 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2373,9 +2383,9 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 146:
 /* Line 1792 of yacc.c  */
-#line 327 "./util/configparser.y"
+#line 328 "./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)
@@ -2385,9 +2395,9 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 147:
 /* Line 1792 of yacc.c  */
-#line 336 "./util/configparser.y"
+#line 337 "./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)
@@ -2397,9 +2407,9 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 148:
 /* Line 1792 of yacc.c  */
-#line 345 "./util/configparser.y"
+#line 346 "./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)
@@ -2409,9 +2419,9 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 149:
 /* Line 1792 of yacc.c  */
-#line 354 "./util/configparser.y"
+#line 355 "./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)
@@ -2421,9 +2431,9 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 150:
 /* Line 1792 of yacc.c  */
-#line 363 "./util/configparser.y"
+#line 364 "./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)
@@ -2433,9 +2443,9 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 151:
 /* Line 1792 of yacc.c  */
-#line 372 "./util/configparser.y"
+#line 373 "./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)
@@ -2445,9 +2455,9 @@ yyreduce:
        }
     break;
 
-  case 151:
+  case 152:
 /* Line 1792 of yacc.c  */
-#line 381 "./util/configparser.y"
+#line 382 "./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)
@@ -2457,9 +2467,9 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 153:
 /* Line 1792 of yacc.c  */
-#line 390 "./util/configparser.y"
+#line 391 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2469,9 +2479,9 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 154:
 /* Line 1792 of yacc.c  */
-#line 399 "./util/configparser.y"
+#line 400 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2481,9 +2491,9 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 155:
 /* Line 1792 of yacc.c  */
-#line 408 "./util/configparser.y"
+#line 409 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_key);
@@ -2491,9 +2501,9 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 156:
 /* Line 1792 of yacc.c  */
-#line 415 "./util/configparser.y"
+#line 416 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_pem);
@@ -2501,9 +2511,9 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 157:
 /* Line 1792 of yacc.c  */
-#line 422 "./util/configparser.y"
+#line 423 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2513,9 +2523,9 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 158:
 /* Line 1792 of yacc.c  */
-#line 431 "./util/configparser.y"
+#line 432 "./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)
@@ -2525,9 +2535,9 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 159:
 /* Line 1792 of yacc.c  */
-#line 440 "./util/configparser.y"
+#line 441 "./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)
@@ -2542,9 +2552,9 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 160:
 /* Line 1792 of yacc.c  */
-#line 454 "./util/configparser.y"
+#line 455 "./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)
@@ -2554,9 +2564,9 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 161:
 /* Line 1792 of yacc.c  */
-#line 463 "./util/configparser.y"
+#line 464 "./util/configparser.y"
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2566,9 +2576,9 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 162:
 /* Line 1792 of yacc.c  */
-#line 472 "./util/configparser.y"
+#line 473 "./util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2576,9 +2586,9 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 163:
 /* Line 1792 of yacc.c  */
-#line 479 "./util/configparser.y"
+#line 480 "./util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2586,9 +2596,9 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 164:
 /* Line 1792 of yacc.c  */
-#line 486 "./util/configparser.y"
+#line 487 "./util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2596,9 +2606,9 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 165:
 /* Line 1792 of yacc.c  */
-#line 493 "./util/configparser.y"
+#line 494 "./util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2607,9 +2617,9 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 166:
 /* Line 1792 of yacc.c  */
-#line 501 "./util/configparser.y"
+#line 502 "./util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2617,9 +2627,9 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 167:
 /* Line 1792 of yacc.c  */
-#line 508 "./util/configparser.y"
+#line 509 "./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)))
@@ -2627,9 +2637,9 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 168:
 /* Line 1792 of yacc.c  */
-#line 515 "./util/configparser.y"
+#line 516 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2637,9 +2647,9 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 169:
 /* Line 1792 of yacc.c  */
-#line 522 "./util/configparser.y"
+#line 523 "./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)))
@@ -2647,9 +2657,9 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 170:
 /* Line 1792 of yacc.c  */
-#line 529 "./util/configparser.y"
+#line 530 "./util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2658,9 +2668,9 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 171:
 /* Line 1792 of yacc.c  */
-#line 537 "./util/configparser.y"
+#line 538 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2669,9 +2679,9 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 172:
 /* Line 1792 of yacc.c  */
-#line 545 "./util/configparser.y"
+#line 546 "./util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2680,9 +2690,9 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 173:
 /* Line 1792 of yacc.c  */
-#line 553 "./util/configparser.y"
+#line 554 "./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)))
@@ -2690,9 +2700,9 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 174:
 /* Line 1792 of yacc.c  */
-#line 560 "./util/configparser.y"
+#line 561 "./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)))
@@ -2700,9 +2710,9 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 175:
 /* Line 1792 of yacc.c  */
-#line 567 "./util/configparser.y"
+#line 568 "./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)
@@ -2712,9 +2722,9 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 176:
 /* Line 1792 of yacc.c  */
-#line 576 "./util/configparser.y"
+#line 577 "./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)
@@ -2724,9 +2734,9 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 177:
 /* Line 1792 of yacc.c  */
-#line 585 "./util/configparser.y"
+#line 586 "./util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2734,9 +2744,9 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 178:
 /* Line 1792 of yacc.c  */
-#line 592 "./util/configparser.y"
+#line 593 "./util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2744,9 +2754,9 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 179:
 /* Line 1792 of yacc.c  */
-#line 599 "./util/configparser.y"
+#line 600 "./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->so_rcvbuf))
@@ -2755,9 +2765,9 @@ yyreduce:
        }
     break;
 
-  case 179:
+  case 180:
 /* Line 1792 of yacc.c  */
-#line 607 "./util/configparser.y"
+#line 608 "./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))
@@ -2766,9 +2776,9 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 181:
 /* Line 1792 of yacc.c  */
-#line 615 "./util/configparser.y"
+#line 616 "./util/configparser.y"
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str)));
         if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2779,9 +2789,22 @@ yyreduce:
     }
     break;
 
-  case 181:
+  case 182:
+/* Line 1792 of yacc.c  */
+#line 626 "./util/configparser.y"
+    {
+        OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str)));
+        if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+            yyerror("expected yes or no.");
+        else cfg_parser->cfg->ip_transparent =
+            (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+        free((yyvsp[(2) - (2)].str));
+    }
+    break;
+
+  case 183:
 /* Line 1792 of yacc.c  */
-#line 625 "./util/configparser.y"
+#line 636 "./util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2795,9 +2818,9 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 184:
 /* Line 1792 of yacc.c  */
-#line 638 "./util/configparser.y"
+#line 649 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2809,9 +2832,9 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 185:
 /* Line 1792 of yacc.c  */
-#line 649 "./util/configparser.y"
+#line 660 "./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))
@@ -2820,9 +2843,9 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 186:
 /* Line 1792 of yacc.c  */
-#line 657 "./util/configparser.y"
+#line 668 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2836,9 +2859,9 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 187:
 /* Line 1792 of yacc.c  */
-#line 670 "./util/configparser.y"
+#line 681 "./util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2848,9 +2871,9 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 188:
 /* Line 1792 of yacc.c  */
-#line 679 "./util/configparser.y"
+#line 690 "./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)
@@ -2860,9 +2883,9 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 189:
 /* Line 1792 of yacc.c  */
-#line 688 "./util/configparser.y"
+#line 699 "./util/configparser.y"
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2872,9 +2895,9 @@ yyreduce:
        }
     break;
 
-  case 188:
+  case 190:
 /* Line 1792 of yacc.c  */
-#line 697 "./util/configparser.y"
+#line 708 "./util/configparser.y"
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2885,9 +2908,9 @@ yyreduce:
        }
     break;
 
-  case 189:
+  case 191:
 /* Line 1792 of yacc.c  */
-#line 707 "./util/configparser.y"
+#line 718 "./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))
@@ -2896,9 +2919,9 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 192:
 /* Line 1792 of yacc.c  */
-#line 715 "./util/configparser.y"
+#line 726 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2912,9 +2935,9 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 193:
 /* Line 1792 of yacc.c  */
-#line 728 "./util/configparser.y"
+#line 739 "./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)
@@ -2924,9 +2947,9 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 194:
 /* Line 1792 of yacc.c  */
-#line 737 "./util/configparser.y"
+#line 748 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
@@ -2935,9 +2958,9 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 195:
 /* Line 1792 of yacc.c  */
-#line 745 "./util/configparser.y"
+#line 756 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2947,9 +2970,9 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 196:
 /* Line 1792 of yacc.c  */
-#line 754 "./util/configparser.y"
+#line 765 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
@@ -2958,9 +2981,9 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 197:
 /* Line 1792 of yacc.c  */
-#line 762 "./util/configparser.y"
+#line 773 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2974,9 +2997,9 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 198:
 /* Line 1792 of yacc.c  */
-#line 775 "./util/configparser.y"
+#line 786 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2986,9 +3009,9 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 199:
 /* Line 1792 of yacc.c  */
-#line 784 "./util/configparser.y"
+#line 795 "./util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2996,9 +3019,9 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 200:
 /* Line 1792 of yacc.c  */
-#line 791 "./util/configparser.y"
+#line 802 "./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)
@@ -3009,9 +3032,9 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 201:
 /* Line 1792 of yacc.c  */
-#line 801 "./util/configparser.y"
+#line 812 "./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)
@@ -3022,9 +3045,9 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 202:
 /* Line 1792 of yacc.c  */
-#line 811 "./util/configparser.y"
+#line 822 "./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)
@@ -3035,9 +3058,9 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 203:
 /* Line 1792 of yacc.c  */
-#line 821 "./util/configparser.y"
+#line 832 "./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)
@@ -3048,9 +3071,9 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 204:
 /* Line 1792 of yacc.c  */
-#line 831 "./util/configparser.y"
+#line 842 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3061,9 +3084,9 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 205:
 /* Line 1792 of yacc.c  */
-#line 841 "./util/configparser.y"
+#line 852 "./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)
@@ -3074,9 +3097,9 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 206:
 /* Line 1792 of yacc.c  */
-#line 851 "./util/configparser.y"
+#line 862 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3087,9 +3110,9 @@ yyreduce:
        }
     break;
 
-  case 205:
+  case 207:
 /* Line 1792 of yacc.c  */
-#line 861 "./util/configparser.y"
+#line 872 "./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)
@@ -3100,9 +3123,9 @@ yyreduce:
        }
     break;
 
-  case 206:
+  case 208:
 /* Line 1792 of yacc.c  */
-#line 871 "./util/configparser.y"
+#line 882 "./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)))
@@ -3110,9 +3133,9 @@ yyreduce:
        }
     break;
 
-  case 207:
+  case 209:
 /* Line 1792 of yacc.c  */
-#line 878 "./util/configparser.y"
+#line 889 "./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)))
@@ -3120,9 +3143,9 @@ yyreduce:
        }
     break;
 
-  case 208:
+  case 210:
 /* Line 1792 of yacc.c  */
-#line 885 "./util/configparser.y"
+#line 896 "./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)
@@ -3132,9 +3155,9 @@ yyreduce:
        }
     break;
 
-  case 209:
+  case 211:
 /* Line 1792 of yacc.c  */
-#line 894 "./util/configparser.y"
+#line 905 "./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)
@@ -3144,9 +3167,9 @@ yyreduce:
        }
     break;
 
-  case 210:
+  case 212:
 /* Line 1792 of yacc.c  */
-#line 903 "./util/configparser.y"
+#line 914 "./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)
@@ -3156,9 +3179,9 @@ yyreduce:
        }
     break;
 
-  case 211:
+  case 213:
 /* Line 1792 of yacc.c  */
-#line 912 "./util/configparser.y"
+#line 923 "./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)))
@@ -3166,9 +3189,9 @@ yyreduce:
        }
     break;
 
-  case 212:
+  case 214:
 /* Line 1792 of yacc.c  */
-#line 919 "./util/configparser.y"
+#line 930 "./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)
@@ -3179,9 +3202,9 @@ yyreduce:
        }
     break;
 
-  case 213:
+  case 215:
 /* Line 1792 of yacc.c  */
-#line 929 "./util/configparser.y"
+#line 940 "./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 &&
@@ -3199,9 +3222,9 @@ yyreduce:
        }
     break;
 
-  case 214:
+  case 216:
 /* Line 1792 of yacc.c  */
-#line 946 "./util/configparser.y"
+#line 957 "./util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -3209,9 +3232,9 @@ yyreduce:
        }
     break;
 
-  case 215:
+  case 217:
 /* Line 1792 of yacc.c  */
-#line 953 "./util/configparser.y"
+#line 964 "./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) {
@@ -3230,9 +3253,9 @@ yyreduce:
        }
     break;
 
-  case 216:
+  case 218:
 /* Line 1792 of yacc.c  */
-#line 971 "./util/configparser.y"
+#line 982 "./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) {
@@ -3246,9 +3269,9 @@ yyreduce:
        }
     break;
 
-  case 217:
+  case 219:
 /* Line 1792 of yacc.c  */
-#line 984 "./util/configparser.y"
+#line 995 "./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) {
@@ -3262,9 +3285,9 @@ yyreduce:
        }
     break;
 
-  case 218:
+  case 220:
 /* Line 1792 of yacc.c  */
-#line 997 "./util/configparser.y"
+#line 1008 "./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)
@@ -3274,9 +3297,9 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 /* Line 1792 of yacc.c  */
-#line 1006 "./util/configparser.y"
+#line 1017 "./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)
@@ -3286,9 +3309,9 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 222:
 /* Line 1792 of yacc.c  */
-#line 1015 "./util/configparser.y"
+#line 1026 "./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)
@@ -3298,9 +3321,9 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 223:
 /* Line 1792 of yacc.c  */
-#line 1024 "./util/configparser.y"
+#line 1035 "./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)
@@ -3311,9 +3334,9 @@ yyreduce:
        }
     break;
 
-  case 222:
+  case 224:
 /* Line 1792 of yacc.c  */
-#line 1034 "./util/configparser.y"
+#line 1045 "./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)
@@ -3324,9 +3347,9 @@ yyreduce:
        }
     break;
 
-  case 223:
+  case 225:
 /* Line 1792 of yacc.c  */
-#line 1044 "./util/configparser.y"
+#line 1055 "./util/configparser.y"
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3336,9 +3359,9 @@ yyreduce:
        }
     break;
 
-  case 224:
+  case 226:
 /* Line 1792 of yacc.c  */
-#line 1053 "./util/configparser.y"
+#line 1064 "./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)
@@ -3348,9 +3371,9 @@ yyreduce:
        }
     break;
 
-  case 225:
+  case 227:
 /* Line 1792 of yacc.c  */
-#line 1062 "./util/configparser.y"
+#line 1073 "./util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3358,9 +3381,9 @@ yyreduce:
        }
     break;
 
-  case 226:
+  case 228:
 /* Line 1792 of yacc.c  */
-#line 1069 "./util/configparser.y"
+#line 1080 "./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)
@@ -3370,9 +3393,9 @@ yyreduce:
        }
     break;
 
-  case 227:
+  case 229:
 /* Line 1792 of yacc.c  */
-#line 1078 "./util/configparser.y"
+#line 1089 "./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)
@@ -3382,9 +3405,9 @@ yyreduce:
        }
     break;
 
-  case 228:
+  case 230:
 /* Line 1792 of yacc.c  */
-#line 1087 "./util/configparser.y"
+#line 1098 "./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)
@@ -3394,9 +3417,9 @@ yyreduce:
        }
     break;
 
-  case 229:
+  case 231:
 /* Line 1792 of yacc.c  */
-#line 1096 "./util/configparser.y"
+#line 1107 "./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))
@@ -3405,9 +3428,9 @@ yyreduce:
        }
     break;
 
-  case 230:
+  case 232:
 /* Line 1792 of yacc.c  */
-#line 1104 "./util/configparser.y"
+#line 1115 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3421,9 +3444,9 @@ yyreduce:
        }
     break;
 
-  case 231:
+  case 233:
 /* Line 1792 of yacc.c  */
-#line 1117 "./util/configparser.y"
+#line 1128 "./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))
@@ -3432,9 +3455,9 @@ yyreduce:
        }
     break;
 
-  case 232:
+  case 234:
 /* Line 1792 of yacc.c  */
-#line 1125 "./util/configparser.y"
+#line 1136 "./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 &&
@@ -3458,9 +3481,9 @@ yyreduce:
        }
     break;
 
-  case 233:
+  case 235:
 /* Line 1792 of yacc.c  */
-#line 1148 "./util/configparser.y"
+#line 1159 "./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)))
@@ -3468,9 +3491,9 @@ yyreduce:
        }
     break;
 
-  case 234:
+  case 236:
 /* Line 1792 of yacc.c  */
-#line 1155 "./util/configparser.y"
+#line 1166 "./util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3486,9 +3509,9 @@ yyreduce:
        }
     break;
 
-  case 235:
+  case 237:
 /* Line 1792 of yacc.c  */
-#line 1170 "./util/configparser.y"
+#line 1181 "./util/configparser.y"
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3499,9 +3522,9 @@ yyreduce:
        }
     break;
 
-  case 236:
+  case 238:
 /* Line 1792 of yacc.c  */
-#line 1180 "./util/configparser.y"
+#line 1191 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3512,9 +3535,9 @@ yyreduce:
        }
     break;
 
-  case 237:
+  case 239:
 /* Line 1792 of yacc.c  */
-#line 1190 "./util/configparser.y"
+#line 1201 "./util/configparser.y"
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str));
@@ -3522,9 +3545,9 @@ yyreduce:
        }
     break;
 
-  case 238:
+  case 240:
 /* Line 1792 of yacc.c  */
-#line 1197 "./util/configparser.y"
+#line 1208 "./util/configparser.y"
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dns64_prefix);
@@ -3532,9 +3555,9 @@ yyreduce:
        }
     break;
 
-  case 239:
+  case 241:
 /* Line 1792 of yacc.c  */
-#line 1204 "./util/configparser.y"
+#line 1215 "./util/configparser.y"
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3544,9 +3567,9 @@ yyreduce:
        }
     break;
 
-  case 240:
+  case 242:
 /* Line 1792 of yacc.c  */
-#line 1213 "./util/configparser.y"
+#line 1224 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3557,9 +3580,9 @@ yyreduce:
        }
     break;
 
-  case 241:
+  case 243:
 /* Line 1792 of yacc.c  */
-#line 1223 "./util/configparser.y"
+#line 1234 "./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)))
@@ -3567,9 +3590,9 @@ yyreduce:
        }
     break;
 
-  case 242:
+  case 244:
 /* Line 1792 of yacc.c  */
-#line 1230 "./util/configparser.y"
+#line 1241 "./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)))
@@ -3577,9 +3600,9 @@ yyreduce:
        }
     break;
 
-  case 243:
+  case 245:
 /* Line 1792 of yacc.c  */
-#line 1237 "./util/configparser.y"
+#line 1248 "./util/configparser.y"
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3589,9 +3612,9 @@ yyreduce:
        }
     break;
 
-  case 244:
+  case 246:
 /* Line 1792 of yacc.c  */
-#line 1246 "./util/configparser.y"
+#line 1257 "./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)
@@ -3602,9 +3625,9 @@ yyreduce:
        }
     break;
 
-  case 245:
+  case 247:
 /* Line 1792 of yacc.c  */
-#line 1256 "./util/configparser.y"
+#line 1267 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3615,9 +3638,9 @@ yyreduce:
        }
     break;
 
-  case 246:
+  case 248:
 /* Line 1792 of yacc.c  */
-#line 1266 "./util/configparser.y"
+#line 1277 "./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)))
@@ -3625,9 +3648,9 @@ yyreduce:
        }
     break;
 
-  case 247:
+  case 249:
 /* Line 1792 of yacc.c  */
-#line 1273 "./util/configparser.y"
+#line 1284 "./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)))
@@ -3635,9 +3658,9 @@ yyreduce:
        }
     break;
 
-  case 248:
+  case 250:
 /* Line 1792 of yacc.c  */
-#line 1280 "./util/configparser.y"
+#line 1291 "./util/configparser.y"
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3647,17 +3670,17 @@ yyreduce:
        }
     break;
 
-  case 249:
+  case 251:
 /* Line 1792 of yacc.c  */
-#line 1289 "./util/configparser.y"
+#line 1300 "./util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 260:
+  case 262:
 /* Line 1792 of yacc.c  */
-#line 1300 "./util/configparser.y"
+#line 1311 "./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)
@@ -3668,9 +3691,9 @@ yyreduce:
        }
     break;
 
-  case 261:
+  case 263:
 /* Line 1792 of yacc.c  */
-#line 1310 "./util/configparser.y"
+#line 1321 "./util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3680,9 +3703,9 @@ yyreduce:
        }
     break;
 
-  case 262:
+  case 264:
 /* Line 1792 of yacc.c  */
-#line 1319 "./util/configparser.y"
+#line 1330 "./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)))
@@ -3690,9 +3713,9 @@ yyreduce:
        }
     break;
 
-  case 263:
+  case 265:
 /* Line 1792 of yacc.c  */
-#line 1326 "./util/configparser.y"
+#line 1337 "./util/configparser.y"
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3703,9 +3726,9 @@ yyreduce:
        }
     break;
 
-  case 264:
+  case 266:
 /* Line 1792 of yacc.c  */
-#line 1336 "./util/configparser.y"
+#line 1347 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3713,9 +3736,9 @@ yyreduce:
        }
     break;
 
-  case 265:
+  case 267:
 /* Line 1792 of yacc.c  */
-#line 1343 "./util/configparser.y"
+#line 1354 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3723,9 +3746,9 @@ yyreduce:
        }
     break;
 
-  case 266:
+  case 268:
 /* Line 1792 of yacc.c  */
-#line 1350 "./util/configparser.y"
+#line 1361 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3733,9 +3756,9 @@ yyreduce:
        }
     break;
 
-  case 267:
+  case 269:
 /* Line 1792 of yacc.c  */
-#line 1357 "./util/configparser.y"
+#line 1368 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3743,17 +3766,17 @@ yyreduce:
        }
     break;
 
-  case 268:
+  case 270:
 /* Line 1792 of yacc.c  */
-#line 1364 "./util/configparser.y"
+#line 1375 "./util/configparser.y"
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
     break;
 
-  case 283:
+  case 285:
 /* Line 1792 of yacc.c  */
-#line 1381 "./util/configparser.y"
+#line 1392 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3762,9 +3785,9 @@ yyreduce:
        }
     break;
 
-  case 284:
+  case 286:
 /* Line 1792 of yacc.c  */
-#line 1389 "./util/configparser.y"
+#line 1400 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
@@ -3772,9 +3795,9 @@ yyreduce:
        }
     break;
 
-  case 285:
+  case 287:
 /* Line 1792 of yacc.c  */
-#line 1396 "./util/configparser.y"
+#line 1407 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3783,9 +3806,9 @@ yyreduce:
        }
     break;
 
-  case 286:
+  case 288:
 /* Line 1792 of yacc.c  */
-#line 1404 "./util/configparser.y"
+#line 1415 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3794,9 +3817,9 @@ yyreduce:
        }
     break;
 
-  case 287:
+  case 289:
 /* Line 1792 of yacc.c  */
-#line 1412 "./util/configparser.y"
+#line 1423 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_identity);
@@ -3804,9 +3827,9 @@ yyreduce:
        }
     break;
 
-  case 288:
+  case 290:
 /* Line 1792 of yacc.c  */
-#line 1419 "./util/configparser.y"
+#line 1430 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_version);
@@ -3814,9 +3837,9 @@ yyreduce:
        }
     break;
 
-  case 289:
+  case 291:
 /* Line 1792 of yacc.c  */
-#line 1426 "./util/configparser.y"
+#line 1437 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3826,9 +3849,9 @@ yyreduce:
        }
     break;
 
-  case 290:
+  case 292:
 /* Line 1792 of yacc.c  */
-#line 1435 "./util/configparser.y"
+#line 1446 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3838,9 +3861,9 @@ yyreduce:
        }
     break;
 
-  case 291:
+  case 293:
 /* Line 1792 of yacc.c  */
-#line 1444 "./util/configparser.y"
+#line 1455 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3850,9 +3873,9 @@ yyreduce:
        }
     break;
 
-  case 292:
+  case 294:
 /* Line 1792 of yacc.c  */
-#line 1453 "./util/configparser.y"
+#line 1464 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3862,9 +3885,9 @@ yyreduce:
        }
     break;
 
-  case 293:
+  case 295:
 /* Line 1792 of yacc.c  */
-#line 1462 "./util/configparser.y"
+#line 1473 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3874,9 +3897,9 @@ yyreduce:
        }
     break;
 
-  case 294:
+  case 296:
 /* Line 1792 of yacc.c  */
-#line 1471 "./util/configparser.y"
+#line 1482 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3886,17 +3909,17 @@ yyreduce:
        }
     break;
 
-  case 295:
+  case 297:
 /* Line 1792 of yacc.c  */
-#line 1480 "./util/configparser.y"
+#line 1491 "./util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 299:
+  case 301:
 /* Line 1792 of yacc.c  */
-#line 1489 "./util/configparser.y"
+#line 1500 "./util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -3906,7 +3929,7 @@ yyreduce:
 
 
 /* Line 1792 of yacc.c  */
-#line 3910 "util/configparser.c"
+#line 3933 "util/configparser.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4138,7 +4161,7 @@ yyreturn:
 
 
 /* Line 2055 of yacc.c  */
-#line 1494 "./util/configparser.y"
+#line 1505 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index ffdc2e5244ea7326feeb751f1ea9672bb86265eb..a8ab6ee593f2bbe5454d14361278e3e779616654 100644 (file)
@@ -194,7 +194,8 @@ extern int yydebug;
      VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403,
      VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404,
      VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405,
-     VAR_HARDEN_ALGO_DOWNGRADE = 406
+     VAR_HARDEN_ALGO_DOWNGRADE = 406,
+     VAR_IP_TRANSPARENT = 407
    };
 #endif
 /* Tokens.  */
@@ -347,6 +348,7 @@ extern int yydebug;
 #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404
 #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405
 #define VAR_HARDEN_ALGO_DOWNGRADE 406
+#define VAR_IP_TRANSPARENT 407
 
 
 
@@ -360,7 +362,7 @@ typedef union YYSTYPE
 
 
 /* Line 2058 of yacc.c  */
-#line 364 "util/configparser.h"
+#line 366 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index 08610a78ce361f67c99f3cd403afe4d8e8c5907a..fb94be9d4b8d0771897bacef9a0141135b274a61 100644 (file)
@@ -118,7 +118,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES
 %token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES
 %token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES
-%token VAR_HARDEN_ALGO_DOWNGRADE
+%token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -178,7 +178,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_minimal_responses | server_rrset_roundrobin | server_max_udp_size |
        server_so_reuseport | server_delay_close | server_unblock_lan_zones |
        server_dns64_prefix | server_dns64_synthall |
-       server_infra_cache_min_rtt | server_harden_algo_downgrade
+       server_infra_cache_min_rtt | server_harden_algo_downgrade |
+       server_ip_transparent
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -621,6 +622,16 @@ server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG
         free($2);
     }
     ;
+server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG
+    {
+        OUTYY(("P(server_ip_transparent:%s)\n", $2));
+        if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+            yyerror("expected yes or no.");
+        else cfg_parser->cfg->ip_transparent =
+            (strcmp($2, "yes")==0);
+        free($2);
+    }
+    ;
 server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG
        {
                OUTYY(("P(server_edns_buffer_size:%s)\n", $2));