]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- local-zone-override config directive.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 6 Jun 2016 10:00:25 +0000 (10:00 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 6 Jun 2016 10:00:25 +0000 (10:00 +0000)
git-svn-id: file:///svn/unbound/trunk@3758 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
doc/example.conf.in
services/localzone.c
services/localzone.h
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index 5e0810fc5b71fa9089d5e0d151f2f627c9859c70..b6a6b6bc43444fc0101e8f0a4900c1fe84c7f450 100644 (file)
@@ -1,6 +1,7 @@
 6 June 2016: Wouter
        - Better help text from -h (from Ray Griffith).
        - access-control-tag config directive.
+       - local-zone-override config directive.
 
 3 June 2016: Wouter
        - Fix to not ignore return value of chown() in daemon startup.
index 82ce0d75dbb543530df3ab762b1c5a5ca541ba4c..ee297697082e22c54b609dcac61270860d7dfd59 100644 (file)
@@ -588,6 +588,9 @@ server:
        # tag a localzone with a list of tag names (in "" with spaces between)
        # local-zone-tag: "example.com" "tag2 tag3"
 
+       # add a netblock specific override to a localzone, with zone type
+       # local-zone-override: "example.com" 192.0.2.0/24 refuse
+
        # service clients over SSL (on the TCP sockets), with plain DNS inside
        # the SSL stream.  Give the certificate to use and private key.
        # default is "" (disabled).  requires restart to take effect.
index fcf6e8dfd7e03a9f941f31258d1fd7dd4fcb4b13..7acb5bd7212e7115923a5a120b7099cafb2c0e57 100644 (file)
@@ -542,6 +542,89 @@ lz_enter_zone_tag(struct local_zones* zones, char* zname, uint8_t* list,
        return r;
 }
 
+/** enter override into zone */
+static int
+lz_enter_override(struct local_zones* zones, char* zname, char* netblock,
+       char* type, uint16_t rr_class)
+{
+       uint8_t dname[LDNS_MAX_DOMAINLEN+1];
+       size_t dname_len = sizeof(dname);
+       int dname_labs;
+       struct sockaddr_storage addr;
+       int net;
+       socklen_t addrlen;
+       struct local_zone* z;
+       enum localzone_type t;
+
+       /* parse zone name */
+       if(sldns_str2wire_dname_buf(zname, dname, &dname_len) != 0) {
+               log_err("cannot parse zone name in local-zone-override: %s %s",
+                       zname, netblock);
+               return 0;
+       }
+       dname_labs = dname_count_labels(dname);
+
+       /* parse netblock */
+       if(!netblockstrtoaddr(netblock, UNBOUND_DNS_PORT, &addr, &addrlen,
+               &net)) {
+               log_err("cannot parse netblock in local-zone-override: %s %s",
+                       zname, netblock);
+               return 0;
+       }
+
+       /* parse zone type */
+       if(!local_zone_str2type(type, &t)) {
+               log_err("cannot parse type in local-zone-override: %s %s %s",
+                       zname, netblock, type);
+               return 0;
+       }
+
+       /* find localzone entry */
+       lock_rw_rdlock(&zones->lock);
+       z = local_zones_lookup(zones, dname, dname_len, dname_labs, rr_class);
+       if(!z) {
+               lock_rw_unlock(&zones->lock);
+               log_err("no local-zone for local-zone-override %s", zname);
+               return 0;
+       }
+       lock_rw_wrlock(&z->lock);
+       lock_rw_unlock(&zones->lock);
+
+       /* create netblock addr_tree if not present yet */
+       if(!z->override_tree) {
+               z->override_tree = (struct rbtree_t*)regional_alloc_zero(
+                       z->region, sizeof(*z->override_tree));
+               if(!z->override_tree) {
+                       lock_rw_unlock(&z->lock);
+                       log_err("out of memory");
+                       return 0;
+               }
+               addr_tree_init(z->override_tree);
+       }
+       /* add new elem to tree */
+       if(z->override_tree) {
+               struct local_zone_override* n;
+               n = (struct local_zone_override*)regional_alloc_zero(
+                       z->region, sizeof(*n));
+               if(!n) {
+                       lock_rw_unlock(&z->lock);
+                       log_err("out of memory");
+                       return 0;
+               }
+               n->type = t;
+               if(!addr_tree_insert(z->override_tree,
+                       (struct addr_tree_node*)n, &addr, addrlen, net)) {
+                       lock_rw_unlock(&z->lock);
+                       log_err("duplicate local-zone-override %s %s",
+                               zname, netblock);
+                       return 0;
+               }
+       }
+
+       lock_rw_unlock(&z->lock);
+       return 1;
+}
+
 /** parse local-zone: statements */
 static int
 lz_enter_zones(struct local_zones* zones, struct config_file* cfg)
@@ -720,6 +803,19 @@ lz_enter_defaults(struct local_zones* zones, struct config_file* cfg)
        return 1;
 }
 
+/** parse local-zone-override: statements */
+static int
+lz_enter_overrides(struct local_zones* zones, struct config_file* cfg)
+{
+       struct config_str3list* p;
+       for(p = cfg->local_zone_overrides; p; p = p->next) {
+               if(!lz_enter_override(zones, p->str, p->str2, p->str3,
+                       LDNS_RR_CLASS_IN))
+                       return 0;
+       }
+       return 1;
+}
+
 /** setup parent pointers, so that a lookup can be done for closest match */
 static void
 init_parents(struct local_zones* zones)
@@ -749,6 +845,9 @@ init_parents(struct local_zones* zones)
                                 break;
                         }
                 prev = node;
+
+               if(node->override_tree)
+                       addr_tree_init_parents(node->override_tree);
                lock_rw_unlock(&node->lock);
         }
        lock_rw_unlock(&zones->lock);
@@ -887,6 +986,10 @@ local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg)
        if(!lz_enter_defaults(zones, cfg)) {
                return 0;
        }
+       /* enter local zone overrides */
+       if(!lz_enter_overrides(zones, cfg)) {
+               return 0;
+       }
        /* create implicit transparent zone from data. */
        if(!lz_setup_implicit(zones, cfg)) {
                return 0;
index 964df19383c0434a50c8718c981f765dae3be591..91347cdaf9ec129fad79f7e09e9b0b8d378e678d 100644 (file)
@@ -43,6 +43,7 @@
 #define SERVICES_LOCALZONE_H
 #include "util/rbtree.h"
 #include "util/locks.h"
+#include "util/storage/dnstree.h"
 struct ub_packed_rrset_key;
 struct regional;
 struct config_file;
@@ -119,6 +120,9 @@ struct local_zone {
        uint8_t* taglist;
        /** length of the taglist (in bytes) */
        size_t taglen;
+       /** netblock addr_tree with struct local_zone_override information
+        * or NULL if there are no override elements */
+       struct rbtree_t* override_tree;
 
        /** in this region the zone's data is allocated.
         * the struct local_zone itself is malloced. */
@@ -157,6 +161,16 @@ struct local_rrset {
        struct ub_packed_rrset_key* rrset;
 };
 
+/**
+ * Local zone override information
+ */
+struct local_zone_override {
+       /** node in addrtree */
+       struct addr_tree_node node;
+       /** override for local zone type */
+       enum localzone_type type;
+};
+
 /**
  * Create local zones storage
  * @return new struct or NULL on error.
index 76c7f2cc887988509cd3ea4c9d04b2d1e85edbd2..35ca00bd1f7a1ef8d3d3fcfecc18a151c7541dd2 100644 (file)
@@ -212,6 +212,7 @@ config_create(void)
        cfg->local_zones = NULL;
        cfg->local_zones_nodefault = NULL;
        cfg->local_data = NULL;
+       cfg->local_zone_overrides = NULL;
        cfg->unblock_lan_zones = 0;
        cfg->insecure_lan_zones = 0;
        cfg->python_script = NULL;
@@ -640,6 +641,14 @@ config_collate_cat(struct config_strlist* list)
                func(buf, arg); \
        } \
        }
+/** compare and print list option */
+#define O_LS3(opt, name, lst) if(strcmp(opt, name)==0) { \
+       struct config_str3list* p = cfg->lst; \
+       for(p = cfg->lst; p; p = p->next) { \
+               snprintf(buf, len, "%s %s %s", p->str, p->str2, p->str3); \
+               func(buf, arg); \
+       } \
+       }
 /** compare and print taglist option */
 #define O_LTG(opt, name, lst) if(strcmp(opt, name)==0) { \
        char* tmpstr = NULL; \
@@ -785,6 +794,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_IFC(opt, "define-tag", num_tags, tagname)
        else O_LTG(opt, "local-zone-tag", local_zone_tags)
        else O_LTG(opt, "access-control-tag", acl_tags)
+       else O_LS3(opt, "local-zone-override", local_zone_overrides)
        /* not here:
         * outgoing-permit, outgoing-avoid - have list of ports
         * local-zone - zones and nodefault variables
@@ -936,6 +946,20 @@ config_deldblstrlist(struct config_str2list* p)
        }
 }
 
+void
+config_deltrplstrlist(struct config_str3list* p)
+{
+       struct config_str3list *np;
+       while(p) {
+               np = p->next;
+               free(p->str);
+               free(p->str2);
+               free(p->str3);
+               free(p);
+               p = np;
+       }
+}
+
 void
 config_delstub(struct config_stub* p)
 {
@@ -1021,6 +1045,7 @@ config_delete(struct config_file* cfg)
        config_deldblstrlist(cfg->local_zones);
        config_delstrlist(cfg->local_zones_nodefault);
        config_delstrlist(cfg->local_data);
+       config_deltrplstrlist(cfg->local_zone_overrides);
        config_del_strarray(cfg->tagname, cfg->num_tags);
        config_del_strbytelist(cfg->local_zone_tags);
        config_del_strbytelist(cfg->acl_tags);
@@ -1212,6 +1237,24 @@ cfg_str2list_insert(struct config_str2list** head, char* item, char* i2)
        return 1;
 }
 
+int 
+cfg_str3list_insert(struct config_str3list** head, char* item, char* i2,
+       char* i3)
+{
+       struct config_str3list *s;
+       if(!item || !i2 || !i3 || !head)
+               return 0;
+       s = (struct config_str3list*)calloc(1, sizeof(struct config_str3list));
+       if(!s)
+               return 0;
+       s->str = item;
+       s->str2 = i2;
+       s->str3 = i3;
+       s->next = *head;
+       *head = s;
+       return 1;
+}
+
 int
 cfg_strbytelist_insert(struct config_strbytelist** head, char* item,
        uint8_t* i2, size_t i2len)
index 9a82a8f6d58f735f1f222bd0acad2180fb70b485..c6842168129420cbe0d3a18d0359440413d04e1a 100644 (file)
@@ -44,6 +44,7 @@
 struct config_stub;
 struct config_strlist;
 struct config_str2list;
+struct config_str3list;
 struct config_strbytelist;
 struct module_qstate;
 struct sock_list;
@@ -292,6 +293,8 @@ struct config_file {
        struct config_strlist* local_zones_nodefault;
        /** local data RRs configured */
        struct config_strlist* local_data;
+       /** local zone override types per netblock */
+       struct config_str3list* local_zone_overrides;
        /** unblock lan zones (reverse lookups for AS112 zones) */
        int unblock_lan_zones;
        /** insecure lan zones (don't validate AS112 zones) */
@@ -435,6 +438,21 @@ struct config_str2list {
        char* str2;
 };
 
+/**
+ * List of three strings for config options
+ */
+struct config_str3list {
+       /** next item in list */
+       struct config_str3list* next;
+       /** first string */
+       char* str;
+       /** second string */
+       char* str2;
+       /** third string */
+       char* str3;
+};
+
+
 /**
  * List of string, bytestring for config options
  */
@@ -586,9 +604,20 @@ int cfg_strlist_insert(struct config_strlist** head, char* item);
  */
 int cfg_str2list_insert(struct config_str2list** head, char* item, char* i2);
 
+/**
+ * Insert string into str3list.
+ * @param head: pointer to str3list head variable.
+ * @param item: new item. malloced by caller. If NULL the insertion fails.
+ * @param i2: 2nd string, malloced by caller. If NULL the insertion fails.
+ * @param i3: 3rd string, malloced by caller. If NULL the insertion fails.
+ * @return: true on success.
+ */
+int cfg_str3list_insert(struct config_str3list** head, char* item, char* i2,
+       char* i3);
+
 /**
  * Insert string into strbytelist.
- * @param head: pointer to str2list head variable.
+ * @param head: pointer to strbytelist head variable.
  * @param item: new item. malloced by caller. If NULL the insertion fails.
  * @param i2: 2nd string, malloced by caller. If NULL the insertion fails.
  * @param i2len: length of the i2 bytestring.
@@ -620,6 +649,12 @@ void config_delstrlist(struct config_strlist* list);
  */
 void config_deldblstrlist(struct config_str2list* list);
 
+/**
+ * Delete items in config triple string list.
+ * @param list: list.
+ */
+void config_deltrplstrlist(struct config_str3list* list);
+
 /**
  * Delete a stub item
  * @param p: stub item
index 940f484cae4af97814c02ca7710e4d558f73222a..88de2d8b75b52ad21001af1bff94e6b04067d5ba 100644 (file)
@@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 184
-#define YY_END_OF_BUFFER 185
+#define YY_NUM_RULES 185
+#define YY_END_OF_BUFFER 186
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -387,212 +387,212 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1852] =
+static yyconst flex_int16_t yy_accept[1861] =
     {   0,
-        1,    1,  166,  166,  170,  170,  174,  174,  178,  178,
-        1,    1,  185,  182,    1,  164,  164,  183,    2,  183,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      166,  167,  167,  168,  183,  170,  171,  171,  172,  183,
-      177,  174,  175,  175,  176,  183,  178,  179,  179,  180,
-      183,  181,  165,    2,  169,  183,  181,  182,    0,    1,
-        2,    2,    2,    2,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  166,    0,  170,    0,
-      177,    0,  174,  178,    0,  181,    0,    2,    2,  181,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  181,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  181,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,   74,  182,  182,  182,  182,  182,  182,    7,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  181,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  181,  182,  182,  182,  182,  182,   34,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  144,  182,
-       13,   14,  182,   16,   15,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  134,  182,  182,  182,
-      182,  182,  182,  182,    3,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  181,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  173,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,   37,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,   38,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,   18,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,   89,  173,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-       88,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,   72,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,   23,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,   35,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,   36,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,   25,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  158,  182,  182,  182,  182,  182,  182,   29,
-      182,   30,  182,  182,  182,   75,  182,   76,  182,   73,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,    6,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  141,
-      182,  182,  182,  182,   91,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,   26,  182,
-      182,  182,  182,  182,  182,  117,  182,  116,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,   39,  182,  182,  182,  182,  182,  182,
-      182,  182,   78,   77,  182,  182,  182,  182,  182,  182,
-      182,  113,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,   57,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,   61,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,   33,  182,  182,  182,  182,  182,  182,  182,  115,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,    5,
-
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  109,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  127,  182,  110,  182,  182,  139,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,   24,  182,  182,
-      182,  182,   80,  182,   81,   79,  182,  182,  182,  182,
-      182,  182,  182,   87,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  111,  182,  182,  182,
-
-      182,  182,  138,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,   71,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,   31,  182,  182,   20,  182,  182,  182,   17,  182,
-       96,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,   46,   48,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  145,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-       82,  182,  182,  182,  182,  182,  182,   86,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,   90,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      133,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  100,  182,  104,  182,  182,  182,  182,
-      182,   85,  182,  182,   67,  182,  125,  182,  182,  182,
-      182,  182,  140,  182,  182,  182,  182,  182,  182,  182,
-      150,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  103,  182,  182,  182,  182,  182,   49,   50,
-      182,  182,   32,   56,  105,  182,  118,  142,  114,  182,
-
-      182,   42,  182,  107,  182,  182,  182,  182,  182,    8,
-      182,  182,  182,   70,  182,  182,  182,  182,  160,  182,
-      124,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-       92,  149,  182,  182,  182,  182,  182,  182,  182,  182,
-      135,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  106,  182,   41,   43,
-      182,  182,  182,  182,  182,  182,  182,   69,  182,  182,
-      182,  182,  159,  182,  182,  182,  182,  129,   21,   22,
-
-      182,  182,  182,  182,  182,  182,  182,   66,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  131,
-      128,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-       40,  182,  182,  182,  182,  182,  182,  182,   12,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,   11,  182,
-      182,   19,  182,  182,  182,  163,  182,   44,  182,  137,
-      130,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,   99,   98,  182,  182,  182,  132,  126,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,   51,  182,
-
-      182,  136,  182,  182,  182,  182,  182,  182,  182,  182,
-       45,  182,  182,  182,   93,   95,  119,  182,  182,  182,
-       97,  182,  143,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  146,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  120,  182,  182,   27,  182,
-      182,  182,    4,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      148,  182,  182,  123,  182,  182,  182,  182,  182,  182,
-      182,   54,  182,   28,  182,   10,  182,  182,  182,  182,
-      182,  121,   58,  182,  182,  182,  102,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  147,   83,  182,  182,  182,
-      182,   60,   64,   59,  182,   52,  182,    9,  182,  182,
-      161,  182,  182,  101,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,   65,   63,  182,   53,  182,
-      112,  182,  122,  182,  182,   94,   47,  182,  182,  182,
-      182,  182,  182,  182,   84,   62,   55,  162,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,   68,  182,  157,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-
-      182,  182,  182,  182,  182,  182,  108,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  153,  182,  182,  182,  182,
-      182,  182,  182,  182,  182,  182,  182,  182,  182,  151,
-      182,  154,  155,  182,  182,  182,  182,  182,  152,  156,
-        0
+        1,    1,  167,  167,  171,  171,  175,  175,  179,  179,
+        1,    1,  186,  183,    1,  165,  165,  184,    2,  184,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      167,  168,  168,  169,  184,  171,  172,  172,  173,  184,
+      178,  175,  176,  176,  177,  184,  179,  180,  180,  181,
+      184,  182,  166,    2,  170,  184,  182,  183,    0,    1,
+        2,    2,    2,    2,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  167,    0,  171,    0,
+      178,    0,  175,  179,    0,  182,    0,    2,    2,  182,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  182,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  182,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,   74,  183,  183,  183,  183,  183,  183,    7,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  182,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  182,  183,  183,  183,  183,  183,   34,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  145,  183,
+       13,   14,  183,   16,   15,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  134,  183,  183,  183,
+      183,  183,  183,  183,    3,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  182,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  174,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,   37,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,   38,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,   18,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,   89,  174,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+       88,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,   72,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,   23,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,   35,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,   36,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,   25,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  159,  183,  183,  183,  183,  183,  183,   29,
+      183,   30,  183,  183,  183,   75,  183,   76,  183,   73,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,    6,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  141,
+      183,  183,  183,  183,   91,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,   26,  183,
+      183,  183,  183,  183,  183,  117,  183,  116,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,   39,  183,  183,  183,  183,  183,  183,
+      183,  183,   78,   77,  183,  183,  183,  183,  183,  183,
+      183,  113,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,   57,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,   61,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,   33,  183,  183,  183,  183,  183,  183,  183,  183,
+      115,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+        5,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  109,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  127,  183,  110,  183,  183,  139,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,   24,  183,
+      183,  183,  183,   80,  183,   81,   79,  183,  183,  183,
+      183,  183,  183,  183,   87,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  111,  183,  183,
+
+      183,  183,  183,  183,  138,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,   71,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,   31,  183,  183,   20,  183,  183,  183,
+       17,  183,   96,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,   46,   48,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  146,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,   82,  183,  183,  183,  183,  183,  183,   86,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,   90,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  133,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  100,  183,  104,  183,
+      183,  183,  183,  183,   85,  183,  183,   67,  183,  125,
+      183,  183,  183,  183,  183,  140,  183,  183,  183,  183,
+      183,  183,  183,  151,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  103,  183,  183,  183,  183,
+      183,   49,   50,  183,  183,   32,   56,  105,  183,  118,
+
+      183,  142,  114,  183,  183,   42,  183,  107,  183,  183,
+      183,  183,  183,    8,  183,  183,  183,   70,  183,  183,
+      183,  183,  161,  183,  124,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,   92,  150,  183,  183,  183,  183,
+      183,  183,  183,  183,  135,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      106,  183,  183,   41,   43,  183,  183,  183,  183,  183,
+      183,  183,   69,  183,  183,  183,  183,  160,  183,  183,
+
+      183,  183,  129,   21,   22,  183,  183,  183,  183,  183,
+      183,  183,   66,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  131,  128,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,   40,  183,  183,  183,  183,
+      183,  183,  183,   12,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,   11,  183,  183,   19,  183,  183,
+      183,  164,  183,   44,  183,  137,  130,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,   99,   98,
+      183,  183,  183,  132,  126,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,   51,  183,  183,  183,  136,  183,
+      183,  183,  183,  183,  183,  183,  183,   45,  183,  183,
+      183,   93,   95,  119,  183,  183,  183,   97,  183,  143,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  147,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  120,  183,  183,  183,   27,  183,  183,  183,
+        4,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  149,  183,
+      183,  123,  183,  183,  183,  183,  183,  183,  183,   54,
+      183,   28,  144,  183,   10,  183,  183,  183,  183,  183,
+
+      121,   58,  183,  183,  183,  102,  183,  183,  183,  183,
+      183,  183,  183,  183,  148,   83,  183,  183,  183,  183,
+       60,   64,   59,  183,   52,  183,    9,  183,  183,  162,
+      183,  183,  101,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,   65,   63,  183,   53,  183,  112,
+      183,  122,  183,  183,   94,   47,  183,  183,  183,  183,
+      183,  183,  183,   84,   62,   55,  163,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,   68,  183,  158,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  108,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  154,  183,  183,  183,  183,  183,
+      183,  183,  183,  183,  183,  183,  183,  183,  152,  183,
+      155,  156,  183,  183,  183,  183,  183,  153,  157,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -635,15 +635,15 @@ static yyconst YY_CHAR yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[1866] =
+static yyconst flex_uint16_t yy_base[1875] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 3326, 2459,   50, 3655, 3655, 3655,  129,   94,
+       87,  108, 2327, 2209,   50, 3682, 3682, 3682,  129,   94,
        70,  104,  130,   90,   92,  115,  127,   95,   84,  111,
       137,  148,   50,  170,  122,  150,  157,  160,  140,  166,
-     2191, 3655, 3655, 3655,   70, 2071, 3655, 3655, 3655,   42,
-     2030, 1970, 3655, 3655, 3655,  192, 1217, 3655, 3655, 3655,
-      141, 1000, 3655,  198, 3655,  202,  197,  956,  210,  120,
+     2199, 3682, 3682, 3682,   70, 2123, 3682, 3682, 3682,   42,
+     2030, 1970, 3682, 3682, 3682,  192, 1217, 3682, 3682, 3682,
+      141, 1000, 3682,  198, 3682,  202,  197,  956,  210,  120,
         0,  223,    0,    0,  103,  203,  180,  205,  164,  206,
       213,  210,  125,  216,  231,  218,  227,  224,  230,  233,
       234,  236,  240,  254,  238,  251,  255,  241,  252,  263,
@@ -673,7 +673,7 @@ static yyconst flex_uint16_t yy_base[1866] =
       684,  686,  687,  692,  694,  695,  689,  697,  700,  701,
       708,  712,  705,  720,  698,  717,  721,  724,  726,  728,
       718,  734,  737,  730,  736,  738,  739,  740,  742,  744,
-      748, 3655,  752,  746,  754,  755,  756,  757, 3655,  758,
+      748, 3682,  752,  746,  754,  755,  756,  757, 3682,  758,
       759,  760,  766,  763,  768,  775,  782,  770,  771,  780,
       781,  784,  786,  787,  789,  809,  792,  794,  790,  800,
       804,  796,  797,  802,  818,  811,  820,  814,  821,  822,
@@ -688,15 +688,15 @@ static yyconst flex_uint16_t yy_base[1866] =
       972,  983,  984,  985,  987,  988,  989,  990,  992,  993,
       995,  996, 1004,  997,  998, 1014, 1006, 1012, 1019, 1018,
      1020, 1022, 1021, 1025, 1026, 1027, 1031, 1029, 1037, 1040,
-     1038, 1041, 1042, 1050, 1043, 1056, 1051, 3655, 1053, 1055,
-     1058, 1059, 1061, 1068, 1066, 1067, 1069, 1095, 3655, 1072,
-     3655, 3655, 1073, 3655, 3655, 1077, 1070, 1078, 1088, 1118,
+     1038, 1041, 1042, 1050, 1043, 1056, 1051, 3682, 1053, 1055,
+     1058, 1059, 1061, 1068, 1066, 1067, 1069, 1095, 3682, 1072,
+     3682, 3682, 1073, 3682, 3682, 1077, 1070, 1078, 1088, 1118,
 
      1084, 1080, 1081, 1093, 1092, 1101, 1102, 1097, 1109, 1111,
      1121, 1123, 1113, 1126, 1127, 1129, 1131, 1132, 1134, 1135,
      1138, 1141, 1151, 1155, 1154, 1099, 1144, 1156, 1142, 1158,
-     1159, 1161, 1168, 1162, 1174, 1165, 3655, 1172, 1173, 1175,
-     1171, 1176, 1179, 1186, 3655, 1183, 1187, 1188, 1190, 1191,
+     1159, 1161, 1168, 1162, 1174, 1165, 3682, 1172, 1173, 1175,
+     1171, 1176, 1179, 1186, 3682, 1183, 1187, 1188, 1190, 1191,
      1195, 1193, 1196, 1198, 1199, 1203, 1205, 1201, 1221, 1206,
      1208, 1228, 1229, 1227, 1211, 1225, 1233, 1214, 1239, 1241,
      1242, 1232, 1234, 1248, 1244, 1252, 1254, 1246, 1255, 1249,
@@ -704,356 +704,358 @@ static yyconst flex_uint16_t yy_base[1866] =
      1272, 1273, 1279, 1285, 1283, 1294, 1295, 1296, 1301, 1303,
 
      1305, 1312, 1313, 1276, 1315, 1304, 1316, 1323, 1325, 1326,
-     1327, 1329, 1332, 1333, 3655, 1340, 1342, 1336, 1338, 1349,
+     1327, 1329, 1332, 1333, 3682, 1340, 1342, 1336, 1338, 1349,
      1347, 1343, 1350, 1353, 1354, 1346, 1356, 1357, 1358, 1364,
-     1371, 3655, 1360, 1367, 1368, 1370, 1376, 1382, 1380, 1390,
-     1393, 1384, 3655, 1399, 1400, 1392, 1396, 1386, 1402, 1403,
+     1371, 3682, 1360, 1367, 1368, 1370, 1376, 1382, 1380, 1390,
+     1393, 1384, 3682, 1399, 1400, 1392, 1396, 1386, 1402, 1403,
      1405, 1407, 1409, 1411, 1412, 1413, 1415, 1420, 1422, 1424,
-     1427, 1425, 1426, 1432, 1433, 1434, 1435, 3655, 1436, 1438,
+     1427, 1425, 1426, 1432, 1433, 1434, 1435, 3682, 1436, 1438,
      1437, 1444, 1455, 1458, 1447, 1460, 1449, 1451, 1457, 1378,
-     1461, 1463, 1464, 1466, 3655,  158, 1467, 1470, 1473, 1476,
+     1461, 1463, 1464, 1466, 3682,  158, 1467, 1470, 1473, 1476,
      1480, 1477, 1484, 1474, 1478, 1490, 1486, 1487, 1496, 1494,
 
      1497, 1499, 1500, 1502, 1504, 1505, 1507, 1512, 1511, 1513,
      1519, 1515, 1521, 1523, 1524, 1526, 1529, 1532, 1535, 1534,
      1537, 1538, 1539, 1540, 1541, 1542, 1547, 1546, 1550, 1554,
-     3655, 1569, 1557, 1558, 1555, 1567, 1556, 1578, 1565, 1574,
+     3682, 1569, 1557, 1558, 1555, 1567, 1556, 1578, 1565, 1574,
      1579, 1576, 1581, 1587, 1585, 1591, 1592, 1593, 1595, 1598,
-     1599, 1583, 1605, 1607, 1606, 1608, 1614, 1609, 1615, 3655,
+     1599, 1583, 1605, 1607, 1606, 1608, 1614, 1609, 1615, 3682,
      1616, 1618, 1617, 1622, 1641, 1624, 1625, 1619, 1629, 1621,
-     1637, 1646, 1642, 1648, 3655, 1649, 1650, 1651, 1654, 1656,
+     1637, 1646, 1642, 1648, 3682, 1649, 1650, 1651, 1654, 1656,
      1659, 1660, 1664, 1661, 1666, 1667, 1668, 1677, 1669, 1674,
-     1672, 3655, 1688, 1689, 1685, 1691, 1692, 1693, 1694, 1696,
+     1672, 3682, 1688, 1689, 1685, 1691, 1692, 1693, 1694, 1696,
 
      1682, 1697, 1703, 1699, 1704, 1706, 1707, 1708, 1710, 1711,
-     1714, 1716, 1723, 1715, 1726, 3655, 1727, 1734, 1728, 1735,
+     1714, 1716, 1723, 1715, 1726, 3682, 1727, 1734, 1728, 1735,
      1306, 1739, 1745, 1744, 1741, 1742, 1747, 1749, 1750, 1751,
      1754, 1756, 1757, 1758, 1762, 1763, 1764, 1765, 1766, 1780,
      1781, 1770, 1759, 1782, 1783, 1772, 1785, 1796, 1799, 1800,
-     1802, 3655, 1805, 1806, 1795, 1807, 1808, 1792, 1819, 1821,
+     1802, 3682, 1805, 1806, 1795, 1807, 1808, 1792, 1819, 1821,
      1798, 1809, 1815, 1823, 1824, 1831, 1825, 1827, 1829, 1832,
      1833, 1834, 1835, 1836, 1840, 1845, 1849, 1852, 1853, 1858,
-     1859, 1862, 3655, 1860, 1839, 1865, 1869, 1863, 1876, 3655,
-     1861, 3655, 1877, 1874, 1889, 3655, 1886, 3655, 1888, 3655,
+     1859, 1862, 3682, 1860, 1839, 1865, 1869, 1863, 1876, 3682,
+     1861, 3682, 1877, 1874, 1889, 3682, 1886, 3682, 1888, 3682,
 
      1890, 1891, 1894, 1878, 1896, 1895, 1897, 1899, 1901, 1904,
-     1902, 1906, 1907, 1908, 1913, 3655, 1914, 1915, 1919, 1923,
-     1916, 1922, 1925, 1926, 1931, 1930, 1943, 1937, 1944, 3655,
-     1940, 1948, 1941, 1945, 3655, 1949, 1952, 1950, 1955, 1958,
+     1902, 1906, 1907, 1908, 1913, 3682, 1914, 1915, 1919, 1923,
+     1916, 1922, 1925, 1926, 1931, 1930, 1943, 1937, 1944, 3682,
+     1940, 1948, 1941, 1945, 3682, 1949, 1952, 1950, 1955, 1958,
      1968, 1965, 1969, 1966, 1956, 1974, 1972, 1979, 1982, 1983,
      1984, 1985, 1991, 1987, 1988, 1995, 1992, 1989, 1996, 1998,
-     1999, 2003, 2001, 2011, 2005, 2008, 2009, 2012, 3655, 2020,
-     2017, 2021, 2024, 2026, 2027, 3655, 2029, 3655, 2040, 2034,
-     2041, 2032, 2042, 2044, 2045, 2047, 2055, 2053, 2058, 2059,
-     2061, 2060, 2064, 2065, 2062, 2066, 2067, 2069, 2073, 2070,
-
-     2088, 2081, 2076, 3655, 2091, 2083, 2097, 2096, 2095, 2104,
-     2098, 2105, 3655, 3655, 2109, 2100, 2106, 2107, 2121, 2112,
-     2118, 3655, 2110, 2119, 2120, 2122, 2129, 2131, 2132, 2133,
-     2138, 2135, 2139, 2141, 2142, 2143, 2150, 2144, 2147, 2151,
-     2159, 2160, 2167, 3655, 2164, 2152, 2171, 2168, 2172, 2173,
-     2174, 2175, 2176, 2178, 2179, 2183, 2185, 2193, 2189, 2192,
-     2194, 2196, 2197, 2202, 2204, 2205, 2212, 2213, 3655, 2220,
-     2206, 2223, 2208, 2222, 2225, 2232, 2228, 2219, 2229, 2235,
-     2231, 3655, 2234, 2236, 2238, 2243, 2244, 2246, 2252, 3655,
-     2250, 2255, 2256, 2258, 2261, 2260, 2262, 2264, 2267, 3655,
-
-     2268, 2277, 2274, 2275, 2281, 2284, 2288, 2280, 2289, 2291,
-     2278, 2292, 2293, 2295, 2299, 2300, 2302, 2303, 2305, 2306,
-     2307, 2309, 2310, 2315, 2318, 2319, 2328, 2330, 2332, 2340,
-     2324, 2334, 2341, 2337, 2338, 2343, 2344, 2352, 2345, 2353,
-     2351, 3655, 2354, 2358, 2361, 2365, 2356, 2362, 2366, 2372,
-     2370, 3655, 2375, 3655, 2374, 2373, 3655, 2381, 2383, 2384,
-     2386, 2387, 2388, 2390, 2391, 2397, 2389, 3655, 2398, 2400,
-     2402, 2406, 3655, 2409, 3655, 3655, 2401, 2412, 2419, 1700,
-     2420, 2422, 2428, 3655, 2423, 2413, 2431, 2425, 2417, 2429,
-     2435, 2436, 2437, 2439, 2440, 2442, 3655, 2444, 2443, 2446,
-
-     2450, 2452, 3655, 2451, 2456, 2453, 2466, 2467, 2468, 2470,
-     2458, 2472, 2482, 2478, 2474, 2480, 3655, 2481, 2484, 2486,
-     2489, 2491, 2493, 2499, 2496, 2495, 2502, 2503, 2505, 2508,
-     2504, 3655, 2518, 2519, 3655, 2509, 2510, 2511, 3655, 2520,
-     3655, 2525, 2521, 2528, 2529, 2533, 2534, 2540, 2535, 2537,
-     2542, 2544, 2550, 2548, 2546, 3655, 3655, 2552, 2555, 2559,
-     2560, 2562, 2563, 2570, 2567, 2569, 3655, 2571, 2573, 2575,
-     2576, 2577, 2579, 2583, 2585, 2586, 2580, 2587, 2588, 2589,
-     3655, 2593, 2594, 2600, 2601, 2603, 2602, 3655, 2605, 2606,
-     2607, 2610, 2612, 2626, 2629, 2631, 2617, 2621, 2636, 2638,
-
-     2640, 2633, 2642, 2644, 2646, 2647, 3655, 2648, 2650, 2651,
-     2655, 2656, 2657, 2658, 2659, 2665, 2662, 2667, 2668, 2672,
-     3655, 2669, 2673, 2676, 2679, 2678, 2680, 2685, 2686, 2692,
-     2688, 2690, 2695, 2694, 2698, 2701, 2703, 2705, 2704, 2706,
-     2707, 2714, 2723, 3655, 2710, 3655, 2716, 2717, 2729, 2731,
-     2726, 3655, 2728, 2733, 3655, 2735, 3655, 2734, 2736, 2738,
-     2739, 2745, 3655, 2749, 2750, 2752, 2754, 2755, 2756, 2759,
-     3655, 2757, 2762, 2768, 2771, 2763, 2770, 2773, 2772, 2774,
-     2785, 2781, 3655, 2778, 2786, 2793, 2782, 2611, 3655, 3655,
-     2789, 2795, 3655, 3655, 3655, 2798, 3655, 3655, 3655, 2799,
-
-     2801, 3655, 2806, 3655, 2807, 2808, 2810, 2811, 2812, 3655,
-     2813, 2815, 2819, 3655, 2814, 2821, 2820, 2822, 3655, 2825,
-     3655, 2829, 2828, 2831, 2835, 2842, 2844, 2847, 2836, 2839,
-     2849, 2850, 2851, 2853, 2852, 2855, 2856, 2859, 2860, 2864,
-     2866, 2867, 2868, 2870, 2871, 2873, 2874, 2876, 2883, 2886,
-     3655, 3655, 2884, 2889, 2891, 2892, 2894, 2895, 2896, 2897,
-     3655, 2900, 2901, 2902, 2905, 2906, 2908, 2911, 2916, 2918,
-     2928, 2919, 2921, 2922, 2925, 2929, 3655, 2931, 3655, 3655,
-     2932, 2939, 2934, 2938, 2940, 2944, 2947, 3655, 2945, 2955,
-     2957, 2948, 3655, 2963, 2946, 2967, 2969, 3655, 3655, 3655,
-
-     2970, 2954, 2964, 2972, 2974, 2975, 2978, 3655, 2980, 2982,
-     2983, 2981, 2985, 2990, 2991, 2997, 2999, 3001, 3003, 3655,
-     3655, 2993, 3010, 3007, 3008, 3009, 3012, 3014, 3015, 3016,
-     3655, 3021, 3017, 3019, 3025, 3029, 3030, 3033, 3655, 3026,
-     3023, 3036, 3040, 3037, 3041, 3047, 3044, 3048, 3655, 3049,
-     3051, 3655, 3057, 3054, 3059, 3655, 3062, 3655, 3066, 3655,
-     3655, 3060, 3069, 3072, 3077, 3079, 3082, 3067, 3073, 3088,
-     3090, 3091, 3655, 3655, 3093, 3094, 3101, 3655, 3655, 3097,
-     3086, 3105, 3098, 3099, 3106, 3108, 3109, 3113, 3111, 3114,
-     3117, 3122, 3124, 3112, 3123, 3125, 3126, 3127, 3655, 3136,
-
-     3137, 3655, 3133, 3142, 3139, 3144, 3145, 3155, 3071, 3148,
-     3655, 3150, 3152, 3131, 3655, 3655, 3655, 3158, 3161, 3165,
-     3655, 3166, 3655, 3167, 3168, 3175, 3169, 3172, 3173, 3183,
-     3179, 3181, 3655, 3182, 3184, 3186, 3189, 3187, 3192, 3194,
-     3195, 3197, 3198, 3206, 3200, 3655, 3210, 3207, 3655, 3215,
-     3211, 3216, 3655, 3217, 3220, 3221, 3223, 3226, 3227, 3228,
-     3229, 3233, 3230, 3235, 3238, 3245, 3237, 3252, 3236, 3258,
-     3655, 3260, 3244, 3655, 3261, 3248, 3264, 3268, 3271, 3273,
-     3274, 3655, 3276, 3655, 3277, 3655, 3281, 3251, 3282, 3284,
-     3285, 3655, 3655, 3286, 3288, 3292, 3655, 3293, 3289, 3295,
-
-     3296, 3299, 3300, 3302, 3304, 3655, 3655, 3305, 3307, 3311,
-     3308, 3655, 3655, 3655, 3320, 3655, 3322, 3655, 3328, 3316,
-     3655, 3332, 3321, 3655, 3324, 3334, 3338, 3335, 3329, 3341,
-     3339, 3343, 3344, 3345, 3347, 3655, 3655, 3351, 3655, 3353,
-     3655, 3358, 3655, 3355, 3361, 3655, 3655, 3363, 3370, 3359,
-     3369, 3368, 3371, 3372, 3655, 3655, 3655, 3655, 3375, 3376,
-     3380, 3377, 3378, 3381, 3382, 3383, 3385, 3393, 3386, 3402,
-     3404, 3405, 3394, 3403, 3411, 3407, 3655, 3412, 3655, 3413,
-     3420, 3422, 3414, 3416, 3423, 3424, 3425, 3426, 3430, 3431,
-     3435, 3436, 3433, 3445, 3448, 3449, 3451, 3447, 3460, 3458,
-
-     3461, 3459, 3462, 3469, 3463, 3467, 3655, 3465, 3471, 3472,
-     3473, 3474, 3479, 3476, 3487, 3492, 3489, 3496, 3483, 3498,
-     3499, 3500, 3485, 3505, 3501, 3655, 3508, 3509, 3511, 3512,
-     3515, 3517, 3518, 3521, 3524, 3519, 3528, 3533, 3534, 3655,
-     3535, 3655, 3655, 3538, 3525, 3529, 3546, 3550, 3655, 3655,
-     3655, 3563, 3570, 3577, 3584, 3591,   94, 3598, 3605, 3612,
-     3619, 3626, 3633, 3640, 3647
+     1999, 2003, 2001, 2011, 2005, 2008, 2009, 2012, 3682, 2020,
+     2017, 2021, 2024, 2026, 2027, 3682, 2029, 3682, 2040, 2034,
+     2041, 2032, 2042, 2045, 2047, 2052, 2055, 2054, 2057, 2058,
+     2060, 2062, 2063, 2068, 2065, 2066, 2069, 2067, 2072, 2082,
+
+     2073, 2085, 2075, 3682, 2091, 2089, 2100, 2092, 2096, 2104,
+     2101, 2102, 3682, 3682, 2109, 2106, 2103, 2108, 2115, 2112,
+     2113, 3682, 2118, 2120, 2125, 2129, 2132, 2126, 2122, 2133,
+     2140, 2136, 2142, 2141, 2143, 2144, 2151, 2147, 2152, 2154,
+     2157, 2158, 2165, 3682, 2162, 2166, 2169, 2171, 2172, 2173,
+     2174, 2176, 2179, 2178, 2181, 2180, 2189, 2190, 2192, 2193,
+     2194, 2197, 2198, 2203, 2205, 2206, 2216, 2217, 3682, 2224,
+     2207, 2226, 2208, 2223, 2227, 2234, 2230, 2215, 2231, 2237,
+     2236, 3682, 2238, 2239, 2241, 2245, 2246, 2248, 2250, 2253,
+     3682, 2255, 2258, 2259, 2262, 2261, 2263, 2265, 2267, 2275,
+
+     3682, 2273, 2281, 2277, 2279, 2285, 2287, 2284, 2290, 2292,
+     2288, 2294, 2298, 2296, 2300, 2302, 2303, 2305, 2306, 2307,
+     2309, 2312, 2317, 2319, 2324, 2311, 2326, 2334, 2337, 2343,
+     2344, 2327, 2333, 2346, 2347, 2348, 2349, 2331, 2355, 2351,
+     2362, 2354, 3682, 2360, 2364, 2368, 2370, 2358, 2371, 2374,
+     2375, 2376, 3682, 2382, 3682, 2380, 2372, 3682, 2386, 2389,
+     2390, 2391, 2393, 2394, 2392, 2397, 2404, 2395, 3682, 2405,
+     2401, 2403, 2407, 3682, 2415, 3682, 3682, 2408, 2418, 2425,
+     1700, 2421, 2424, 2428, 3682, 2429, 2430, 2433, 2431, 2435,
+     2437, 2439, 2441, 2438, 2442, 2443, 2445, 3682, 2447, 2444,
+
+     2448, 2454, 2455, 2458, 3682, 2460, 2469, 2461, 2470, 2471,
+     2472, 2476, 2478, 2479, 2485, 2483, 2482, 2484, 3682, 2486,
+     2489, 2491, 2493, 2497, 2498, 2506, 2502, 2508, 2504, 2511,
+     2513, 2500, 2514, 3682, 2517, 2519, 3682, 2521, 2525, 2527,
+     3682, 2529, 3682, 2530, 2531, 2528, 2532, 2538, 2533, 2540,
+     2544, 2547, 2549, 2548, 2557, 2550, 2555, 3682, 3682, 2560,
+     2562, 2565, 2566, 2568, 2569, 2577, 2573, 2582, 3682, 2570,
+     2574, 2576, 2583, 2584, 2585, 2586, 2591, 2588, 2593, 2596,
+     2594, 2597, 3682, 2600, 2604, 2605, 2606, 2607, 2609, 3682,
+     2611, 2612, 2613, 2617, 2621, 2632, 2636, 2638, 2614, 2639,
+
+     2641, 2643, 2645, 2646, 2648, 2649, 2651, 2654, 2655, 3682,
+     2656, 2658, 2659, 2663, 2664, 2660, 2622, 2668, 2671, 2672,
+     2673, 2675, 2677, 3682, 2679, 2680, 2681, 2683, 2686, 2689,
+     2693, 2690, 2697, 2695, 2700, 2701, 2702, 2705, 2707, 2709,
+     2710, 2711, 2713, 2715, 2724, 2717, 3682, 2723, 3682, 2726,
+     2730, 2737, 2733, 2736, 3682, 2738, 2739, 3682, 2740, 3682,
+     2741, 2745, 2746, 2747, 2755, 3682, 2758, 2749, 2760, 2762,
+     2751, 2764, 2767, 3682, 2769, 2772, 2771, 2776, 2777, 2778,
+     2780, 2779, 2782, 2790, 2788, 3682, 2786, 2791, 2798, 2795,
+     2804, 3682, 3682, 2800, 2807, 3682, 3682, 3682, 2810, 3682,
+
+     2801, 3682, 3682, 2811, 2813, 3682, 2818, 3682, 2820, 2821,
+     2789, 2823, 2824, 3682, 2825, 2826, 2828, 3682, 2830, 2836,
+     2832, 2833, 3682, 2835, 3682, 2837, 2841, 2840, 2846, 2853,
+     2856, 2858, 2847, 2849, 2860, 2861, 2862, 2863, 2864, 2866,
+     2869, 2870, 2871, 2875, 2876, 2879, 2880, 2877, 2882, 2885,
+     2887, 2898, 2902, 2905, 3682, 3682, 2883, 2889, 2886, 2894,
+     2909, 2899, 2910, 2911, 3682, 2916, 2913, 2917, 2920, 2921,
+     2923, 2926, 2925, 2930, 2932, 2931, 2933, 2934, 2938, 2936,
+     3682, 2937, 2940, 3682, 3682, 2945, 2947, 2952, 2954, 2955,
+     2958, 2960, 3682, 2961, 2962, 2968, 2970, 3682, 2972, 2963,
+
+     2975, 2978, 3682, 3682, 3682, 2979, 2981, 2984, 2985, 2986,
+     2987, 2988, 3682, 2989, 2992, 2994, 2995, 3001, 3008, 2998,
+     3014, 3011, 3013, 3018, 3682, 3682, 3002, 3024, 3021, 3022,
+     3020, 3023, 3026, 3028, 3030, 3682, 3032, 3031, 3037, 3036,
+     3039, 3040, 3043, 3682, 3044, 3046, 3051, 3054, 3055, 3047,
+     3057, 3059, 3060, 3062, 3682, 3064, 3065, 3682, 3071, 3069,
+     3072, 3682, 3076, 3682, 3080, 3682, 3682, 3081, 3084, 3086,
+     3091, 3093, 3095, 3082, 3088, 3103, 3097, 3104, 3682, 3682,
+     3106, 3107, 3114, 3682, 3682, 3110, 3099, 3118, 3111, 3112,
+     3119, 3121, 3122, 3126, 3124, 3127, 3130, 3135, 3137, 3125,
+
+     3136, 3138, 3139, 3140, 3682, 3149, 3150, 3152, 3682, 3146,
+     3155, 3161, 3158, 3156, 3169, 3163, 3166, 3682, 3170, 3172,
+     3173, 3682, 3682, 3682, 3177, 3180, 3174, 3682, 3185, 3682,
+     3178, 3186, 3193, 3189, 3191, 3194, 3197, 3195, 3200, 3682,
+     3202, 3201, 3204, 3205, 3208, 3207, 3211, 3214, 3213, 3215,
+     3225, 3219, 3682, 3227, 3229, 3231, 3682, 3233, 3234, 3235,
+     3682, 3239, 3237, 3242, 3244, 3246, 3247, 3248, 3249, 3253,
+     3250, 3255, 3256, 3263, 3257, 3270, 3261, 3272, 3682, 3274,
+     3267, 3682, 3277, 3280, 3283, 3285, 3290, 3292, 3293, 3682,
+     3296, 3682, 3682, 3299, 3682, 3302, 3297, 3303, 3305, 3308,
+
+     3682, 3682, 3306, 3310, 3315, 3682, 3316, 3307, 3317, 3318,
+     3322, 3323, 3324, 3326, 3682, 3682, 3327, 3329, 3333, 3330,
+     3682, 3682, 3682, 3343, 3682, 3335, 3682, 3349, 3337, 3682,
+     3353, 3344, 3682, 3346, 3355, 3357, 3358, 3350, 3361, 3360,
+     3362, 3365, 3366, 3369, 3682, 3682, 3372, 3682, 3374, 3682,
+     3378, 3682, 3379, 3382, 3682, 3682, 3384, 3393, 3380, 3390,
+     3386, 3389, 3392, 3682, 3682, 3682, 3682, 3396, 3397, 3398,
+     3399, 3401, 3403, 3402, 3404, 3410, 3414, 3406, 3423, 3411,
+     3419, 3426, 3427, 3433, 3430, 3682, 3431, 3682, 3434, 3437,
+     3440, 3436, 3439, 3438, 3441, 3443, 3445, 3447, 3448, 3449,
+
+     3456, 3459, 3463, 3465, 3466, 3468, 3469, 3477, 3475, 3476,
+     3479, 3480, 3486, 3482, 3484, 3682, 3485, 3487, 3489, 3491,
+     3492, 3495, 3494, 3502, 3509, 3507, 3511, 3496, 3517, 3514,
+     3519, 3505, 3520, 3522, 3682, 3523, 3527, 3529, 3530, 3533,
+     3531, 3535, 3536, 3539, 3540, 3543, 3545, 3546, 3682, 3551,
+     3682, 3682, 3552, 3555, 3558, 3560, 3562, 3682, 3682, 3682,
+     3590, 3597, 3604, 3611, 3618,   94, 3625, 3632, 3639, 3646,
+     3653, 3660, 3667, 3674
     } ;
 
-static yyconst flex_int16_t yy_def[1866] =
+static yyconst flex_int16_t yy_def[1875] =
     {   0,
-     1851,    1, 1852, 1852, 1853, 1853, 1854, 1854, 1855, 1855,
-     1856, 1856, 1851, 1857, 1851, 1851, 1851, 1851, 1858, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1859, 1851, 1851, 1851, 1859, 1860, 1851, 1851, 1851, 1860,
-     1861, 1851, 1851, 1851, 1851, 1861, 1862, 1851, 1851, 1851,
-     1862, 1863, 1851, 1864, 1851, 1863, 1863, 1857, 1857, 1851,
-     1865, 1858, 1865, 1858, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1859, 1859, 1860, 1860,
-     1861, 1861, 1851, 1862, 1862, 1863, 1863, 1864, 1864, 1863,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1863, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1863, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1863, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1863, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-     1851, 1851, 1857, 1851, 1851, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1863, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1851, 1863, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-     1857, 1851, 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1851,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-     1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1851, 1851, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1851, 1857, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857,
-     1857, 1857, 1851, 1857, 1851, 1851, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1851, 1857, 1857, 1857, 1851, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1851, 1857, 1851, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1857, 1851, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1851, 1851,
-     1857, 1857, 1851, 1851, 1851, 1857, 1851, 1851, 1851, 1857,
-
-     1857, 1851, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1851,
-     1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1851, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1851, 1851,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1851, 1851, 1851,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-     1857, 1851, 1857, 1857, 1857, 1851, 1857, 1851, 1857, 1851,
-     1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1851, 1851, 1857, 1857, 1857, 1851, 1851, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857,
-
-     1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1857, 1851, 1851, 1851, 1857, 1857, 1857,
-     1851, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1851, 1857,
-     1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1851, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1851, 1857, 1851, 1857, 1851, 1857, 1857, 1857, 1857,
-     1857, 1851, 1851, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1851, 1851, 1857, 1857, 1857,
-     1857, 1851, 1851, 1851, 1857, 1851, 1857, 1851, 1857, 1857,
-     1851, 1857, 1857, 1851, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1851, 1857, 1851, 1857,
-     1851, 1857, 1851, 1857, 1857, 1851, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1851, 1851, 1851, 1851, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1851, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-
-     1857, 1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1851, 1857, 1857, 1857, 1857,
-     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1851,
-     1857, 1851, 1851, 1857, 1857, 1857, 1857, 1857, 1851, 1851,
-        0, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851
+     1860,    1, 1861, 1861, 1862, 1862, 1863, 1863, 1864, 1864,
+     1865, 1865, 1860, 1866, 1860, 1860, 1860, 1860, 1867, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1868, 1860, 1860, 1860, 1868, 1869, 1860, 1860, 1860, 1869,
+     1870, 1860, 1860, 1860, 1860, 1870, 1871, 1860, 1860, 1860,
+     1871, 1872, 1860, 1873, 1860, 1872, 1872, 1866, 1866, 1860,
+     1874, 1867, 1874, 1867, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1868, 1868, 1869, 1869,
+     1870, 1870, 1860, 1871, 1871, 1872, 1872, 1873, 1873, 1872,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1872, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1872, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1872, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1872, 1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1860, 1860, 1866, 1860, 1860, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1872, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1872, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1860, 1866, 1866, 1866, 1860, 1866, 1860, 1866, 1860,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1860, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1860, 1866, 1866, 1860, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1860, 1866, 1860, 1860, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1860, 1866, 1866, 1860, 1866, 1866, 1866,
+     1860, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1860, 1866, 1860,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1860, 1860, 1866, 1866, 1860, 1860, 1860, 1866, 1860,
+
+     1866, 1860, 1860, 1866, 1866, 1860, 1866, 1860, 1866, 1866,
+     1866, 1866, 1866, 1860, 1866, 1866, 1866, 1860, 1866, 1866,
+     1866, 1866, 1860, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1860, 1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1860, 1866, 1866,
+
+     1866, 1866, 1860, 1860, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1860, 1866, 1866,
+     1866, 1860, 1866, 1860, 1866, 1860, 1860, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1860,
+     1866, 1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1860, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866,
+     1866, 1860, 1860, 1860, 1866, 1866, 1866, 1860, 1866, 1860,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1860, 1866, 1866, 1866, 1860, 1866, 1866, 1866,
+     1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860,
+     1866, 1860, 1860, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+
+     1860, 1860, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866,
+     1860, 1860, 1860, 1866, 1860, 1866, 1860, 1866, 1866, 1860,
+     1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1860, 1866, 1860, 1866, 1860,
+     1866, 1860, 1866, 1866, 1860, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1860, 1860, 1860, 1860, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1860, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1860, 1866, 1866, 1866, 1866, 1866,
+     1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1860, 1866,
+     1860, 1860, 1866, 1866, 1866, 1866, 1866, 1860, 1860,    0,
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860, 1860, 1860, 1860
     } ;
 
-static yyconst flex_uint16_t yy_nxt[3695] =
+static yyconst flex_uint16_t yy_nxt[3722] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -1244,7 +1246,7 @@ static yyconst flex_uint16_t yy_nxt[3695] =
 
        69,   69,  911,   69,   69,   69,   69,  916,   69,   69,
       919,   69,   69,  913,  917,   69,   69,  915,   69,   69,
-       69,  925,   69,   69,  914,  920,   69,   69,   69, 1285,
+       69,  925,   69,   69,  914,  920,   69,   69,   69, 1287,
       923,  921,  918,  929,  930,   69,  922,  924,   69,   69,
        69,  934,  926,  932,  928,  935,   69,   69,  927,  936,
       931,   69,  940,   69,   69,  937,   69,   69,  933,   69,
@@ -1279,192 +1281,195 @@ static yyconst flex_uint16_t yy_nxt[3695] =
        69,   69, 1062,   69, 1063,   69, 1064,   69, 1077, 1071,
        69,   69, 1067,   69,   69, 1074, 1076, 1075, 1072,   69,
      1073, 1082,   69,   69, 1083, 1080,   69, 1078,   69,   69,
-     1079,   69,  132, 1085,   69, 1081,   69, 1086, 1084, 1091,
-     1087, 1090,   69,   69,   69, 1088,   69,   69, 1092,   69,
-     1093, 1089, 1099, 1094, 1100,   69, 1096,   69, 1098, 1097,
-       69,   69,   69,   69,   69, 1095,   69,   69,   69,   69,
-     1109,   69,   69,  130, 1102,   69, 1104, 1112,   69, 1106,
-     1101, 1103, 1105,   69, 1111,   69, 1108, 1110, 1118, 1107,
-
-       69, 1113, 1115,   69, 1120, 1116, 1117,   69,   69,   69,
-       69, 1123,   69, 1119, 1121, 1114,   69,   69,   69,   69,
-     1125,   69,   69, 1124,   69, 1128, 1126, 1122, 1131, 1127,
-       69,   69,   69,   69,   69, 1135, 1129, 1136, 1130, 1137,
-     1132,   69, 1134,   69,   69,   69, 1138,   69, 1133, 1142,
-       69,   69, 1139,   69,   69,   69,   69, 1148, 1144,   69,
-     1141, 1143,   69,   69,   69, 1145, 1146, 1140, 1149, 1151,
-     1152,   69,   69, 1156, 1147, 1153,   69, 1150, 1154,   69,
-       69, 1155, 1157,   69,   69,   69,   69,   69,   69, 1159,
-       69,   69, 1158, 1163, 1160,   69, 1168,   69, 1161, 1164,
-
-     1169,   69, 1162,  128,   69,   69,   69, 1173,   69,   69,
-     1167, 1166, 1165, 1175,   69, 1176,   69,   69,   69, 1178,
-       69, 1177, 1170, 1171,   69,   69, 1172, 1180, 1179, 1174,
-     1182,   69,   69, 1184,   69,   69, 1181,   69, 1185, 1186,
-       69,   69, 1193,   69,   69, 1183,   69,   69,   69, 1197,
-       69, 1191, 1187, 1188, 1189,   69,   69, 1199,   69, 1190,
-     1195, 1192,   69, 1194,   69, 1201, 1203,   69,   69, 1196,
-       69, 1202,   69,   69,   69, 1208,   69, 1205, 1200,   69,
-       69, 1198, 1206, 1204, 1212, 1211,   69,   69, 1215,   69,
-       69, 1216,   69,   69, 1214, 1210,   69, 1218, 1207, 1217,
-
-       69,   69, 1209,   69,   69,   69, 1213,   69, 1223, 1221,
-     1219,   69,   69, 1226,   69,   69, 1222,   69,   69,   69,
-     1232,   69,   69, 1220, 1230, 1224, 1235,   69, 1231, 1227,
-       69,   69, 1229, 1233, 1228, 1238,   69, 1225, 1234, 1240,
-       69, 1239,   69, 1241,   69, 1237,   69, 1242, 1245,   69,
-       69, 1236,   69,   69, 1247,   69,   69,   69, 1244, 1250,
-     1252, 1246, 1243,   69,   69,   69,   69, 1248,   69, 1254,
-       69, 1255, 1256,   69,   69, 1253, 1257,   69,   69, 1251,
-     1259, 1249,   69, 1260,   69,   69,   69,   69, 1258, 1264,
-     1261, 1262, 1263,   69, 1267,   69,   69, 1265,   69,   69,
-
-       69,   69,   69,   69, 1274, 1266, 1272, 1269, 1273,   69,
-       69, 1276,   69,   69,   69, 1275, 1268, 1270,   69, 1271,
-     1281,   69, 1277, 1279,   69,   69, 1284, 1280, 1282,   69,
-     1278,   69,   69, 1286,   69,   69, 1287,   69, 1283, 1288,
-       69,   69, 1289,   69, 1291, 1290, 1292,   69,   69,   69,
-     1293,   69,   69, 1294,   69,   69,   69, 1302,   69, 1295,
-     1296, 1301,   69,   69,   69,   69, 1298, 1307,   69, 1304,
-       69,   69, 1299, 1305, 1300, 1297, 1303, 1306,   69,   69,
-       69, 1310,   69, 1309,   69, 1311,   69, 1312, 1313, 1315,
-       69, 1308,   69,   69,   69, 1316,   69, 1321,   69, 1317,
-
-     1318,   69, 1322,   69, 1314,   69, 1325,   69,   69, 1327,
-     1320,   69, 1319, 1326,   69,   69,   69,   69, 1323, 1331,
-       69,   69,   69,   69, 1329, 1324, 1328, 1330, 1333, 1332,
-       69,   69,   69,   69, 1336, 1334, 1335,   69, 1339, 1338,
-       69,   69, 1337, 1340, 1344,   69,   69,   69, 1341,   69,
-     1343, 1346,   69, 1348,   69, 1345,   69, 1351,   69, 1349,
-       69, 1352,   69, 1355,   69, 1342, 1347,   69, 1353, 1350,
-     1357,   69,   69, 1358,   69,   69, 1356, 1361, 1354,   69,
-     1363,   69,   69,   69, 1362,   69, 1359,   69,   69,   69,
-     1365,   69,   69, 1360, 1368,   69, 1371,   69,   69,   69,
-
-       69,   69, 1372, 1367, 1374,   69,   69, 1373, 1364, 1369,
-     1366, 1370,   69,   69,   69,   69, 1383,   69,   69,   69,
-     1376, 1384,   69,   69,   69, 1474, 1375, 1381, 1377,   69,
-     1378, 1379, 1385,   69, 1380, 1382, 1386, 1387,   69, 1388,
-     1389,   69, 1390,   69, 1391,   69, 1392, 1393,   69, 1394,
-       69, 1395,   69, 1397,   69, 1398,   69, 1399,   69,   69,
-       69, 1402,   69,   69, 1396, 1401, 1404,   69,   69,   69,
-       69,   69, 1408, 1407,   69, 1406, 1410,   69, 1400,   69,
-       69,   69, 1403, 1414,   69,   69, 1405, 1409,   69, 1419,
-       69,   69,   69, 1411, 1412, 1418, 1421,   69,   69, 1413,
-
-       69, 1415,   69, 1417,   69, 1423,   69,   69, 1416, 1424,
-       69, 1420, 1426,   69, 1425,   69,   69,   69,   69,   69,
-     1430, 1435,   69, 1428, 1422, 1432,   69, 1433,   69,   69,
-     1439, 1427, 1431, 1434, 1429,   69, 1440, 1438,   69, 1436,
-       69,   69, 1437,   69, 1441,   69,   69,   69,   69, 1447,
-       69,   69, 1442, 1448, 1445, 1444, 1451,   69, 1443, 1446,
-     1452,   69,   69, 1450,   69, 1454,   69,   69,   69,   69,
-     1449,   69, 1458, 1459,   69,   69, 1453, 1460, 1455, 1461,
-       69, 1456,   69,   69,   69,   69,   69, 1457, 1462, 1465,
-       69, 1467, 1468,   69,   69, 1463, 1464,   69,   69, 1469,
-
-     1472,   69, 1473, 1471, 1466,   69, 1470,   69, 1476, 1477,
-       69,   69, 1479,   69, 1481, 1475, 1478, 1480,   69,   69,
-       69, 1482,   69,   69,   69,   69,   69,   69, 1490, 1485,
-     1488,   69,   69,   69,   69, 1489, 1493,   69, 1483, 1487,
-       69,   69, 1495,   69, 1486, 1484, 1494,   69,   69, 1492,
-     1491,   69, 1497, 1498,   69, 1499,   69, 1496, 1500,   69,
-     1501,   69,   69,   69,   69,   69, 1508,   69,   69, 1502,
-     1506,   69,   69, 1503, 1504, 1505,   69, 1509,   69,   69,
-       69, 1515,   69,   69, 1507,   69,   69, 1520,   69, 1512,
-     1518, 1519, 1511, 1514, 1521,   69,   69, 1510,   69, 1522,
-
-     1516,   69, 1513,   69,   69, 1517,   69,   69,   69,   69,
-     1530, 1531,   69,   69,   69, 1527, 1523,   69,   69, 1524,
-       69, 1533, 1532,   69, 1526, 1525, 1529, 1528,   69, 1539,
-       69,   69, 1534,   69,   69, 1540, 1535,   69, 1536, 1537,
-       69,   69, 1544,   69,   69, 1549,   69, 1538, 1542, 1541,
-       69,   69,   69, 1543, 1548, 1552,   69,   69,   69,   69,
-       69, 1545, 1546, 1553, 1547, 1550,   69,   69, 1556,   69,
-     1551, 1555, 1554, 1557, 1558,   69,   69, 1559, 1560,   69,
-     1561,   69,   69, 1562,   69, 1564,   69,   69, 1563, 1565,
-       69, 1566,   69,   69,   69,   69, 1573,   69, 1568, 1570,
-
-     1571, 1574,   69,   69, 1576,   69, 1567, 1569, 1572,   69,
-     1575,   69, 1578,   69, 1579,   69, 1577, 1581, 1580,   69,
-       69,   69,   69, 1582,   69, 1583,   69,   69,   69,   69,
-     1584,   69, 1587,   69, 1586,   69, 1589,   69,   69, 1585,
-     1588,   69,   69, 1594, 1591,   69, 1592, 1590,   69,   69,
-     1593, 1599,   69,   69, 1595, 1597,   69, 1596, 1602,   69,
-       69,   69, 1601,   69, 1603, 1604,   69, 1598, 1600,   69,
-     1605,   69,   69, 1607,   69, 1610, 1606, 1611,   69,   69,
-     1608,   69, 1613,   69,   69,   69, 1609, 1614, 1615,   69,
-     1616,   69, 1612, 1617,   69, 1620, 1654, 1618,   69, 1619,
-
-       69, 1621,   69,   69, 1623,   69,   69, 1622, 1625,   69,
-       69,   69, 1624,   69, 1626, 1627, 1628,   69,   69, 1633,
-       69,   69, 1629,   69,   69,   69,   69, 1637, 1630,   69,
-     1638, 1631, 1632, 1635,   69,   69,   69,   69,   69,   69,
-     1634, 1640, 1636,   69, 1641,   69, 1643, 1646,   69,   69,
-     1639,   69, 1647, 1649,   69, 1650,   69,   69, 1644, 1645,
-       69, 1642,   69, 1648,   69, 1651, 1653,   69, 1658, 1655,
-       69, 1656, 1652,   69, 1660, 1659, 1657,   69,   69,   69,
-       69,   69, 1665, 1662,   69,   69, 1661,   69, 1663, 1667,
-     1669,   69, 1671,   69,   69,   69,   69, 1674,   69,   69,
-
-     1664,   69, 1666, 1668,   69, 1675,   69,   69, 1676,   69,
-       69, 1673,   69, 1672, 1680, 1679, 1670, 1682,   69,   69,
-     1677, 1684,   69,   69, 1685, 1678, 1686,   69,   69,   69,
-     1689, 1683,   69,   69, 1692,   69, 1681, 1693,   69,   69,
-       69,   69,   69, 1687, 1697,   69, 1690,   69,   69,   69,
-       69, 1688, 1695, 1700, 1698, 1691,   69,   69, 1694, 1703,
-       69, 1696, 1701,   69,   69, 1704, 1705, 1699, 1702, 1706,
-       69, 1707,   69,   69, 1710, 1708,   69, 1719, 1709, 1712,
-       69, 1711, 1713,   69, 1714,   69,   69, 1716,   69,   69,
-     1717, 1715, 1718,   69,   69, 1721,   69,   69,   69, 1724,
-
-       69,   69, 1722, 1720,   69,   69, 1723,   69,   69, 1725,
-     1726,   69,   69, 1727,   69, 1728,   69,   69, 1736,   69,
-       69, 1734, 1737,   69, 1738, 1851, 1729, 1730,   69, 1731,
-     1732, 1739,   69,   69,   69, 1733,   69, 1735, 1740, 1741,
-       69,   69, 1742, 1743,   69, 1746,   69,   69, 1744, 1747,
-       69,   69, 1748,   69, 1745,   69,   69,   69, 1755,   69,
-     1752, 1753, 1756,   69, 1757,   69, 1749,   69, 1750, 1758,
-       69,   69, 1751,   69, 1760,   69, 1754, 1762, 1761, 1759,
-       69,   69,   69,   69,   69, 1763, 1764,   69,   69,   69,
-       69, 1768,   69,   69,   69,   69, 1851,   69,   69, 1765,
-
-     1767, 1766, 1771, 1770, 1777,   69,   69, 1778, 1769, 1772,
-     1774, 1773, 1776, 1779,   69,   69,   69,   69, 1784,   69,
-     1775, 1780, 1781,   69,   69,   69,   69, 1788,   69, 1789,
-     1783, 1782,   69, 1785,   69,   69,   69,   69,   69, 1786,
-     1790, 1791,   69,   69, 1787,   69, 1851,   69,   69, 1851,
-     1793, 1795, 1798, 1799, 1792, 1796, 1794,   69, 1801,   69,
-       69,   69, 1797,   69, 1800, 1802, 1803, 1806, 1804, 1807,
-       69,   69,   69,   69,   69,   69, 1811,   69, 1805,   69,
-     1808,   69, 1814,   69,   69,   69,   69, 1818,   69, 1851,
-     1809,   69, 1813, 1810, 1812,   69, 1819,   69, 1817,   69,
-
-     1821,   69, 1815, 1816,   69, 1822, 1823, 1820,   69, 1826,
-       69,   69,   69,   69, 1825, 1824, 1829,   69, 1827, 1828,
-       69,   69, 1830,   69,   69, 1832, 1833,   69, 1836,   69,
-       69,   69, 1831,   69, 1839, 1840,   69,   69, 1841, 1842,
-       69,   69, 1834, 1835, 1843,   69,   69,   69, 1837, 1838,
-       69, 1851, 1845, 1844, 1851, 1846, 1847, 1849,   69, 1851,
-     1848, 1850,   69,   41,   41,   41,   41,   41,   41,   41,
-       46,   46,   46,   46,   46,   46,   46,   51,   51,   51,
-       51,   51,   51,   51,   57,   57,   57,   57,   57,   57,
-       57,   62,   62,   62,   62,   62,   62,   62,   72,   72,
-
-     1851,   72,   72,   72,   72,  127,  127, 1851, 1851, 1851,
-      127,  127,  129,  129, 1851, 1851,  129, 1851,  129,  131,
-     1851, 1851, 1851, 1851, 1851,  131,  134,  134, 1851, 1851,
-     1851,  134,  134,  136, 1851, 1851, 1851, 1851, 1851,  136,
-      138,  138, 1851,  138,  138,  138,  138,   73,   73, 1851,
-       73,   73,   73,   73,   13, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851
-
+     1079,   69,  132, 1085,   69, 1081,   69, 1086, 1084, 1092,
+     1087, 1091,   69,   69,   69, 1088, 1089,   69, 1093,   69,
+     1094, 1090, 1100, 1095,   69, 1101,   69,   69, 1097,   69,
+       69, 1098,   69, 1099,   69,   69, 1096,   69,   69,   69,
+       69,   69, 1110, 1103,   69,   69, 1114,   69, 1105, 1102,
+     1104, 1106, 1107, 1112,   69, 1111, 1109,   69, 1119, 1113,
+
+     1115,   69, 1108,   69,   69, 1118, 1116, 1121,   69, 1117,
+     1122, 1124,   69,   69,   69,   69,   69, 1126,   69, 1120,
+       69,   69, 1132, 1127,   69,   69, 1125,   69, 1123, 1128,
+       69, 1129,   69, 1130,   69,  130, 1136,   69,   69, 1131,
+     1133,   69, 1137, 1134,   69,   69, 1138, 1140,   69, 1139,
+     1135, 1143,   69,   69,   69,   69,   69, 1141, 1149,   69,
+     1142, 1145, 1144,   69,   69, 1146,   69, 1147, 1153,   69,
+       69, 1150, 1152, 1154,   69, 1148, 1155,   69,   69, 1156,
+     1158,   69, 1151,   69,   69,   69,   69, 1157,   69, 1160,
+       69,   69,   69,   69, 1161, 1159, 1164, 1170, 1162, 1165,
+
+     1169,   69,   69, 1163,   69,   69,   69, 1168, 1174,   69,
+       69,  128, 1166, 1167, 1176,   69, 1177,   69,   69,   69,
+       69,   69, 1178, 1179, 1172, 1171, 1173,   69,   69,   69,
+     1175, 1181, 1180, 1183, 1185,   69,   69, 1182,   69,   69,
+     1186, 1187,   69,   69, 1194, 1184,   69, 1192,   69,   69,
+       69,   69, 1198,   69, 1188, 1189, 1190,   69,   69, 1200,
+       69, 1191,   69, 1193, 1196,   69, 1203,   69, 1195, 1205,
+       69,   69, 1197,   69,   69,   69, 1204,   69, 1210,   69,
+     1201, 1207, 1208, 1199, 1202,   69, 1206,   69, 1214,   69,
+     1213,   69, 1217,   69, 1218, 1219,   69,   69, 1216,   69,
+
+       69, 1209,   69, 1212,   69, 1211,   69, 1220,   69, 1215,
+       69, 1225,   69, 1221,   69,   69, 1228,   69,   69,   69,
+     1222,   69, 1224,   69,   69, 1223, 1860, 1232, 1234,   69,
+     1226,   69, 1229, 1233, 1231, 1237,   69, 1230,   69,   69,
+     1227, 1240, 1235,   69, 1238,   69,   69, 1236, 1241,   69,
+     1242, 1244, 1239, 1247, 1243,   69,   69, 1246,   69,   69,
+       69,   69, 1252,   69, 1249, 1245,   69,   69, 1251, 1254,
+       69, 1248,   69, 1250,   69, 1256,   69, 1257, 1255, 1258,
+       69, 1259,   69,   69,   69, 1253,   69,   69,   69, 1261,
+     1260, 1262,   69, 1263,   69, 1266, 1267, 1264,   69, 1265,
+
+     1269,   69,   69,   69,   69,   69,   69,   69, 1274,   69,
+     1268, 1276, 1271,   69, 1275,   69,   69,   69, 1278,   69,
+       69, 1277, 1270, 1272, 1281, 1273, 1283,   69, 1282, 1279,
+       69, 1280, 1286,   69, 1288, 1284,   69,   69, 1289, 1290,
+       69,   69,   69,   69, 1285,   69, 1293,   69, 1291,   69,
+       69,   69, 1294,   69,   69,   69,   69,   69, 1304,   69,
+       69, 1296, 1292, 1297, 1303, 1298,   69,   69, 1295, 1300,
+       69, 1306,   69,   69, 1307, 1301, 1299, 1302, 1305, 1308,
+     1310,   69,   69,   69,   69, 1313, 1309, 1312,   69, 1314,
+       69,   69, 1318, 1315,   69,   69,   69,   69,   69, 1311,
+
+     1319,   69, 1324,   69, 1321,   69, 1325, 1320, 1316,   69,
+       69, 1317,   69, 1328,   69, 1323,   69, 1322,   69, 1329,
+       69, 1335, 1330,   69, 1326,   69,   69, 1334, 1331,   69,
+     1327,   69, 1332,   69, 1337, 1333, 1338,   69, 1336,   69,
+       69,   69,   69,   69,   69,   69, 1339, 1342, 1343, 1347,
+       69, 1349,   69, 1346, 1348, 1341,   69, 1340, 1344,   69,
+       69,   69,   69, 1351, 1354, 1345, 1352,   69, 1355,   69,
+     1356, 1358,   69, 1353,   69, 1350, 1360,   69,   69, 1361,
+       69,   69,   69, 1359, 1364,   69,   69, 1357,   69,   69,
+     1365, 1368, 1362, 1366,   69,   69,   69,   69,   69, 1363,
+
+       69, 1371, 1374,   69, 1375,   69,   69, 1367,   69,   69,
+     1370, 1369,   69, 1377, 1373, 1372,   69,   69,   69,   69,
+     1376,   69, 1386,   69,   69,   69,   69, 1387, 1379,   69,
+     1860, 1384, 1378,   69,   69, 1380, 1382, 1411, 1388, 1383,
+     1381, 1394, 1385, 1389,   69, 1391, 1390, 1392,   69, 1393,
+       69,   69, 1396,   69, 1397,   69, 1398,   69,   69, 1400,
+       69,   69, 1402,   69, 1395, 1403,   69,   69,   69, 1406,
+       69,   69,   69, 1405, 1408,   69,   69, 1399, 1410, 1401,
+       69, 1412, 1414,   69,   69,   69, 1404,   69, 1418,   69,
+     1407,   69,   69,   69, 1409,   69, 1413, 1423,   69, 1422,
+
+     1416,   69,   69, 1415, 1425,   69, 1417,   69, 1421,   69,
+     1427, 1419,   69,   69,   69, 1420, 1428,   69, 1430,   69,
+     1424,   69,   69,   69, 1429,   69, 1434,   69, 1426,   69,
+     1432, 1439, 1436, 1440, 1437,   69,   69, 1435,   69, 1431,
+     1433, 1438,   69, 1443, 1444,   69, 1445, 1442,   69,   69,
+       69,   69,   69,   69, 1446, 1441, 1451,   69,   69,   69,
+     1449,   69, 1452,   69, 1450, 1448, 1455,   69, 1447, 1456,
+       69, 1454,   69, 1458,   69, 1457,   69, 1460, 1453,   69,
+     1462,   69, 1465,   69,   69, 1463, 1459, 1464,   69,   69,
+       69,   69,   69, 1466,   69, 1461, 1469, 1472,   69, 1471,
+
+       69,   69,   69,   69, 1468, 1476, 1473,   69, 1475, 1467,
+       69, 1470,   69,   69, 1474, 1477,   69, 1488, 1478,   69,
+     1480, 1481,   69,   69, 1484,   69, 1479, 1486, 1483, 1485,
+       69, 1482,   69,   69, 1487,   69,   69,   69,   69, 1493,
+       69, 1490,   69, 1495,   69,   69, 1498,   69,   69,   69,
+     1492, 1494,   69,   69, 1499, 1500, 1491, 1489,   69,   69,
+     1497,   69, 1496, 1502, 1503,   69, 1501, 1504,   69, 1505,
+       69, 1506,   69,   69,   69,   69,   69, 1513,   69, 1507,
+     1511,   69,   69,   69, 1508, 1509, 1510,   69,   69,   69,
+     1514,   69,   69, 1520,   69,   69, 1512,   69,   69,   69,
+
+     1517,   69, 1523, 1516, 1524, 1519,   69, 1521, 1515, 1525,
+       69,   69, 1518, 1526,   69, 1528, 1522,   69, 1527, 1529,
+     1530,   69,   69,   69, 1535,   69, 1531, 1536,   69,   69,
+     1532, 1533,   69,   69, 1537,   69, 1538,   69,   69, 1545,
+     1534, 1544,   69,   69,   69,   69,   69, 1539,   69,   69,
+       69, 1540,   69, 1541, 1542, 1549, 1543,   69, 1551,   69,
+     1547, 1546, 1554, 1555,   69, 1548,   69,   69, 1550, 1558,
+       69, 1552,   69,   69,   69,   69, 1559, 1553, 1561, 1562,
+       69, 1556,   69, 1564,   69, 1557, 1566,   69, 1560, 1567,
+       69,   69, 1568,   69, 1565, 1563,   69,   69,   69,   69,
+
+       69,   69, 1571, 1572,   69, 1570,   69,   69, 1574, 1576,
+       69, 1577, 1579,   69,   69, 1569, 1575, 1581, 1573, 1580,
+       69, 1582, 1578,   69, 1584,   69,   69, 1586, 1583, 1585,
+       69, 1587,   69,   69,   69,   69,   69, 1588,   69, 1589,
+       69, 1590,   69,   69,   69, 1593, 1592, 1595,   69,   69,
+     1591,   69,   69, 1600, 1594,   69,   69, 1598,   69,   69,
+     1599, 1596, 1597,   69, 1601, 1605,   69,   69, 1607,   69,
+     1609,   69,   69, 1608,   69, 1602,   69,   69, 1603, 1611,
+     1610,   69, 1604,   69,   69, 1612, 1606, 1614,   69, 1617,
+     1613, 1618,   69,   69,   69, 1615,   69, 1620,   69, 1616,
+
+       69, 1621, 1622,   69, 1623,   69, 1624,   69, 1628,   69,
+     1627,   69, 1625, 1619, 1626,   69,   69, 1630,   69,   69,
+     1629, 1632,   69,   69,   69, 1631,   69, 1633, 1634, 1635,
+       69,   69, 1640,   69,   69, 1636,   69,   69,   69,   69,
+     1644, 1637,   69, 1645, 1638, 1639, 1642,   69,   69,   69,
+       69,   69,   69, 1641, 1647, 1643, 1860, 1648,   69, 1650,
+     1653,   69,   69, 1646,   69, 1654, 1657,   69,   69, 1655,
+       69, 1651, 1652,   69, 1649,   69, 1656, 1658,   69, 1659,
+     1661,   69,   69, 1660,   69,   69,   69, 1663, 1662,   69,
+       69, 1664,   69, 1668, 1667, 1669, 1665,   69,   69, 1671,
+
+     1673,   69, 1670,   69, 1677,   69,   69,   69, 1675,   69,
+     1666, 1679,   69,   69,   69, 1682,   69,   69, 1672,   69,
+       69, 1683, 1674,   69, 1676,   69,   69,   69, 1681, 1684,
+     1688,   69, 1678, 1680, 1687, 1685, 1690,   69, 1692,   69,
+     1693,   69, 1686,   69, 1695,   69,   69,   69, 1694,   69,
+     1691,   69, 1698, 1689,   69, 1701,   69, 1702,   69,   69,
+       69,   69,   69, 1699, 1706,   69, 1696,   69,   69,   69,
+     1697, 1709, 1704,   69, 1707,   69, 1700, 1712, 1703,   69,
+     1710, 1705,   69, 1715,   69, 1716,   69, 1708, 1711,   69,
+     1713, 1714,   69, 1860, 1718,   69, 1721,   69, 1717, 1860,
+
+     1720, 1722,   69, 1723,   69,   69, 1719, 1725,   69,   69,
+     1724,   69, 1726, 1727,   69,   69, 1730,   69,   69,   69,
+       69, 1733,   69, 1728, 1729, 1731, 1732,   69,   69,   69,
+       69, 1736, 1734, 1735,   69,   69,   69, 1737,   69,   69,
+     1745,   69,   69, 1743, 1746,   69, 1747,   69, 1738,   69,
+     1739, 1749, 1740, 1741, 1748,   69,   69, 1742,   69, 1744,
+     1750,   69,   69, 1751, 1752,   69, 1755,   69, 1756,   69,
+       69, 1753,   69,   69,   69, 1757, 1754,   69,   69, 1761,
+     1764,   69, 1762, 1765,   69, 1766,   69, 1758, 1759, 1767,
+       69,   69,   69, 1760,   69, 1769,   69, 1763,   69, 1770,
+
+     1771,   69,   69, 1768,   69,   69, 1772, 1773,   69,   69,
+       69,   69, 1777,   69,   69,   69,   69, 1774,   69, 1775,
+     1776, 1779,   69,   69, 1780, 1786,   69, 1787, 1789, 1778,
+     1783,   69, 1781, 1782, 1788,   69, 1790, 1785,   69,   69,
+     1793, 1784,   69,   69, 1797,   69,   69, 1798,   69,   69,
+       69,   69,   69,   69, 1792,   69, 1794,   69, 1795,   69,
+       69,   69, 1799, 1791, 1800, 1796, 1807, 1802,   69, 1801,
+     1804,   69, 1805, 1808, 1803,   69, 1810,   69,   69, 1806,
+       69,   69, 1811, 1812, 1815, 1813, 1816,   69,   69,   69,
+     1809,   69,   69, 1820,   69, 1817,   69,   69,   69,   69,
+
+     1814,   69, 1823,   69,   69, 1827,   69,   69,   69, 1822,
+     1818, 1819, 1828, 1821,   69, 1830, 1826,   69, 1824,   69,
+     1825,   69, 1831,   69, 1832, 1829,   69, 1834, 1835,   69,
+     1833,   69,   69, 1836,   69,   69, 1838, 1839, 1837,   69,
+     1841,   69,   69,   69, 1842,   69, 1845,   69,   69, 1848,
+     1849,   69,   69, 1840, 1851,   69, 1852,   69,   69, 1850,
+     1843, 1844, 1846,   69,   69, 1853, 1847,   69, 1854, 1855,
+       69, 1858,   69, 1859,   69, 1860, 1860, 1860, 1860, 1860,
+     1860, 1860, 1860, 1860, 1860, 1860, 1856, 1860, 1860, 1857,
+       41,   41,   41,   41,   41,   41,   41,   46,   46,   46,
+
+       46,   46,   46,   46,   51,   51,   51,   51,   51,   51,
+       51,   57,   57,   57,   57,   57,   57,   57,   62,   62,
+       62,   62,   62,   62,   62,   72,   72, 1860,   72,   72,
+       72,   72,  127,  127, 1860, 1860, 1860,  127,  127,  129,
+      129, 1860, 1860,  129, 1860,  129,  131, 1860, 1860, 1860,
+     1860, 1860,  131,  134,  134, 1860, 1860, 1860,  134,  134,
+      136, 1860, 1860, 1860, 1860, 1860,  136,  138,  138, 1860,
+      138,  138,  138,  138,   73,   73, 1860,   73,   73,   73,
+       73,   13, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860
     } ;
 
-static yyconst flex_int16_t yy_chk[3695] =
+static yyconst flex_int16_t yy_chk[3722] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1475,7 +1480,7 @@ static yyconst flex_int16_t yy_chk[3695] =
         9,  158,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   45,   45,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  158,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1857,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1866,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   75,   22,   22,   75,   25,
@@ -1654,8 +1659,8 @@ static yyconst flex_int16_t yy_chk[3695] =
       788,  791,  790,  784,  801,  793,  794,  795,  796,  789,
 
       793,  794,  795,  796,  797,  798,  799,  800,  800,  802,
-      803,  804, 1180,  797,  801,  803,  805,  799,  806,  807,
-      808,  808,  809,  810,  798,  804,  811,  814,  812, 1180,
+      803,  804, 1181,  797,  801,  803,  805,  799,  806,  807,
+      808,  808,  809,  810,  798,  804,  811,  814,  812, 1181,
       806,  804,  802,  812,  813,  813,  805,  807,  815,  817,
       819,  818,  809,  815,  811,  818,  818,  820,  810,  819,
       814,  822,  823,  825,  826,  820,  824,  823,  817,  827,
@@ -1691,188 +1696,191 @@ static yyconst flex_int16_t yy_chk[3695] =
       966,  967,  954,  964,  968,  961,  963,  962,  959,  971,
       960,  970,  970,  972,  971,  967,  973,  965,  974,  975,
       966,  977,   51,  973,  982,  968,  980,  974,  972,  980,
-      974,  979,  979,  981,  983,  975,  984,  985,  981,  986,
-      982,  977,  987,  983,  988,  988,  985,  987,  986,  985,
-      989,  990,  992,  991,  995,  984,  993,  994,  996,  997,
-      997,  998, 1000,   46,  990,  999,  992, 1000, 1003,  994,
-      989,  991,  993, 1002,  999, 1006,  996,  998, 1005,  995,
-
-     1001, 1001, 1002, 1005, 1007, 1002, 1003, 1009, 1008, 1007,
-     1011, 1010, 1016, 1006, 1008, 1001, 1010, 1012, 1017, 1018,
-     1012, 1015, 1023, 1011, 1020, 1016, 1012, 1009, 1019, 1015,
-     1021, 1024, 1025, 1019, 1026, 1024, 1017, 1025, 1018, 1026,
-     1020, 1027, 1023, 1028, 1029, 1030, 1027, 1032, 1021, 1031,
-     1031, 1033, 1028, 1034, 1035, 1036, 1038, 1037, 1033, 1039,
-     1030, 1032, 1037, 1040, 1046, 1034, 1035, 1029, 1038, 1040,
-     1041, 1041, 1042, 1046, 1036, 1042, 1045, 1039, 1043, 1043,
-     1048, 1045, 1047, 1047, 1049, 1050, 1051, 1052, 1053, 1049,
-     1054, 1055, 1048, 1053, 1050, 1056, 1057, 1057, 1051, 1054,
-
-     1058, 1059, 1052,   41, 1060, 1058, 1061, 1062, 1062, 1063,
-     1056, 1055, 1054, 1064, 1064, 1065, 1065, 1066, 1071, 1067,
-     1073, 1066, 1059, 1060, 1067, 1068, 1061, 1070, 1068, 1063,
-     1072, 1078, 1070, 1074, 1074, 1072, 1071, 1075, 1075, 1076,
-     1077, 1079, 1080, 1081, 1076, 1073, 1083, 1080, 1084, 1085,
-     1085, 1078, 1077, 1077, 1077, 1086, 1087, 1087, 1088, 1077,
-     1083, 1079, 1091, 1081, 1089, 1089, 1092, 1092, 1093, 1084,
-     1094, 1091, 1096, 1095, 1097, 1097, 1098, 1094, 1088, 1099,
-     1101, 1086, 1095, 1093, 1102, 1101, 1103, 1104, 1105, 1102,
-     1111, 1106, 1108, 1105, 1104, 1099, 1106, 1108, 1096, 1107,
-
-     1107, 1109, 1098, 1110, 1112, 1113, 1103, 1114, 1113, 1111,
-     1109, 1115, 1116, 1116, 1117, 1118, 1112, 1119, 1120, 1121,
-     1122, 1122, 1123, 1110, 1120, 1114, 1124, 1124, 1121, 1117,
-     1125, 1126, 1119, 1123, 1118, 1127, 1131, 1115, 1123, 1129,
-     1127, 1128, 1128, 1129, 1129, 1126, 1132, 1130, 1133, 1134,
-     1135, 1125, 1130, 1133, 1135, 1136, 1137, 1139, 1132, 1138,
-     1140, 1134, 1131, 1141, 1138, 1140, 1143, 1136, 1147, 1143,
-     1144, 1144, 1145, 1145, 1148, 1141, 1146, 1146, 1149, 1139,
-     1148, 1137, 1151, 1149, 1150, 1156, 1155, 1153, 1147, 1155,
-     1150, 1151, 1153, 1158, 1159, 1159, 1160, 1156, 1161, 1162,
-
-     1163, 1167, 1164, 1165, 1166, 1158, 1164, 1161, 1165, 1166,
-     1169, 1169, 1170, 1177, 1171, 1167, 1160, 1162, 1172, 1163,
-     1174, 1174, 1169, 1171, 1178, 1186, 1179, 1172, 1177, 1189,
-     1170, 1179, 1181, 1181, 1182, 1185, 1182, 1188, 1178, 1183,
-     1183, 1190, 1185, 1187, 1187, 1186, 1188, 1191, 1192, 1193,
-     1189, 1194, 1195, 1190, 1196, 1199, 1198, 1199, 1200, 1191,
-     1192, 1198, 1201, 1204, 1202, 1206, 1194, 1205, 1205, 1201,
-     1211,   14, 1195, 1202, 1196, 1193, 1200, 1204, 1207, 1208,
-     1209, 1208, 1210, 1207, 1212, 1209, 1215, 1210, 1211, 1213,
-     1214, 1206, 1216, 1218, 1213, 1214, 1219, 1220, 1220, 1215,
-
-     1216, 1221, 1221, 1222, 1212, 1223, 1224, 1226, 1225, 1226,
-     1219, 1224, 1218, 1225, 1227, 1228, 1231, 1229, 1222, 1229,
-     1230, 1236, 1237, 1238, 1228, 1223, 1227, 1228, 1231, 1230,
-     1233, 1234, 1240, 1243, 1236, 1233, 1234, 1242, 1240, 1238,
-     1244, 1245, 1237, 1242, 1246, 1246, 1247, 1249, 1243, 1250,
-     1245, 1248, 1248, 1250, 1251, 1247, 1252, 1253, 1255, 1251,
-     1254, 1253, 1253, 1258, 1258, 1244, 1249, 1259, 1254, 1252,
-     1260, 1260, 1261, 1261, 1262, 1263, 1259, 1264, 1255, 1265,
-     1266, 1266, 1264, 1268, 1265, 1269, 1262, 1270, 1271, 1272,
-     1269, 1273, 1277, 1263, 1272, 1274, 1275, 1275, 1276, 1278,
-
-     1279, 1280, 1276, 1271, 1278, 1282, 1283, 1277, 1268, 1273,
-     1270, 1274, 1284, 1285, 1287, 1286, 1289, 1289, 1290, 1291,
-     1280, 1290, 1292, 1388, 1293, 1388, 1279, 1286, 1282, 1297,
-     1283, 1284, 1291, 1298, 1285, 1287, 1292, 1293, 1294, 1294,
-     1295, 1295, 1296, 1296, 1297, 1302, 1298, 1299, 1299, 1300,
-     1300, 1301, 1301, 1303, 1303, 1304, 1304, 1305, 1305, 1306,
-     1308, 1309, 1309, 1310, 1302, 1308, 1311, 1311, 1312, 1313,
-     1314, 1315, 1315, 1314, 1317, 1313, 1316, 1316, 1306, 1318,
-     1319, 1322, 1310, 1320, 1320, 1323, 1312, 1315, 1324, 1326,
-     1326, 1325, 1327, 1317, 1318, 1325, 1328, 1328, 1329, 1319,
-
-     1331, 1322, 1332, 1324, 1330, 1330, 1334, 1333, 1323, 1331,
-     1335, 1327, 1333, 1336, 1332, 1337, 1339, 1338, 1340, 1341,
-     1337, 1342, 1345, 1335, 1329, 1339, 1342, 1340, 1347, 1348,
-     1348, 1334, 1338, 1341, 1336, 1343, 1349, 1347, 1351, 1343,
-     1353, 1349, 1345, 1350, 1350, 1354, 1358, 1356, 1359, 1358,
-     1360, 1361, 1350, 1359, 1354, 1353, 1362, 1362, 1351, 1356,
-     1364, 1364, 1365, 1361, 1366, 1366, 1367, 1368, 1369, 1372,
-     1360, 1370, 1370, 1372, 1373, 1376, 1365, 1373, 1367, 1374,
-     1374, 1368, 1377, 1375, 1379, 1378, 1380, 1369, 1375, 1378,
-     1384, 1380, 1381, 1382, 1387, 1376, 1377, 1381, 1385, 1382,
-
-     1386, 1391, 1387, 1385, 1379, 1386, 1384, 1392, 1392, 1396,
-     1396, 1400, 1401, 1401, 1405, 1391, 1400, 1403, 1403, 1405,
-     1406, 1406, 1407, 1408, 1409, 1411, 1415, 1412, 1416, 1409,
-     1413, 1413, 1417, 1416, 1418, 1415, 1420, 1420, 1407, 1412,
-     1423, 1422, 1423, 1424, 1411, 1408, 1422, 1425, 1429, 1418,
-     1417, 1430, 1425, 1426, 1426, 1427, 1427, 1424, 1428, 1428,
-     1429, 1431, 1432, 1433, 1435, 1434, 1436, 1436, 1437, 1430,
-     1434, 1438, 1439, 1431, 1432, 1433, 1440, 1437, 1441, 1442,
-     1443, 1443, 1444, 1445, 1435, 1446, 1447, 1448, 1448, 1440,
-     1446, 1447, 1439, 1442, 1449, 1449, 1453, 1438, 1450, 1450,
-
-     1444, 1454, 1441, 1455, 1456, 1445, 1457, 1458, 1459, 1460,
-     1460, 1462, 1462, 1463, 1464, 1457, 1453, 1465, 1466, 1454,
-     1467, 1464, 1463, 1468, 1456, 1455, 1459, 1458, 1469, 1470,
-     1470, 1472, 1465, 1473, 1474, 1471, 1466, 1475, 1467, 1468,
-     1471, 1476, 1475, 1478, 1481, 1483, 1483, 1469, 1473, 1472,
-     1484, 1482, 1485, 1474, 1482, 1486, 1486, 1489, 1495, 1487,
-     1492, 1476, 1478, 1487, 1481, 1484, 1502, 1490, 1491, 1491,
-     1485, 1490, 1489, 1492, 1494, 1494, 1503, 1495, 1496, 1496,
-     1497, 1497, 1501, 1501, 1504, 1503, 1505, 1506, 1502, 1504,
-     1507, 1505, 1509, 1512, 1510, 1511, 1513, 1513, 1507, 1510,
-
-     1511, 1514, 1514, 1515, 1516, 1522, 1506, 1509, 1512, 1516,
-     1515, 1517, 1518, 1518, 1519, 1519, 1517, 1523, 1522, 1524,
-     1525, 1526, 1523, 1524, 1527, 1525, 1528, 1529, 1530, 1533,
-     1526, 1534, 1529, 1532, 1528, 1541, 1532, 1535, 1540, 1527,
-     1530, 1536, 1537, 1537, 1534, 1538, 1535, 1533, 1542, 1544,
-     1536, 1543, 1543, 1545, 1538, 1541, 1547, 1540, 1546, 1546,
-     1548, 1550, 1545, 1551, 1547, 1548, 1554, 1542, 1544, 1553,
-     1550, 1555, 1562, 1553, 1557, 1557, 1551, 1559, 1559, 1568,
-     1554, 1563, 1563, 1609, 1564, 1569, 1555, 1564, 1565, 1565,
-     1566, 1566, 1562, 1567, 1567, 1570, 1609, 1568, 1581, 1569,
-
-     1570, 1571, 1571, 1572, 1575, 1575, 1576, 1572, 1577, 1580,
-     1583, 1584, 1576, 1577, 1580, 1581, 1581, 1582, 1585, 1586,
-     1586, 1587, 1582, 1589, 1594, 1588, 1590, 1590, 1583, 1591,
-     1591, 1584, 1585, 1588, 1592, 1595, 1593, 1596, 1597, 1598,
-     1587, 1593, 1589, 1614, 1594, 1603, 1596, 1600, 1600, 1601,
-     1592, 1605, 1601, 1604, 1604, 1605, 1606, 1607, 1597, 1598,
-     1610, 1595, 1612, 1603, 1613, 1606, 1608, 1608, 1614, 1610,
-     1618, 1612, 1607, 1619, 1619, 1618, 1613, 1620, 1622, 1624,
-     1625, 1627, 1626, 1622, 1628, 1629, 1620, 1626, 1624, 1628,
-     1630, 1631, 1632, 1632, 1634, 1630, 1635, 1636, 1636, 1638,
-
-     1625, 1637, 1627, 1629, 1639, 1637, 1640, 1641, 1638, 1642,
-     1643, 1635, 1645, 1634, 1642, 1641, 1631, 1644, 1644, 1648,
-     1639, 1647, 1647, 1651, 1648, 1640, 1650, 1650, 1652, 1654,
-     1654, 1645, 1655, 1656, 1657, 1657, 1643, 1658, 1658, 1659,
-     1660, 1661, 1663, 1651, 1662, 1662, 1655, 1664, 1669, 1667,
-     1665, 1652, 1660, 1665, 1663, 1656, 1673, 1666, 1659, 1668,
-     1676, 1661, 1666, 1688, 1668, 1669, 1669, 1664, 1667, 1670,
-     1670, 1672, 1672, 1675, 1676, 1673, 1677, 1688, 1675, 1678,
-     1678, 1677, 1679, 1679, 1680, 1680, 1681, 1683, 1683, 1685,
-     1685, 1681, 1687, 1687, 1689, 1690, 1690, 1691, 1694, 1695,
-
-     1695, 1699, 1691, 1689, 1696, 1698, 1694, 1700, 1701, 1696,
-     1698, 1702, 1703, 1699, 1704, 1700, 1705, 1708, 1709, 1709,
-     1711, 1705, 1710, 1710, 1711,   13, 1701, 1702, 1720, 1703,
-     1703, 1715, 1715, 1723, 1717, 1704, 1725, 1708, 1717, 1719,
-     1719, 1729, 1720, 1722, 1722, 1726, 1726, 1728, 1723, 1727,
-     1727, 1731, 1728, 1730, 1725, 1732, 1733, 1734, 1735, 1735,
-     1732, 1733, 1738, 1738, 1740, 1740, 1729, 1744, 1730, 1742,
-     1742, 1750, 1731, 1745, 1745, 1748, 1734, 1749, 1748, 1744,
-     1752, 1751, 1749, 1753, 1754, 1750, 1751, 1759, 1760, 1762,
-     1763, 1759, 1761, 1764, 1765, 1766,    0, 1767, 1769, 1752,
-
-     1754, 1753, 1762, 1761, 1768, 1768, 1773, 1769, 1760, 1763,
-     1765, 1764, 1767, 1770, 1770, 1774, 1771, 1772, 1775, 1776,
-     1766, 1771, 1772, 1775, 1778, 1780, 1783, 1781, 1784, 1782,
-     1774, 1773, 1781, 1776, 1782, 1785, 1786, 1787, 1788, 1778,
-     1783, 1784, 1789, 1790, 1780, 1793,    0, 1791, 1792,    0,
-     1786, 1788, 1791, 1792, 1785, 1789, 1787, 1794, 1794, 1798,
-     1795, 1796, 1790, 1797, 1793, 1795, 1796, 1799, 1797, 1800,
-     1800, 1802, 1799, 1801, 1803, 1805, 1804, 1808, 1798, 1806,
-     1801, 1804, 1808, 1809, 1810, 1811, 1812, 1812, 1814,    0,
-     1802, 1813, 1806, 1803, 1805, 1819, 1813, 1823, 1811, 1815,
-
-     1815, 1817, 1809, 1810, 1816, 1816, 1817, 1814, 1818, 1820,
-     1820, 1821, 1822, 1825, 1819, 1818, 1823, 1824, 1821, 1822,
-     1827, 1828, 1824, 1829, 1830, 1827, 1828, 1831, 1831, 1832,
-     1833, 1836, 1825, 1834, 1834, 1835, 1835, 1845, 1836, 1837,
-     1837, 1846, 1829, 1830, 1838, 1838, 1839, 1841, 1832, 1833,
-     1844,    0, 1841, 1839,    0, 1844, 1845, 1847, 1847,    0,
-     1846, 1848, 1848, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
-     1853, 1853, 1853, 1853, 1853, 1853, 1853, 1854, 1854, 1854,
-     1854, 1854, 1854, 1854, 1855, 1855, 1855, 1855, 1855, 1855,
-     1855, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1858, 1858,
-
-        0, 1858, 1858, 1858, 1858, 1859, 1859,    0,    0,    0,
-     1859, 1859, 1860, 1860,    0,    0, 1860,    0, 1860, 1861,
-        0,    0,    0,    0,    0, 1861, 1862, 1862,    0,    0,
-        0, 1862, 1862, 1863,    0,    0,    0,    0,    0, 1863,
-     1864, 1864,    0, 1864, 1864, 1864, 1864, 1865, 1865,    0,
-     1865, 1865, 1865, 1865, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851, 1851,
-     1851, 1851, 1851, 1851
-
+      974,  979,  979,  981,  983,  975,  977,  984,  981,  985,
+      982,  977,  987,  983,  986,  988,  988,  987,  985,  989,
+      990,  985,  991,  986,  992,  993,  984,  995,  996,  998,
+      994,  997,  997,  990,  999, 1001, 1001, 1003,  992,  989,
+      991,  993,  994,  999, 1000,  998,  996, 1002, 1005, 1000,
+
+     1001, 1006,  995, 1005, 1008, 1003, 1002, 1007, 1009, 1002,
+     1008, 1010, 1007, 1011, 1012, 1017, 1010, 1012, 1016, 1006,
+     1018, 1015, 1019, 1012, 1020, 1021, 1011, 1019, 1009, 1015,
+     1023, 1016, 1024, 1017, 1029,   46, 1024, 1025, 1028, 1018,
+     1020, 1026, 1025, 1021, 1027, 1030, 1026, 1028, 1032, 1027,
+     1023, 1031, 1031, 1034, 1033, 1035, 1036, 1029, 1037, 1038,
+     1030, 1033, 1032, 1037, 1039, 1034, 1040, 1035, 1041, 1041,
+     1042, 1038, 1040, 1042, 1045, 1036, 1043, 1043, 1046, 1045,
+     1047, 1047, 1039, 1048, 1049, 1050, 1051, 1046, 1052, 1049,
+     1054, 1053, 1056, 1055, 1050, 1048, 1053, 1058, 1051, 1054,
+
+     1057, 1057, 1058, 1052, 1059, 1060, 1061, 1056, 1062, 1062,
+     1063,   41, 1054, 1055, 1064, 1064, 1065, 1065, 1066, 1071,
+     1073,   14, 1066, 1067, 1060, 1059, 1061, 1078, 1067, 1068,
+     1063, 1070, 1068, 1072, 1074, 1074, 1070, 1071, 1072, 1075,
+     1075, 1076, 1077, 1079, 1080, 1073, 1076, 1078, 1081, 1080,
+     1083, 1084, 1085, 1085, 1077, 1077, 1077, 1086, 1087, 1087,
+     1088, 1077, 1089, 1079, 1083, 1090, 1090, 1092, 1081, 1093,
+     1093, 1094, 1084, 1096, 1095, 1097, 1092, 1098, 1098, 1099,
+     1088, 1095, 1096, 1086, 1089, 1102, 1094, 1100, 1103, 1104,
+     1102, 1105, 1106, 1103, 1107, 1108, 1108, 1106, 1105, 1107,
+
+     1111, 1097, 1109, 1100, 1110, 1099, 1112, 1109, 1114, 1104,
+     1113, 1114, 1115, 1110, 1116, 1117, 1117, 1118, 1119, 1120,
+     1111, 1121, 1113, 1126, 1122, 1112,   13, 1121, 1123, 1123,
+     1115, 1124, 1118, 1122, 1120, 1125, 1125, 1119, 1127, 1132,
+     1116, 1128, 1124, 1138, 1126, 1133, 1128, 1124, 1129, 1129,
+     1130, 1131, 1127, 1134, 1130, 1130, 1131, 1133, 1134, 1135,
+     1136, 1137, 1139, 1140, 1136, 1132, 1142, 1139, 1138, 1141,
+     1148, 1135, 1144, 1137, 1141, 1144, 1145, 1145, 1142, 1146,
+     1146, 1147, 1147, 1149, 1157, 1140, 1150, 1151, 1152, 1149,
+     1148, 1150, 1156, 1151, 1154, 1156, 1157, 1152, 1159, 1154,
+
+     1160, 1160, 1161, 1162, 1165, 1163, 1164, 1168, 1165, 1166,
+     1159, 1167, 1162, 1171, 1166, 1172, 1167, 1170, 1170, 1173,
+     1178, 1168, 1161, 1163, 1172, 1164, 1175, 1175, 1173, 1170,
+     1179, 1171, 1180, 1182, 1182, 1178, 1183, 1180, 1183, 1184,
+     1184, 1186, 1187, 1189, 1179, 1188, 1188, 1190, 1186, 1191,
+     1194, 1192, 1189, 1193, 1195, 1196, 1200, 1197, 1200, 1199,
+     1201, 1191, 1187, 1192, 1199, 1193, 1202, 1203, 1190, 1195,
+     1204, 1202, 1206, 1208, 1203, 1196, 1194, 1197, 1201, 1204,
+     1207, 1207, 1209, 1210, 1211, 1210, 1206, 1209, 1212, 1211,
+     1213, 1214, 1215, 1212, 1217, 1216, 1218, 1215, 1220, 1208,
+
+     1216, 1221, 1222, 1222, 1218, 1223, 1223, 1217, 1213, 1224,
+     1225, 1214, 1232, 1226, 1227, 1221, 1229, 1220, 1226, 1227,
+     1228, 1232, 1228, 1230, 1224, 1231, 1233, 1231, 1229, 1235,
+     1225, 1236, 1230, 1238, 1235, 1230, 1236, 1239, 1233, 1240,
+     1246, 1242, 1244, 1245, 1247, 1249, 1238, 1242, 1244, 1248,
+     1248, 1250, 1250, 1247, 1249, 1240, 1251, 1239, 1245, 1252,
+     1254, 1253, 1256, 1252, 1255, 1246, 1253, 1257, 1255, 1255,
+     1256, 1260, 1260, 1254, 1261, 1251, 1262, 1262, 1263, 1263,
+     1264, 1265, 1270, 1261, 1266, 1267, 1271, 1257, 1272, 1266,
+     1267, 1271, 1264, 1268, 1268, 1273, 1274, 1275, 1276, 1265,
+
+     1278, 1274, 1277, 1277, 1278, 1279, 1281, 1270, 1280, 1282,
+     1273, 1272, 1284, 1280, 1276, 1275, 1285, 1286, 1287, 1288,
+     1279, 1289, 1291, 1291, 1292, 1293, 1299, 1292, 1282, 1294,
+        0, 1288, 1281, 1295, 1317, 1284, 1286, 1317, 1293, 1287,
+     1285, 1299, 1289, 1294, 1296, 1296, 1295, 1297, 1297, 1298,
+     1298, 1300, 1301, 1301, 1302, 1302, 1303, 1303, 1304, 1305,
+     1305, 1306, 1307, 1307, 1300, 1308, 1308, 1309, 1311, 1312,
+     1312, 1313, 1316, 1311, 1314, 1314, 1315, 1304, 1316, 1306,
+     1318, 1318, 1319, 1319, 1320, 1321, 1309, 1322, 1323, 1323,
+     1313, 1325, 1326, 1327, 1315, 1328, 1318, 1329, 1329, 1328,
+
+     1321, 1330, 1332, 1320, 1331, 1331, 1322, 1334, 1327, 1333,
+     1333, 1325, 1335, 1336, 1337, 1326, 1334, 1338, 1336, 1339,
+     1330, 1340, 1341, 1342, 1335, 1343, 1340, 1344, 1332, 1346,
+     1338, 1345, 1342, 1346, 1343, 1348, 1345, 1341, 1350, 1337,
+     1339, 1344, 1351, 1351, 1352, 1353, 1353, 1350, 1354, 1352,
+     1356, 1357, 1359, 1361, 1353, 1348, 1361, 1362, 1363, 1364,
+     1357, 1368, 1362, 1371, 1359, 1356, 1365, 1365, 1354, 1367,
+     1367, 1364, 1369, 1369, 1370, 1368, 1372, 1371, 1363, 1373,
+     1373, 1375, 1377, 1377, 1376, 1375, 1370, 1376, 1378, 1379,
+     1380, 1382, 1381, 1378, 1383, 1372, 1381, 1384, 1387, 1383,
+
+     1385, 1411, 1384, 1388, 1380, 1389, 1385, 1390, 1388, 1379,
+     1389, 1382, 1394, 1401, 1387, 1390, 1391, 1411, 1391, 1395,
+     1395, 1399, 1399, 1404, 1405, 1405, 1394, 1409, 1404, 1407,
+     1407, 1401, 1409, 1410, 1410, 1412, 1413, 1415, 1416, 1417,
+     1417, 1413, 1419, 1420, 1421, 1422, 1424, 1424, 1420, 1426,
+     1416, 1419, 1428, 1427, 1426, 1427, 1415, 1412, 1429, 1433,
+     1422, 1434, 1421, 1429, 1430, 1430, 1428, 1431, 1431, 1432,
+     1432, 1433, 1435, 1436, 1437, 1438, 1439, 1440, 1440, 1434,
+     1438, 1441, 1442, 1443, 1435, 1436, 1437, 1444, 1445, 1448,
+     1441, 1446, 1447, 1447, 1449, 1457, 1439, 1450, 1459, 1451,
+
+     1444, 1458, 1450, 1443, 1451, 1446, 1460, 1448, 1442, 1452,
+     1452, 1462, 1445, 1453, 1453, 1457, 1449, 1454, 1454, 1458,
+     1459, 1461, 1463, 1464, 1464, 1467, 1460, 1466, 1466, 1468,
+     1461, 1462, 1469, 1470, 1467, 1471, 1468, 1473, 1472, 1475,
+     1463, 1474, 1474, 1476, 1475, 1477, 1478, 1469, 1480, 1482,
+     1479, 1470, 1483, 1471, 1472, 1479, 1473, 1486, 1482, 1487,
+     1477, 1476, 1487, 1488, 1488, 1478, 1489, 1490, 1480, 1491,
+     1491, 1483, 1492, 1494, 1495, 1500, 1492, 1486, 1495, 1496,
+     1496, 1489, 1497, 1499, 1499, 1490, 1501, 1501, 1494, 1502,
+     1502, 1506, 1506, 1507, 1500, 1497, 1508, 1509, 1510, 1511,
+
+     1512, 1514, 1509, 1510, 1515, 1508, 1516, 1517, 1512, 1515,
+     1520, 1516, 1518, 1518, 1527, 1507, 1514, 1520, 1511, 1519,
+     1519, 1521, 1517, 1522, 1523, 1523, 1521, 1527, 1522, 1524,
+     1524, 1528, 1531, 1529, 1530, 1532, 1528, 1529, 1533, 1530,
+     1534, 1531, 1535, 1538, 1537, 1534, 1533, 1537, 1540, 1539,
+     1532, 1541, 1542, 1542, 1535, 1543, 1545, 1540, 1546, 1550,
+     1541, 1538, 1539, 1547, 1543, 1548, 1548, 1549, 1550, 1551,
+     1552, 1552, 1553, 1551, 1554, 1545, 1556, 1557, 1546, 1554,
+     1553, 1560, 1547, 1559, 1561, 1556, 1549, 1559, 1563, 1563,
+     1557, 1565, 1565, 1568, 1574, 1560, 1569, 1569, 1570, 1561,
+
+     1575, 1570, 1571, 1571, 1572, 1572, 1573, 1573, 1577, 1577,
+     1576, 1587, 1574, 1568, 1575, 1576, 1578, 1581, 1581, 1582,
+     1578, 1583, 1586, 1589, 1590, 1582, 1583, 1586, 1587, 1587,
+     1588, 1591, 1592, 1592, 1593, 1588, 1595, 1600, 1594, 1596,
+     1596, 1589, 1597, 1597, 1590, 1591, 1594, 1598, 1601, 1599,
+     1602, 1603, 1604, 1593, 1599, 1595,    0, 1600, 1610, 1602,
+     1606, 1606, 1607, 1598, 1608, 1607, 1611, 1611, 1614, 1608,
+     1613, 1603, 1604, 1612, 1601, 1616, 1610, 1612, 1617, 1613,
+     1615, 1615, 1619, 1614, 1620, 1621, 1627, 1617, 1616, 1625,
+     1631, 1619, 1626, 1626, 1625, 1627, 1620, 1629, 1632, 1631,
+
+     1633, 1634, 1629, 1635, 1637, 1633, 1636, 1638, 1635, 1637,
+     1621, 1639, 1639, 1642, 1641, 1643, 1643, 1644, 1632, 1646,
+     1645, 1644, 1634, 1647, 1636, 1649, 1648, 1650, 1642, 1645,
+     1649, 1652, 1638, 1641, 1648, 1646, 1651, 1651, 1654, 1654,
+     1655, 1655, 1647, 1656, 1658, 1658, 1659, 1660, 1656, 1663,
+     1652, 1662, 1662, 1650, 1664, 1665, 1665, 1666, 1666, 1667,
+     1668, 1669, 1671, 1663, 1670, 1670, 1659, 1672, 1673, 1675,
+     1660, 1673, 1668, 1677, 1671, 1674, 1664, 1676, 1667, 1681,
+     1674, 1669, 1676, 1678, 1678, 1680, 1680, 1672, 1675, 1683,
+     1677, 1677, 1684,    0, 1683, 1685, 1686, 1686, 1681,    0,
+
+     1685, 1687, 1687, 1688, 1688, 1689, 1684, 1691, 1691, 1697,
+     1689, 1694, 1694, 1696, 1696, 1698, 1699, 1699, 1703, 1708,
+     1700, 1704, 1704, 1697, 1698, 1700, 1703, 1705, 1707, 1709,
+     1710, 1708, 1705, 1707, 1711, 1712, 1713, 1709, 1714, 1717,
+     1718, 1718, 1720, 1714, 1719, 1719, 1720, 1726, 1710, 1729,
+     1711, 1726, 1712, 1712, 1724, 1724, 1732, 1713, 1734, 1717,
+     1728, 1728, 1738, 1729, 1731, 1731, 1735, 1735, 1736, 1736,
+     1737, 1732, 1740, 1739, 1741, 1737, 1734, 1742, 1743, 1741,
+     1744, 1744, 1742, 1747, 1747, 1749, 1749, 1738, 1739, 1751,
+     1751, 1753, 1759, 1740, 1754, 1754, 1757, 1743, 1761, 1757,
+
+     1758, 1762, 1760, 1753, 1763, 1758, 1759, 1760, 1768, 1769,
+     1770, 1771, 1768, 1772, 1774, 1773, 1775, 1761, 1778, 1762,
+     1763, 1770, 1776, 1780, 1771, 1777, 1777, 1778, 1780, 1769,
+     1774, 1781, 1772, 1773, 1779, 1779, 1781, 1776, 1782, 1783,
+     1784, 1775, 1785, 1787, 1790, 1784, 1789, 1791, 1792, 1790,
+     1794, 1793, 1791, 1795, 1783, 1796, 1785, 1797, 1787, 1798,
+     1799, 1800, 1792, 1782, 1793, 1789, 1800, 1795, 1801, 1794,
+     1797, 1802, 1798, 1801, 1796, 1803, 1803, 1804, 1805, 1799,
+     1806, 1807, 1804, 1805, 1808, 1806, 1809, 1809, 1810, 1808,
+     1802, 1811, 1812, 1813, 1814, 1810, 1815, 1817, 1813, 1818,
+
+     1807, 1819, 1817, 1820, 1821, 1821, 1823, 1822, 1828, 1815,
+     1811, 1812, 1822, 1814, 1824, 1824, 1820, 1832, 1818, 1826,
+     1819, 1825, 1825, 1827, 1826, 1823, 1830, 1828, 1829, 1829,
+     1827, 1831, 1833, 1830, 1834, 1836, 1832, 1833, 1831, 1837,
+     1836, 1838, 1839, 1841, 1837, 1840, 1840, 1842, 1843, 1843,
+     1844, 1844, 1845, 1834, 1846, 1846, 1847, 1847, 1848, 1845,
+     1838, 1839, 1841, 1850, 1853, 1848, 1842, 1854, 1850, 1853,
+     1855, 1856, 1856, 1857, 1857,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1854,    0,    0, 1855,
+     1861, 1861, 1861, 1861, 1861, 1861, 1861, 1862, 1862, 1862,
+
+     1862, 1862, 1862, 1862, 1863, 1863, 1863, 1863, 1863, 1863,
+     1863, 1864, 1864, 1864, 1864, 1864, 1864, 1864, 1865, 1865,
+     1865, 1865, 1865, 1865, 1865, 1867, 1867,    0, 1867, 1867,
+     1867, 1867, 1868, 1868,    0,    0,    0, 1868, 1868, 1869,
+     1869,    0,    0, 1869,    0, 1869, 1870,    0,    0,    0,
+        0,    0, 1870, 1871, 1871,    0,    0,    0, 1871, 1871,
+     1872,    0,    0,    0,    0,    0, 1872, 1873, 1873,    0,
+     1873, 1873, 1873, 1873, 1874, 1874,    0, 1874, 1874, 1874,
+     1874, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+     1860
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2077,7 +2085,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2079 "<stdout>"
+#line 2087 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2300,7 +2308,7 @@ YY_DECL
        {
 #line 201 "./util/configlexer.lex"
 
-#line 2302 "<stdout>"
+#line 2310 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2333,13 +2341,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 >= 1852 )
+                               if ( yy_current_state >= 1861 )
                                        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] != 3655 );
+               while ( yy_base[yy_current_state] != 3682 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3085,144 +3093,149 @@ YY_RULE_SETUP
 case 144:
 YY_RULE_SETUP
 #line 349 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 350 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 351 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 352 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 353 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 354 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 355 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 356 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 358 "./util/configlexer.lex"
+#line 357 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 360 "./util/configlexer.lex"
+#line 359 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 362 "./util/configlexer.lex"
+#line 361 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 364 "./util/configlexer.lex"
+#line 363 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 366 "./util/configlexer.lex"
+#line 365 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 368 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 367 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 369 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
        YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 370 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 371 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 372 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 373 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 374 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 164:
-/* rule 164 can match eol */
 YY_RULE_SETUP
 #line 375 "./util/configlexer.lex"
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+       YY_BREAK
+case 165:
+/* rule 165 can match eol */
+YY_RULE_SETUP
+#line 376 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 378 "./util/configlexer.lex"
+#line 379 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 379 "./util/configlexer.lex"
+#line 380 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 384 "./util/configlexer.lex"
+#line 385 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 167:
-/* rule 167 can match eol */
+case 168:
+/* rule 168 can match eol */
 YY_RULE_SETUP
-#line 385 "./util/configlexer.lex"
+#line 386 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 387 "./util/configlexer.lex"
+#line 388 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3235,34 +3248,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 399 "./util/configlexer.lex"
+#line 400 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 400 "./util/configlexer.lex"
+#line 401 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 405 "./util/configlexer.lex"
+#line 406 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 171:
-/* rule 171 can match eol */
+case 172:
+/* rule 172 can match eol */
 YY_RULE_SETUP
-#line 406 "./util/configlexer.lex"
+#line 407 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 408 "./util/configlexer.lex"
+#line 409 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3275,38 +3288,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 420 "./util/configlexer.lex"
+#line 421 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 422 "./util/configlexer.lex"
+#line 423 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 174:
-YY_RULE_SETUP
-#line 426 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 175:
-/* rule 175 can match eol */
 YY_RULE_SETUP
 #line 427 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 176:
+/* rule 176 can match eol */
 YY_RULE_SETUP
 #line 428 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 177:
 YY_RULE_SETUP
 #line 429 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 178:
+YY_RULE_SETUP
+#line 430 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3314,27 +3327,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 434 "./util/configlexer.lex"
+#line 435 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 438 "./util/configlexer.lex"
+#line 439 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 179:
-/* rule 179 can match eol */
+case 180:
+/* rule 180 can match eol */
 YY_RULE_SETUP
-#line 439 "./util/configlexer.lex"
+#line 440 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 441 "./util/configlexer.lex"
+#line 442 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3344,7 +3357,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 447 "./util/configlexer.lex"
+#line 448 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3356,33 +3369,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 458 "./util/configlexer.lex"
+#line 459 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 462 "./util/configlexer.lex"
+#line 463 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 466 "./util/configlexer.lex"
+#line 467 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 470 "./util/configlexer.lex"
+#line 471 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3384 "<stdout>"
+#line 3397 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3673,7 +3686,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 >= 1852 )
+                       if ( yy_current_state >= 1861 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3701,11 +3714,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 >= 1852 )
+               if ( yy_current_state >= 1861 )
                        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 == 1851);
+       yy_is_jam = (yy_current_state == 1860);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4344,7 +4357,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 470 "./util/configlexer.lex"
+#line 471 "./util/configlexer.lex"
 
 
 
index 3fe675d331525054fc117fe53c2f7d5f7e2c133d..8665ea54e60cd8e6d9eaa72e29561db1e662cf6c 100644 (file)
@@ -346,6 +346,7 @@ dns64-synthall{COLON}               { YDVAR(1, VAR_DNS64_SYNTHALL) }
 define-tag{COLON}              { YDVAR(1, VAR_DEFINE_TAG) }
 local-zone-tag{COLON}          { YDVAR(2, VAR_LOCAL_ZONE_TAG) }
 access-control-tag{COLON}      { YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+local-zone-override{COLON}     { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
 dnstap{COLON}                  { YDVAR(0, VAR_DNSTAP) }
 dnstap-enable{COLON}           { YDVAR(1, VAR_DNSTAP_ENABLE) }
 dnstap-socket-path{COLON}      { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
index 1d050483a407c589959a62de5119e6f0834a1400..2445cc4b9b2d3cba788bf1c18da20c1320b39f32 100644 (file)
@@ -291,7 +291,8 @@ extern int yydebug;
     VAR_IP_FREEBIND = 422,
     VAR_DEFINE_TAG = 423,
     VAR_LOCAL_ZONE_TAG = 424,
-    VAR_ACCESS_CONTROL_TAG = 425
+    VAR_ACCESS_CONTROL_TAG = 425,
+    VAR_LOCAL_ZONE_OVERRIDE = 426
   };
 #endif
 /* Tokens.  */
@@ -463,6 +464,7 @@ extern int yydebug;
 #define VAR_DEFINE_TAG 423
 #define VAR_LOCAL_ZONE_TAG 424
 #define VAR_ACCESS_CONTROL_TAG 425
+#define VAR_LOCAL_ZONE_OVERRIDE 426
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -473,7 +475,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 477 "util/configparser.c" /* yacc.c:355  */
+#line 479 "util/configparser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -490,7 +492,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 494 "util/configparser.c" /* yacc.c:358  */
+#line 496 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -732,21 +734,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   323
+#define YYLAST   327
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  171
+#define YYNTOKENS  172
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  176
+#define YYNNTS  177
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  337
+#define YYNRULES  339
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  499
+#define YYNSTATES  504
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   425
+#define YYMAXUTOK   426
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -797,7 +799,7 @@ static const yytype_uint8 yytranslate[] =
      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
+     165,   166,   167,   168,   169,   170,   171
 };
 
 #if YYDEBUG
@@ -817,27 +819,27 @@ static const yytype_uint16 yyrline[] =
      183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
      186,   187,   187,   187,   188,   188,   189,   189,   190,   190,
      191,   191,   192,   192,   192,   193,   193,   194,   194,   195,
-     195,   196,   196,   197,   197,   197,   198,   198,   200,   212,
-     213,   214,   214,   214,   214,   214,   216,   228,   229,   230,
-     230,   230,   230,   232,   241,   250,   261,   270,   279,   288,
-     301,   316,   325,   334,   343,   352,   361,   370,   379,   388,
-     397,   406,   415,   424,   433,   442,   449,   456,   465,   474,
-     488,   497,   506,   513,   520,   527,   535,   542,   549,   556,
-     563,   571,   579,   587,   594,   601,   610,   619,   626,   633,
-     641,   649,   659,   669,   679,   692,   703,   711,   724,   733,
-     742,   751,   761,   771,   779,   792,   801,   809,   818,   826,
-     839,   848,   855,   865,   875,   885,   895,   905,   915,   925,
-     935,   942,   949,   956,   965,   974,   983,   990,  1000,  1017,
-    1024,  1042,  1055,  1068,  1077,  1086,  1095,  1104,  1114,  1124,
-    1133,  1142,  1149,  1158,  1167,  1176,  1185,  1193,  1206,  1214,
-    1238,  1245,  1260,  1270,  1280,  1287,  1294,  1303,  1317,  1336,
-    1355,  1364,  1372,  1385,  1398,  1411,  1420,  1430,  1440,  1447,
-    1454,  1463,  1473,  1483,  1490,  1497,  1506,  1511,  1512,  1513,
-    1513,  1513,  1514,  1514,  1514,  1515,  1515,  1517,  1527,  1536,
-    1543,  1553,  1560,  1567,  1574,  1581,  1586,  1587,  1588,  1588,
-    1589,  1589,  1590,  1590,  1591,  1592,  1593,  1594,  1595,  1596,
-    1598,  1606,  1613,  1621,  1629,  1636,  1643,  1652,  1661,  1670,
-    1679,  1688,  1697,  1702,  1703,  1704,  1706,  1712
+     195,   196,   196,   197,   197,   197,   198,   198,   199,   201,
+     213,   214,   215,   215,   215,   215,   215,   217,   229,   230,
+     231,   231,   231,   231,   233,   242,   251,   262,   271,   280,
+     289,   302,   317,   326,   335,   344,   353,   362,   371,   380,
+     389,   398,   407,   416,   425,   434,   443,   450,   457,   466,
+     475,   489,   498,   507,   514,   521,   528,   536,   543,   550,
+     557,   564,   572,   580,   588,   595,   602,   611,   620,   627,
+     634,   642,   650,   660,   670,   680,   693,   704,   712,   725,
+     734,   743,   752,   762,   772,   780,   793,   802,   810,   819,
+     827,   840,   849,   856,   866,   876,   886,   896,   906,   916,
+     926,   936,   943,   950,   957,   966,   975,   984,   991,  1001,
+    1018,  1025,  1043,  1056,  1069,  1078,  1087,  1096,  1105,  1115,
+    1125,  1134,  1143,  1150,  1159,  1168,  1177,  1186,  1194,  1207,
+    1215,  1239,  1246,  1261,  1271,  1281,  1288,  1295,  1304,  1318,
+    1337,  1356,  1368,  1377,  1385,  1398,  1411,  1424,  1433,  1443,
+    1453,  1460,  1467,  1476,  1486,  1496,  1503,  1510,  1519,  1524,
+    1525,  1526,  1526,  1526,  1527,  1527,  1527,  1528,  1528,  1530,
+    1540,  1549,  1556,  1566,  1573,  1580,  1587,  1594,  1599,  1600,
+    1601,  1601,  1602,  1602,  1603,  1603,  1604,  1605,  1606,  1607,
+    1608,  1609,  1611,  1619,  1626,  1634,  1642,  1649,  1656,  1665,
+    1674,  1683,  1692,  1701,  1710,  1715,  1716,  1717,  1719,  1725
 };
 #endif
 
@@ -906,16 +908,17 @@ static const char *const yytname[] =
   "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
   "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "VAR_IP_FREEBIND",
   "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
-  "$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_mss",
+  "VAR_LOCAL_ZONE_OVERRIDE", "$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_mss",
   "server_outgoing_tcp_mss", "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",
@@ -957,18 +960,18 @@ static const char *const yytname[] =
   "server_local_data", "server_local_data_ptr", "server_minimal_responses",
   "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix",
   "server_dns64_synthall", "server_define_tag", "server_local_zone_tag",
-  "access_control_tag", "server_ratelimit", "server_ratelimit_size",
-  "server_ratelimit_slabs", "server_ratelimit_for_domain",
-  "server_ratelimit_below_domain", "server_ratelimit_factor",
-  "server_qname_minimisation", "stub_name", "stub_host", "stub_addr",
-  "stub_first", "stub_prime", "forward_name", "forward_host",
-  "forward_addr", "forward_first", "rcstart", "contents_rc", "content_rc",
-  "rc_control_enable", "rc_control_port", "rc_control_interface",
-  "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file",
-  "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
-  "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path",
-  "dt_dnstap_send_identity", "dt_dnstap_send_version",
-  "dt_dnstap_identity", "dt_dnstap_version",
+  "server_access_control_tag", "server_local_zone_override",
+  "server_ratelimit", "server_ratelimit_size", "server_ratelimit_slabs",
+  "server_ratelimit_for_domain", "server_ratelimit_below_domain",
+  "server_ratelimit_factor", "server_qname_minimisation", "stub_name",
+  "stub_host", "stub_addr", "stub_first", "stub_prime", "forward_name",
+  "forward_host", "forward_addr", "forward_first", "rcstart",
+  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
+  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
+  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
+  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
+  "dt_dnstap_socket_path", "dt_dnstap_send_identity",
+  "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
   "dt_dnstap_log_resolver_query_messages",
   "dt_dnstap_log_resolver_response_messages",
   "dt_dnstap_log_client_query_messages",
@@ -1002,7 +1005,7 @@ static const yytype_uint16 yytoknum[] =
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425
+     425,   426
 };
 # endif
 
@@ -1020,21 +1023,21 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     -81,   119,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   129,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -12,    39,    47,    40,
       36,   -80,    18,    19,    20,    24,    25,    26,    69,    72,
-      73,    74,    75,    80,   108,   129,   130,   150,   151,   152,
-     153,   154,   156,   157,   158,   159,   161,   162,   163,   164,
-     165,   166,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   212,   213,   214,   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,   241,   242,   243,   244,   245,   246,   247,   248,   249,
-     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,   -81,   -81,   -81,
+      73,    74,    75,    80,   108,   109,   120,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   161,   162,   163,   164,
+     166,   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,
+     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   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,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   -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,
@@ -1047,29 +1050,30 @@ 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,   278,   279,   280,   281,   282,   -81,   -81,
-     -81,   -81,   -81,   -81,   283,   284,   285,   286,   -81,   -81,
-     -81,   -81,   -81,   287,   288,   289,   290,   291,   292,   293,
-     294,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   307,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   280,   281,   282,   283,   284,
+     -81,   -81,   -81,   -81,   -81,   -81,   285,   286,   287,   288,
+     -81,   -81,   -81,   -81,   -81,   289,   290,   291,   292,   293,
+     294,   295,   296,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   309,   -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,   -81,   -81,   -81,   -81,   310,   311,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   308,   309,   -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,   312,   313,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   314,   315,   316,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   310,   311,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   312,   313,   -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,   317,   -81
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1077,8 +1081,8 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    10,   138,   146,   286,   332,   305,     3,
-      12,   140,   148,   288,   307,   334,     4,     5,     6,     8,
+       2,     0,     1,    10,   139,   147,   288,   334,   307,     3,
+      12,   141,   149,   290,   309,   336,     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,
@@ -1091,42 +1095,43 @@ 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,    11,    13,    14,
-      72,    75,    84,    15,    23,    63,    16,    76,    77,    34,
-      56,    71,    17,    18,    19,    20,    21,    22,   106,   107,
-     108,   109,   110,    73,    62,    88,   105,    24,    25,    26,
-      27,    28,    64,    78,    79,    94,    50,    60,    51,    89,
-      44,    45,    46,    47,    98,   102,   114,   122,   133,    99,
-      57,    29,    30,    31,    86,   115,   116,   117,    32,    33,
-      35,    36,    38,    39,    37,   120,    40,    41,    42,    48,
-      67,   103,    81,   121,    74,   129,    82,    83,   100,   101,
-      87,    43,    65,    68,    49,    52,    90,    91,    66,   130,
-      92,    53,    54,    55,   104,    93,    61,    95,    96,    97,
-     131,    58,    59,    80,    69,    70,    85,   111,   112,   113,
-     118,   119,   134,   135,   137,   123,   125,   124,   126,   127,
-     128,   132,   136,     0,     0,     0,     0,     0,   139,   141,
-     142,   143,   145,   144,     0,     0,     0,     0,   147,   149,
-     150,   151,   152,     0,     0,     0,     0,     0,     0,     0,
-       0,   287,   289,   291,   290,   296,   292,   293,   294,   295,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   306,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,     0,   333,   335,   154,   153,
-     158,   161,   159,   167,   168,   169,   170,   171,   172,   182,
-     183,   184,   185,   186,   206,   207,   208,   213,   214,   164,
-     215,   216,   219,   217,   218,   221,   222,   223,   236,   195,
-     196,   197,   198,   224,   239,   191,   193,   240,   246,   247,
-     248,   165,   205,   256,   257,   192,   251,   179,   160,   187,
-     237,   243,   225,     0,     0,   260,   166,   155,   178,   229,
-     156,   162,   163,   188,   189,   258,   227,   231,   232,   157,
-     261,   209,   235,   180,   194,   241,   242,   245,   250,   190,
-     254,   252,   253,   199,   204,   233,   234,   200,   201,   226,
-     249,   181,   173,   174,   175,   176,   177,   262,   263,   264,
-     210,   211,   212,   220,   265,   266,   228,   202,   337,   270,
-     272,   271,     0,     0,   275,   230,   244,   255,   276,   203,
-     267,     0,     0,   277,   278,   279,   281,   280,   282,   283,
-     284,   285,   297,   299,   298,   301,   302,   303,   304,   300,
-     320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-     330,   331,   336,   238,   259,   273,   274,   268,   269
+       0,     0,     0,     0,     0,     0,     0,     0,    11,    13,
+      14,    72,    75,    84,    15,    23,    63,    16,    76,    77,
+      34,    56,    71,    17,    18,    19,    20,    21,    22,   106,
+     107,   108,   109,   110,    73,    62,    88,   105,    24,    25,
+      26,    27,    28,    64,    78,    79,    94,    50,    60,    51,
+      89,    44,    45,    46,    47,    98,   102,   114,   122,   133,
+      99,    57,    29,    30,    31,    86,   115,   116,   117,    32,
+      33,    35,    36,    38,    39,    37,   120,    40,    41,    42,
+      48,    67,   103,    81,   121,    74,   129,    82,    83,   100,
+     101,    87,    43,    65,    68,    49,    52,    90,    91,    66,
+     130,    92,    53,    54,    55,   104,    93,    61,    95,    96,
+      97,   131,    58,    59,    80,    69,    70,    85,   111,   112,
+     113,   118,   119,   134,   135,   137,   138,   123,   125,   124,
+     126,   127,   128,   132,   136,     0,     0,     0,     0,     0,
+     140,   142,   143,   144,   146,   145,     0,     0,     0,     0,
+     148,   150,   151,   152,   153,     0,     0,     0,     0,     0,
+       0,     0,     0,   289,   291,   293,   292,   298,   294,   295,
+     296,   297,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   308,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,     0,   335,   337,
+     155,   154,   159,   162,   160,   168,   169,   170,   171,   172,
+     173,   183,   184,   185,   186,   187,   207,   208,   209,   214,
+     215,   165,   216,   217,   220,   218,   219,   222,   223,   224,
+     237,   196,   197,   198,   199,   225,   240,   192,   194,   241,
+     247,   248,   249,   166,   206,   257,   258,   193,   252,   180,
+     161,   188,   238,   244,   226,     0,     0,   261,   167,   156,
+     179,   230,   157,   163,   164,   189,   190,   259,   228,   232,
+     233,   158,   262,   210,   236,   181,   195,   242,   243,   246,
+     251,   191,   255,   253,   254,   200,   205,   234,   235,   201,
+     202,   227,   250,   182,   174,   175,   176,   177,   178,   263,
+     264,   265,   211,   212,   213,   221,   266,   267,   229,   203,
+     339,   272,   274,   273,     0,     0,   277,   231,   245,   256,
+     278,   204,   268,     0,     0,     0,   279,   280,   281,   283,
+     282,   284,   285,   286,   287,   299,   301,   300,   303,   304,
+     305,   306,   302,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   338,   239,   260,   275,   276,
+     269,   270,     0,   271
 };
 
   /* YYPGOTO[NTERM-NUM].  */
@@ -1149,30 +1154,30 @@ 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
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     9,    10,    16,   147,    11,    17,   278,    12,
-      18,   288,   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,   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,   270,   271,   279,   280,   281,   282,
-     283,   289,   290,   291,   292,    13,    19,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,    14,    20,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
-     334,    15,    21,   336,   337,   272
+      -1,     1,     9,    10,    16,   148,    11,    17,   280,    12,
+      18,   290,   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,
+     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,   270,   271,   272,   273,   281,   282,   283,
+     284,   285,   291,   292,   293,   294,    13,    19,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,    14,    20,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,    15,    21,   338,   339,   274
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1182,37 +1187,37 @@ 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,    47,    48,   335,   338,   339,
-     340,    49,    50,    51,   341,   342,   343,    52,    53,    54,
+      42,    43,    44,    45,    46,    47,    48,   337,   340,   341,
+     342,    49,    50,    51,   343,   344,   345,    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,    91,    92,   273,   344,
-     274,   275,   345,   346,   347,   348,   284,    93,    94,    95,
-     349,    96,    97,    98,   285,   286,    99,   100,   101,   102,
+      85,    86,    87,    88,    89,    90,    91,    92,   275,   346,
+     276,   277,   347,   348,   349,   350,   286,    93,    94,    95,
+     351,    96,    97,    98,   287,   288,    99,   100,   101,   102,
      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   350,     2,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,     0,
-       3,   293,   294,   295,   296,   297,   298,   299,   300,   351,
-     352,   276,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,     4,
-     353,   354,   355,   356,   357,     5,   358,   359,   360,   361,
-     277,   362,   363,   364,   365,   366,   367,   287,   310,   311,
-     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
-     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
-     378,   379,   380,   381,   382,   383,   384,   385,   386,     6,
-     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
-     397,   398,   399,   400,   401,     7,   402,   403,   404,   405,
-     406,   407,   408,   409,   410,   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,
-       8,   436,   437,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
-     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
-     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
-     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
-     495,   496,   497,   498
+     113,   114,   115,   116,   117,   118,   119,   120,   352,   353,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,     2,
+     354,   295,   296,   297,   298,   299,   300,   301,   302,     0,
+       3,   278,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,     4,
+     279,   364,   365,   366,   367,     5,   368,   289,   312,   313,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
+     379,   380,   381,   382,   383,   384,   385,   386,   387,   388,
+     389,   390,   391,   392,   393,   394,   395,   396,   397,     6,
+     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
+     408,   409,   410,   411,   412,     7,   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,   441,   442,   443,   444,   445,   446,
+       8,   447,   448,   449,   450,   451,   452,   453,   454,   455,
+     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
+     486,   487,   488,   489,   490,   491,   492,   493,   494,   495,
+     496,   497,   498,   499,   500,   501,   502,   503
 };
 
 static const yytype_int16 yycheck[] =
@@ -1228,14 +1233,15 @@ static const yytype_int16 yycheck[] =
       41,    42,    10,    10,    10,    10,    39,    99,   100,   101,
       10,   103,   104,   105,    47,    48,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,   129,    10,     0,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,    -1,
-      11,    91,    92,    93,    94,    95,    96,    97,    98,    10,
-      10,   102,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   163,   164,   165,   166,   167,   168,   169,   170,    40,
-      10,    10,    10,    10,    10,    46,    10,    10,    10,    10,
-     131,    10,    10,    10,    10,    10,    10,   130,   142,   143,
+     122,   123,   124,   125,   126,   127,   128,   129,    10,    10,
+     132,   133,   134,   135,   136,   137,   138,   139,   140,     0,
+      10,    91,    92,    93,    94,    95,    96,    97,    98,    -1,
+      11,   102,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    40,
+     131,    10,    10,    10,    10,    46,    10,   130,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+      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,    90,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1248,17 +1254,16 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    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,   172,     0,    11,    40,    46,    90,   106,   141,   173,
-     174,   177,   180,   316,   327,   342,   175,   178,   181,   317,
-     328,   343,    12,    13,    14,    15,    16,    17,    18,    19,
+       0,   173,     0,    11,    40,    46,    90,   106,   141,   174,
+     175,   178,   181,   318,   329,   344,   176,   179,   182,   319,
+     330,   345,    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,    37,    38,    43,
       44,    45,    49,    50,    51,    52,    53,    54,    55,    56,
@@ -1270,7 +1275,7 @@ static const yytype_uint16 yystos[] =
      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
      129,   132,   133,   134,   135,   136,   137,   138,   139,   140,
      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   176,   183,   184,
+     164,   165,   166,   167,   168,   169,   170,   171,   177,   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,
@@ -1283,13 +1288,13 @@ static const yytype_uint16 yystos[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   346,    39,    41,    42,   102,   131,   179,   307,
-     308,   309,   310,   311,    39,    47,    48,   130,   182,   312,
-     313,   314,   315,    91,    92,    93,    94,    95,    96,    97,
-      98,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   329,   330,   331,   332,   333,   334,   335,   336,
-     337,   338,   339,   340,   341,   107,   344,   345,    10,    10,
+     305,   306,   307,   308,   348,    39,    41,    42,   102,   131,
+     180,   309,   310,   311,   312,   313,    39,    47,    48,   130,
+     183,   314,   315,   316,   317,    91,    92,    93,    94,    95,
+      96,    97,    98,   320,   321,   322,   323,   324,   325,   326,
+     327,   328,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   331,   332,   333,   334,   335,   336,
+     337,   338,   339,   340,   341,   342,   343,   107,   346,   347,
       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,
@@ -1305,28 +1310,29 @@ 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
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   171,   172,   172,   173,   173,   173,   173,   173,   173,
-     174,   175,   175,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   176,   176,   176,   176,   177,   178,
-     178,   179,   179,   179,   179,   179,   180,   181,   181,   182,
-     182,   182,   182,   183,   184,   185,   186,   187,   188,   189,
+       0,   172,   173,   173,   174,   174,   174,   174,   174,   174,
+     175,   176,   176,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
+     177,   177,   177,   177,   177,   177,   177,   177,   177,   178,
+     179,   179,   180,   180,   180,   180,   180,   181,   182,   182,
+     183,   183,   183,   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,
@@ -1339,12 +1345,12 @@ static const yytype_uint16 yyr1[] =
      280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
      290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
      300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   317,   318,
-     318,   318,   318,   318,   318,   318,   318,   319,   320,   321,
-     322,   323,   324,   325,   326,   327,   328,   328,   329,   329,
-     329,   329,   329,   329,   329,   329,   329,   329,   329,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-     340,   341,   342,   343,   343,   344,   345,   346
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     319,   320,   320,   320,   320,   320,   320,   320,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   330,
+     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+     331,   331,   332,   333,   334,   335,   336,   337,   338,   339,
+     340,   341,   342,   343,   344,   345,   345,   346,   347,   348
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1363,27 +1369,27 @@ 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,
-       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,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       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,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     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,     3,     3,
-       2,     2,     2,     3,     3,     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,     2,     2,     2,     2,     2,     2,     2,
+       3,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+       3,     4,     2,     2,     2,     3,     3,     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
 };
 
 
@@ -2064,11 +2070,11 @@ yyreduce:
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2068 "util/configparser.c" /* yacc.c:1646  */
+#line 2074 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 138:
-#line 201 "./util/configparser.y" /* yacc.c:1646  */
+  case 139:
+#line 202 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2079,11 +2085,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2083 "util/configparser.c" /* yacc.c:1646  */
+#line 2089 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 146:
-#line 217 "./util/configparser.y" /* yacc.c:1646  */
+  case 147:
+#line 218 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2094,11 +2100,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2098 "util/configparser.c" /* yacc.c:1646  */
+#line 2104 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 233 "./util/configparser.y" /* yacc.c:1646  */
+  case 154:
+#line 234 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2106,11 +2112,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2110 "util/configparser.c" /* yacc.c:1646  */
+#line 2116 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 242 "./util/configparser.y" /* yacc.c:1646  */
+  case 155:
+#line 243 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2118,11 +2124,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2122 "util/configparser.c" /* yacc.c:1646  */
+#line 2128 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 251 "./util/configparser.y" /* yacc.c:1646  */
+  case 156:
+#line 252 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2132,11 +2138,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2136 "util/configparser.c" /* yacc.c:1646  */
+#line 2142 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 262 "./util/configparser.y" /* yacc.c:1646  */
+  case 157:
+#line 263 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2144,11 +2150,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2148 "util/configparser.c" /* yacc.c:1646  */
+#line 2154 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 157:
-#line 271 "./util/configparser.y" /* yacc.c:1646  */
+  case 158:
+#line 272 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2156,11 +2162,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2160 "util/configparser.c" /* yacc.c:1646  */
+#line 2166 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 158:
-#line 280 "./util/configparser.y" /* yacc.c:1646  */
+  case 159:
+#line 281 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2168,11 +2174,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2172 "util/configparser.c" /* yacc.c:1646  */
+#line 2178 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 289 "./util/configparser.y" /* yacc.c:1646  */
+  case 160:
+#line 290 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2184,11 +2190,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2188 "util/configparser.c" /* yacc.c:1646  */
+#line 2194 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 160:
-#line 302 "./util/configparser.y" /* yacc.c:1646  */
+  case 161:
+#line 303 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2202,11 +2208,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2206 "util/configparser.c" /* yacc.c:1646  */
+#line 2212 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 317 "./util/configparser.y" /* yacc.c:1646  */
+  case 162:
+#line 318 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2214,11 +2220,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2218 "util/configparser.c" /* yacc.c:1646  */
+#line 2224 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 326 "./util/configparser.y" /* yacc.c:1646  */
+  case 163:
+#line 327 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2226,11 +2232,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2230 "util/configparser.c" /* yacc.c:1646  */
+#line 2236 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 335 "./util/configparser.y" /* yacc.c:1646  */
+  case 164:
+#line 336 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2238,11 +2244,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2242 "util/configparser.c" /* yacc.c:1646  */
+#line 2248 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 344 "./util/configparser.y" /* yacc.c:1646  */
+  case 165:
+#line 345 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2250,11 +2256,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2254 "util/configparser.c" /* yacc.c:1646  */
+#line 2260 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 353 "./util/configparser.y" /* yacc.c:1646  */
+  case 166:
+#line 354 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2262,11 +2268,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2266 "util/configparser.c" /* yacc.c:1646  */
+#line 2272 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 362 "./util/configparser.y" /* yacc.c:1646  */
+  case 167:
+#line 363 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2274,11 +2280,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2278 "util/configparser.c" /* yacc.c:1646  */
+#line 2284 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 371 "./util/configparser.y" /* yacc.c:1646  */
+  case 168:
+#line 372 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2286,11 +2292,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2290 "util/configparser.c" /* yacc.c:1646  */
+#line 2296 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 380 "./util/configparser.y" /* yacc.c:1646  */
+  case 169:
+#line 381 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2298,11 +2304,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2302 "util/configparser.c" /* yacc.c:1646  */
+#line 2308 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 389 "./util/configparser.y" /* yacc.c:1646  */
+  case 170:
+#line 390 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2310,11 +2316,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2314 "util/configparser.c" /* yacc.c:1646  */
+#line 2320 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 398 "./util/configparser.y" /* yacc.c:1646  */
+  case 171:
+#line 399 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2322,11 +2328,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2326 "util/configparser.c" /* yacc.c:1646  */
+#line 2332 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 407 "./util/configparser.y" /* yacc.c:1646  */
+  case 172:
+#line 408 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2334,11 +2340,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2338 "util/configparser.c" /* yacc.c:1646  */
+#line 2344 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 416 "./util/configparser.y" /* yacc.c:1646  */
+  case 173:
+#line 417 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2346,11 +2352,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2350 "util/configparser.c" /* yacc.c:1646  */
+#line 2356 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 425 "./util/configparser.y" /* yacc.c:1646  */
+  case 174:
+#line 426 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2358,11 +2364,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2362 "util/configparser.c" /* yacc.c:1646  */
+#line 2368 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 434 "./util/configparser.y" /* yacc.c:1646  */
+  case 175:
+#line 435 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2370,31 +2376,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2374 "util/configparser.c" /* yacc.c:1646  */
+#line 2380 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 443 "./util/configparser.y" /* yacc.c:1646  */
+  case 176:
+#line 444 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 2384 "util/configparser.c" /* yacc.c:1646  */
+#line 2390 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 450 "./util/configparser.y" /* yacc.c:1646  */
+  case 177:
+#line 451 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 2394 "util/configparser.c" /* yacc.c:1646  */
+#line 2400 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 457 "./util/configparser.y" /* yacc.c:1646  */
+  case 178:
+#line 458 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2402,11 +2408,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2406 "util/configparser.c" /* yacc.c:1646  */
+#line 2412 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 466 "./util/configparser.y" /* yacc.c:1646  */
+  case 179:
+#line 467 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2414,11 +2420,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2418 "util/configparser.c" /* yacc.c:1646  */
+#line 2424 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 475 "./util/configparser.y" /* yacc.c:1646  */
+  case 180:
+#line 476 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2431,11 +2437,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2435 "util/configparser.c" /* yacc.c:1646  */
+#line 2441 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 489 "./util/configparser.y" /* yacc.c:1646  */
+  case 181:
+#line 490 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2443,11 +2449,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2447 "util/configparser.c" /* yacc.c:1646  */
+#line 2453 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 498 "./util/configparser.y" /* yacc.c:1646  */
+  case 182:
+#line 499 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2455,145 +2461,145 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2459 "util/configparser.c" /* yacc.c:1646  */
+#line 2465 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 507 "./util/configparser.y" /* yacc.c:1646  */
+  case 183:
+#line 508 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2469 "util/configparser.c" /* yacc.c:1646  */
+#line 2475 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 514 "./util/configparser.y" /* yacc.c:1646  */
+  case 184:
+#line 515 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2479 "util/configparser.c" /* yacc.c:1646  */
+#line 2485 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 521 "./util/configparser.y" /* yacc.c:1646  */
+  case 185:
+#line 522 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
                cfg_parser->cfg->directory = (yyvsp[0].str);
        }
-#line 2489 "util/configparser.c" /* yacc.c:1646  */
+#line 2495 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 528 "./util/configparser.y" /* yacc.c:1646  */
+  case 186:
+#line 529 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 2500 "util/configparser.c" /* yacc.c:1646  */
+#line 2506 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 536 "./util/configparser.y" /* yacc.c:1646  */
+  case 187:
+#line 537 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2510 "util/configparser.c" /* yacc.c:1646  */
+#line 2516 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 543 "./util/configparser.y" /* yacc.c:1646  */
+  case 188:
+#line 544 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2520 "util/configparser.c" /* yacc.c:1646  */
+#line 2526 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 550 "./util/configparser.y" /* yacc.c:1646  */
+  case 189:
+#line 551 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 2530 "util/configparser.c" /* yacc.c:1646  */
+#line 2536 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 557 "./util/configparser.y" /* yacc.c:1646  */
+  case 190:
+#line 558 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2540 "util/configparser.c" /* yacc.c:1646  */
+#line 2546 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 564 "./util/configparser.y" /* yacc.c:1646  */
+  case 191:
+#line 565 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2551 "util/configparser.c" /* yacc.c:1646  */
+#line 2557 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 572 "./util/configparser.y" /* yacc.c:1646  */
+  case 192:
+#line 573 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2562 "util/configparser.c" /* yacc.c:1646  */
+#line 2568 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 580 "./util/configparser.y" /* yacc.c:1646  */
+  case 193:
+#line 581 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2573 "util/configparser.c" /* yacc.c:1646  */
+#line 2579 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 588 "./util/configparser.y" /* yacc.c:1646  */
+  case 194:
+#line 589 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2583 "util/configparser.c" /* yacc.c:1646  */
+#line 2589 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 595 "./util/configparser.y" /* yacc.c:1646  */
+  case 195:
+#line 596 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2593 "util/configparser.c" /* yacc.c:1646  */
+#line 2599 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 602 "./util/configparser.y" /* yacc.c:1646  */
+  case 196:
+#line 603 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2601,11 +2607,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2605 "util/configparser.c" /* yacc.c:1646  */
+#line 2611 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 611 "./util/configparser.y" /* yacc.c:1646  */
+  case 197:
+#line 612 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2613,53 +2619,53 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2617 "util/configparser.c" /* yacc.c:1646  */
+#line 2623 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 620 "./util/configparser.y" /* yacc.c:1646  */
+  case 198:
+#line 621 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 2627 "util/configparser.c" /* yacc.c:1646  */
+#line 2633 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 627 "./util/configparser.y" /* yacc.c:1646  */
+  case 199:
+#line 628 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 2637 "util/configparser.c" /* yacc.c:1646  */
+#line 2643 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 634 "./util/configparser.y" /* yacc.c:1646  */
+  case 200:
+#line 635 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2648 "util/configparser.c" /* yacc.c:1646  */
+#line 2654 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 642 "./util/configparser.y" /* yacc.c:1646  */
+  case 201:
+#line 643 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2659 "util/configparser.c" /* yacc.c:1646  */
+#line 2665 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 650 "./util/configparser.y" /* yacc.c:1646  */
+  case 202:
+#line 651 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2668,11 +2674,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2672 "util/configparser.c" /* yacc.c:1646  */
+#line 2678 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 660 "./util/configparser.y" /* yacc.c:1646  */
+  case 203:
+#line 661 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2681,11 +2687,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2685 "util/configparser.c" /* yacc.c:1646  */
+#line 2691 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 670 "./util/configparser.y" /* yacc.c:1646  */
+  case 204:
+#line 671 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2694,11 +2700,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2698 "util/configparser.c" /* yacc.c:1646  */
+#line 2704 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 680 "./util/configparser.y" /* yacc.c:1646  */
+  case 205:
+#line 681 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2710,11 +2716,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2714 "util/configparser.c" /* yacc.c:1646  */
+#line 2720 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 693 "./util/configparser.y" /* yacc.c:1646  */
+  case 206:
+#line 694 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2724,22 +2730,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2728 "util/configparser.c" /* yacc.c:1646  */
+#line 2734 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 704 "./util/configparser.y" /* yacc.c:1646  */
+  case 207:
+#line 705 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2739 "util/configparser.c" /* yacc.c:1646  */
+#line 2745 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 712 "./util/configparser.y" /* yacc.c:1646  */
+  case 208:
+#line 713 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2751,11 +2757,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2755 "util/configparser.c" /* yacc.c:1646  */
+#line 2761 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 725 "./util/configparser.y" /* yacc.c:1646  */
+  case 209:
+#line 726 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2763,11 +2769,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2767 "util/configparser.c" /* yacc.c:1646  */
+#line 2773 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 734 "./util/configparser.y" /* yacc.c:1646  */
+  case 210:
+#line 735 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2775,11 +2781,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2779 "util/configparser.c" /* yacc.c:1646  */
+#line 2785 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 743 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 744 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2787,11 +2793,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2791 "util/configparser.c" /* yacc.c:1646  */
+#line 2797 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 752 "./util/configparser.y" /* yacc.c:1646  */
+  case 212:
+#line 753 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2800,11 +2806,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2804 "util/configparser.c" /* yacc.c:1646  */
+#line 2810 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 762 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 763 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2813,22 +2819,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2817 "util/configparser.c" /* yacc.c:1646  */
+#line 2823 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 772 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 773 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2828 "util/configparser.c" /* yacc.c:1646  */
+#line 2834 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 780 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 781 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2840,11 +2846,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2844 "util/configparser.c" /* yacc.c:1646  */
+#line 2850 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 793 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 794 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2852,22 +2858,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2856 "util/configparser.c" /* yacc.c:1646  */
+#line 2862 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 802 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 803 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2867 "util/configparser.c" /* yacc.c:1646  */
+#line 2873 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 810 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 811 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2875,22 +2881,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2879 "util/configparser.c" /* yacc.c:1646  */
+#line 2885 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 819 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 820 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2890 "util/configparser.c" /* yacc.c:1646  */
+#line 2896 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 827 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 828 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2902,11 +2908,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2906 "util/configparser.c" /* yacc.c:1646  */
+#line 2912 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 840 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 841 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2914,21 +2920,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2918 "util/configparser.c" /* yacc.c:1646  */
+#line 2924 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 849 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 850 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 2928 "util/configparser.c" /* yacc.c:1646  */
+#line 2934 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 856 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 857 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2937,11 +2943,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2941 "util/configparser.c" /* yacc.c:1646  */
+#line 2947 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 866 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 867 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2950,11 +2956,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2954 "util/configparser.c" /* yacc.c:1646  */
+#line 2960 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 876 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 877 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2963,11 +2969,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2967 "util/configparser.c" /* yacc.c:1646  */
+#line 2973 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 886 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 887 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2976,11 +2982,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2980 "util/configparser.c" /* yacc.c:1646  */
+#line 2986 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 896 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 897 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2989,11 +2995,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2993 "util/configparser.c" /* yacc.c:1646  */
+#line 2999 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 906 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 907 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3002,11 +3008,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3006 "util/configparser.c" /* yacc.c:1646  */
+#line 3012 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 916 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 917 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3015,11 +3021,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3019 "util/configparser.c" /* yacc.c:1646  */
+#line 3025 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 926 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 927 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3028,41 +3034,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3032 "util/configparser.c" /* yacc.c:1646  */
+#line 3038 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 936 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 937 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3042 "util/configparser.c" /* yacc.c:1646  */
+#line 3048 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 943 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 944 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3052 "util/configparser.c" /* yacc.c:1646  */
+#line 3058 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 950 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 951 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3062 "util/configparser.c" /* yacc.c:1646  */
+#line 3068 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 957 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 958 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3070,11 +3076,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3074 "util/configparser.c" /* yacc.c:1646  */
+#line 3080 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 966 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 967 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3082,11 +3088,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3086 "util/configparser.c" /* yacc.c:1646  */
+#line 3092 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 975 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 976 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3094,21 +3100,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3098 "util/configparser.c" /* yacc.c:1646  */
+#line 3104 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 984 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 985 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3108 "util/configparser.c" /* yacc.c:1646  */
+#line 3114 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 991 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 992 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3117,11 +3123,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3121 "util/configparser.c" /* yacc.c:1646  */
+#line 3127 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 1001 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 1002 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -3137,21 +3143,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3141 "util/configparser.c" /* yacc.c:1646  */
+#line 3147 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 1018 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 1019 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 3151 "util/configparser.c" /* yacc.c:1646  */
+#line 3157 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 1025 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 1026 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3168,11 +3174,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3172 "util/configparser.c" /* yacc.c:1646  */
+#line 3178 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 1043 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 1044 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3184,11 +3190,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3188 "util/configparser.c" /* yacc.c:1646  */
+#line 3194 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 1056 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 1057 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3200,11 +3206,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3204 "util/configparser.c" /* yacc.c:1646  */
+#line 3210 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 1069 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 1070 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3212,11 +3218,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3216 "util/configparser.c" /* yacc.c:1646  */
+#line 3222 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 1078 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 1079 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3224,11 +3230,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3228 "util/configparser.c" /* yacc.c:1646  */
+#line 3234 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 1087 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 1088 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3236,11 +3242,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3240 "util/configparser.c" /* yacc.c:1646  */
+#line 3246 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1096 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 1097 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3248,11 +3254,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3252 "util/configparser.c" /* yacc.c:1646  */
+#line 3258 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1105 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 1106 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3261,11 +3267,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3265 "util/configparser.c" /* yacc.c:1646  */
+#line 3271 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1115 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 1116 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3274,11 +3280,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3278 "util/configparser.c" /* yacc.c:1646  */
+#line 3284 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 1125 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 1126 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3286,11 +3292,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3290 "util/configparser.c" /* yacc.c:1646  */
+#line 3296 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1134 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 1135 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3298,21 +3304,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3302 "util/configparser.c" /* yacc.c:1646  */
+#line 3308 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1143 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 1144 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 3312 "util/configparser.c" /* yacc.c:1646  */
+#line 3318 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1150 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 1151 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3320,11 +3326,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3324 "util/configparser.c" /* yacc.c:1646  */
+#line 3330 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1159 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 1160 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3332,11 +3338,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3336 "util/configparser.c" /* yacc.c:1646  */
+#line 3342 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1168 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 1169 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3344,11 +3350,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3348 "util/configparser.c" /* yacc.c:1646  */
+#line 3354 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1177 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 1178 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3357,22 +3363,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3361 "util/configparser.c" /* yacc.c:1646  */
+#line 3367 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1186 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 1187 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3372 "util/configparser.c" /* yacc.c:1646  */
+#line 3378 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1194 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 1195 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3384,22 +3390,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3388 "util/configparser.c" /* yacc.c:1646  */
+#line 3394 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1207 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 1208 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3399 "util/configparser.c" /* yacc.c:1646  */
+#line 3405 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1215 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 1216 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -3422,21 +3428,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3426 "util/configparser.c" /* yacc.c:1646  */
+#line 3432 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1239 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 1240 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 3436 "util/configparser.c" /* yacc.c:1646  */
+#line 3442 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1246 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 1247 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3450,11 +3456,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3454 "util/configparser.c" /* yacc.c:1646  */
+#line 3460 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1261 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 1262 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3463,11 +3469,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3467 "util/configparser.c" /* yacc.c:1646  */
+#line 3473 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1271 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 1272 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3476,31 +3482,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3480 "util/configparser.c" /* yacc.c:1646  */
+#line 3486 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1281 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 1282 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3490 "util/configparser.c" /* yacc.c:1646  */
+#line 3496 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1288 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 1289 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 3500 "util/configparser.c" /* yacc.c:1646  */
+#line 3506 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1295 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 1296 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3508,11 +3514,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3512 "util/configparser.c" /* yacc.c:1646  */
+#line 3518 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1304 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 1305 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -3525,11 +3531,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3529 "util/configparser.c" /* yacc.c:1646  */
+#line 3535 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1318 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 1319 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3547,11 +3553,11 @@ yyreduce:
                        }
                }
        }
-#line 3551 "util/configparser.c" /* yacc.c:1646  */
+#line 3557 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1337 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 1338 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3569,11 +3575,26 @@ yyreduce:
                        }
                }
        }
-#line 3573 "util/configparser.c" /* yacc.c:1646  */
+#line 3579 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1356 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 1357 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
+               if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
+                       (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) {
+                       yyerror("out of memory");
+                       free((yyvsp[-2].str));
+                       free((yyvsp[-1].str));
+                       free((yyvsp[0].str));
+               }
+       }
+#line 3594 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 272:
+#line 1369 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3581,22 +3602,22 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3585 "util/configparser.c" /* yacc.c:1646  */
+#line 3606 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1365 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 1378 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3596 "util/configparser.c" /* yacc.c:1646  */
+#line 3617 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1373 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 1386 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3608,11 +3629,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3612 "util/configparser.c" /* yacc.c:1646  */
+#line 3633 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1386 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1399 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3624,11 +3645,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 3628 "util/configparser.c" /* yacc.c:1646  */
+#line 3649 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1399 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1412 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3640,11 +3661,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 3644 "util/configparser.c" /* yacc.c:1646  */
+#line 3665 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1412 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1425 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3652,11 +3673,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3656 "util/configparser.c" /* yacc.c:1646  */
+#line 3677 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1421 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1434 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3665,11 +3686,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3669 "util/configparser.c" /* yacc.c:1646  */
+#line 3690 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1431 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1444 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3678,31 +3699,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 3682 "util/configparser.c" /* yacc.c:1646  */
+#line 3703 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1441 "./util/configparser.y" /* yacc.c:1646  */
+  case 280:
+#line 1454 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3692 "util/configparser.c" /* yacc.c:1646  */
+#line 3713 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1448 "./util/configparser.y" /* yacc.c:1646  */
+  case 281:
+#line 1461 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3702 "util/configparser.c" /* yacc.c:1646  */
+#line 3723 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1455 "./util/configparser.y" /* yacc.c:1646  */
+  case 282:
+#line 1468 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3710,11 +3731,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3714 "util/configparser.c" /* yacc.c:1646  */
+#line 3735 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1464 "./util/configparser.y" /* yacc.c:1646  */
+  case 283:
+#line 1477 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3723,11 +3744,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3727 "util/configparser.c" /* yacc.c:1646  */
+#line 3748 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1474 "./util/configparser.y" /* yacc.c:1646  */
+  case 284:
+#line 1487 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3736,31 +3757,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 3740 "util/configparser.c" /* yacc.c:1646  */
+#line 3761 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1484 "./util/configparser.y" /* yacc.c:1646  */
+  case 285:
+#line 1497 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3750 "util/configparser.c" /* yacc.c:1646  */
+#line 3771 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1491 "./util/configparser.y" /* yacc.c:1646  */
+  case 286:
+#line 1504 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3760 "util/configparser.c" /* yacc.c:1646  */
+#line 3781 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1498 "./util/configparser.y" /* yacc.c:1646  */
+  case 287:
+#line 1511 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3768,19 +3789,19 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3772 "util/configparser.c" /* yacc.c:1646  */
+#line 3793 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1507 "./util/configparser.y" /* yacc.c:1646  */
+  case 288:
+#line 1520 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 3780 "util/configparser.c" /* yacc.c:1646  */
+#line 3801 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1518 "./util/configparser.y" /* yacc.c:1646  */
+  case 299:
+#line 1531 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3789,11 +3810,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3793 "util/configparser.c" /* yacc.c:1646  */
+#line 3814 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1528 "./util/configparser.y" /* yacc.c:1646  */
+  case 300:
+#line 1541 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3801,21 +3822,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3805 "util/configparser.c" /* yacc.c:1646  */
+#line 3826 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1537 "./util/configparser.y" /* yacc.c:1646  */
+  case 301:
+#line 1550 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3815 "util/configparser.c" /* yacc.c:1646  */
+#line 3836 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 1544 "./util/configparser.y" /* yacc.c:1646  */
+  case 302:
+#line 1557 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3824,122 +3845,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3828 "util/configparser.c" /* yacc.c:1646  */
+#line 3849 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 1554 "./util/configparser.y" /* yacc.c:1646  */
+  case 303:
+#line 1567 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 3838 "util/configparser.c" /* yacc.c:1646  */
+#line 3859 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1561 "./util/configparser.y" /* yacc.c:1646  */
+  case 304:
+#line 1574 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 3848 "util/configparser.c" /* yacc.c:1646  */
+#line 3869 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1568 "./util/configparser.y" /* yacc.c:1646  */
+  case 305:
+#line 1581 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 3858 "util/configparser.c" /* yacc.c:1646  */
+#line 3879 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1575 "./util/configparser.y" /* yacc.c:1646  */
+  case 306:
+#line 1588 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 3868 "util/configparser.c" /* yacc.c:1646  */
+#line 3889 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1582 "./util/configparser.y" /* yacc.c:1646  */
+  case 307:
+#line 1595 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 3876 "util/configparser.c" /* yacc.c:1646  */
+#line 3897 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1599 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1612 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3887 "util/configparser.c" /* yacc.c:1646  */
+#line 3908 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1607 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1620 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 3897 "util/configparser.c" /* yacc.c:1646  */
+#line 3918 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 1614 "./util/configparser.y" /* yacc.c:1646  */
+  case 324:
+#line 1627 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3908 "util/configparser.c" /* yacc.c:1646  */
+#line 3929 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 1622 "./util/configparser.y" /* yacc.c:1646  */
+  case 325:
+#line 1635 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3919 "util/configparser.c" /* yacc.c:1646  */
+#line 3940 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 324:
-#line 1630 "./util/configparser.y" /* yacc.c:1646  */
+  case 326:
+#line 1643 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 3929 "util/configparser.c" /* yacc.c:1646  */
+#line 3950 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 1637 "./util/configparser.y" /* yacc.c:1646  */
+  case 327:
+#line 1650 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 3939 "util/configparser.c" /* yacc.c:1646  */
+#line 3960 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 326:
-#line 1644 "./util/configparser.y" /* yacc.c:1646  */
+  case 328:
+#line 1657 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3947,11 +3968,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3951 "util/configparser.c" /* yacc.c:1646  */
+#line 3972 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 1653 "./util/configparser.y" /* yacc.c:1646  */
+  case 329:
+#line 1666 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3959,11 +3980,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3963 "util/configparser.c" /* yacc.c:1646  */
+#line 3984 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 328:
-#line 1662 "./util/configparser.y" /* yacc.c:1646  */
+  case 330:
+#line 1675 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3971,11 +3992,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3975 "util/configparser.c" /* yacc.c:1646  */
+#line 3996 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 329:
-#line 1671 "./util/configparser.y" /* yacc.c:1646  */
+  case 331:
+#line 1684 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3983,11 +4004,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3987 "util/configparser.c" /* yacc.c:1646  */
+#line 4008 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 330:
-#line 1680 "./util/configparser.y" /* yacc.c:1646  */
+  case 332:
+#line 1693 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3995,11 +4016,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 3999 "util/configparser.c" /* yacc.c:1646  */
+#line 4020 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 331:
-#line 1689 "./util/configparser.y" /* yacc.c:1646  */
+  case 333:
+#line 1702 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4007,29 +4028,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4011 "util/configparser.c" /* yacc.c:1646  */
+#line 4032 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 1698 "./util/configparser.y" /* yacc.c:1646  */
+  case 334:
+#line 1711 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 4019 "util/configparser.c" /* yacc.c:1646  */
+#line 4040 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 1707 "./util/configparser.y" /* yacc.c:1646  */
+  case 338:
+#line 1720 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 4029 "util/configparser.c" /* yacc.c:1646  */
+#line 4050 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 337:
-#line 1713 "./util/configparser.y" /* yacc.c:1646  */
+  case 339:
+#line 1726 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4038,11 +4059,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4042 "util/configparser.c" /* yacc.c:1646  */
+#line 4063 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 4046 "util/configparser.c" /* yacc.c:1646  */
+#line 4067 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4270,7 +4291,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1721 "./util/configparser.y" /* yacc.c:1906  */
+#line 1734 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index ef1282859193e966eb1e05e994482a98d965432b..53512fa5a193ac9d0a599f8c19a117e07bab4d8b 100644 (file)
@@ -212,7 +212,8 @@ extern int yydebug;
     VAR_IP_FREEBIND = 422,
     VAR_DEFINE_TAG = 423,
     VAR_LOCAL_ZONE_TAG = 424,
-    VAR_ACCESS_CONTROL_TAG = 425
+    VAR_ACCESS_CONTROL_TAG = 425,
+    VAR_LOCAL_ZONE_OVERRIDE = 426
   };
 #endif
 /* Tokens.  */
@@ -384,6 +385,7 @@ extern int yydebug;
 #define VAR_DEFINE_TAG 423
 #define VAR_LOCAL_ZONE_TAG 424
 #define VAR_ACCESS_CONTROL_TAG 425
+#define VAR_LOCAL_ZONE_OVERRIDE 426
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -394,7 +396,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 398 "util/configparser.h" /* yacc.c:1909  */
+#line 400 "util/configparser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index adaf01f845dc19b3f8e57103813a0aaba28c3882..92e159be71d1272f6358882d9628aa3672c9177f 100644 (file)
@@ -126,7 +126,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR
 %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN
 %token VAR_QNAME_MINIMISATION VAR_IP_FREEBIND VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG
-%token VAR_ACCESS_CONTROL_TAG
+%token VAR_ACCESS_CONTROL_TAG VAR_LOCAL_ZONE_OVERRIDE
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -195,7 +195,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_caps_whitelist | server_cache_max_negative_ttl |
        server_permit_small_holddown | server_qname_minimisation |
        server_ip_freebind | server_define_tag | server_local_zone_tag |
-       server_disable_dnssec_lame_check | access_control_tag
+       server_disable_dnssec_lame_check | server_access_control_tag |
+       server_local_zone_override
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -1333,7 +1334,7 @@ server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG
                }
        }
        ;
-access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG
+server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG
        {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, $3,
@@ -1352,6 +1353,18 @@ access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG
                }
        }
        ;
+server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG
+       {
+               OUTYY(("P(server_local_zone_override:%s %s %s)\n", $2, $3, $4));
+               if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
+                       $2, $3, $4)) {
+                       yyerror("out of memory");
+                       free($2);
+                       free($3);
+                       free($4);
+               }
+       }
+       ;
 server_ratelimit: VAR_RATELIMIT STRING_ARG 
        { 
                OUTYY(("P(server_ratelimit:%s)\n", $2));