]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Introduce ratelimit-backoff and ip-ratelimit-backoff options for more
authorGeorge Thessalonikefs <george@nlnetlabs.nl>
Sat, 29 Jan 2022 23:23:22 +0000 (00:23 +0100)
committerGeorge Thessalonikefs <george@nlnetlabs.nl>
Sat, 29 Jan 2022 23:36:29 +0000 (00:36 +0100)
  aggressive rate limiting.

13 files changed:
daemon/remote.c
daemon/worker.c
doc/unbound.conf.5.in
services/cache/infra.c
services/cache/infra.h
services/outside_network.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index 183f6d4dcb24071a7b20c45e747095444061a822..ea064e97febcf9c58284537e6017b716ff7769b9 100644 (file)
@@ -2865,6 +2865,8 @@ struct ratelimit_list_arg {
        int all;
        /** current time */
        time_t now;
+       /** if backoff is enabled */
+       int backoff;
 };
 
 #define ip_ratelimit_list_arg ratelimit_list_arg
@@ -2878,7 +2880,7 @@ rate_list(struct lruhash_entry* e, void* arg)
        struct rate_data* d = (struct rate_data*)e->data;
        char buf[257];
        int lim = infra_find_ratelimit(a->infra, k->name, k->namelen);
-       int max = infra_rate_max(d, a->now);
+       int max = infra_rate_max(d, a->now, a->backoff);
        if(a->all == 0) {
                if(max < lim)
                        return;
@@ -2896,7 +2898,7 @@ ip_rate_list(struct lruhash_entry* e, void* arg)
        struct ip_rate_key* k = (struct ip_rate_key*)e->key;
        struct ip_rate_data* d = (struct ip_rate_data*)e->data;
        int lim = infra_ip_ratelimit;
-       int max = infra_rate_max(d, a->now);
+       int max = infra_rate_max(d, a->now, a->backoff);
        if(a->all == 0) {
                if(max < lim)
                        return;
@@ -2914,6 +2916,7 @@ do_ratelimit_list(RES* ssl, struct worker* worker, char* arg)
        a.infra = worker->env.infra_cache;
        a.now = *worker->env.now;
        a.ssl = ssl;
+       a.backoff = worker->env.cfg->ratelimit_backoff;
        arg = skipwhite(arg);
        if(strcmp(arg, "+a") == 0)
                a.all = 1;
@@ -2932,6 +2935,7 @@ do_ip_ratelimit_list(RES* ssl, struct worker* worker, char* arg)
        a.infra = worker->env.infra_cache;
        a.now = *worker->env.now;
        a.ssl = ssl;
+       a.backoff = worker->env.cfg->ip_ratelimit_backoff;
        arg = skipwhite(arg);
        if(strcmp(arg, "+a") == 0)
                a.all = 1;
index a6b161f7a3f1d442829c8606f69bf47735aaa88d..862affb24e9a14ef454c58c7fcbf1f079c628c26 100644 (file)
@@ -1167,7 +1167,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error,
 
        /* check if this query should be dropped based on source ip rate limiting */
        if(!infra_ip_ratelimit_inc(worker->env.infra_cache, repinfo,
-                       *worker->env.now, c->buffer)) {
+                       *worker->env.now,
+                       worker->env.cfg->ip_ratelimit_backoff, c->buffer)) {
                /* See if we are passed through with slip factor */
                if(worker->env.cfg->ip_ratelimit_factor != 0 &&
                        ub_random_max(worker->env.rnd,
index a4d7ca3bcb75e39cccd4f575a72d1a575ae8cd34..9af909cab426f0963ea9135f3861f655ad3bc836 100644 (file)
@@ -1671,6 +1671,15 @@ This can make ordinary queries complete (if repeatedly queried for),
 and enter the cache, whilst also mitigating the traffic flow by the
 factor given.
 .TP 5
+.B ratelimit\-backoff: \fI<yes or no>
+If enabled, the ratelimit is treated as a hard failure instead of the default
+maximum allowed constant rate.  When the limit is reached, traffic is
+ratelimited and demand continues to be kept track of for a 2 second rate
+window.  No traffic is allowed, except for ratelimit\-factor, until demand
+decreases below the configured ratelimit for a 2 second rate window.  Useful to
+set ratelimit to a suspicious rate to aggressively limit unusually high
+traffic.  Default is off.
+.TP 5
 .B ratelimit\-for\-domain: \fI<domain> <number qps or 0>
 Override the global ratelimit for an exact match domain name with the listed
 number.  You can give this for any number of names.  For example, for
index 01e1a7cdd481cafa5f0b6a5ad87956418f6140bb..252e1e288b354e646315bf44ffdc8e46e24f5d5b 100644 (file)
@@ -934,20 +934,27 @@ static int* infra_rate_get_second(void* data, time_t t)
     return infra_rate_find_second_or_none(data, t, 0);
 }
 
-int infra_rate_max(void* data, time_t now)
+int infra_rate_max(void* data, time_t now, int backoff)
 {
        struct rate_data* d = (struct rate_data*)data;
        int i, max = 0;
        for(i=0; i<RATE_WINDOW; i++) {
-               if(now == d->timestamp[i]) {
-                       return d->qps[i];
+               if(backoff) {
+                       if(now-d->timestamp[i] <= RATE_WINDOW &&
+                               d->qps[i] > max) {
+                               max = d->qps[i];
+                       }
+               } else {
+                       if(now == d->timestamp[i]) {
+                               return d->qps[i];
+                       }
                }
        }
        return max;
 }
 
 int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name,
-       size_t namelen, time_t timenow, struct query_info* qinfo,
+       size_t namelen, time_t timenow, int backoff, struct query_info* qinfo,
        struct comm_reply* replylist)
 {
        int lim, max;
@@ -964,10 +971,10 @@ int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name,
        /* find or insert ratedata */
        entry = infra_find_ratedata(infra, name, namelen, 1);
        if(entry) {
-               int premax = infra_rate_max(entry->data, timenow);
+               int premax = infra_rate_max(entry->data, timenow, backoff);
                int* cur = infra_rate_give_second(entry->data, timenow);
                (*cur)++;
-               max = infra_rate_max(entry->data, timenow);
+               max = infra_rate_max(entry->data, timenow, backoff);
                lock_rw_unlock(&entry->lock);
 
                if(premax <= lim && max > lim) {
@@ -1014,7 +1021,7 @@ void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name,
 }
 
 int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name,
-       size_t namelen, time_t timenow)
+       size_t namelen, time_t timenow, int backoff)
 {
        struct lruhash_entry* entry;
        int lim, max;
@@ -1030,7 +1037,7 @@ int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name,
        entry = infra_find_ratedata(infra, name, namelen, 0);
        if(!entry)
                return 0; /* not cached */
-       max = infra_rate_max(entry->data, timenow);
+       max = infra_rate_max(entry->data, timenow, backoff);
        lock_rw_unlock(&entry->lock);
 
        return (max >= lim);
@@ -1047,7 +1054,8 @@ infra_get_mem(struct infra_cache* infra)
 }
 
 int infra_ip_ratelimit_inc(struct infra_cache* infra,
-       struct comm_reply* repinfo, time_t timenow, struct sldns_buffer* buffer)
+       struct comm_reply* repinfo, time_t timenow, int backoff,
+       struct sldns_buffer* buffer)
 {
        int max;
        struct lruhash_entry* entry;
@@ -1059,10 +1067,10 @@ int infra_ip_ratelimit_inc(struct infra_cache* infra,
        /* find or insert ratedata */
        entry = infra_find_ip_ratedata(infra, repinfo, 1);
        if(entry) {
-               int premax = infra_rate_max(entry->data, timenow);
+               int premax = infra_rate_max(entry->data, timenow, backoff);
                int* cur = infra_rate_give_second(entry->data, timenow);
                (*cur)++;
-               max = infra_rate_max(entry->data, timenow);
+               max = infra_rate_max(entry->data, timenow, backoff);
                lock_rw_unlock(&entry->lock);
 
                if(premax < infra_ip_ratelimit && max >= infra_ip_ratelimit) {
index a10e70f7d3790254db741e4c06d0894350acb7a5..6a2371aca4771b8b3e67bb90083f174b6a06d743 100644 (file)
@@ -368,6 +368,7 @@ long long infra_get_host_rto(struct infra_cache* infra,
  * @param name: zone name
  * @param namelen: zone name length
  * @param timenow: what time it is now.
+ * @param backoff: if backoff is enabled.
  * @param qinfo: for logging, query name.
  * @param replylist: for logging, querier's address (if any).
  * @return 1 if it could be incremented. 0 if the increment overshot the
@@ -375,7 +376,7 @@ long long infra_get_host_rto(struct infra_cache* infra,
  * Failures like alloc failures are not returned (probably as 1).
  */
 int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name,
-       size_t namelen, time_t timenow, struct query_info* qinfo,
+       size_t namelen, time_t timenow, int backoff, struct query_info* qinfo,
        struct comm_reply* replylist);
 
 /**
@@ -398,13 +399,15 @@ void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name,
  * @param name: zone name
  * @param namelen: zone name length
  * @param timenow: what time it is now.
+ * @param backoff: if backoff is enabled.
  * @return true if exceeded.
  */
 int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name,
-       size_t namelen, time_t timenow);
+       size_t namelen, time_t timenow, int backoff);
 
-/** find the maximum rate stored. 0 if no information. */
-int infra_rate_max(void* data, time_t now);
+/** find the maximum rate stored. 0 if no information.
+ *  When backoff is enabled look for the maximum in the whole RATE_WINDOW. */
+int infra_rate_max(void* data, time_t now, int backoff);
 
 /** find the ratelimit in qps for a domain. 0 if no limit for domain. */
 int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name,
@@ -415,11 +418,12 @@ int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name,
  *  @param infra: infra cache
  *  @param repinfo: information about client
  *  @param timenow: what time it is now.
+ *  @param backoff: if backoff is enabled.
  *  @param buffer: with query for logging.
  *  @return 1 if it could be incremented. 0 if the increment overshot the
  *  ratelimit and the query should be dropped. */
 int infra_ip_ratelimit_inc(struct infra_cache* infra,
-       struct comm_reply* repinfo, time_t timenow,
+       struct comm_reply* repinfo, time_t timenow, int backoff,
        struct sldns_buffer* buffer);
 
 /**
index d0a53fe4ba6a9ddb3422b9dbd407de553f219328..e790ee6226a4bc1de275e7ad44cb3593ead282cf 100644 (file)
@@ -3391,8 +3391,8 @@ outnet_serviced_query(struct outside_network* outnet,
                if(check_ratelimit) {
                        timenow = *env->now;
                        if(!infra_ratelimit_inc(env->infra_cache, zone,
-                               zonelen, timenow, &qstate->qinfo,
-                               qstate->reply)) {
+                               zonelen, timenow, env->cfg->ratelimit_backoff,
+                               &qstate->qinfo, qstate->reply)) {
                                /* Can we pass through with slip factor? */
                                if(env->cfg->ratelimit_factor == 0 ||
                                        ub_random_max(env->rnd,
index 6bbd85ca19bea960c88906b8aea7c75653515c68..6fa1d114fe689b74f10873edf9abe29d6839497a 100644 (file)
@@ -328,9 +328,11 @@ config_create(void)
        cfg->ratelimit_size = 4*1024*1024;
        cfg->ratelimit_for_domain = NULL;
        cfg->ratelimit_below_domain = NULL;
-       cfg->outbound_msg_retry = 5;
        cfg->ip_ratelimit_factor = 10;
        cfg->ratelimit_factor = 10;
+       cfg->ip_ratelimit_backoff = 0;
+       cfg->ratelimit_backoff = 0;
+       cfg->outbound_msg_retry = 5;
        cfg->qname_minimisation = 1;
        cfg->qname_minimisation_strict = 0;
        cfg->shm_enable = 0;
@@ -759,6 +761,8 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_POW2("ratelimit-slabs:", ratelimit_slabs)
        else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor)
        else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor)
+       else S_YNO("ip-ratelimit-backoff:", ip_ratelimit_backoff)
+       else S_YNO("ratelimit-backoff:", ratelimit_backoff)
        else S_NUMBER_NONZERO("outbound-msg-retry:", outbound_msg_retry)
        else S_SIZET_NONZERO("fast-server-num:", fast_server_num)
        else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil)
@@ -1211,6 +1215,8 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_LS2(opt, "ratelimit-below-domain", ratelimit_below_domain)
        else O_DEC(opt, "ip-ratelimit-factor", ip_ratelimit_factor)
        else O_DEC(opt, "ratelimit-factor", ratelimit_factor)
+       else O_YNO(opt, "ip-ratelimit-backoff", ip_ratelimit_backoff)
+       else O_YNO(opt, "ratelimit-backoff", ratelimit_backoff)
        else O_UNS(opt, "outbound-msg-retry", outbound_msg_retry)
        else O_DEC(opt, "fast-server-num", fast_server_num)
        else O_DEC(opt, "fast-server-permil", fast_server_permil)
index cd1b3c99fb99b1581e95efe3c9a51dea980720c1..c7c9a0a48e6b64e1209d867a4d609d8b5433a500 100644 (file)
@@ -565,6 +565,10 @@ struct config_file {
        size_t ip_ratelimit_size;
        /** ip_ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */
        int ip_ratelimit_factor;
+       /** ratelimit backoff, when on, if the limit is reached it is
+        *  considered an attack and it backs off until 'demand' decreases over
+        *  the RATE_WINDOW. */
+       int ip_ratelimit_backoff;
 
        /** ratelimit for domains. 0 is off, otherwise qps (unless overridden) */
        int ratelimit;
@@ -578,6 +582,11 @@ struct config_file {
        struct config_str2list* ratelimit_below_domain;
        /** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */
        int ratelimit_factor;
+       /** ratelimit backoff, when on, if the limit is reached it is
+        *  considered an attack and it backs off until 'demand' decreases over
+        *  the RATE_WINDOW. */
+       int ratelimit_backoff;
+
        /** number of retries on outgoing queries */
        int outbound_msg_retry;
        /** minimise outgoing QNAME and hide original QTYPE if possible */
index 2763dd3acdea4541374e15fb343bd6c60f47bd9a..f95f2fc7e61ffd2a986f058f60901e8a120bf455 100644 (file)
@@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 356
-#define YY_END_OF_BUFFER 357
+#define YY_NUM_RULES 358
+#define YY_END_OF_BUFFER 359
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -363,398 +363,399 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[3543] =
+static const flex_int16_t yy_accept[3558] =
     {   0,
-        1,    1,  330,  330,  334,  334,  338,  338,  342,  342,
-        1,    1,  346,  346,  350,  350,  357,  354,    1,  328,
-      328,  355,    2,  355,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  330,  331,  331,  332,
-      355,  334,  335,  335,  336,  355,  341,  338,  339,  339,
-      340,  355,  342,  343,  343,  344,  355,  353,  329,    2,
-      333,  355,  353,  349,  346,  347,  347,  348,  355,  350,
-      351,  351,  352,  355,  354,    0,    1,    2,    2,    2,
-        2,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  330,
-        0,  334,    0,  341,    0,  338,  342,    0,  353,    0,
-        2,    2,  353,  349,    0,  346,  350,    0,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  353,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  130,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      140,  354,  354,  354,  354,  354,  354,  354,  353,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  112,  354,
-      327,  354,  354,  354,  354,  354,  354,  354,  354,    8,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      131,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  145,  354,  354,  353,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  320,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  353,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,   67,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  251,  354,   14,
-       15,  354,   19,   18,  354,  354,  235,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      138,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  233,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,    3,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  353,  354,  354,
-      354,  354,  354,  354,  354,  314,  354,  354,  313,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  337,  354,
-
-      354,  354,  354,  354,  354,  354,  354,   66,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,   70,  354,  283,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  321,  322,  354,  354,
-      354,  354,  354,  354,  354,  354,   71,  354,  354,  139,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  134,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  222,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,   21,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      165,  354,  354,  354,  354,  354,  353,  337,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  110,
-      354,  354,  354,  354,  354,  354,  354,  291,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  191,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  164,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  109,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,   35,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,   36,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,   68,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  137,  354,  354,  354,  353,  354,
-      354,  354,  354,  354,  129,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-       69,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  255,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  192,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,   57,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  273,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,   61,  354,   62,  354,  354,  354,
-      354,  354,  113,  354,  114,  354,  354,  354,  354,  354,
-      111,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,    7,  354,  354,  354,  354,  353,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  244,  354,  354,
-      354,  354,  168,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  256,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,   48,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,   58,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  214,  354,  213,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,   16,   17,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,   72,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  221,  354,  354,  354,
-      354,  354,  354,  116,  354,  115,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  205,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  146,  354,  354,  354,  353,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  104,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,   92,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  234,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,   97,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,   65,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  208,  209,  354,  354,  354,
-
-      285,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,    6,  354,  354,  354,  354,  354,
-      354,  354,  304,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      289,  354,  354,  354,  354,  354,  354,  354,  315,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,   45,  354,  354,  354,  354,   47,  354,
-      354,  354,   93,  354,  354,  354,  354,  354,   55,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      353,  354,  201,  354,  354,  354,  141,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  226,  354,  202,
-      354,  354,  354,  241,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,   56,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  143,  122,  354,  123,  354,
-      354,  354,  354,  121,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  161,  354,  354,   53,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  272,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  203,  354,  354,  354,  354,  354,
-      206,  354,  212,  354,  354,  354,  354,  354,  354,  240,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  108,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  135,  354,  354,  354,
-      354,  354,  354,  354,  354,   63,  354,  354,  354,   29,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,   20,  354,  354,  354,  354,  354,  354,   30,
-       39,  354,  173,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  199,  354,  354,
-      353,  354,  354,  354,  354,  354,  354,   80,   82,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  293,  354,  354,  354,  354,  252,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      124,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  160,  354,   49,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  308,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  167,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  302,  354,  354,  354,  232,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  318,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  185,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  117,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  180,  354,  193,  354,  354,  354,  354,  354,  354,
-
-      354,  353,  354,  149,  354,  354,  354,  354,  354,  103,
-      354,  354,  354,  354,  224,  354,  354,  354,  354,  354,
-      354,  242,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  264,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  142,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  184,  354,  354,
-      354,  354,  354,  354,   83,  354,   84,  354,  354,  354,
-      354,  354,   64,  311,  354,  354,  354,  354,  354,   91,
-      194,  354,  215,  354,  245,  354,  354,  207,  286,  354,
-
-      354,  354,  354,  354,  354,   76,  354,  196,  354,  354,
-      354,  354,  354,  354,    9,  354,  354,  354,  354,  354,
-      107,  354,  354,  354,  354,  277,  354,  354,  354,  354,
-      223,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  353,  354,  354,  354,  354,  183,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      169,  354,  292,  354,  354,  354,  354,  354,  263,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      236,  354,  354,  354,  354,  354,  284,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  166,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      312,  354,  195,  354,  354,  354,  354,  354,  354,  354,
-      354,   75,   77,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  106,  354,  354,  354,  354,  275,  354,
-      354,  354,  354,  288,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  228,   37,   31,
-       33,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,   38,  354,   32,   34,  354,  354,  354,
-      354,  354,  354,  354,  354,  102,  354,  179,  354,  354,
-      354,  354,  354,  354,  354,  353,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  230,  227,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,   74,  354,  354,
-      354,  144,  354,  125,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  162,   50,  354,  354,  354,  345,
-
-       13,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  306,  354,  309,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,   12,  354,  354,   22,
-      354,  354,  354,  354,  354,  281,  354,  354,  354,  354,
-      290,  354,  354,  354,  354,   78,  354,  238,  354,  354,
-      354,  354,  354,  229,  354,  354,   73,  354,  354,  354,
-      354,  354,  354,   23,  354,  354,   46,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  178,
-      177,  354,  354,  345,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  231,  225,  354,  243,  354,  354,  294,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,   85,  354,  354,  354,  354,  276,
-      354,  354,  354,  354,  211,  354,  354,  354,  354,  354,
-      237,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  316,  317,  175,  354,  354,  354,   79,
-      354,  354,  354,  354,  186,  354,  354,  354,  118,  120,
-      119,  354,  354,  354,   25,  354,  354,  170,  354,  172,
-      354,  216,  354,  354,  354,  354,  176,  354,  354,  354,
-
-      354,  246,  354,  354,  354,  354,  354,  354,  354,  151,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  254,  354,  354,  354,  354,  354,  354,  354,
-      325,  354,   27,  354,  287,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,   89,  217,  354,  354,  274,  354,  310,  354,  210,
-      354,  354,  354,  354,  354,  282,   59,  354,  354,  354,
-      354,  354,  354,    4,  354,  354,  354,  354,  133,  354,
-      150,  354,  354,  354,  190,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  249,   40,   41,  354,  354,  354,  354,
-      354,  354,  354,  295,  354,  354,  354,  354,  354,  354,
-      354,  262,  354,  354,  354,  354,  354,  354,  354,  354,
-      220,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,   88,  354,   60,  280,  354,
-      250,  354,  354,  354,  354,  354,   11,  354,  354,  354,
-      354,  354,  354,  354,  354,  132,  354,  354,  354,  354,
-      354,  218,   94,  354,  354,   43,  354,  354,  354,  354,
-      354,  354,  354,  354,  182,  354,  354,  354,  354,  354,
-      354,  354,  153,  354,  354,  354,  354,  253,  354,  354,
-
-      354,  354,  354,  261,  354,  354,  354,  354,  147,  354,
-      354,  354,  126,  128,  127,  354,  354,  354,   96,  100,
-       95,  163,  354,  354,  354,  354,   86,  354,  354,  354,
-      354,  354,  354,   10,  354,  354,  354,  354,  354,  278,
-      319,  354,  354,  354,  354,  354,  354,  324,   42,  354,
-      354,  354,  354,  354,  181,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      101,   99,  354,   54,  354,  354,   87,  307,  354,  354,
-      354,  354,   24,  354,  354,  354,  354,  354,  204,  354,
-
-      354,  354,  354,  354,  354,  219,  354,  354,  354,  354,
-      354,  354,  354,  354,  200,  354,  354,  171,   81,  354,
-      354,  354,  354,  354,  296,  354,  354,  354,  354,  354,
-      354,  354,  258,  354,  354,  257,  148,  354,  354,   98,
-       51,  354,  154,  155,  158,  159,  156,  157,   90,  305,
-      354,  354,  279,  136,  354,  354,  354,   26,  354,  174,
-      354,  354,  354,  354,  198,  354,  248,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  188,  187,   44,
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  303,  354,  354,  354,  354,  105,  354,  247,
-      354,  271,  300,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  326,  354,   52,    5,  354,  354,
-      239,  354,  354,  301,  354,  354,  354,  354,  354,  354,
-      354,  354,  354,  259,   28,  354,  354,  354,  354,  354,
-      354,  354,  354,  354,  354,  354,  354,  260,  354,  354,
-      354,  152,  354,  354,  354,  354,  354,  354,  354,  354,
-      189,  354,  197,  354,  354,  354,  354,  354,  354,  354,
-      354,  354,  297,  354,  354,  354,  354,  354,  354,  354,
-
-      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
-      323,  354,  354,  267,  354,  354,  354,  354,  354,  298,
-      354,  354,  354,  354,  354,  354,  299,  354,  354,  354,
-      265,  354,  268,  269,  354,  354,  354,  354,  354,  266,
-      270,    0
+        1,    1,  332,  332,  336,  336,  340,  340,  344,  344,
+        1,    1,  348,  348,  352,  352,  359,  356,    1,  330,
+      330,  357,    2,  357,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  332,  333,  333,  334,
+      357,  336,  337,  337,  338,  357,  343,  340,  341,  341,
+      342,  357,  344,  345,  345,  346,  357,  355,  331,    2,
+      335,  357,  355,  351,  348,  349,  349,  350,  357,  352,
+      353,  353,  354,  357,  356,    0,    1,    2,    2,    2,
+        2,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  332,
+        0,  336,    0,  343,    0,  340,  344,    0,  355,    0,
+        2,    2,  355,  351,    0,  348,  352,    0,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  355,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  130,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      140,  356,  356,  356,  356,  356,  356,  356,  355,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  112,  356,
+      329,  356,  356,  356,  356,  356,  356,  356,  356,    8,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      131,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  145,  356,  356,  355,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  322,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  355,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,   67,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  251,  356,   14,
+       15,  356,   19,   18,  356,  356,  235,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      138,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  233,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,    3,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  355,  356,  356,
+      356,  356,  356,  356,  356,  316,  356,  356,  315,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  339,  356,
+
+      356,  356,  356,  356,  356,  356,  356,   66,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,   70,  356,  285,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  323,  324,  356,  356,
+      356,  356,  356,  356,  356,  356,   71,  356,  356,  139,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  134,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  222,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,   21,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      165,  356,  356,  356,  356,  356,  355,  339,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  110,
+      356,  356,  356,  356,  356,  356,  356,  293,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  191,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  164,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  109,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,   35,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,   36,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,   68,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  137,  356,  356,  356,  355,  356,
+      356,  356,  356,  356,  129,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+       69,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  255,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  192,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,   57,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  273,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,   61,  356,   62,  356,  356,  356,
+      356,  356,  113,  356,  114,  356,  356,  356,  356,  356,
+      111,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,    7,  356,  356,  356,  356,  355,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  244,  356,  356,
+      356,  356,  168,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  256,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,   48,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,   58,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  214,  356,  213,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,   16,   17,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,   72,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  221,  356,  356,  356,
+      356,  356,  356,  116,  356,  115,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  205,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  146,  356,  356,  356,  355,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  104,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,   92,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  234,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,   97,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,   65,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  208,  209,  356,  356,  356,
+
+      287,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,    6,  356,  356,  356,  356,  356,
+      356,  356,  306,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  291,  356,  356,  356,  356,  356,  356,  356,  317,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,   45,  356,  356,  356,  356,   47,
+      356,  356,  356,   93,  356,  356,  356,  356,  356,   55,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  355,  356,  201,  356,  356,  356,  141,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  226,  356,
+      202,  356,  356,  356,  241,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,   56,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  143,  122,  356,  123,
+      356,  356,  356,  356,  121,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  161,  356,  356,   53,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  272,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  203,  356,  356,  356,  356,
+      356,  206,  356,  212,  356,  356,  356,  356,  356,  356,
+      240,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  108,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  135,  356,
+      356,  356,  356,  356,  356,  356,  356,   63,  356,  356,
+      356,   29,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,   20,  356,  356,  356,  356,  356,
+      356,   30,   39,  356,  173,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  199,
+      356,  356,  355,  356,  356,  356,  356,  356,  356,   80,
+       82,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  295,  356,  356,  356,  356,  252,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  124,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  160,  356,   49,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      310,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      167,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  304,  356,  356,  356,  232,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  320,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  185,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  117,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  180,  356,  193,  356,  356,
+
+      356,  356,  356,  356,  356,  355,  356,  149,  356,  356,
+      356,  356,  356,  103,  356,  356,  356,  356,  224,  356,
+      356,  356,  356,  356,  356,  242,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  264,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  142,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  184,  356,  356,  356,  356,  356,  356,   83,  356,
+       84,  356,  356,  356,  356,  356,  356,   64,  313,  356,
+      356,  356,  356,  356,   91,  194,  356,  215,  356,  245,
+
+      356,  356,  207,  288,  356,  356,  356,  356,  356,  356,
+       76,  356,  196,  356,  356,  356,  356,  356,  356,    9,
+      356,  356,  356,  356,  356,  107,  356,  356,  356,  356,
+      356,  277,  356,  356,  356,  356,  223,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      355,  356,  356,  356,  356,  183,  356,  356,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  169,  356,  294,  356,
+      356,  356,  356,  356,  263,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  236,  356,  356,  356,
+      356,  356,  286,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      166,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  314,  356,  195,
+      356,  356,  356,  356,  356,  356,  356,  356,   75,   77,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      106,  356,  356,  356,  356,  356,  275,  356,  356,  356,
+
+      356,  290,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  228,   37,   31,   33,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,   38,  356,   32,   34,  356,  356,  356,  356,  356,
+      356,  356,  356,  102,  356,  179,  356,  356,  356,  356,
+      356,  356,  356,  355,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  230,  227,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,   74,  356,  356,  356,  144,
+      356,  125,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  162,   50,  356,  356,  356,  347,   13,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      308,  356,  311,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,   12,  356,  356,   22,  356,
+      356,  356,  356,  356,  356,  281,  356,  356,  356,  356,
+      292,  356,  356,  356,  356,   78,  356,  238,  356,  356,
+      356,  356,  356,  229,  356,  356,   73,  356,  356,  356,
+      356,  356,  356,   23,  356,  356,   46,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  178,
+      177,  356,  356,  347,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  356,  231,  225,  356,  243,  356,  356,  296,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,   85,  356,  356,  356,  356,  356,
+      276,  356,  356,  356,  356,  211,  356,  356,  356,  356,
+      356,  237,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  283,  356,  356,  356,  318,  319,  175,  356,  356,
+      356,   79,  356,  356,  356,  356,  186,  356,  356,  356,
+      118,  120,  119,  356,  356,  356,   25,  356,  356,  170,
+
+      356,  172,  356,  216,  356,  356,  356,  356,  176,  356,
+      356,  356,  356,  246,  356,  356,  356,  356,  356,  356,
+      356,  151,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  254,  356,  356,  356,  356,  356,
+      356,  356,  327,  356,   27,  356,  289,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,   89,  217,  356,  356,  356,  274,  356,
+      312,  356,  210,  356,  356,  356,  356,  356,  284,   59,
+      356,  356,  356,  356,  356,  356,    4,  356,  356,  356,
+      356,  133,  356,  150,  356,  356,  356,  190,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  249,   40,   41,  356,
+      356,  356,  356,  356,  356,  356,  297,  356,  356,  356,
+      356,  356,  356,  356,  262,  356,  356,  356,  356,  356,
+      356,  356,  356,  220,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,   88,  356,
+       60,  356,  280,  356,  250,  356,  356,  356,  356,  356,
+       11,  356,  356,  356,  356,  356,  356,  356,  356,  132,
+      356,  356,  356,  356,  356,  218,   94,  356,  356,   43,
+      356,  356,  356,  356,  356,  356,  356,  356,  182,  356,
+
+      356,  356,  356,  356,  356,  356,  153,  356,  356,  356,
+      356,  253,  356,  356,  356,  356,  356,  261,  356,  356,
+      356,  356,  147,  356,  356,  356,  126,  128,  127,  356,
+      356,  356,   96,  100,   95,  163,  356,  356,  356,  356,
+       86,  282,  356,  356,  356,  356,  356,  356,   10,  356,
+      356,  356,  356,  356,  278,  321,  356,  356,  356,  356,
+      356,  356,  326,   42,  356,  356,  356,  356,  356,  181,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  101,   99,  356,   54,  356,
+
+      356,   87,  309,  356,  356,  356,  356,   24,  356,  356,
+      356,  356,  356,  204,  356,  356,  356,  356,  356,  356,
+      219,  356,  356,  356,  356,  356,  356,  356,  356,  200,
+      356,  356,  171,   81,  356,  356,  356,  356,  356,  298,
+      356,  356,  356,  356,  356,  356,  356,  258,  356,  356,
+      257,  148,  356,  356,   98,   51,  356,  154,  155,  158,
+      159,  156,  157,   90,  307,  356,  356,  279,  136,  356,
+      356,  356,   26,  356,  174,  356,  356,  356,  356,  198,
+      356,  248,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+
+      356,  356,  188,  187,   44,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  305,  356,  356,
+      356,  356,  105,  356,  247,  356,  271,  302,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  328,
+      356,   52,    5,  356,  356,  239,  356,  356,  303,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  259,   28,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  260,  356,  356,  356,  152,  356,  356,  356,
+      356,  356,  356,  356,  356,  189,  356,  197,  356,  356,
+
+      356,  356,  356,  356,  356,  356,  356,  299,  356,  356,
+      356,  356,  356,  356,  356,  356,  356,  356,  356,  356,
+      356,  356,  356,  356,  356,  325,  356,  356,  267,  356,
+      356,  356,  356,  356,  300,  356,  356,  356,  356,  356,
+      356,  301,  356,  356,  356,  265,  356,  268,  269,  356,
+      356,  356,  356,  356,  266,  270,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -797,17 +798,17 @@ static const YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static const flex_int16_t yy_base[3561] =
+static const flex_int16_t yy_base[3576] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112,   96,  118,  124,  136, 3060, 2545,   81, 6911,
-     6911, 6911,  129,   52,  130,   63,  131,  152,   70,  140,
+       90,  112,   96,  118,  124,  136, 3060, 2545,   81, 6947,
+     6947, 6947,  129,   52,  130,   63,  131,  152,   70,  140,
       149,  156,   57,   88,   76,  173,  175,   95,  197,  145,
-      185,  199,  208,  213,  178,  123, 2505, 6911, 6911, 6911,
-      107, 2460, 6911, 6911, 6911,  154, 2315, 2089, 6911, 6911,
-     6911,  245, 2007, 6911, 6911, 6911,  163, 1936, 6911,  249,
-     6911,  253,  148, 1835, 1793, 6911, 6911, 6911,  257, 1696,
-     6911, 6911, 6911,  233, 1543,  263,  201,    0,  267,    0,
+      185,  199,  208,  213,  178,  123, 2505, 6947, 6947, 6947,
+      107, 2460, 6947, 6947, 6947,  154, 2315, 2089, 6947, 6947,
+     6947,  245, 2007, 6947, 6947, 6947,  163, 1936, 6947,  249,
+     6947,  253,  148, 1835, 1793, 6947, 6947, 6947,  257, 1696,
+     6947, 6947, 6947,  233, 1543,  263,  201,    0,  267,    0,
         0,  165,  191,  221,  252,  205,  181,  265,   92,  261,
 
       216,  263,  271,  272,  210,  279,  274,  282,  278,  291,
@@ -837,10 +838,10 @@ static const flex_int16_t yy_base[3561] =
       738,  742,  745,  743,  753,  754,  755,  759,  758,  774,
       763,  764,  771,  784,  765,  767,  769,  775,  796,  785,
       798,  799,  800,  803,  804,  801,  808,  807,  809,  811,
-      823,  813,  820,  826,  827,  829,  830,  837,  832, 6911,
+      823,  813,  820,  826,  827,  829,  830,  837,  832, 6947,
       834,  836,  848,  847,  850,  853,  843,  859,  860,  839,
       870,  866,  863,  881,  903,  867,  871,  873,  876,  872,
-     6911,  893,  883,  927,  885,  889,  911,  895,  907,  913,
+     6947,  893,  883,  927,  885,  889,  911,  895,  907,  913,
       916,  909,  914,  921,  923,  917,  920,  944,  945,  935,
 
       936,  947,  952,  951,  959,  960,  954,  958,  963,  971,
@@ -849,16 +850,16 @@ static const flex_int16_t yy_base[3561] =
      1011, 1012, 1020, 1006, 1014, 1028, 1026, 1024, 1034, 1033,
      1035, 1007, 1041, 1039, 1044, 1051, 1048, 1054, 1063, 1058,
      1059, 1060, 1064, 1065, 1066, 1068, 1071, 1072, 1073, 1076,
-     1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6911, 1100,
-     6911, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6911,
+     1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6947, 1100,
+     6947, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6947,
      1111, 1114, 1113, 1120, 1124, 1117, 1128, 1130, 1136, 1137,
      1138, 1139, 1140, 1142, 1149, 1144, 1154, 1152, 1147, 1158,
 
      1156, 1159, 1115, 1160, 1162, 1166, 1167, 1168, 1169, 1188,
-     6911, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201,
+     6947, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201,
      1203, 1211, 1205, 1213, 1215, 1212, 1217, 1173, 1219, 1223,
      1225, 1228, 1229, 1231, 1232, 1234, 1235, 1237, 1238, 1240,
-     1239, 1247, 1250, 1251, 6911, 1252, 1254, 1255, 1268, 1263,
+     1239, 1247, 1250, 1251, 6947, 1252, 1254, 1255, 1268, 1263,
      1264, 1267, 1269, 1270, 1271, 1272, 1274, 1278,  517, 1273,
      1291, 1288, 1284, 1298, 1293, 1294, 1295, 1299, 1301, 1300,
      1302, 1304, 1313, 1310, 1316, 1325, 1328, 1327, 1330, 1337,
@@ -866,7 +867,7 @@ static const flex_int16_t yy_base[3561] =
      1350, 1351, 1360, 1356, 1357, 1359, 1358, 1364, 1365, 1367,
 
      1362, 1368, 1370, 1372, 1374, 1381, 1379, 1385, 1390, 1386,
-     1391, 1387, 1380, 1395, 1403, 1397, 1406, 6911, 1413, 1308,
+     1391, 1387, 1380, 1395, 1403, 1397, 1406, 6947, 1413, 1308,
      1409, 1410, 1415, 1416, 1417, 1418, 1423, 1424, 1425, 1427,
      1426, 1429, 1430, 1433, 1435, 1437, 1440, 1442, 1450, 1445,
      1455, 1462, 1461, 1443, 1447, 1457, 1463, 1467, 1466, 1474,
@@ -880,20 +881,20 @@ static const flex_int16_t yy_base[3561] =
      1601, 1595, 1603, 1602, 1604, 1611, 1610, 1614, 1615, 1605,
      1616, 1620, 1626, 1627, 1628, 1631, 1630, 1635, 1638, 1636,
      1640, 1642, 1648, 1649, 1650, 1652, 1633, 1656, 1659, 1664,
-     1667, 1661, 6911, 1657, 1675, 1651, 1673, 1674, 1653, 1679,
-     1687, 1680, 1682, 1683, 1684, 1685, 1710, 6911, 1691, 6911,
-     6911, 1690, 6911, 6911, 1693, 1692, 6911, 1694, 1695, 1708,
+     1667, 1661, 6947, 1657, 1675, 1651, 1673, 1674, 1653, 1679,
+     1687, 1680, 1682, 1683, 1684, 1685, 1710, 6947, 1691, 6947,
+     6947, 1690, 6947, 6947, 1693, 1692, 6947, 1694, 1695, 1708,
      1699, 1713, 1716, 1720, 1718, 1711, 1721, 1733, 1742, 1728,
      1734, 1726, 1735, 1751, 1738, 1752, 1740, 1750, 1758, 1759,
      1757, 1764, 1771, 1766, 1775, 1768, 1779, 1777, 1780, 1786,
 
      1787, 1791, 1793, 1788, 1794, 1797, 1796, 1798, 1799, 1802,
      1804, 1723, 1805, 1808, 1809, 1810, 1818, 1815, 1823, 1830,
-     6911, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839,
+     6947, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839,
      1849, 1851, 1845, 1842, 1852, 1854, 1855, 1856, 1859, 1861,
-     1864, 1867, 1865, 1869, 1872, 1870, 6911, 1877, 1878, 1871,
+     1864, 1867, 1865, 1869, 1872, 1870, 6947, 1877, 1878, 1871,
      1879, 1881, 1882, 1883, 1891, 1892, 1893, 1894, 1904, 1896,
-     1899, 1897, 1901, 1906, 1908, 1909, 1911, 6911, 1916, 1924,
+     1899, 1897, 1901, 1906, 1908, 1909, 1911, 6947, 1916, 1924,
      1913, 1921, 1919, 1925, 1928, 1929, 1930, 1933, 1931, 1935,
      1937, 1938, 1947, 1943, 1944, 1946, 1949, 1953, 1958, 1961,
      1959, 1960, 1971, 1963, 1966, 1972, 1974, 1975, 1976, 1977,
@@ -901,693 +902,697 @@ static const flex_int16_t yy_base[3561] =
      1978, 1980, 1985, 1990, 1987, 1995, 1988, 1991, 1998, 2009,
      2004, 1993, 2005, 2010, 2006, 2013, 2022, 2024, 2020, 2019,
      2021, 2032, 2028, 2030, 2031, 2033, 2036, 2041, 2042, 2043,
-     2044, 2046, 2050, 2051, 2053, 6911, 2055, 2059, 6911, 2058,
+     2044, 2046, 2050, 2051, 2053, 6947, 2055, 2059, 6947, 2058,
      2060, 2061, 2083, 2062, 2065, 2066, 2075, 2064, 2087, 2078,
      2076, 2095, 2084, 2102, 2097, 2103, 2105, 2107, 2108, 2112,
      2110, 2111, 2114, 2116, 2118, 2120, 2128, 2137, 2138, 2140,
      2134, 2142, 2119, 2143, 2067, 2163, 2144, 2145, 2146, 2147,
      2148, 2152, 2153, 2151, 2154, 2155, 2165, 2170, 2172, 2173,
-     2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6911, 2200,
+     2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6947, 2200,
 
-     2193, 2197, 2201, 2202, 2209, 2207, 2204, 6911, 2208, 2210,
+     2193, 2197, 2201, 2202, 2209, 2207, 2204, 6947, 2208, 2210,
      2211, 2220, 2213, 2218, 2221, 2224, 2225, 2228, 2229, 2231,
-     2233, 2230, 2232, 2251, 6911, 2234, 6911, 2238, 2235, 2253,
-     2243, 2246, 2247, 2254, 2256, 2259, 6911, 6911, 2263, 2257,
-     2270, 2273, 2278, 2274, 2275, 2276, 6911, 2277, 2285, 6911,
+     2233, 2230, 2232, 2251, 6947, 2234, 6947, 2238, 2235, 2253,
+     2243, 2246, 2247, 2254, 2256, 2259, 6947, 6947, 2263, 2257,
+     2270, 2273, 2278, 2274, 2275, 2276, 6947, 2277, 2285, 6947,
      2287, 2292, 2280, 2281, 2282, 2286, 2296, 2297, 2305, 2300,
-     2308, 2303, 2306, 2307, 6911, 2313, 2316, 2310, 2317, 2323,
-     2324, 2325, 2327, 2330, 2326, 6911, 2333, 2329, 2336, 2343,
+     2308, 2303, 2306, 2307, 6947, 2313, 2316, 2310, 2317, 2323,
+     2324, 2325, 2327, 2330, 2326, 6947, 2333, 2329, 2336, 2343,
      2347, 2341, 2344, 2348, 2352, 2349, 2354, 2355, 2356, 2357,
-     2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6911, 2381,
+     2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6947, 2381,
 
      2380, 2382, 2390, 2387, 2389, 2391, 2394, 2393, 2395, 2396,
      2401, 2397, 2405, 2406, 2407, 2409, 2418, 2421, 2416, 2417,
      2426, 2413, 2420, 2423, 2427, 2365, 2429, 2430, 2433, 2436,
-     6911, 2437, 2441, 2438, 2443, 2444, 2442,  171, 2450, 2451,
+     6947, 2437, 2441, 2438, 2443, 2444, 2442,  171, 2450, 2451,
      2453, 2454, 2458, 2469, 2455, 2463, 2476, 2471, 2472, 2478,
-     2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6911,
-     2491, 2497, 2494, 2498, 2501, 2502, 2504, 6911, 2506, 2514,
+     2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6947,
+     2491, 2497, 2494, 2498, 2501, 2502, 2504, 6947, 2506, 2514,
      2516, 2525, 2519, 2503, 2527, 2528, 2531, 2529, 2532, 2533,
-     2534, 2535, 2536, 2542, 2539, 6911, 2544, 2551, 2554, 2541,
+     2534, 2535, 2536, 2542, 2539, 6947, 2544, 2551, 2554, 2541,
      2555, 2562, 2548, 2563, 2564, 2565, 2568, 2567, 2569, 2573,
 
      2570, 2572, 2574, 2575, 2583, 2594, 2577, 2586, 2587, 2590,
-     2591, 2595, 2599, 2600, 2601, 2608, 2603, 6911, 2615, 2604,
+     2591, 2595, 2599, 2600, 2601, 2608, 2603, 6947, 2615, 2604,
      2612, 2613, 2611, 2614, 2617, 2620, 2634, 2624, 2627, 2629,
      2635, 2644, 2637, 2638, 2646, 2654, 2651, 2639, 2664, 2660,
      2661, 2668, 2659, 2670, 2672, 2662, 2673, 2684, 2674, 2676,
      2681, 2679, 2685, 2694, 2695, 2687, 2697, 2698, 2690, 2700,
-     2702, 2712, 2717, 2707, 6911, 2719, 2709, 2720, 2721, 2728,
+     2702, 2712, 2717, 2707, 6947, 2719, 2709, 2720, 2721, 2728,
      2725, 2726, 2731, 2729, 2732, 2733, 2735, 2737, 2745, 2746,
      2744, 2742, 2749, 2753, 2755, 2757, 2760, 2759, 2740, 2768,
-     2762, 2764, 2771, 2772, 6911, 2775, 2776, 2780, 2782, 2784,
+     2762, 2764, 2771, 2772, 6947, 2775, 2776, 2780, 2782, 2784,
 
      2785, 2787, 2788, 2790, 2792, 2793, 2794, 2797, 2798, 2800,
-     2801, 2802, 2809, 2806, 2807, 2808, 2812, 6911, 2820, 2819,
+     2801, 2802, 2809, 2806, 2807, 2808, 2812, 6947, 2820, 2819,
      2821, 2824, 2827, 2825, 2831, 2837, 2839, 2828, 2841, 2835,
-     2842, 2843, 2845, 6911, 2855, 2857, 2847, 2854, 2862, 2860,
-     2861, 2863, 2865, 2866, 6911, 2867, 2870, 2868, 2875, 2871,
-     2873, 2882, 2883, 2879, 6911, 2887, 2884, 2889, 2892, 2893,
+     2842, 2843, 2845, 6947, 2855, 2857, 2847, 2854, 2862, 2860,
+     2861, 2863, 2865, 2866, 6947, 2867, 2870, 2868, 2875, 2871,
+     2873, 2882, 2883, 2879, 6947, 2887, 2884, 2889, 2892, 2893,
      2894, 2895, 2899, 2897, 2901, 2902, 2906, 2915, 2907, 2916,
-     6911, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933,
-     2935, 2937, 2940, 6911, 2942, 2945, 2948, 2957, 2952, 2953,
-     2955, 2958, 2960, 2962, 2961, 2964, 2966, 6911, 2968, 2967,
+     6947, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933,
+     2935, 2937, 2940, 6947, 2942, 2945, 2948, 2957, 2952, 2953,
+     2955, 2958, 2960, 2962, 2961, 2964, 2966, 6947, 2968, 2967,
 
      2970, 2974, 2972, 2977, 2978, 2989, 2984, 2987, 2990, 2991,
      2992, 2993, 2994, 2999, 3010, 3001, 2998, 3000, 3002, 3014,
      3012, 3019, 3018, 3022, 3026, 3030, 3025, 3031, 3034, 3029,
-     3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6911, 3056,
+     3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6947, 3056,
      3057, 3059, 3044, 3060, 3063, 3064, 3066, 3069, 3065, 3067,
      3071, 3074, 3078, 3087, 3090, 3080, 3082, 3091, 3092, 3093,
      3094, 3095, 3096, 3101, 3104, 3103, 3105, 3106, 3113, 3109,
      3112, 3121, 3117, 3120, 3122, 3123, 3124, 3126, 3127, 3129,
      3130, 3134, 3133, 3135, 3138, 3146, 3156, 3153, 3147, 3149,
-     3157, 3159, 3161, 6911, 3160, 3164, 3168, 3165, 3170, 3174,
+     3157, 3159, 3161, 6947, 3160, 3164, 3168, 3165, 3170, 3174,
 
      3171, 3181, 3177, 3182, 3190, 3188, 3187, 3194, 3179, 3189,
-     3196, 3197, 3206, 3202, 6911, 3203, 6911, 3204, 3208, 3209,
-     3218, 3211, 6911, 3215, 6911, 3216, 3223, 3220, 3224, 3226,
-     6911, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241,
+     3196, 3197, 3206, 3202, 6947, 3203, 6947, 3204, 3208, 3209,
+     3218, 3211, 6947, 3215, 6947, 3216, 3223, 3220, 3224, 3226,
+     6947, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241,
      3243, 3245, 3246, 3255, 3244, 3250, 3251, 3257, 3266, 3256,
      3261, 3263, 3269, 3272, 3274, 3273, 3280, 3275, 3282, 3283,
-     3285, 3286, 3287, 6911, 3291, 3295, 3296, 3299, 3300, 3288,
+     3285, 3286, 3287, 6947, 3291, 3295, 3296, 3299, 3300, 3288,
      3303, 3302, 3310, 3307, 3311, 3308, 3314, 3315, 3319, 3320,
-     3323, 3325, 3331, 3336, 3343, 3326, 3344, 6911, 3339, 3348,
-     3330, 3350, 6911, 3352, 3327, 3354, 3358, 3360, 3361, 3362,
+     3323, 3325, 3331, 3336, 3343, 3326, 3344, 6947, 3339, 3348,
+     3330, 3350, 6947, 3352, 3327, 3354, 3358, 3360, 3361, 3362,
 
-     3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6911,
+     3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6947,
      3382, 3390, 3371, 3394, 3393, 3404, 3405, 3401, 3407, 3409,
      3417, 3413, 3402, 3412, 3400, 3414, 3420, 3422, 3427, 3431,
      3424, 3432, 3428, 3433, 3436, 3437, 3439, 3440, 3443, 3441,
-     3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6911,
-     3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6911,
+     3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6947,
+     3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6947,
      3480, 3482, 3483, 3484, 3485, 3489, 3492, 3490, 3493, 3494,
-     3497, 3498, 3501, 3500, 6911, 3507, 6911, 3508, 3515, 3520,
+     3497, 3498, 3501, 3500, 6947, 3507, 6947, 3508, 3515, 3520,
      3524, 3509, 3517, 3525, 3530, 3526, 3531, 3532, 3538, 3540,
      3534, 3536, 3542, 3543, 3546, 3547, 3554, 3560, 3557, 3549,
 
-     3561, 3563, 3565, 3566, 3573, 3570, 3568, 6911, 6911, 3571,
-     3576, 3577, 3583, 3584, 3585, 3586, 3588, 3598, 3589, 3591,
-     3592, 3614, 6911, 3595, 3602, 3604, 3606, 3605, 3621, 3616,
-     3623, 3624, 3620, 3627, 3635, 3630, 6911, 3628, 3631, 3638,
-     3633, 3640, 3650, 6911, 3375, 6911, 3637, 3639, 3642, 3647,
-     3652, 3651, 3653, 3654, 3659, 3662, 3664, 3668, 3671, 3675,
-     3670, 3674, 3677, 3680, 3681, 3685, 3679, 3688, 3686, 3687,
-     3691, 6911, 3694, 3690, 3695, 3696, 3702, 3706, 3707, 3704,
-     3705, 6911, 3714, 3715, 3716, 3717, 3718, 3721, 3723, 3726,
-     3727, 3731, 3734, 3732, 3735, 3737, 6911, 3736, 3740, 3750,
-
-     3741, 3743, 3745, 3757, 3759, 3764, 6911, 3765, 3758, 3772,
-     3769, 3771, 3752, 3773, 3774, 3775, 3777, 3778, 3779, 3780,
-     3781, 3786, 3787, 3788, 3782, 3789, 3800, 3801, 3792, 3811,
-     3814, 3799, 6911, 3803, 3813, 3815, 3816, 3817, 3821, 3823,
-     3826, 3828, 3818, 3830, 3833, 3839, 3840, 3841, 3843, 3844,
-     3851, 3846, 6911, 3853, 3850, 3858, 3854, 3855, 3863, 3857,
-     3864, 3865, 3872, 3867, 3869, 3873, 3874, 3875, 3881, 3883,
-     3885, 3887, 3888, 3889, 3900, 3891, 6911, 3902, 3903, 3893,
-     3910, 3905, 3913, 3920, 3915, 3918, 3919, 3922, 3923, 3925,
-     3927, 3929, 3930, 3933, 3934, 6911, 6911, 3936, 3937, 3939,
-
-     6911, 3941, 3942, 3952, 3943, 3945, 3953, 3955, 3957, 3956,
-     3958, 3960, 3966, 3967, 6911, 3975, 3968, 3977, 3976, 3972,
-     3986, 3985, 6911, 3978, 3988, 3990, 3993, 3991, 3981, 3994,
-     3995, 3892, 3999, 4002, 4003, 4011, 4012, 4009, 4008, 4010,
-     6911, 4015, 4016, 4019, 4021, 4018, 4022, 4025, 6911, 4026,
-     4027, 4032, 4037, 4039, 4047, 4049, 4044, 4051, 4036, 4052,
-     4054, 4056, 4058, 4059, 4062, 4069, 4065, 4070, 4067, 4064,
-     4075, 4080, 4084, 6911, 4086, 4076, 4071, 4090, 6911, 4094,
-     4102, 4103, 6911, 4104, 4099, 4100, 4106, 4113, 6911, 4108,
-     4110, 4109, 4111, 4115, 4122, 4117, 4129, 4127, 4119, 4124,
-
-     4128, 4130, 6911, 4131, 4132, 4136, 6911, 4134, 4145, 4148,
-     4150, 4135, 4158, 4153, 4156, 4154, 4157, 6911, 4162, 6911,
-     4165, 4163, 4169, 6911, 4164, 4171, 4172, 4174, 4178, 4179,
-     4180, 4186, 4182, 4188, 4190, 4191, 4192, 4193, 4195, 4202,
-     4194, 4198, 4201, 4203, 6911, 4204, 4206, 4213, 4210, 4214,
-     4218, 4220, 4221, 4223, 4225, 6911, 6911, 4234, 6911, 4226,
-     4231, 4235, 4236, 6911, 4239, 4241, 4243, 4240, 4244, 4246,
-     4249, 4259, 4253, 6911, 4263, 4264, 6911, 4250, 4260, 4274,
-     4256, 4269, 4271, 4272, 4277, 4275, 4279, 4282, 4283, 4281,
-     4285, 4280, 4286, 4298, 6911, 4287, 4288, 4290, 4309, 4303,
-
-     4299, 4310, 4315, 4305, 6911, 4318, 4289, 4312, 4322, 4324,
-     6911, 4326, 6911, 4314, 4328, 4329, 4334, 4333, 4344, 6911,
-     4340, 4339, 4346, 4343, 4349, 4348, 4351, 4355, 4347, 4357,
-     4358, 4367, 4359, 4363, 4362, 4372, 4373, 6911, 4368, 4370,
-     4380, 4382, 4377, 4385, 4394, 4386, 4393, 4389, 4390, 4397,
-     4399, 4400, 4402, 4404, 4409, 4408, 6911, 4412, 4410, 4415,
-     4418, 4429, 4420, 4421, 4424, 6911, 4425, 4433, 4435, 6911,
-     4431, 4427, 4434, 4442, 4445, 4446, 4448, 4449, 4450, 4453,
-     4454, 4451, 6911, 4458, 4459, 4452, 4455, 4457, 4468, 6911,
-     6911, 4473, 6911, 4474, 4461, 4476, 4478, 4481, 4485, 4483,
-
-     4486, 4488, 4489, 4490, 4493, 4498, 4499, 6911, 4500, 4508,
-     4501, 4511, 4520, 4521, 4513, 4517, 4504, 6911, 6911, 4527,
-     4528, 4522, 4533, 4534, 4518, 4537, 4542, 4539, 4540, 4546,
-     4547, 4556, 6911, 4549, 4538, 4557, 4548, 6911, 4551, 4559,
-     4560, 4562, 4565, 4563, 4566, 4567, 4569, 4571, 4573, 4575,
-     4580, 4584, 4578, 4585, 4586, 4588, 4591, 4592, 4590, 4600,
-     6911, 4594, 4597, 4601, 4606, 4609, 4610, 4611, 4612, 4614,
-     4615, 4619, 6911, 4622, 6911, 4618, 4621, 4617, 4627, 4624,
-     4639, 4640, 4643, 4628, 4642, 4647, 4648, 4651, 4652, 4658,
-     4653, 4659, 4661, 4655, 4666, 4670, 4671, 6911, 4673, 4663,
-
-     4674, 4675, 4680, 4682, 4677, 4685, 4686, 4689, 4690, 4692,
-     4699, 4701, 4693, 4702, 4691, 4695, 4703, 6911, 4710, 4713,
-     4706, 4717, 4714, 4718, 4720, 4721, 4727, 4730, 4719, 4731,
-     4733, 6911, 4734, 4736, 4740, 6911, 4737, 4741, 4744, 4747,
-     4753, 4742, 4745, 4748, 4754, 6911, 4766, 4756, 4760, 4758,
-     4762, 4768, 4770, 4771, 4773, 4775, 4777, 4778, 6911, 4788,
-     4783, 4787, 4789, 4790, 4791, 4793, 4800, 4799, 6911, 4801,
-     4802, 4803, 4809, 4816, 4817, 4812, 4813, 4826, 4818, 4822,
-     4819, 4821, 4829, 4830, 4831, 4836, 4837, 4835, 4847, 4848,
-     4850, 6911, 4838, 6911, 4843, 4851, 4852, 4861, 4856, 4859,
-
-     4866, 4864, 4862, 6911, 4870, 4871, 4873, 4874, 4876, 6911,
-     4878, 4875, 4877, 4881, 6911, 4880, 4894, 4888, 4895, 4897,
-     4900, 6911, 4903, 4906, 4905, 4904, 4917, 4912, 4914, 4915,
-     4918, 4916, 4920, 4922, 4923, 4931, 4926, 4927, 6911, 4933,
-     4935, 4943, 4939, 4936, 4946, 4930, 4947, 4949, 4952, 6911,
-     4953, 4954, 4956, 4957, 4959, 4960, 4961, 4962, 4969, 4966,
-     4970, 4968, 4975, 4978, 4979, 4980, 4983, 6911, 4987, 4988,
-     4985, 4995, 4992, 4991, 6911, 4996, 6911, 4998, 5002, 5006,
-     5007, 5010, 6911, 6911, 5013, 5014, 5015, 5019, 5016, 6911,
-     6911, 5021, 6911, 5022, 6911, 5023, 5026, 6911, 6911, 5024,
-
-     5028, 5030, 5031, 5034, 5044, 6911, 5046, 6911, 5038, 5035,
-     5047, 5041, 5049, 5053, 6911, 5050, 5056, 5052, 5060, 5062,
-     6911, 5065, 5073, 5063, 5068, 6911, 5076, 5077, 5066, 5070,
-     6911, 5078, 5087, 5084, 5082, 5090, 5091, 5092, 5093, 5094,
-     5096, 5101, 5098, 5102, 5105, 5106, 5115, 5117, 5119, 5121,
-     5112, 5109, 5123, 5129, 5131, 5133, 5126, 5135, 5136, 5137,
-     5139, 5140, 5142, 5143, 5145, 5147, 5150, 5151, 5152, 5153,
-     5149, 5166, 5154, 5158, 5168, 5164, 5176, 5170, 5172, 5177,
-     5179, 5180, 5182, 5181, 5185, 5186, 5184, 5191, 5195, 6911,
-     5189, 5198, 5188, 5199, 5200, 5208, 5212, 5216, 5219, 5221,
-
-     6911, 5223, 6911, 5225, 5209, 5228, 5229, 5230, 6911, 5231,
-     5232, 5233, 5234, 5235, 5236, 5238, 5237, 5241, 5242, 5246,
-     6911, 5253, 5249, 5243, 5258, 5262, 6911, 5264, 5269, 5266,
-     5270, 5271, 5272, 5275, 5274, 5276, 5277, 5278, 5280, 5282,
-     5286, 5283, 5291, 5295, 6911, 5299, 5305, 5302, 5300, 5306,
-     5307, 5308, 5310, 5311, 5312, 5314, 5323, 5317, 5327, 5334,
-     6911, 5320, 6911, 5328, 5324, 5330, 5335, 5336, 5340, 5338,
-     5344, 6911, 6911, 5346, 5347, 5348, 5350, 5352, 5353, 5357,
-     5359, 5354, 5201, 6911, 5360, 5364, 5362, 5372, 6911, 5373,
-     5374, 5376, 5378, 6911, 5379, 5380, 5382, 5383, 5393, 5381,
-
-     5398, 5390, 5399, 5387, 5401, 5402, 5405, 6911, 6911, 6911,
-     6911, 5406, 5409, 5411, 5412, 5414, 5415, 5417, 5420, 5421,
-     5419, 5416, 5423, 6911, 5433, 6911, 6911, 5434, 5435, 5437,
-     5441, 5442, 5424, 5444, 5447, 6911, 5445, 6911, 5449, 5452,
-     5448, 5459, 5462, 5464, 5456, 5466, 5467, 5468, 5470, 5471,
-     5478, 5476, 5479, 5477, 5482, 5484, 5486, 6911, 6911, 5490,
-     5494, 5495, 5497, 5499, 5500, 5501, 5508, 5506, 5507, 5509,
-     5511, 5513, 5514, 5522, 5523, 5519, 5520, 6911, 5527, 5525,
-     5528, 6911, 5529, 6911, 5533, 5537, 5539, 5536, 5540, 5543,
-     5546, 5547, 5549, 5545, 6911, 6911, 5551, 5562, 5557, 6911,
-
-     6911, 5559, 5560, 5564, 5566, 5561, 5567, 5570, 5572, 5574,
-     5571, 6911, 5576, 6911, 5575, 5577, 5585, 5582, 5594, 5598,
-     5593, 5602, 5600, 5589, 5601, 5603, 6911, 5604, 5605, 6911,
-     5612, 5614, 5615, 5609, 5610, 6911, 5620, 5616, 5628, 5630,
-     6911, 5632, 5633, 5635, 5636, 6911, 5639, 6911, 5622, 5641,
-     5643, 5650, 5647, 6911, 5648, 5651, 6911, 5654, 5657, 5661,
-     5662, 5658, 5663, 6911, 5667, 5664, 6911, 5669, 5673, 5674,
-     5678, 5670, 5680, 5681, 5683, 5684, 5692, 5688, 5691, 6911,
-     6911, 5696, 5697,  135, 5705, 5693, 5700, 5703, 5706, 5713,
-     5708, 5710, 5718, 6911, 6911, 5719, 6911, 5721, 5722, 6911,
-
-     5709, 5727, 5731, 5726, 5735, 5728, 5736, 5737, 5739, 5741,
-     5742, 5747, 5748, 5749, 5760, 5764, 5750, 5766, 5770, 5772,
-     5774, 5776, 5778, 5752, 5780, 5762, 5781, 5783, 5784, 5786,
-     5787, 5790, 5788, 5791, 6911, 5794, 5796, 5798, 5800, 6911,
-     5803, 5806, 5810, 5812, 6911, 5815, 5816, 5819, 5820, 5821,
-     6911, 5804, 5824, 5827, 5711, 5831, 5832, 5833, 5834, 5842,
-     5835, 5837, 5839, 6911, 6911, 6911, 5845, 5853, 5847, 6911,
-     5855, 5856, 5838, 5857, 6911, 5859, 5860, 5862, 6911, 6911,
-     6911, 5864, 5866, 5867, 6911, 5865, 5878, 6911, 5868, 6911,
-     5873, 6911, 5877, 5879, 5886, 5881, 6911, 5883, 5891, 5892,
-
-     5895, 6911, 5898, 5901, 5903, 5905, 5893, 5907, 5910, 6911,
-     5917, 5916, 5918, 5909, 5912, 5919, 5920, 5922, 5924, 5934,
-     5925, 5933, 6911, 5935, 5938, 5940, 5936, 5929, 5944, 5946,
-     6911, 5947, 6911, 5952, 6911, 5949, 5953, 5955, 5954, 5956,
-     5957, 5960, 5963, 5964, 5970, 5974, 5972, 5976, 5977, 5983,
-     5978, 6911, 6911, 5985, 5987, 6911, 5980, 6911, 5989, 6911,
-     5991, 5992, 5993, 5995, 5999, 6911, 6911, 6006, 5996, 6000,
-     6018, 6002, 6010, 6911, 6013, 6017, 6015, 6020, 6911, 6027,
-     6911, 6022, 6030, 6023, 6911, 6026, 6033, 6036, 6037, 6038,
-     6040, 6043, 6041, 6044, 6051, 6046, 6049, 6047, 6056, 6053,
-
-     6057, 6063, 6069, 6911, 6911, 6911, 6062, 6071, 6078, 6076,
-     6077, 6079, 6081, 6911, 6082, 6084, 6085, 6086, 6094, 6089,
-     6093, 6911, 6096, 6095, 6097, 6098, 6101, 6102, 6103, 6109,
-     6911, 6115, 6117, 6124, 6120, 6112, 6127, 6129, 6131, 6134,
-     6136, 6137, 6138, 6110, 6139, 6911, 6141, 6911, 6911, 6142,
-     6911, 6143, 6145, 6147, 6146, 6148, 6911, 6152, 6153, 6154,
-     6155, 6156, 6162, 6158, 6160, 6911, 6163, 6178, 6170, 6174,
-     6175, 6911, 6911, 6177, 6183, 6911, 6185, 6186, 6187, 6194,
-     6192, 6189, 6196, 6200, 6911, 6199, 6202, 6206, 6208, 6209,
-     6210, 6211, 6911, 6212, 6213, 6215, 6216, 6911, 6219, 6218,
-
-     6221, 6223, 6224, 6911, 6225, 6227, 6246, 6243, 6911, 6231,
-     6242, 6241, 6911, 6911, 6911, 6250, 6253, 6255, 6911, 6911,
-     6911, 6911, 6257, 6258, 6260, 6262, 6911, 6265, 6269, 6273,
-     6275, 6280, 6268, 6911, 6276, 6282, 6284, 6285, 6286, 6911,
-     6911, 6287, 6289, 6290, 6292, 6294, 6295, 6911, 6911, 6296,
-     6298, 6302, 6299, 6301, 6911, 6304, 6307, 6314, 6311, 6317,
-     6324, 6326, 6319, 6327, 6328, 6336, 6339, 6329, 6331, 6338,
-     6342, 6343, 6341, 6345, 6355, 6350, 6352, 6358, 6353, 6361,
-     6911, 6911, 6363, 6911, 6365, 6367, 6911, 6911, 6370, 6372,
-     6374, 6378, 6911, 6380, 6382, 6384, 6386, 6375, 6911, 6387,
-
-     6389, 6391, 6393, 6392, 6394, 6911, 6398, 6399, 6406, 6395,
-     6400, 6403, 6407, 6412, 6911, 6409, 6417, 6911, 6911, 6419,
-     6420, 6421, 6425, 6422, 6911, 6427, 6434, 6429, 6431, 6432,
-     6435, 6433, 6911, 6438, 6439, 6911, 6911, 6441, 6442, 6911,
-     6911, 6446, 6911, 6911, 6911, 6911, 6911, 6911, 6911, 6911,
-     6450, 6456, 6911, 6911, 6452, 6461, 6463, 6911, 6467, 6911,
-     6454, 6464, 6470, 6458, 6911, 6468, 6911, 6469, 6475, 6471,
-     6479, 6480, 6483, 6485, 6487, 6489, 6488, 6490, 6493, 6491,
-     6497, 6494, 6496, 6505, 6502, 6503, 6511, 6911, 6911, 6911,
-     6512, 6513, 6519, 6520, 6522, 6524, 6528, 6531, 6532, 6514,
-
-     6535, 6536, 6537, 6539, 6540, 6549, 6544, 6545, 6547, 6554,
-     6546, 6560, 6911, 6562, 6548, 6550, 6568, 6911, 6556, 6911,
-     6565, 6911, 6911, 6573, 6574, 6570, 6576, 6585, 6586, 6577,
-     6581, 6582, 6584, 6588, 6911, 6593, 6911, 6911, 6590, 6596,
-     6911, 6598, 6599, 6911, 6597, 6600, 6602, 6606, 6607, 6604,
-     6608, 6609, 6625, 6911, 6911, 6610, 6615, 6618, 6627, 6629,
-     6628, 6631, 6635, 6636, 6638, 6639, 6648, 6911, 6645, 6646,
-     6650, 6911, 6652, 6647, 6653, 6654, 6655, 6663, 6659, 6662,
-     6911, 6664, 6911, 6668, 6670, 6671, 6661, 6669, 6672, 6683,
-     6681, 6677, 6911, 6687, 6691, 6689, 6693, 6695, 6697, 6698,
-
-     6699, 6701, 6704, 6710, 6707, 6714, 6715, 6711, 6719, 6716,
-     6911, 6726, 6717, 6911, 6723, 6727, 6720, 6729, 6733, 6911,
-     6738, 6731, 6740, 6741, 6744, 6745, 6911, 6747, 6754, 6749,
-     6911, 6755, 6911, 6911, 6757, 6751, 6758, 6764, 6766, 6911,
-     6911, 6911, 6791, 6798, 6805, 6812, 6819, 6826, 6833,   88,
-     6840, 6847, 6854, 6861, 6868, 6875, 6882, 6889, 6896, 6903
+     3561, 3563, 3565, 3566, 3573, 3570, 3568, 6947, 6947, 3571,
+     3576, 3577, 3583, 3584, 3585, 3587, 3589, 3592, 3591, 3595,
+     3600, 3611, 6947, 3603, 3604, 3606, 3607, 3608, 3620, 3613,
+     3624, 3621, 3625, 3626, 3633, 3629, 6947, 3632, 3634, 3642,
+     3637, 3638, 3645, 6947, 3375, 6947, 3643, 3644, 3646, 3649,
+     3651, 3655, 3653, 3658, 3659, 3654, 3660, 3670, 3677, 3679,
+     3675, 3681, 3676, 3682, 3678, 3684, 3685, 3692, 3687, 3689,
+     3690, 6947, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704,
+     3710, 6947, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728,
+     3729, 3737, 3730, 3732, 3738, 3741, 6947, 3742, 3734, 3749,
+
+     3745, 3747, 3752, 3756, 3759, 3764, 6947, 3766, 3751, 3773,
+     3769, 3770, 3772, 3775, 3776, 3777, 3779, 3780, 3781, 3783,
+     3784, 3789, 3785, 3787, 3794, 3790, 3802, 3804, 3791, 3812,
+     3819, 3805, 6947, 3808, 3815, 3817, 3818, 3820, 3821, 3823,
+     3829, 3831, 3825, 3840, 3841, 3832, 3836, 3843, 3847, 3844,
+     3855, 3851, 6947, 3856, 3852, 3865, 3858, 3860, 3866, 3862,
+     3867, 3868, 3872, 3874, 3875, 3876, 3877, 3878, 3883, 3886,
+     3890, 3891, 3892, 3893, 3900, 3895, 6947, 3907, 3884, 3897,
+     3914, 3908, 3905, 3923, 3918, 3921, 3922, 3925, 3926, 3928,
+     3930, 3931, 3932, 3935, 3936, 6947, 6947, 3938, 3939, 3940,
+
+     6947, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958,
+     3960, 3962, 3968, 3969, 6947, 3977, 3970, 3979, 3978, 3974,
+     3988, 3987, 6947, 3980, 3990, 3992, 3995, 3993, 3983, 3996,
+     4001, 3997, 4005, 4006, 4007, 4010, 4018, 4019, 4014, 4016,
+     4017, 6947, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6947,
+     4035, 4032, 4038, 4041, 4043, 4050, 4042, 4053, 4056, 4057,
+     4058, 4060, 4061, 4062, 4063, 4065, 4073, 4059, 4071, 4070,
+     4068, 4088, 4089, 4076, 6947, 4084, 4091, 4074, 4096, 6947,
+     4098, 4105, 4106, 6947, 4109, 4092, 4108, 4110, 4117, 6947,
+     4112, 4115, 4114, 4120, 4116, 4129, 4125, 4133, 4131, 4132,
+
+     4128, 4134, 4137, 6947, 4138, 4135, 4140, 6947, 4143, 4152,
+     4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6947, 4169,
+     6947, 4172, 4170, 4176, 6947, 4171, 4178, 4179, 4181, 4185,
+     4186, 4187, 4193, 4189, 4195, 4197, 4198, 4199, 4200, 4202,
+     4209, 4201, 4205, 4208, 4210, 6947, 4211, 4213, 4220, 4217,
+     4221, 4225, 4227, 4228, 4230, 4232, 6947, 6947, 4241, 6947,
+     4233, 4238, 4242, 4243, 6947, 4246, 4248, 4250, 4247, 4251,
+     4253, 4256, 4266, 4136, 6947, 4268, 4269, 6947, 4257, 4271,
+     4278, 4273, 4275, 4263, 4276, 4283, 4279, 4260, 4286, 4289,
+     4290, 4291, 4292, 4293, 4300, 6947, 4294, 4297, 4295, 4310,
+
+     4299, 4304, 4312, 4311, 4313, 6947, 4321, 4323, 4322, 4327,
+     4328, 6947, 4329, 6947, 4330, 4334, 4337, 4339, 4331, 4342,
+     6947, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361,
+     4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6947, 4368,
+     4374, 4390, 4391, 4383, 4380, 4386, 4399, 4396, 4398, 4397,
+     4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6947, 4419,
+     4420, 4424, 4421, 4431, 4427, 4428, 4433, 6947, 4435, 4436,
+     4438, 6947, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456,
+     4454, 4457, 4458, 4460, 6947, 4462, 4463, 4461, 4477, 4478,
+     4467, 6947, 6947, 4480, 6947, 4484, 4466, 4485, 4487, 4488,
+
+     4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6947,
+     4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6947,
+     6947, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548,
+     4556, 4559, 4549, 4566, 6947, 4561, 4552, 4563, 4564, 6947,
+     4545, 4568, 4569, 4571, 4574, 4575, 4578, 4576, 4577, 4580,
+     4588, 4581, 4583, 4590, 4589, 4591, 4599, 4597, 4600, 4601,
+     4603, 4607, 6947, 4604, 4608, 4610, 4613, 4617, 4618, 4619,
+     4620, 4622, 4623, 4630, 6947, 4628, 6947, 4626, 4631, 4646,
+     4633, 4636, 4648, 4649, 4650, 4651, 4655, 4657, 4658, 4661,
+     4663, 4667, 4662, 4668, 4671, 4673, 4675, 4679, 4683, 4680,
+
+     6947, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699,
+     4701, 4695, 4702, 4704, 4706, 4709, 4711, 4712, 4714, 4715,
+     6947, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739,
+     4743, 4731, 4733, 4745, 6947, 4737, 4746, 4754, 6947, 4749,
+     4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6947,
+     4774, 4764, 4771, 4775, 4776, 4777, 4781, 4783, 4786, 4788,
+     4790, 4798, 6947, 4799, 4791, 4800, 4802, 4804, 4806, 4810,
+     4808, 4811, 6947, 4812, 4815, 4821, 4823, 4828, 4830, 4814,
+     4825, 4833, 4834, 4836, 4832, 4842, 4843, 4844, 4845, 4847,
+     4849, 4848, 4865, 4866, 4863, 6947, 4850, 6947, 4851, 4852,
+
+     4868, 4878, 4873, 4875, 4876, 4880, 4879, 6947, 4881, 4886,
+     4888, 4883, 4891, 6947, 4892, 4889, 4893, 4894, 6947, 4907,
+     4890, 4896, 4903, 4912, 4913, 6947, 4918, 4919, 4920, 4927,
+     4929, 4924, 4931, 4926, 4934, 4932, 4928, 4936, 4937, 4945,
+     4943, 4941, 6947, 4947, 4949, 4954, 4956, 4950, 4958, 4948,
+     4960, 4963, 4965, 6947, 4966, 4969, 4970, 4972, 4973, 4975,
+     4974, 4976, 4983, 4980, 4984, 4982, 4988, 4991, 4993, 4995,
+     4997, 6947, 4999, 5001, 5003, 5012, 5005, 5002, 6947, 5009,
+     6947, 5014, 5019, 5021, 5022, 5015, 5026, 6947, 6947, 5029,
+     5036, 5023, 5032, 5034, 6947, 6947, 5038, 6947, 5039, 6947,
+
+     5040, 5042, 6947, 6947, 5044, 5045, 5046, 5047, 5048, 5051,
+     6947, 5056, 6947, 5065, 5060, 5061, 5063, 5064, 5068, 6947,
+     5066, 5069, 5070, 5075, 5077, 6947, 5074, 5078, 5094, 5081,
+     5089, 6947, 5091, 5092, 5093, 5096, 6947, 5097, 5101, 5102,
+     5103, 5106, 5105, 5108, 5109, 5110, 5116, 5117, 5120, 5119,
+     5122, 5123, 5127, 5132, 5134, 5136, 5137, 5138, 5140, 5143,
+     5146, 5150, 5141, 5148, 5152, 5154, 5155, 5157, 5159, 5160,
+     5162, 5166, 5167, 5163, 5170, 5169, 5171, 5180, 5172, 5182,
+     5184, 5186, 5188, 5189, 5190, 5193, 5194, 5197, 5198, 5199,
+     5196, 5203, 5200, 5207, 5212, 6947, 5205, 5213, 5214, 5216,
+
+     5217, 5221, 5224, 5233, 5239, 5240, 6947, 5242, 6947, 5244,
+     5228, 5225, 5230, 5247, 6947, 5234, 5248, 5250, 5251, 5252,
+     5253, 5255, 5256, 5259, 5260, 5263, 6947, 5268, 5265, 5258,
+     5274, 5270, 6947, 5275, 5282, 5285, 5286, 5287, 5288, 5291,
+     5289, 5290, 5293, 5292, 5294, 5297, 5299, 5300, 5310, 5312,
+     6947, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326,
+     5329, 5327, 5334, 5331, 5343, 5348, 5345, 6947, 5332, 6947,
+     5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6947, 6947,
+     5362, 5363, 5365, 5367, 5369, 5370, 5372, 5374, 5375, 5376,
+     6947, 5379, 5383, 5387, 5393, 5386, 6947, 5395, 5396, 5397,
+
+     5401, 6947, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415,
+     5421, 5409, 5423, 5413, 5427, 6947, 6947, 6947, 6947, 5428,
+     5424, 5432, 5434, 5436, 5437, 5439, 5442, 5443, 5441, 5438,
+     5444, 6947, 5454, 6947, 6947, 5455, 5456, 5457, 5462, 5464,
+     5463, 5465, 5468, 6947, 5466, 6947, 5470, 5473, 5469, 5480,
+     5486, 5483, 5477, 5490, 5487, 5492, 5491, 5493, 5501, 5498,
+     5499, 5502, 5505, 5507, 5513, 6947, 6947, 5508, 5515, 5516,
+     5524, 5520, 5522, 5526, 5534, 5529, 5530, 5532, 5531, 5536,
+     5537, 5545, 5548, 5538, 5547, 6947, 5549, 5550, 5551, 6947,
+     5552, 6947, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572,
+
+     5570, 5575, 6947, 6947, 5567, 5587, 5582, 6947, 6947, 5574,
+     5583, 5586, 5590, 5584, 5592, 5595, 5594, 5597, 5599, 5596,
+     6947, 5601, 6947, 5600, 5602, 5608, 5610, 5619, 5623, 5614,
+     5624, 5622, 5625, 5626, 5629, 6947, 5627, 5628, 6947, 5637,
+     5639, 5640, 5638, 5646, 5643, 6947, 5647, 5649, 5654, 5656,
+     6947, 5660, 5657, 5663, 5662, 6947, 5665, 6947, 5630, 5669,
+     5666, 5676, 5672, 6947, 5673, 5679, 6947, 5682, 5686, 5688,
+     5689, 5677, 5683, 6947, 5695, 5691, 6947, 5697, 5699, 5700,
+     5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6947,
+     6947, 5722, 5723,  135, 5731, 5721, 5727, 5729, 5732, 5739,
+
+     5734, 5736, 5742, 6947, 6947, 5743, 6947, 5737, 5750, 6947,
+     5735, 5751, 5755, 5746, 5752, 5758, 5761, 5765, 5767, 5768,
+     5769, 5770, 5771, 5775, 5792, 5794, 5777, 5774, 5797, 5799,
+     5801, 5803, 5805, 5762, 5807, 5789, 5785, 5808, 5810, 5795,
+     5813, 5816, 5817, 5819, 6947, 5821, 5824, 5826, 5827, 5828,
+     6947, 5831, 5834, 5836, 5838, 6947, 5845, 5840, 5842, 5847,
+     5848, 6947, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863,
+     5870, 6947, 5867, 5865, 5871, 6947, 6947, 6947, 5876, 5883,
+     5873, 6947, 5885, 5877, 5886, 5888, 6947, 5890, 5892, 5893,
+     6947, 6947, 6947, 5894, 5895, 5898, 6947, 5896, 5903, 6947,
+
+     5902, 6947, 5899, 6947, 5904, 5908, 5917, 5912, 6947, 5910,
+     5922, 5923, 5924, 6947, 5927, 5930, 5932, 5933, 5934, 5936,
+     5938, 6947, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952,
+     5953, 5965, 5956, 5961, 6947, 5963, 5964, 5968, 5974, 5966,
+     5976, 5977, 6947, 5970, 6947, 5979, 6947, 5980, 5982, 5983,
+     5984, 5989, 5986, 5987, 5997, 5994, 6000, 6003, 6001, 6007,
+     6008, 6012, 6009, 6947, 6947, 6014, 6015, 6017, 6947, 6018,
+     6947, 6023, 6947, 6019, 6024, 6026, 6027, 6032, 6947, 6947,
+     6030, 6033, 6036, 6044, 6041, 6042, 6947, 6046, 6048, 6049,
+     6051, 6947, 6058, 6947, 6054, 6063, 6055, 6947, 6056, 6066,
+
+     6070, 6067, 6059, 6072, 6073, 6076, 6075, 6083, 6080, 6081,
+     6086, 6088, 6089, 6094, 6098, 6102, 6947, 6947, 6947, 6096,
+     6090, 6111, 6113, 6114, 6115, 6100, 6947, 6116, 6120, 6122,
+     6107, 6129, 6124, 6131, 6947, 6125, 6128, 6132, 6134, 6136,
+     6133, 6138, 6139, 6947, 6144, 6150, 6156, 6140, 6151, 6153,
+     6160, 6162, 6164, 6167, 6168, 6169, 6176, 6172, 6947, 6174,
+     6947, 6179, 6947, 6171, 6947, 6175, 6180, 6182, 6183, 6184,
+     6947, 6187, 6188, 6189, 6192, 6191, 6194, 6199, 6210, 6947,
+     6200, 6213, 6196, 6193, 6215, 6947, 6947, 6204, 6222, 6947,
+     6224, 6226, 6219, 6234, 6217, 6227, 6237, 6238, 6947, 6240,
+
+     6241, 6230, 6232, 6242, 6239, 6248, 6947, 6245, 6249, 6255,
+     6256, 6947, 6259, 6257, 6261, 6260, 6258, 6947, 6262, 6264,
+     6271, 6269, 6947, 6266, 6280, 6272, 6947, 6947, 6947, 6288,
+     6290, 6291, 6947, 6947, 6947, 6947, 6293, 6294, 6282, 6297,
+     6947, 6947, 6303, 6307, 6311, 6313, 6317, 6306, 6947, 6316,
+     6318, 6320, 6322, 6323, 6947, 6947, 6324, 6326, 6328, 6329,
+     6331, 6332, 6947, 6947, 6333, 6335, 6339, 6336, 6338, 6947,
+     6341, 6344, 6351, 6347, 6354, 6361, 6363, 6357, 6364, 6365,
+     6376, 6373, 6366, 6368, 6371, 6379, 6380, 6378, 6382, 6393,
+     6388, 6390, 6396, 6386, 6398, 6947, 6947, 6400, 6947, 6405,
+
+     6402, 6947, 6947, 6407, 6409, 6413, 6415, 6947, 6417, 6419,
+     6421, 6423, 6410, 6947, 6424, 6426, 6428, 6429, 6430, 6431,
+     6947, 6435, 6437, 6440, 6432, 6441, 6443, 6444, 6449, 6947,
+     6446, 6453, 6947, 6947, 6450, 6457, 6458, 6462, 6459, 6947,
+     6464, 6471, 6466, 6469, 6470, 6472, 6475, 6947, 6473, 6476,
+     6947, 6947, 6478, 6481, 6947, 6947, 6483, 6947, 6947, 6947,
+     6947, 6947, 6947, 6947, 6947, 6487, 6494, 6947, 6947, 6486,
+     6501, 6503, 6947, 6505, 6947, 6488, 6498, 6506, 6493, 6947,
+     6508, 6947, 6495, 6512, 6514, 6298, 6515, 6516, 6520, 6521,
+     6524, 6525, 6526, 6528, 6527, 6532, 6529, 6531, 6545, 6538,
+
+     6535, 6548, 6947, 6947, 6947, 6546, 6539, 6557, 6549, 6562,
+     6563, 6566, 6568, 6554, 6569, 6571, 6570, 6572, 6576, 6578,
+     6585, 6580, 6583, 6581, 6588, 6582, 6591, 6947, 6597, 6584,
+     6592, 6604, 6947, 6598, 6947, 6600, 6947, 6947, 6606, 6607,
+     6609, 6610, 6620, 6621, 6612, 6619, 6616, 6622, 6624, 6947,
+     6631, 6947, 6947, 6625, 6628, 6947, 6633, 6634, 6947, 6636,
+     6637, 6639, 6640, 6641, 6643, 6644, 6645, 6652, 6947, 6947,
+     6655, 6659, 6657, 6661, 6663, 6670, 6665, 6667, 6669, 6673,
+     6671, 6685, 6947, 6681, 6682, 6684, 6947, 6688, 6686, 6689,
+     6691, 6693, 6700, 6695, 6698, 6947, 6701, 6947, 6704, 6697,
+
+     6708, 6699, 6707, 6715, 6716, 6719, 6720, 6947, 6721, 6722,
+     6725, 6729, 6731, 6734, 6735, 6727, 6737, 6738, 6748, 6741,
+     6745, 6749, 6751, 6753, 6754, 6947, 6760, 6755, 6947, 6757,
+     6761, 6763, 6764, 6767, 6947, 6772, 6765, 6769, 6775, 6778,
+     6779, 6947, 6781, 6790, 6785, 6947, 6791, 6947, 6947, 6793,
+     6787, 6794, 6800, 6802, 6947, 6947, 6947, 6827, 6834, 6841,
+     6848, 6855, 6862, 6869,   88, 6876, 6883, 6890, 6897, 6904,
+     6911, 6918, 6925, 6932, 6939
     } ;
 
-static const flex_int16_t yy_def[3561] =
+static const flex_int16_t yy_def[3576] =
     {   0,
-     3542,    1, 3543, 3543, 3544, 3544, 3545, 3545, 3546, 3546,
-     3547, 3547, 3548, 3548, 3549, 3549, 3542, 3550, 3542, 3542,
-     3542, 3542, 3551, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3552, 3542, 3542, 3542,
-     3552, 3553, 3542, 3542, 3542, 3553, 3554, 3542, 3542, 3542,
-     3542, 3554, 3555, 3542, 3542, 3542, 3555, 3556, 3542, 3557,
-     3542, 3556, 3556, 3558, 3542, 3542, 3542, 3542, 3558, 3559,
-     3542, 3542, 3542, 3559, 3550, 3550, 3542, 3560, 3551, 3560,
-     3551, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3552,
-     3552, 3553, 3553, 3554, 3554, 3542, 3555, 3555, 3556, 3556,
-     3557, 3557, 3556, 3558, 3558, 3542, 3559, 3559, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3556, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3556, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542,
-     3542, 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3556, 3556, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3556, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3556, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550,
-
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3556, 3550, 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3542, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3556, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3556, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3542,
-     3542, 3550, 3542, 3550, 3542, 3550, 3550, 3542, 3542, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3542,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3542,
-
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3542, 3550, 3550, 3556, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3542, 3550, 3542, 3550, 3550, 3542,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3542, 3542,
-     3542, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3542,
-     3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-
-     3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3542, 3550, 3550, 3542, 3550, 3542, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550,
-     3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550,
-     3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3542, 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550,
-     3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3542, 3542,
-     3542, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542,
-     3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3542, 3550, 3542, 3550, 3550, 3542, 3542, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3542, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3542, 3542, 3550, 3550, 3542,
-     3542, 3550, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3550, 3550, 3542, 3542, 3550, 3550, 3550, 3542, 3550, 3542,
-     3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3542,
-     3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, 3550,
-     3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550,
-     3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-
-     3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550,
-     3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542,
-     3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550,
-     3542, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3542,
-     3542,    0, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542
+     3557,    1, 3558, 3558, 3559, 3559, 3560, 3560, 3561, 3561,
+     3562, 3562, 3563, 3563, 3564, 3564, 3557, 3565, 3557, 3557,
+     3557, 3557, 3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3567, 3557, 3557, 3557,
+     3567, 3568, 3557, 3557, 3557, 3568, 3569, 3557, 3557, 3557,
+     3557, 3569, 3570, 3557, 3557, 3557, 3570, 3571, 3557, 3572,
+     3557, 3571, 3571, 3573, 3557, 3557, 3557, 3557, 3573, 3574,
+     3557, 3557, 3557, 3574, 3565, 3565, 3557, 3575, 3566, 3575,
+     3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3567,
+     3567, 3568, 3568, 3569, 3569, 3557, 3570, 3570, 3571, 3571,
+     3572, 3572, 3571, 3573, 3573, 3557, 3574, 3574, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3571, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557,
+     3557, 3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3571, 3571, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3571, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3571, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565,
+
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3571, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3571, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565,
+     3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3557,
+
+     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3571, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3557, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3557, 3557, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3557,
+
+     3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3565,
+     3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3557, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565,
+     3565, 3565, 3557, 3557, 3557, 3557, 3565, 3565, 3565, 3565,
+     3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565,
+
+     3565, 3557, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565,
+     3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3557, 3557, 3565, 3565, 3557, 3557, 3565, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3565, 3565, 3557, 3557, 3565,
+     3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557,
+     3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+
+     3565, 3565, 3557, 3557, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3557, 3565, 3557, 3565, 3557, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557,
+     3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565,
+
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565,
+     3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565,
+     3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565,
+     3565, 3557, 3565, 3565, 3565, 3557, 3565, 3557, 3557, 3565,
+     3565, 3565, 3565, 3565, 3557, 3557,    0, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557
     } ;
 
-static const flex_int16_t yy_nxt[6952] =
+static const flex_int16_t yy_nxt[6988] =
     {   0,
        18,   19,   20,   21,   22,   23,   22,   18,   18,   18,
        18,   18,   22,   24,   25,   26,   27,   28,   29,   30,
@@ -1924,7 +1929,7 @@ static const flex_int16_t yy_nxt[6952] =
      1632, 1633, 1630,   86, 1640,   86, 1634,   86, 1641, 1638,
      1636,   86,   86, 1646, 1639,   86, 1645, 1647,   86,   86,
      1642, 1643,   86,   86,   86, 1649, 1650,   86, 1651,   86,
-       86, 1644, 1648,   86, 1655, 1656, 1657,   86, 1654, 3542,
+       86, 1644, 1648,   86, 1655, 1656, 1657,   86, 1654, 3557,
        86,   86,   86,   86, 1658, 1652,   86, 1659, 1660,   86,
        86, 1653,   86,   86, 1661, 1663,   86,   86,   86,   86,
        86, 1662,   86, 1668,   86, 1664, 1667,   86, 1670, 1671,
@@ -1961,7 +1966,7 @@ static const flex_int16_t yy_nxt[6952] =
      1807,   86, 1808,   86, 1811,   86, 1806,   86, 1812, 1809,
      1810,   86, 1813,   86,   86,   86,   86,   86, 1818, 1817,
        86,   86,   86,   86,   86, 1825, 1822, 1814,   86, 1823,
-     1816,   86, 1815, 1820,   86,   86, 1962,   86, 1819, 1826,
+     1816,   86, 1815, 1820,   86,   86, 1963,   86, 1819, 1826,
 
      1827, 1824, 1821,   86, 1829, 1833,   86,   86, 1830, 1831,
      1832, 1834, 1835,   86,   86,   86, 1828,   86,   86, 1836,
@@ -1969,7 +1974,7 @@ static const flex_int16_t yy_nxt[6952] =
        86, 1840, 1843,   86, 1847,   86, 1845,   86, 1848, 1850,
        86,   86, 1849, 1842,   86,   86,   86, 1844, 1853,   86,
        86, 1852,   86,   86,   86, 1854,   86,   86,   86,   86,
-       86,   86,   86,   86, 1851, 1864,   86,   86,   86, 3542,
+       86,   86,   86,   86, 1851, 1864,   86,   86,   86, 3557,
      1855, 1859, 1860, 1856, 1858, 1857, 1861, 1862, 1868,   86,
      1869,   86, 1866, 1871,   86, 1863, 1867, 1872,   86,   86,
        86,   86, 1877,   86, 1870,   86,   86,   86,   86, 1881,
@@ -1979,384 +1984,387 @@ static const flex_int16_t yy_nxt[6952] =
        86,   86,   86, 1889, 1885, 1887, 1890, 1884,   86, 1891,
        86, 1895, 1896,   86, 1898, 1892, 1897,   86,   86,   86,
      1893, 1900, 1901,   86,   86,   86, 1894,   86, 1899,   86,
-     1904,   86, 1902,   86, 1905,   86,   86, 3542, 1906,   86,
+     1904,   86, 1902,   86, 1905,   86,   86, 3557, 1906,   86,
        86, 1914,   86, 1903, 1909, 1908, 1907,   86, 1911, 1913,
        86, 1912, 1915,   86,   86, 1910,   86, 1916,   86,   86,
      1922,   86, 1917,   86,   86, 1923,   86, 1918, 1924,   86,
-       86, 1928, 1920, 1925, 1919, 1921,   86,   86,   86,   86,
-
-     1932,   86,   86, 1931,   86,   86, 1930, 1927,   86, 1926,
-     1934,   86, 1929, 1935, 1933,   86, 1936,   86,   86,   86,
-     1937, 1940, 1942, 1939, 1945, 1938, 1941,   86, 1947,   86,
-     1943, 1950, 1946,   86,   86, 1949,   86,   86, 1951, 1944,
-       86,   86, 1953,   86,   86, 1957,   86, 1948,   86, 1954,
-       86,   86,   86,   86, 1952,   86, 1959, 1961, 1956, 1958,
-       86, 1955, 1960,   86,   86,   86,   86,   86, 1966, 1963,
-     1967, 1964,   86, 1968, 1965,   86, 1970,   86, 1976, 1969,
-     1974,   86, 1977,   86,   86, 1971, 1979,   86,   86, 1972,
-       86, 1973,   86,   86,   86, 1985, 1978, 1983,   86,   86,
-
-       86,   86, 1975,   86,   86, 1984, 1989,   86,   86,   86,
-     1980, 1981, 1991, 1982, 1992,   86, 1987,   86,   86,   86,
-       86, 1986, 1988, 1990, 1994, 1995, 1996,   86,   86,   86,
-      170,   86, 2000, 2003,   86, 1993,   86, 1999, 1998,   86,
-       86, 1997, 2001, 2007,   86,   86, 2002,   86,   86,   86,
-       86, 2005, 2009,   86,   86, 2004,   86, 2014,   86, 2006,
-     2010, 2008, 2011,   86, 2017,   86, 2015, 2026, 2012, 2018,
-       86,   86,   86, 2013, 2016, 2019, 2020,   86,   86, 2023,
-     2022, 2024,   86, 2021,   86,   86,   86,   86,   86, 2027,
-       86,   86,   86,   86,   86,   86, 2025, 2032, 2033,   86,
-
-       86,   86,   86, 2034, 2038,   86, 2037, 2028, 2030, 2031,
-     2029, 2035,   86,   86,   86, 2036,   86, 2039, 2041, 2043,
-     2044, 2046, 2040, 2045,   86, 2042,   86,   86,   86,   86,
-       86,   86, 2052, 2047,   86, 2048,   86, 2055, 2056,   86,
-     2057,   86, 2059,   86, 2050, 2049,   86, 2060, 2053, 2051,
-     2054, 2058,   86,   86,   86, 2064,   86,   86, 2066,   86,
-     2068, 2065, 2067,   86,   86, 2070,   86,   86,   86, 2074,
-       86,   86, 2071, 2061, 2062, 2063,   86,   86,   86, 2073,
-       86, 2069,   86, 2076, 2077,   86,   86,   86,   86, 2082,
-     2084, 2080, 2081, 2072,   86, 2078,   86, 2075,   86, 2083,
-
-       86,   86,   86, 2079,   86,   86,   86, 2092, 2144, 2094,
-     2085, 2086, 2087,   86, 2095,   86,   86, 2088,   86, 2090,
-     2089, 2097, 2091,   86, 2093, 2098,   86, 2101,   86, 2099,
-     2096,   86,   86,   86, 2105,   86,   86, 2102,   86, 2107,
-       86, 2100,   86,   86, 2110, 2111,   86,   86, 2113,   86,
-       86, 2103,   86, 2104,   86,   86,   86, 2120,   86, 2118,
-     2108, 2115, 2106, 2116, 2109,   86,   86, 2112,   86,   86,
-       86,   86, 2119,   86, 2126, 2114, 2117, 2123, 2124,   86,
-       86,   86, 2129, 2122, 2131,   86, 2130, 2121,   86,   86,
-       86,   86, 2133, 2134,   86, 2137, 2128, 2125,   86,   86,
-
-     2135,   86, 2138,   86,   86, 2127,   86,   86,   86, 2132,
-     2136, 2139,   86, 2140, 2141,   86,   86, 2147, 2148, 2149,
-     2143,   86,   86,   86,   86,   86, 2142, 2152,   86,   86,
-     2145,   86,   86, 2157,   86,   86, 2151, 2156,   86,   86,
-       86, 2146, 2150, 2153, 2162,   86, 2163, 3542, 2154,   86,
-       86, 2155,   86, 2160, 2159, 2158, 2164,   86, 2161, 2166,
-       86, 2165,   86, 2170,   86,   86, 2167,   86, 2168,   86,
-     2171,   86,   86, 2169, 2174,   86, 2178,   86,   86, 2172,
-       86, 3542,   86,   86,   86, 2181, 2173, 2183,   86,   86,
-     2182, 2175, 2176,   86, 2184, 2177, 2179,   86, 2180,   86,
-
-     2187, 2185, 2190,   86, 2189, 2188, 2191,   86, 2186, 2192,
-     2194, 2195,   86,   86, 2193,   86,   86,   86, 2197,   86,
-     2199,   86,   86,   86,   86, 2203,   86, 2201,   86, 2205,
-       86, 2198,   86, 2200, 2202,   86, 2207,   86, 2196, 2208,
-       86,  170,   86,   86,   86,   86, 2211,   86,   86,   86,
-     2216, 2209, 2206, 2204, 2215, 2212, 2213, 2210,   86, 2217,
-     2218,   86, 2219,   86, 2214, 2221,   86,   86, 2220,   86,
-       86,   86, 2222, 2224, 2223,   86,   86,   86,   86, 2225,
-     2226, 2227,   86, 2229,   86,   86, 2233,   86, 2228, 2230,
-     2232,   86,   86,   86, 2238,   86, 2231, 2235, 2236,   86,
-
-     2234,   86, 2237,   86,   86,   86,   86,   86,   86, 2245,
-     2243,   86, 2240, 2244,   86,   86,   86,   86, 2250,   86,
-     2247, 2239, 2241,   86, 2242, 2246,   86,   86, 2255, 2251,
-     2249,   86, 2248,   86,   86, 2253,   86, 2252,   86,   86,
-     2256, 2259, 2262, 2254,   86, 2257, 2261,   86,   86,   86,
-     2268, 2260,   86,   86,   86, 2258,   86,   86, 2270,   86,
-     2263, 2271,   86,   86, 2264, 2265,   86, 2266, 2267,   86,
-     2269, 2273,   86,   86, 2274, 2275,   86,   86, 2276, 2278,
-     2272, 2279,   86, 2280,   86,   86, 2277,   86,   86, 2281,
-       86, 2284,   86,   86,   86,   86,   86, 2285,   86,   86,
-
-       86,   86,   86,   86, 2305, 2283, 2282, 2287, 2288, 2289,
-     2290,   86,   86, 2286, 2292, 2297,   86, 2293,   86, 2291,
-     2295, 2298,   86,   86, 2296,   86, 2301,   86,   86, 3542,
-     2294,   86, 2300, 2302, 2299,   86, 2304,   86, 2303,   86,
-     2307,   86,   86, 2306, 2308, 2310,   86,   86, 2309, 2313,
-     2311, 2315,   86,   86, 2312, 2316,   86,   86, 2318,   86,
-       86,   86,   86, 2321,   86, 2314, 2317, 2320,   86, 2322,
-       86,   86,   86, 2323, 2327,   86,   86, 2328, 2324, 2331,
-       86,   86, 2319,   86, 2332,   86,   86, 2330, 2325, 2329,
-       86, 2326, 2336,   86, 2333,   86, 2337, 2335,   86,   86,
-
-     2334, 2340,   86,   86, 2341, 2338,   86,   86, 2342, 2346,
-       86, 2344,   86,   86, 2348,   86, 2349,   86, 2339, 2345,
-     2343,   86,   86,   86, 2347,   86, 2350, 2351,   86, 2353,
-     2356,   86, 2354,   86,   86, 2355, 2358,   86,   86, 2352,
-       86, 2359,   86, 2361,   86, 2360,   86,   86,   86, 2362,
-     2363, 2364, 2357, 2365, 2369,   86, 2368, 2366,   86,   86,
-     2367,   86,   86,   86,   86,   86,   86,   86,   86, 2377,
-       86,   86,   86, 2381,   86, 2382, 2370, 2371, 2373, 2372,
-     2375,   86, 2376, 2378, 2379, 2380,   86,   86, 2374,   86,
-     2383,   86, 2384, 2386,   86, 2392,   86, 2387,   86,   86,
-
-     2394,   86,   86,   86, 2388, 2385,   86, 2391, 2393, 2389,
-     2397,   86,   86,   86,  170, 2401, 2398,   86, 2403, 2390,
-     2395,   86, 2396, 2404,   86, 2399,   86, 2405, 2406, 2407,
-       86,   86, 2400,   86,   86,   86, 2402, 2409, 2408, 2410,
-       86,   86, 2411, 2417, 2414, 2415,   86,   86, 2416, 2419,
-       86,   86,   86,   86, 2421,   86, 2412, 2420, 2422,   86,
-       86,   86,   86, 2424,   86, 2423, 2425, 2413, 2418,   86,
-       86, 2426,   86,   86, 2427,   86,   86, 2430,   86,   86,
-       86, 2428,   86, 2433,   86, 2439,   86, 2437,   86, 2429,
-     2432,   86, 2440,   86, 2434, 2435, 2431,   86,   86,   86,
-
-     2436,   86, 2442,   86,   86,   86, 2438,   86, 2441, 2447,
-       86, 2445, 2450,   86,   86, 2451, 2444, 2443, 2448,   86,
-     2446, 2449,   86,   86,   86,   86, 2461,   86,   86, 2452,
-       86,   86,   86, 2453,   86,   86, 2465,   86, 2454, 2459,
-       86,   86, 2466, 2457, 2463, 2455, 2458, 2456, 2464, 2460,
-     2462, 2468,   86,   86, 2471,   86,   86, 2467, 2469, 2470,
-       86,   86, 2474, 2475,   86,   86,   86, 2476,   86, 2472,
-     2477,   86,   86, 2473,   86, 2480,   86, 2481, 2483,   86,
-     2482, 2478, 2484,   86,   86, 2479,   86,   86,   86, 2485,
-       86, 2486, 2490,   86, 2491,   86, 2487, 2493,   86,   86,
-
-     2489, 2495,   86,   86,   86,   86,   86, 2488,   86, 2492,
-     2497, 2498,   86, 2499,   86,   86,   86, 2494, 2496,   86,
-     2500, 2502, 2503,   86, 2501, 2506,   86,   86, 2505, 2508,
-       86,   86,   86,   86,   86, 2504, 2510, 2512, 2507, 2511,
-       86, 2513, 2515,   86,   86, 2509,   86,   86, 2518,   86,
-       86, 2516, 2521,   86,   86,   86, 2514,   86,   86, 2517,
-       86,   86, 2519, 2528, 2525, 2526,   86,   86, 2520,   86,
-     2522,   86, 2524,   86, 2527,   86, 2529, 2523, 2531,   86,
-     2533,   86, 2530,   86,   86, 2534,   86, 2539,   86, 2532,
-       86,   86, 2541, 2535, 2542, 2545,   86, 2540, 2537, 2536,
-
-       86,   86,   86,   86,   86, 2547,   86, 2548, 2546, 2543,
-     2538, 2544,   86,   86,   86,   86,   86, 2550, 2552, 2554,
-     2555, 2556,   86, 2558, 2559,   86,   86, 2551, 2549,   86,
-       86,   86,   86, 2562,   86,   86, 2563, 2557, 2553,   86,
-     2564, 2561,   86,   86,   86, 2567, 2560, 2566,   86,   86,
-       86,   86, 2568, 2569, 2573, 2574,   86, 2565, 2570, 2571,
-       86,   86, 2572,   86,   86,   86, 2579, 2575, 2580,   86,
-     2581, 2576,   86, 2578,   86,   86, 2577,  170, 2582,   86,
-     2584, 2583, 2585,   86,   86, 2590,   86,   86,   86,   86,
-       86,   86, 3542,   86,   86, 2586, 2597, 2587, 2592, 2588,
-
-     2589,   86, 2591, 2593, 2594, 2595, 2596,   86,   86, 2601,
-       86, 2606, 2598,   86, 2602, 2603,   86,   86,   86,   86,
-     2600, 2599, 2604, 2605, 2607,   86, 2609,   86,   86,   86,
-       86,   86, 2611,   86, 2608,   86,   86, 2615, 2616,   86,
-       86, 2612, 2610,   86,   86, 2618,   86, 2613,   86,   86,
-     2619, 2620,   86, 2617, 2614, 2621,   86, 2622, 2623,   86,
-       86, 2627,   86, 2625, 2626,   86,   86,   86, 2624,   86,
-       86, 2629,   86,   86,   86,   86, 2637, 2634, 2628,   86,
-     2636,   86,   86,   86, 2639, 2638, 2633, 2630,   86, 2631,
-     2632,   86,   86,   86, 2635, 2645,   86, 2643,   86, 2640,
-
-       86,   86, 2649, 2648,   86,   86, 2651, 2641,   86,   86,
-     2642,   86, 2646, 2650, 2644,   86, 2654, 2647, 2652,   86,
-       86, 2659, 2655,   86, 2657, 2653,   86,   86,   86,   86,
-     2658, 2661,   86, 2663,   86,   86,   86,   86, 2662,   86,
-     2660,   86, 2667,   86,   86, 2674, 2656,   86,   86, 2670,
-     2665,   86, 2671, 2664,   86, 2666, 2672,   86, 2673,   86,
-       86, 2676,   86,   86, 2669,   86,   86, 2668, 2675,   86,
-     2677, 2679, 2681,   86, 2684,   86,   86, 2682,   86,   86,
-     2686,   86, 2680,   86, 2678, 2683,   86, 2685, 2689,   86,
-       86,   86, 2693, 2690, 2687,   86, 2688,   86, 2691, 2694,
-
-       86, 2692, 2695,   86,   86,   86,   86,   86, 2700,   86,
-     2699,   86, 2697, 2696,   86,   86, 2704, 2698,   86,   86,
-     3542, 2701,   86, 2702, 2707,   86, 2703, 2708,   86, 2709,
-       86, 2710,   86, 2711,   86, 2705,   86, 2712, 2706,   86,
-     2713, 2714,   86, 2715,   86, 2716,   86, 2717,   86,   86,
-       86, 2718,   86,   86, 2724,   86,   86, 2726,   86, 2727,
-       86, 2720,   86,   86,   86,   86,   86,   86, 2719, 2723,
-     2721,   86, 2730, 2722, 2728, 2725, 2729,   86, 2731,   86,
-     2736,   86, 2732,   86, 2733,   86, 2737, 2734, 2738,   86,
-       86, 2735,   86,   86,   86,   86, 2745,   86,  170,   86,
-
-     2747,   86,   86, 2741,   86, 2740, 2748, 2743,   86, 2739,
-     2746,   86,   86,   86,   86, 2754, 2742, 2744, 2833, 2749,
-     2751,   86,   86, 2750, 2753,   86, 2756, 2755, 2758,   86,
-     2757, 2759,   86, 2752,   86, 2760,   86, 2761,   86, 2762,
-     2763,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86, 2764, 2773,   86,   86,   86, 2771, 2766,   86,
-     2777, 2765,   86, 2768, 2767, 2778,   86, 2770, 2769, 2772,
-     2774,   86, 2775, 2776, 2782,   86, 2779,   86, 2780,   86,
-     2781, 2784,   86,   86,   86,   86, 2783,   86,   86,   86,
-       86,   86, 2788,   86, 2795,   86,   86, 2785, 2796,   86,
-
-     2794, 2786, 2787, 2789,   86, 2790, 2792, 2791,   86, 2802,
-     2793, 2800,   86,   86, 2799,   86, 2797, 2801,   86,   86,
-       86,   86, 2798,   86,   86,   86, 3542,   86, 2807, 2812,
-       86, 2803, 2810,   86, 2804, 2806,   86,   86, 2811, 2805,
-       86,   86, 2813,   86, 2808, 2809, 2814,   86,   86,   86,
-     2816,   86, 2815,   86, 2820, 2818, 2817,   86, 2821,   86,
-       86,   86, 2827,   86, 2826,   86,   86,   86, 2819, 2830,
-       86, 2822,   86,   86, 2836,   86, 2823,   86, 2825, 2824,
-     2828, 2835, 2832, 2831, 2829,   86,   86,   86, 2834,   86,
-     2841,   86,   86,   86,   86,   86,   86, 2845, 2837, 2844,
-
-       86, 2838, 2843,   86, 2842, 2846,   86, 2839, 2849, 2840,
-     2848,   86,   86, 2847,   86,   86, 2851, 2854,   86,   86,
-     2855, 2850,   86, 2857,   86,   86, 2852,   86,   86,   86,
-       86, 2864,   86,   86,   86, 2853,   86,   86, 2858, 2861,
-     2859, 2860, 2862, 2863, 2856, 2867,   86,   86,   86, 2865,
-       86, 2866, 2868, 2869,   86,   86, 2873,   86,   86, 2871,
-       86,   86,   86, 2872, 2870,   86, 2874, 2877, 2875,   86,
-     2878, 2880,   86, 2876, 2881,   86, 2879,   86, 2884,  170,
-       86,   86, 2882,   86,   86, 2889, 2886, 2885, 2883,   86,
-       86,   86,   86, 2891, 2890,   86, 2894,   86, 2895,   86,
-
-     2893, 2887, 2888,   86, 2899, 2892, 2897,   86,   86, 2900,
-       86, 2898,   86,   86,   86, 2904, 2896, 2901, 2902,   86,
-       86,   86,   86, 2905,   86, 2906,   86,   86, 2903, 2911,
-     2912, 2907,   86,   86, 2909,   86,   86, 2913,   86, 2908,
-       86,   86,   86, 2916, 2917, 2914,   86, 2915, 2910,   86,
-       86, 2919,   86,   86, 2918, 2920,   86, 2921,   86,   86,
-       86, 2926,   86, 2928,   86, 2924, 2923, 2922, 2925, 2930,
-       86, 2927,   86,   86,   86,   86, 2931,   86, 2935,   86,
-       86, 2936, 2929,   86,   86,   86, 2940,   86,   86,   86,
-       86, 2932, 2938, 2933, 2944,   86, 2934, 2945,   86, 2937,
-
-     2939, 2947,   86, 2941, 2942, 2948,   86,   86, 2943, 2950,
-     2952,   86, 2951,   86,   86,   86,   86,   86,   86, 2957,
-     2946, 2954,   86,   86, 2949,   86, 2955,   86,   86,   86,
-     2958, 2956, 2959,   86, 2962,   86, 2960, 3542, 2961, 2953,
-     2964,   86, 2965,   86, 2966,   86,   86, 2963,   86,   86,
-     2967, 2970,   86, 2968,   86, 2971,   86, 2974, 2969, 2972,
-       86,   86, 2975,   86,   86, 2978, 2979,   86, 2973, 2980,
-       86,   86, 2976, 2981,   86,   86,   86,   86, 2982, 2985,
-       86, 2977,   86,   86, 2983, 2988,   86,   86, 2989, 2984,
-     2990,   86, 2992,   86,   86, 2986,   86,   86, 2991, 2996,
-
-     2997,   86, 2987, 2999,   86,   86,   86, 2993, 2998,   86,
-       86, 2995, 3001,   86, 2994, 3000,   86, 3002,   86,   86,
-     3007,   86,   86,   86,   86, 3006,   86, 3009, 3068, 3003,
-     3010,   86,   86, 3004,   86,   86, 3005, 3011, 3013,   86,
-       86,   86, 3012, 3015,   86, 3016, 3008, 3014,   86,   86,
-       86, 3023,   86, 3019,   86,   86, 3017, 3018, 3025, 3020,
-       86,   86,   86,   86, 3022,   86, 3026, 3030, 3024, 3021,
-     3029, 3032, 3031,   86, 3027,   86, 3033,   86, 3035,   86,
-     3028, 3041, 3034,   86, 3036,   86, 3037,   86, 3038,   86,
-     3039,   86, 3040,   86,   86, 3043,   86,   86, 3042,   86,
-
-       86,   86, 3046,   86,   86, 3048, 3052,   86, 3053,   86,
-     3045,   86, 3049,   86, 3054, 3056,   86,   86, 3047,   86,
-     3044, 3050, 3058,   86, 3051,   86, 3057, 3060,   86,   86,
-     3059, 3055,   86,   86,   86, 3065, 3066,   86, 3061, 3067,
-       86, 3062, 3063, 3064,   86,   86,   86,   86,   86, 3073,
-       86,   86,   86, 3069, 3074,   86, 3077, 3071,   86, 3076,
-       86, 3075, 3072, 3078, 3070, 3079,   86, 3081,   86,   86,
-       86, 3085,   86,   86, 3080,   86, 3083,   86,   86,   86,
-       86,   86, 3086, 3082, 3089, 3092,   86, 3087, 3084, 3090,
-       86,   86,   86, 3093,   86, 3095,   86, 3096, 3091,   86,
-
-     3097, 3099, 3088, 3098,   86,   86,   86, 3094,   86, 3102,
-     3104,   86, 3103, 3105,   86, 3106,   86, 3100,   86, 3101,
-       86, 3114,   86,   86, 3111,   86, 3108, 3107, 3110,   86,
-       86,   86,   86,   86, 3112,   86, 3113,   86,   86, 3109,
-     3118, 3120,   86, 3115, 3116, 3122,   86,   86,   86,   86,
-     3126,   86, 3123,   86, 3117, 3119, 3124,   86, 3125,   86,
-       86, 3127,   86, 3121, 3131,   86,   86,   86,   86,   86,
-       86, 3135, 3128,   86, 3129, 3132,   86,   86, 3136, 3133,
-     3130, 3134, 3140,   86, 3139,   86, 3137,   86, 3142,   86,
-       86,   86, 3138,   86, 3143, 3146,   86, 3148,   86, 3149,
-
-       86, 3151,   86, 3141,   86,   86,   86, 3144,   86,   86,
-     3147, 3154,   86,   86, 3150,   86, 3145, 3156, 3157,   86,
-     3152, 3153, 3159,   86, 3155, 3160,   86, 3163,   86, 3158,
-       86,   86, 3166,   86, 3167,   86,   86, 3169, 3161,   86,
-       86, 3170, 3162,   86, 3164, 3172,   86, 3165, 3173,   86,
-       86,   86, 3176,   86,   86, 3168,   86,   86, 3181,   86,
-       86, 3171,   86, 3179,   86, 3174,   86, 3178, 3185,   86,
-       86, 3175, 3177, 3187, 3183,   86,   86, 3180, 3182, 3188,
-     3184, 3186,   86, 3189,   86, 3192, 3195, 3190, 3193,   86,
-       86,   86,   86, 3194,   86,   86, 3198,   86,   86,   86,
-
-     3197, 3201,   86, 3199, 3191, 3204,   86,   86,   86,   86,
-       86,   86, 3196, 3209,   86,   86,   86, 3225, 3200, 3202,
-     3203, 3205,   86,   86, 3208,   86, 3206, 3213,   86, 3214,
-       86, 3212, 3211,   86, 3210, 3207, 3215,   86, 3216, 3217,
-       86, 3219,   86, 3220,   86, 3218, 3221,   86, 3222,   86,
-       86,   86,   86, 3227,   86,   86,   86, 3226,   86,   86,
-       86,   86, 3233, 3223, 3234,   86,   86,   86,   86,   86,
-     3240,   86, 3241,   86, 3228,   86,   86, 3224, 3229, 3231,
-     3230, 3232, 3237,   86, 3239, 3243, 3236,   86,   86, 3238,
-       86,   86, 3235, 3246, 3242, 3248,   86, 3249,   86,   86,
-
-       86, 3252,   86, 3244, 3250,   86, 3245,   86, 3255,   86,
-     3254, 3247,   86,   86, 3251,   86, 3257, 3253, 3256,   86,
-     3258,   86,   86,   86,   86,   86,   86, 3261,   86,   86,
-     3263,   86,   86, 3264,   86, 3262,   86,   86,   86, 3259,
-       86, 3260, 3273, 3274,   86, 3265, 3542, 3269, 3266, 3267,
-     3268, 3270, 3271, 3276,   86,   86,   86, 3272, 3279,   86,
-     3275, 3277, 3281,   86, 3278, 3282,   86, 3280,   86, 3284,
-       86,   86, 3283,   86, 3287,   86, 3285, 3288,   86, 3289,
-     3290,   86,   86, 3291, 3292, 3296,   86, 3293,   86,   86,
-     3294, 3295, 3286,   86, 3297,   86, 3299,   86,   86,   86,
-
-       86, 3302,   86,   86, 3298,   86, 3306,   86,   86,   86,
-     3305,   86,   86, 3301,   86,   86, 3300,   86, 3309, 3310,
-       86, 3311, 3303, 3304,   86, 3314, 3315,   86, 3307, 3312,
-       86, 3317,   86, 3316, 3308, 3313, 3318,   86, 3319,   86,
-       86,   86,   86, 3324,   86, 3321, 3326, 3320, 3325,   86,
-     3322,   86,   86, 3323,   86,   86,   86, 3333,   86, 3328,
-     3330, 3331, 3334,   86, 3336,   86,   86, 3327,   86, 3335,
-     3337,   86, 3329, 3332,   86, 3340,   86, 3341,   86, 3339,
-       86, 3338, 3343,   86, 3344,   86, 3345,   86,   86, 3342,
-     3346,   86, 3347,   86, 3348,   86, 3349,   86, 3350,   86,
-
-       86, 3353,   86, 3354,   86,   86,   86,   86,   86, 3352,
-     3358,   86,   86,   86, 3351, 3355,   86, 3356, 3360,   86,
-       86, 3364,   86, 3361, 3365,   86, 3362, 3357, 3363, 3367,
-       86, 3359,   86,   86,   86,   86, 3369, 3366,   86, 3371,
-       86, 3374,   86, 3373,   86,   86,   86,   86,   86, 3376,
-     3368,   86,   86, 3372,   86,   86, 3375, 3380, 3382,   86,
-     3370, 3381, 3379,   86, 3377,   86, 3378,   86, 3385,   86,
-     3383,   86, 3386, 3388,   86, 3389,   86,   86, 3387, 3390,
-       86,   86,   86,   86,   86, 3384, 3392, 3393,   86, 3398,
-     3391, 3394,   86,   86, 3399, 3395,   86, 3401,   86, 3397,
-
-       86,   86,   86,   86,   86, 3396,   86,   86, 3400,   86,
-       86, 3402, 3410, 3408, 3413,   86,   86, 3405,   86, 3403,
-     3404, 3407, 3409, 3412,   86,   86,   86,   86, 3406, 3415,
-     3411, 3418,   86,   86, 3420,   86, 3414,   86, 3421, 3416,
-     3422,   86, 3419, 3423,   86,   86, 3417, 3425,   86,   86,
-       86, 3426,   86,   86, 3427, 3428, 3431,   86,   86,   86,
-       86,   86,   86,   86, 3424, 3434, 3435,   86, 3430,   86,
-     3433, 3432, 3437,   86, 3438,   86, 3439, 3429,   86, 3436,
-     3441,   86, 3440,   86, 3442, 3444,   86,   86, 3445,   86,
-       86, 3446, 3448, 3449,   86,   86, 3443,   86,   86,   86,
-
-     3454,   86, 3453,   86, 3450, 3455,   86, 3451, 3447,   86,
-       86,   86,   86,   86, 3452,   86, 3459,   86, 3461,   86,
-       86,   86,   86,   86, 3456, 3458, 3466, 3467,   86, 3457,
-     3460,   86, 3463, 3464, 3462, 3474, 3465, 3468,   86, 3472,
-       86,   86,   86, 3469,   86, 3475, 3470, 3473,   86,   86,
-     3471,   86,   86, 3476, 3477, 3480, 3478, 3481,   86,   86,
-       86,   86, 3483,   86, 3482,   86,   86,   86,   86, 3484,
-     3489, 3479,   86, 3486,   86,   86,   86,   86, 3492, 3485,
-     3493,   86,   86,   86,   86,   86, 3487, 3488, 3491, 3496,
-       86, 3490, 3494, 3497,   86, 3495,   86, 3500, 3499, 3501,
-
-       86, 3498,   86, 3502,   86, 3504,   86, 3506,   86, 3507,
-       86,   86,   86, 3511,   86, 3508, 3542,   86, 3509, 3514,
-       86, 3505, 3512,   86,   86, 3513, 3503,   86,   86,   86,
-       86, 3510,   86,   86, 3515, 3516,   86, 3518, 3520,   86,
-       86, 3522,   86, 3517,   86, 3523,   86, 3526, 3519, 3521,
-     3527,   86, 3524,   86,   86, 3530, 3531,   86,   86, 3533,
-       86, 3525,   86, 3528,   86, 3532, 3534,   86,   86, 3535,
-       86,   86, 3529, 3536, 3542, 3537, 3540,   86, 3541,   86,
-     3542, 3542, 3542, 3538, 3542, 3542, 3542, 3542, 3542, 3542,
-     3539,   47,   47,   47,   47,   47,   47,   47,   52,   52,
-
-       52,   52,   52,   52,   52,   57,   57,   57,   57,   57,
-       57,   57,   63,   63,   63,   63,   63,   63,   63,   68,
-       68,   68,   68,   68,   68,   68,   74,   74,   74,   74,
-       74,   74,   74,   80,   80,   80,   80,   80,   80,   80,
-       89,   89, 3542,   89,   89,   89,   89,  160,  160, 3542,
-     3542, 3542,  160,  160,  162,  162, 3542, 3542,  162, 3542,
-      162,  164, 3542, 3542, 3542, 3542, 3542,  164,  167,  167,
-     3542, 3542, 3542,  167,  167,  169, 3542, 3542, 3542, 3542,
-     3542,  169,  171,  171, 3542,  171,  171,  171,  171,  174,
-     3542, 3542, 3542, 3542, 3542,  174,  177,  177, 3542, 3542,
-
-     3542,  177,  177,   90,   90, 3542,   90,   90,   90,   90,
-       17, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542
+       86, 1928, 1920, 1925, 1919, 1921,   86,   86,   86, 1931,
+
+       86, 1933,   86, 1932,   86,   86, 1930, 1927,   86, 1926,
+     1937, 1935, 1929,   86, 1936, 1934,   86,   86, 1941,   86,
+       86,   86, 1938, 1942,   86, 1946,   86, 1948, 1951, 1939,
+     1943, 1940, 1944,   86,   86, 1947, 1950,   86,   86,   86,
+     1954, 1945,   86, 1952, 1949,   86,   86,   86, 1955, 1958,
+       86,   86, 1962, 1953, 1960,   86,   86,   86,   86,   86,
+     1961, 1957,   86, 1959,   86, 1956,   86,   86,   86, 1968,
+     1967,   86,   86,   86, 3557, 1964, 1965, 1969, 1966, 1970,
+     1971, 1973, 1975,   86, 1977, 1972, 1978, 1974,   86,   86,
+       86,   86,   86, 1980,   86,   86, 1984,   86,   86, 1986,
+
+       86, 1979,   86,   86, 1976,   86, 1990,   86,   86, 1981,
+     1983, 1985,   86, 1982,   86,   86, 1992,   86, 1988, 1993,
+       86, 1989, 1987,   86,   86, 1995, 1997,   86, 1991, 1996,
+       86,   86,  170,   86, 2001, 1994, 2004,   86, 1999, 2000,
+       86,   86,   86,   86, 2002,   86, 1998,   86, 2003, 2008,
+       86,   86, 2010, 2006,   86,   86, 2015, 2009,   86, 2005,
+       86, 2007,   86, 2011,   86,   86, 2012, 2014, 2019,   86,
+     2016, 2018,   86, 2023, 2013, 2020, 2021,   86, 2017,   86,
+     2024, 2025,   86,   86, 2022,   86,   86, 2027,   86,   86,
+       86, 2028,   86,   86,   86, 2026,   86,   86,   86, 2033,
+
+       86, 2034,   86,   86,   86, 2038, 2035,   86, 3557, 2029,
+     2031, 2032, 2030, 2037, 2036,   86, 2039,   86,   86, 2045,
+     2042,   86, 2044, 2041, 2046,   86, 2047, 2043,   86, 2040,
+       86,   86,   86,   86,   86, 2053,   86, 2056,   86, 2048,
+     2049, 2057,   86, 2058,   86,   86, 2051, 2050, 2054,   86,
+     2055, 2052, 2060,   86,   86, 2061,   86,   86, 2059, 2065,
+       86, 2066, 2067, 2069,   86,   86, 2062, 2068,   86,   86,
+     2063,   86, 2071,   86, 2075,   86, 2072, 2064,   86,   86,
+       86,   86, 2074, 2070, 2078,   86, 2077,   86,   86,   86,
+       86,   86, 2083, 2085, 2081, 2082,   86,   86, 2073,   86,
+
+     2076, 2084, 2079,   86,   86,   86,   86, 2093,   86, 2080,
+       86, 2097, 3557,   86, 2095, 2086, 2087, 2088,   86, 2096,
+       86,   86, 2089, 2091, 2090, 2098, 2092,   86, 2094, 2099,
+     2102,   86, 2100, 2101,   86,   86,   86, 2106,   86,   86,
+     2103,   86, 2108,   86,   86,   86, 2111, 2112,   86,   86,
+     2114,   86,   86,   86, 2104,   86, 2105,   86,   86, 2121,
+       86, 2119, 2116, 2109, 2117, 2107, 2110,   86,   86, 2113,
+       86,   86,   86,   86, 2120,   86, 2127, 2115, 2118, 2124,
+     2125,   86,   86,   86, 2130, 2123, 2132,   86, 2131, 2122,
+       86,   86,   86,   86, 2134, 2135,   86, 2138, 2129, 2126,
+
+       86,   86, 2136,   86, 2139,   86,   86, 2128,   86,   86,
+       86, 2133, 2137, 2140,   86, 2141, 2142, 2144,   86,   86,
+       86, 2146, 2145,   86, 2149, 2150, 2151,   86, 2143,   86,
+       86,   86,   86,   86, 2154,   86,   86, 2147, 2159,   86,
+       86, 2158,   86,   86, 2153,   86, 2148, 2152,   86, 2164,
+     2155,   86, 2165, 2156,   86,   86,   86, 2157, 2162, 2169,
+     2166, 2161, 2168,   86, 2160, 2167,   86, 2163, 2172,   86,
+       86,   86,   86,   86,   86,   86,   86, 2170,   86, 2176,
+     2180,   86, 2171,   86,   86, 2174,   86,   86, 2183,   86,
+     2181, 2173, 2175, 2187, 2184, 2177, 2178,   86, 2179, 2182,
+
+     2185,   86,   86, 2186,   86,   86, 2188, 2191, 2192,   86,
+     2193,   86, 2194, 2196, 3557, 2189, 2197, 2195,   86,   86,
+     2190,   86,   86,   86, 2201,   86, 2199,   86,   86,   86,
+       86, 2198, 2203,   86, 2205, 2200, 2207, 2202,   86, 2204,
+     2209,   86,   86, 2210,   86,   86,   86,  170,   86,   86,
+       86,   86, 2213,   86, 2206,   86,   86, 2276, 2217, 2218,
+     2208, 2212, 2214, 2215, 2211,   86, 2219, 2216, 2220,   86,
+     2221,   86, 2223,   86,   86, 2222,   86,   86,   86, 2224,
+     2226, 2225,   86,   86,   86,   86, 2227, 2228, 2229,   86,
+     2231,   86,   86, 2235,   86, 2230, 2232, 2234,   86,   86,
+
+       86, 2240,   86, 2233, 2237, 2238,   86, 2236,   86, 2239,
+       86,   86,   86,   86,   86,   86, 2247, 2245,   86, 2242,
+     2246,   86,   86,   86,   86, 2252,   86, 2249, 2241, 2243,
+       86, 2244, 2248,   86,   86, 2257, 2253, 2251,   86, 2250,
+       86,   86, 2255,   86, 2254,   86,   86, 2258, 2261, 2264,
+     2256,   86, 2259, 2263,   86,   86,   86, 2270, 2262,   86,
+       86,   86, 2260,   86,   86, 2272,   86, 2265, 2273,   86,
+       86, 2266, 2267,   86, 2268, 2269,   86, 2271, 2275,   86,
+     2277,   86,   86, 2278,   86, 2281,   86, 2274,   86,   86,
+     2280,   86,   86, 2279, 2288, 2283,   86, 2286, 2284,   86,
+
+     2282, 2287,   86,   86,   86,   86,   86,   86,   86, 2285,
+       86, 2289,   86,   86, 2290, 2295, 2292,   86, 2291, 2296,
+     2300, 2294, 2301,   86,   86,   86,   86, 2298, 2304, 2305,
+     2302, 2293, 2297, 2299,   86,   86,   86, 2303, 2308, 2307,
+       86,   86,   86,   86,   86, 2310, 2306,   86, 2311, 2318,
+       86, 2312,   86, 2309, 2316,   86, 2314,   86,   86, 2319,
+       86, 2313, 2315, 2317, 2321,   86,   86,   86,   86, 2324,
+       86, 2323, 2320, 2325,   86, 2326,   86,   86, 2330,   86,
+       86,   86,   86, 2334,   86, 2331, 2322,   86, 2335,   86,
+       86, 2333, 2327,   86, 2328, 2332,   86, 2329, 2336,   86,
+
+     2337, 2338, 2339,   86,   86, 2340, 2344, 2341, 2342,   86,
+       86,   86,   86, 2346, 2345,   86, 2350,   86,   86, 2343,
+       86, 2352,   86, 2348,   86, 2353,   86, 2355, 2347,   86,
+     2351, 2349,   86,   86,   86, 2354, 2357,   86, 2362, 2360,
+       86,   86, 2358, 2363,   86, 2359,   86, 2356,   86,   86,
+     2365,   86, 2364,   86, 2368, 2361, 2369,   86, 2366,   86,
+     2367, 2373,   86,   86,   86,   86, 2370,   86, 2372,   86,
+       86,   86, 3557,   86,   86,   86,   86, 2371, 2381,   86,
+       86, 2374, 2375, 2376, 2379, 2377, 2380, 2382, 2383, 2387,
+       86,   86, 2378,   86, 2384, 2385, 2386,   86,   86, 2388,
+
+       86,   86, 2391, 2390,   86,   86, 2396,   86,   86, 2398,
+       86,   86, 2389, 2392, 2395,   86,   86, 2397, 2393, 2401,
+       86, 2402, 2399,   86,  170, 2405, 2394,   86, 3557, 2407,
+     2400,   86, 2409, 2403, 2408,   86,   86, 2410,   86, 2411,
+       86,   86, 2404,   86, 2414,   86, 2406, 2413, 2412,   86,
+     2415,   86, 2419,   86,   86, 2420,   86, 2423,   86, 2422,
+     2418,   86,   86,   86, 2416,   86, 2424, 2427, 2421,   86,
+     2425, 2426,   86, 2428,   86, 2417,   86,   86, 2429,   86,
+     2431,   86,   86, 2433,   86, 2430, 2434,   86,   86,   86,
+       86,   86, 2437,   86,   86, 2441,   86, 2432, 2444, 2436,
+
+     2443,   86,   86,   86,   86, 2435, 2438, 2439, 2446, 2440,
+       86, 2445,   86,   86,   86, 2442,   86,   86, 2451, 2454,
+       86,   86, 2448,   86, 2449, 2455,   86, 2452, 2447, 2450,
+       86,   86,   86,   86, 2453,   86,   86, 2465,   86,   86,
+     2456,   86, 2457,   86,   86, 2458,   86, 2463, 2470,   86,
+     2494, 2461, 2467, 2459, 2462, 2460, 2466, 2464, 2468,   86,
+     2472,   86,   86,   86,   86, 2469, 2474, 2473,   86, 2471,
+       86,   86, 2478, 2479,   86,   86,   86, 2475, 2480, 2481,
+       86,   86, 2476, 2477,   86, 2484,   86, 2485,   86,   86,
+     2482, 2488,   86,   86, 2483, 2489,   86, 2486, 2490,   86,
+
+     2487,   86, 2495,   86, 2491, 2496,   86,   86,   86, 2492,
+     2498,   86,   86, 2500,   86,   86, 2503,   86, 2504,   86,
+     2502, 2493,   86, 2501,   86,   86, 2497,   86,   86,   86,
+     2499, 2511,   86, 2506, 2510,   86, 2505, 2513,   86,   86,
+       86, 2508, 2507,   86,   86, 2515,   86, 2509,   86, 2516,
+       86, 2517,   86, 2518, 2512, 2520,   86, 2514,   86,   86,
+     2523, 2522,   86, 2521,   86, 2524, 2526,   86, 2519,   86,
+       86,   86, 2532,   86,   86, 2531,   86,   86, 2525, 2528,
+       86, 2534, 2527,   86,   86, 2530, 2537,   86,   86,   86,
+       86, 2539, 2529, 2533,   86, 2535,   86, 2538, 2536,   86,
+
+     2545,   86, 2540,   86,   86, 2547, 2551, 2541, 2542, 2543,
+     2546,   86,   86,   86, 2548,   86, 2552,   86, 2553,   86,
+     2554,   86, 2544,   86,   86,   86, 2558,   86,   86, 2549,
+     2560, 2550, 2556, 2561,   86, 2564,   86, 2565,   86, 2562,
+     2568,   86, 2555,   86, 2557,   86,   86,   86, 2566,   86,
+     2559, 2563, 2569, 2567, 2570,   86,   86,   86,   86, 2573,
+       86,   86,   86,   86,   86,   86, 2574, 2575, 2572, 2576,
+     2571, 2577, 2579, 2580, 2584, 2578,   86, 3557,   86,   86,
+     2581,   86, 2585, 2582, 2583, 2586,   86, 2587,   86,   86,
+     2590,   86,   86,  170,   86, 2588,   86, 2589, 2591,   86,
+
+     2596,   86,   86,   86,   86,   86,   86,   86, 2604,   86,
+     2594, 2597, 2592, 2598, 2593, 2595,   86, 2599, 2600, 2602,
+       86, 2601, 3557, 2603, 2607,   86,   86, 2608, 2606, 2605,
+     2609,   86,   86,   86, 2612, 2610, 2613,   86, 2611,   86,
+       86,   86,   86, 2615,   86,   86, 2614,   86, 2617,   86,
+       86, 2621, 2622, 2616,   86, 2619,   86, 2618,   86, 2624,
+       86,   86,   86,   86, 2625, 2626, 2627,   86, 2620,   86,
+     2623,   86, 2629,   86, 2628, 2633,   86, 2632,   86,   86,
+     2630, 2631,   86,   86, 2635,   86,   86,   86,   86,   86,
+     2643, 2634, 2640,   86, 2642,   86,   86,   86, 2645, 2644,
+
+     2639,   86, 2636, 2637,   86, 2638,   86, 2641,   86, 2651,
+       86, 2649,   86, 2646,   86,   86,   86, 2657,   86, 2655,
+     2647, 2654,   86, 2648, 2652,   86, 2656,   86,   86, 2650,
+     2653, 2658,   86, 2660,   86,   86,   86, 2661, 2662,   86,
+     2664, 2659,   86, 2666, 2668,   86, 2665,   86, 2667,   86,
+     2670,   86,   86,   86, 2663,   86, 2669,   86,   86,   86,
+       86,   86, 2674, 2679,   86, 2677, 2678, 2672, 2680,   86,
+     2671, 2673, 2681,   86,   86, 2683,   86,   86,   86,   86,
+     2676,   86,   86,   86, 2675, 2688, 2686,   86,   86, 2691,
+       86,   86, 2684, 2682,   86, 2689, 2692, 2693, 2687, 2685,
+
+     2690, 2694,   86, 2697,   86,   86,   86,   86, 2698,   86,
+       86, 2701, 2695, 2702,   86,   86,   86, 2696,   86,   86,
+     2703,   86,   86,   86, 2708, 2699, 2707, 2700, 2705,   86,
+       86, 2706,   86,   86, 2704,   86,   86, 2709, 2712, 2716,
+       86, 2715, 2711, 2710, 2717,   86, 2718,   86, 2719,   86,
+       86,   86, 2713,   86,   86, 2714,   86, 2723, 2722,   86,
+     2724,   86, 2720,   86, 2725,   86, 2726,   86,   86, 2721,
+       86, 2732,   86,   86, 2734,   86,   86, 2728, 2735,   86,
+       86, 2727,   86,   86,   86,   86, 2731, 2729, 2737, 2730,
+     2738, 2736, 2733,   86, 2739,   86, 2744,   86, 2741,   86,
+
+     2746,   86,   86,   86, 2740, 2742,   86,   86, 2745,  170,
+       86,   86,   86,   86, 2753, 2743,   86, 2755,   86, 2749,
+       86, 2754, 2756, 2748, 2751,   86,   86,   86, 2747,   86,
+       86, 2750, 2762, 2752,   86, 2757, 2759,   86,   86, 2764,
+     2758,   86, 2765,   86, 2763, 2766,   86,   86, 2760, 2772,
+     2761, 2767,   86,   86, 2768,   86, 2769,   86, 2770, 2771,
+       86,   86, 2773,   86,   86,   86,   86, 2775,   86,   86,
+     2781,   86,   86,   86, 2779, 2774,   86, 2785,   86, 2776,
+     2786,   86, 2790,   86, 2778, 2777, 2780,   86,   86, 2782,
+     2783, 2784, 2787, 2788, 2792,   86, 2789, 2791,   86,   86,
+
+       86,   86,   86,   86,   86,   86,   86,   86, 2796, 2803,
+       86, 2804,   86,   86, 2802, 3557, 2793, 2794, 2795, 2797,
+     2798, 2799, 2800,   86, 2801,   86, 2808,   86, 2809,   86,
+     2810, 2807,   86, 2805,   86,   86,   86,   86,   86,   86,
+       86, 2806,   86, 2815,   86,   86, 2820,   86,   86, 2812,
+     2811, 2814, 2819, 2817, 2813, 2821,   86, 2823,   86, 2816,
+     2818,   86,   86, 2822, 2824,   86,   86, 2826,   86,   86,
+       86, 2825,   86, 2829, 2830,   86,   86, 2827,   86, 2836,
+       86, 2835,   86,   86, 2839,   86, 2828,   86,   86,   86,
+     2831, 2832,   86, 2842, 2834, 2833,   86, 2837, 2840,   86,
+
+       86, 2838, 2844, 2841, 2845, 2846,   86, 2843,   86,   86,
+       86,   86, 2847, 2851,   86,   86,   86,   86,   86, 2855,
+     2853, 2854,   86, 2848, 2856,   86,   86, 2852,   86, 2849,
+     2850, 2858,   86, 2859,   86, 2857,   86,   86, 2861, 2864,
+       86,   86, 2865, 2860, 2867,   86, 2863,   86, 2862,   86,
+       86,   86,   86, 2874,   86,   86,   86,   86, 3557, 2866,
+     2868, 2871, 2869, 2870, 2872, 2873, 2877,   86,   86,   86,
+       86, 2875, 2876, 2878, 2879,   86,   86,   86,   86,   86,
+     2881,   86,   86,   86, 2880, 2882,   86, 2884, 2887, 2885,
+       86, 2888, 2890,   86, 2886, 2883,   86, 2889, 2891,   86,
+
+       86, 2892, 2894,  170,   86,   86,   86, 2895, 2899, 2893,
+     2896,   86,   86, 2901,   86,   86, 2900, 3557,   86, 2904,
+       86,   86, 2897, 2903, 2898, 2905,   86, 2907,   86,   86,
+     2902, 2909, 2908,   86, 2906,   86, 2910,   86, 2911,   86,
+     2912, 2914,   86,   86,   86,   86, 2915,   86, 2916,   86,
+       86,   86, 2921, 2913, 2917, 2922, 2923, 2919,   86, 2918,
+       86,   86,   86,   86,   86,   86,   86, 2927, 2926, 2925,
+       86, 2920, 2924,   86,   86, 2929,   86, 2928, 2930, 2931,
+       86,   86,   86,   86, 2932,   86, 2936,   86,   86, 2933,
+     2934, 2935, 2937, 2938, 2940,   86,   86,   86, 2939,   86,
+
+       86, 2941, 2945,   86, 2946,   86, 2942,   86,   86,   86,
+       86, 2951,   86,   86,   86,   86, 2943, 2948, 2944, 2955,
+     2956,   86, 2949,   86, 2947, 2950, 2958,   86, 2952, 2953,
+     2959, 2961,   86, 2954, 2962,   86,   86,   86,   86,   86,
+       86,   86,   86,   86, 2968, 2960, 2963, 2965, 2957, 2966,
+       86,   86,   86,   86, 2967, 2969,   86, 2970, 2972,   86,
+       86, 2974,   86, 2983, 2964, 2971, 2976,   86, 2977,   86,
+       86, 2973, 2978,   86, 2979,   86,   86, 2982,   86,   86,
+     2975, 2980,   86, 2986, 2981,   86,   86, 2984, 2987,   86,
+       86, 2985,   86, 2990, 2991,   86,   86, 2988, 2992,   86,
+
+     2993,   86,   86, 2995,   86, 2994, 2989, 2997,   86, 2996,
+       86, 3000,   86,   86, 3001, 3002,   86,   86, 3004,   86,
+       86,   86, 2998,   86,   86, 3008, 3009,   86, 3010, 3011,
+     2999,   86, 3003, 3005,   86,   86,   86, 3007, 3013, 3006,
+       86, 3012,   86, 3014,   86,   86, 3019,   86,   86,   86,
+       86, 3018,   86, 3021, 3022,   86,   86, 3015, 3024,   86,
+     3016, 3023, 3017,   86,   86,   86, 3025, 3027,   86, 3028,
+     3031,   86, 3020, 3026,   86,   86, 3029, 3030,   86, 3035,
+       86,   86,   86,   86,   86, 3037, 3047,   86,   86, 3032,
+       86, 3053, 3034, 3038, 3033, 3036, 3041, 3039,   86, 3042,
+
+     3557, 3044,   86, 3040, 3043,   86, 3045,   86,   86, 3046,
+       86, 3048,   86, 3049,   86, 3050,   86, 3051,   86, 3052,
+       86,   86, 3055,   86, 3056, 3054,   86, 3059, 3058,   86,
+       86, 3060,   86, 3064,   86, 3057, 3065,   86, 3061,   86,
+       86,   86, 3066, 3069,   86,   86, 3067,   86, 3071,   86,
+     3062,   86, 3063,   86, 3070,   86, 3072, 3073,   86, 3068,
+       86,   86, 3074, 3078, 3075, 3079,   86, 3080,   86, 3076,
+     3077,   86,   86,   86,   86, 3081,   86, 3086,   86, 3557,
+       86, 3082, 3087,   86,   86, 3084,   86, 3089, 3090,   86,
+       86, 3085, 3083, 3088, 3091, 3092,   86, 3094,   86,   86,
+
+     3093,   86, 3098,   86, 3095,   86,   86,   86,   86,   86,
+     3105,   86,   86, 3102, 3099,   86,   86,   86, 3100, 3097,
+     3103,   86, 3108,   86, 3096,   86, 3109, 3106, 3112, 3104,
+       86, 3110, 3101, 3107, 3111,   86,   86,   86, 3115, 3117,
+       86, 3116, 3118,   86, 3119,   86,   86,   86, 3113,   86,
+     3114,   86, 3124,   86,   86, 3120, 3123,   86,   86, 3125,
+     3127,   86, 3126,   86,   86,   86,   86, 3121, 3122,   86,
+     3131, 3128, 3133, 3135,   86, 3129,   86,   86,   86,   86,
+     3136,   86, 3137,   86, 3132, 3130, 3138,   86, 3139,   86,
+       86, 3144,   86,   86, 3134,   86,   86,   86, 3140,   86,
+
+       86, 3148,   86, 3143, 3141, 3142, 3145,   86, 3146, 3147,
+       86, 3149, 3153,   86,   86, 3150,   86, 3155, 3152, 3151,
+       86,   86,   86, 3156, 3159,   86, 3161,   86,   86, 3163,
+       86,   86,   86, 3154, 3162, 3165,   86,   86, 3157,   86,
+       86, 3160, 3171,   86, 3168,   86,   86, 3158, 3166,   86,
+     3170, 3174, 3164, 3167,   86,   86, 3169,   86, 3173,   86,
+     3177,   86,   86, 3180,   86, 3181, 3172,   86,   86,   86,
+     3183,   86,   86, 3184, 3176, 3178,   86, 3175, 3186,   86,
+       86, 3179, 3187,   86, 3190,   86,   86, 3182,   86,   86,
+     3195, 3185, 3189,   86,   86, 3188,   86, 3192, 3193,   86,
+
+     3199,   86,   86,   86, 3191, 3557, 3197,   86, 3194,   86,
+     3201,   86, 3196,   86, 3202,   86, 3203, 3200, 3206, 3198,
+       86, 3204, 3209, 3205,   86, 3207,   86,   86,   86,   86,
+     3208, 3210, 3212,   86, 3211,   86, 3215,   86,   86, 3214,
+     3213,   86,   86, 3218,   86,   86,   86,   86, 3223,   86,
+     3219,   86,   86,   86, 3216, 3217, 3227,   86, 3230, 3220,
+     3222, 3226, 3228,   86,   86, 3224,   86, 3225, 3229,   86,
+     3221, 3232, 3233,   86, 3234,   86, 3235,   86, 3231, 3236,
+       86,   86,   86, 3239,   86,   86, 3241,   86,   86,   86,
+     3240, 3242,   86,   86, 3237,   86,   86,   86, 3248, 3249,
+
+       86,   86,   86, 3243,   86,   86,   86,   86, 3238,   86,
+     3244, 3255,   86,   86, 3246, 3245, 3254,   86, 3247, 3252,
+     3258, 3251, 3256,   86, 3253, 3260,   86, 3250,   86, 3259,
+       86, 3257,   86, 3261, 3263,   86, 3264,   86, 3262,   86,
+       86, 3267, 3268,   86, 3265,   86, 3266,   86, 3269, 3270,
+       86,   86,   86,   86,   86,   86, 3271, 3272,   86, 3273,
+     3276,   86,   86, 3274, 3277, 3275, 3279, 3278,   86,   86,
+       86,   86,   86,   86,   86,   86, 3288,   86, 3291,   86,
+     3289, 3280,   86, 3557,   86,   86, 3284, 3292, 3281, 3282,
+     3283, 3285, 3286,   86, 3287,   86, 3294, 3290, 3295, 3293,
+
+     3296,   86, 3297,   86,   86, 3299,   86,   86, 3298, 3302,
+       86,   86, 3300, 3414, 3301, 3303,   86, 3304, 3305,   86,
+       86, 3306, 3307, 3311,   86, 3308,   86, 3309, 3310,   86,
+       86,   86, 3314,   86, 3312,   86,   86,   86, 3317,   86,
+     3313,   86,   86, 3321,   86,   86,   86, 3320,   86,   86,
+     3316,   86,   86, 3315,   86, 3324, 3325,   86, 3326, 3318,
+       86, 3319, 3329, 3330,   86, 3322, 3327,   86, 3332, 3331,
+       86, 3323, 3328, 3333,   86, 3334,   86,   86,   86,   86,
+     3341,   86, 3336, 3339,   86, 3335,   86, 3337, 3340,   86,
+     3338,   86,   86,   86, 3348,   86, 3343, 3345, 3346,   86,
+
+     3349,   86, 3351,   86, 3342, 3344,   86, 3350, 3352,   86,
+     3347,   86, 3355,   86, 3353,   86, 3354, 3356,   86, 3358,
+       86, 3359,   86,   86, 3357, 3360,   86, 3361,   86, 3362,
+       86, 3363,   86, 3364,   86, 3365,   86,   86, 3368,   86,
+     3369,   86,   86,   86,   86,   86, 3367, 3373,   86, 3366,
+       86, 3370, 3375,   86,   86, 3371,   86,   86, 3379,   86,
+     3376, 3380,   86,   86, 3372, 3382,   86, 3377, 3378, 3374,
+       86,   86,   86, 3384, 3381,   86, 3386,   86, 3389,   86,
+     3388, 3383,   86,   86,   86,   86,   86, 3391,   86,   86,
+     3387,   86, 3395, 3390,   86, 3397,   86, 3385, 3396,   86,
+
+       86,   86, 3392, 3393, 3394, 3400,   86,   86,   86, 3398,
+     3401,   86, 3402, 3403,   86, 3404,   86, 3405,   86,   86,
+     3407,   86, 3399, 3408, 3406,   86, 3409,   86,   86,   86,
+     3416, 3411, 3413,   86,   86, 3410, 3412,   86,   86,   86,
+       86,   86,   86, 3415,   86,   86, 3417, 3425,   86, 3423,
+     3428,   86,   86, 3418, 3420, 3419, 3422, 3424,   86,   86,
+     3557,   86,   86, 3427, 3421, 3426, 3430,   86, 3429, 3433,
+       86, 3434, 3432, 3431, 3435,   86,   86, 3436, 3437,   86,
+     3438,   86,   86,   86,   86,   86, 3439, 3441, 3442,   86,
+     3443,   86, 3446,   86,   86,   86,   86,   86,   86, 3449,
+
+     3450,   86, 3440, 3452,   86,   86, 3445, 3447, 3448, 3453,
+       86,   86, 3454,   86, 3444, 3451, 3456,   86, 3459,   86,
+       86, 3460,   86,   86, 3455,   86, 3457, 3463, 3464,   86,
+     3461, 3458,   86,   86,   86,   86, 3469,   86,   86, 3465,
+     3468,   86, 3462, 3470,   86, 3466,   86,   86, 3467,   86,
+       86, 3474,   86,   86,   86, 3476,   86,   86,   86, 3471,
+     3473, 3472, 3481, 3482, 3483,   86, 3478, 3479,   86, 3475,
+       86, 3477,   86, 3487,   86, 3480,   86, 3489,   86, 3490,
+       86, 3488,   86,   86,   86, 3491,   86, 3492, 3484, 3486,
+     3485, 3493, 3495, 3496,   86,   86, 3498,   86,   86,   86,
+
+     3497,   86,   86, 3494,   86, 3499,   86, 3504,   86, 3501,
+       86,   86,   86,   86,   86, 3507, 3508,   86, 3500, 3509,
+       86,   86, 3510, 3502, 3506, 3503, 3511, 3505,   86,   86,
+     3515, 3512,   86,   86,   86,   86, 3519, 3516,   86, 3513,
+       86, 3514,   86, 3521,   86, 3522, 3517,   86,   86, 3526,
+       86,   86, 3523, 3529,   86, 3524, 3527, 3520,   86, 3525,
+     3518,   86,   86, 3528,   86, 3530,   86,   86,   86, 3531,
+       86, 3533, 3535,   86,   86, 3537,   86,   86,   86, 3538,
+       86, 3541,   86, 3532, 3542,   86, 3534, 3536,   86, 3545,
+     3546,   86,   86, 3548,   86, 3539, 3540, 3543,   86, 3547,
+
+       86, 3544, 3549,   86,   86, 3550,   86,   86, 3557, 3551,
+     3557, 3552, 3555,   86, 3556,   86, 3557, 3557, 3557, 3553,
+     3557, 3557, 3557, 3557, 3557, 3557, 3554,   47,   47,   47,
+       47,   47,   47,   47,   52,   52,   52,   52,   52,   52,
+       52,   57,   57,   57,   57,   57,   57,   57,   63,   63,
+       63,   63,   63,   63,   63,   68,   68,   68,   68,   68,
+       68,   68,   74,   74,   74,   74,   74,   74,   74,   80,
+       80,   80,   80,   80,   80,   80,   89,   89, 3557,   89,
+       89,   89,   89,  160,  160, 3557, 3557, 3557,  160,  160,
+      162,  162, 3557, 3557,  162, 3557,  162,  164, 3557, 3557,
+
+     3557, 3557, 3557,  164,  167,  167, 3557, 3557, 3557,  167,
+      167,  169, 3557, 3557, 3557, 3557, 3557,  169,  171,  171,
+     3557,  171,  171,  171,  171,  174, 3557, 3557, 3557, 3557,
+     3557,  174,  177,  177, 3557, 3557, 3557,  177,  177,   90,
+       90, 3557,   90,   90,   90,   90,   17, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557
     } ;
 
-static const flex_int16_t yy_chk[6952] =
+static const flex_int16_t yy_chk[6988] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -2366,14 +2374,14 @@ static const flex_int16_t yy_chk[6952] =
         5,    3,    6,   24,    4,   24,   24,    5,   24,    6,
         7,    7,    7,    7,   24,    7,    8,    8,    8,    8,
        33,    8,    7,    9,    9,    9,   26,   26,    8,   10,
-       10,   10,   19,   29,    9,   33,   19,   29, 3550,   35,
+       10,   10,   19,   29,    9,   33,   19,   29, 3565,   35,
        10,   11,   11,   11,   11,   11,   11,   13,   13,   13,
 
        13,   34,   13,   11,   35,   99,   34,   29,   38,   13,
        51,   51,   11,   12,   12,   12,   12,   12,   12,   14,
        14,   14,   14,   99,   14,   12,   15,   15,   15,   38,
        23,   14,   23,   23,   12,   23,   46,   15,   16,   16,
-       16,   23,   23,   25,   27,   27,   25,   25, 2884,   16,
+       16,   23,   23,   25,   27,   27,   25,   25, 2894,   16,
        25,   46,   27,   30,   30,   25,   27,   56,   40,   27,
        56,   73,   31,   31,   25,   28,   67,   67,   30,   32,
        28,   31,   40,   32,   28,   73,   32,   28,   92,   28,
@@ -2752,377 +2760,380 @@ static const flex_int16_t yy_chk[6952] =
      1696, 1697, 1700, 1687, 1693, 1692, 1691, 1697, 1695, 1696,
      1699, 1695, 1698, 1698, 1701, 1694, 1702, 1699, 1703, 1704,
      1705, 1707, 1700, 1706, 1710, 1705, 1705, 1701, 1706, 1711,
-     1712, 1712, 1703, 1707, 1702, 1704, 1713, 1714, 1715, 1716,
-
-     1716, 1717, 1719, 1715, 1720, 1721, 1714, 1711, 1724, 1710,
-     1717, 1718, 1713, 1717, 1716, 1725, 1718, 1726, 1728, 1727,
-     1719, 1722, 1724, 1721, 1727, 1720, 1722, 1722, 1729, 1730,
-     1725, 1732, 1728, 1733, 1729, 1731, 1731, 1732, 1733, 1726,
-     1734, 1738, 1735, 1736, 1739, 1740, 1741, 1730, 1735, 1736,
-     1747, 1740, 1748, 1742, 1734, 1749, 1742, 1743, 1739, 1741,
-     1750, 1738, 1742, 1743, 1752, 1751, 1753, 1754, 1750, 1747,
-     1751, 1748, 1755, 1752, 1749, 1756, 1754, 1757, 1759, 1753,
-     1758, 1758, 1760, 1761, 1759, 1755, 1762, 1762, 1760, 1756,
-     1763, 1757, 1767, 1764, 1765, 1768, 1761, 1766, 1766, 1769,
-
-     1770, 1768, 1758, 1774, 1771, 1767, 1773, 1773, 1775, 1776,
-     1763, 1764, 1775, 1765, 1776, 1777, 1770, 1780, 1781, 1778,
-     1779, 1769, 1771, 1774, 1778, 1779, 1780, 1783, 1784, 1785,
-     1786, 1787, 1785, 1788, 1788, 1777, 1789, 1784, 1783, 1790,
-     1791, 1781, 1786, 1792, 1792, 1794, 1787, 1793, 1795, 1798,
-     1796, 1790, 1794, 1799, 1801, 1789, 1802, 1800, 1803, 1791,
-     1795, 1793, 1796, 1800, 1803, 1813, 1801, 1813, 1798, 1804,
-     1804, 1809, 1805, 1799, 1802, 1805, 1806, 1806, 1808, 1810,
-     1809, 1811, 1811, 1808, 1812, 1810, 1814, 1815, 1816, 1814,
-     1817, 1818, 1819, 1820, 1821, 1825, 1812, 1819, 1820, 1822,
-
-     1823, 1824, 1826, 1821, 1825, 1829, 1824, 1815, 1817, 1818,
-     1816, 1822, 1832, 1827, 1828, 1823, 1834, 1825, 1827, 1828,
-     1829, 1831, 1826, 1830, 1830, 1827, 1835, 1831, 1836, 1837,
-     1838, 1843, 1838, 1832, 1839, 1834, 1840, 1840, 1841, 1841,
-     1842, 1842, 1844, 1844, 1836, 1835, 1845, 1845, 1839, 1837,
-     1839, 1843, 1846, 1847, 1848, 1849, 1849, 1850, 1851, 1852,
-     1854, 1850, 1852, 1855, 1851, 1856, 1854, 1857, 1858, 1860,
-     1860, 1856, 1857, 1846, 1847, 1848, 1859, 1861, 1862, 1859,
-     1864, 1855, 1865, 1862, 1863, 1863, 1866, 1867, 1868, 1868,
-     1870, 1866, 1867, 1858, 1869, 1864, 1870, 1861, 1871, 1869,
-
-     1872, 1873, 1874, 1865, 1876, 1932, 1880, 1875, 1932, 1878,
-     1871, 1871, 1871, 1875, 1878, 1878, 1879, 1871, 1882, 1873,
-     1872, 1880, 1874, 1881, 1876, 1881, 1883, 1884, 1885, 1882,
-     1879, 1886, 1887, 1884, 1888, 1888, 1889, 1885, 1890, 1890,
-     1891, 1883, 1892, 1893, 1893, 1894, 1894, 1895, 1898, 1898,
-     1899, 1886, 1900, 1887, 1902, 1903, 1905, 1906, 1906, 1904,
-     1891, 1900, 1889, 1902, 1892, 1904, 1907, 1895, 1908, 1910,
-     1909, 1911, 1905, 1912, 1912, 1899, 1903, 1909, 1910, 1913,
-     1914, 1917, 1916, 1908, 1918, 1920, 1917, 1907, 1916, 1919,
-     1918, 1924, 1920, 1921, 1929, 1925, 1914, 1911, 1922, 1921,
-
-     1922, 1925, 1926, 1926, 1928, 1913, 1927, 1930, 1931, 1919,
-     1924, 1927, 1933, 1928, 1929, 1934, 1935, 1935, 1936, 1937,
-     1931, 1939, 1938, 1940, 1936, 1937, 1930, 1940, 1942, 1943,
-     1933, 1946, 1944, 1945, 1945, 1947, 1939, 1944, 1948, 1950,
-     1951, 1934, 1938, 1940, 1951, 1952, 1952,    0, 1942, 1959,
-     1953, 1943, 1954, 1948, 1947, 1946, 1953, 1957, 1950, 1955,
-     1955, 1954, 1956, 1958, 1958, 1960, 1956, 1961, 1957, 1962,
-     1959, 1963, 1964, 1957, 1962, 1965, 1966, 1970, 1967, 1960,
-     1969,    0, 1966, 1968, 1977, 1969, 1961, 1971, 1971, 1976,
-     1970, 1963, 1964, 1972, 1972, 1965, 1967, 1973, 1968, 1975,
-
-     1976, 1973, 1978, 1978, 1977, 1976, 1980, 1980, 1975, 1981,
-     1982, 1984, 1985, 1986, 1981, 1981, 1982, 1984, 1986, 1987,
-     1988, 1990, 1992, 1991, 1993, 1993, 1988, 1991, 1994, 1995,
-     1996, 1987, 1999, 1990, 1992, 1995, 1997, 2000, 1985, 1998,
-     1998, 2001, 1997, 2002, 2004, 2005, 2001, 2008, 2012, 2006,
-     2008, 1999, 1996, 1994, 2006, 2002, 2004, 2000, 2009, 2009,
-     2010, 2010, 2011, 2011, 2005, 2013, 2014, 2016, 2012, 2015,
-     2017, 2013, 2014, 2016, 2015, 2019, 2022, 2025, 2021, 2017,
-     2019, 2021, 2023, 2023, 2026, 2027, 2028, 2028, 2022, 2025,
-     2027, 2029, 2030, 2031, 2033, 2033, 2026, 2030, 2031, 2032,
-
-     2029, 2034, 2032, 2035, 2036, 2037, 2038, 2041, 2039, 2040,
-     2038, 2042, 2035, 2039, 2043, 2040, 2044, 2046, 2046, 2047,
-     2042, 2034, 2036, 2049, 2037, 2041, 2048, 2050, 2050, 2046,
-     2044, 2051, 2043, 2052, 2053, 2048, 2054, 2047, 2055, 2060,
-     2051, 2054, 2060, 2049, 2061, 2052, 2058, 2058, 2062, 2063,
-     2067, 2055, 2065, 2068, 2066, 2053, 2067, 2069, 2069, 2070,
-     2061, 2070, 2071, 2078, 2062, 2063, 2073, 2065, 2066, 2081,
-     2068, 2072, 2072, 2079, 2073, 2075, 2075, 2076, 2076, 2079,
-     2071, 2080, 2082, 2081, 2083, 2084, 2078, 2080, 2086, 2082,
-     2085, 2085, 2087, 2092, 2090, 2088, 2089, 2086, 2091, 2093,
-
-     2096, 2097, 2107, 2098, 2107, 2084, 2083, 2088, 2089, 2090,
-     2091, 2094, 2101, 2087, 2093, 2098, 2100, 2094, 2104, 2092,
-     2096, 2099, 2099, 2102, 2097, 2108, 2102, 2114, 2103,    0,
-     2094, 2106, 2101, 2103, 2100, 2109, 2106, 2110, 2104, 2112,
-     2109, 2115, 2116, 2108, 2110, 2114, 2118, 2117, 2112, 2117,
-     2115, 2119, 2122, 2121, 2116, 2121, 2124, 2119, 2123, 2123,
-     2129, 2126, 2125, 2126, 2127, 2118, 2122, 2125, 2128, 2127,
-     2130, 2131, 2133, 2128, 2132, 2135, 2134, 2133, 2129, 2136,
-     2132, 2139, 2124, 2140, 2136, 2136, 2137, 2135, 2130, 2134,
-     2143, 2131, 2141, 2141, 2137, 2142, 2142, 2140, 2144, 2146,
-
-     2139, 2145, 2148, 2149, 2146, 2143, 2147, 2145, 2147, 2150,
-     2150, 2149, 2151, 2152, 2152, 2153, 2153, 2154, 2144, 2149,
-     2148, 2156, 2155, 2159, 2151, 2158, 2154, 2155, 2160, 2158,
-     2160, 2161, 2159, 2163, 2164, 2159, 2162, 2165, 2167, 2156,
-     2172, 2162, 2162, 2164, 2171, 2163, 2168, 2173, 2169, 2165,
-     2167, 2168, 2161, 2169, 2174, 2174, 2173, 2171, 2175, 2176,
-     2172, 2177, 2178, 2179, 2182, 2186, 2180, 2181, 2187, 2182,
-     2188, 2184, 2185, 2187, 2195, 2188, 2175, 2176, 2178, 2177,
-     2180, 2189, 2181, 2184, 2185, 2186, 2192, 2194, 2179, 2196,
-     2189, 2197, 2192, 2194, 2198, 2200, 2200, 2195, 2199, 2201,
-
-     2202, 2202, 2203, 2204, 2196, 2192, 2205, 2199, 2201, 2197,
-     2205, 2206, 2207, 2209, 2211, 2210, 2206, 2217, 2212, 2198,
-     2203, 2210, 2204, 2212, 2212, 2207, 2215, 2213, 2214, 2215,
-     2216, 2225, 2209, 2213, 2214, 2222, 2211, 2217, 2216, 2220,
-     2220, 2221, 2221, 2225, 2222, 2223, 2223, 2224, 2224, 2227,
-     2226, 2235, 2228, 2229, 2229, 2227, 2221, 2228, 2230, 2230,
-     2231, 2237, 2234, 2232, 2239, 2231, 2234, 2221, 2226, 2232,
-     2236, 2235, 2240, 2241, 2236, 2242, 2244, 2240, 2243, 2245,
-     2246, 2237, 2247, 2243, 2248, 2249, 2249, 2247, 2250, 2239,
-     2242, 2253, 2250, 2251, 2244, 2245, 2241, 2252, 2254, 2255,
-
-     2246, 2256, 2252, 2259, 2257, 2258, 2248, 2262, 2251, 2257,
-     2263, 2255, 2260, 2260, 2264, 2262, 2254, 2253, 2258, 2265,
-     2256, 2259, 2266, 2267, 2268, 2269, 2272, 2270, 2271, 2263,
-     2278, 2276, 2272, 2264, 2277, 2274, 2278, 2280, 2265, 2270,
-     2279, 2284, 2279, 2268, 2276, 2266, 2269, 2267, 2277, 2271,
-     2274, 2281, 2281, 2282, 2284, 2285, 2283, 2280, 2282, 2283,
-     2286, 2287, 2287, 2288, 2288, 2289, 2291, 2289, 2294, 2285,
-     2290, 2290, 2292, 2286, 2293, 2293, 2300, 2294, 2295, 2295,
-     2294, 2291, 2296, 2296, 2297, 2292, 2299, 2301, 2302, 2297,
-     2305, 2299, 2303, 2303, 2304, 2304, 2300, 2306, 2306, 2307,
-
-     2302, 2308, 2308, 2309, 2315, 2310, 2313, 2301, 2316, 2305,
-     2310, 2311, 2311, 2312, 2312, 2314, 2317, 2307, 2309, 2321,
-     2313, 2315, 2316, 2319, 2314, 2320, 2320, 2323, 2319, 2322,
-     2322, 2324, 2329, 2325, 2326, 2317, 2324, 2326, 2321, 2325,
-     2327, 2327, 2328, 2328, 2330, 2323, 2331, 2333, 2331, 2334,
-     2337, 2329, 2335, 2335, 2338, 2342, 2327, 2339, 2343, 2330,
-     2340, 2344, 2333, 2343, 2340, 2341, 2341, 2345, 2334, 2348,
-     2337, 2350, 2339, 2349, 2342, 2351, 2344, 2338, 2347, 2347,
-     2349, 2352, 2345, 2353, 2354, 2350, 2355, 2355, 2356, 2348,
-     2357, 2358, 2357, 2351, 2358, 2360, 2361, 2356, 2353, 2352,
-
-     2362, 2360, 2363, 2364, 2365, 2362, 2366, 2363, 2361, 2358,
-     2354, 2358, 2368, 2367, 2370, 2371, 2372, 2365, 2367, 2370,
-     2371, 2372, 2373, 2374, 2375, 2376, 2377, 2366, 2364, 2374,
-     2375, 2379, 2381, 2378, 2382, 2380, 2379, 2373, 2368, 2378,
-     2380, 2377, 2383, 2384, 2385, 2383, 2376, 2382, 2388, 2386,
-     2387, 2393, 2384, 2385, 2389, 2390, 2395, 2381, 2386, 2387,
-     2389, 2390, 2388, 2391, 2396, 2397, 2397, 2391, 2398, 2399,
-     2399, 2393, 2400, 2396, 2398, 2403, 2395, 2402, 2399, 2401,
-     2401, 2400, 2402, 2405, 2406, 2407, 2407, 2408, 2412, 2409,
-     2413, 2411,    0, 2416, 2414, 2403, 2416, 2403, 2409, 2405,
-
-     2406, 2418, 2408, 2411, 2412, 2413, 2414, 2417, 2419, 2420,
-     2420, 2426, 2417, 2421, 2421, 2423, 2423, 2426, 2425, 2424,
-     2419, 2418, 2424, 2425, 2427, 2428, 2429, 2429, 2430, 2432,
-     2427, 2431, 2431, 2433, 2428, 2434, 2435, 2435, 2436, 2437,
-     2438, 2432, 2430, 2446, 2436, 2438, 2440, 2433, 2441, 2444,
-     2440, 2441, 2443, 2437, 2434, 2442, 2442, 2443, 2444, 2445,
-     2447, 2448, 2448, 2446, 2447, 2449, 2451, 2452, 2445, 2453,
-     2454, 2451, 2455, 2456, 2457, 2458, 2459, 2456, 2449, 2460,
-     2458, 2462, 2459, 2461, 2461, 2460, 2455, 2452, 2463, 2453,
-     2454, 2464, 2465, 2466, 2457, 2467, 2467, 2465, 2471, 2462,
-
-     2469, 2470, 2472, 2471, 2474, 2473, 2474, 2463, 2472, 2476,
-     2464, 2478, 2469, 2473, 2466, 2479, 2479, 2470, 2476, 2480,
-     2481, 2486, 2480, 2482, 2482, 2478, 2485, 2486, 2487, 2489,
-     2485, 2488, 2488, 2492, 2492, 2494, 2496, 2500, 2489, 2497,
-     2487, 2501, 2500, 2502, 2503, 2509, 2481, 2504, 2510, 2503,
-     2496, 2509, 2504, 2494, 2512, 2497, 2505, 2505, 2507, 2507,
-     2511, 2511, 2513, 2516, 2502, 2518, 2514, 2501, 2510, 2517,
-     2512, 2514, 2517, 2519, 2520, 2520, 2524, 2518, 2522, 2529,
-     2523, 2525, 2516, 2530, 2513, 2519, 2523, 2522, 2527, 2527,
-     2528, 2532, 2532, 2528, 2524, 2535, 2525, 2534, 2529, 2533,
-
-     2533, 2530, 2534, 2536, 2537, 2538, 2539, 2540, 2539, 2541,
-     2538, 2543, 2536, 2535, 2542, 2544, 2543, 2537, 2545, 2546,
-        0, 2540, 2552, 2541, 2546, 2551, 2542, 2547, 2547, 2548,
-     2548, 2549, 2549, 2550, 2550, 2544, 2553, 2551, 2545, 2557,
-     2552, 2553, 2554, 2554, 2555, 2555, 2556, 2556, 2558, 2559,
-     2560, 2557, 2561, 2562, 2563, 2563, 2564, 2565, 2565, 2566,
-     2566, 2559, 2571, 2567, 2568, 2569, 2570, 2573, 2558, 2562,
-     2560, 2574, 2569, 2561, 2567, 2564, 2568, 2576, 2570, 2572,
-     2575, 2575, 2571, 2578, 2572, 2579, 2576, 2573, 2577, 2577,
-     2580, 2574, 2581, 2582, 2584, 2583, 2584, 2587, 2585, 2586,
-
-     2586, 2593, 2591, 2580, 2588, 2579, 2587, 2582, 2589, 2578,
-     2585, 2592, 2594, 2595, 2683, 2594, 2581, 2583, 2683, 2588,
-     2591, 2596, 2605, 2589, 2593, 2597, 2596, 2595, 2598, 2598,
-     2597, 2599, 2599, 2592, 2600, 2600, 2602, 2602, 2604, 2604,
-     2605, 2606, 2607, 2608, 2610, 2611, 2612, 2613, 2614, 2615,
-     2617, 2616, 2606, 2616, 2618, 2619, 2624, 2614, 2608, 2620,
-     2620, 2607, 2623, 2611, 2610, 2622, 2622, 2613, 2612, 2615,
-     2617, 2625, 2618, 2619, 2626, 2626, 2623, 2628, 2624, 2630,
-     2625, 2629, 2629, 2631, 2632, 2633, 2628, 2635, 2634, 2636,
-     2637, 2638, 2633, 2639, 2640, 2640, 2642, 2630, 2641, 2641,
-
-     2639, 2631, 2632, 2634, 2643, 2635, 2637, 2636, 2644, 2648,
-     2638, 2646, 2646, 2649, 2644, 2648, 2642, 2647, 2647, 2650,
-     2651, 2652, 2643, 2653, 2654, 2655,    0, 2656, 2653, 2658,
-     2658, 2649, 2656, 2662, 2650, 2652, 2657, 2665, 2657, 2651,
-     2659, 2664, 2659, 2666, 2654, 2655, 2660, 2660, 2667, 2668,
-     2664, 2670, 2662, 2669, 2668, 2666, 2665, 2671, 2669, 2674,
-     2675, 2676, 2677, 2677, 2676, 2678, 2679, 2682, 2667, 2680,
-     2680, 2670, 2681, 2685, 2687, 2687, 2671, 2686, 2675, 2674,
-     2678, 2686, 2682, 2681, 2679, 2688, 2690, 2691, 2685, 2692,
-     2693, 2693, 2695, 2696, 2700, 2697, 2698, 2698, 2688, 2697,
-
-     2704, 2690, 2696, 2702, 2695, 2699, 2699, 2691, 2702, 2692,
-     2701, 2701, 2703, 2700, 2705, 2706, 2704, 2707, 2707, 2712,
-     2712, 2703, 2713, 2714, 2714, 2715, 2705, 2716, 2717, 2722,
-     2718, 2721, 2721, 2719, 2720, 2706, 2723, 2733, 2715, 2718,
-     2716, 2717, 2719, 2720, 2713, 2725, 2725, 2728, 2729, 2722,
-     2730, 2723, 2728, 2729, 2731, 2732, 2733, 2734, 2737, 2731,
-     2735, 2741, 2739, 2732, 2730, 2740, 2734, 2739, 2735, 2745,
-     2740, 2742, 2742, 2737, 2743, 2743, 2741, 2744, 2746, 2746,
-     2747, 2748, 2744, 2749, 2750, 2751, 2748, 2747, 2745, 2752,
-     2754, 2751, 2753, 2753, 2752, 2755, 2756, 2756, 2757, 2757,
-
-     2755, 2749, 2750, 2760, 2763, 2754, 2761, 2761, 2762, 2763,
-     2763, 2762, 2764, 2765, 2766, 2767, 2760, 2764, 2765, 2768,
-     2769, 2767, 2770, 2768, 2771, 2769, 2772, 2773, 2766, 2774,
-     2775, 2770, 2776, 2777, 2772, 2774, 2775, 2776, 2780, 2771,
-     2779, 2781, 2783, 2780, 2781, 2777, 2785, 2779, 2773, 2788,
-     2786, 2785, 2787, 2789, 2783, 2786, 2790, 2787, 2794, 2791,
-     2792, 2792, 2793, 2794, 2797, 2790, 2789, 2788, 2791, 2798,
-     2799, 2793, 2802, 2803, 2806, 2798, 2799, 2804, 2805, 2805,
-     2807, 2806, 2797, 2808, 2811, 2809, 2810, 2810, 2815, 2813,
-     2816, 2802, 2808, 2803, 2816, 2818, 2804, 2817, 2817, 2807,
-
-     2809, 2819, 2824, 2811, 2813, 2820, 2821, 2819, 2815, 2822,
-     2824, 2820, 2823, 2823, 2825, 2822, 2826, 2828, 2829, 2831,
-     2818, 2826, 2834, 2835, 2821, 2831, 2828, 2832, 2833, 2838,
-     2832, 2829, 2833, 2837, 2837, 2849, 2834,    0, 2835, 2825,
-     2839, 2839, 2840, 2840, 2842, 2842, 2843, 2838, 2844, 2845,
-     2843, 2847, 2847, 2844, 2850, 2849, 2851, 2852, 2845, 2850,
-     2853, 2855, 2852, 2852, 2856, 2856, 2858, 2858, 2851, 2859,
-     2859, 2862, 2853, 2860, 2860, 2861, 2863, 2866, 2861, 2865,
-     2865, 2855, 2868, 2872, 2862, 2869, 2869, 2870, 2870, 2863,
-     2871, 2871, 2873, 2873, 2874, 2866, 2875, 2876, 2872, 2877,
-
-     2878, 2878, 2868, 2882, 2879, 2877, 2886, 2874, 2879, 2882,
-     2883, 2876, 2885, 2887, 2875, 2883, 2888, 2885, 2885, 2889,
-     2890, 2891, 2901, 2892, 2955, 2889, 2890, 2892, 2955, 2886,
-     2893, 2893, 2896, 2887, 2898, 2899, 2888, 2896, 2899, 2904,
-     2902, 2906, 2898, 2902, 2903, 2903, 2891, 2901, 2905, 2907,
-     2908, 2909, 2909, 2905, 2910, 2911, 2904, 2904, 2911, 2906,
-     2912, 2913, 2914, 2917, 2908, 2924, 2911, 2915, 2910, 2907,
-     2914, 2916, 2915, 2915, 2912, 2926, 2916, 2916, 2918, 2918,
-     2913, 2924, 2917, 2919, 2919, 2920, 2920, 2921, 2921, 2922,
-     2922, 2923, 2923, 2925, 2927, 2926, 2928, 2929, 2925, 2930,
-
-     2931, 2933, 2929, 2932, 2934, 2931, 2936, 2936, 2937, 2937,
-     2928, 2938, 2932, 2939, 2938, 2941, 2941, 2952, 2930, 2942,
-     2927, 2933, 2943, 2943, 2934, 2944, 2942, 2946, 2946, 2947,
-     2944, 2939, 2948, 2949, 2950, 2952, 2953, 2953, 2947, 2954,
-     2954, 2948, 2949, 2950, 2956, 2957, 2958, 2959, 2961, 2960,
-     2962, 2973, 2963, 2956, 2960, 2960, 2963, 2958, 2967, 2962,
-     2969, 2961, 2959, 2967, 2957, 2968, 2968, 2971, 2971, 2972,
-     2974, 2976, 2976, 2977, 2969, 2978, 2973, 2982, 2986, 2983,
-     2984, 2989, 2977, 2972, 2983, 2987, 2991, 2978, 2974, 2984,
-     2993, 2987, 2994, 2989, 2996, 2993, 2998, 2994, 2986, 2995,
-
-     2995, 2998, 2982, 2996, 2999, 3000, 3007, 2991, 3001, 3001,
-     3003, 3003, 3001, 3004, 3004, 3005, 3005, 2999, 3006, 3000,
-     3008, 3014, 3014, 3009, 3011, 3015, 3007, 3006, 3009, 3012,
-     3011, 3013, 3016, 3017, 3012, 3018, 3013, 3019, 3021, 3008,
-     3018, 3020, 3028, 3015, 3016, 3022, 3022, 3020, 3024, 3027,
-     3027, 3025, 3024, 3026, 3017, 3019, 3025, 3029, 3026, 3030,
-     3032, 3028, 3036, 3021, 3034, 3034, 3037, 3039, 3038, 3040,
-     3041, 3039, 3029, 3042, 3030, 3036, 3043, 3044, 3040, 3037,
-     3032, 3038, 3044, 3045, 3043, 3047, 3041, 3046, 3046, 3048,
-     3049, 3051, 3042, 3057, 3047, 3050, 3050, 3054, 3054, 3055,
-
-     3055, 3059, 3059, 3045, 3061, 3062, 3063, 3048, 3064, 3069,
-     3051, 3063, 3065, 3070, 3057, 3072, 3049, 3065, 3068, 3068,
-     3061, 3062, 3070, 3073, 3064, 3071, 3075, 3075, 3077, 3069,
-     3076, 3071, 3078, 3078, 3080, 3082, 3084, 3083, 3072, 3086,
-     3080, 3084, 3073, 3083, 3076, 3087, 3087, 3077, 3088, 3088,
-     3089, 3090, 3091, 3091, 3093, 3082, 3092, 3094, 3095, 3096,
-     3098, 3086, 3097, 3093, 3095, 3089, 3100, 3092, 3099, 3099,
-     3101, 3090, 3091, 3101, 3097, 3107, 3102, 3094, 3096, 3102,
-     3098, 3100, 3103, 3103, 3108, 3109, 3112, 3107, 3110, 3110,
-     3111, 3109, 3112, 3111, 3113, 3115, 3116, 3116, 3117, 3118,
-
-     3115, 3119, 3120, 3117, 3108, 3121, 3121, 3119, 3124, 3123,
-     3125, 3126, 3113, 3127, 3127, 3128, 3129, 3144, 3118, 3120,
-     3120, 3123, 3130, 3144, 3126, 3136, 3124, 3132, 3132, 3133,
-     3133, 3130, 3129, 3135, 3128, 3125, 3134, 3134, 3135, 3136,
-     3137, 3138, 3138, 3139, 3139, 3137, 3140, 3140, 3141, 3141,
-     3142, 3143, 3145, 3147, 3147, 3150, 3152, 3145, 3153, 3155,
-     3154, 3156, 3156, 3142, 3158, 3158, 3159, 3160, 3161, 3162,
-     3164, 3164, 3165, 3165, 3150, 3163, 3167, 3143, 3152, 3154,
-     3153, 3155, 3161, 3169, 3163, 3168, 3160, 3170, 3171, 3162,
-     3174, 3168, 3159, 3171, 3167, 3175, 3175, 3177, 3177, 3178,
-
-     3179, 3180, 3182, 3169, 3178, 3181, 3170, 3180, 3183, 3183,
-     3182, 3174, 3186, 3184, 3179, 3187, 3186, 3181, 3184, 3188,
-     3187, 3189, 3190, 3191, 3192, 3194, 3195, 3190, 3196, 3197,
-     3192, 3200, 3199, 3194, 3201, 3191, 3202, 3203, 3205, 3188,
-     3206, 3189, 3203, 3205, 3210, 3195,    0, 3200, 3196, 3197,
-     3199, 3201, 3201, 3207, 3212, 3211, 3208, 3202, 3211, 3207,
-     3206, 3208, 3216, 3216, 3210, 3217, 3217, 3212, 3218, 3223,
-     3223, 3224, 3218, 3225, 3226, 3226, 3224, 3228, 3228, 3229,
-     3229, 3233, 3229, 3230, 3230, 3233, 3230, 3231, 3231, 3235,
-     3232, 3232, 3225, 3232, 3235, 3236, 3237, 3237, 3238, 3239,
-
-     3242, 3242, 3243, 3244, 3236, 3245, 3246, 3246, 3247, 3250,
-     3245, 3251, 3253, 3239, 3254, 3252, 3238, 3256, 3251, 3252,
-     3257, 3253, 3243, 3244, 3259, 3257, 3258, 3258, 3247, 3254,
-     3260, 3260, 3263, 3259, 3250, 3256, 3261, 3261, 3262, 3262,
-     3264, 3265, 3268, 3266, 3269, 3264, 3267, 3263, 3266, 3266,
-     3265, 3270, 3267, 3265, 3273, 3271, 3272, 3274, 3274, 3269,
-     3271, 3272, 3275, 3276, 3277, 3277, 3279, 3268, 3275, 3276,
-     3278, 3278, 3270, 3273, 3280, 3283, 3283, 3285, 3285, 3280,
-     3286, 3279, 3289, 3289, 3290, 3290, 3291, 3291, 3298, 3286,
-     3292, 3292, 3294, 3294, 3295, 3295, 3296, 3296, 3297, 3297,
-
-     3300, 3301, 3301, 3302, 3302, 3304, 3303, 3305, 3310, 3300,
-     3307, 3307, 3308, 3311, 3298, 3303, 3312, 3304, 3309, 3309,
-     3313, 3313, 3316, 3310, 3314, 3314, 3311, 3305, 3312, 3317,
-     3317, 3308, 3320, 3321, 3322, 3324, 3321, 3316, 3323, 3323,
-     3326, 3327, 3328, 3326, 3329, 3330, 3332, 3327, 3331, 3329,
-     3320, 3334, 3335, 3324, 3338, 3339, 3328, 3334, 3338, 3342,
-     3322, 3335, 3332, 3351, 3330, 3355, 3331, 3361, 3351, 3352,
-     3339, 3364, 3352, 3356, 3356, 3357, 3357, 3362, 3355, 3359,
-     3359, 3366, 3368, 3363, 3370, 3342, 3362, 3363, 3369, 3370,
-     3361, 3364, 3371, 3372, 3371, 3366, 3373, 3373, 3374, 3369,
-
-     3375, 3377, 3376, 3378, 3380, 3368, 3379, 3382, 3372, 3383,
-     3381, 3374, 3382, 3380, 3385, 3385, 3386, 3377, 3384, 3375,
-     3376, 3379, 3381, 3384, 3387, 3391, 3392, 3400, 3378, 3387,
-     3383, 3393, 3393, 3394, 3395, 3395, 3386, 3396, 3396, 3391,
-     3397, 3397, 3394, 3398, 3398, 3399, 3392, 3400, 3401, 3402,
-     3403, 3401, 3404, 3405, 3402, 3403, 3406, 3407, 3408, 3411,
-     3409, 3415, 3406, 3416, 3399, 3409, 3410, 3410, 3405, 3419,
-     3408, 3407, 3412, 3412, 3414, 3414, 3415, 3404, 3421, 3411,
-     3417, 3417, 3416, 3426, 3419, 3424, 3424, 3425, 3425, 3427,
-     3430, 3426, 3428, 3429, 3431, 3432, 3421, 3433, 3428, 3429,
-
-     3434, 3434, 3433, 3439, 3430, 3436, 3436, 3431, 3427, 3440,
-     3445, 3442, 3443, 3446, 3432, 3447, 3443, 3450, 3446, 3448,
-     3449, 3451, 3452, 3456, 3439, 3442, 3451, 3452, 3457, 3440,
-     3445, 3458, 3448, 3449, 3447, 3461, 3450, 3453, 3453, 3459,
-     3459, 3461, 3460, 3456, 3462, 3462, 3457, 3460, 3463, 3464,
-     3458, 3465, 3466, 3463, 3464, 3467, 3465, 3469, 3469, 3470,
-     3474, 3467, 3471, 3471, 3470, 3473, 3475, 3476, 3477, 3473,
-     3478, 3466, 3479, 3475, 3487, 3480, 3478, 3482, 3482, 3474,
-     3484, 3484, 3488, 3485, 3486, 3489, 3476, 3477, 3480, 3486,
-     3492, 3479, 3485, 3487, 3491, 3485, 3490, 3490, 3489, 3491,
-
-     3494, 3488, 3496, 3492, 3495, 3495, 3497, 3497, 3498, 3498,
-     3499, 3500, 3501, 3502, 3502, 3499,    0, 3503, 3500, 3505,
-     3505, 3496, 3503, 3504, 3508, 3504, 3494, 3506, 3507, 3510,
-     3513, 3501, 3509, 3517, 3506, 3507, 3515, 3509, 3512, 3512,
-     3516, 3515, 3518, 3508, 3522, 3516, 3519, 3519, 3510, 3513,
-     3521, 3521, 3517, 3523, 3524, 3524, 3525, 3525, 3526, 3528,
-     3528, 3518, 3530, 3522, 3536, 3526, 3529, 3529, 3532, 3530,
-     3535, 3537, 3523, 3532,    0, 3535, 3538, 3538, 3539, 3539,
-        0,    0,    0, 3536,    0,    0,    0,    0,    0,    0,
-     3537, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3544, 3544,
-
-     3544, 3544, 3544, 3544, 3544, 3545, 3545, 3545, 3545, 3545,
-     3545, 3545, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3547,
-     3547, 3547, 3547, 3547, 3547, 3547, 3548, 3548, 3548, 3548,
-     3548, 3548, 3548, 3549, 3549, 3549, 3549, 3549, 3549, 3549,
-     3551, 3551,    0, 3551, 3551, 3551, 3551, 3552, 3552,    0,
-        0,    0, 3552, 3552, 3553, 3553,    0,    0, 3553,    0,
-     3553, 3554,    0,    0,    0,    0,    0, 3554, 3555, 3555,
-        0,    0,    0, 3555, 3555, 3556,    0,    0,    0,    0,
-        0, 3556, 3557, 3557,    0, 3557, 3557, 3557, 3557, 3558,
-        0,    0,    0,    0,    0, 3558, 3559, 3559,    0,    0,
-
-        0, 3559, 3559, 3560, 3560,    0, 3560, 3560, 3560, 3560,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542,
-     3542
+     1712, 1712, 1703, 1707, 1702, 1704, 1713, 1714, 1715, 1715,
+
+     1716, 1716, 1717, 1715, 1719, 1718, 1714, 1711, 1720, 1710,
+     1718, 1717, 1713, 1721, 1717, 1716, 1724, 1725, 1722, 1726,
+     1727, 1728, 1719, 1722, 1722, 1727, 1730, 1729, 1732, 1720,
+     1724, 1721, 1725, 1729, 1732, 1728, 1731, 1731, 1733, 1734,
+     1735, 1726, 1736, 1733, 1730, 1738, 1735, 1739, 1736, 1740,
+     1741, 1742, 1743, 1734, 1742, 1740, 1747, 1748, 1743, 1749,
+     1742, 1739, 1750, 1741, 1751, 1738, 1753, 1756, 1752, 1751,
+     1750, 1754, 1755, 1757,    0, 1747, 1748, 1752, 1749, 1753,
+     1754, 1756, 1758, 1758, 1759, 1755, 1760, 1757, 1761, 1763,
+     1759, 1765, 1760, 1762, 1762, 1764, 1766, 1766, 1767, 1768,
+
+     1769, 1761, 1770, 1771, 1758, 1768, 1773, 1773, 1774, 1763,
+     1765, 1767, 1775, 1764, 1776, 1777, 1775, 1780, 1770, 1776,
+     1778, 1771, 1769, 1781, 1779, 1778, 1780, 1783, 1774, 1779,
+     1784, 1785, 1786, 1787, 1785, 1777, 1788, 1788, 1783, 1784,
+     1789, 1790, 1791, 1793, 1786, 1794, 1781, 1799, 1787, 1792,
+     1792, 1795, 1794, 1790, 1796, 1798, 1800, 1793, 1801, 1789,
+     1802, 1791, 1800, 1795, 1809, 1803, 1796, 1799, 1804, 1804,
+     1801, 1803, 1805, 1809, 1798, 1805, 1806, 1806, 1802, 1808,
+     1810, 1811, 1811, 1812, 1808, 1813, 1810, 1813, 1814, 1815,
+     1816, 1814, 1817, 1818, 1819, 1812, 1820, 1821, 1823, 1819,
+
+     1824, 1820, 1822, 1826, 1829, 1824, 1821, 1825,    0, 1815,
+     1817, 1818, 1816, 1823, 1822, 1827, 1825, 1828, 1832, 1829,
+     1827, 1834, 1828, 1826, 1830, 1830, 1831, 1827, 1835, 1825,
+     1836, 1837, 1831, 1838, 1839, 1838, 1840, 1840, 1843, 1832,
+     1834, 1841, 1841, 1842, 1842, 1846, 1836, 1835, 1839, 1847,
+     1839, 1837, 1844, 1844, 1845, 1845, 1848, 1850, 1843, 1849,
+     1849, 1850, 1851, 1854, 1852, 1855, 1846, 1852, 1851, 1854,
+     1847, 1857, 1856, 1858, 1860, 1860, 1857, 1848, 1856, 1859,
+     1861, 1862, 1859, 1855, 1863, 1863, 1862, 1864, 1865, 1866,
+     1867, 1868, 1868, 1870, 1866, 1867, 1869, 1879, 1858, 1870,
+
+     1861, 1869, 1864, 1871, 1872, 1873, 1874, 1875, 1876, 1865,
+     1880, 1879,    0, 1875, 1878, 1871, 1871, 1871, 1883, 1878,
+     1878, 1882, 1871, 1873, 1872, 1880, 1874, 1881, 1876, 1881,
+     1884, 1885, 1882, 1883, 1886, 1887, 1884, 1888, 1888, 1889,
+     1885, 1890, 1890, 1891, 1892, 1893, 1893, 1894, 1894, 1895,
+     1898, 1898, 1899, 1900, 1886, 1902, 1887, 1903, 1905, 1906,
+     1906, 1904, 1900, 1891, 1902, 1889, 1892, 1904, 1907, 1895,
+     1908, 1910, 1909, 1911, 1905, 1912, 1912, 1899, 1903, 1909,
+     1910, 1913, 1914, 1917, 1916, 1908, 1918, 1920, 1917, 1907,
+     1916, 1919, 1918, 1924, 1920, 1921, 1929, 1925, 1914, 1911,
+
+     1922, 1921, 1922, 1925, 1926, 1926, 1928, 1913, 1927, 1930,
+     1932, 1919, 1924, 1927, 1931, 1928, 1929, 1931, 1933, 1934,
+     1935, 1933, 1932, 1936, 1936, 1937, 1938, 1939, 1930, 1940,
+     1941, 1937, 1938, 1943, 1941, 1944, 1945, 1934, 1946, 1946,
+     1947, 1945, 1948, 1949, 1940, 1952, 1935, 1939, 1951, 1952,
+     1941, 1953, 1953, 1943, 1954, 1957, 1955, 1944, 1949, 1957,
+     1954, 1948, 1956, 1956, 1947, 1955, 1958, 1951, 1959, 1959,
+     1960, 1961, 1968, 1962, 1963, 1964, 1965, 1958, 1966, 1963,
+     1967, 1971, 1958, 1970, 1969, 1961, 1967, 1978, 1970, 1974,
+     1968, 1960, 1962, 1974, 1971, 1964, 1965, 1976, 1966, 1969,
+
+     1972, 1972, 1973, 1973, 1977, 1986, 1976, 1978, 1979, 1979,
+     1981, 1981, 1982, 1983,    0, 1977, 1985, 1982, 1982, 1983,
+     1977, 1987, 1985, 1988, 1989, 1991, 1987, 1993, 1992, 1995,
+     1989, 1986, 1992, 1994, 1994, 1988, 1996, 1991, 1997, 1993,
+     1998, 2001, 1996, 1999, 1999, 2000, 1998, 2002, 2006, 2074,
+     2003, 2005, 2002, 2007, 1995, 2013, 2009, 2074, 2007, 2009,
+     1997, 2001, 2003, 2005, 2000, 2010, 2010, 2006, 2011, 2011,
+     2012, 2012, 2014, 2015, 2017, 2013, 2016, 2018, 2014, 2015,
+     2017, 2016, 2020, 2023, 2026, 2022, 2018, 2020, 2022, 2024,
+     2024, 2027, 2028, 2029, 2029, 2023, 2026, 2028, 2030, 2031,
+
+     2032, 2034, 2034, 2027, 2031, 2032, 2033, 2030, 2035, 2033,
+     2036, 2037, 2038, 2039, 2042, 2040, 2041, 2039, 2043, 2036,
+     2040, 2044, 2041, 2045, 2047, 2047, 2048, 2043, 2035, 2037,
+     2050, 2038, 2042, 2049, 2051, 2051, 2047, 2045, 2052, 2044,
+     2053, 2054, 2049, 2055, 2048, 2056, 2061, 2052, 2055, 2061,
+     2050, 2062, 2053, 2059, 2059, 2063, 2064, 2068, 2056, 2066,
+     2069, 2067, 2054, 2068, 2070, 2070, 2071, 2062, 2071, 2072,
+     2079, 2063, 2064, 2088, 2066, 2067, 2084, 2069, 2073, 2073,
+     2076, 2076, 2077, 2077, 2080, 2081, 2082, 2072, 2083, 2085,
+     2080, 2081, 2087, 2079, 2088, 2083, 2086, 2086, 2084, 2089,
+
+     2082, 2087, 2090, 2091, 2092, 2093, 2094, 2097, 2099, 2085,
+     2098, 2089, 2101, 2095, 2090, 2095, 2092, 2102, 2091, 2095,
+     2099, 2094, 2100, 2100, 2104, 2103, 2105, 2097, 2103, 2104,
+     2101, 2093, 2095, 2098, 2107, 2109, 2108, 2102, 2108, 2107,
+     2110, 2111, 2113, 2115, 2119, 2110, 2105, 2116, 2111, 2120,
+     2117, 2113, 2118, 2109, 2118, 2120, 2116, 2122, 2123, 2122,
+     2125, 2115, 2117, 2119, 2124, 2124, 2126, 2127, 2128, 2127,
+     2129, 2126, 2123, 2128, 2130, 2129, 2131, 2132, 2133, 2136,
+     2134, 2140, 2135, 2137, 2133, 2134, 2125, 2141, 2137, 2137,
+     2138, 2136, 2130, 2145, 2131, 2135, 2144, 2132, 2138, 2146,
+
+     2140, 2141, 2142, 2142, 2143, 2143, 2147, 2144, 2145, 2148,
+     2150, 2149, 2147, 2149, 2148, 2151, 2152, 2152, 2153, 2146,
+     2154, 2154, 2157, 2151, 2155, 2155, 2156, 2157, 2150, 2158,
+     2153, 2151, 2160, 2161, 2163, 2156, 2160, 2162, 2164, 2162,
+     2165, 2166, 2161, 2164, 2164, 2161, 2167, 2158, 2169, 2170,
+     2166, 2171, 2165, 2173, 2170, 2163, 2171, 2174, 2167, 2175,
+     2169, 2176, 2176, 2177, 2178, 2179, 2173, 2181, 2175, 2180,
+     2182, 2183,    0, 2184, 2188, 2186, 2187, 2174, 2184, 2197,
+     2191, 2177, 2178, 2179, 2182, 2180, 2183, 2186, 2187, 2191,
+     2189, 2190, 2181, 2194, 2188, 2189, 2190, 2196, 2198, 2194,
+
+     2199, 2200, 2197, 2196, 2205, 2201, 2202, 2202, 2203, 2204,
+     2204, 2206, 2194, 2198, 2201, 2207, 2208, 2203, 2199, 2207,
+     2209, 2208, 2205, 2211, 2213, 2212, 2200, 2219,    0, 2214,
+     2206, 2212, 2215, 2209, 2214, 2214, 2217, 2216, 2215, 2217,
+     2218, 2228, 2211, 2216, 2222, 2222, 2213, 2219, 2218, 2223,
+     2223, 2224, 2225, 2225, 2226, 2226, 2227, 2229, 2241, 2228,
+     2224, 2230, 2233, 2229, 2223, 2237, 2230, 2233, 2227, 2231,
+     2231, 2232, 2232, 2234, 2236, 2223, 2238, 2239, 2236, 2234,
+     2238, 2242, 2243, 2241, 2244, 2237, 2242, 2245, 2246, 2248,
+     2249, 2247, 2245, 2250, 2252, 2249, 2253, 2239, 2252, 2244,
+
+     2251, 2251, 2255, 2254, 2256, 2243, 2246, 2247, 2254, 2248,
+     2258, 2253, 2257, 2259, 2260, 2250, 2261, 2264, 2259, 2262,
+     2262, 2265, 2256, 2266, 2257, 2264, 2267, 2260, 2255, 2258,
+     2268, 2269, 2270, 2271, 2261, 2272, 2273, 2274, 2305, 2278,
+     2265, 2276, 2266, 2274, 2279, 2267, 2281, 2272, 2281, 2282,
+     2305, 2270, 2278, 2268, 2271, 2269, 2276, 2273, 2279, 2280,
+     2283, 2283, 2284, 2285, 2286, 2280, 2285, 2284, 2287, 2282,
+     2288, 2289, 2289, 2290, 2290, 2293, 2291, 2286, 2291, 2292,
+     2292, 2294, 2287, 2288, 2295, 2295, 2296, 2296, 2297, 2303,
+     2293, 2298, 2298, 2300, 2294, 2299, 2299, 2297, 2300, 2302,
+
+     2297, 2304, 2306, 2306, 2302, 2307, 2307, 2308, 2312, 2303,
+     2309, 2309, 2310, 2311, 2311, 2313, 2314, 2314, 2315, 2315,
+     2313, 2304, 2316, 2312, 2317, 2318, 2308, 2319, 2320, 2322,
+     2310, 2323, 2323, 2317, 2322, 2324, 2316, 2325, 2325, 2326,
+     2327, 2319, 2318, 2328, 2332, 2327, 2333, 2320, 2329, 2328,
+     2336, 2329, 2330, 2330, 2324, 2331, 2331, 2326, 2334, 2337,
+     2334, 2333, 2340, 2332, 2341, 2336, 2338, 2338, 2330, 2342,
+     2343, 2344, 2345, 2345, 2346, 2344, 2347, 2352, 2337, 2341,
+     2348, 2347, 2340, 2349, 2353, 2343, 2351, 2351, 2354, 2355,
+     2356, 2353, 2342, 2346, 2357, 2348, 2358, 2352, 2349, 2359,
+
+     2359, 2360, 2354, 2361, 2365, 2361, 2364, 2355, 2356, 2357,
+     2360, 2362, 2364, 2366, 2362, 2367, 2365, 2368, 2366, 2369,
+     2367, 2371, 2358, 2370, 2372, 2374, 2371, 2380, 2375, 2362,
+     2374, 2362, 2369, 2375, 2376, 2378, 2377, 2379, 2381, 2376,
+     2382, 2378, 2368, 2379, 2370, 2385, 2382, 2383, 2380, 2384,
+     2372, 2377, 2383, 2381, 2384, 2386, 2387, 2388, 2389, 2387,
+     2390, 2392, 2391, 2397, 2399, 2400, 2388, 2389, 2386, 2390,
+     2385, 2391, 2393, 2394, 2400, 2392, 2395,    0, 2393, 2394,
+     2395, 2401, 2401, 2397, 2399, 2402, 2403, 2403, 2404, 2405,
+     2405, 2402, 2407, 2406, 2409, 2403, 2412, 2404, 2406, 2410,
+
+     2411, 2411, 2416, 2421, 2413, 2415, 2417, 2418, 2421, 2422,
+     2409, 2412, 2407, 2413, 2407, 2410, 2423, 2415, 2416, 2418,
+     2420, 2417,    0, 2420, 2424, 2424, 2425, 2425, 2423, 2422,
+     2427, 2427, 2428, 2429, 2430, 2428, 2431, 2432, 2429, 2434,
+     2430, 2437, 2431, 2433, 2433, 2436, 2432, 2435, 2435, 2438,
+     2439, 2439, 2440, 2434, 2442, 2437, 2441, 2436, 2440, 2442,
+     2444, 2450, 2445, 2448, 2444, 2445, 2446, 2446, 2438, 2447,
+     2441, 2449, 2448, 2451, 2447, 2452, 2452, 2451, 2453, 2455,
+     2449, 2450, 2456, 2457, 2455, 2458, 2459, 2461, 2460, 2462,
+     2463, 2453, 2460, 2464, 2462, 2466, 2463, 2465, 2465, 2464,
+
+     2459, 2467, 2456, 2457, 2468, 2458, 2469, 2461, 2470, 2471,
+     2471, 2469, 2473, 2466, 2474, 2478, 2475, 2478, 2477, 2476,
+     2467, 2475, 2480, 2468, 2473, 2476, 2477, 2482, 2486, 2470,
+     2474, 2480, 2483, 2483, 2484, 2485, 2492, 2484, 2485, 2487,
+     2487, 2482, 2490, 2491, 2493, 2493, 2490, 2494, 2492, 2491,
+     2497, 2497, 2499, 2501, 2486, 2502, 2494, 2505, 2506, 2507,
+     2508, 2509, 2505, 2510, 2510, 2508, 2509, 2501, 2512, 2512,
+     2499, 2502, 2514, 2515, 2516, 2516, 2517, 2518, 2514, 2521,
+     2507, 2519, 2522, 2523, 2506, 2522, 2519, 2527, 2524, 2525,
+     2525, 2528, 2517, 2515, 2530, 2523, 2527, 2528, 2521, 2518,
+
+     2524, 2529, 2531, 2533, 2533, 2534, 2535, 2529, 2534, 2536,
+     2538, 2538, 2530, 2539, 2539, 2540, 2541, 2531, 2543, 2542,
+     2540, 2544, 2545, 2546, 2545, 2535, 2544, 2536, 2542, 2547,
+     2548, 2543, 2550, 2549, 2541, 2551, 2552, 2546, 2549, 2553,
+     2553, 2552, 2548, 2547, 2554, 2554, 2555, 2555, 2556, 2556,
+     2557, 2558, 2550, 2559, 2563, 2551, 2560, 2560, 2559, 2561,
+     2561, 2564, 2557, 2562, 2562, 2565, 2563, 2566, 2567, 2558,
+     2568, 2569, 2569, 2570, 2571, 2571, 2574, 2565, 2572, 2572,
+     2573, 2564, 2576, 2575, 2577, 2579, 2568, 2566, 2574, 2567,
+     2575, 2573, 2570, 2578, 2576, 2580, 2581, 2581, 2578, 2582,
+
+     2583, 2583, 2584, 2585, 2577, 2579, 2586, 2587, 2582, 2591,
+     2588, 2589, 2590, 2593, 2590, 2580, 2592, 2592, 2597, 2586,
+     2594, 2591, 2593, 2585, 2588, 2595, 2598, 2599, 2584, 2600,
+     2601, 2587, 2600, 2589, 2602, 2594, 2597, 2603, 2612, 2602,
+     2595, 2611, 2603, 2613, 2601, 2604, 2604, 2616, 2598, 2612,
+     2599, 2605, 2605, 2606, 2606, 2608, 2608, 2610, 2610, 2611,
+     2614, 2617, 2613, 2618, 2619, 2620, 2621, 2616, 2622, 2623,
+     2622, 2630, 2624, 2625, 2620, 2614, 2626, 2626, 2629, 2617,
+     2628, 2628, 2632, 2632, 2619, 2618, 2621, 2631, 2634, 2623,
+     2624, 2625, 2629, 2630, 2635, 2635, 2631, 2634, 2636, 2637,
+
+     2638, 2639, 2641, 2642, 2640, 2644, 2643, 2645, 2639, 2646,
+     2646, 2647, 2647, 2648, 2645,    0, 2636, 2637, 2638, 2640,
+     2641, 2642, 2643, 2649, 2644, 2650, 2652, 2652, 2653, 2653,
+     2654, 2650, 2655, 2648, 2656, 2657, 2654, 2658, 2659, 2660,
+     2662, 2649, 2661, 2659, 2664, 2669, 2664, 2663, 2672, 2656,
+     2655, 2658, 2663, 2661, 2657, 2665, 2665, 2667, 2667, 2660,
+     2662, 2666, 2671, 2666, 2669, 2673, 2674, 2672, 2675, 2676,
+     2677, 2671, 2678, 2675, 2676, 2681, 2682, 2673, 2683, 2684,
+     2684, 2683, 2685, 2686, 2687, 2687, 2674, 2688, 2689, 2690,
+     2677, 2678, 2692, 2690, 2682, 2681, 2693, 2685, 2688, 2696,
+
+     2694, 2686, 2693, 2689, 2694, 2695, 2695, 2692, 2698, 2699,
+     2700, 2704, 2696, 2701, 2701, 2703, 2708, 2705, 2706, 2706,
+     2704, 2705, 2712, 2698, 2707, 2707, 2714, 2703, 2710, 2699,
+     2700, 2709, 2709, 2710, 2711, 2708, 2713, 2721, 2712, 2715,
+     2715, 2720, 2720, 2711, 2722, 2722, 2714, 2723, 2713, 2724,
+     2725, 2730, 2726, 2729, 2729, 2727, 2728, 2731,    0, 2721,
+     2723, 2726, 2724, 2725, 2727, 2728, 2733, 2733, 2736, 2737,
+     2738, 2730, 2731, 2736, 2737, 2739, 2741, 2740, 2742, 2745,
+     2739, 2743, 2749, 2747, 2738, 2740, 2748, 2742, 2747, 2743,
+     2753, 2748, 2750, 2750, 2745, 2741, 2752, 2749, 2751, 2751,
+
+     2755, 2752, 2754, 2754, 2757, 2756, 2758, 2755, 2759, 2753,
+     2756, 2760, 2761, 2761, 2759, 2762, 2760,    0, 2763, 2764,
+     2764, 2768, 2757, 2763, 2758, 2765, 2765, 2769, 2769, 2770,
+     2762, 2771, 2770, 2772, 2768, 2773, 2771, 2771, 2772, 2774,
+     2773, 2775, 2776, 2777, 2779, 2778, 2776, 2775, 2777, 2780,
+     2781, 2784, 2782, 2774, 2778, 2783, 2784, 2780, 2782, 2779,
+     2785, 2783, 2787, 2788, 2789, 2791, 2796, 2789, 2788, 2787,
+     2793, 2781, 2785, 2794, 2795, 2793, 2797, 2791, 2794, 2795,
+     2805, 2798, 2799, 2801, 2796, 2800, 2800, 2810, 2802, 2797,
+     2798, 2799, 2801, 2802, 2806, 2807, 2811, 2814, 2805, 2812,
+
+     2806, 2807, 2813, 2813, 2814, 2815, 2810, 2817, 2816, 2820,
+     2818, 2819, 2819, 2824, 2822, 2825, 2811, 2816, 2812, 2825,
+     2826, 2826, 2817, 2827, 2815, 2818, 2828, 2830, 2820, 2822,
+     2829, 2831, 2828, 2824, 2832, 2832, 2829, 2831, 2833, 2834,
+     2837, 2838, 2835, 2859, 2840, 2830, 2833, 2835, 2827, 2837,
+     2840, 2843, 2841, 2842, 2838, 2841, 2845, 2842, 2844, 2844,
+     2847, 2847, 2848, 2859, 2834, 2843, 2849, 2849, 2850, 2850,
+     2853, 2845, 2852, 2852, 2853, 2855, 2854, 2857, 2857, 2861,
+     2848, 2854, 2860, 2862, 2855, 2863, 2865, 2860, 2862, 2862,
+     2872, 2861, 2866, 2866, 2868, 2868, 2873, 2863, 2869, 2869,
+
+     2870, 2870, 2871, 2872, 2876, 2871, 2865, 2875, 2875, 2873,
+     2878, 2879, 2879, 2880, 2880, 2881, 2881, 2882, 2883, 2883,
+     2884, 2885, 2876, 2886, 2889, 2887, 2888, 2888, 2889, 2892,
+     2878, 2887, 2882, 2884, 2896, 2892, 2893, 2886, 2895, 2885,
+     2897, 2893, 2898, 2895, 2895, 2899, 2900, 2901, 2911, 2902,
+     2908, 2899, 2900, 2902, 2903, 2903, 2906, 2896, 2908, 2914,
+     2897, 2906, 2898, 2909, 2912, 2915, 2909, 2912, 2913, 2913,
+     2915, 2916, 2901, 2911, 2917, 2934, 2914, 2914, 2918, 2919,
+     2919, 2920, 2921, 2922, 2923, 2921, 2928, 2928, 2924, 2916,
+     2927, 2934, 2918, 2921, 2917, 2920, 2924, 2922, 2937, 2925,
+
+        0, 2926, 2936, 2923, 2925, 2925, 2926, 2926, 2940, 2927,
+     2929, 2929, 2930, 2930, 2931, 2931, 2932, 2932, 2933, 2933,
+     2935, 2938, 2936, 2939, 2937, 2935, 2941, 2940, 2939, 2942,
+     2943, 2941, 2944, 2946, 2946, 2938, 2947, 2947, 2942, 2948,
+     2949, 2950, 2948, 2952, 2952, 2963, 2949, 2953, 2954, 2954,
+     2943, 2955, 2944, 2958, 2953, 2959, 2955, 2957, 2957, 2950,
+     2960, 2961, 2958, 2963, 2959, 2964, 2964, 2965, 2965, 2960,
+     2961, 2966, 2967, 2968, 2969, 2966, 2970, 2971, 2974,    0,
+     2973, 2967, 2971, 2971, 2975, 2969, 2981, 2974, 2975, 2979,
+     2984, 2970, 2968, 2973, 2979, 2980, 2980, 2983, 2983, 2985,
+
+     2981, 2986, 2988, 2988, 2984, 2989, 2990, 2994, 2995, 2998,
+     2999, 2996, 3003, 2995, 2989, 3001, 2999, 3005, 2990, 2986,
+     2996, 3006, 3005, 3010, 2985, 3008, 3006, 3001, 3010, 2998,
+     3007, 3007, 2994, 3003, 3008, 3011, 3012, 3013, 3013, 3015,
+     3015, 3013, 3016, 3016, 3017, 3017, 3018, 3019, 3011, 3020,
+     3012, 3021, 3023, 3027, 3024, 3018, 3021, 3025, 3023, 3024,
+     3026, 3026, 3025, 3028, 3029, 3030, 3031, 3019, 3020, 3033,
+     3030, 3027, 3032, 3034, 3034, 3028, 3036, 3037, 3032, 3040,
+     3036, 3038, 3037, 3044, 3031, 3029, 3038, 3039, 3039, 3041,
+     3042, 3046, 3046, 3048, 3033, 3049, 3050, 3051, 3040, 3053,
+
+     3054, 3051, 3052, 3044, 3041, 3042, 3048, 3056, 3049, 3050,
+     3055, 3052, 3056, 3057, 3059, 3053, 3058, 3058, 3055, 3054,
+     3060, 3061, 3063, 3059, 3062, 3062, 3066, 3066, 3067, 3068,
+     3068, 3070, 3074, 3057, 3067, 3072, 3072, 3075, 3060, 3076,
+     3077, 3063, 3081, 3081, 3076, 3078, 3082, 3061, 3074, 3083,
+     3078, 3084, 3070, 3075, 3085, 3086, 3077, 3084, 3083, 3088,
+     3088, 3089, 3090, 3091, 3091, 3093, 3082, 3095, 3097, 3099,
+     3096, 3093, 3103, 3097, 3086, 3089, 3096, 3085, 3100, 3100,
+     3102, 3090, 3101, 3101, 3104, 3104, 3105, 3095, 3107, 3106,
+     3108, 3099, 3103, 3109, 3110, 3102, 3108, 3105, 3106, 3111,
+
+     3112, 3112, 3113, 3121, 3104,    0, 3110, 3114, 3107, 3120,
+     3114, 3115, 3109, 3126, 3115, 3116, 3116, 3113, 3122, 3111,
+     3131, 3120, 3125, 3121, 3122, 3123, 3123, 3124, 3125, 3128,
+     3124, 3126, 3129, 3129, 3128, 3130, 3132, 3133, 3136, 3131,
+     3130, 3137, 3132, 3134, 3134, 3138, 3141, 3139, 3140, 3140,
+     3136, 3142, 3143, 3148, 3133, 3133, 3145, 3145, 3148, 3137,
+     3139, 3143, 3146, 3146, 3149, 3141, 3150, 3142, 3147, 3147,
+     3138, 3150, 3151, 3151, 3152, 3152, 3153, 3153, 3149, 3154,
+     3154, 3155, 3156, 3157, 3164, 3158, 3160, 3160, 3166, 3157,
+     3158, 3162, 3162, 3167, 3155, 3168, 3169, 3170, 3170, 3172,
+
+     3172, 3173, 3174, 3164, 3176, 3175, 3184, 3177, 3156, 3183,
+     3166, 3178, 3178, 3181, 3168, 3167, 3177, 3188, 3169, 3175,
+     3182, 3174, 3179, 3179, 3176, 3184, 3182, 3173, 3185, 3183,
+     3195, 3181, 3193, 3185, 3189, 3189, 3191, 3191, 3188, 3192,
+     3196, 3194, 3195, 3202, 3192, 3203, 3193, 3194, 3196, 3197,
+     3197, 3198, 3205, 3200, 3201, 3204, 3198, 3200, 3208, 3201,
+     3204, 3206, 3209, 3202, 3205, 3203, 3208, 3206, 3210, 3211,
+     3214, 3217, 3213, 3216, 3215, 3219, 3217, 3220, 3221, 3224,
+     3219, 3209, 3222,    0, 3221, 3226, 3214, 3222, 3210, 3211,
+     3213, 3215, 3215, 3225, 3216, 3239, 3225, 3220, 3226, 3224,
+
+     3230, 3230, 3231, 3231, 3232, 3237, 3237, 3238, 3232, 3240,
+     3240, 3386, 3238, 3386, 3239, 3243, 3243, 3244, 3244, 3248,
+     3244, 3245, 3245, 3248, 3245, 3246, 3246, 3247, 3247, 3250,
+     3247, 3251, 3252, 3252, 3250, 3253, 3254, 3257, 3257, 3258,
+     3251, 3259, 3260, 3261, 3261, 3262, 3265, 3260, 3266, 3268,
+     3254, 3269, 3267, 3253, 3271, 3266, 3267, 3272, 3268, 3258,
+     3274, 3259, 3272, 3273, 3273, 3262, 3269, 3275, 3275, 3274,
+     3278, 3265, 3271, 3276, 3276, 3277, 3277, 3279, 3280, 3283,
+     3282, 3284, 3279, 3281, 3285, 3278, 3282, 3280, 3281, 3281,
+     3280, 3288, 3286, 3287, 3289, 3289, 3284, 3286, 3287, 3294,
+
+     3290, 3291, 3292, 3292, 3283, 3285, 3290, 3291, 3293, 3293,
+     3288, 3295, 3298, 3298, 3294, 3301, 3295, 3300, 3300, 3304,
+     3304, 3305, 3305, 3313, 3301, 3306, 3306, 3307, 3307, 3309,
+     3309, 3310, 3310, 3311, 3311, 3312, 3312, 3315, 3316, 3316,
+     3317, 3317, 3318, 3319, 3320, 3325, 3315, 3322, 3322, 3313,
+     3323, 3318, 3324, 3324, 3326, 3319, 3327, 3328, 3328, 3331,
+     3325, 3329, 3329, 3335, 3320, 3332, 3332, 3326, 3327, 3323,
+     3336, 3337, 3339, 3336, 3331, 3338, 3338, 3341, 3342, 3343,
+     3341, 3335, 3344, 3345, 3342, 3346, 3349, 3344, 3347, 3350,
+     3339, 3353, 3349, 3343, 3354, 3353, 3357, 3337, 3350, 3370,
+
+     3366, 3376, 3345, 3346, 3347, 3366, 3379, 3367, 3383, 3354,
+     3367, 3377, 3370, 3371, 3371, 3372, 3372, 3374, 3374, 3378,
+     3377, 3381, 3357, 3378, 3376, 3384, 3379, 3385, 3387, 3388,
+     3388, 3383, 3385, 3389, 3390, 3381, 3384, 3391, 3392, 3393,
+     3395, 3394, 3397, 3387, 3398, 3396, 3389, 3397, 3401, 3395,
+     3400, 3400, 3407, 3390, 3392, 3391, 3394, 3396, 3399, 3406,
+        0, 3402, 3409, 3399, 3393, 3398, 3402, 3414, 3401, 3408,
+     3408, 3409, 3407, 3406, 3410, 3410, 3411, 3411, 3412, 3412,
+     3413, 3413, 3415, 3417, 3416, 3418, 3414, 3416, 3417, 3419,
+     3418, 3420, 3421, 3422, 3424, 3426, 3423, 3430, 3421, 3424,
+
+     3425, 3425, 3415, 3427, 3427, 3431, 3420, 3422, 3423, 3429,
+     3429, 3434, 3430, 3436, 3419, 3426, 3432, 3432, 3439, 3439,
+     3440, 3440, 3441, 3442, 3431, 3445, 3434, 3443, 3444, 3447,
+     3441, 3436, 3446, 3443, 3444, 3448, 3449, 3449, 3454, 3445,
+     3448, 3455, 3442, 3451, 3451, 3446, 3457, 3458, 3447, 3460,
+     3461, 3458, 3462, 3463, 3464, 3461, 3465, 3466, 3467, 3454,
+     3457, 3455, 3466, 3467, 3468, 3468, 3463, 3464, 3471, 3460,
+     3473, 3462, 3472, 3474, 3474, 3465, 3475, 3476, 3477, 3477,
+     3478, 3475, 3479, 3476, 3481, 3478, 3480, 3479, 3471, 3473,
+     3472, 3480, 3482, 3484, 3484, 3485, 3486, 3486, 3482, 3489,
+
+     3485, 3488, 3490, 3481, 3491, 3488, 3492, 3493, 3494, 3490,
+     3500, 3495, 3502, 3493, 3497, 3497, 3499, 3499, 3489, 3500,
+     3503, 3501, 3500, 3491, 3495, 3492, 3501, 3494, 3504, 3505,
+     3505, 3502, 3506, 3507, 3509, 3510, 3510, 3506, 3511, 3503,
+     3516, 3504, 3512, 3512, 3513, 3513, 3507, 3514, 3515, 3517,
+     3517, 3518, 3514, 3520, 3520, 3515, 3518, 3511, 3521, 3516,
+     3509, 3519, 3522, 3519, 3523, 3521, 3524, 3525, 3528, 3522,
+     3530, 3524, 3527, 3527, 3531, 3530, 3532, 3533, 3537, 3531,
+     3534, 3534, 3538, 3523, 3536, 3536, 3525, 3528, 3539, 3539,
+     3540, 3540, 3541, 3543, 3543, 3532, 3533, 3537, 3545, 3541,
+
+     3551, 3538, 3544, 3544, 3547, 3545, 3550, 3552,    0, 3547,
+        0, 3550, 3553, 3553, 3554, 3554,    0,    0,    0, 3551,
+        0,    0,    0,    0,    0,    0, 3552, 3558, 3558, 3558,
+     3558, 3558, 3558, 3558, 3559, 3559, 3559, 3559, 3559, 3559,
+     3559, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, 3561,
+     3561, 3561, 3561, 3561, 3561, 3562, 3562, 3562, 3562, 3562,
+     3562, 3562, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3564,
+     3564, 3564, 3564, 3564, 3564, 3564, 3566, 3566,    0, 3566,
+     3566, 3566, 3566, 3567, 3567,    0,    0,    0, 3567, 3567,
+     3568, 3568,    0,    0, 3568,    0, 3568, 3569,    0,    0,
+
+        0,    0,    0, 3569, 3570, 3570,    0,    0,    0, 3570,
+     3570, 3571,    0,    0,    0,    0,    0, 3571, 3572, 3572,
+        0, 3572, 3572, 3572, 3572, 3573,    0,    0,    0,    0,
+        0, 3573, 3574, 3574,    0,    0,    0, 3574, 3574, 3575,
+     3575,    0, 3575, 3575, 3575, 3575, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557,
+     3557, 3557, 3557, 3557, 3557, 3557, 3557
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -3328,7 +3339,7 @@ static void config_end_include(void)
         }
 #endif
 
-#line 3329 "<stdout>"
+#line 3340 "<stdout>"
 #define YY_NO_INPUT 1
 #line 191 "./util/configlexer.lex"
 #ifndef YY_NO_UNPUT
@@ -3337,9 +3348,9 @@ static void config_end_include(void)
 #ifndef YY_NO_INPUT
 #define YY_NO_INPUT 1
 #endif
-#line 3338 "<stdout>"
+#line 3349 "<stdout>"
 
-#line 3340 "<stdout>"
+#line 3351 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -3563,7 +3574,7 @@ YY_DECL
        {
 #line 211 "./util/configlexer.lex"
 
-#line 3564 "<stdout>"
+#line 3575 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -3596,13 +3607,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 >= 3543 )
+                               if ( yy_current_state >= 3558 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 6911 );
+               while ( yy_base[yy_current_state] != 6947 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -5046,27 +5057,27 @@ YY_RULE_SETUP
 case 282:
 YY_RULE_SETUP
 #line 505 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
+{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
        YY_BREAK
 case 283:
 YY_RULE_SETUP
 #line 506 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOW_RTT) }
+{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
        YY_BREAK
 case 284:
 YY_RULE_SETUP
 #line 507 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_NUM) }
+{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
        YY_BREAK
 case 285:
 YY_RULE_SETUP
 #line 508 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_LOW_RTT) }
        YY_BREAK
 case 286:
 YY_RULE_SETUP
 #line 509 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_FAST_SERVER_NUM) }
        YY_BREAK
 case 287:
 YY_RULE_SETUP
@@ -5076,240 +5087,250 @@ YY_RULE_SETUP
 case 288:
 YY_RULE_SETUP
 #line 511 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
        YY_BREAK
 case 289:
 YY_RULE_SETUP
 #line 512 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
        YY_BREAK
 case 290:
 YY_RULE_SETUP
 #line 513 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
+{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
        YY_BREAK
 case 291:
 YY_RULE_SETUP
 #line 514 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSCRYPT) }
+{ YDVAR(2, VAR_RESPONSE_IP) }
        YY_BREAK
 case 292:
 YY_RULE_SETUP
 #line 515 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
        YY_BREAK
 case 293:
 YY_RULE_SETUP
 #line 516 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+{ YDVAR(0, VAR_DNSCRYPT) }
        YY_BREAK
 case 294:
 YY_RULE_SETUP
 #line 517 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
        YY_BREAK
 case 295:
 YY_RULE_SETUP
 #line 518 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
        YY_BREAK
 case 296:
 YY_RULE_SETUP
 #line 519 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
        YY_BREAK
 case 297:
 YY_RULE_SETUP
 #line 520 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
        YY_BREAK
 case 298:
 YY_RULE_SETUP
 #line 521 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
        YY_BREAK
 case 299:
 YY_RULE_SETUP
-#line 523 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
+#line 522 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
        YY_BREAK
 case 300:
 YY_RULE_SETUP
-#line 525 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
+#line 523 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
        YY_BREAK
 case 301:
 YY_RULE_SETUP
-#line 526 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
+#line 525 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
        YY_BREAK
 case 302:
 YY_RULE_SETUP
 #line 527 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
        YY_BREAK
 case 303:
 YY_RULE_SETUP
 #line 528 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
        YY_BREAK
 case 304:
 YY_RULE_SETUP
 #line 529 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES) }
+{ YDVAR(1, VAR_PAD_RESPONSES) }
        YY_BREAK
 case 305:
 YY_RULE_SETUP
 #line 530 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
+{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
        YY_BREAK
 case 306:
 YY_RULE_SETUP
 #line 531 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+{ YDVAR(1, VAR_PAD_QUERIES) }
        YY_BREAK
 case 307:
 YY_RULE_SETUP
 #line 532 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
        YY_BREAK
 case 308:
 YY_RULE_SETUP
 #line 533 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
        YY_BREAK
 case 309:
 YY_RULE_SETUP
 #line 534 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
        YY_BREAK
 case 310:
 YY_RULE_SETUP
 #line 535 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
        YY_BREAK
 case 311:
 YY_RULE_SETUP
 #line 536 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
        YY_BREAK
 case 312:
 YY_RULE_SETUP
 #line 537 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
        YY_BREAK
 case 313:
 YY_RULE_SETUP
 #line 538 "./util/configlexer.lex"
-{ YDVAR(0, VAR_CACHEDB) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
        YY_BREAK
 case 314:
 YY_RULE_SETUP
 #line 539 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_BACKEND) }
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
        YY_BREAK
 case 315:
 YY_RULE_SETUP
 #line 540 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
+{ YDVAR(0, VAR_CACHEDB) }
        YY_BREAK
 case 316:
 YY_RULE_SETUP
 #line 541 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
+{ YDVAR(1, VAR_CACHEDB_BACKEND) }
        YY_BREAK
 case 317:
 YY_RULE_SETUP
 #line 542 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
+{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
        YY_BREAK
 case 318:
 YY_RULE_SETUP
 #line 543 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
+{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
        YY_BREAK
 case 319:
 YY_RULE_SETUP
 #line 544 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
+{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
        YY_BREAK
 case 320:
 YY_RULE_SETUP
 #line 545 "./util/configlexer.lex"
-{ YDVAR(0, VAR_IPSET) }
+{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
        YY_BREAK
 case 321:
 YY_RULE_SETUP
 #line 546 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V4) }
+{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
        YY_BREAK
 case 322:
 YY_RULE_SETUP
 #line 547 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V6) }
+{ YDVAR(0, VAR_IPSET) }
        YY_BREAK
 case 323:
 YY_RULE_SETUP
 #line 548 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+{ YDVAR(1, VAR_IPSET_NAME_V4) }
        YY_BREAK
 case 324:
 YY_RULE_SETUP
 #line 549 "./util/configlexer.lex"
-{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+{ YDVAR(1, VAR_IPSET_NAME_V6) }
        YY_BREAK
 case 325:
 YY_RULE_SETUP
 #line 550 "./util/configlexer.lex"
-{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
        YY_BREAK
 case 326:
 YY_RULE_SETUP
 #line 551 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
        YY_BREAK
 case 327:
 YY_RULE_SETUP
 #line 552 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NSID ) }
+{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
        YY_BREAK
 case 328:
-/* rule 328 can match eol */
 YY_RULE_SETUP
 #line 553 "./util/configlexer.lex"
+{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+       YY_BREAK
+case 329:
+YY_RULE_SETUP
+#line 554 "./util/configlexer.lex"
+{ YDVAR(1, VAR_NSID ) }
+       YY_BREAK
+case 330:
+/* rule 330 can match eol */
+YY_RULE_SETUP
+#line 555 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 329:
+case 331:
 YY_RULE_SETUP
-#line 556 "./util/configlexer.lex"
+#line 558 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 557 "./util/configlexer.lex"
+#line 559 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 330:
+case 332:
 YY_RULE_SETUP
-#line 562 "./util/configlexer.lex"
+#line 564 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 331:
-/* rule 331 can match eol */
+case 333:
+/* rule 333 can match eol */
 YY_RULE_SETUP
-#line 563 "./util/configlexer.lex"
+#line 565 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 332:
+case 334:
 YY_RULE_SETUP
-#line 565 "./util/configlexer.lex"
+#line 567 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5322,34 +5343,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 333:
+case 335:
 YY_RULE_SETUP
-#line 577 "./util/configlexer.lex"
+#line 579 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 578 "./util/configlexer.lex"
+#line 580 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 334:
+case 336:
 YY_RULE_SETUP
-#line 583 "./util/configlexer.lex"
+#line 585 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 335:
-/* rule 335 can match eol */
+case 337:
+/* rule 337 can match eol */
 YY_RULE_SETUP
-#line 584 "./util/configlexer.lex"
+#line 586 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 336:
+case 338:
 YY_RULE_SETUP
-#line 586 "./util/configlexer.lex"
+#line 588 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5362,38 +5383,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 337:
+case 339:
 YY_RULE_SETUP
-#line 598 "./util/configlexer.lex"
+#line 600 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 600 "./util/configlexer.lex"
+#line 602 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 338:
+case 340:
 YY_RULE_SETUP
-#line 604 "./util/configlexer.lex"
+#line 606 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 339:
-/* rule 339 can match eol */
+case 341:
+/* rule 341 can match eol */
 YY_RULE_SETUP
-#line 605 "./util/configlexer.lex"
+#line 607 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 340:
+case 342:
 YY_RULE_SETUP
-#line 606 "./util/configlexer.lex"
+#line 608 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 341:
+case 343:
 YY_RULE_SETUP
-#line 607 "./util/configlexer.lex"
+#line 609 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 0);
@@ -5401,27 +5422,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 612 "./util/configlexer.lex"
+#line 614 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 342:
+case 344:
 YY_RULE_SETUP
-#line 616 "./util/configlexer.lex"
+#line 618 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 343:
-/* rule 343 can match eol */
+case 345:
+/* rule 345 can match eol */
 YY_RULE_SETUP
-#line 617 "./util/configlexer.lex"
+#line 619 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 344:
+case 346:
 YY_RULE_SETUP
-#line 619 "./util/configlexer.lex"
+#line 621 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -5431,7 +5452,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 625 "./util/configlexer.lex"
+#line 627 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -5446,39 +5467,39 @@ case YY_STATE_EOF(val):
 }
        YY_BREAK
 /* include-toplevel: directive */
-case 345:
+case 347:
 YY_RULE_SETUP
-#line 639 "./util/configlexer.lex"
+#line 641 "./util/configlexer.lex"
 {
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel);
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel):
-#line 642 "./util/configlexer.lex"
+#line 644 "./util/configlexer.lex"
 {
        yyerror("EOF inside include_toplevel directive");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 346:
+case 348:
 YY_RULE_SETUP
-#line 646 "./util/configlexer.lex"
+#line 648 "./util/configlexer.lex"
 { LEXOUT(("ITSP ")); /* ignore */ }
        YY_BREAK
-case 347:
-/* rule 347 can match eol */
+case 349:
+/* rule 349 can match eol */
 YY_RULE_SETUP
-#line 647 "./util/configlexer.lex"
+#line 649 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
-case 348:
+case 350:
 YY_RULE_SETUP
-#line 648 "./util/configlexer.lex"
+#line 650 "./util/configlexer.lex"
 { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
        YY_BREAK
-case 349:
+case 351:
 YY_RULE_SETUP
-#line 649 "./util/configlexer.lex"
+#line 651 "./util/configlexer.lex"
 {
        LEXOUT(("ITunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext, 1);
@@ -5487,29 +5508,29 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_toplevel_quoted):
-#line 655 "./util/configlexer.lex"
+#line 657 "./util/configlexer.lex"
 {
        yyerror("EOF inside quoted string");
        BEGIN(inc_prev);
 }
        YY_BREAK
-case 350:
+case 352:
 YY_RULE_SETUP
-#line 659 "./util/configlexer.lex"
+#line 661 "./util/configlexer.lex"
 { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 351:
-/* rule 351 can match eol */
+case 353:
+/* rule 353 can match eol */
 YY_RULE_SETUP
-#line 660 "./util/configlexer.lex"
+#line 662 "./util/configlexer.lex"
 {
        yyerror("newline before \" in include name");
        cfg_parser->line++; BEGIN(inc_prev);
 }
        YY_BREAK
-case 352:
+case 354:
 YY_RULE_SETUP
-#line 664 "./util/configlexer.lex"
+#line 666 "./util/configlexer.lex"
 {
        LEXOUT(("ITQE "));
        yytext[yyleng - 1] = '\0';
@@ -5518,33 +5539,33 @@ YY_RULE_SETUP
        return (VAR_FORCE_TOPLEVEL);
 }
        YY_BREAK
-case 353:
+case 355:
 YY_RULE_SETUP
-#line 672 "./util/configlexer.lex"
+#line 674 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 354:
+case 356:
 YY_RULE_SETUP
-#line 676 "./util/configlexer.lex"
+#line 678 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 355:
+case 357:
 YY_RULE_SETUP
-#line 680 "./util/configlexer.lex"
+#line 682 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 356:
+case 358:
 YY_RULE_SETUP
-#line 684 "./util/configlexer.lex"
+#line 686 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 5545 "<stdout>"
+#line 5566 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -5839,7 +5860,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 >= 3543 )
+                       if ( yy_current_state >= 3558 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5867,11 +5888,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 >= 3543 )
+               if ( yy_current_state >= 3558 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 3542);
+       yy_is_jam = (yy_current_state == 3557);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6510,6 +6531,6 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 684 "./util/configlexer.lex"
+#line 686 "./util/configlexer.lex"
 
 
index 4f6dfffbaf4e2542357965997626163736dd9398..34a0e5dd9cb033ddb875184f2b3a6c4e801de4cf 100644 (file)
@@ -502,6 +502,8 @@ ratelimit-for-domain{COLON} { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
 ratelimit-below-domain{COLON}  { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
 ip-ratelimit-factor{COLON}             { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
 ratelimit-factor{COLON}                { YDVAR(1, VAR_RATELIMIT_FACTOR) }
+ip-ratelimit-backoff{COLON}            { YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
+ratelimit-backoff{COLON}               { YDVAR(1, VAR_RATELIMIT_BACKOFF) }
 outbound-msg-retry{COLON}              { YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
 low-rtt{COLON}                 { YDVAR(1, VAR_LOW_RTT) }
 fast-server-num{COLON}         { YDVAR(1, VAR_FAST_SERVER_NUM) }
index cbd550c035ffa4e72a1875de2227d9472314f40b..4f534cdf5d8bf2321843722762fad8010dfe070f 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.6.4.  */
+/* A Bison parser, made by GNU Bison 3.7.6.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
-/* Identify Bison output.  */
-#define YYBISON 1
+/* Identify Bison output, and Bison version.  */
+#define YYBISON 30706
 
-/* Bison version.  */
-#define YYBISON_VERSION "3.6.4"
+/* Bison version string.  */
+#define YYBISON_VERSION "3.7.6"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -119,695 +119,7 @@ extern struct config_parser_state* cfg_parser;
 #  endif
 # endif
 
-/* Use api.header.include to #include this header
-   instead of duplicating it here.  */
-#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token kinds.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    YYEMPTY = -2,
-    YYEOF = 0,                     /* "end of file"  */
-    YYerror = 256,                 /* error  */
-    YYUNDEF = 257,                 /* "invalid token"  */
-    SPACE = 258,                   /* SPACE  */
-    LETTER = 259,                  /* LETTER  */
-    NEWLINE = 260,                 /* NEWLINE  */
-    COMMENT = 261,                 /* COMMENT  */
-    COLON = 262,                   /* COLON  */
-    ANY = 263,                     /* ANY  */
-    ZONESTR = 264,                 /* ZONESTR  */
-    STRING_ARG = 265,              /* STRING_ARG  */
-    VAR_FORCE_TOPLEVEL = 266,      /* VAR_FORCE_TOPLEVEL  */
-    VAR_SERVER = 267,              /* VAR_SERVER  */
-    VAR_VERBOSITY = 268,           /* VAR_VERBOSITY  */
-    VAR_NUM_THREADS = 269,         /* VAR_NUM_THREADS  */
-    VAR_PORT = 270,                /* VAR_PORT  */
-    VAR_OUTGOING_RANGE = 271,      /* VAR_OUTGOING_RANGE  */
-    VAR_INTERFACE = 272,           /* VAR_INTERFACE  */
-    VAR_PREFER_IP4 = 273,          /* VAR_PREFER_IP4  */
-    VAR_DO_IP4 = 274,              /* VAR_DO_IP4  */
-    VAR_DO_IP6 = 275,              /* VAR_DO_IP6  */
-    VAR_PREFER_IP6 = 276,          /* VAR_PREFER_IP6  */
-    VAR_DO_UDP = 277,              /* VAR_DO_UDP  */
-    VAR_DO_TCP = 278,              /* VAR_DO_TCP  */
-    VAR_TCP_MSS = 279,             /* VAR_TCP_MSS  */
-    VAR_OUTGOING_TCP_MSS = 280,    /* VAR_OUTGOING_TCP_MSS  */
-    VAR_TCP_IDLE_TIMEOUT = 281,    /* VAR_TCP_IDLE_TIMEOUT  */
-    VAR_EDNS_TCP_KEEPALIVE = 282,  /* VAR_EDNS_TCP_KEEPALIVE  */
-    VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT  */
-    VAR_CHROOT = 284,              /* VAR_CHROOT  */
-    VAR_USERNAME = 285,            /* VAR_USERNAME  */
-    VAR_DIRECTORY = 286,           /* VAR_DIRECTORY  */
-    VAR_LOGFILE = 287,             /* VAR_LOGFILE  */
-    VAR_PIDFILE = 288,             /* VAR_PIDFILE  */
-    VAR_MSG_CACHE_SIZE = 289,      /* VAR_MSG_CACHE_SIZE  */
-    VAR_MSG_CACHE_SLABS = 290,     /* VAR_MSG_CACHE_SLABS  */
-    VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD  */
-    VAR_RRSET_CACHE_SIZE = 292,    /* VAR_RRSET_CACHE_SIZE  */
-    VAR_RRSET_CACHE_SLABS = 293,   /* VAR_RRSET_CACHE_SLABS  */
-    VAR_OUTGOING_NUM_TCP = 294,    /* VAR_OUTGOING_NUM_TCP  */
-    VAR_INFRA_HOST_TTL = 295,      /* VAR_INFRA_HOST_TTL  */
-    VAR_INFRA_LAME_TTL = 296,      /* VAR_INFRA_LAME_TTL  */
-    VAR_INFRA_CACHE_SLABS = 297,   /* VAR_INFRA_CACHE_SLABS  */
-    VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS  */
-    VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE  */
-    VAR_NAME = 300,                /* VAR_NAME  */
-    VAR_STUB_ZONE = 301,           /* VAR_STUB_ZONE  */
-    VAR_STUB_HOST = 302,           /* VAR_STUB_HOST  */
-    VAR_STUB_ADDR = 303,           /* VAR_STUB_ADDR  */
-    VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY  */
-    VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE  */
-    VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES  */
-    VAR_FORWARD_ZONE = 307,        /* VAR_FORWARD_ZONE  */
-    VAR_FORWARD_HOST = 308,        /* VAR_FORWARD_HOST  */
-    VAR_FORWARD_ADDR = 309,        /* VAR_FORWARD_ADDR  */
-    VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS  */
-    VAR_HIDE_IDENTITY = 311,       /* VAR_HIDE_IDENTITY  */
-    VAR_HIDE_VERSION = 312,        /* VAR_HIDE_VERSION  */
-    VAR_IDENTITY = 313,            /* VAR_IDENTITY  */
-    VAR_VERSION = 314,             /* VAR_VERSION  */
-    VAR_HARDEN_GLUE = 315,         /* VAR_HARDEN_GLUE  */
-    VAR_MODULE_CONF = 316,         /* VAR_MODULE_CONF  */
-    VAR_TRUST_ANCHOR_FILE = 317,   /* VAR_TRUST_ANCHOR_FILE  */
-    VAR_TRUST_ANCHOR = 318,        /* VAR_TRUST_ANCHOR  */
-    VAR_VAL_OVERRIDE_DATE = 319,   /* VAR_VAL_OVERRIDE_DATE  */
-    VAR_BOGUS_TTL = 320,           /* VAR_BOGUS_TTL  */
-    VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL  */
-    VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE  */
-    VAR_INCOMING_NUM_TCP = 323,    /* VAR_INCOMING_NUM_TCP  */
-    VAR_MSG_BUFFER_SIZE = 324,     /* VAR_MSG_BUFFER_SIZE  */
-    VAR_KEY_CACHE_SIZE = 325,      /* VAR_KEY_CACHE_SIZE  */
-    VAR_KEY_CACHE_SLABS = 326,     /* VAR_KEY_CACHE_SLABS  */
-    VAR_TRUSTED_KEYS_FILE = 327,   /* VAR_TRUSTED_KEYS_FILE  */
-    VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS  */
-    VAR_USE_SYSLOG = 329,          /* VAR_USE_SYSLOG  */
-    VAR_OUTGOING_INTERFACE = 330,  /* VAR_OUTGOING_INTERFACE  */
-    VAR_ROOT_HINTS = 331,          /* VAR_ROOT_HINTS  */
-    VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST  */
-    VAR_CACHE_MAX_TTL = 333,       /* VAR_CACHE_MAX_TTL  */
-    VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED  */
-    VAR_ACCESS_CONTROL = 335,      /* VAR_ACCESS_CONTROL  */
-    VAR_LOCAL_ZONE = 336,          /* VAR_LOCAL_ZONE  */
-    VAR_LOCAL_DATA = 337,          /* VAR_LOCAL_DATA  */
-    VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC  */
-    VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL  */
-    VAR_DO_DAEMONIZE = 340,        /* VAR_DO_DAEMONIZE  */
-    VAR_USE_CAPS_FOR_ID = 341,     /* VAR_USE_CAPS_FOR_ID  */
-    VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE  */
-    VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT  */
-    VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID  */
-    VAR_DLV_ANCHOR_FILE = 345,     /* VAR_DLV_ANCHOR_FILE  */
-    VAR_DLV_ANCHOR = 346,          /* VAR_DLV_ANCHOR  */
-    VAR_NEG_CACHE_SIZE = 347,      /* VAR_NEG_CACHE_SIZE  */
-    VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH  */
-    VAR_PRIVATE_ADDRESS = 349,     /* VAR_PRIVATE_ADDRESS  */
-    VAR_PRIVATE_DOMAIN = 350,      /* VAR_PRIVATE_DOMAIN  */
-    VAR_REMOTE_CONTROL = 351,      /* VAR_REMOTE_CONTROL  */
-    VAR_CONTROL_ENABLE = 352,      /* VAR_CONTROL_ENABLE  */
-    VAR_CONTROL_INTERFACE = 353,   /* VAR_CONTROL_INTERFACE  */
-    VAR_CONTROL_PORT = 354,        /* VAR_CONTROL_PORT  */
-    VAR_SERVER_KEY_FILE = 355,     /* VAR_SERVER_KEY_FILE  */
-    VAR_SERVER_CERT_FILE = 356,    /* VAR_SERVER_CERT_FILE  */
-    VAR_CONTROL_KEY_FILE = 357,    /* VAR_CONTROL_KEY_FILE  */
-    VAR_CONTROL_CERT_FILE = 358,   /* VAR_CONTROL_CERT_FILE  */
-    VAR_CONTROL_USE_CERT = 359,    /* VAR_CONTROL_USE_CERT  */
-    VAR_TCP_REUSE_TIMEOUT = 360,   /* VAR_TCP_REUSE_TIMEOUT  */
-    VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES  */
-    VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS  */
-    VAR_LOCAL_DATA_PTR = 363,      /* VAR_LOCAL_DATA_PTR  */
-    VAR_JOSTLE_TIMEOUT = 364,      /* VAR_JOSTLE_TIMEOUT  */
-    VAR_STUB_PRIME = 365,          /* VAR_STUB_PRIME  */
-    VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD  */
-    VAR_LOG_TIME_ASCII = 367,      /* VAR_LOG_TIME_ASCII  */
-    VAR_DOMAIN_INSECURE = 368,     /* VAR_DOMAIN_INSECURE  */
-    VAR_PYTHON = 369,              /* VAR_PYTHON  */
-    VAR_PYTHON_SCRIPT = 370,       /* VAR_PYTHON_SCRIPT  */
-    VAR_VAL_SIG_SKEW_MIN = 371,    /* VAR_VAL_SIG_SKEW_MIN  */
-    VAR_VAL_SIG_SKEW_MAX = 372,    /* VAR_VAL_SIG_SKEW_MAX  */
-    VAR_VAL_MAX_RESTART = 373,     /* VAR_VAL_MAX_RESTART  */
-    VAR_CACHE_MIN_TTL = 374,       /* VAR_CACHE_MIN_TTL  */
-    VAR_VAL_LOG_LEVEL = 375,       /* VAR_VAL_LOG_LEVEL  */
-    VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE  */
-    VAR_KEEP_MISSING = 377,        /* VAR_KEEP_MISSING  */
-    VAR_ADD_HOLDDOWN = 378,        /* VAR_ADD_HOLDDOWN  */
-    VAR_DEL_HOLDDOWN = 379,        /* VAR_DEL_HOLDDOWN  */
-    VAR_SO_RCVBUF = 380,           /* VAR_SO_RCVBUF  */
-    VAR_EDNS_BUFFER_SIZE = 381,    /* VAR_EDNS_BUFFER_SIZE  */
-    VAR_PREFETCH = 382,            /* VAR_PREFETCH  */
-    VAR_PREFETCH_KEY = 383,        /* VAR_PREFETCH_KEY  */
-    VAR_SO_SNDBUF = 384,           /* VAR_SO_SNDBUF  */
-    VAR_SO_REUSEPORT = 385,        /* VAR_SO_REUSEPORT  */
-    VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN  */
-    VAR_IGNORE_CD_FLAG = 387,      /* VAR_IGNORE_CD_FLAG  */
-    VAR_LOG_QUERIES = 388,         /* VAR_LOG_QUERIES  */
-    VAR_LOG_REPLIES = 389,         /* VAR_LOG_REPLIES  */
-    VAR_LOG_LOCAL_ACTIONS = 390,   /* VAR_LOG_LOCAL_ACTIONS  */
-    VAR_TCP_UPSTREAM = 391,        /* VAR_TCP_UPSTREAM  */
-    VAR_SSL_UPSTREAM = 392,        /* VAR_SSL_UPSTREAM  */
-    VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT  */
-    VAR_SSL_SERVICE_KEY = 394,     /* VAR_SSL_SERVICE_KEY  */
-    VAR_SSL_SERVICE_PEM = 395,     /* VAR_SSL_SERVICE_PEM  */
-    VAR_SSL_PORT = 396,            /* VAR_SSL_PORT  */
-    VAR_FORWARD_FIRST = 397,       /* VAR_FORWARD_FIRST  */
-    VAR_STUB_SSL_UPSTREAM = 398,   /* VAR_STUB_SSL_UPSTREAM  */
-    VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM  */
-    VAR_TLS_CERT_BUNDLE = 400,     /* VAR_TLS_CERT_BUNDLE  */
-    VAR_STUB_TCP_UPSTREAM = 401,   /* VAR_STUB_TCP_UPSTREAM  */
-    VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM  */
-    VAR_HTTPS_PORT = 403,          /* VAR_HTTPS_PORT  */
-    VAR_HTTP_ENDPOINT = 404,       /* VAR_HTTP_ENDPOINT  */
-    VAR_HTTP_MAX_STREAMS = 405,    /* VAR_HTTP_MAX_STREAMS  */
-    VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE  */
-    VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE  */
-    VAR_HTTP_NODELAY = 408,        /* VAR_HTTP_NODELAY  */
-    VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM  */
-    VAR_STUB_FIRST = 410,          /* VAR_STUB_FIRST  */
-    VAR_MINIMAL_RESPONSES = 411,   /* VAR_MINIMAL_RESPONSES  */
-    VAR_RRSET_ROUNDROBIN = 412,    /* VAR_RRSET_ROUNDROBIN  */
-    VAR_MAX_UDP_SIZE = 413,        /* VAR_MAX_UDP_SIZE  */
-    VAR_DELAY_CLOSE = 414,         /* VAR_DELAY_CLOSE  */
-    VAR_UDP_CONNECT = 415,         /* VAR_UDP_CONNECT  */
-    VAR_UNBLOCK_LAN_ZONES = 416,   /* VAR_UNBLOCK_LAN_ZONES  */
-    VAR_INSECURE_LAN_ZONES = 417,  /* VAR_INSECURE_LAN_ZONES  */
-    VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT  */
-    VAR_INFRA_KEEP_PROBING = 419,  /* VAR_INFRA_KEEP_PROBING  */
-    VAR_DNS64_PREFIX = 420,        /* VAR_DNS64_PREFIX  */
-    VAR_DNS64_SYNTHALL = 421,      /* VAR_DNS64_SYNTHALL  */
-    VAR_DNS64_IGNORE_AAAA = 422,   /* VAR_DNS64_IGNORE_AAAA  */
-    VAR_DNSTAP = 423,              /* VAR_DNSTAP  */
-    VAR_DNSTAP_ENABLE = 424,       /* VAR_DNSTAP_ENABLE  */
-    VAR_DNSTAP_SOCKET_PATH = 425,  /* VAR_DNSTAP_SOCKET_PATH  */
-    VAR_DNSTAP_IP = 426,           /* VAR_DNSTAP_IP  */
-    VAR_DNSTAP_TLS = 427,          /* VAR_DNSTAP_TLS  */
-    VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME  */
-    VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE  */
-    VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE  */
-    VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE  */
-    VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY  */
-    VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION  */
-    VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL  */
-    VAR_DNSTAP_IDENTITY = 435,     /* VAR_DNSTAP_IDENTITY  */
-    VAR_DNSTAP_VERSION = 436,      /* VAR_DNSTAP_VERSION  */
-    VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES  */
-    VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES  */
-    VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES  */
-    VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES  */
-    VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES  */
-    VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES  */
-    VAR_RESPONSE_IP_TAG = 443,     /* VAR_RESPONSE_IP_TAG  */
-    VAR_RESPONSE_IP = 444,         /* VAR_RESPONSE_IP  */
-    VAR_RESPONSE_IP_DATA = 445,    /* VAR_RESPONSE_IP_DATA  */
-    VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE  */
-    VAR_IP_TRANSPARENT = 447,      /* VAR_IP_TRANSPARENT  */
-    VAR_IP_DSCP = 448,             /* VAR_IP_DSCP  */
-    VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK  */
-    VAR_IP_RATELIMIT = 450,        /* VAR_IP_RATELIMIT  */
-    VAR_IP_RATELIMIT_SLABS = 451,  /* VAR_IP_RATELIMIT_SLABS  */
-    VAR_IP_RATELIMIT_SIZE = 452,   /* VAR_IP_RATELIMIT_SIZE  */
-    VAR_RATELIMIT = 453,           /* VAR_RATELIMIT  */
-    VAR_RATELIMIT_SLABS = 454,     /* VAR_RATELIMIT_SLABS  */
-    VAR_RATELIMIT_SIZE = 455,      /* VAR_RATELIMIT_SIZE  */
-    VAR_OUTBOUND_MSG_RETRY = 456,  /* VAR_OUTBOUND_MSG_RETRY  */
-    VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN  */
-    VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN  */
-    VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR  */
-    VAR_RATELIMIT_FACTOR = 460,    /* VAR_RATELIMIT_FACTOR  */
-    VAR_SEND_CLIENT_SUBNET = 461,  /* VAR_SEND_CLIENT_SUBNET  */
-    VAR_CLIENT_SUBNET_ZONE = 462,  /* VAR_CLIENT_SUBNET_ZONE  */
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 463, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
-    VAR_CLIENT_SUBNET_OPCODE = 464, /* VAR_CLIENT_SUBNET_OPCODE  */
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 466, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
-    VAR_MIN_CLIENT_SUBNET_IPV4 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
-    VAR_MIN_CLIENT_SUBNET_IPV6 = 468, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
-    VAR_MAX_ECS_TREE_SIZE_IPV4 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
-    VAR_MAX_ECS_TREE_SIZE_IPV6 = 470, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
-    VAR_CAPS_WHITELIST = 471,      /* VAR_CAPS_WHITELIST  */
-    VAR_CACHE_MAX_NEGATIVE_TTL = 472, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
-    VAR_PERMIT_SMALL_HOLDDOWN = 473, /* VAR_PERMIT_SMALL_HOLDDOWN  */
-    VAR_QNAME_MINIMISATION = 474,  /* VAR_QNAME_MINIMISATION  */
-    VAR_QNAME_MINIMISATION_STRICT = 475, /* VAR_QNAME_MINIMISATION_STRICT  */
-    VAR_IP_FREEBIND = 476,         /* VAR_IP_FREEBIND  */
-    VAR_DEFINE_TAG = 477,          /* VAR_DEFINE_TAG  */
-    VAR_LOCAL_ZONE_TAG = 478,      /* VAR_LOCAL_ZONE_TAG  */
-    VAR_ACCESS_CONTROL_TAG = 479,  /* VAR_ACCESS_CONTROL_TAG  */
-    VAR_LOCAL_ZONE_OVERRIDE = 480, /* VAR_LOCAL_ZONE_OVERRIDE  */
-    VAR_ACCESS_CONTROL_TAG_ACTION = 481, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
-    VAR_ACCESS_CONTROL_TAG_DATA = 482, /* VAR_ACCESS_CONTROL_TAG_DATA  */
-    VAR_VIEW = 483,                /* VAR_VIEW  */
-    VAR_ACCESS_CONTROL_VIEW = 484, /* VAR_ACCESS_CONTROL_VIEW  */
-    VAR_VIEW_FIRST = 485,          /* VAR_VIEW_FIRST  */
-    VAR_SERVE_EXPIRED = 486,       /* VAR_SERVE_EXPIRED  */
-    VAR_SERVE_EXPIRED_TTL = 487,   /* VAR_SERVE_EXPIRED_TTL  */
-    VAR_SERVE_EXPIRED_TTL_RESET = 488, /* VAR_SERVE_EXPIRED_TTL_RESET  */
-    VAR_SERVE_EXPIRED_REPLY_TTL = 489, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
-    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 490, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
-    VAR_SERVE_ORIGINAL_TTL = 491,  /* VAR_SERVE_ORIGINAL_TTL  */
-    VAR_FAKE_DSA = 492,            /* VAR_FAKE_DSA  */
-    VAR_FAKE_SHA1 = 493,           /* VAR_FAKE_SHA1  */
-    VAR_LOG_IDENTITY = 494,        /* VAR_LOG_IDENTITY  */
-    VAR_HIDE_TRUSTANCHOR = 495,    /* VAR_HIDE_TRUSTANCHOR  */
-    VAR_HIDE_HTTP_USER_AGENT = 496, /* VAR_HIDE_HTTP_USER_AGENT  */
-    VAR_HTTP_USER_AGENT = 497,     /* VAR_HTTP_USER_AGENT  */
-    VAR_TRUST_ANCHOR_SIGNALING = 498, /* VAR_TRUST_ANCHOR_SIGNALING  */
-    VAR_AGGRESSIVE_NSEC = 499,     /* VAR_AGGRESSIVE_NSEC  */
-    VAR_USE_SYSTEMD = 500,         /* VAR_USE_SYSTEMD  */
-    VAR_SHM_ENABLE = 501,          /* VAR_SHM_ENABLE  */
-    VAR_SHM_KEY = 502,             /* VAR_SHM_KEY  */
-    VAR_ROOT_KEY_SENTINEL = 503,   /* VAR_ROOT_KEY_SENTINEL  */
-    VAR_DNSCRYPT = 504,            /* VAR_DNSCRYPT  */
-    VAR_DNSCRYPT_ENABLE = 505,     /* VAR_DNSCRYPT_ENABLE  */
-    VAR_DNSCRYPT_PORT = 506,       /* VAR_DNSCRYPT_PORT  */
-    VAR_DNSCRYPT_PROVIDER = 507,   /* VAR_DNSCRYPT_PROVIDER  */
-    VAR_DNSCRYPT_SECRET_KEY = 508, /* VAR_DNSCRYPT_SECRET_KEY  */
-    VAR_DNSCRYPT_PROVIDER_CERT = 509, /* VAR_DNSCRYPT_PROVIDER_CERT  */
-    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 510, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 512, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
-    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
-    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 514, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
-    VAR_PAD_RESPONSES = 515,       /* VAR_PAD_RESPONSES  */
-    VAR_PAD_RESPONSES_BLOCK_SIZE = 516, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
-    VAR_PAD_QUERIES = 517,         /* VAR_PAD_QUERIES  */
-    VAR_PAD_QUERIES_BLOCK_SIZE = 518, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
-    VAR_IPSECMOD_ENABLED = 519,    /* VAR_IPSECMOD_ENABLED  */
-    VAR_IPSECMOD_HOOK = 520,       /* VAR_IPSECMOD_HOOK  */
-    VAR_IPSECMOD_IGNORE_BOGUS = 521, /* VAR_IPSECMOD_IGNORE_BOGUS  */
-    VAR_IPSECMOD_MAX_TTL = 522,    /* VAR_IPSECMOD_MAX_TTL  */
-    VAR_IPSECMOD_WHITELIST = 523,  /* VAR_IPSECMOD_WHITELIST  */
-    VAR_IPSECMOD_STRICT = 524,     /* VAR_IPSECMOD_STRICT  */
-    VAR_CACHEDB = 525,             /* VAR_CACHEDB  */
-    VAR_CACHEDB_BACKEND = 526,     /* VAR_CACHEDB_BACKEND  */
-    VAR_CACHEDB_SECRETSEED = 527,  /* VAR_CACHEDB_SECRETSEED  */
-    VAR_CACHEDB_REDISHOST = 528,   /* VAR_CACHEDB_REDISHOST  */
-    VAR_CACHEDB_REDISPORT = 529,   /* VAR_CACHEDB_REDISPORT  */
-    VAR_CACHEDB_REDISTIMEOUT = 530, /* VAR_CACHEDB_REDISTIMEOUT  */
-    VAR_CACHEDB_REDISEXPIRERECORDS = 531, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
-    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 532, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
-    VAR_FOR_UPSTREAM = 533,        /* VAR_FOR_UPSTREAM  */
-    VAR_AUTH_ZONE = 534,           /* VAR_AUTH_ZONE  */
-    VAR_ZONEFILE = 535,            /* VAR_ZONEFILE  */
-    VAR_MASTER = 536,              /* VAR_MASTER  */
-    VAR_URL = 537,                 /* VAR_URL  */
-    VAR_FOR_DOWNSTREAM = 538,      /* VAR_FOR_DOWNSTREAM  */
-    VAR_FALLBACK_ENABLED = 539,    /* VAR_FALLBACK_ENABLED  */
-    VAR_TLS_ADDITIONAL_PORT = 540, /* VAR_TLS_ADDITIONAL_PORT  */
-    VAR_LOW_RTT = 541,             /* VAR_LOW_RTT  */
-    VAR_LOW_RTT_PERMIL = 542,      /* VAR_LOW_RTT_PERMIL  */
-    VAR_FAST_SERVER_PERMIL = 543,  /* VAR_FAST_SERVER_PERMIL  */
-    VAR_FAST_SERVER_NUM = 544,     /* VAR_FAST_SERVER_NUM  */
-    VAR_ALLOW_NOTIFY = 545,        /* VAR_ALLOW_NOTIFY  */
-    VAR_TLS_WIN_CERT = 546,        /* VAR_TLS_WIN_CERT  */
-    VAR_TCP_CONNECTION_LIMIT = 547, /* VAR_TCP_CONNECTION_LIMIT  */
-    VAR_FORWARD_NO_CACHE = 548,    /* VAR_FORWARD_NO_CACHE  */
-    VAR_STUB_NO_CACHE = 549,       /* VAR_STUB_NO_CACHE  */
-    VAR_LOG_SERVFAIL = 550,        /* VAR_LOG_SERVFAIL  */
-    VAR_DENY_ANY = 551,            /* VAR_DENY_ANY  */
-    VAR_UNKNOWN_SERVER_TIME_LIMIT = 552, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
-    VAR_LOG_TAG_QUERYREPLY = 553,  /* VAR_LOG_TAG_QUERYREPLY  */
-    VAR_STREAM_WAIT_SIZE = 554,    /* VAR_STREAM_WAIT_SIZE  */
-    VAR_TLS_CIPHERS = 555,         /* VAR_TLS_CIPHERS  */
-    VAR_TLS_CIPHERSUITES = 556,    /* VAR_TLS_CIPHERSUITES  */
-    VAR_TLS_USE_SNI = 557,         /* VAR_TLS_USE_SNI  */
-    VAR_IPSET = 558,               /* VAR_IPSET  */
-    VAR_IPSET_NAME_V4 = 559,       /* VAR_IPSET_NAME_V4  */
-    VAR_IPSET_NAME_V6 = 560,       /* VAR_IPSET_NAME_V6  */
-    VAR_TLS_SESSION_TICKET_KEYS = 561, /* VAR_TLS_SESSION_TICKET_KEYS  */
-    VAR_RPZ = 562,                 /* VAR_RPZ  */
-    VAR_TAGS = 563,                /* VAR_TAGS  */
-    VAR_RPZ_ACTION_OVERRIDE = 564, /* VAR_RPZ_ACTION_OVERRIDE  */
-    VAR_RPZ_CNAME_OVERRIDE = 565,  /* VAR_RPZ_CNAME_OVERRIDE  */
-    VAR_RPZ_LOG = 566,             /* VAR_RPZ_LOG  */
-    VAR_RPZ_LOG_NAME = 567,        /* VAR_RPZ_LOG_NAME  */
-    VAR_DYNLIB = 568,              /* VAR_DYNLIB  */
-    VAR_DYNLIB_FILE = 569,         /* VAR_DYNLIB_FILE  */
-    VAR_EDNS_CLIENT_STRING = 570,  /* VAR_EDNS_CLIENT_STRING  */
-    VAR_EDNS_CLIENT_STRING_OPCODE = 571, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
-    VAR_NSID = 572,                /* VAR_NSID  */
-    VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE  */
-    VAR_ZONEMD_CHECK = 574,        /* VAR_ZONEMD_CHECK  */
-    VAR_ZONEMD_REJECT_ABSENCE = 575, /* VAR_ZONEMD_REJECT_ABSENCE  */
-    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 576 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
-  };
-  typedef enum yytokentype yytoken_kind_t;
-#endif
-/* Token kinds.  */
-#define YYEOF 0
-#define YYerror 256
-#define YYUNDEF 257
-#define SPACE 258
-#define LETTER 259
-#define NEWLINE 260
-#define COMMENT 261
-#define COLON 262
-#define ANY 263
-#define ZONESTR 264
-#define STRING_ARG 265
-#define VAR_FORCE_TOPLEVEL 266
-#define VAR_SERVER 267
-#define VAR_VERBOSITY 268
-#define VAR_NUM_THREADS 269
-#define VAR_PORT 270
-#define VAR_OUTGOING_RANGE 271
-#define VAR_INTERFACE 272
-#define VAR_PREFER_IP4 273
-#define VAR_DO_IP4 274
-#define VAR_DO_IP6 275
-#define VAR_PREFER_IP6 276
-#define VAR_DO_UDP 277
-#define VAR_DO_TCP 278
-#define VAR_TCP_MSS 279
-#define VAR_OUTGOING_TCP_MSS 280
-#define VAR_TCP_IDLE_TIMEOUT 281
-#define VAR_EDNS_TCP_KEEPALIVE 282
-#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283
-#define VAR_CHROOT 284
-#define VAR_USERNAME 285
-#define VAR_DIRECTORY 286
-#define VAR_LOGFILE 287
-#define VAR_PIDFILE 288
-#define VAR_MSG_CACHE_SIZE 289
-#define VAR_MSG_CACHE_SLABS 290
-#define VAR_NUM_QUERIES_PER_THREAD 291
-#define VAR_RRSET_CACHE_SIZE 292
-#define VAR_RRSET_CACHE_SLABS 293
-#define VAR_OUTGOING_NUM_TCP 294
-#define VAR_INFRA_HOST_TTL 295
-#define VAR_INFRA_LAME_TTL 296
-#define VAR_INFRA_CACHE_SLABS 297
-#define VAR_INFRA_CACHE_NUMHOSTS 298
-#define VAR_INFRA_CACHE_LAME_SIZE 299
-#define VAR_NAME 300
-#define VAR_STUB_ZONE 301
-#define VAR_STUB_HOST 302
-#define VAR_STUB_ADDR 303
-#define VAR_TARGET_FETCH_POLICY 304
-#define VAR_HARDEN_SHORT_BUFSIZE 305
-#define VAR_HARDEN_LARGE_QUERIES 306
-#define VAR_FORWARD_ZONE 307
-#define VAR_FORWARD_HOST 308
-#define VAR_FORWARD_ADDR 309
-#define VAR_DO_NOT_QUERY_ADDRESS 310
-#define VAR_HIDE_IDENTITY 311
-#define VAR_HIDE_VERSION 312
-#define VAR_IDENTITY 313
-#define VAR_VERSION 314
-#define VAR_HARDEN_GLUE 315
-#define VAR_MODULE_CONF 316
-#define VAR_TRUST_ANCHOR_FILE 317
-#define VAR_TRUST_ANCHOR 318
-#define VAR_VAL_OVERRIDE_DATE 319
-#define VAR_BOGUS_TTL 320
-#define VAR_VAL_CLEAN_ADDITIONAL 321
-#define VAR_VAL_PERMISSIVE_MODE 322
-#define VAR_INCOMING_NUM_TCP 323
-#define VAR_MSG_BUFFER_SIZE 324
-#define VAR_KEY_CACHE_SIZE 325
-#define VAR_KEY_CACHE_SLABS 326
-#define VAR_TRUSTED_KEYS_FILE 327
-#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328
-#define VAR_USE_SYSLOG 329
-#define VAR_OUTGOING_INTERFACE 330
-#define VAR_ROOT_HINTS 331
-#define VAR_DO_NOT_QUERY_LOCALHOST 332
-#define VAR_CACHE_MAX_TTL 333
-#define VAR_HARDEN_DNSSEC_STRIPPED 334
-#define VAR_ACCESS_CONTROL 335
-#define VAR_LOCAL_ZONE 336
-#define VAR_LOCAL_DATA 337
-#define VAR_INTERFACE_AUTOMATIC 338
-#define VAR_STATISTICS_INTERVAL 339
-#define VAR_DO_DAEMONIZE 340
-#define VAR_USE_CAPS_FOR_ID 341
-#define VAR_STATISTICS_CUMULATIVE 342
-#define VAR_OUTGOING_PORT_PERMIT 343
-#define VAR_OUTGOING_PORT_AVOID 344
-#define VAR_DLV_ANCHOR_FILE 345
-#define VAR_DLV_ANCHOR 346
-#define VAR_NEG_CACHE_SIZE 347
-#define VAR_HARDEN_REFERRAL_PATH 348
-#define VAR_PRIVATE_ADDRESS 349
-#define VAR_PRIVATE_DOMAIN 350
-#define VAR_REMOTE_CONTROL 351
-#define VAR_CONTROL_ENABLE 352
-#define VAR_CONTROL_INTERFACE 353
-#define VAR_CONTROL_PORT 354
-#define VAR_SERVER_KEY_FILE 355
-#define VAR_SERVER_CERT_FILE 356
-#define VAR_CONTROL_KEY_FILE 357
-#define VAR_CONTROL_CERT_FILE 358
-#define VAR_CONTROL_USE_CERT 359
-#define VAR_TCP_REUSE_TIMEOUT 360
-#define VAR_MAX_REUSE_TCP_QUERIES 361
-#define VAR_EXTENDED_STATISTICS 362
-#define VAR_LOCAL_DATA_PTR 363
-#define VAR_JOSTLE_TIMEOUT 364
-#define VAR_STUB_PRIME 365
-#define VAR_UNWANTED_REPLY_THRESHOLD 366
-#define VAR_LOG_TIME_ASCII 367
-#define VAR_DOMAIN_INSECURE 368
-#define VAR_PYTHON 369
-#define VAR_PYTHON_SCRIPT 370
-#define VAR_VAL_SIG_SKEW_MIN 371
-#define VAR_VAL_SIG_SKEW_MAX 372
-#define VAR_VAL_MAX_RESTART 373
-#define VAR_CACHE_MIN_TTL 374
-#define VAR_VAL_LOG_LEVEL 375
-#define VAR_AUTO_TRUST_ANCHOR_FILE 376
-#define VAR_KEEP_MISSING 377
-#define VAR_ADD_HOLDDOWN 378
-#define VAR_DEL_HOLDDOWN 379
-#define VAR_SO_RCVBUF 380
-#define VAR_EDNS_BUFFER_SIZE 381
-#define VAR_PREFETCH 382
-#define VAR_PREFETCH_KEY 383
-#define VAR_SO_SNDBUF 384
-#define VAR_SO_REUSEPORT 385
-#define VAR_HARDEN_BELOW_NXDOMAIN 386
-#define VAR_IGNORE_CD_FLAG 387
-#define VAR_LOG_QUERIES 388
-#define VAR_LOG_REPLIES 389
-#define VAR_LOG_LOCAL_ACTIONS 390
-#define VAR_TCP_UPSTREAM 391
-#define VAR_SSL_UPSTREAM 392
-#define VAR_TCP_AUTH_QUERY_TIMEOUT 393
-#define VAR_SSL_SERVICE_KEY 394
-#define VAR_SSL_SERVICE_PEM 395
-#define VAR_SSL_PORT 396
-#define VAR_FORWARD_FIRST 397
-#define VAR_STUB_SSL_UPSTREAM 398
-#define VAR_FORWARD_SSL_UPSTREAM 399
-#define VAR_TLS_CERT_BUNDLE 400
-#define VAR_STUB_TCP_UPSTREAM 401
-#define VAR_FORWARD_TCP_UPSTREAM 402
-#define VAR_HTTPS_PORT 403
-#define VAR_HTTP_ENDPOINT 404
-#define VAR_HTTP_MAX_STREAMS 405
-#define VAR_HTTP_QUERY_BUFFER_SIZE 406
-#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407
-#define VAR_HTTP_NODELAY 408
-#define VAR_HTTP_NOTLS_DOWNSTREAM 409
-#define VAR_STUB_FIRST 410
-#define VAR_MINIMAL_RESPONSES 411
-#define VAR_RRSET_ROUNDROBIN 412
-#define VAR_MAX_UDP_SIZE 413
-#define VAR_DELAY_CLOSE 414
-#define VAR_UDP_CONNECT 415
-#define VAR_UNBLOCK_LAN_ZONES 416
-#define VAR_INSECURE_LAN_ZONES 417
-#define VAR_INFRA_CACHE_MIN_RTT 418
-#define VAR_INFRA_KEEP_PROBING 419
-#define VAR_DNS64_PREFIX 420
-#define VAR_DNS64_SYNTHALL 421
-#define VAR_DNS64_IGNORE_AAAA 422
-#define VAR_DNSTAP 423
-#define VAR_DNSTAP_ENABLE 424
-#define VAR_DNSTAP_SOCKET_PATH 425
-#define VAR_DNSTAP_IP 426
-#define VAR_DNSTAP_TLS 427
-#define VAR_DNSTAP_TLS_SERVER_NAME 428
-#define VAR_DNSTAP_TLS_CERT_BUNDLE 429
-#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430
-#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431
-#define VAR_DNSTAP_SEND_IDENTITY 432
-#define VAR_DNSTAP_SEND_VERSION 433
-#define VAR_DNSTAP_BIDIRECTIONAL 434
-#define VAR_DNSTAP_IDENTITY 435
-#define VAR_DNSTAP_VERSION 436
-#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437
-#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438
-#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439
-#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440
-#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441
-#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442
-#define VAR_RESPONSE_IP_TAG 443
-#define VAR_RESPONSE_IP 444
-#define VAR_RESPONSE_IP_DATA 445
-#define VAR_HARDEN_ALGO_DOWNGRADE 446
-#define VAR_IP_TRANSPARENT 447
-#define VAR_IP_DSCP 448
-#define VAR_DISABLE_DNSSEC_LAME_CHECK 449
-#define VAR_IP_RATELIMIT 450
-#define VAR_IP_RATELIMIT_SLABS 451
-#define VAR_IP_RATELIMIT_SIZE 452
-#define VAR_RATELIMIT 453
-#define VAR_RATELIMIT_SLABS 454
-#define VAR_RATELIMIT_SIZE 455
-#define VAR_OUTBOUND_MSG_RETRY 456
-#define VAR_RATELIMIT_FOR_DOMAIN 457
-#define VAR_RATELIMIT_BELOW_DOMAIN 458
-#define VAR_IP_RATELIMIT_FACTOR 459
-#define VAR_RATELIMIT_FACTOR 460
-#define VAR_SEND_CLIENT_SUBNET 461
-#define VAR_CLIENT_SUBNET_ZONE 462
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 463
-#define VAR_CLIENT_SUBNET_OPCODE 464
-#define VAR_MAX_CLIENT_SUBNET_IPV4 465
-#define VAR_MAX_CLIENT_SUBNET_IPV6 466
-#define VAR_MIN_CLIENT_SUBNET_IPV4 467
-#define VAR_MIN_CLIENT_SUBNET_IPV6 468
-#define VAR_MAX_ECS_TREE_SIZE_IPV4 469
-#define VAR_MAX_ECS_TREE_SIZE_IPV6 470
-#define VAR_CAPS_WHITELIST 471
-#define VAR_CACHE_MAX_NEGATIVE_TTL 472
-#define VAR_PERMIT_SMALL_HOLDDOWN 473
-#define VAR_QNAME_MINIMISATION 474
-#define VAR_QNAME_MINIMISATION_STRICT 475
-#define VAR_IP_FREEBIND 476
-#define VAR_DEFINE_TAG 477
-#define VAR_LOCAL_ZONE_TAG 478
-#define VAR_ACCESS_CONTROL_TAG 479
-#define VAR_LOCAL_ZONE_OVERRIDE 480
-#define VAR_ACCESS_CONTROL_TAG_ACTION 481
-#define VAR_ACCESS_CONTROL_TAG_DATA 482
-#define VAR_VIEW 483
-#define VAR_ACCESS_CONTROL_VIEW 484
-#define VAR_VIEW_FIRST 485
-#define VAR_SERVE_EXPIRED 486
-#define VAR_SERVE_EXPIRED_TTL 487
-#define VAR_SERVE_EXPIRED_TTL_RESET 488
-#define VAR_SERVE_EXPIRED_REPLY_TTL 489
-#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 490
-#define VAR_SERVE_ORIGINAL_TTL 491
-#define VAR_FAKE_DSA 492
-#define VAR_FAKE_SHA1 493
-#define VAR_LOG_IDENTITY 494
-#define VAR_HIDE_TRUSTANCHOR 495
-#define VAR_HIDE_HTTP_USER_AGENT 496
-#define VAR_HTTP_USER_AGENT 497
-#define VAR_TRUST_ANCHOR_SIGNALING 498
-#define VAR_AGGRESSIVE_NSEC 499
-#define VAR_USE_SYSTEMD 500
-#define VAR_SHM_ENABLE 501
-#define VAR_SHM_KEY 502
-#define VAR_ROOT_KEY_SENTINEL 503
-#define VAR_DNSCRYPT 504
-#define VAR_DNSCRYPT_ENABLE 505
-#define VAR_DNSCRYPT_PORT 506
-#define VAR_DNSCRYPT_PROVIDER 507
-#define VAR_DNSCRYPT_SECRET_KEY 508
-#define VAR_DNSCRYPT_PROVIDER_CERT 509
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 510
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 511
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 512
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 513
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 514
-#define VAR_PAD_RESPONSES 515
-#define VAR_PAD_RESPONSES_BLOCK_SIZE 516
-#define VAR_PAD_QUERIES 517
-#define VAR_PAD_QUERIES_BLOCK_SIZE 518
-#define VAR_IPSECMOD_ENABLED 519
-#define VAR_IPSECMOD_HOOK 520
-#define VAR_IPSECMOD_IGNORE_BOGUS 521
-#define VAR_IPSECMOD_MAX_TTL 522
-#define VAR_IPSECMOD_WHITELIST 523
-#define VAR_IPSECMOD_STRICT 524
-#define VAR_CACHEDB 525
-#define VAR_CACHEDB_BACKEND 526
-#define VAR_CACHEDB_SECRETSEED 527
-#define VAR_CACHEDB_REDISHOST 528
-#define VAR_CACHEDB_REDISPORT 529
-#define VAR_CACHEDB_REDISTIMEOUT 530
-#define VAR_CACHEDB_REDISEXPIRERECORDS 531
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 532
-#define VAR_FOR_UPSTREAM 533
-#define VAR_AUTH_ZONE 534
-#define VAR_ZONEFILE 535
-#define VAR_MASTER 536
-#define VAR_URL 537
-#define VAR_FOR_DOWNSTREAM 538
-#define VAR_FALLBACK_ENABLED 539
-#define VAR_TLS_ADDITIONAL_PORT 540
-#define VAR_LOW_RTT 541
-#define VAR_LOW_RTT_PERMIL 542
-#define VAR_FAST_SERVER_PERMIL 543
-#define VAR_FAST_SERVER_NUM 544
-#define VAR_ALLOW_NOTIFY 545
-#define VAR_TLS_WIN_CERT 546
-#define VAR_TCP_CONNECTION_LIMIT 547
-#define VAR_FORWARD_NO_CACHE 548
-#define VAR_STUB_NO_CACHE 549
-#define VAR_LOG_SERVFAIL 550
-#define VAR_DENY_ANY 551
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 552
-#define VAR_LOG_TAG_QUERYREPLY 553
-#define VAR_STREAM_WAIT_SIZE 554
-#define VAR_TLS_CIPHERS 555
-#define VAR_TLS_CIPHERSUITES 556
-#define VAR_TLS_USE_SNI 557
-#define VAR_IPSET 558
-#define VAR_IPSET_NAME_V4 559
-#define VAR_IPSET_NAME_V6 560
-#define VAR_TLS_SESSION_TICKET_KEYS 561
-#define VAR_RPZ 562
-#define VAR_TAGS 563
-#define VAR_RPZ_ACTION_OVERRIDE 564
-#define VAR_RPZ_CNAME_OVERRIDE 565
-#define VAR_RPZ_LOG 566
-#define VAR_RPZ_LOG_NAME 567
-#define VAR_DYNLIB 568
-#define VAR_DYNLIB_FILE 569
-#define VAR_EDNS_CLIENT_STRING 570
-#define VAR_EDNS_CLIENT_STRING_OPCODE 571
-#define VAR_NSID 572
-#define VAR_ZONEMD_PERMISSIVE_MODE 573
-#define VAR_ZONEMD_CHECK 574
-#define VAR_ZONEMD_REJECT_ABSENCE 575
-#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 576
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 66 "./util/configparser.y"
-
-       char*   str;
-
-#line 798 "util/configparser.c"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED  */
+#include "configparser.h"
 /* Symbol kind.  */
 enum yysymbol_kind_t
 {
@@ -1018,469 +330,473 @@ enum yysymbol_kind_t
   YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 203, /* VAR_RATELIMIT_BELOW_DOMAIN  */
   YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 204,  /* VAR_IP_RATELIMIT_FACTOR  */
   YYSYMBOL_VAR_RATELIMIT_FACTOR = 205,     /* VAR_RATELIMIT_FACTOR  */
-  YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 206,   /* VAR_SEND_CLIENT_SUBNET  */
-  YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 207,   /* VAR_CLIENT_SUBNET_ZONE  */
-  YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 208, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
-  YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 209, /* VAR_CLIENT_SUBNET_OPCODE  */
-  YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 210, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
-  YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 211, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
-  YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 212, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
-  YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 213, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
-  YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 214, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
-  YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 215, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
-  YYSYMBOL_VAR_CAPS_WHITELIST = 216,       /* VAR_CAPS_WHITELIST  */
-  YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 217, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
-  YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 218, /* VAR_PERMIT_SMALL_HOLDDOWN  */
-  YYSYMBOL_VAR_QNAME_MINIMISATION = 219,   /* VAR_QNAME_MINIMISATION  */
-  YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 220, /* VAR_QNAME_MINIMISATION_STRICT  */
-  YYSYMBOL_VAR_IP_FREEBIND = 221,          /* VAR_IP_FREEBIND  */
-  YYSYMBOL_VAR_DEFINE_TAG = 222,           /* VAR_DEFINE_TAG  */
-  YYSYMBOL_VAR_LOCAL_ZONE_TAG = 223,       /* VAR_LOCAL_ZONE_TAG  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 224,   /* VAR_ACCESS_CONTROL_TAG  */
-  YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 225,  /* VAR_LOCAL_ZONE_OVERRIDE  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 226, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 227, /* VAR_ACCESS_CONTROL_TAG_DATA  */
-  YYSYMBOL_VAR_VIEW = 228,                 /* VAR_VIEW  */
-  YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 229,  /* VAR_ACCESS_CONTROL_VIEW  */
-  YYSYMBOL_VAR_VIEW_FIRST = 230,           /* VAR_VIEW_FIRST  */
-  YYSYMBOL_VAR_SERVE_EXPIRED = 231,        /* VAR_SERVE_EXPIRED  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 232,    /* VAR_SERVE_EXPIRED_TTL  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 233, /* VAR_SERVE_EXPIRED_TTL_RESET  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 234, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
-  YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 235, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
-  YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 236,   /* VAR_SERVE_ORIGINAL_TTL  */
-  YYSYMBOL_VAR_FAKE_DSA = 237,             /* VAR_FAKE_DSA  */
-  YYSYMBOL_VAR_FAKE_SHA1 = 238,            /* VAR_FAKE_SHA1  */
-  YYSYMBOL_VAR_LOG_IDENTITY = 239,         /* VAR_LOG_IDENTITY  */
-  YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 240,     /* VAR_HIDE_TRUSTANCHOR  */
-  YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 241, /* VAR_HIDE_HTTP_USER_AGENT  */
-  YYSYMBOL_VAR_HTTP_USER_AGENT = 242,      /* VAR_HTTP_USER_AGENT  */
-  YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 243, /* VAR_TRUST_ANCHOR_SIGNALING  */
-  YYSYMBOL_VAR_AGGRESSIVE_NSEC = 244,      /* VAR_AGGRESSIVE_NSEC  */
-  YYSYMBOL_VAR_USE_SYSTEMD = 245,          /* VAR_USE_SYSTEMD  */
-  YYSYMBOL_VAR_SHM_ENABLE = 246,           /* VAR_SHM_ENABLE  */
-  YYSYMBOL_VAR_SHM_KEY = 247,              /* VAR_SHM_KEY  */
-  YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 248,    /* VAR_ROOT_KEY_SENTINEL  */
-  YYSYMBOL_VAR_DNSCRYPT = 249,             /* VAR_DNSCRYPT  */
-  YYSYMBOL_VAR_DNSCRYPT_ENABLE = 250,      /* VAR_DNSCRYPT_ENABLE  */
-  YYSYMBOL_VAR_DNSCRYPT_PORT = 251,        /* VAR_DNSCRYPT_PORT  */
-  YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 252,    /* VAR_DNSCRYPT_PROVIDER  */
-  YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 253,  /* VAR_DNSCRYPT_SECRET_KEY  */
-  YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 254, /* VAR_DNSCRYPT_PROVIDER_CERT  */
-  YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 255, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
-  YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 256, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
-  YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 257, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
-  YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 258, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
-  YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 259, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
-  YYSYMBOL_VAR_PAD_RESPONSES = 260,        /* VAR_PAD_RESPONSES  */
-  YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 261, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
-  YYSYMBOL_VAR_PAD_QUERIES = 262,          /* VAR_PAD_QUERIES  */
-  YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 263, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
-  YYSYMBOL_VAR_IPSECMOD_ENABLED = 264,     /* VAR_IPSECMOD_ENABLED  */
-  YYSYMBOL_VAR_IPSECMOD_HOOK = 265,        /* VAR_IPSECMOD_HOOK  */
-  YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 266, /* VAR_IPSECMOD_IGNORE_BOGUS  */
-  YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 267,     /* VAR_IPSECMOD_MAX_TTL  */
-  YYSYMBOL_VAR_IPSECMOD_WHITELIST = 268,   /* VAR_IPSECMOD_WHITELIST  */
-  YYSYMBOL_VAR_IPSECMOD_STRICT = 269,      /* VAR_IPSECMOD_STRICT  */
-  YYSYMBOL_VAR_CACHEDB = 270,              /* VAR_CACHEDB  */
-  YYSYMBOL_VAR_CACHEDB_BACKEND = 271,      /* VAR_CACHEDB_BACKEND  */
-  YYSYMBOL_VAR_CACHEDB_SECRETSEED = 272,   /* VAR_CACHEDB_SECRETSEED  */
-  YYSYMBOL_VAR_CACHEDB_REDISHOST = 273,    /* VAR_CACHEDB_REDISHOST  */
-  YYSYMBOL_VAR_CACHEDB_REDISPORT = 274,    /* VAR_CACHEDB_REDISPORT  */
-  YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 275, /* VAR_CACHEDB_REDISTIMEOUT  */
-  YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 276, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
-  YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 277, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
-  YYSYMBOL_VAR_FOR_UPSTREAM = 278,         /* VAR_FOR_UPSTREAM  */
-  YYSYMBOL_VAR_AUTH_ZONE = 279,            /* VAR_AUTH_ZONE  */
-  YYSYMBOL_VAR_ZONEFILE = 280,             /* VAR_ZONEFILE  */
-  YYSYMBOL_VAR_MASTER = 281,               /* VAR_MASTER  */
-  YYSYMBOL_VAR_URL = 282,                  /* VAR_URL  */
-  YYSYMBOL_VAR_FOR_DOWNSTREAM = 283,       /* VAR_FOR_DOWNSTREAM  */
-  YYSYMBOL_VAR_FALLBACK_ENABLED = 284,     /* VAR_FALLBACK_ENABLED  */
-  YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 285,  /* VAR_TLS_ADDITIONAL_PORT  */
-  YYSYMBOL_VAR_LOW_RTT = 286,              /* VAR_LOW_RTT  */
-  YYSYMBOL_VAR_LOW_RTT_PERMIL = 287,       /* VAR_LOW_RTT_PERMIL  */
-  YYSYMBOL_VAR_FAST_SERVER_PERMIL = 288,   /* VAR_FAST_SERVER_PERMIL  */
-  YYSYMBOL_VAR_FAST_SERVER_NUM = 289,      /* VAR_FAST_SERVER_NUM  */
-  YYSYMBOL_VAR_ALLOW_NOTIFY = 290,         /* VAR_ALLOW_NOTIFY  */
-  YYSYMBOL_VAR_TLS_WIN_CERT = 291,         /* VAR_TLS_WIN_CERT  */
-  YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 292, /* VAR_TCP_CONNECTION_LIMIT  */
-  YYSYMBOL_VAR_FORWARD_NO_CACHE = 293,     /* VAR_FORWARD_NO_CACHE  */
-  YYSYMBOL_VAR_STUB_NO_CACHE = 294,        /* VAR_STUB_NO_CACHE  */
-  YYSYMBOL_VAR_LOG_SERVFAIL = 295,         /* VAR_LOG_SERVFAIL  */
-  YYSYMBOL_VAR_DENY_ANY = 296,             /* VAR_DENY_ANY  */
-  YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 297, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
-  YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 298,   /* VAR_LOG_TAG_QUERYREPLY  */
-  YYSYMBOL_VAR_STREAM_WAIT_SIZE = 299,     /* VAR_STREAM_WAIT_SIZE  */
-  YYSYMBOL_VAR_TLS_CIPHERS = 300,          /* VAR_TLS_CIPHERS  */
-  YYSYMBOL_VAR_TLS_CIPHERSUITES = 301,     /* VAR_TLS_CIPHERSUITES  */
-  YYSYMBOL_VAR_TLS_USE_SNI = 302,          /* VAR_TLS_USE_SNI  */
-  YYSYMBOL_VAR_IPSET = 303,                /* VAR_IPSET  */
-  YYSYMBOL_VAR_IPSET_NAME_V4 = 304,        /* VAR_IPSET_NAME_V4  */
-  YYSYMBOL_VAR_IPSET_NAME_V6 = 305,        /* VAR_IPSET_NAME_V6  */
-  YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 306, /* VAR_TLS_SESSION_TICKET_KEYS  */
-  YYSYMBOL_VAR_RPZ = 307,                  /* VAR_RPZ  */
-  YYSYMBOL_VAR_TAGS = 308,                 /* VAR_TAGS  */
-  YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 309,  /* VAR_RPZ_ACTION_OVERRIDE  */
-  YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 310,   /* VAR_RPZ_CNAME_OVERRIDE  */
-  YYSYMBOL_VAR_RPZ_LOG = 311,              /* VAR_RPZ_LOG  */
-  YYSYMBOL_VAR_RPZ_LOG_NAME = 312,         /* VAR_RPZ_LOG_NAME  */
-  YYSYMBOL_VAR_DYNLIB = 313,               /* VAR_DYNLIB  */
-  YYSYMBOL_VAR_DYNLIB_FILE = 314,          /* VAR_DYNLIB_FILE  */
-  YYSYMBOL_VAR_EDNS_CLIENT_STRING = 315,   /* VAR_EDNS_CLIENT_STRING  */
-  YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 316, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
-  YYSYMBOL_VAR_NSID = 317,                 /* VAR_NSID  */
-  YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 318, /* VAR_ZONEMD_PERMISSIVE_MODE  */
-  YYSYMBOL_VAR_ZONEMD_CHECK = 319,         /* VAR_ZONEMD_CHECK  */
-  YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 320, /* VAR_ZONEMD_REJECT_ABSENCE  */
-  YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 321, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
-  YYSYMBOL_YYACCEPT = 322,                 /* $accept  */
-  YYSYMBOL_toplevelvars = 323,             /* toplevelvars  */
-  YYSYMBOL_toplevelvar = 324,              /* toplevelvar  */
-  YYSYMBOL_force_toplevel = 325,           /* force_toplevel  */
-  YYSYMBOL_serverstart = 326,              /* serverstart  */
-  YYSYMBOL_contents_server = 327,          /* contents_server  */
-  YYSYMBOL_content_server = 328,           /* content_server  */
-  YYSYMBOL_stubstart = 329,                /* stubstart  */
-  YYSYMBOL_contents_stub = 330,            /* contents_stub  */
-  YYSYMBOL_content_stub = 331,             /* content_stub  */
-  YYSYMBOL_forwardstart = 332,             /* forwardstart  */
-  YYSYMBOL_contents_forward = 333,         /* contents_forward  */
-  YYSYMBOL_content_forward = 334,          /* content_forward  */
-  YYSYMBOL_viewstart = 335,                /* viewstart  */
-  YYSYMBOL_contents_view = 336,            /* contents_view  */
-  YYSYMBOL_content_view = 337,             /* content_view  */
-  YYSYMBOL_authstart = 338,                /* authstart  */
-  YYSYMBOL_contents_auth = 339,            /* contents_auth  */
-  YYSYMBOL_content_auth = 340,             /* content_auth  */
-  YYSYMBOL_rpz_tag = 341,                  /* rpz_tag  */
-  YYSYMBOL_rpz_action_override = 342,      /* rpz_action_override  */
-  YYSYMBOL_rpz_cname_override = 343,       /* rpz_cname_override  */
-  YYSYMBOL_rpz_log = 344,                  /* rpz_log  */
-  YYSYMBOL_rpz_log_name = 345,             /* rpz_log_name  */
-  YYSYMBOL_rpz_signal_nxdomain_ra = 346,   /* rpz_signal_nxdomain_ra  */
-  YYSYMBOL_rpzstart = 347,                 /* rpzstart  */
-  YYSYMBOL_contents_rpz = 348,             /* contents_rpz  */
-  YYSYMBOL_content_rpz = 349,              /* content_rpz  */
-  YYSYMBOL_server_num_threads = 350,       /* server_num_threads  */
-  YYSYMBOL_server_verbosity = 351,         /* server_verbosity  */
-  YYSYMBOL_server_statistics_interval = 352, /* server_statistics_interval  */
-  YYSYMBOL_server_statistics_cumulative = 353, /* server_statistics_cumulative  */
-  YYSYMBOL_server_extended_statistics = 354, /* server_extended_statistics  */
-  YYSYMBOL_server_shm_enable = 355,        /* server_shm_enable  */
-  YYSYMBOL_server_shm_key = 356,           /* server_shm_key  */
-  YYSYMBOL_server_port = 357,              /* server_port  */
-  YYSYMBOL_server_send_client_subnet = 358, /* server_send_client_subnet  */
-  YYSYMBOL_server_client_subnet_zone = 359, /* server_client_subnet_zone  */
-  YYSYMBOL_server_client_subnet_always_forward = 360, /* server_client_subnet_always_forward  */
-  YYSYMBOL_server_client_subnet_opcode = 361, /* server_client_subnet_opcode  */
-  YYSYMBOL_server_max_client_subnet_ipv4 = 362, /* server_max_client_subnet_ipv4  */
-  YYSYMBOL_server_max_client_subnet_ipv6 = 363, /* server_max_client_subnet_ipv6  */
-  YYSYMBOL_server_min_client_subnet_ipv4 = 364, /* server_min_client_subnet_ipv4  */
-  YYSYMBOL_server_min_client_subnet_ipv6 = 365, /* server_min_client_subnet_ipv6  */
-  YYSYMBOL_server_max_ecs_tree_size_ipv4 = 366, /* server_max_ecs_tree_size_ipv4  */
-  YYSYMBOL_server_max_ecs_tree_size_ipv6 = 367, /* server_max_ecs_tree_size_ipv6  */
-  YYSYMBOL_server_interface = 368,         /* server_interface  */
-  YYSYMBOL_server_outgoing_interface = 369, /* server_outgoing_interface  */
-  YYSYMBOL_server_outgoing_range = 370,    /* server_outgoing_range  */
-  YYSYMBOL_server_outgoing_port_permit = 371, /* server_outgoing_port_permit  */
-  YYSYMBOL_server_outgoing_port_avoid = 372, /* server_outgoing_port_avoid  */
-  YYSYMBOL_server_outgoing_num_tcp = 373,  /* server_outgoing_num_tcp  */
-  YYSYMBOL_server_incoming_num_tcp = 374,  /* server_incoming_num_tcp  */
-  YYSYMBOL_server_interface_automatic = 375, /* server_interface_automatic  */
-  YYSYMBOL_server_do_ip4 = 376,            /* server_do_ip4  */
-  YYSYMBOL_server_do_ip6 = 377,            /* server_do_ip6  */
-  YYSYMBOL_server_do_udp = 378,            /* server_do_udp  */
-  YYSYMBOL_server_do_tcp = 379,            /* server_do_tcp  */
-  YYSYMBOL_server_prefer_ip4 = 380,        /* server_prefer_ip4  */
-  YYSYMBOL_server_prefer_ip6 = 381,        /* server_prefer_ip6  */
-  YYSYMBOL_server_tcp_mss = 382,           /* server_tcp_mss  */
-  YYSYMBOL_server_outgoing_tcp_mss = 383,  /* server_outgoing_tcp_mss  */
-  YYSYMBOL_server_tcp_idle_timeout = 384,  /* server_tcp_idle_timeout  */
-  YYSYMBOL_server_max_reuse_tcp_queries = 385, /* server_max_reuse_tcp_queries  */
-  YYSYMBOL_server_tcp_reuse_timeout = 386, /* server_tcp_reuse_timeout  */
-  YYSYMBOL_server_tcp_auth_query_timeout = 387, /* server_tcp_auth_query_timeout  */
-  YYSYMBOL_server_tcp_keepalive = 388,     /* server_tcp_keepalive  */
-  YYSYMBOL_server_tcp_keepalive_timeout = 389, /* server_tcp_keepalive_timeout  */
-  YYSYMBOL_server_tcp_upstream = 390,      /* server_tcp_upstream  */
-  YYSYMBOL_server_udp_upstream_without_downstream = 391, /* server_udp_upstream_without_downstream  */
-  YYSYMBOL_server_ssl_upstream = 392,      /* server_ssl_upstream  */
-  YYSYMBOL_server_ssl_service_key = 393,   /* server_ssl_service_key  */
-  YYSYMBOL_server_ssl_service_pem = 394,   /* server_ssl_service_pem  */
-  YYSYMBOL_server_ssl_port = 395,          /* server_ssl_port  */
-  YYSYMBOL_server_tls_cert_bundle = 396,   /* server_tls_cert_bundle  */
-  YYSYMBOL_server_tls_win_cert = 397,      /* server_tls_win_cert  */
-  YYSYMBOL_server_tls_additional_port = 398, /* server_tls_additional_port  */
-  YYSYMBOL_server_tls_ciphers = 399,       /* server_tls_ciphers  */
-  YYSYMBOL_server_tls_ciphersuites = 400,  /* server_tls_ciphersuites  */
-  YYSYMBOL_server_tls_session_ticket_keys = 401, /* server_tls_session_ticket_keys  */
-  YYSYMBOL_server_tls_use_sni = 402,       /* server_tls_use_sni  */
-  YYSYMBOL_server_https_port = 403,        /* server_https_port  */
-  YYSYMBOL_server_http_endpoint = 404,     /* server_http_endpoint  */
-  YYSYMBOL_server_http_max_streams = 405,  /* server_http_max_streams  */
-  YYSYMBOL_server_http_query_buffer_size = 406, /* server_http_query_buffer_size  */
-  YYSYMBOL_server_http_response_buffer_size = 407, /* server_http_response_buffer_size  */
-  YYSYMBOL_server_http_nodelay = 408,      /* server_http_nodelay  */
-  YYSYMBOL_server_http_notls_downstream = 409, /* server_http_notls_downstream  */
-  YYSYMBOL_server_use_systemd = 410,       /* server_use_systemd  */
-  YYSYMBOL_server_do_daemonize = 411,      /* server_do_daemonize  */
-  YYSYMBOL_server_use_syslog = 412,        /* server_use_syslog  */
-  YYSYMBOL_server_log_time_ascii = 413,    /* server_log_time_ascii  */
-  YYSYMBOL_server_log_queries = 414,       /* server_log_queries  */
-  YYSYMBOL_server_log_replies = 415,       /* server_log_replies  */
-  YYSYMBOL_server_log_tag_queryreply = 416, /* server_log_tag_queryreply  */
-  YYSYMBOL_server_log_servfail = 417,      /* server_log_servfail  */
-  YYSYMBOL_server_log_local_actions = 418, /* server_log_local_actions  */
-  YYSYMBOL_server_chroot = 419,            /* server_chroot  */
-  YYSYMBOL_server_username = 420,          /* server_username  */
-  YYSYMBOL_server_directory = 421,         /* server_directory  */
-  YYSYMBOL_server_logfile = 422,           /* server_logfile  */
-  YYSYMBOL_server_pidfile = 423,           /* server_pidfile  */
-  YYSYMBOL_server_root_hints = 424,        /* server_root_hints  */
-  YYSYMBOL_server_dlv_anchor_file = 425,   /* server_dlv_anchor_file  */
-  YYSYMBOL_server_dlv_anchor = 426,        /* server_dlv_anchor  */
-  YYSYMBOL_server_auto_trust_anchor_file = 427, /* server_auto_trust_anchor_file  */
-  YYSYMBOL_server_trust_anchor_file = 428, /* server_trust_anchor_file  */
-  YYSYMBOL_server_trusted_keys_file = 429, /* server_trusted_keys_file  */
-  YYSYMBOL_server_trust_anchor = 430,      /* server_trust_anchor  */
-  YYSYMBOL_server_trust_anchor_signaling = 431, /* server_trust_anchor_signaling  */
-  YYSYMBOL_server_root_key_sentinel = 432, /* server_root_key_sentinel  */
-  YYSYMBOL_server_domain_insecure = 433,   /* server_domain_insecure  */
-  YYSYMBOL_server_hide_identity = 434,     /* server_hide_identity  */
-  YYSYMBOL_server_hide_version = 435,      /* server_hide_version  */
-  YYSYMBOL_server_hide_trustanchor = 436,  /* server_hide_trustanchor  */
-  YYSYMBOL_server_hide_http_user_agent = 437, /* server_hide_http_user_agent  */
-  YYSYMBOL_server_identity = 438,          /* server_identity  */
-  YYSYMBOL_server_version = 439,           /* server_version  */
-  YYSYMBOL_server_http_user_agent = 440,   /* server_http_user_agent  */
-  YYSYMBOL_server_nsid = 441,              /* server_nsid  */
-  YYSYMBOL_server_so_rcvbuf = 442,         /* server_so_rcvbuf  */
-  YYSYMBOL_server_so_sndbuf = 443,         /* server_so_sndbuf  */
-  YYSYMBOL_server_so_reuseport = 444,      /* server_so_reuseport  */
-  YYSYMBOL_server_ip_transparent = 445,    /* server_ip_transparent  */
-  YYSYMBOL_server_ip_freebind = 446,       /* server_ip_freebind  */
-  YYSYMBOL_server_ip_dscp = 447,           /* server_ip_dscp  */
-  YYSYMBOL_server_stream_wait_size = 448,  /* server_stream_wait_size  */
-  YYSYMBOL_server_edns_buffer_size = 449,  /* server_edns_buffer_size  */
-  YYSYMBOL_server_msg_buffer_size = 450,   /* server_msg_buffer_size  */
-  YYSYMBOL_server_msg_cache_size = 451,    /* server_msg_cache_size  */
-  YYSYMBOL_server_msg_cache_slabs = 452,   /* server_msg_cache_slabs  */
-  YYSYMBOL_server_num_queries_per_thread = 453, /* server_num_queries_per_thread  */
-  YYSYMBOL_server_jostle_timeout = 454,    /* server_jostle_timeout  */
-  YYSYMBOL_server_delay_close = 455,       /* server_delay_close  */
-  YYSYMBOL_server_udp_connect = 456,       /* server_udp_connect  */
-  YYSYMBOL_server_unblock_lan_zones = 457, /* server_unblock_lan_zones  */
-  YYSYMBOL_server_insecure_lan_zones = 458, /* server_insecure_lan_zones  */
-  YYSYMBOL_server_rrset_cache_size = 459,  /* server_rrset_cache_size  */
-  YYSYMBOL_server_rrset_cache_slabs = 460, /* server_rrset_cache_slabs  */
-  YYSYMBOL_server_infra_host_ttl = 461,    /* server_infra_host_ttl  */
-  YYSYMBOL_server_infra_lame_ttl = 462,    /* server_infra_lame_ttl  */
-  YYSYMBOL_server_infra_cache_numhosts = 463, /* server_infra_cache_numhosts  */
-  YYSYMBOL_server_infra_cache_lame_size = 464, /* server_infra_cache_lame_size  */
-  YYSYMBOL_server_infra_cache_slabs = 465, /* server_infra_cache_slabs  */
-  YYSYMBOL_server_infra_cache_min_rtt = 466, /* server_infra_cache_min_rtt  */
-  YYSYMBOL_server_infra_keep_probing = 467, /* server_infra_keep_probing  */
-  YYSYMBOL_server_target_fetch_policy = 468, /* server_target_fetch_policy  */
-  YYSYMBOL_server_harden_short_bufsize = 469, /* server_harden_short_bufsize  */
-  YYSYMBOL_server_harden_large_queries = 470, /* server_harden_large_queries  */
-  YYSYMBOL_server_harden_glue = 471,       /* server_harden_glue  */
-  YYSYMBOL_server_harden_dnssec_stripped = 472, /* server_harden_dnssec_stripped  */
-  YYSYMBOL_server_harden_below_nxdomain = 473, /* server_harden_below_nxdomain  */
-  YYSYMBOL_server_harden_referral_path = 474, /* server_harden_referral_path  */
-  YYSYMBOL_server_harden_algo_downgrade = 475, /* server_harden_algo_downgrade  */
-  YYSYMBOL_server_use_caps_for_id = 476,   /* server_use_caps_for_id  */
-  YYSYMBOL_server_caps_whitelist = 477,    /* server_caps_whitelist  */
-  YYSYMBOL_server_private_address = 478,   /* server_private_address  */
-  YYSYMBOL_server_private_domain = 479,    /* server_private_domain  */
-  YYSYMBOL_server_prefetch = 480,          /* server_prefetch  */
-  YYSYMBOL_server_prefetch_key = 481,      /* server_prefetch_key  */
-  YYSYMBOL_server_deny_any = 482,          /* server_deny_any  */
-  YYSYMBOL_server_unwanted_reply_threshold = 483, /* server_unwanted_reply_threshold  */
-  YYSYMBOL_server_do_not_query_address = 484, /* server_do_not_query_address  */
-  YYSYMBOL_server_do_not_query_localhost = 485, /* server_do_not_query_localhost  */
-  YYSYMBOL_server_access_control = 486,    /* server_access_control  */
-  YYSYMBOL_server_module_conf = 487,       /* server_module_conf  */
-  YYSYMBOL_server_val_override_date = 488, /* server_val_override_date  */
-  YYSYMBOL_server_val_sig_skew_min = 489,  /* server_val_sig_skew_min  */
-  YYSYMBOL_server_val_sig_skew_max = 490,  /* server_val_sig_skew_max  */
-  YYSYMBOL_server_val_max_restart = 491,   /* server_val_max_restart  */
-  YYSYMBOL_server_cache_max_ttl = 492,     /* server_cache_max_ttl  */
-  YYSYMBOL_server_cache_max_negative_ttl = 493, /* server_cache_max_negative_ttl  */
-  YYSYMBOL_server_cache_min_ttl = 494,     /* server_cache_min_ttl  */
-  YYSYMBOL_server_bogus_ttl = 495,         /* server_bogus_ttl  */
-  YYSYMBOL_server_val_clean_additional = 496, /* server_val_clean_additional  */
-  YYSYMBOL_server_val_permissive_mode = 497, /* server_val_permissive_mode  */
-  YYSYMBOL_server_aggressive_nsec = 498,   /* server_aggressive_nsec  */
-  YYSYMBOL_server_ignore_cd_flag = 499,    /* server_ignore_cd_flag  */
-  YYSYMBOL_server_serve_expired = 500,     /* server_serve_expired  */
-  YYSYMBOL_server_serve_expired_ttl = 501, /* server_serve_expired_ttl  */
-  YYSYMBOL_server_serve_expired_ttl_reset = 502, /* server_serve_expired_ttl_reset  */
-  YYSYMBOL_server_serve_expired_reply_ttl = 503, /* server_serve_expired_reply_ttl  */
-  YYSYMBOL_server_serve_expired_client_timeout = 504, /* server_serve_expired_client_timeout  */
-  YYSYMBOL_server_serve_original_ttl = 505, /* server_serve_original_ttl  */
-  YYSYMBOL_server_fake_dsa = 506,          /* server_fake_dsa  */
-  YYSYMBOL_server_fake_sha1 = 507,         /* server_fake_sha1  */
-  YYSYMBOL_server_val_log_level = 508,     /* server_val_log_level  */
-  YYSYMBOL_server_val_nsec3_keysize_iterations = 509, /* server_val_nsec3_keysize_iterations  */
-  YYSYMBOL_server_zonemd_permissive_mode = 510, /* server_zonemd_permissive_mode  */
-  YYSYMBOL_server_add_holddown = 511,      /* server_add_holddown  */
-  YYSYMBOL_server_del_holddown = 512,      /* server_del_holddown  */
-  YYSYMBOL_server_keep_missing = 513,      /* server_keep_missing  */
-  YYSYMBOL_server_permit_small_holddown = 514, /* server_permit_small_holddown  */
-  YYSYMBOL_server_key_cache_size = 515,    /* server_key_cache_size  */
-  YYSYMBOL_server_key_cache_slabs = 516,   /* server_key_cache_slabs  */
-  YYSYMBOL_server_neg_cache_size = 517,    /* server_neg_cache_size  */
-  YYSYMBOL_server_local_zone = 518,        /* server_local_zone  */
-  YYSYMBOL_server_local_data = 519,        /* server_local_data  */
-  YYSYMBOL_server_local_data_ptr = 520,    /* server_local_data_ptr  */
-  YYSYMBOL_server_minimal_responses = 521, /* server_minimal_responses  */
-  YYSYMBOL_server_rrset_roundrobin = 522,  /* server_rrset_roundrobin  */
-  YYSYMBOL_server_unknown_server_time_limit = 523, /* server_unknown_server_time_limit  */
-  YYSYMBOL_server_max_udp_size = 524,      /* server_max_udp_size  */
-  YYSYMBOL_server_dns64_prefix = 525,      /* server_dns64_prefix  */
-  YYSYMBOL_server_dns64_synthall = 526,    /* server_dns64_synthall  */
-  YYSYMBOL_server_dns64_ignore_aaaa = 527, /* server_dns64_ignore_aaaa  */
-  YYSYMBOL_server_define_tag = 528,        /* server_define_tag  */
-  YYSYMBOL_server_local_zone_tag = 529,    /* server_local_zone_tag  */
-  YYSYMBOL_server_access_control_tag = 530, /* server_access_control_tag  */
-  YYSYMBOL_server_access_control_tag_action = 531, /* server_access_control_tag_action  */
-  YYSYMBOL_server_access_control_tag_data = 532, /* server_access_control_tag_data  */
-  YYSYMBOL_server_local_zone_override = 533, /* server_local_zone_override  */
-  YYSYMBOL_server_access_control_view = 534, /* server_access_control_view  */
-  YYSYMBOL_server_response_ip_tag = 535,   /* server_response_ip_tag  */
-  YYSYMBOL_server_ip_ratelimit = 536,      /* server_ip_ratelimit  */
-  YYSYMBOL_server_ratelimit = 537,         /* server_ratelimit  */
-  YYSYMBOL_server_ip_ratelimit_size = 538, /* server_ip_ratelimit_size  */
-  YYSYMBOL_server_ratelimit_size = 539,    /* server_ratelimit_size  */
-  YYSYMBOL_server_ip_ratelimit_slabs = 540, /* server_ip_ratelimit_slabs  */
-  YYSYMBOL_server_ratelimit_slabs = 541,   /* server_ratelimit_slabs  */
-  YYSYMBOL_server_ratelimit_for_domain = 542, /* server_ratelimit_for_domain  */
-  YYSYMBOL_server_ratelimit_below_domain = 543, /* server_ratelimit_below_domain  */
-  YYSYMBOL_server_ip_ratelimit_factor = 544, /* server_ip_ratelimit_factor  */
-  YYSYMBOL_server_ratelimit_factor = 545,  /* server_ratelimit_factor  */
-  YYSYMBOL_server_outbound_msg_retry = 546, /* server_outbound_msg_retry  */
-  YYSYMBOL_server_low_rtt = 547,           /* server_low_rtt  */
-  YYSYMBOL_server_fast_server_num = 548,   /* server_fast_server_num  */
-  YYSYMBOL_server_fast_server_permil = 549, /* server_fast_server_permil  */
-  YYSYMBOL_server_qname_minimisation = 550, /* server_qname_minimisation  */
-  YYSYMBOL_server_qname_minimisation_strict = 551, /* server_qname_minimisation_strict  */
-  YYSYMBOL_server_pad_responses = 552,     /* server_pad_responses  */
-  YYSYMBOL_server_pad_responses_block_size = 553, /* server_pad_responses_block_size  */
-  YYSYMBOL_server_pad_queries = 554,       /* server_pad_queries  */
-  YYSYMBOL_server_pad_queries_block_size = 555, /* server_pad_queries_block_size  */
-  YYSYMBOL_server_ipsecmod_enabled = 556,  /* server_ipsecmod_enabled  */
-  YYSYMBOL_server_ipsecmod_ignore_bogus = 557, /* server_ipsecmod_ignore_bogus  */
-  YYSYMBOL_server_ipsecmod_hook = 558,     /* server_ipsecmod_hook  */
-  YYSYMBOL_server_ipsecmod_max_ttl = 559,  /* server_ipsecmod_max_ttl  */
-  YYSYMBOL_server_ipsecmod_whitelist = 560, /* server_ipsecmod_whitelist  */
-  YYSYMBOL_server_ipsecmod_strict = 561,   /* server_ipsecmod_strict  */
-  YYSYMBOL_server_edns_client_string = 562, /* server_edns_client_string  */
-  YYSYMBOL_server_edns_client_string_opcode = 563, /* server_edns_client_string_opcode  */
-  YYSYMBOL_stub_name = 564,                /* stub_name  */
-  YYSYMBOL_stub_host = 565,                /* stub_host  */
-  YYSYMBOL_stub_addr = 566,                /* stub_addr  */
-  YYSYMBOL_stub_first = 567,               /* stub_first  */
-  YYSYMBOL_stub_no_cache = 568,            /* stub_no_cache  */
-  YYSYMBOL_stub_ssl_upstream = 569,        /* stub_ssl_upstream  */
-  YYSYMBOL_stub_tcp_upstream = 570,        /* stub_tcp_upstream  */
-  YYSYMBOL_stub_prime = 571,               /* stub_prime  */
-  YYSYMBOL_forward_name = 572,             /* forward_name  */
-  YYSYMBOL_forward_host = 573,             /* forward_host  */
-  YYSYMBOL_forward_addr = 574,             /* forward_addr  */
-  YYSYMBOL_forward_first = 575,            /* forward_first  */
-  YYSYMBOL_forward_no_cache = 576,         /* forward_no_cache  */
-  YYSYMBOL_forward_ssl_upstream = 577,     /* forward_ssl_upstream  */
-  YYSYMBOL_forward_tcp_upstream = 578,     /* forward_tcp_upstream  */
-  YYSYMBOL_auth_name = 579,                /* auth_name  */
-  YYSYMBOL_auth_zonefile = 580,            /* auth_zonefile  */
-  YYSYMBOL_auth_master = 581,              /* auth_master  */
-  YYSYMBOL_auth_url = 582,                 /* auth_url  */
-  YYSYMBOL_auth_allow_notify = 583,        /* auth_allow_notify  */
-  YYSYMBOL_auth_zonemd_check = 584,        /* auth_zonemd_check  */
-  YYSYMBOL_auth_zonemd_reject_absence = 585, /* auth_zonemd_reject_absence  */
-  YYSYMBOL_auth_for_downstream = 586,      /* auth_for_downstream  */
-  YYSYMBOL_auth_for_upstream = 587,        /* auth_for_upstream  */
-  YYSYMBOL_auth_fallback_enabled = 588,    /* auth_fallback_enabled  */
-  YYSYMBOL_view_name = 589,                /* view_name  */
-  YYSYMBOL_view_local_zone = 590,          /* view_local_zone  */
-  YYSYMBOL_view_response_ip = 591,         /* view_response_ip  */
-  YYSYMBOL_view_response_ip_data = 592,    /* view_response_ip_data  */
-  YYSYMBOL_view_local_data = 593,          /* view_local_data  */
-  YYSYMBOL_view_local_data_ptr = 594,      /* view_local_data_ptr  */
-  YYSYMBOL_view_first = 595,               /* view_first  */
-  YYSYMBOL_rcstart = 596,                  /* rcstart  */
-  YYSYMBOL_contents_rc = 597,              /* contents_rc  */
-  YYSYMBOL_content_rc = 598,               /* content_rc  */
-  YYSYMBOL_rc_control_enable = 599,        /* rc_control_enable  */
-  YYSYMBOL_rc_control_port = 600,          /* rc_control_port  */
-  YYSYMBOL_rc_control_interface = 601,     /* rc_control_interface  */
-  YYSYMBOL_rc_control_use_cert = 602,      /* rc_control_use_cert  */
-  YYSYMBOL_rc_server_key_file = 603,       /* rc_server_key_file  */
-  YYSYMBOL_rc_server_cert_file = 604,      /* rc_server_cert_file  */
-  YYSYMBOL_rc_control_key_file = 605,      /* rc_control_key_file  */
-  YYSYMBOL_rc_control_cert_file = 606,     /* rc_control_cert_file  */
-  YYSYMBOL_dtstart = 607,                  /* dtstart  */
-  YYSYMBOL_contents_dt = 608,              /* contents_dt  */
-  YYSYMBOL_content_dt = 609,               /* content_dt  */
-  YYSYMBOL_dt_dnstap_enable = 610,         /* dt_dnstap_enable  */
-  YYSYMBOL_dt_dnstap_bidirectional = 611,  /* dt_dnstap_bidirectional  */
-  YYSYMBOL_dt_dnstap_socket_path = 612,    /* dt_dnstap_socket_path  */
-  YYSYMBOL_dt_dnstap_ip = 613,             /* dt_dnstap_ip  */
-  YYSYMBOL_dt_dnstap_tls = 614,            /* dt_dnstap_tls  */
-  YYSYMBOL_dt_dnstap_tls_server_name = 615, /* dt_dnstap_tls_server_name  */
-  YYSYMBOL_dt_dnstap_tls_cert_bundle = 616, /* dt_dnstap_tls_cert_bundle  */
-  YYSYMBOL_dt_dnstap_tls_client_key_file = 617, /* dt_dnstap_tls_client_key_file  */
-  YYSYMBOL_dt_dnstap_tls_client_cert_file = 618, /* dt_dnstap_tls_client_cert_file  */
-  YYSYMBOL_dt_dnstap_send_identity = 619,  /* dt_dnstap_send_identity  */
-  YYSYMBOL_dt_dnstap_send_version = 620,   /* dt_dnstap_send_version  */
-  YYSYMBOL_dt_dnstap_identity = 621,       /* dt_dnstap_identity  */
-  YYSYMBOL_dt_dnstap_version = 622,        /* dt_dnstap_version  */
-  YYSYMBOL_dt_dnstap_log_resolver_query_messages = 623, /* dt_dnstap_log_resolver_query_messages  */
-  YYSYMBOL_dt_dnstap_log_resolver_response_messages = 624, /* dt_dnstap_log_resolver_response_messages  */
-  YYSYMBOL_dt_dnstap_log_client_query_messages = 625, /* dt_dnstap_log_client_query_messages  */
-  YYSYMBOL_dt_dnstap_log_client_response_messages = 626, /* dt_dnstap_log_client_response_messages  */
-  YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 627, /* dt_dnstap_log_forwarder_query_messages  */
-  YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 628, /* dt_dnstap_log_forwarder_response_messages  */
-  YYSYMBOL_pythonstart = 629,              /* pythonstart  */
-  YYSYMBOL_contents_py = 630,              /* contents_py  */
-  YYSYMBOL_content_py = 631,               /* content_py  */
-  YYSYMBOL_py_script = 632,                /* py_script  */
-  YYSYMBOL_dynlibstart = 633,              /* dynlibstart  */
-  YYSYMBOL_contents_dl = 634,              /* contents_dl  */
-  YYSYMBOL_content_dl = 635,               /* content_dl  */
-  YYSYMBOL_dl_file = 636,                  /* dl_file  */
-  YYSYMBOL_server_disable_dnssec_lame_check = 637, /* server_disable_dnssec_lame_check  */
-  YYSYMBOL_server_log_identity = 638,      /* server_log_identity  */
-  YYSYMBOL_server_response_ip = 639,       /* server_response_ip  */
-  YYSYMBOL_server_response_ip_data = 640,  /* server_response_ip_data  */
-  YYSYMBOL_dnscstart = 641,                /* dnscstart  */
-  YYSYMBOL_contents_dnsc = 642,            /* contents_dnsc  */
-  YYSYMBOL_content_dnsc = 643,             /* content_dnsc  */
-  YYSYMBOL_dnsc_dnscrypt_enable = 644,     /* dnsc_dnscrypt_enable  */
-  YYSYMBOL_dnsc_dnscrypt_port = 645,       /* dnsc_dnscrypt_port  */
-  YYSYMBOL_dnsc_dnscrypt_provider = 646,   /* dnsc_dnscrypt_provider  */
-  YYSYMBOL_dnsc_dnscrypt_provider_cert = 647, /* dnsc_dnscrypt_provider_cert  */
-  YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 648, /* dnsc_dnscrypt_provider_cert_rotated  */
-  YYSYMBOL_dnsc_dnscrypt_secret_key = 649, /* dnsc_dnscrypt_secret_key  */
-  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 650, /* dnsc_dnscrypt_shared_secret_cache_size  */
-  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 651, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
-  YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 652, /* dnsc_dnscrypt_nonce_cache_size  */
-  YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 653, /* dnsc_dnscrypt_nonce_cache_slabs  */
-  YYSYMBOL_cachedbstart = 654,             /* cachedbstart  */
-  YYSYMBOL_contents_cachedb = 655,         /* contents_cachedb  */
-  YYSYMBOL_content_cachedb = 656,          /* content_cachedb  */
-  YYSYMBOL_cachedb_backend_name = 657,     /* cachedb_backend_name  */
-  YYSYMBOL_cachedb_secret_seed = 658,      /* cachedb_secret_seed  */
-  YYSYMBOL_redis_server_host = 659,        /* redis_server_host  */
-  YYSYMBOL_redis_server_port = 660,        /* redis_server_port  */
-  YYSYMBOL_redis_timeout = 661,            /* redis_timeout  */
-  YYSYMBOL_redis_expire_records = 662,     /* redis_expire_records  */
-  YYSYMBOL_server_tcp_connection_limit = 663, /* server_tcp_connection_limit  */
-  YYSYMBOL_ipsetstart = 664,               /* ipsetstart  */
-  YYSYMBOL_contents_ipset = 665,           /* contents_ipset  */
-  YYSYMBOL_content_ipset = 666,            /* content_ipset  */
-  YYSYMBOL_ipset_name_v4 = 667,            /* ipset_name_v4  */
-  YYSYMBOL_ipset_name_v6 = 668             /* ipset_name_v6  */
+  YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 206, /* VAR_IP_RATELIMIT_BACKOFF  */
+  YYSYMBOL_VAR_RATELIMIT_BACKOFF = 207,    /* VAR_RATELIMIT_BACKOFF  */
+  YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 208,   /* VAR_SEND_CLIENT_SUBNET  */
+  YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 209,   /* VAR_CLIENT_SUBNET_ZONE  */
+  YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 210, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
+  YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 211, /* VAR_CLIENT_SUBNET_OPCODE  */
+  YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 212, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
+  YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 213, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
+  YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 214, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
+  YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 215, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
+  YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 216, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
+  YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 217, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
+  YYSYMBOL_VAR_CAPS_WHITELIST = 218,       /* VAR_CAPS_WHITELIST  */
+  YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 219, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
+  YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 220, /* VAR_PERMIT_SMALL_HOLDDOWN  */
+  YYSYMBOL_VAR_QNAME_MINIMISATION = 221,   /* VAR_QNAME_MINIMISATION  */
+  YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 222, /* VAR_QNAME_MINIMISATION_STRICT  */
+  YYSYMBOL_VAR_IP_FREEBIND = 223,          /* VAR_IP_FREEBIND  */
+  YYSYMBOL_VAR_DEFINE_TAG = 224,           /* VAR_DEFINE_TAG  */
+  YYSYMBOL_VAR_LOCAL_ZONE_TAG = 225,       /* VAR_LOCAL_ZONE_TAG  */
+  YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 226,   /* VAR_ACCESS_CONTROL_TAG  */
+  YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 227,  /* VAR_LOCAL_ZONE_OVERRIDE  */
+  YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 228, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
+  YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 229, /* VAR_ACCESS_CONTROL_TAG_DATA  */
+  YYSYMBOL_VAR_VIEW = 230,                 /* VAR_VIEW  */
+  YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 231,  /* VAR_ACCESS_CONTROL_VIEW  */
+  YYSYMBOL_VAR_VIEW_FIRST = 232,           /* VAR_VIEW_FIRST  */
+  YYSYMBOL_VAR_SERVE_EXPIRED = 233,        /* VAR_SERVE_EXPIRED  */
+  YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 234,    /* VAR_SERVE_EXPIRED_TTL  */
+  YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 235, /* VAR_SERVE_EXPIRED_TTL_RESET  */
+  YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 236, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
+  YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 237, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
+  YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 238,   /* VAR_SERVE_ORIGINAL_TTL  */
+  YYSYMBOL_VAR_FAKE_DSA = 239,             /* VAR_FAKE_DSA  */
+  YYSYMBOL_VAR_FAKE_SHA1 = 240,            /* VAR_FAKE_SHA1  */
+  YYSYMBOL_VAR_LOG_IDENTITY = 241,         /* VAR_LOG_IDENTITY  */
+  YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 242,     /* VAR_HIDE_TRUSTANCHOR  */
+  YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 243, /* VAR_HIDE_HTTP_USER_AGENT  */
+  YYSYMBOL_VAR_HTTP_USER_AGENT = 244,      /* VAR_HTTP_USER_AGENT  */
+  YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 245, /* VAR_TRUST_ANCHOR_SIGNALING  */
+  YYSYMBOL_VAR_AGGRESSIVE_NSEC = 246,      /* VAR_AGGRESSIVE_NSEC  */
+  YYSYMBOL_VAR_USE_SYSTEMD = 247,          /* VAR_USE_SYSTEMD  */
+  YYSYMBOL_VAR_SHM_ENABLE = 248,           /* VAR_SHM_ENABLE  */
+  YYSYMBOL_VAR_SHM_KEY = 249,              /* VAR_SHM_KEY  */
+  YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 250,    /* VAR_ROOT_KEY_SENTINEL  */
+  YYSYMBOL_VAR_DNSCRYPT = 251,             /* VAR_DNSCRYPT  */
+  YYSYMBOL_VAR_DNSCRYPT_ENABLE = 252,      /* VAR_DNSCRYPT_ENABLE  */
+  YYSYMBOL_VAR_DNSCRYPT_PORT = 253,        /* VAR_DNSCRYPT_PORT  */
+  YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 254,    /* VAR_DNSCRYPT_PROVIDER  */
+  YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 255,  /* VAR_DNSCRYPT_SECRET_KEY  */
+  YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 256, /* VAR_DNSCRYPT_PROVIDER_CERT  */
+  YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 257, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
+  YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 258, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
+  YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 259, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
+  YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 260, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
+  YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 261, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
+  YYSYMBOL_VAR_PAD_RESPONSES = 262,        /* VAR_PAD_RESPONSES  */
+  YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 263, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
+  YYSYMBOL_VAR_PAD_QUERIES = 264,          /* VAR_PAD_QUERIES  */
+  YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 265, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
+  YYSYMBOL_VAR_IPSECMOD_ENABLED = 266,     /* VAR_IPSECMOD_ENABLED  */
+  YYSYMBOL_VAR_IPSECMOD_HOOK = 267,        /* VAR_IPSECMOD_HOOK  */
+  YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 268, /* VAR_IPSECMOD_IGNORE_BOGUS  */
+  YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 269,     /* VAR_IPSECMOD_MAX_TTL  */
+  YYSYMBOL_VAR_IPSECMOD_WHITELIST = 270,   /* VAR_IPSECMOD_WHITELIST  */
+  YYSYMBOL_VAR_IPSECMOD_STRICT = 271,      /* VAR_IPSECMOD_STRICT  */
+  YYSYMBOL_VAR_CACHEDB = 272,              /* VAR_CACHEDB  */
+  YYSYMBOL_VAR_CACHEDB_BACKEND = 273,      /* VAR_CACHEDB_BACKEND  */
+  YYSYMBOL_VAR_CACHEDB_SECRETSEED = 274,   /* VAR_CACHEDB_SECRETSEED  */
+  YYSYMBOL_VAR_CACHEDB_REDISHOST = 275,    /* VAR_CACHEDB_REDISHOST  */
+  YYSYMBOL_VAR_CACHEDB_REDISPORT = 276,    /* VAR_CACHEDB_REDISPORT  */
+  YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 277, /* VAR_CACHEDB_REDISTIMEOUT  */
+  YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 278, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
+  YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 279, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
+  YYSYMBOL_VAR_FOR_UPSTREAM = 280,         /* VAR_FOR_UPSTREAM  */
+  YYSYMBOL_VAR_AUTH_ZONE = 281,            /* VAR_AUTH_ZONE  */
+  YYSYMBOL_VAR_ZONEFILE = 282,             /* VAR_ZONEFILE  */
+  YYSYMBOL_VAR_MASTER = 283,               /* VAR_MASTER  */
+  YYSYMBOL_VAR_URL = 284,                  /* VAR_URL  */
+  YYSYMBOL_VAR_FOR_DOWNSTREAM = 285,       /* VAR_FOR_DOWNSTREAM  */
+  YYSYMBOL_VAR_FALLBACK_ENABLED = 286,     /* VAR_FALLBACK_ENABLED  */
+  YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 287,  /* VAR_TLS_ADDITIONAL_PORT  */
+  YYSYMBOL_VAR_LOW_RTT = 288,              /* VAR_LOW_RTT  */
+  YYSYMBOL_VAR_LOW_RTT_PERMIL = 289,       /* VAR_LOW_RTT_PERMIL  */
+  YYSYMBOL_VAR_FAST_SERVER_PERMIL = 290,   /* VAR_FAST_SERVER_PERMIL  */
+  YYSYMBOL_VAR_FAST_SERVER_NUM = 291,      /* VAR_FAST_SERVER_NUM  */
+  YYSYMBOL_VAR_ALLOW_NOTIFY = 292,         /* VAR_ALLOW_NOTIFY  */
+  YYSYMBOL_VAR_TLS_WIN_CERT = 293,         /* VAR_TLS_WIN_CERT  */
+  YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 294, /* VAR_TCP_CONNECTION_LIMIT  */
+  YYSYMBOL_VAR_FORWARD_NO_CACHE = 295,     /* VAR_FORWARD_NO_CACHE  */
+  YYSYMBOL_VAR_STUB_NO_CACHE = 296,        /* VAR_STUB_NO_CACHE  */
+  YYSYMBOL_VAR_LOG_SERVFAIL = 297,         /* VAR_LOG_SERVFAIL  */
+  YYSYMBOL_VAR_DENY_ANY = 298,             /* VAR_DENY_ANY  */
+  YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 299, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
+  YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 300,   /* VAR_LOG_TAG_QUERYREPLY  */
+  YYSYMBOL_VAR_STREAM_WAIT_SIZE = 301,     /* VAR_STREAM_WAIT_SIZE  */
+  YYSYMBOL_VAR_TLS_CIPHERS = 302,          /* VAR_TLS_CIPHERS  */
+  YYSYMBOL_VAR_TLS_CIPHERSUITES = 303,     /* VAR_TLS_CIPHERSUITES  */
+  YYSYMBOL_VAR_TLS_USE_SNI = 304,          /* VAR_TLS_USE_SNI  */
+  YYSYMBOL_VAR_IPSET = 305,                /* VAR_IPSET  */
+  YYSYMBOL_VAR_IPSET_NAME_V4 = 306,        /* VAR_IPSET_NAME_V4  */
+  YYSYMBOL_VAR_IPSET_NAME_V6 = 307,        /* VAR_IPSET_NAME_V6  */
+  YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 308, /* VAR_TLS_SESSION_TICKET_KEYS  */
+  YYSYMBOL_VAR_RPZ = 309,                  /* VAR_RPZ  */
+  YYSYMBOL_VAR_TAGS = 310,                 /* VAR_TAGS  */
+  YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 311,  /* VAR_RPZ_ACTION_OVERRIDE  */
+  YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 312,   /* VAR_RPZ_CNAME_OVERRIDE  */
+  YYSYMBOL_VAR_RPZ_LOG = 313,              /* VAR_RPZ_LOG  */
+  YYSYMBOL_VAR_RPZ_LOG_NAME = 314,         /* VAR_RPZ_LOG_NAME  */
+  YYSYMBOL_VAR_DYNLIB = 315,               /* VAR_DYNLIB  */
+  YYSYMBOL_VAR_DYNLIB_FILE = 316,          /* VAR_DYNLIB_FILE  */
+  YYSYMBOL_VAR_EDNS_CLIENT_STRING = 317,   /* VAR_EDNS_CLIENT_STRING  */
+  YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 318, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
+  YYSYMBOL_VAR_NSID = 319,                 /* VAR_NSID  */
+  YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 320, /* VAR_ZONEMD_PERMISSIVE_MODE  */
+  YYSYMBOL_VAR_ZONEMD_CHECK = 321,         /* VAR_ZONEMD_CHECK  */
+  YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 322, /* VAR_ZONEMD_REJECT_ABSENCE  */
+  YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 323, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
+  YYSYMBOL_YYACCEPT = 324,                 /* $accept  */
+  YYSYMBOL_toplevelvars = 325,             /* toplevelvars  */
+  YYSYMBOL_toplevelvar = 326,              /* toplevelvar  */
+  YYSYMBOL_force_toplevel = 327,           /* force_toplevel  */
+  YYSYMBOL_serverstart = 328,              /* serverstart  */
+  YYSYMBOL_contents_server = 329,          /* contents_server  */
+  YYSYMBOL_content_server = 330,           /* content_server  */
+  YYSYMBOL_stubstart = 331,                /* stubstart  */
+  YYSYMBOL_contents_stub = 332,            /* contents_stub  */
+  YYSYMBOL_content_stub = 333,             /* content_stub  */
+  YYSYMBOL_forwardstart = 334,             /* forwardstart  */
+  YYSYMBOL_contents_forward = 335,         /* contents_forward  */
+  YYSYMBOL_content_forward = 336,          /* content_forward  */
+  YYSYMBOL_viewstart = 337,                /* viewstart  */
+  YYSYMBOL_contents_view = 338,            /* contents_view  */
+  YYSYMBOL_content_view = 339,             /* content_view  */
+  YYSYMBOL_authstart = 340,                /* authstart  */
+  YYSYMBOL_contents_auth = 341,            /* contents_auth  */
+  YYSYMBOL_content_auth = 342,             /* content_auth  */
+  YYSYMBOL_rpz_tag = 343,                  /* rpz_tag  */
+  YYSYMBOL_rpz_action_override = 344,      /* rpz_action_override  */
+  YYSYMBOL_rpz_cname_override = 345,       /* rpz_cname_override  */
+  YYSYMBOL_rpz_log = 346,                  /* rpz_log  */
+  YYSYMBOL_rpz_log_name = 347,             /* rpz_log_name  */
+  YYSYMBOL_rpz_signal_nxdomain_ra = 348,   /* rpz_signal_nxdomain_ra  */
+  YYSYMBOL_rpzstart = 349,                 /* rpzstart  */
+  YYSYMBOL_contents_rpz = 350,             /* contents_rpz  */
+  YYSYMBOL_content_rpz = 351,              /* content_rpz  */
+  YYSYMBOL_server_num_threads = 352,       /* server_num_threads  */
+  YYSYMBOL_server_verbosity = 353,         /* server_verbosity  */
+  YYSYMBOL_server_statistics_interval = 354, /* server_statistics_interval  */
+  YYSYMBOL_server_statistics_cumulative = 355, /* server_statistics_cumulative  */
+  YYSYMBOL_server_extended_statistics = 356, /* server_extended_statistics  */
+  YYSYMBOL_server_shm_enable = 357,        /* server_shm_enable  */
+  YYSYMBOL_server_shm_key = 358,           /* server_shm_key  */
+  YYSYMBOL_server_port = 359,              /* server_port  */
+  YYSYMBOL_server_send_client_subnet = 360, /* server_send_client_subnet  */
+  YYSYMBOL_server_client_subnet_zone = 361, /* server_client_subnet_zone  */
+  YYSYMBOL_server_client_subnet_always_forward = 362, /* server_client_subnet_always_forward  */
+  YYSYMBOL_server_client_subnet_opcode = 363, /* server_client_subnet_opcode  */
+  YYSYMBOL_server_max_client_subnet_ipv4 = 364, /* server_max_client_subnet_ipv4  */
+  YYSYMBOL_server_max_client_subnet_ipv6 = 365, /* server_max_client_subnet_ipv6  */
+  YYSYMBOL_server_min_client_subnet_ipv4 = 366, /* server_min_client_subnet_ipv4  */
+  YYSYMBOL_server_min_client_subnet_ipv6 = 367, /* server_min_client_subnet_ipv6  */
+  YYSYMBOL_server_max_ecs_tree_size_ipv4 = 368, /* server_max_ecs_tree_size_ipv4  */
+  YYSYMBOL_server_max_ecs_tree_size_ipv6 = 369, /* server_max_ecs_tree_size_ipv6  */
+  YYSYMBOL_server_interface = 370,         /* server_interface  */
+  YYSYMBOL_server_outgoing_interface = 371, /* server_outgoing_interface  */
+  YYSYMBOL_server_outgoing_range = 372,    /* server_outgoing_range  */
+  YYSYMBOL_server_outgoing_port_permit = 373, /* server_outgoing_port_permit  */
+  YYSYMBOL_server_outgoing_port_avoid = 374, /* server_outgoing_port_avoid  */
+  YYSYMBOL_server_outgoing_num_tcp = 375,  /* server_outgoing_num_tcp  */
+  YYSYMBOL_server_incoming_num_tcp = 376,  /* server_incoming_num_tcp  */
+  YYSYMBOL_server_interface_automatic = 377, /* server_interface_automatic  */
+  YYSYMBOL_server_do_ip4 = 378,            /* server_do_ip4  */
+  YYSYMBOL_server_do_ip6 = 379,            /* server_do_ip6  */
+  YYSYMBOL_server_do_udp = 380,            /* server_do_udp  */
+  YYSYMBOL_server_do_tcp = 381,            /* server_do_tcp  */
+  YYSYMBOL_server_prefer_ip4 = 382,        /* server_prefer_ip4  */
+  YYSYMBOL_server_prefer_ip6 = 383,        /* server_prefer_ip6  */
+  YYSYMBOL_server_tcp_mss = 384,           /* server_tcp_mss  */
+  YYSYMBOL_server_outgoing_tcp_mss = 385,  /* server_outgoing_tcp_mss  */
+  YYSYMBOL_server_tcp_idle_timeout = 386,  /* server_tcp_idle_timeout  */
+  YYSYMBOL_server_max_reuse_tcp_queries = 387, /* server_max_reuse_tcp_queries  */
+  YYSYMBOL_server_tcp_reuse_timeout = 388, /* server_tcp_reuse_timeout  */
+  YYSYMBOL_server_tcp_auth_query_timeout = 389, /* server_tcp_auth_query_timeout  */
+  YYSYMBOL_server_tcp_keepalive = 390,     /* server_tcp_keepalive  */
+  YYSYMBOL_server_tcp_keepalive_timeout = 391, /* server_tcp_keepalive_timeout  */
+  YYSYMBOL_server_tcp_upstream = 392,      /* server_tcp_upstream  */
+  YYSYMBOL_server_udp_upstream_without_downstream = 393, /* server_udp_upstream_without_downstream  */
+  YYSYMBOL_server_ssl_upstream = 394,      /* server_ssl_upstream  */
+  YYSYMBOL_server_ssl_service_key = 395,   /* server_ssl_service_key  */
+  YYSYMBOL_server_ssl_service_pem = 396,   /* server_ssl_service_pem  */
+  YYSYMBOL_server_ssl_port = 397,          /* server_ssl_port  */
+  YYSYMBOL_server_tls_cert_bundle = 398,   /* server_tls_cert_bundle  */
+  YYSYMBOL_server_tls_win_cert = 399,      /* server_tls_win_cert  */
+  YYSYMBOL_server_tls_additional_port = 400, /* server_tls_additional_port  */
+  YYSYMBOL_server_tls_ciphers = 401,       /* server_tls_ciphers  */
+  YYSYMBOL_server_tls_ciphersuites = 402,  /* server_tls_ciphersuites  */
+  YYSYMBOL_server_tls_session_ticket_keys = 403, /* server_tls_session_ticket_keys  */
+  YYSYMBOL_server_tls_use_sni = 404,       /* server_tls_use_sni  */
+  YYSYMBOL_server_https_port = 405,        /* server_https_port  */
+  YYSYMBOL_server_http_endpoint = 406,     /* server_http_endpoint  */
+  YYSYMBOL_server_http_max_streams = 407,  /* server_http_max_streams  */
+  YYSYMBOL_server_http_query_buffer_size = 408, /* server_http_query_buffer_size  */
+  YYSYMBOL_server_http_response_buffer_size = 409, /* server_http_response_buffer_size  */
+  YYSYMBOL_server_http_nodelay = 410,      /* server_http_nodelay  */
+  YYSYMBOL_server_http_notls_downstream = 411, /* server_http_notls_downstream  */
+  YYSYMBOL_server_use_systemd = 412,       /* server_use_systemd  */
+  YYSYMBOL_server_do_daemonize = 413,      /* server_do_daemonize  */
+  YYSYMBOL_server_use_syslog = 414,        /* server_use_syslog  */
+  YYSYMBOL_server_log_time_ascii = 415,    /* server_log_time_ascii  */
+  YYSYMBOL_server_log_queries = 416,       /* server_log_queries  */
+  YYSYMBOL_server_log_replies = 417,       /* server_log_replies  */
+  YYSYMBOL_server_log_tag_queryreply = 418, /* server_log_tag_queryreply  */
+  YYSYMBOL_server_log_servfail = 419,      /* server_log_servfail  */
+  YYSYMBOL_server_log_local_actions = 420, /* server_log_local_actions  */
+  YYSYMBOL_server_chroot = 421,            /* server_chroot  */
+  YYSYMBOL_server_username = 422,          /* server_username  */
+  YYSYMBOL_server_directory = 423,         /* server_directory  */
+  YYSYMBOL_server_logfile = 424,           /* server_logfile  */
+  YYSYMBOL_server_pidfile = 425,           /* server_pidfile  */
+  YYSYMBOL_server_root_hints = 426,        /* server_root_hints  */
+  YYSYMBOL_server_dlv_anchor_file = 427,   /* server_dlv_anchor_file  */
+  YYSYMBOL_server_dlv_anchor = 428,        /* server_dlv_anchor  */
+  YYSYMBOL_server_auto_trust_anchor_file = 429, /* server_auto_trust_anchor_file  */
+  YYSYMBOL_server_trust_anchor_file = 430, /* server_trust_anchor_file  */
+  YYSYMBOL_server_trusted_keys_file = 431, /* server_trusted_keys_file  */
+  YYSYMBOL_server_trust_anchor = 432,      /* server_trust_anchor  */
+  YYSYMBOL_server_trust_anchor_signaling = 433, /* server_trust_anchor_signaling  */
+  YYSYMBOL_server_root_key_sentinel = 434, /* server_root_key_sentinel  */
+  YYSYMBOL_server_domain_insecure = 435,   /* server_domain_insecure  */
+  YYSYMBOL_server_hide_identity = 436,     /* server_hide_identity  */
+  YYSYMBOL_server_hide_version = 437,      /* server_hide_version  */
+  YYSYMBOL_server_hide_trustanchor = 438,  /* server_hide_trustanchor  */
+  YYSYMBOL_server_hide_http_user_agent = 439, /* server_hide_http_user_agent  */
+  YYSYMBOL_server_identity = 440,          /* server_identity  */
+  YYSYMBOL_server_version = 441,           /* server_version  */
+  YYSYMBOL_server_http_user_agent = 442,   /* server_http_user_agent  */
+  YYSYMBOL_server_nsid = 443,              /* server_nsid  */
+  YYSYMBOL_server_so_rcvbuf = 444,         /* server_so_rcvbuf  */
+  YYSYMBOL_server_so_sndbuf = 445,         /* server_so_sndbuf  */
+  YYSYMBOL_server_so_reuseport = 446,      /* server_so_reuseport  */
+  YYSYMBOL_server_ip_transparent = 447,    /* server_ip_transparent  */
+  YYSYMBOL_server_ip_freebind = 448,       /* server_ip_freebind  */
+  YYSYMBOL_server_ip_dscp = 449,           /* server_ip_dscp  */
+  YYSYMBOL_server_stream_wait_size = 450,  /* server_stream_wait_size  */
+  YYSYMBOL_server_edns_buffer_size = 451,  /* server_edns_buffer_size  */
+  YYSYMBOL_server_msg_buffer_size = 452,   /* server_msg_buffer_size  */
+  YYSYMBOL_server_msg_cache_size = 453,    /* server_msg_cache_size  */
+  YYSYMBOL_server_msg_cache_slabs = 454,   /* server_msg_cache_slabs  */
+  YYSYMBOL_server_num_queries_per_thread = 455, /* server_num_queries_per_thread  */
+  YYSYMBOL_server_jostle_timeout = 456,    /* server_jostle_timeout  */
+  YYSYMBOL_server_delay_close = 457,       /* server_delay_close  */
+  YYSYMBOL_server_udp_connect = 458,       /* server_udp_connect  */
+  YYSYMBOL_server_unblock_lan_zones = 459, /* server_unblock_lan_zones  */
+  YYSYMBOL_server_insecure_lan_zones = 460, /* server_insecure_lan_zones  */
+  YYSYMBOL_server_rrset_cache_size = 461,  /* server_rrset_cache_size  */
+  YYSYMBOL_server_rrset_cache_slabs = 462, /* server_rrset_cache_slabs  */
+  YYSYMBOL_server_infra_host_ttl = 463,    /* server_infra_host_ttl  */
+  YYSYMBOL_server_infra_lame_ttl = 464,    /* server_infra_lame_ttl  */
+  YYSYMBOL_server_infra_cache_numhosts = 465, /* server_infra_cache_numhosts  */
+  YYSYMBOL_server_infra_cache_lame_size = 466, /* server_infra_cache_lame_size  */
+  YYSYMBOL_server_infra_cache_slabs = 467, /* server_infra_cache_slabs  */
+  YYSYMBOL_server_infra_cache_min_rtt = 468, /* server_infra_cache_min_rtt  */
+  YYSYMBOL_server_infra_keep_probing = 469, /* server_infra_keep_probing  */
+  YYSYMBOL_server_target_fetch_policy = 470, /* server_target_fetch_policy  */
+  YYSYMBOL_server_harden_short_bufsize = 471, /* server_harden_short_bufsize  */
+  YYSYMBOL_server_harden_large_queries = 472, /* server_harden_large_queries  */
+  YYSYMBOL_server_harden_glue = 473,       /* server_harden_glue  */
+  YYSYMBOL_server_harden_dnssec_stripped = 474, /* server_harden_dnssec_stripped  */
+  YYSYMBOL_server_harden_below_nxdomain = 475, /* server_harden_below_nxdomain  */
+  YYSYMBOL_server_harden_referral_path = 476, /* server_harden_referral_path  */
+  YYSYMBOL_server_harden_algo_downgrade = 477, /* server_harden_algo_downgrade  */
+  YYSYMBOL_server_use_caps_for_id = 478,   /* server_use_caps_for_id  */
+  YYSYMBOL_server_caps_whitelist = 479,    /* server_caps_whitelist  */
+  YYSYMBOL_server_private_address = 480,   /* server_private_address  */
+  YYSYMBOL_server_private_domain = 481,    /* server_private_domain  */
+  YYSYMBOL_server_prefetch = 482,          /* server_prefetch  */
+  YYSYMBOL_server_prefetch_key = 483,      /* server_prefetch_key  */
+  YYSYMBOL_server_deny_any = 484,          /* server_deny_any  */
+  YYSYMBOL_server_unwanted_reply_threshold = 485, /* server_unwanted_reply_threshold  */
+  YYSYMBOL_server_do_not_query_address = 486, /* server_do_not_query_address  */
+  YYSYMBOL_server_do_not_query_localhost = 487, /* server_do_not_query_localhost  */
+  YYSYMBOL_server_access_control = 488,    /* server_access_control  */
+  YYSYMBOL_server_module_conf = 489,       /* server_module_conf  */
+  YYSYMBOL_server_val_override_date = 490, /* server_val_override_date  */
+  YYSYMBOL_server_val_sig_skew_min = 491,  /* server_val_sig_skew_min  */
+  YYSYMBOL_server_val_sig_skew_max = 492,  /* server_val_sig_skew_max  */
+  YYSYMBOL_server_val_max_restart = 493,   /* server_val_max_restart  */
+  YYSYMBOL_server_cache_max_ttl = 494,     /* server_cache_max_ttl  */
+  YYSYMBOL_server_cache_max_negative_ttl = 495, /* server_cache_max_negative_ttl  */
+  YYSYMBOL_server_cache_min_ttl = 496,     /* server_cache_min_ttl  */
+  YYSYMBOL_server_bogus_ttl = 497,         /* server_bogus_ttl  */
+  YYSYMBOL_server_val_clean_additional = 498, /* server_val_clean_additional  */
+  YYSYMBOL_server_val_permissive_mode = 499, /* server_val_permissive_mode  */
+  YYSYMBOL_server_aggressive_nsec = 500,   /* server_aggressive_nsec  */
+  YYSYMBOL_server_ignore_cd_flag = 501,    /* server_ignore_cd_flag  */
+  YYSYMBOL_server_serve_expired = 502,     /* server_serve_expired  */
+  YYSYMBOL_server_serve_expired_ttl = 503, /* server_serve_expired_ttl  */
+  YYSYMBOL_server_serve_expired_ttl_reset = 504, /* server_serve_expired_ttl_reset  */
+  YYSYMBOL_server_serve_expired_reply_ttl = 505, /* server_serve_expired_reply_ttl  */
+  YYSYMBOL_server_serve_expired_client_timeout = 506, /* server_serve_expired_client_timeout  */
+  YYSYMBOL_server_serve_original_ttl = 507, /* server_serve_original_ttl  */
+  YYSYMBOL_server_fake_dsa = 508,          /* server_fake_dsa  */
+  YYSYMBOL_server_fake_sha1 = 509,         /* server_fake_sha1  */
+  YYSYMBOL_server_val_log_level = 510,     /* server_val_log_level  */
+  YYSYMBOL_server_val_nsec3_keysize_iterations = 511, /* server_val_nsec3_keysize_iterations  */
+  YYSYMBOL_server_zonemd_permissive_mode = 512, /* server_zonemd_permissive_mode  */
+  YYSYMBOL_server_add_holddown = 513,      /* server_add_holddown  */
+  YYSYMBOL_server_del_holddown = 514,      /* server_del_holddown  */
+  YYSYMBOL_server_keep_missing = 515,      /* server_keep_missing  */
+  YYSYMBOL_server_permit_small_holddown = 516, /* server_permit_small_holddown  */
+  YYSYMBOL_server_key_cache_size = 517,    /* server_key_cache_size  */
+  YYSYMBOL_server_key_cache_slabs = 518,   /* server_key_cache_slabs  */
+  YYSYMBOL_server_neg_cache_size = 519,    /* server_neg_cache_size  */
+  YYSYMBOL_server_local_zone = 520,        /* server_local_zone  */
+  YYSYMBOL_server_local_data = 521,        /* server_local_data  */
+  YYSYMBOL_server_local_data_ptr = 522,    /* server_local_data_ptr  */
+  YYSYMBOL_server_minimal_responses = 523, /* server_minimal_responses  */
+  YYSYMBOL_server_rrset_roundrobin = 524,  /* server_rrset_roundrobin  */
+  YYSYMBOL_server_unknown_server_time_limit = 525, /* server_unknown_server_time_limit  */
+  YYSYMBOL_server_max_udp_size = 526,      /* server_max_udp_size  */
+  YYSYMBOL_server_dns64_prefix = 527,      /* server_dns64_prefix  */
+  YYSYMBOL_server_dns64_synthall = 528,    /* server_dns64_synthall  */
+  YYSYMBOL_server_dns64_ignore_aaaa = 529, /* server_dns64_ignore_aaaa  */
+  YYSYMBOL_server_define_tag = 530,        /* server_define_tag  */
+  YYSYMBOL_server_local_zone_tag = 531,    /* server_local_zone_tag  */
+  YYSYMBOL_server_access_control_tag = 532, /* server_access_control_tag  */
+  YYSYMBOL_server_access_control_tag_action = 533, /* server_access_control_tag_action  */
+  YYSYMBOL_server_access_control_tag_data = 534, /* server_access_control_tag_data  */
+  YYSYMBOL_server_local_zone_override = 535, /* server_local_zone_override  */
+  YYSYMBOL_server_access_control_view = 536, /* server_access_control_view  */
+  YYSYMBOL_server_response_ip_tag = 537,   /* server_response_ip_tag  */
+  YYSYMBOL_server_ip_ratelimit = 538,      /* server_ip_ratelimit  */
+  YYSYMBOL_server_ratelimit = 539,         /* server_ratelimit  */
+  YYSYMBOL_server_ip_ratelimit_size = 540, /* server_ip_ratelimit_size  */
+  YYSYMBOL_server_ratelimit_size = 541,    /* server_ratelimit_size  */
+  YYSYMBOL_server_ip_ratelimit_slabs = 542, /* server_ip_ratelimit_slabs  */
+  YYSYMBOL_server_ratelimit_slabs = 543,   /* server_ratelimit_slabs  */
+  YYSYMBOL_server_ratelimit_for_domain = 544, /* server_ratelimit_for_domain  */
+  YYSYMBOL_server_ratelimit_below_domain = 545, /* server_ratelimit_below_domain  */
+  YYSYMBOL_server_ip_ratelimit_factor = 546, /* server_ip_ratelimit_factor  */
+  YYSYMBOL_server_ratelimit_factor = 547,  /* server_ratelimit_factor  */
+  YYSYMBOL_server_ip_ratelimit_backoff = 548, /* server_ip_ratelimit_backoff  */
+  YYSYMBOL_server_ratelimit_backoff = 549, /* server_ratelimit_backoff  */
+  YYSYMBOL_server_outbound_msg_retry = 550, /* server_outbound_msg_retry  */
+  YYSYMBOL_server_low_rtt = 551,           /* server_low_rtt  */
+  YYSYMBOL_server_fast_server_num = 552,   /* server_fast_server_num  */
+  YYSYMBOL_server_fast_server_permil = 553, /* server_fast_server_permil  */
+  YYSYMBOL_server_qname_minimisation = 554, /* server_qname_minimisation  */
+  YYSYMBOL_server_qname_minimisation_strict = 555, /* server_qname_minimisation_strict  */
+  YYSYMBOL_server_pad_responses = 556,     /* server_pad_responses  */
+  YYSYMBOL_server_pad_responses_block_size = 557, /* server_pad_responses_block_size  */
+  YYSYMBOL_server_pad_queries = 558,       /* server_pad_queries  */
+  YYSYMBOL_server_pad_queries_block_size = 559, /* server_pad_queries_block_size  */
+  YYSYMBOL_server_ipsecmod_enabled = 560,  /* server_ipsecmod_enabled  */
+  YYSYMBOL_server_ipsecmod_ignore_bogus = 561, /* server_ipsecmod_ignore_bogus  */
+  YYSYMBOL_server_ipsecmod_hook = 562,     /* server_ipsecmod_hook  */
+  YYSYMBOL_server_ipsecmod_max_ttl = 563,  /* server_ipsecmod_max_ttl  */
+  YYSYMBOL_server_ipsecmod_whitelist = 564, /* server_ipsecmod_whitelist  */
+  YYSYMBOL_server_ipsecmod_strict = 565,   /* server_ipsecmod_strict  */
+  YYSYMBOL_server_edns_client_string = 566, /* server_edns_client_string  */
+  YYSYMBOL_server_edns_client_string_opcode = 567, /* server_edns_client_string_opcode  */
+  YYSYMBOL_stub_name = 568,                /* stub_name  */
+  YYSYMBOL_stub_host = 569,                /* stub_host  */
+  YYSYMBOL_stub_addr = 570,                /* stub_addr  */
+  YYSYMBOL_stub_first = 571,               /* stub_first  */
+  YYSYMBOL_stub_no_cache = 572,            /* stub_no_cache  */
+  YYSYMBOL_stub_ssl_upstream = 573,        /* stub_ssl_upstream  */
+  YYSYMBOL_stub_tcp_upstream = 574,        /* stub_tcp_upstream  */
+  YYSYMBOL_stub_prime = 575,               /* stub_prime  */
+  YYSYMBOL_forward_name = 576,             /* forward_name  */
+  YYSYMBOL_forward_host = 577,             /* forward_host  */
+  YYSYMBOL_forward_addr = 578,             /* forward_addr  */
+  YYSYMBOL_forward_first = 579,            /* forward_first  */
+  YYSYMBOL_forward_no_cache = 580,         /* forward_no_cache  */
+  YYSYMBOL_forward_ssl_upstream = 581,     /* forward_ssl_upstream  */
+  YYSYMBOL_forward_tcp_upstream = 582,     /* forward_tcp_upstream  */
+  YYSYMBOL_auth_name = 583,                /* auth_name  */
+  YYSYMBOL_auth_zonefile = 584,            /* auth_zonefile  */
+  YYSYMBOL_auth_master = 585,              /* auth_master  */
+  YYSYMBOL_auth_url = 586,                 /* auth_url  */
+  YYSYMBOL_auth_allow_notify = 587,        /* auth_allow_notify  */
+  YYSYMBOL_auth_zonemd_check = 588,        /* auth_zonemd_check  */
+  YYSYMBOL_auth_zonemd_reject_absence = 589, /* auth_zonemd_reject_absence  */
+  YYSYMBOL_auth_for_downstream = 590,      /* auth_for_downstream  */
+  YYSYMBOL_auth_for_upstream = 591,        /* auth_for_upstream  */
+  YYSYMBOL_auth_fallback_enabled = 592,    /* auth_fallback_enabled  */
+  YYSYMBOL_view_name = 593,                /* view_name  */
+  YYSYMBOL_view_local_zone = 594,          /* view_local_zone  */
+  YYSYMBOL_view_response_ip = 595,         /* view_response_ip  */
+  YYSYMBOL_view_response_ip_data = 596,    /* view_response_ip_data  */
+  YYSYMBOL_view_local_data = 597,          /* view_local_data  */
+  YYSYMBOL_view_local_data_ptr = 598,      /* view_local_data_ptr  */
+  YYSYMBOL_view_first = 599,               /* view_first  */
+  YYSYMBOL_rcstart = 600,                  /* rcstart  */
+  YYSYMBOL_contents_rc = 601,              /* contents_rc  */
+  YYSYMBOL_content_rc = 602,               /* content_rc  */
+  YYSYMBOL_rc_control_enable = 603,        /* rc_control_enable  */
+  YYSYMBOL_rc_control_port = 604,          /* rc_control_port  */
+  YYSYMBOL_rc_control_interface = 605,     /* rc_control_interface  */
+  YYSYMBOL_rc_control_use_cert = 606,      /* rc_control_use_cert  */
+  YYSYMBOL_rc_server_key_file = 607,       /* rc_server_key_file  */
+  YYSYMBOL_rc_server_cert_file = 608,      /* rc_server_cert_file  */
+  YYSYMBOL_rc_control_key_file = 609,      /* rc_control_key_file  */
+  YYSYMBOL_rc_control_cert_file = 610,     /* rc_control_cert_file  */
+  YYSYMBOL_dtstart = 611,                  /* dtstart  */
+  YYSYMBOL_contents_dt = 612,              /* contents_dt  */
+  YYSYMBOL_content_dt = 613,               /* content_dt  */
+  YYSYMBOL_dt_dnstap_enable = 614,         /* dt_dnstap_enable  */
+  YYSYMBOL_dt_dnstap_bidirectional = 615,  /* dt_dnstap_bidirectional  */
+  YYSYMBOL_dt_dnstap_socket_path = 616,    /* dt_dnstap_socket_path  */
+  YYSYMBOL_dt_dnstap_ip = 617,             /* dt_dnstap_ip  */
+  YYSYMBOL_dt_dnstap_tls = 618,            /* dt_dnstap_tls  */
+  YYSYMBOL_dt_dnstap_tls_server_name = 619, /* dt_dnstap_tls_server_name  */
+  YYSYMBOL_dt_dnstap_tls_cert_bundle = 620, /* dt_dnstap_tls_cert_bundle  */
+  YYSYMBOL_dt_dnstap_tls_client_key_file = 621, /* dt_dnstap_tls_client_key_file  */
+  YYSYMBOL_dt_dnstap_tls_client_cert_file = 622, /* dt_dnstap_tls_client_cert_file  */
+  YYSYMBOL_dt_dnstap_send_identity = 623,  /* dt_dnstap_send_identity  */
+  YYSYMBOL_dt_dnstap_send_version = 624,   /* dt_dnstap_send_version  */
+  YYSYMBOL_dt_dnstap_identity = 625,       /* dt_dnstap_identity  */
+  YYSYMBOL_dt_dnstap_version = 626,        /* dt_dnstap_version  */
+  YYSYMBOL_dt_dnstap_log_resolver_query_messages = 627, /* dt_dnstap_log_resolver_query_messages  */
+  YYSYMBOL_dt_dnstap_log_resolver_response_messages = 628, /* dt_dnstap_log_resolver_response_messages  */
+  YYSYMBOL_dt_dnstap_log_client_query_messages = 629, /* dt_dnstap_log_client_query_messages  */
+  YYSYMBOL_dt_dnstap_log_client_response_messages = 630, /* dt_dnstap_log_client_response_messages  */
+  YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 631, /* dt_dnstap_log_forwarder_query_messages  */
+  YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 632, /* dt_dnstap_log_forwarder_response_messages  */
+  YYSYMBOL_pythonstart = 633,              /* pythonstart  */
+  YYSYMBOL_contents_py = 634,              /* contents_py  */
+  YYSYMBOL_content_py = 635,               /* content_py  */
+  YYSYMBOL_py_script = 636,                /* py_script  */
+  YYSYMBOL_dynlibstart = 637,              /* dynlibstart  */
+  YYSYMBOL_contents_dl = 638,              /* contents_dl  */
+  YYSYMBOL_content_dl = 639,               /* content_dl  */
+  YYSYMBOL_dl_file = 640,                  /* dl_file  */
+  YYSYMBOL_server_disable_dnssec_lame_check = 641, /* server_disable_dnssec_lame_check  */
+  YYSYMBOL_server_log_identity = 642,      /* server_log_identity  */
+  YYSYMBOL_server_response_ip = 643,       /* server_response_ip  */
+  YYSYMBOL_server_response_ip_data = 644,  /* server_response_ip_data  */
+  YYSYMBOL_dnscstart = 645,                /* dnscstart  */
+  YYSYMBOL_contents_dnsc = 646,            /* contents_dnsc  */
+  YYSYMBOL_content_dnsc = 647,             /* content_dnsc  */
+  YYSYMBOL_dnsc_dnscrypt_enable = 648,     /* dnsc_dnscrypt_enable  */
+  YYSYMBOL_dnsc_dnscrypt_port = 649,       /* dnsc_dnscrypt_port  */
+  YYSYMBOL_dnsc_dnscrypt_provider = 650,   /* dnsc_dnscrypt_provider  */
+  YYSYMBOL_dnsc_dnscrypt_provider_cert = 651, /* dnsc_dnscrypt_provider_cert  */
+  YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 652, /* dnsc_dnscrypt_provider_cert_rotated  */
+  YYSYMBOL_dnsc_dnscrypt_secret_key = 653, /* dnsc_dnscrypt_secret_key  */
+  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 654, /* dnsc_dnscrypt_shared_secret_cache_size  */
+  YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 655, /* dnsc_dnscrypt_shared_secret_cache_slabs  */
+  YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 656, /* dnsc_dnscrypt_nonce_cache_size  */
+  YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 657, /* dnsc_dnscrypt_nonce_cache_slabs  */
+  YYSYMBOL_cachedbstart = 658,             /* cachedbstart  */
+  YYSYMBOL_contents_cachedb = 659,         /* contents_cachedb  */
+  YYSYMBOL_content_cachedb = 660,          /* content_cachedb  */
+  YYSYMBOL_cachedb_backend_name = 661,     /* cachedb_backend_name  */
+  YYSYMBOL_cachedb_secret_seed = 662,      /* cachedb_secret_seed  */
+  YYSYMBOL_redis_server_host = 663,        /* redis_server_host  */
+  YYSYMBOL_redis_server_port = 664,        /* redis_server_port  */
+  YYSYMBOL_redis_timeout = 665,            /* redis_timeout  */
+  YYSYMBOL_redis_expire_records = 666,     /* redis_expire_records  */
+  YYSYMBOL_server_tcp_connection_limit = 667, /* server_tcp_connection_limit  */
+  YYSYMBOL_ipsetstart = 668,               /* ipsetstart  */
+  YYSYMBOL_contents_ipset = 669,           /* contents_ipset  */
+  YYSYMBOL_content_ipset = 670,            /* content_ipset  */
+  YYSYMBOL_ipset_name_v4 = 671,            /* ipset_name_v4  */
+  YYSYMBOL_ipset_name_v6 = 672             /* ipset_name_v6  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -1524,6 +840,18 @@ typedef int_least16_t yytype_int16;
 typedef short yytype_int16;
 #endif
 
+/* Work around bug in HP-UX 11.23, which defines these macros
+   incorrectly for preprocessor constants.  This workaround can likely
+   be removed in 2023, as HPE has promised support for HP-UX 11.23
+   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
@@ -1621,9 +949,9 @@ typedef int yy_state_fast_t;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -1790,18 +1118,19 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   683
+#define YYLAST   687
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  322
+#define YYNTOKENS  324
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  347
+#define YYNNTS  349
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  671
+#define YYNRULES  675
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  997
+#define YYNSTATES  1003
 
-#define YYMAXUTOK   576
+/* YYMAXUTOK -- Last valid token kind.  */
+#define YYMAXUTOK   578
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1872,81 +1201,81 @@ static const yytype_int16 yytranslate[] =
      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,   318,   319,   320,   321
+     315,   316,   317,   318,   319,   320,   321,   322,   323
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   193,   193,   193,   194,   194,   195,   195,   196,   196,
-     196,   197,   197,   198,   198,   199,   199,   200,   202,   208,
-     213,   214,   215,   215,   215,   216,   216,   217,   217,   217,
-     218,   218,   219,   219,   219,   220,   220,   221,   221,   221,
-     222,   222,   222,   223,   223,   224,   224,   225,   225,   226,
-     226,   227,   227,   228,   228,   229,   229,   230,   230,   231,
-     231,   231,   232,   232,   233,   233,   233,   234,   234,   234,
-     235,   235,   236,   236,   237,   237,   238,   238,   239,   239,
-     239,   240,   240,   241,   241,   242,   242,   242,   243,   243,
-     244,   244,   245,   245,   246,   246,   246,   247,   247,   248,
-     248,   249,   249,   250,   250,   251,   251,   252,   252,   253,
-     253,   254,   254,   255,   255,   255,   256,   256,   256,   257,
-     257,   257,   258,   258,   258,   258,   259,   260,   260,   260,
-     261,   261,   261,   262,   262,   263,   263,   264,   264,   264,
-     265,   265,   265,   266,   266,   267,   267,   267,   268,   268,
-     269,   269,   269,   270,   270,   271,   271,   272,   272,   273,
-     274,   274,   275,   275,   276,   276,   277,   277,   278,   278,
-     279,   279,   280,   280,   281,   281,   282,   282,   283,   283,
-     283,   284,   284,   285,   285,   286,   286,   287,   288,   288,
-     289,   289,   290,   291,   291,   292,   292,   293,   293,   294,
-     294,   295,   295,   295,   296,   296,   296,   297,   297,   298,
-     299,   299,   300,   300,   301,   301,   302,   302,   303,   303,
-     303,   304,   304,   304,   305,   305,   305,   306,   306,   307,
-     307,   308,   308,   309,   309,   310,   310,   311,   311,   312,
-     312,   315,   328,   329,   330,   330,   330,   330,   330,   331,
-     331,   331,   333,   346,   347,   348,   348,   348,   348,   349,
-     349,   349,   351,   366,   367,   368,   368,   368,   368,   369,
-     369,   369,   371,   391,   392,   393,   393,   393,   393,   394,
-     394,   394,   395,   395,   395,   398,   417,   434,   442,   452,
-     459,   469,   487,   488,   489,   489,   489,   489,   489,   490,
-     490,   490,   491,   491,   491,   491,   493,   502,   511,   522,
-     531,   540,   549,   560,   569,   581,   595,   610,   621,   638,
-     655,   672,   689,   704,   719,   732,   747,   756,   765,   774,
-     783,   792,   801,   810,   819,   828,   837,   846,   855,   864,
-     873,   886,   897,   908,   919,   928,   941,   950,   959,   968,
-     975,   982,   991,   998,  1007,  1015,  1022,  1029,  1037,  1046,
-    1054,  1070,  1078,  1086,  1094,  1102,  1110,  1119,  1128,  1142,
-    1151,  1160,  1169,  1178,  1187,  1196,  1203,  1210,  1236,  1244,
-    1251,  1258,  1265,  1272,  1280,  1288,  1296,  1303,  1314,  1325,
-    1332,  1341,  1350,  1359,  1368,  1375,  1382,  1389,  1405,  1413,
-    1421,  1431,  1441,  1451,  1465,  1473,  1486,  1497,  1505,  1518,
-    1527,  1536,  1545,  1554,  1564,  1574,  1582,  1595,  1604,  1612,
-    1621,  1629,  1642,  1651,  1661,  1668,  1678,  1688,  1698,  1708,
-    1718,  1728,  1738,  1748,  1755,  1762,  1769,  1778,  1787,  1796,
-    1805,  1812,  1822,  1842,  1849,  1867,  1880,  1893,  1906,  1915,
-    1924,  1933,  1942,  1952,  1962,  1973,  1982,  1991,  2000,  2009,
-    2018,  2027,  2036,  2049,  2062,  2071,  2078,  2087,  2096,  2105,
-    2114,  2123,  2131,  2144,  2152,  2197,  2204,  2219,  2229,  2239,
-    2246,  2253,  2260,  2269,  2277,  2291,  2312,  2333,  2345,  2357,
-    2369,  2378,  2399,  2408,  2417,  2425,  2433,  2446,  2459,  2474,
-    2489,  2498,  2507,  2516,  2522,  2531,  2540,  2550,  2560,  2570,
-    2579,  2589,  2598,  2611,  2624,  2636,  2650,  2662,  2676,  2685,
-    2697,  2707,  2714,  2721,  2730,  2739,  2749,  2759,  2769,  2779,
-    2786,  2793,  2802,  2811,  2821,  2831,  2841,  2848,  2855,  2862,
-    2870,  2880,  2890,  2900,  2910,  2920,  2930,  2976,  2986,  2994,
-    3002,  3017,  3026,  3031,  3032,  3033,  3033,  3033,  3034,  3034,
-    3034,  3035,  3035,  3037,  3047,  3056,  3063,  3070,  3077,  3084,
-    3091,  3098,  3103,  3104,  3105,  3105,  3105,  3106,  3106,  3106,
-    3107,  3108,  3108,  3109,  3109,  3110,  3110,  3111,  3112,  3113,
-    3114,  3115,  3116,  3118,  3127,  3137,  3144,  3151,  3160,  3167,
-    3174,  3181,  3188,  3197,  3206,  3213,  3220,  3230,  3240,  3250,
-    3260,  3270,  3280,  3285,  3286,  3287,  3289,  3295,  3300,  3301,
-    3302,  3304,  3310,  3320,  3327,  3336,  3344,  3349,  3350,  3352,
-    3352,  3352,  3353,  3353,  3354,  3355,  3356,  3357,  3358,  3360,
-    3370,  3379,  3386,  3395,  3402,  3411,  3419,  3432,  3440,  3453,
-    3458,  3459,  3460,  3460,  3461,  3461,  3461,  3462,  3464,  3476,
-    3488,  3500,  3515,  3528,  3541,  3552,  3557,  3558,  3559,  3559,
-    3561,  3576
+       0,   194,   194,   194,   195,   195,   196,   196,   197,   197,
+     197,   198,   198,   199,   199,   200,   200,   201,   203,   209,
+     214,   215,   216,   216,   216,   217,   217,   218,   218,   218,
+     219,   219,   220,   220,   220,   221,   221,   222,   222,   222,
+     223,   223,   223,   224,   224,   225,   225,   226,   226,   227,
+     227,   228,   228,   229,   229,   230,   230,   231,   231,   232,
+     232,   232,   233,   233,   234,   234,   234,   235,   235,   235,
+     236,   236,   237,   237,   238,   238,   239,   239,   240,   240,
+     240,   241,   241,   242,   242,   243,   243,   243,   244,   244,
+     245,   245,   246,   246,   247,   247,   247,   248,   248,   249,
+     249,   250,   250,   251,   251,   252,   252,   253,   253,   254,
+     254,   255,   255,   256,   256,   256,   257,   257,   257,   258,
+     258,   258,   259,   259,   259,   259,   260,   261,   261,   261,
+     262,   262,   262,   263,   263,   264,   264,   265,   265,   265,
+     266,   266,   266,   267,   267,   268,   268,   268,   269,   269,
+     270,   270,   270,   271,   271,   272,   272,   273,   273,   274,
+     275,   275,   276,   276,   277,   277,   278,   278,   279,   279,
+     280,   280,   281,   281,   282,   282,   283,   283,   284,   284,
+     285,   285,   285,   286,   286,   287,   287,   288,   288,   289,
+     290,   290,   291,   291,   292,   293,   293,   294,   294,   295,
+     295,   296,   296,   297,   297,   297,   298,   298,   298,   299,
+     299,   300,   301,   301,   302,   302,   303,   303,   304,   304,
+     305,   305,   305,   306,   306,   306,   307,   307,   307,   308,
+     308,   309,   309,   310,   310,   311,   311,   312,   312,   313,
+     313,   314,   314,   317,   330,   331,   332,   332,   332,   332,
+     332,   333,   333,   333,   335,   348,   349,   350,   350,   350,
+     350,   351,   351,   351,   353,   368,   369,   370,   370,   370,
+     370,   371,   371,   371,   373,   393,   394,   395,   395,   395,
+     395,   396,   396,   396,   397,   397,   397,   400,   419,   436,
+     444,   454,   461,   471,   489,   490,   491,   491,   491,   491,
+     491,   492,   492,   492,   493,   493,   493,   493,   495,   504,
+     513,   524,   533,   542,   551,   562,   571,   583,   597,   612,
+     623,   640,   657,   674,   691,   706,   721,   734,   749,   758,
+     767,   776,   785,   794,   803,   812,   821,   830,   839,   848,
+     857,   866,   875,   888,   899,   910,   921,   930,   943,   952,
+     961,   970,   977,   984,   993,  1000,  1009,  1017,  1024,  1031,
+    1039,  1048,  1056,  1072,  1080,  1088,  1096,  1104,  1112,  1121,
+    1130,  1144,  1153,  1162,  1171,  1180,  1189,  1198,  1205,  1212,
+    1238,  1246,  1253,  1260,  1267,  1274,  1282,  1290,  1298,  1305,
+    1316,  1327,  1334,  1343,  1352,  1361,  1370,  1377,  1384,  1391,
+    1407,  1415,  1423,  1433,  1443,  1453,  1467,  1475,  1488,  1499,
+    1507,  1520,  1529,  1538,  1547,  1556,  1566,  1576,  1584,  1597,
+    1606,  1614,  1623,  1631,  1644,  1653,  1663,  1670,  1680,  1690,
+    1700,  1710,  1720,  1730,  1740,  1750,  1757,  1764,  1771,  1780,
+    1789,  1798,  1807,  1814,  1824,  1844,  1851,  1869,  1882,  1895,
+    1908,  1917,  1926,  1935,  1944,  1954,  1964,  1975,  1984,  1993,
+    2002,  2011,  2020,  2029,  2038,  2051,  2064,  2073,  2080,  2089,
+    2098,  2107,  2116,  2125,  2133,  2146,  2154,  2199,  2206,  2221,
+    2231,  2241,  2248,  2255,  2262,  2271,  2279,  2293,  2314,  2335,
+    2347,  2359,  2371,  2380,  2401,  2410,  2419,  2427,  2435,  2448,
+    2461,  2476,  2491,  2500,  2509,  2519,  2529,  2538,  2544,  2553,
+    2562,  2572,  2582,  2592,  2601,  2611,  2620,  2633,  2646,  2658,
+    2672,  2684,  2698,  2707,  2719,  2729,  2736,  2743,  2752,  2761,
+    2771,  2781,  2791,  2801,  2808,  2815,  2824,  2833,  2843,  2853,
+    2863,  2870,  2877,  2884,  2892,  2902,  2912,  2922,  2932,  2942,
+    2952,  2998,  3008,  3016,  3024,  3039,  3048,  3053,  3054,  3055,
+    3055,  3055,  3056,  3056,  3056,  3057,  3057,  3059,  3069,  3078,
+    3085,  3092,  3099,  3106,  3113,  3120,  3125,  3126,  3127,  3127,
+    3127,  3128,  3128,  3128,  3129,  3130,  3130,  3131,  3131,  3132,
+    3132,  3133,  3134,  3135,  3136,  3137,  3138,  3140,  3149,  3159,
+    3166,  3173,  3182,  3189,  3196,  3203,  3210,  3219,  3228,  3235,
+    3242,  3252,  3262,  3272,  3282,  3292,  3302,  3307,  3308,  3309,
+    3311,  3317,  3322,  3323,  3324,  3326,  3332,  3342,  3349,  3358,
+    3366,  3371,  3372,  3374,  3374,  3374,  3375,  3375,  3376,  3377,
+    3378,  3379,  3380,  3382,  3392,  3401,  3408,  3417,  3424,  3433,
+    3441,  3454,  3462,  3475,  3480,  3481,  3482,  3482,  3483,  3483,
+    3483,  3484,  3486,  3498,  3510,  3522,  3537,  3550,  3563,  3574,
+    3579,  3580,  3581,  3581,  3583,  3598
 };
 #endif
 
@@ -2037,7 +1366,8 @@ static const char *const yytname[] =
   "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE",
   "VAR_OUTBOUND_MSG_RETRY", "VAR_RATELIMIT_FOR_DOMAIN",
   "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_IP_RATELIMIT_FACTOR",
-  "VAR_RATELIMIT_FACTOR", "VAR_SEND_CLIENT_SUBNET",
+  "VAR_RATELIMIT_FACTOR", "VAR_IP_RATELIMIT_BACKOFF",
+  "VAR_RATELIMIT_BACKOFF", "VAR_SEND_CLIENT_SUBNET",
   "VAR_CLIENT_SUBNET_ZONE", "VAR_CLIENT_SUBNET_ALWAYS_FORWARD",
   "VAR_CLIENT_SUBNET_OPCODE", "VAR_MAX_CLIENT_SUBNET_IPV4",
   "VAR_MAX_CLIENT_SUBNET_IPV6", "VAR_MIN_CLIENT_SUBNET_IPV4",
@@ -2176,8 +1506,9 @@ static const char *const yytname[] =
   "server_ratelimit_size", "server_ip_ratelimit_slabs",
   "server_ratelimit_slabs", "server_ratelimit_for_domain",
   "server_ratelimit_below_domain", "server_ip_ratelimit_factor",
-  "server_ratelimit_factor", "server_outbound_msg_retry", "server_low_rtt",
-  "server_fast_server_num", "server_fast_server_permil",
+  "server_ratelimit_factor", "server_ip_ratelimit_backoff",
+  "server_ratelimit_backoff", "server_outbound_msg_retry",
+  "server_low_rtt", "server_fast_server_num", "server_fast_server_permil",
   "server_qname_minimisation", "server_qname_minimisation_strict",
   "server_pad_responses", "server_pad_responses_block_size",
   "server_pad_queries", "server_pad_queries_block_size",
@@ -2269,11 +1600,11 @@ static const yytype_int16 yytoknum[] =
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
      555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
      565,   566,   567,   568,   569,   570,   571,   572,   573,   574,
-     575,   576
+     575,   576,   577,   578
 };
 #endif
 
-#define YYPACT_NINF (-308)
+#define YYPACT_NINF (-310)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -2287,11 +1618,11 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -308,     0,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,   301,   -39,   -32,   -43,   -30,   -44,   -42,   -97,
-    -110,  -307,  -227,  -231,  -301,     4,     6,     7,     8,     9,
+    -310,     0,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,   303,   -39,   -32,   -43,   -30,   -44,   -42,   -97,
+    -110,  -309,  -229,  -233,  -303,     4,     6,     7,     8,     9,
       10,    23,    24,    25,    26,    27,    37,    38,    39,    40,
       41,    43,    44,    53,    54,    56,    57,    58,    59,    60,
       81,    82,    83,    84,    85,    87,    88,    89,    90,    91,
@@ -2302,91 +1633,92 @@ static const yytype_int16 yypact[] =
      141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
      151,   152,   153,   154,   155,   156,   157,   159,   160,   161,
      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-     172,   173,   174,   175,   176,   178,   179,   180,   181,   182,
+     172,   173,   174,   175,   176,   177,   178,   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,   219,   220,   221,   222,   223,
-     224,   225,   230,   231,   232,   233,   234,   235,   237,   246,
-     247,   248,   249,   252,   253,   259,   261,   262,   263,   264,
-     265,   266,   268,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   294,   295,   296,   298,   299,   300,
-     302,   336,   337,   338,   339,   343,   344,   345,   387,   388,
-     389,   390,   391,   392,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,   393,   394,   395,   401,   405,   406,
-     433,   434,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,   435,   437,   438,   446,   459,   460,   461,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,   462,   463,   464,   465,
-     466,   467,   468,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,   469,   470,   471,   472,   473,   474,   475,   476,   477,
-     478,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,   519,   521,   540,   541,   542,   543,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,   544,   545,   546,   547,   548,   549,   550,   561,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,   562,   563,
-     564,   565,   566,   567,   569,   570,   571,   572,   573,   574,
-     575,   578,   581,   584,   585,   594,   595,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   596,  -308,  -308,
-     598,  -308,  -308,   599,   600,   601,   602,   603,   604,   605,
-     610,   611,   612,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,   613,   614,   615,   616,   617,   618,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   619,   620,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,   621,   622,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,   623,   624,   625,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,   626,   627,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   628,   629,   630,
-     631,   632,   633,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   634,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   635,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   636,  -308,  -308,
-     637,   638,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,   639,   640,   641,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308
+     213,   214,   215,   216,   217,   218,   219,   221,   222,   223,
+     224,   225,   226,   227,   232,   233,   234,   235,   236,   237,
+     239,   248,   249,   250,   251,   254,   255,   261,   263,   264,
+     265,   266,   267,   268,   270,   272,   273,   274,   275,   276,
+     277,   278,   279,   280,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   296,   297,   298,   300,
+     301,   302,   304,   338,   339,   340,   341,   345,   346,   347,
+     389,   390,   391,   392,   393,   394,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   395,   396,
+     397,   403,   407,   408,   435,   436,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,   437,   439,   440,   448,   461,
+     462,   463,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+     464,   465,   466,   467,   468,   469,   470,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,   471,   472,   473,   474,   475,
+     476,   477,   478,   479,   480,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,   523,   525,   544,   545,
+     546,   547,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,   548,   549,   550,   551,   552,
+     553,   554,   565,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,   566,   567,   568,   569,   570,   571,   573,   574,
+     575,   576,   577,   578,   579,   582,   585,   588,   589,   598,
+     599,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,   600,  -310,  -310,   602,  -310,  -310,   603,   604,   605,
+     606,   607,   608,   609,   614,   615,   616,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   617,   618,
+     619,   620,   621,   622,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,   623,   624,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,   625,   626,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,   627,   628,   629,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+     630,   631,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,   632,   633,   634,   635,   636,   637,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,   638,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,   639,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,   640,  -310,  -310,   641,   642,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,   643,   644,   645,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -2394,10 +1726,10 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_int16 yydefact[] =
 {
-       2,     0,     1,    18,    19,   241,   252,   552,   612,   571,
-     262,   626,   649,   272,   665,   291,   617,     3,    17,    21,
-     243,   254,   264,   274,   293,   554,   573,   614,   619,   628,
-     651,   667,     4,     5,     6,    10,    14,    15,     8,     9,
+       2,     0,     1,    18,    19,   243,   254,   556,   616,   575,
+     264,   630,   653,   274,   669,   293,   621,     3,    17,    21,
+     245,   256,   266,   276,   295,   558,   577,   618,   623,   632,
+     655,   671,     4,     5,     6,    10,    14,    15,     8,     9,
        7,    16,    11,    12,    13,     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,
@@ -2420,160 +1752,161 @@ static const yytype_int16 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,    20,    22,    23,    88,    91,   100,
-     204,   205,    24,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,    37,    79,    25,    92,    93,    48,    72,
-      87,    26,    27,    30,    31,    28,    29,    32,    33,    34,
-     238,   239,   240,    35,    36,   124,   216,   125,   127,   128,
-     129,   218,   223,   219,   230,   231,   232,   233,   130,   131,
-     132,   133,   134,   135,   136,   200,    89,    78,   104,   122,
-     123,   228,   225,   126,    38,    39,    40,    41,    42,    80,
-      94,    95,   111,    66,    76,    67,   208,   209,   105,    58,
-      59,   207,    62,    60,    61,    63,   236,   115,   119,   140,
-     150,   178,   153,   229,   116,    73,    43,    44,    45,   102,
-     141,   142,   143,   144,    46,    47,    49,    50,    52,    53,
-      51,   148,   154,    54,    55,    56,    64,    83,   120,    97,
-     149,    90,   174,    98,    99,   117,   118,   226,   103,    57,
-      81,    84,    65,    68,   106,   107,   108,    82,   175,   109,
-      69,    70,    71,   217,   121,   192,   193,   194,   195,   196,
-     197,   198,   206,   110,    77,   237,   112,   113,   114,   176,
-      74,    75,    96,    85,    86,   101,   137,   138,   227,   139,
-     145,   146,   147,   179,   180,   182,   184,   185,   183,   186,
-     201,   151,   152,   157,   158,   155,   156,   159,   160,   162,
-     161,   163,   220,   222,   221,   177,   187,   188,   189,   190,
-     191,   210,   212,   211,   213,   214,   215,   234,   235,   181,
-     199,   202,   203,   224,     0,     0,     0,     0,     0,     0,
-       0,     0,   242,   244,   245,   246,   248,   249,   250,   251,
-     247,     0,     0,     0,     0,     0,     0,     0,   253,   255,
-     256,   257,   258,   259,   260,   261,     0,     0,     0,     0,
-       0,     0,     0,   263,   265,   266,   269,   270,   267,   271,
-     268,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   273,   275,   276,   277,   278,   282,   283,   284,   279,
-     280,   281,     0,     0,     0,     0,     0,     0,   296,   300,
-     301,   302,   303,   304,   292,   294,   295,   297,   298,   299,
-     305,     0,     0,     0,     0,     0,     0,     0,     0,   553,
-     555,   557,   556,   562,   558,   559,   560,   561,     0,     0,
+       0,     0,     0,     0,     0,     0,    20,    22,    23,    88,
+      91,   100,   206,   207,    24,   166,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    37,    79,    25,    92,    93,
+      48,    72,    87,    26,    27,    30,    31,    28,    29,    32,
+      33,    34,   240,   241,   242,    35,    36,   124,   218,   125,
+     127,   128,   129,   220,   225,   221,   232,   233,   234,   235,
+     130,   131,   132,   133,   134,   135,   136,   202,    89,    78,
+     104,   122,   123,   230,   227,   126,    38,    39,    40,    41,
+      42,    80,    94,    95,   111,    66,    76,    67,   210,   211,
+     105,    58,    59,   209,    62,    60,    61,    63,   238,   115,
+     119,   140,   150,   180,   153,   231,   116,    73,    43,    44,
+      45,   102,   141,   142,   143,   144,    46,    47,    49,    50,
+      52,    53,    51,   148,   154,    54,    55,    56,    64,    83,
+     120,    97,   149,    90,   176,    98,    99,   117,   118,   228,
+     103,    57,    81,    84,    65,    68,   106,   107,   108,    82,
+     177,   109,    69,    70,    71,   219,   121,   194,   195,   196,
+     197,   198,   199,   200,   208,   110,    77,   239,   112,   113,
+     114,   178,    74,    75,    96,    85,    86,   101,   137,   138,
+     229,   139,   145,   146,   147,   181,   182,   184,   186,   187,
+     185,   188,   203,   151,   152,   157,   158,   155,   156,   159,
+     160,   162,   161,   164,   163,   165,   222,   224,   223,   179,
+     189,   190,   191,   192,   193,   212,   214,   213,   215,   216,
+     217,   236,   237,   183,   201,   204,   205,   226,     0,     0,
+       0,     0,     0,     0,     0,     0,   244,   246,   247,   248,
+     250,   251,   252,   253,   249,     0,     0,     0,     0,     0,
+       0,     0,   255,   257,   258,   259,   260,   261,   262,   263,
+       0,     0,     0,     0,     0,     0,     0,   265,   267,   268,
+     271,   272,   269,   273,   270,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   275,   277,   278,   279,   280,
+     284,   285,   286,   281,   282,   283,     0,     0,     0,     0,
+       0,     0,   298,   302,   303,   304,   305,   306,   294,   296,
+     297,   299,   300,   301,   307,     0,     0,     0,     0,     0,
+       0,     0,     0,   557,   559,   561,   560,   566,   562,   563,
+     564,   565,     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,   572,   574,   576,
-     575,   577,   578,   579,   580,   581,   582,   583,   584,   585,
-     586,   587,   588,   589,   590,   591,   592,     0,   613,   615,
-       0,   618,   620,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   627,   629,   630,   631,   633,   634,   632,
-     635,   636,   637,   638,     0,     0,     0,     0,     0,     0,
-     650,   652,   653,   654,   655,   656,   657,     0,     0,   666,
-     668,   669,   307,   306,   313,   326,   324,   336,   332,   333,
-     337,   334,   335,   338,   339,   340,   344,   345,   375,   376,
-     377,   378,   379,   407,   408,   409,   415,   416,   329,   417,
-     418,   421,   419,   420,   424,   425,   426,   440,   390,   391,
-     394,   395,   427,   443,   384,   386,   444,   451,   452,   453,
-     330,   406,   471,   472,   385,   465,   368,   325,   380,   441,
-     448,   428,     0,     0,   475,   331,   308,   367,   432,   309,
-     327,   328,   381,   382,   473,   430,   434,   435,   342,   341,
-     310,   476,   410,   439,   369,   389,   445,   446,   447,   450,
-     464,   383,   469,   467,   468,   398,   405,   436,   437,   399,
-     400,   429,   455,   370,   371,   374,   346,   348,   343,   349,
-     350,   351,   352,   359,   360,   361,   362,   363,   364,   365,
-     477,   478,   480,   411,   412,   413,   414,   422,   423,   481,
-     482,   483,     0,     0,     0,   431,   401,   403,   622,   492,
-     496,   494,   493,   497,   495,   502,     0,     0,   500,   501,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     433,   449,   470,   506,   507,   402,   484,     0,     0,     0,
-       0,     0,     0,   456,   457,   458,   459,   460,   461,   462,
-     463,   623,   392,   393,   396,   387,   454,   366,   311,   312,
-     388,   508,   509,   510,   511,   512,   514,   513,   515,   516,
-     517,   347,   354,   503,   505,   504,   353,     0,   373,   438,
-     479,   372,   404,   355,   356,   358,   357,     0,   519,   397,
-     466,   520,   521,   522,   527,   525,   526,   523,   524,   528,
-     529,   530,   531,   533,   534,   532,   545,     0,   549,   550,
-       0,     0,   551,   535,   543,   536,   537,   538,   542,   544,
-     539,   540,   541,   285,   286,   287,   288,   289,   290,   563,
-     565,   564,   567,   568,   569,   570,   566,   593,   595,   596,
-     597,   598,   599,   600,   601,   602,   603,   594,   604,   605,
-     606,   607,   608,   609,   610,   611,   616,   621,   639,   640,
-     641,   644,   642,   643,   645,   646,   647,   648,   658,   659,
-     660,   661,   662,   663,   670,   671,   442,   474,   491,   624,
-     625,   498,   499,   485,   486,     0,     0,     0,   490,   664,
-     518,   546,   547,   548,   489,   487,   488
+       0,   576,   578,   580,   579,   581,   582,   583,   584,   585,
+     586,   587,   588,   589,   590,   591,   592,   593,   594,   595,
+     596,     0,   617,   619,     0,   622,   624,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   631,   633,   634,
+     635,   637,   638,   636,   639,   640,   641,   642,     0,     0,
+       0,     0,     0,     0,   654,   656,   657,   658,   659,   660,
+     661,     0,     0,   670,   672,   673,   309,   308,   315,   328,
+     326,   338,   334,   335,   339,   336,   337,   340,   341,   342,
+     346,   347,   377,   378,   379,   380,   381,   409,   410,   411,
+     417,   418,   331,   419,   420,   423,   421,   422,   426,   427,
+     428,   442,   392,   393,   396,   397,   429,   445,   386,   388,
+     446,   453,   454,   455,   332,   408,   473,   474,   387,   467,
+     370,   327,   382,   443,   450,   430,     0,     0,   477,   333,
+     310,   369,   434,   311,   329,   330,   383,   384,   475,   432,
+     436,   437,   344,   343,   312,   478,   412,   441,   371,   391,
+     447,   448,   449,   452,   466,   385,   471,   469,   470,   400,
+     407,   438,   439,   401,   402,   431,   457,   372,   373,   376,
+     348,   350,   345,   351,   352,   353,   354,   361,   362,   363,
+     364,   365,   366,   367,   479,   480,   482,   413,   414,   415,
+     416,   424,   425,   483,   484,   485,     0,     0,     0,   433,
+     403,   405,   626,   494,   498,   496,   495,   499,   497,   506,
+       0,     0,   502,   503,   504,   505,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   435,   451,   472,   510,
+     511,   404,   486,     0,     0,     0,     0,     0,     0,   458,
+     459,   460,   461,   462,   463,   464,   465,   627,   394,   395,
+     398,   389,   456,   368,   313,   314,   390,   512,   513,   514,
+     515,   516,   518,   517,   519,   520,   521,   349,   356,   507,
+     509,   508,   355,     0,   375,   440,   481,   374,   406,   357,
+     358,   360,   359,     0,   523,   399,   468,   524,   525,   526,
+     531,   529,   530,   527,   528,   532,   533,   534,   535,   537,
+     538,   536,   549,     0,   553,   554,     0,     0,   555,   539,
+     547,   540,   541,   542,   546,   548,   543,   544,   545,   287,
+     288,   289,   290,   291,   292,   567,   569,   568,   571,   572,
+     573,   574,   570,   597,   599,   600,   601,   602,   603,   604,
+     605,   606,   607,   598,   608,   609,   610,   611,   612,   613,
+     614,   615,   620,   625,   643,   644,   645,   648,   646,   647,
+     649,   650,   651,   652,   662,   663,   664,   665,   666,   667,
+     674,   675,   444,   476,   493,   628,   629,   500,   501,   487,
+     488,     0,     0,     0,   492,   668,   522,   550,   551,   552,
+     491,   489,   490
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,   -27,   642,   643,
-     644,   645,  -308,  -308,   646,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-    -308,  -308,  -308,  -308,  -308,  -308,  -308
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,   -27,
+     646,   647,   648,   649,  -310,  -310,   650,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,
+    -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310,  -310
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    17,    18,    19,    32,   264,    20,    33,   492,
-      21,    34,   508,    22,    35,   523,    23,    36,   541,   558,
-     559,   560,   561,   562,   563,    24,    37,   564,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   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,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-     327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
-     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
-     347,   348,   349,   350,   351,   352,   353,   354,   355,   356,
-     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
-     367,   368,   369,   370,   371,   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,   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,   426,
-     427,   428,   429,   430,   431,   432,   433,   434,   435,   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,   493,   494,   495,   496,   497,   498,   499,   500,
-     509,   510,   511,   512,   513,   514,   515,   542,   543,   544,
-     545,   546,   547,   548,   549,   550,   551,   524,   525,   526,
-     527,   528,   529,   530,    25,    38,   579,   580,   581,   582,
-     583,   584,   585,   586,   587,    26,    39,   607,   608,   609,
-     610,   611,   612,   613,   614,   615,   616,   617,   618,   619,
-     620,   621,   622,   623,   624,   625,   626,    27,    40,   628,
-     629,    28,    41,   631,   632,   479,   480,   481,   482,    29,
-      42,   643,   644,   645,   646,   647,   648,   649,   650,   651,
-     652,   653,    30,    43,   660,   661,   662,   663,   664,   665,
-     666,   483,    31,    44,   669,   670,   671
+       0,     1,    17,    18,    19,    32,   266,    20,    33,   496,
+      21,    34,   512,    22,    35,   527,    23,    36,   545,   562,
+     563,   564,   565,   566,   567,    24,    37,   568,   267,   268,
+     269,   270,   271,   272,   273,   274,   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,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
+     369,   370,   371,   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,   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,   426,   427,   428,
+     429,   430,   431,   432,   433,   434,   435,   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,   497,   498,   499,   500,   501,   502,
+     503,   504,   513,   514,   515,   516,   517,   518,   519,   546,
+     547,   548,   549,   550,   551,   552,   553,   554,   555,   528,
+     529,   530,   531,   532,   533,   534,    25,    38,   583,   584,
+     585,   586,   587,   588,   589,   590,   591,    26,    39,   611,
+     612,   613,   614,   615,   616,   617,   618,   619,   620,   621,
+     622,   623,   624,   625,   626,   627,   628,   629,   630,    27,
+      40,   632,   633,    28,    41,   635,   636,   483,   484,   485,
+     486,    29,    42,   647,   648,   649,   650,   651,   652,   653,
+     654,   655,   656,   657,    30,    43,   664,   665,   666,   667,
+     668,   669,   670,   487,    31,    44,   673,   674,   675
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -2581,84 +1914,84 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-       2,   531,   516,   667,   668,   627,   484,   630,   485,   486,
-     565,     3,     4,   501,   672,   531,   673,   674,   675,   676,
-     677,   502,   503,   633,   634,   635,   636,   637,   638,   639,
-     640,   641,   642,   678,   679,   680,   681,   682,   517,   518,
-     654,   655,   656,   657,   658,   659,     5,   683,   684,   685,
-     686,   687,     6,   688,   689,   571,   572,   573,   574,   575,
-     576,   577,   578,   690,   691,   519,   692,   693,   694,   695,
-     696,   487,   588,   589,   590,   591,   592,   593,   594,   595,
-     596,   597,   598,   599,   600,   601,   602,   603,   604,   605,
-     606,   697,   698,   699,   700,   701,     7,   702,   703,   704,
-     705,   706,   707,   708,   488,   709,   710,   489,   711,   712,
-     504,   713,   505,   714,     8,   506,   490,   715,   716,   717,
-     718,   719,   720,   721,   722,   723,   724,   725,   726,   727,
-     728,   729,   730,   731,   732,   733,   734,   735,   736,   737,
-     738,   739,   740,   741,   742,   743,   520,   521,   744,   745,
-     746,   747,   748,   749,   750,   751,   752,   753,   754,   755,
-     756,   757,   758,   759,   760,   761,   762,   763,     9,   764,
-     765,   766,   767,   768,   769,   770,   771,   772,   773,   774,
-     775,   776,   777,   778,   779,   780,   781,   522,   782,   783,
-     784,   785,   786,   787,   788,   789,   790,   791,   792,   793,
-     794,   795,   796,   797,   798,   799,   800,   801,   802,   803,
-     804,   805,   806,   807,   808,   809,   810,   811,   812,   813,
-     814,   815,   816,   817,   818,   819,   820,   821,    10,   822,
-     823,   824,   825,   826,   827,   828,   533,   534,   535,   536,
-     829,   830,   831,   832,   833,   834,   538,   835,   532,    11,
-     533,   534,   535,   536,   537,   491,   836,   837,   838,   839,
-     538,   507,   840,   841,   552,   553,   554,   555,   556,   842,
-      12,   843,   844,   845,   846,   847,   848,   557,   849,    13,
-     850,   851,   852,   853,   854,   855,   856,   857,   858,   539,
-     540,   859,   860,   861,   862,   863,   864,   865,   866,   867,
-     868,   869,   870,    14,   871,   872,   873,    15,   874,   875,
-     876,     0,   877,    16,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,   878,   879,   880,   881,
-      77,    78,    79,   882,   883,   884,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   885,   886,   887,
-     888,   889,   890,   891,   892,   893,   121,   122,   123,   124,
-     125,   894,   126,   127,   128,   895,   896,   129,   130,   131,
-     132,   133,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   897,   898,   899,   155,   900,   901,   156,
-     157,   158,   159,   160,   161,   162,   902,   163,   164,   165,
-     166,   167,   168,   169,   170,   171,   172,   173,   174,   903,
-     904,   905,   906,   907,   908,   909,   910,   911,   912,   913,
-     914,   915,   916,   917,   918,   919,   920,   921,   922,   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,   923,
-     215,   924,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     925,   926,   927,   928,   929,   930,   931,   932,   933,   934,
-     935,   234,   235,   236,   237,   238,   239,   240,   241,   242,
-     243,   936,   937,   938,   939,   940,   941,   942,   244,   943,
-     944,   945,   946,   947,   948,   949,   245,   246,   950,   247,
-     248,   951,   249,   250,   952,   953,   251,   252,   253,   254,
-     255,   256,   257,   258,   954,   955,   956,   259,   957,   958,
-     959,   960,   961,   962,   963,   964,   260,   261,   262,   263,
-     965,   966,   967,   968,   969,   970,   971,   972,   973,   974,
-     975,   976,   977,   978,   979,   980,   981,   982,   983,   984,
-     985,   986,   987,   988,   989,   990,   991,   992,   993,   994,
-     995,   996,     0,     0,     0,     0,     0,     0,     0,     0,
+       2,   535,   520,   671,   672,   631,   488,   634,   489,   490,
+     569,     3,     4,   505,   676,   535,   677,   678,   679,   680,
+     681,   506,   507,   637,   638,   639,   640,   641,   642,   643,
+     644,   645,   646,   682,   683,   684,   685,   686,   521,   522,
+     658,   659,   660,   661,   662,   663,     5,   687,   688,   689,
+     690,   691,     6,   692,   693,   575,   576,   577,   578,   579,
+     580,   581,   582,   694,   695,   523,   696,   697,   698,   699,
+     700,   491,   592,   593,   594,   595,   596,   597,   598,   599,
+     600,   601,   602,   603,   604,   605,   606,   607,   608,   609,
+     610,   701,   702,   703,   704,   705,     7,   706,   707,   708,
+     709,   710,   711,   712,   492,   713,   714,   493,   715,   716,
+     508,   717,   509,   718,     8,   510,   494,   719,   720,   721,
+     722,   723,   724,   725,   726,   727,   728,   729,   730,   731,
+     732,   733,   734,   735,   736,   737,   738,   739,   740,   741,
+     742,   743,   744,   745,   746,   747,   524,   525,   748,   749,
+     750,   751,   752,   753,   754,   755,   756,   757,   758,   759,
+     760,   761,   762,   763,   764,   765,   766,   767,     9,   768,
+     769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
+     779,   780,   781,   782,   783,   784,   785,   786,   787,   526,
+     788,   789,   790,   791,   792,   793,   794,   795,   796,   797,
+     798,   799,   800,   801,   802,   803,   804,   805,   806,   807,
+     808,   809,   810,   811,   812,   813,   814,   815,   816,   817,
+     818,   819,   820,   821,   822,   823,   824,   825,   826,   827,
+      10,   828,   829,   830,   831,   832,   833,   834,   537,   538,
+     539,   540,   835,   836,   837,   838,   839,   840,   542,   841,
+     536,    11,   537,   538,   539,   540,   541,   495,   842,   843,
+     844,   845,   542,   511,   846,   847,   556,   557,   558,   559,
+     560,   848,    12,   849,   850,   851,   852,   853,   854,   561,
+     855,    13,   856,   857,   858,   859,   860,   861,   862,   863,
+     864,   543,   544,   865,   866,   867,   868,   869,   870,   871,
+     872,   873,   874,   875,   876,    14,   877,   878,   879,    15,
+     880,   881,   882,     0,   883,    16,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+      69,    70,    71,    72,    73,    74,    75,    76,   884,   885,
+     886,   887,    77,    78,    79,   888,   889,   890,    80,    81,
+      82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   891,
+     892,   893,   894,   895,   896,   897,   898,   899,   121,   122,
+     123,   124,   125,   900,   126,   127,   128,   901,   902,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   903,   904,   905,   155,   906,
+     907,   156,   157,   158,   159,   160,   161,   162,   908,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   909,   910,   911,   912,   913,   914,   915,   916,   917,
+     918,   919,   920,   921,   922,   923,   924,   925,   926,   927,
+     928,   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,   929,   217,   930,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   931,   932,   933,   934,   935,   936,
+     937,   938,   939,   940,   941,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   942,   943,   944,   945,   946,
+     947,   948,   246,   949,   950,   951,   952,   953,   954,   955,
+     247,   248,   956,   249,   250,   957,   251,   252,   958,   959,
+     253,   254,   255,   256,   257,   258,   259,   260,   960,   961,
+     962,   261,   963,   964,   965,   966,   967,   968,   969,   970,
+     262,   263,   264,   265,   971,   972,   973,   974,   975,   976,
+     977,   978,   979,   980,   981,   982,   983,   984,   985,   986,
+     987,   988,   989,   990,   991,   992,   993,   994,   995,   996,
+     997,   998,   999,  1000,  1001,  1002,     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,   566,
-     567,   568,   569,   570
+       0,     0,     0,   570,   571,   572,   573,   574
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    45,    45,   304,   305,   115,    45,   314,    47,    48,
+       0,    45,    45,   306,   307,   115,    45,   316,    47,    48,
       37,    11,    12,    45,    10,    45,    10,    10,    10,    10,
-      10,    53,    54,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,    10,    10,    10,    10,    10,    81,    82,
-     271,   272,   273,   274,   275,   276,    46,    10,    10,    10,
+      10,    53,    54,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,    10,    10,    10,    10,    10,    81,    82,
+     273,   274,   275,   276,   277,   278,    46,    10,    10,    10,
       10,    10,    52,    10,    10,    97,    98,    99,   100,   101,
      102,   103,   104,    10,    10,   108,    10,    10,    10,    10,
       10,   110,   169,   170,   171,   172,   173,   174,   175,   176,
@@ -2672,68 +2005,68 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,   168,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,   230,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,    10,    10,   232,
       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,   228,    10,
-      10,    10,    10,    10,    10,    10,   280,   281,   282,   283,
-      10,    10,    10,    10,    10,    10,   290,    10,   278,   249,
-     280,   281,   282,   283,   284,   294,    10,    10,    10,    10,
-     290,   293,    10,    10,   308,   309,   310,   311,   312,    10,
-     270,    10,    10,    10,    10,    10,    10,   321,    10,   279,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,   319,
-     320,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,   303,    10,    10,    10,   307,    10,    10,
-      10,    -1,    10,   313,    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,
-      39,    40,    41,    42,    43,    44,    10,    10,    10,    10,
-      49,    50,    51,    10,    10,    10,    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,    93,    94,    95,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,   105,   106,   107,   108,
-     109,    10,   111,   112,   113,    10,    10,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,    10,    10,    10,   145,    10,    10,   148,
-     149,   150,   151,   152,   153,   154,    10,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,   167,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,   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,    10,
-     229,    10,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,    10,    10,    10,    10,    10,    10,    10,   277,    10,
-      10,    10,    10,    10,    10,    10,   285,   286,    10,   288,
-     289,    10,   291,   292,    10,    10,   295,   296,   297,   298,
-     299,   300,   301,   302,    10,    10,    10,   306,    10,    10,
-      10,    10,    10,    10,    10,    10,   315,   316,   317,   318,
+     230,    10,    10,    10,    10,    10,    10,    10,   282,   283,
+     284,   285,    10,    10,    10,    10,    10,    10,   292,    10,
+     280,   251,   282,   283,   284,   285,   286,   296,    10,    10,
+      10,    10,   292,   295,    10,    10,   310,   311,   312,   313,
+     314,    10,   272,    10,    10,    10,    10,    10,    10,   323,
+      10,   281,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,   321,   322,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,   305,    10,    10,    10,   309,
+      10,    10,    10,    -1,    10,   315,    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,    39,    40,    41,    42,    43,    44,    10,    10,
+      10,    10,    49,    50,    51,    10,    10,    10,    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,    93,    94,    95,    10,
+      10,    10,    10,    10,    10,    10,    10,    10,   105,   106,
+     107,   108,   109,    10,   111,   112,   113,    10,    10,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,    10,    10,    10,   145,    10,
+      10,   148,   149,   150,   151,   152,   153,   154,    10,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,   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,    10,   231,    10,   233,   234,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,    10,    10,    10,    10,    10,
+      10,    10,   279,    10,    10,    10,    10,    10,    10,    10,
+     287,   288,    10,   290,   291,    10,   293,   294,    10,    10,
+     297,   298,   299,   300,   301,   302,   303,   304,    10,    10,
+      10,   308,    10,    10,    10,    10,    10,    10,    10,    10,
+     317,   318,   319,   320,    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,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      10,    10,    10,    10,    10,    10,    -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,    37,
-      37,    37,    37,    37
+      -1,    -1,    -1,    37,    37,    37,    37,    37
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_int16 yystos[] =
 {
-       0,   323,     0,    11,    12,    46,    52,    96,   114,   168,
-     228,   249,   270,   279,   303,   307,   313,   324,   325,   326,
-     329,   332,   335,   338,   347,   596,   607,   629,   633,   641,
-     654,   664,   327,   330,   333,   336,   339,   348,   597,   608,
-     630,   634,   642,   655,   665,    13,    14,    15,    16,    17,
+       0,   325,     0,    11,    12,    46,    52,    96,   114,   168,
+     230,   251,   272,   281,   305,   309,   315,   326,   327,   328,
+     331,   334,   337,   340,   349,   600,   611,   633,   637,   645,
+     658,   668,   329,   332,   335,   338,   341,   350,   601,   612,
+     634,   638,   646,   659,   669,    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,    39,    40,    41,    42,    43,    44,    49,    50,    51,
@@ -2750,12 +2083,12 @@ static const yytype_int16 yystos[] =
      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,   229,   231,   232,   233,   234,
+     223,   224,   225,   226,   227,   228,   229,   231,   233,   234,
      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   260,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   277,   285,   286,   288,   289,   291,
-     292,   295,   296,   297,   298,   299,   300,   301,   302,   306,
-     315,   316,   317,   318,   328,   350,   351,   352,   353,   354,
+     245,   246,   247,   248,   249,   250,   262,   263,   264,   265,
+     266,   267,   268,   269,   270,   271,   279,   287,   288,   290,
+     291,   293,   294,   297,   298,   299,   300,   301,   302,   303,
+     304,   308,   317,   318,   319,   320,   330,   352,   353,   354,
      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
@@ -2776,27 +2109,27 @@ static const yytype_int16 yystos[] =
      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
      545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
-     555,   556,   557,   558,   559,   560,   561,   562,   563,   637,
-     638,   639,   640,   663,    45,    47,    48,   110,   143,   146,
-     155,   294,   331,   564,   565,   566,   567,   568,   569,   570,
-     571,    45,    53,    54,   142,   144,   147,   293,   334,   572,
-     573,   574,   575,   576,   577,   578,    45,    81,    82,   108,
-     189,   190,   230,   337,   589,   590,   591,   592,   593,   594,
-     595,    45,   278,   280,   281,   282,   283,   284,   290,   319,
-     320,   340,   579,   580,   581,   582,   583,   584,   585,   586,
-     587,   588,   308,   309,   310,   311,   312,   321,   341,   342,
-     343,   344,   345,   346,   349,   579,   580,   581,   582,   583,
-     586,    97,    98,    99,   100,   101,   102,   103,   104,   598,
-     599,   600,   601,   602,   603,   604,   605,   606,   169,   170,
-     171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   609,   610,   611,
-     612,   613,   614,   615,   616,   617,   618,   619,   620,   621,
-     622,   623,   624,   625,   626,   627,   628,   115,   631,   632,
-     314,   635,   636,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   643,   644,   645,   646,   647,   648,   649,
-     650,   651,   652,   653,   271,   272,   273,   274,   275,   276,
-     656,   657,   658,   659,   660,   661,   662,   304,   305,   666,
-     667,   668,    10,    10,    10,    10,    10,    10,    10,    10,
+     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
+     565,   566,   567,   641,   642,   643,   644,   667,    45,    47,
+      48,   110,   143,   146,   155,   296,   333,   568,   569,   570,
+     571,   572,   573,   574,   575,    45,    53,    54,   142,   144,
+     147,   295,   336,   576,   577,   578,   579,   580,   581,   582,
+      45,    81,    82,   108,   189,   190,   232,   339,   593,   594,
+     595,   596,   597,   598,   599,    45,   280,   282,   283,   284,
+     285,   286,   292,   321,   322,   342,   583,   584,   585,   586,
+     587,   588,   589,   590,   591,   592,   310,   311,   312,   313,
+     314,   323,   343,   344,   345,   346,   347,   348,   351,   583,
+     584,   585,   586,   587,   590,    97,    98,    99,   100,   101,
+     102,   103,   104,   602,   603,   604,   605,   606,   607,   608,
+     609,   610,   169,   170,   171,   172,   173,   174,   175,   176,
+     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   613,   614,   615,   616,   617,   618,   619,   620,   621,
+     622,   623,   624,   625,   626,   627,   628,   629,   630,   631,
+     632,   115,   635,   636,   316,   639,   640,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   647,   648,   649,
+     650,   651,   652,   653,   654,   655,   656,   657,   273,   274,
+     275,   276,   277,   278,   660,   661,   662,   663,   664,   665,
+     666,   306,   307,   670,   671,   672,    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,
@@ -2828,43 +2161,44 @@ static const yytype_int16 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
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_int16 yyr1[] =
 {
-       0,   322,   323,   323,   324,   324,   324,   324,   324,   324,
-     324,   324,   324,   324,   324,   324,   324,   324,   325,   326,
-     327,   327,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   329,   330,   330,   331,   331,   331,   331,   331,   331,
-     331,   331,   332,   333,   333,   334,   334,   334,   334,   334,
-     334,   334,   335,   336,   336,   337,   337,   337,   337,   337,
-     337,   337,   338,   339,   339,   340,   340,   340,   340,   340,
-     340,   340,   340,   340,   340,   341,   342,   343,   344,   345,
-     346,   347,   348,   348,   349,   349,   349,   349,   349,   349,
-     349,   349,   349,   349,   349,   349,   350,   351,   352,   353,
+       0,   324,   325,   325,   326,   326,   326,   326,   326,   326,
+     326,   326,   326,   326,   326,   326,   326,   326,   327,   328,
+     329,   329,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   330,   330,   330,
+     330,   330,   330,   331,   332,   332,   333,   333,   333,   333,
+     333,   333,   333,   333,   334,   335,   335,   336,   336,   336,
+     336,   336,   336,   336,   337,   338,   338,   339,   339,   339,
+     339,   339,   339,   339,   340,   341,   341,   342,   342,   342,
+     342,   342,   342,   342,   342,   342,   342,   343,   344,   345,
+     346,   347,   348,   349,   350,   350,   351,   351,   351,   351,
+     351,   351,   351,   351,   351,   351,   351,   351,   352,   353,
      354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
      374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
@@ -2889,19 +2223,19 @@ static const yytype_int16 yyr1[] =
      564,   565,   566,   567,   568,   569,   570,   571,   572,   573,
      574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
      584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-     594,   595,   596,   597,   597,   598,   598,   598,   598,   598,
-     598,   598,   598,   599,   600,   601,   602,   603,   604,   605,
-     606,   607,   608,   608,   609,   609,   609,   609,   609,   609,
-     609,   609,   609,   609,   609,   609,   609,   609,   609,   609,
-     609,   609,   609,   610,   611,   612,   613,   614,   615,   616,
+     594,   595,   596,   597,   598,   599,   600,   601,   601,   602,
+     602,   602,   602,   602,   602,   602,   602,   603,   604,   605,
+     606,   607,   608,   609,   610,   611,   612,   612,   613,   613,
+     613,   613,   613,   613,   613,   613,   613,   613,   613,   613,
+     613,   613,   613,   613,   613,   613,   613,   614,   615,   616,
      617,   618,   619,   620,   621,   622,   623,   624,   625,   626,
-     627,   628,   629,   630,   630,   631,   632,   633,   634,   634,
-     635,   636,   637,   638,   639,   640,   641,   642,   642,   643,
-     643,   643,   643,   643,   643,   643,   643,   643,   643,   644,
-     645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
-     655,   655,   656,   656,   656,   656,   656,   656,   657,   658,
-     659,   660,   661,   662,   663,   664,   665,   665,   666,   666,
-     667,   668
+     627,   628,   629,   630,   631,   632,   633,   634,   634,   635,
+     636,   637,   638,   638,   639,   640,   641,   642,   643,   644,
+     645,   646,   646,   647,   647,   647,   647,   647,   647,   647,
+     647,   647,   647,   648,   649,   650,   651,   652,   653,   654,
+     655,   656,   657,   658,   659,   659,   660,   660,   660,   660,
+     660,   660,   661,   662,   663,   664,   665,   666,   667,   668,
+     669,   669,   670,   670,   671,   672
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -2931,13 +2265,13 @@ static const yytype_int8 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,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     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,
+       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     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,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -2951,30 +2285,30 @@ static const yytype_int8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     3,     4,     4,     4,
-       3,     3,     2,     2,     2,     2,     2,     2,     3,     3,
+       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     3,     3,     4,
+       4,     4,     3,     3,     2,     2,     2,     2,     2,     2,
+       3,     3,     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,     3,     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,     3,     3,     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,
+       3,     3,     3,     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,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     1,     2,     0,     1,     2,     1,     2,     0,
-       1,     2,     2,     2,     3,     3,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
-       2,     0,     1,     1,     1,     1,     1,     1,     2,     2,
-       2,     2,     2,     2,     3,     1,     2,     0,     1,     1,
-       2,     2
+       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
+       2,     1,     2,     0,     1,     2,     2,     2,     3,     3,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     1,     2,     0,     1,     1,     1,     1,
+       1,     1,     2,     2,     2,     2,     2,     2,     3,     1,
+       2,     0,     1,     1,     2,     2
 };
 
 
@@ -3053,7 +2387,7 @@ yy_symbol_value_print (FILE *yyo,
                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
 {
   FILE *yyoutput = yyo;
-  YYUSE (yyoutput);
+  YY_USE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -3061,7 +2395,7 @@ yy_symbol_value_print (FILE *yyo,
     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
 # endif
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yykind);
+  YY_USE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
@@ -3175,18 +2509,18 @@ static void
 yydestruct (const char *yymsg,
             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
 {
-  YYUSE (yyvaluep);
+  YY_USE (yyvaluep);
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
 
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yykind);
+  YY_USE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/* The lookahead symbol.  */
+/* Lookahead token kind.  */
 int yychar;
 
 /* The semantic value of the lookahead symbol.  */
@@ -3204,34 +2538,30 @@ int yynerrs;
 int
 yyparse (void)
 {
-    yy_state_fast_t yystate;
+    yy_state_fast_t yystate = 0;
     /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
-
-    /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
+    int yyerrstatus = 0;
 
-       Refer to the stacks through separate pointers, to allow yyoverflow
+    /* Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* Their size.  */
-    YYPTRDIFF_T yystacksize;
+    YYPTRDIFF_T yystacksize = YYINITDEPTH;
 
-    /* The state stack.  */
+    /* The state stack: array, bottom, top.  */
     yy_state_t yyssa[YYINITDEPTH];
-    yy_state_t *yyss;
-    yy_state_t *yyssp;
+    yy_state_t *yyss = yyssa;
+    yy_state_t *yyssp = yyss;
 
-    /* The semantic value stack.  */
+    /* The semantic value stack: array, bottom, top.  */
     YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
+    YYSTYPE *yyvs = yyvsa;
+    YYSTYPE *yyvsp = yyvs;
 
   int yyn;
   /* The return value of yyparse.  */
   int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
+  /* Lookahead symbol kind.  */
   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   /* The variables used to return semantic value and location from the
      action routines.  */
@@ -3245,15 +2575,6 @@ yyparse (void)
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yynerrs = 0;
-  yystate = 0;
-  yyerrstatus = 0;
-
-  yystacksize = YYINITDEPTH;
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
-
-
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yychar = YYEMPTY; /* Cause a token to be read.  */
@@ -3454,24 +2775,24 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 18:
-#line 203 "./util/configparser.y"
+  case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL  */
+#line 204 "./util/configparser.y"
         {
                OUTYY(("\nP(force-toplevel)\n"));
        }
-#line 3463 "util/configparser.c"
+#line 2784 "util/configparser.c"
     break;
 
-  case 19:
-#line 209 "./util/configparser.y"
+  case 19: /* serverstart: VAR_SERVER  */
+#line 210 "./util/configparser.y"
         {
                OUTYY(("\nP(server:)\n"));
        }
-#line 3471 "util/configparser.c"
+#line 2792 "util/configparser.c"
     break;
 
-  case 241:
-#line 316 "./util/configparser.y"
+  case 243: /* stubstart: VAR_STUB_ZONE  */
+#line 318 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n"));
@@ -3483,11 +2804,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 3487 "util/configparser.c"
+#line 2808 "util/configparser.c"
     break;
 
-  case 252:
-#line 334 "./util/configparser.y"
+  case 254: /* forwardstart: VAR_FORWARD_ZONE  */
+#line 336 "./util/configparser.y"
         {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n"));
@@ -3499,11 +2820,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 3503 "util/configparser.c"
+#line 2824 "util/configparser.c"
     break;
 
-  case 262:
-#line 352 "./util/configparser.y"
+  case 264: /* viewstart: VAR_VIEW  */
+#line 354 "./util/configparser.y"
         {
                struct config_view* s;
                OUTYY(("\nP(view:)\n"));
@@ -3517,11 +2838,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 3521 "util/configparser.c"
+#line 2842 "util/configparser.c"
     break;
 
-  case 272:
-#line 372 "./util/configparser.y"
+  case 274: /* authstart: VAR_AUTH_ZONE  */
+#line 374 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(auth_zone:)\n"));
@@ -3540,11 +2861,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 3544 "util/configparser.c"
+#line 2865 "util/configparser.c"
     break;
 
-  case 285:
-#line 399 "./util/configparser.y"
+  case 287: /* rpz_tag: VAR_TAGS STRING_ARG  */
+#line 401 "./util/configparser.y"
         {
                uint8_t* bitlist;
                size_t len = 0;
@@ -3561,11 +2882,11 @@ yyreduce:
 
                }
        }
-#line 3565 "util/configparser.c"
+#line 2886 "util/configparser.c"
     break;
 
-  case 286:
-#line 418 "./util/configparser.y"
+  case 288: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG  */
+#line 420 "./util/configparser.y"
         {
                OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 &&
@@ -3580,21 +2901,21 @@ yyreduce:
                        cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str);
                }
        }
-#line 3584 "util/configparser.c"
+#line 2905 "util/configparser.c"
     break;
 
-  case 287:
-#line 435 "./util/configparser.y"
+  case 289: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG  */
+#line 437 "./util/configparser.y"
         {
                OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_cname);
                cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str);
        }
-#line 3594 "util/configparser.c"
+#line 2915 "util/configparser.c"
     break;
 
-  case 288:
-#line 443 "./util/configparser.y"
+  case 290: /* rpz_log: VAR_RPZ_LOG STRING_ARG  */
+#line 445 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3602,21 +2923,21 @@ yyreduce:
                else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3606 "util/configparser.c"
+#line 2927 "util/configparser.c"
     break;
 
-  case 289:
-#line 453 "./util/configparser.y"
+  case 291: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG  */
+#line 455 "./util/configparser.y"
         {
                OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->rpz_log_name);
                cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str);
        }
-#line 3616 "util/configparser.c"
+#line 2937 "util/configparser.c"
     break;
 
-  case 290:
-#line 460 "./util/configparser.y"
+  case 292: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG  */
+#line 462 "./util/configparser.y"
         {
                OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3624,11 +2945,11 @@ yyreduce:
                else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3628 "util/configparser.c"
+#line 2949 "util/configparser.c"
     break;
 
-  case 291:
-#line 470 "./util/configparser.y"
+  case 293: /* rpzstart: VAR_RPZ  */
+#line 472 "./util/configparser.y"
         {
                struct config_auth* s;
                OUTYY(("\nP(rpz:)\n")); 
@@ -3645,11 +2966,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 3649 "util/configparser.c"
+#line 2970 "util/configparser.c"
     break;
 
-  case 306:
-#line 494 "./util/configparser.y"
+  case 308: /* server_num_threads: VAR_NUM_THREADS STRING_ARG  */
+#line 496 "./util/configparser.y"
         {
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3657,11 +2978,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3661 "util/configparser.c"
+#line 2982 "util/configparser.c"
     break;
 
-  case 307:
-#line 503 "./util/configparser.y"
+  case 309: /* server_verbosity: VAR_VERBOSITY STRING_ARG  */
+#line 505 "./util/configparser.y"
         {
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3669,11 +2990,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3673 "util/configparser.c"
+#line 2994 "util/configparser.c"
     break;
 
-  case 308:
-#line 512 "./util/configparser.y"
+  case 310: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG  */
+#line 514 "./util/configparser.y"
         {
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -3683,11 +3004,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3687 "util/configparser.c"
+#line 3008 "util/configparser.c"
     break;
 
-  case 309:
-#line 523 "./util/configparser.y"
+  case 311: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG  */
+#line 525 "./util/configparser.y"
         {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3695,11 +3016,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3699 "util/configparser.c"
+#line 3020 "util/configparser.c"
     break;
 
-  case 310:
-#line 532 "./util/configparser.y"
+  case 312: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG  */
+#line 534 "./util/configparser.y"
         {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3707,11 +3028,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3711 "util/configparser.c"
+#line 3032 "util/configparser.c"
     break;
 
-  case 311:
-#line 541 "./util/configparser.y"
+  case 313: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG  */
+#line 543 "./util/configparser.y"
         {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3719,11 +3040,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3723 "util/configparser.c"
+#line 3044 "util/configparser.c"
     break;
 
-  case 312:
-#line 550 "./util/configparser.y"
+  case 314: /* server_shm_key: VAR_SHM_KEY STRING_ARG  */
+#line 552 "./util/configparser.y"
         {
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -3733,11 +3054,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3737 "util/configparser.c"
+#line 3058 "util/configparser.c"
     break;
 
-  case 313:
-#line 561 "./util/configparser.y"
+  case 315: /* server_port: VAR_PORT STRING_ARG  */
+#line 563 "./util/configparser.y"
         {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3745,11 +3066,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3749 "util/configparser.c"
+#line 3070 "util/configparser.c"
     break;
 
-  case 314:
-#line 570 "./util/configparser.y"
+  case 316: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG  */
+#line 572 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
@@ -3760,11 +3081,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3764 "util/configparser.c"
+#line 3085 "util/configparser.c"
     break;
 
-  case 315:
-#line 582 "./util/configparser.y"
+  case 317: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG  */
+#line 584 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str)));
@@ -3776,11 +3097,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 3780 "util/configparser.c"
+#line 3101 "util/configparser.c"
     break;
 
-  case 316:
-#line 596 "./util/configparser.y"
+  case 318: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG  */
+#line 598 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -3794,11 +3115,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3798 "util/configparser.c"
+#line 3119 "util/configparser.c"
     break;
 
-  case 317:
-#line 611 "./util/configparser.y"
+  case 319: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG  */
+#line 613 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -3808,11 +3129,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3812 "util/configparser.c"
+#line 3133 "util/configparser.c"
     break;
 
-  case 318:
-#line 622 "./util/configparser.y"
+  case 320: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG  */
+#line 624 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3828,11 +3149,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3832 "util/configparser.c"
+#line 3153 "util/configparser.c"
     break;
 
-  case 319:
-#line 639 "./util/configparser.y"
+  case 321: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG  */
+#line 641 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3848,11 +3169,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3852 "util/configparser.c"
+#line 3173 "util/configparser.c"
     break;
 
-  case 320:
-#line 656 "./util/configparser.y"
+  case 322: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG  */
+#line 658 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3868,11 +3189,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3872 "util/configparser.c"
+#line 3193 "util/configparser.c"
     break;
 
-  case 321:
-#line 673 "./util/configparser.y"
+  case 323: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG  */
+#line 675 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3888,11 +3209,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3892 "util/configparser.c"
+#line 3213 "util/configparser.c"
     break;
 
-  case 322:
-#line 690 "./util/configparser.y"
+  case 324: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG  */
+#line 692 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str)));
@@ -3906,11 +3227,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3910 "util/configparser.c"
+#line 3231 "util/configparser.c"
     break;
 
-  case 323:
-#line 705 "./util/configparser.y"
+  case 325: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG  */
+#line 707 "./util/configparser.y"
         {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str)));
@@ -3924,11 +3245,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 3928 "util/configparser.c"
+#line 3249 "util/configparser.c"
     break;
 
-  case 324:
-#line 720 "./util/configparser.y"
+  case 326: /* server_interface: VAR_INTERFACE STRING_ARG  */
+#line 722 "./util/configparser.y"
         {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -3940,11 +3261,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 3944 "util/configparser.c"
+#line 3265 "util/configparser.c"
     break;
 
-  case 325:
-#line 733 "./util/configparser.y"
+  case 327: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG  */
+#line 735 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -3958,11 +3279,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 3962 "util/configparser.c"
+#line 3283 "util/configparser.c"
     break;
 
-  case 326:
-#line 748 "./util/configparser.y"
+  case 328: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG  */
+#line 750 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3970,11 +3291,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3974 "util/configparser.c"
+#line 3295 "util/configparser.c"
     break;
 
-  case 327:
-#line 757 "./util/configparser.y"
+  case 329: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG  */
+#line 759 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1,
@@ -3982,11 +3303,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3986 "util/configparser.c"
+#line 3307 "util/configparser.c"
     break;
 
-  case 328:
-#line 766 "./util/configparser.y"
+  case 330: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG  */
+#line 768 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0,
@@ -3994,11 +3315,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 3998 "util/configparser.c"
+#line 3319 "util/configparser.c"
     break;
 
-  case 329:
-#line 775 "./util/configparser.y"
+  case 331: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG  */
+#line 777 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4006,11 +3327,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4010 "util/configparser.c"
+#line 3331 "util/configparser.c"
     break;
 
-  case 330:
-#line 784 "./util/configparser.y"
+  case 332: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG  */
+#line 786 "./util/configparser.y"
         {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4018,11 +3339,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4022 "util/configparser.c"
+#line 3343 "util/configparser.c"
     break;
 
-  case 331:
-#line 793 "./util/configparser.y"
+  case 333: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG  */
+#line 795 "./util/configparser.y"
         {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4030,11 +3351,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4034 "util/configparser.c"
+#line 3355 "util/configparser.c"
     break;
 
-  case 332:
-#line 802 "./util/configparser.y"
+  case 334: /* server_do_ip4: VAR_DO_IP4 STRING_ARG  */
+#line 804 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4042,11 +3363,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4046 "util/configparser.c"
+#line 3367 "util/configparser.c"
     break;
 
-  case 333:
-#line 811 "./util/configparser.y"
+  case 335: /* server_do_ip6: VAR_DO_IP6 STRING_ARG  */
+#line 813 "./util/configparser.y"
         {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4054,11 +3375,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4058 "util/configparser.c"
+#line 3379 "util/configparser.c"
     break;
 
-  case 334:
-#line 820 "./util/configparser.y"
+  case 336: /* server_do_udp: VAR_DO_UDP STRING_ARG  */
+#line 822 "./util/configparser.y"
         {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4066,11 +3387,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4070 "util/configparser.c"
+#line 3391 "util/configparser.c"
     break;
 
-  case 335:
-#line 829 "./util/configparser.y"
+  case 337: /* server_do_tcp: VAR_DO_TCP STRING_ARG  */
+#line 831 "./util/configparser.y"
         {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4078,11 +3399,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4082 "util/configparser.c"
+#line 3403 "util/configparser.c"
     break;
 
-  case 336:
-#line 838 "./util/configparser.y"
+  case 338: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG  */
+#line 840 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4090,11 +3411,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4094 "util/configparser.c"
+#line 3415 "util/configparser.c"
     break;
 
-  case 337:
-#line 847 "./util/configparser.y"
+  case 339: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG  */
+#line 849 "./util/configparser.y"
         {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4102,11 +3423,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4106 "util/configparser.c"
+#line 3427 "util/configparser.c"
     break;
 
-  case 338:
-#line 856 "./util/configparser.y"
+  case 340: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG  */
+#line 858 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4114,11 +3435,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4118 "util/configparser.c"
+#line 3439 "util/configparser.c"
     break;
 
-  case 339:
-#line 865 "./util/configparser.y"
+  case 341: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG  */
+#line 867 "./util/configparser.y"
         {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4126,11 +3447,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4130 "util/configparser.c"
+#line 3451 "util/configparser.c"
     break;
 
-  case 340:
-#line 874 "./util/configparser.y"
+  case 342: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG  */
+#line 876 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4142,11 +3463,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4146 "util/configparser.c"
+#line 3467 "util/configparser.c"
     break;
 
-  case 341:
-#line 887 "./util/configparser.y"
+  case 343: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG  */
+#line 889 "./util/configparser.y"
         {
                OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4156,11 +3477,11 @@ yyreduce:
                else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4160 "util/configparser.c"
+#line 3481 "util/configparser.c"
     break;
 
-  case 342:
-#line 898 "./util/configparser.y"
+  case 344: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG  */
+#line 900 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4170,11 +3491,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4174 "util/configparser.c"
+#line 3495 "util/configparser.c"
     break;
 
-  case 343:
-#line 909 "./util/configparser.y"
+  case 345: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG  */
+#line 911 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4184,11 +3505,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4188 "util/configparser.c"
+#line 3509 "util/configparser.c"
     break;
 
-  case 344:
-#line 920 "./util/configparser.y"
+  case 346: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG  */
+#line 922 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4196,11 +3517,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4200 "util/configparser.c"
+#line 3521 "util/configparser.c"
     break;
 
-  case 345:
-#line 929 "./util/configparser.y"
+  case 347: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG  */
+#line 931 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4212,11 +3533,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4216 "util/configparser.c"
+#line 3537 "util/configparser.c"
     break;
 
-  case 346:
-#line 942 "./util/configparser.y"
+  case 348: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG  */
+#line 944 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4224,11 +3545,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4228 "util/configparser.c"
+#line 3549 "util/configparser.c"
     break;
 
-  case 347:
-#line 951 "./util/configparser.y"
+  case 349: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG  */
+#line 953 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4236,11 +3557,11 @@ yyreduce:
                else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4240 "util/configparser.c"
+#line 3561 "util/configparser.c"
     break;
 
-  case 348:
-#line 960 "./util/configparser.y"
+  case 350: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG  */
+#line 962 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4248,31 +3569,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4252 "util/configparser.c"
+#line 3573 "util/configparser.c"
     break;
 
-  case 349:
-#line 969 "./util/configparser.y"
+  case 351: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG  */
+#line 971 "./util/configparser.y"
         {
                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 4262 "util/configparser.c"
+#line 3583 "util/configparser.c"
     break;
 
-  case 350:
-#line 976 "./util/configparser.y"
+  case 352: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG  */
+#line 978 "./util/configparser.y"
         {
                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 4272 "util/configparser.c"
+#line 3593 "util/configparser.c"
     break;
 
-  case 351:
-#line 983 "./util/configparser.y"
+  case 353: /* server_ssl_port: VAR_SSL_PORT STRING_ARG  */
+#line 985 "./util/configparser.y"
         {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4280,21 +3601,21 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4284 "util/configparser.c"
+#line 3605 "util/configparser.c"
     break;
 
-  case 352:
-#line 992 "./util/configparser.y"
+  case 354: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG  */
+#line 994 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_cert_bundle);
                cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str);
        }
-#line 4294 "util/configparser.c"
+#line 3615 "util/configparser.c"
     break;
 
-  case 353:
-#line 999 "./util/configparser.y"
+  case 355: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG  */
+#line 1001 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4302,53 +3623,53 @@ yyreduce:
                else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4306 "util/configparser.c"
+#line 3627 "util/configparser.c"
     break;
 
-  case 354:
-#line 1008 "./util/configparser.y"
+  case 356: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG  */
+#line 1010 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4317 "util/configparser.c"
+#line 3638 "util/configparser.c"
     break;
 
-  case 355:
-#line 1016 "./util/configparser.y"
+  case 357: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG  */
+#line 1018 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphers);
                cfg_parser->cfg->tls_ciphers = (yyvsp[0].str);
        }
-#line 4327 "util/configparser.c"
+#line 3648 "util/configparser.c"
     break;
 
-  case 356:
-#line 1023 "./util/configparser.y"
+  case 358: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG  */
+#line 1025 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->tls_ciphersuites);
                cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str);
        }
-#line 4337 "util/configparser.c"
+#line 3658 "util/configparser.c"
     break;
 
-  case 357:
-#line 1030 "./util/configparser.y"
+  case 359: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG  */
+#line 1032 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4348 "util/configparser.c"
+#line 3669 "util/configparser.c"
     break;
 
-  case 358:
-#line 1038 "./util/configparser.y"
+  case 360: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG  */
+#line 1040 "./util/configparser.y"
         {
                OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4356,11 +3677,11 @@ yyreduce:
                else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4360 "util/configparser.c"
+#line 3681 "util/configparser.c"
     break;
 
-  case 359:
-#line 1047 "./util/configparser.y"
+  case 361: /* server_https_port: VAR_HTTPS_PORT STRING_ARG  */
+#line 1049 "./util/configparser.y"
         {
                OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4368,11 +3689,11 @@ yyreduce:
                else cfg_parser->cfg->https_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4372 "util/configparser.c"
+#line 3693 "util/configparser.c"
     break;
 
-  case 360:
-#line 1055 "./util/configparser.y"
+  case 362: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG  */
+#line 1057 "./util/configparser.y"
         {
                OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->http_endpoint);
@@ -4388,11 +3709,11 @@ yyreduce:
                        cfg_parser->cfg->http_endpoint = (yyvsp[0].str);
                }
        }
-#line 4392 "util/configparser.c"
+#line 3713 "util/configparser.c"
     break;
 
-  case 361:
-#line 1071 "./util/configparser.y"
+  case 363: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG  */
+#line 1073 "./util/configparser.y"
         {
                OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4400,11 +3721,11 @@ yyreduce:
                else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4404 "util/configparser.c"
+#line 3725 "util/configparser.c"
     break;
 
-  case 362:
-#line 1079 "./util/configparser.y"
+  case 364: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG  */
+#line 1081 "./util/configparser.y"
         {
                OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -4412,11 +3733,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4416 "util/configparser.c"
+#line 3737 "util/configparser.c"
     break;
 
-  case 363:
-#line 1087 "./util/configparser.y"
+  case 365: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG  */
+#line 1089 "./util/configparser.y"
         {
                OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str),
@@ -4424,11 +3745,11 @@ yyreduce:
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4428 "util/configparser.c"
+#line 3749 "util/configparser.c"
     break;
 
-  case 364:
-#line 1095 "./util/configparser.y"
+  case 366: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG  */
+#line 1097 "./util/configparser.y"
         {
                OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4436,11 +3757,11 @@ yyreduce:
                else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4440 "util/configparser.c"
+#line 3761 "util/configparser.c"
     break;
 
-  case 365:
-#line 1103 "./util/configparser.y"
+  case 367: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG  */
+#line 1105 "./util/configparser.y"
         {
                OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4448,11 +3769,11 @@ yyreduce:
                else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4452 "util/configparser.c"
+#line 3773 "util/configparser.c"
     break;
 
-  case 366:
-#line 1111 "./util/configparser.y"
+  case 368: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG  */
+#line 1113 "./util/configparser.y"
         {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4460,11 +3781,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4464 "util/configparser.c"
+#line 3785 "util/configparser.c"
     break;
 
-  case 367:
-#line 1120 "./util/configparser.y"
+  case 369: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG  */
+#line 1122 "./util/configparser.y"
         {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4472,11 +3793,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4476 "util/configparser.c"
+#line 3797 "util/configparser.c"
     break;
 
-  case 368:
-#line 1129 "./util/configparser.y"
+  case 370: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG  */
+#line 1131 "./util/configparser.y"
         {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4489,11 +3810,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 4493 "util/configparser.c"
+#line 3814 "util/configparser.c"
     break;
 
-  case 369:
-#line 1143 "./util/configparser.y"
+  case 371: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG  */
+#line 1145 "./util/configparser.y"
         {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4501,11 +3822,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4505 "util/configparser.c"
+#line 3826 "util/configparser.c"
     break;
 
-  case 370:
-#line 1152 "./util/configparser.y"
+  case 372: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG  */
+#line 1154 "./util/configparser.y"
         {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4513,11 +3834,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4517 "util/configparser.c"
+#line 3838 "util/configparser.c"
     break;
 
-  case 371:
-#line 1161 "./util/configparser.y"
+  case 373: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG  */
+#line 1163 "./util/configparser.y"
         {
                OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4525,11 +3846,11 @@ yyreduce:
                else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4529 "util/configparser.c"
+#line 3850 "util/configparser.c"
     break;
 
-  case 372:
-#line 1170 "./util/configparser.y"
+  case 374: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG  */
+#line 1172 "./util/configparser.y"
         {
                OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4537,11 +3858,11 @@ yyreduce:
                else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4541 "util/configparser.c"
+#line 3862 "util/configparser.c"
     break;
 
-  case 373:
-#line 1179 "./util/configparser.y"
+  case 375: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG  */
+#line 1181 "./util/configparser.y"
         {
                OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4549,11 +3870,11 @@ yyreduce:
                else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4553 "util/configparser.c"
+#line 3874 "util/configparser.c"
     break;
 
-  case 374:
-#line 1188 "./util/configparser.y"
+  case 376: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG  */
+#line 1190 "./util/configparser.y"
         {
                OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4561,31 +3882,31 @@ yyreduce:
                else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4565 "util/configparser.c"
+#line 3886 "util/configparser.c"
     break;
 
-  case 375:
-#line 1197 "./util/configparser.y"
+  case 377: /* server_chroot: VAR_CHROOT STRING_ARG  */
+#line 1199 "./util/configparser.y"
         {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 4575 "util/configparser.c"
+#line 3896 "util/configparser.c"
     break;
 
-  case 376:
-#line 1204 "./util/configparser.y"
+  case 378: /* server_username: VAR_USERNAME STRING_ARG  */
+#line 1206 "./util/configparser.y"
         {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 4585 "util/configparser.c"
+#line 3906 "util/configparser.c"
     break;
 
-  case 377:
-#line 1211 "./util/configparser.y"
+  case 379: /* server_directory: VAR_DIRECTORY STRING_ARG  */
+#line 1213 "./util/configparser.y"
         {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -4610,105 +3931,105 @@ yyreduce:
                        }
                }
        }
-#line 4614 "util/configparser.c"
+#line 3935 "util/configparser.c"
     break;
 
-  case 378:
-#line 1237 "./util/configparser.y"
+  case 380: /* server_logfile: VAR_LOGFILE STRING_ARG  */
+#line 1239 "./util/configparser.y"
         {
                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 4625 "util/configparser.c"
+#line 3946 "util/configparser.c"
     break;
 
-  case 379:
-#line 1245 "./util/configparser.y"
+  case 381: /* server_pidfile: VAR_PIDFILE STRING_ARG  */
+#line 1247 "./util/configparser.y"
         {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 4635 "util/configparser.c"
+#line 3956 "util/configparser.c"
     break;
 
-  case 380:
-#line 1252 "./util/configparser.y"
+  case 382: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG  */
+#line 1254 "./util/configparser.y"
         {
                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 4645 "util/configparser.c"
+#line 3966 "util/configparser.c"
     break;
 
-  case 381:
-#line 1259 "./util/configparser.y"
+  case 383: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG  */
+#line 1261 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor-file ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 4655 "util/configparser.c"
+#line 3976 "util/configparser.c"
     break;
 
-  case 382:
-#line 1266 "./util/configparser.y"
+  case 384: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG  */
+#line 1268 "./util/configparser.y"
         {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                log_warn("option dlv-anchor ignored: DLV is decommissioned");
                free((yyvsp[0].str));
        }
-#line 4665 "util/configparser.c"
+#line 3986 "util/configparser.c"
     break;
 
-  case 383:
-#line 1273 "./util/configparser.y"
+  case 385: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG  */
+#line 1275 "./util/configparser.y"
         {
                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 4676 "util/configparser.c"
+#line 3997 "util/configparser.c"
     break;
 
-  case 384:
-#line 1281 "./util/configparser.y"
+  case 386: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG  */
+#line 1283 "./util/configparser.y"
         {
                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 4687 "util/configparser.c"
+#line 4008 "util/configparser.c"
     break;
 
-  case 385:
-#line 1289 "./util/configparser.y"
+  case 387: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG  */
+#line 1291 "./util/configparser.y"
         {
                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 4698 "util/configparser.c"
+#line 4019 "util/configparser.c"
     break;
 
-  case 386:
-#line 1297 "./util/configparser.y"
+  case 388: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG  */
+#line 1299 "./util/configparser.y"
         {
                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 4708 "util/configparser.c"
+#line 4029 "util/configparser.c"
     break;
 
-  case 387:
-#line 1304 "./util/configparser.y"
+  case 389: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG  */
+#line 1306 "./util/configparser.y"
         {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4718,11 +4039,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4722 "util/configparser.c"
+#line 4043 "util/configparser.c"
     break;
 
-  case 388:
-#line 1315 "./util/configparser.y"
+  case 390: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG  */
+#line 1317 "./util/configparser.y"
         {
                OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4732,21 +4053,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4736 "util/configparser.c"
+#line 4057 "util/configparser.c"
     break;
 
-  case 389:
-#line 1326 "./util/configparser.y"
+  case 391: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG  */
+#line 1328 "./util/configparser.y"
         {
                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 4746 "util/configparser.c"
+#line 4067 "util/configparser.c"
     break;
 
-  case 390:
-#line 1333 "./util/configparser.y"
+  case 392: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG  */
+#line 1335 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4754,11 +4075,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4758 "util/configparser.c"
+#line 4079 "util/configparser.c"
     break;
 
-  case 391:
-#line 1342 "./util/configparser.y"
+  case 393: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG  */
+#line 1344 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4766,11 +4087,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4770 "util/configparser.c"
+#line 4091 "util/configparser.c"
     break;
 
-  case 392:
-#line 1351 "./util/configparser.y"
+  case 394: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG  */
+#line 1353 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4778,11 +4099,11 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4782 "util/configparser.c"
+#line 4103 "util/configparser.c"
     break;
 
-  case 393:
-#line 1360 "./util/configparser.y"
+  case 395: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG  */
+#line 1362 "./util/configparser.y"
         {
                OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4790,41 +4111,41 @@ yyreduce:
                else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4794 "util/configparser.c"
+#line 4115 "util/configparser.c"
     break;
 
-  case 394:
-#line 1369 "./util/configparser.y"
+  case 396: /* server_identity: VAR_IDENTITY STRING_ARG  */
+#line 1371 "./util/configparser.y"
         {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 4804 "util/configparser.c"
+#line 4125 "util/configparser.c"
     break;
 
-  case 395:
-#line 1376 "./util/configparser.y"
+  case 397: /* server_version: VAR_VERSION STRING_ARG  */
+#line 1378 "./util/configparser.y"
         {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 4814 "util/configparser.c"
+#line 4135 "util/configparser.c"
     break;
 
-  case 396:
-#line 1383 "./util/configparser.y"
+  case 398: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG  */
+#line 1385 "./util/configparser.y"
         {
                OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->http_user_agent);
                cfg_parser->cfg->http_user_agent = (yyvsp[0].str);
        }
-#line 4824 "util/configparser.c"
+#line 4145 "util/configparser.c"
     break;
 
-  case 397:
-#line 1390 "./util/configparser.y"
+  case 399: /* server_nsid: VAR_NSID STRING_ARG  */
+#line 1392 "./util/configparser.y"
         {
                OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->nsid_cfg_str);
@@ -4839,33 +4160,33 @@ yyreduce:
                        yyerror("the NSID must be either a hex string or an "
                            "ascii character string prepended with ascii_.");
        }
-#line 4843 "util/configparser.c"
+#line 4164 "util/configparser.c"
     break;
 
-  case 398:
-#line 1406 "./util/configparser.y"
+  case 400: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG  */
+#line 1408 "./util/configparser.y"
         {
                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 4854 "util/configparser.c"
+#line 4175 "util/configparser.c"
     break;
 
-  case 399:
-#line 1414 "./util/configparser.y"
+  case 401: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG  */
+#line 1416 "./util/configparser.y"
         {
                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 4865 "util/configparser.c"
+#line 4186 "util/configparser.c"
     break;
 
-  case 400:
-#line 1422 "./util/configparser.y"
+  case 402: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG  */
+#line 1424 "./util/configparser.y"
         {
                OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4874,11 +4195,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4878 "util/configparser.c"
+#line 4199 "util/configparser.c"
     break;
 
-  case 401:
-#line 1432 "./util/configparser.y"
+  case 403: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG  */
+#line 1434 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4887,11 +4208,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4891 "util/configparser.c"
+#line 4212 "util/configparser.c"
     break;
 
-  case 402:
-#line 1442 "./util/configparser.y"
+  case 404: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG  */
+#line 1444 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4900,11 +4221,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4904 "util/configparser.c"
+#line 4225 "util/configparser.c"
     break;
 
-  case 403:
-#line 1452 "./util/configparser.y"
+  case 405: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG  */
+#line 1454 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4917,22 +4238,22 @@ yyreduce:
                        cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4921 "util/configparser.c"
+#line 4242 "util/configparser.c"
     break;
 
-  case 404:
-#line 1466 "./util/configparser.y"
+  case 406: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG  */
+#line 1468 "./util/configparser.y"
         {
                OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4932 "util/configparser.c"
+#line 4253 "util/configparser.c"
     break;
 
-  case 405:
-#line 1474 "./util/configparser.y"
+  case 407: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG  */
+#line 1476 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4944,11 +4265,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4948 "util/configparser.c"
+#line 4269 "util/configparser.c"
     break;
 
-  case 406:
-#line 1487 "./util/configparser.y"
+  case 408: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG  */
+#line 1489 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4958,22 +4279,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4962 "util/configparser.c"
+#line 4283 "util/configparser.c"
     break;
 
-  case 407:
-#line 1498 "./util/configparser.y"
+  case 409: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG  */
+#line 1500 "./util/configparser.y"
         {
                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 4973 "util/configparser.c"
+#line 4294 "util/configparser.c"
     break;
 
-  case 408:
-#line 1506 "./util/configparser.y"
+  case 410: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG  */
+#line 1508 "./util/configparser.y"
         {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -4985,11 +4306,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4989 "util/configparser.c"
+#line 4310 "util/configparser.c"
     break;
 
-  case 409:
-#line 1519 "./util/configparser.y"
+  case 411: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG  */
+#line 1521 "./util/configparser.y"
         {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4997,11 +4318,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5001 "util/configparser.c"
+#line 4322 "util/configparser.c"
     break;
 
-  case 410:
-#line 1528 "./util/configparser.y"
+  case 412: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG  */
+#line 1530 "./util/configparser.y"
         {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5009,11 +4330,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5013 "util/configparser.c"
+#line 4334 "util/configparser.c"
     break;
 
-  case 411:
-#line 1537 "./util/configparser.y"
+  case 413: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG  */
+#line 1539 "./util/configparser.y"
         {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5021,11 +4342,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5025 "util/configparser.c"
+#line 4346 "util/configparser.c"
     break;
 
-  case 412:
-#line 1546 "./util/configparser.y"
+  case 414: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG  */
+#line 1548 "./util/configparser.y"
         {
                OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5033,11 +4354,11 @@ yyreduce:
                else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5037 "util/configparser.c"
+#line 4358 "util/configparser.c"
     break;
 
-  case 413:
-#line 1555 "./util/configparser.y"
+  case 415: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG  */
+#line 1557 "./util/configparser.y"
         {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5046,11 +4367,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5050 "util/configparser.c"
+#line 4371 "util/configparser.c"
     break;
 
-  case 414:
-#line 1565 "./util/configparser.y"
+  case 416: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG  */
+#line 1567 "./util/configparser.y"
         {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5059,22 +4380,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5063 "util/configparser.c"
+#line 4384 "util/configparser.c"
     break;
 
-  case 415:
-#line 1575 "./util/configparser.y"
+  case 417: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG  */
+#line 1577 "./util/configparser.y"
         {
                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 5074 "util/configparser.c"
+#line 4395 "util/configparser.c"
     break;
 
-  case 416:
-#line 1583 "./util/configparser.y"
+  case 418: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG  */
+#line 1585 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -5086,11 +4407,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5090 "util/configparser.c"
+#line 4411 "util/configparser.c"
     break;
 
-  case 417:
-#line 1596 "./util/configparser.y"
+  case 419: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG  */
+#line 1598 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5098,22 +4419,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5102 "util/configparser.c"
+#line 4423 "util/configparser.c"
     break;
 
-  case 418:
-#line 1605 "./util/configparser.y"
+  case 420: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG  */
+#line 1607 "./util/configparser.y"
         {
                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 5113 "util/configparser.c"
+#line 4434 "util/configparser.c"
     break;
 
-  case 419:
-#line 1613 "./util/configparser.y"
+  case 421: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG  */
+#line 1615 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -5121,22 +4442,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5125 "util/configparser.c"
+#line 4446 "util/configparser.c"
     break;
 
-  case 420:
-#line 1622 "./util/configparser.y"
+  case 422: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG  */
+#line 1624 "./util/configparser.y"
         {
                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 5136 "util/configparser.c"
+#line 4457 "util/configparser.c"
     break;
 
-  case 421:
-#line 1630 "./util/configparser.y"
+  case 423: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG  */
+#line 1632 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -5148,11 +4469,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5152 "util/configparser.c"
+#line 4473 "util/configparser.c"
     break;
 
-  case 422:
-#line 1643 "./util/configparser.y"
+  case 424: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG  */
+#line 1645 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5160,11 +4481,11 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5164 "util/configparser.c"
+#line 4485 "util/configparser.c"
     break;
 
-  case 423:
-#line 1652 "./util/configparser.y"
+  case 425: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG  */
+#line 1654 "./util/configparser.y"
         {
                OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5173,21 +4494,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5177 "util/configparser.c"
+#line 4498 "util/configparser.c"
     break;
 
-  case 424:
-#line 1662 "./util/configparser.y"
+  case 426: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG  */
+#line 1664 "./util/configparser.y"
         {
                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 5187 "util/configparser.c"
+#line 4508 "util/configparser.c"
     break;
 
-  case 425:
-#line 1669 "./util/configparser.y"
+  case 427: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG  */
+#line 1671 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5196,11 +4517,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5200 "util/configparser.c"
+#line 4521 "util/configparser.c"
     break;
 
-  case 426:
-#line 1679 "./util/configparser.y"
+  case 428: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG  */
+#line 1681 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5209,11 +4530,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5213 "util/configparser.c"
+#line 4534 "util/configparser.c"
     break;
 
-  case 427:
-#line 1689 "./util/configparser.y"
+  case 429: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG  */
+#line 1691 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5222,11 +4543,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5226 "util/configparser.c"
+#line 4547 "util/configparser.c"
     break;
 
-  case 428:
-#line 1699 "./util/configparser.y"
+  case 430: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG  */
+#line 1701 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5235,11 +4556,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5239 "util/configparser.c"
+#line 4560 "util/configparser.c"
     break;
 
-  case 429:
-#line 1709 "./util/configparser.y"
+  case 431: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG  */
+#line 1711 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5248,11 +4569,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5252 "util/configparser.c"
+#line 4573 "util/configparser.c"
     break;
 
-  case 430:
-#line 1719 "./util/configparser.y"
+  case 432: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG  */
+#line 1721 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5261,11 +4582,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5265 "util/configparser.c"
+#line 4586 "util/configparser.c"
     break;
 
-  case 431:
-#line 1729 "./util/configparser.y"
+  case 433: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG  */
+#line 1731 "./util/configparser.y"
         {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5274,11 +4595,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5278 "util/configparser.c"
+#line 4599 "util/configparser.c"
     break;
 
-  case 432:
-#line 1739 "./util/configparser.y"
+  case 434: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG  */
+#line 1741 "./util/configparser.y"
         {
                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)
@@ -5287,41 +4608,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5291 "util/configparser.c"
+#line 4612 "util/configparser.c"
     break;
 
-  case 433:
-#line 1749 "./util/configparser.y"
+  case 435: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG  */
+#line 1751 "./util/configparser.y"
         {
                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 5301 "util/configparser.c"
+#line 4622 "util/configparser.c"
     break;
 
-  case 434:
-#line 1756 "./util/configparser.y"
+  case 436: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG  */
+#line 1758 "./util/configparser.y"
         {
                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 5311 "util/configparser.c"
+#line 4632 "util/configparser.c"
     break;
 
-  case 435:
-#line 1763 "./util/configparser.y"
+  case 437: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG  */
+#line 1765 "./util/configparser.y"
         {
                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 5321 "util/configparser.c"
+#line 4642 "util/configparser.c"
     break;
 
-  case 436:
-#line 1770 "./util/configparser.y"
+  case 438: /* server_prefetch: VAR_PREFETCH STRING_ARG  */
+#line 1772 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5329,11 +4650,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5333 "util/configparser.c"
+#line 4654 "util/configparser.c"
     break;
 
-  case 437:
-#line 1779 "./util/configparser.y"
+  case 439: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG  */
+#line 1781 "./util/configparser.y"
         {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5341,11 +4662,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5345 "util/configparser.c"
+#line 4666 "util/configparser.c"
     break;
 
-  case 438:
-#line 1788 "./util/configparser.y"
+  case 440: /* server_deny_any: VAR_DENY_ANY STRING_ARG  */
+#line 1790 "./util/configparser.y"
         {
                OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5353,11 +4674,11 @@ yyreduce:
                else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5357 "util/configparser.c"
+#line 4678 "util/configparser.c"
     break;
 
-  case 439:
-#line 1797 "./util/configparser.y"
+  case 441: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG  */
+#line 1799 "./util/configparser.y"
         {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5365,21 +4686,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5369 "util/configparser.c"
+#line 4690 "util/configparser.c"
     break;
 
-  case 440:
-#line 1806 "./util/configparser.y"
+  case 442: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG  */
+#line 1808 "./util/configparser.y"
         {
                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 5379 "util/configparser.c"
+#line 4700 "util/configparser.c"
     break;
 
-  case 441:
-#line 1813 "./util/configparser.y"
+  case 443: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG  */
+#line 1815 "./util/configparser.y"
         {
                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)
@@ -5388,11 +4709,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5392 "util/configparser.c"
+#line 4713 "util/configparser.c"
     break;
 
-  case 442:
-#line 1823 "./util/configparser.y"
+  case 444: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG  */
+#line 1825 "./util/configparser.y"
         {
                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 &&
@@ -5411,21 +4732,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 5415 "util/configparser.c"
+#line 4736 "util/configparser.c"
     break;
 
-  case 443:
-#line 1843 "./util/configparser.y"
+  case 445: /* server_module_conf: VAR_MODULE_CONF STRING_ARG  */
+#line 1845 "./util/configparser.y"
         {
                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 5425 "util/configparser.c"
+#line 4746 "util/configparser.c"
     break;
 
-  case 444:
-#line 1850 "./util/configparser.y"
+  case 446: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG  */
+#line 1852 "./util/configparser.y"
         {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -5442,11 +4763,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5446 "util/configparser.c"
+#line 4767 "util/configparser.c"
     break;
 
-  case 445:
-#line 1868 "./util/configparser.y"
+  case 447: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG  */
+#line 1870 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -5458,11 +4779,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5462 "util/configparser.c"
+#line 4783 "util/configparser.c"
     break;
 
-  case 446:
-#line 1881 "./util/configparser.y"
+  case 448: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG  */
+#line 1883 "./util/configparser.y"
         {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -5474,11 +4795,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5478 "util/configparser.c"
+#line 4799 "util/configparser.c"
     break;
 
-  case 447:
-#line 1894 "./util/configparser.y"
+  case 449: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG  */
+#line 1896 "./util/configparser.y"
         {
                OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -5490,11 +4811,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5494 "util/configparser.c"
+#line 4815 "util/configparser.c"
     break;
 
-  case 448:
-#line 1907 "./util/configparser.y"
+  case 450: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG  */
+#line 1909 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5502,11 +4823,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5506 "util/configparser.c"
+#line 4827 "util/configparser.c"
     break;
 
-  case 449:
-#line 1916 "./util/configparser.y"
+  case 451: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG  */
+#line 1918 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5514,11 +4835,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5518 "util/configparser.c"
+#line 4839 "util/configparser.c"
     break;
 
-  case 450:
-#line 1925 "./util/configparser.y"
+  case 452: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG  */
+#line 1927 "./util/configparser.y"
         {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5526,11 +4847,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5530 "util/configparser.c"
+#line 4851 "util/configparser.c"
     break;
 
-  case 451:
-#line 1934 "./util/configparser.y"
+  case 453: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG  */
+#line 1936 "./util/configparser.y"
         {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5538,11 +4859,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5542 "util/configparser.c"
+#line 4863 "util/configparser.c"
     break;
 
-  case 452:
-#line 1943 "./util/configparser.y"
+  case 454: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG  */
+#line 1945 "./util/configparser.y"
         {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5551,11 +4872,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5555 "util/configparser.c"
+#line 4876 "util/configparser.c"
     break;
 
-  case 453:
-#line 1953 "./util/configparser.y"
+  case 455: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG  */
+#line 1955 "./util/configparser.y"
         {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5564,11 +4885,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5568 "util/configparser.c"
+#line 4889 "util/configparser.c"
     break;
 
-  case 454:
-#line 1963 "./util/configparser.y"
+  case 456: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG  */
+#line 1965 "./util/configparser.y"
         {
                OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5578,11 +4899,11 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5582 "util/configparser.c"
+#line 4903 "util/configparser.c"
     break;
 
-  case 455:
-#line 1974 "./util/configparser.y"
+  case 457: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG  */
+#line 1976 "./util/configparser.y"
         {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5590,11 +4911,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5594 "util/configparser.c"
+#line 4915 "util/configparser.c"
     break;
 
-  case 456:
-#line 1983 "./util/configparser.y"
+  case 458: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG  */
+#line 1985 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5602,11 +4923,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5606 "util/configparser.c"
+#line 4927 "util/configparser.c"
     break;
 
-  case 457:
-#line 1992 "./util/configparser.y"
+  case 459: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG  */
+#line 1994 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5614,11 +4935,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5618 "util/configparser.c"
+#line 4939 "util/configparser.c"
     break;
 
-  case 458:
-#line 2001 "./util/configparser.y"
+  case 460: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG  */
+#line 2003 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5626,11 +4947,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5630 "util/configparser.c"
+#line 4951 "util/configparser.c"
     break;
 
-  case 459:
-#line 2010 "./util/configparser.y"
+  case 461: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG  */
+#line 2012 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5638,11 +4959,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5642 "util/configparser.c"
+#line 4963 "util/configparser.c"
     break;
 
-  case 460:
-#line 2019 "./util/configparser.y"
+  case 462: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG  */
+#line 2021 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5650,11 +4971,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5654 "util/configparser.c"
+#line 4975 "util/configparser.c"
     break;
 
-  case 461:
-#line 2028 "./util/configparser.y"
+  case 463: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG  */
+#line 2030 "./util/configparser.y"
         {
                OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5662,11 +4983,11 @@ yyreduce:
                else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5666 "util/configparser.c"
+#line 4987 "util/configparser.c"
     break;
 
-  case 462:
-#line 2037 "./util/configparser.y"
+  case 464: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG  */
+#line 2039 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5678,11 +4999,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 5682 "util/configparser.c"
+#line 5003 "util/configparser.c"
     break;
 
-  case 463:
-#line 2050 "./util/configparser.y"
+  case 465: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG  */
+#line 2052 "./util/configparser.y"
         {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5694,11 +5015,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 5698 "util/configparser.c"
+#line 5019 "util/configparser.c"
     break;
 
-  case 464:
-#line 2063 "./util/configparser.y"
+  case 466: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG  */
+#line 2065 "./util/configparser.y"
         {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5706,21 +5027,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5710 "util/configparser.c"
+#line 5031 "util/configparser.c"
     break;
 
-  case 465:
-#line 2072 "./util/configparser.y"
+  case 467: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG  */
+#line 2074 "./util/configparser.y"
         {
                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 5720 "util/configparser.c"
+#line 5041 "util/configparser.c"
     break;
 
-  case 466:
-#line 2079 "./util/configparser.y"
+  case 468: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG  */
+#line 2081 "./util/configparser.y"
         {
                OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5728,11 +5049,11 @@ yyreduce:
                else    cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5732 "util/configparser.c"
+#line 5053 "util/configparser.c"
     break;
 
-  case 467:
-#line 2088 "./util/configparser.y"
+  case 469: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG  */
+#line 2090 "./util/configparser.y"
         {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5740,11 +5061,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5744 "util/configparser.c"
+#line 5065 "util/configparser.c"
     break;
 
-  case 468:
-#line 2097 "./util/configparser.y"
+  case 470: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG  */
+#line 2099 "./util/configparser.y"
         {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5752,11 +5073,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5756 "util/configparser.c"
+#line 5077 "util/configparser.c"
     break;
 
-  case 469:
-#line 2106 "./util/configparser.y"
+  case 471: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG  */
+#line 2108 "./util/configparser.y"
         {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -5764,11 +5085,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5768 "util/configparser.c"
+#line 5089 "util/configparser.c"
     break;
 
-  case 470:
-#line 2115 "./util/configparser.y"
+  case 472: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG  */
+#line 2117 "./util/configparser.y"
         {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5777,22 +5098,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5781 "util/configparser.c"
+#line 5102 "util/configparser.c"
     break;
 
-  case 471:
-#line 2124 "./util/configparser.y"
+  case 473: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG  */
+#line 2126 "./util/configparser.y"
         {
                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 5792 "util/configparser.c"
+#line 5113 "util/configparser.c"
     break;
 
-  case 472:
-#line 2132 "./util/configparser.y"
+  case 474: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG  */
+#line 2134 "./util/configparser.y"
         {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -5804,22 +5125,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5808 "util/configparser.c"
+#line 5129 "util/configparser.c"
     break;
 
-  case 473:
-#line 2145 "./util/configparser.y"
+  case 475: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG  */
+#line 2147 "./util/configparser.y"
         {
                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 5819 "util/configparser.c"
+#line 5140 "util/configparser.c"
     break;
 
-  case 474:
-#line 2153 "./util/configparser.y"
+  case 476: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
+#line 2155 "./util/configparser.y"
         {
                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 &&
@@ -5863,21 +5184,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 5867 "util/configparser.c"
+#line 5188 "util/configparser.c"
     break;
 
-  case 475:
-#line 2198 "./util/configparser.y"
+  case 477: /* server_local_data: VAR_LOCAL_DATA STRING_ARG  */
+#line 2200 "./util/configparser.y"
         {
                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 5877 "util/configparser.c"
+#line 5198 "util/configparser.c"
     break;
 
-  case 476:
-#line 2205 "./util/configparser.y"
+  case 478: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
+#line 2207 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -5891,11 +5212,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 5895 "util/configparser.c"
+#line 5216 "util/configparser.c"
     break;
 
-  case 477:
-#line 2220 "./util/configparser.y"
+  case 479: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG  */
+#line 2222 "./util/configparser.y"
         {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5904,11 +5225,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5908 "util/configparser.c"
+#line 5229 "util/configparser.c"
     break;
 
-  case 478:
-#line 2230 "./util/configparser.y"
+  case 480: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG  */
+#line 2232 "./util/configparser.y"
         {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5917,41 +5238,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5921 "util/configparser.c"
+#line 5242 "util/configparser.c"
     break;
 
-  case 479:
-#line 2240 "./util/configparser.y"
+  case 481: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG  */
+#line 2242 "./util/configparser.y"
         {
                OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 5931 "util/configparser.c"
+#line 5252 "util/configparser.c"
     break;
 
-  case 480:
-#line 2247 "./util/configparser.y"
+  case 482: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG  */
+#line 2249 "./util/configparser.y"
         {
                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 5941 "util/configparser.c"
+#line 5262 "util/configparser.c"
     break;
 
-  case 481:
-#line 2254 "./util/configparser.y"
+  case 483: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG  */
+#line 2256 "./util/configparser.y"
         {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 5951 "util/configparser.c"
+#line 5272 "util/configparser.c"
     break;
 
-  case 482:
-#line 2261 "./util/configparser.y"
+  case 484: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG  */
+#line 2263 "./util/configparser.y"
         {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -5959,22 +5280,22 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 5963 "util/configparser.c"
+#line 5284 "util/configparser.c"
     break;
 
-  case 483:
-#line 2270 "./util/configparser.y"
+  case 485: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG  */
+#line 2272 "./util/configparser.y"
         {
                OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa,
                        (yyvsp[0].str)))
                        fatal_exit("out of memory adding dns64-ignore-aaaa");
        }
-#line 5974 "util/configparser.c"
+#line 5295 "util/configparser.c"
     break;
 
-  case 484:
-#line 2278 "./util/configparser.y"
+  case 486: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG  */
+#line 2280 "./util/configparser.y"
         {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -5987,11 +5308,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 5991 "util/configparser.c"
+#line 5312 "util/configparser.c"
     break;
 
-  case 485:
-#line 2292 "./util/configparser.y"
+  case 487: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG  */
+#line 2294 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -6011,11 +5332,11 @@ yyreduce:
                        }
                }
        }
-#line 6015 "util/configparser.c"
+#line 5336 "util/configparser.c"
     break;
 
-  case 486:
-#line 2313 "./util/configparser.y"
+  case 488: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG  */
+#line 2315 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -6035,11 +5356,11 @@ yyreduce:
                        }
                }
        }
-#line 6039 "util/configparser.c"
+#line 5360 "util/configparser.c"
     break;
 
-  case 487:
-#line 2334 "./util/configparser.y"
+  case 489: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG  */
+#line 2336 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -6050,11 +5371,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 6054 "util/configparser.c"
+#line 5375 "util/configparser.c"
     break;
 
-  case 488:
-#line 2346 "./util/configparser.y"
+  case 490: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG  */
+#line 2348 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -6065,11 +5386,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 6069 "util/configparser.c"
+#line 5390 "util/configparser.c"
     break;
 
-  case 489:
-#line 2358 "./util/configparser.y"
+  case 491: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG  */
+#line 2360 "./util/configparser.y"
         {
                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,
@@ -6080,11 +5401,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 6084 "util/configparser.c"
+#line 5405 "util/configparser.c"
     break;
 
-  case 490:
-#line 2370 "./util/configparser.y"
+  case 492: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG  */
+#line 2372 "./util/configparser.y"
         {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -6092,11 +5413,11 @@ yyreduce:
                        yyerror("out of memory");
                }
        }
-#line 6096 "util/configparser.c"
+#line 5417 "util/configparser.c"
     break;
 
-  case 491:
-#line 2379 "./util/configparser.y"
+  case 493: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG  */
+#line 2381 "./util/configparser.y"
         {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -6116,11 +5437,11 @@ yyreduce:
                        }
                }
        }
-#line 6120 "util/configparser.c"
+#line 5441 "util/configparser.c"
     break;
 
-  case 492:
-#line 2400 "./util/configparser.y"
+  case 494: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG  */
+#line 2402 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6128,11 +5449,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6132 "util/configparser.c"
+#line 5453 "util/configparser.c"
     break;
 
-  case 493:
-#line 2409 "./util/configparser.y"
+  case 495: /* server_ratelimit: VAR_RATELIMIT STRING_ARG  */
+#line 2411 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6140,33 +5461,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6144 "util/configparser.c"
+#line 5465 "util/configparser.c"
     break;
 
-  case 494:
-#line 2418 "./util/configparser.y"
+  case 496: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG  */
+#line 2420 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 6155 "util/configparser.c"
+#line 5476 "util/configparser.c"
     break;
 
-  case 495:
-#line 2426 "./util/configparser.y"
+  case 497: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG  */
+#line 2428 "./util/configparser.y"
         {
                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 6166 "util/configparser.c"
+#line 5487 "util/configparser.c"
     break;
 
-  case 496:
-#line 2434 "./util/configparser.y"
+  case 498: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG  */
+#line 2436 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -6178,11 +5499,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 6182 "util/configparser.c"
+#line 5503 "util/configparser.c"
     break;
 
-  case 497:
-#line 2447 "./util/configparser.y"
+  case 499: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG  */
+#line 2449 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0) {
@@ -6194,11 +5515,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 6198 "util/configparser.c"
+#line 5519 "util/configparser.c"
     break;
 
-  case 498:
-#line 2460 "./util/configparser.y"
+  case 500: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG  */
+#line 2462 "./util/configparser.y"
         {
                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) {
@@ -6212,11 +5533,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 6216 "util/configparser.c"
+#line 5537 "util/configparser.c"
     break;
 
-  case 499:
-#line 2475 "./util/configparser.y"
+  case 501: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG  */
+#line 2477 "./util/configparser.y"
         {
                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) {
@@ -6230,11 +5551,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 6234 "util/configparser.c"
+#line 5555 "util/configparser.c"
     break;
 
-  case 500:
-#line 2490 "./util/configparser.y"
+  case 502: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG  */
+#line 2492 "./util/configparser.y"
         {
                OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6242,11 +5563,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6246 "util/configparser.c"
+#line 5567 "util/configparser.c"
     break;
 
-  case 501:
-#line 2499 "./util/configparser.y"
+  case 503: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG  */
+#line 2501 "./util/configparser.y"
         {
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6254,11 +5575,37 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6258 "util/configparser.c"
+#line 5579 "util/configparser.c"
+    break;
+
+  case 504: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG  */
+#line 2510 "./util/configparser.y"
+        {
+               OUTYY(("P(server_ip_ratelimit_backoff:%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->ip_ratelimit_backoff =
+                       (strcmp((yyvsp[0].str), "yes")==0);
+               free((yyvsp[0].str));
+       }
+#line 5592 "util/configparser.c"
+    break;
+
+  case 505: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG  */
+#line 2520 "./util/configparser.y"
+        {
+               OUTYY(("P(server_ratelimit_backoff:%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->ratelimit_backoff =
+                       (strcmp((yyvsp[0].str), "yes")==0);
+               free((yyvsp[0].str));
+       }
+#line 5605 "util/configparser.c"
     break;
 
-  case 502:
-#line 2508 "./util/configparser.y"
+  case 506: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG  */
+#line 2530 "./util/configparser.y"
         {
                OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6266,20 +5613,20 @@ yyreduce:
                else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6270 "util/configparser.c"
+#line 5617 "util/configparser.c"
     break;
 
-  case 503:
-#line 2517 "./util/configparser.y"
+  case 507: /* server_low_rtt: VAR_LOW_RTT STRING_ARG  */
+#line 2539 "./util/configparser.y"
         {
                OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n"));
                free((yyvsp[0].str));
        }
-#line 6279 "util/configparser.c"
+#line 5626 "util/configparser.c"
     break;
 
-  case 504:
-#line 2523 "./util/configparser.y"
+  case 508: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG  */
+#line 2545 "./util/configparser.y"
         {
                OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) <= 0)
@@ -6287,11 +5634,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6291 "util/configparser.c"
+#line 5638 "util/configparser.c"
     break;
 
-  case 505:
-#line 2532 "./util/configparser.y"
+  case 509: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG  */
+#line 2554 "./util/configparser.y"
         {
                OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6299,11 +5646,11 @@ yyreduce:
                else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6303 "util/configparser.c"
+#line 5650 "util/configparser.c"
     break;
 
-  case 506:
-#line 2541 "./util/configparser.y"
+  case 510: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG  */
+#line 2563 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6312,11 +5659,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6316 "util/configparser.c"
+#line 5663 "util/configparser.c"
     break;
 
-  case 507:
-#line 2551 "./util/configparser.y"
+  case 511: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG  */
+#line 2573 "./util/configparser.y"
         {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6325,11 +5672,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6329 "util/configparser.c"
+#line 5676 "util/configparser.c"
     break;
 
-  case 508:
-#line 2561 "./util/configparser.y"
+  case 512: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG  */
+#line 2583 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6338,11 +5685,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6342 "util/configparser.c"
+#line 5689 "util/configparser.c"
     break;
 
-  case 509:
-#line 2571 "./util/configparser.y"
+  case 513: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG  */
+#line 2593 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6350,11 +5697,11 @@ yyreduce:
                else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6354 "util/configparser.c"
+#line 5701 "util/configparser.c"
     break;
 
-  case 510:
-#line 2580 "./util/configparser.y"
+  case 514: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG  */
+#line 2602 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6363,11 +5710,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6367 "util/configparser.c"
+#line 5714 "util/configparser.c"
     break;
 
-  case 511:
-#line 2590 "./util/configparser.y"
+  case 515: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG  */
+#line 2612 "./util/configparser.y"
         {
                OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6375,11 +5722,11 @@ yyreduce:
                else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6379 "util/configparser.c"
+#line 5726 "util/configparser.c"
     break;
 
-  case 512:
-#line 2599 "./util/configparser.y"
+  case 516: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG  */
+#line 2621 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
@@ -6391,11 +5738,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6395 "util/configparser.c"
+#line 5742 "util/configparser.c"
     break;
 
-  case 513:
-#line 2612 "./util/configparser.y"
+  case 517: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG  */
+#line 2634 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
@@ -6407,11 +5754,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 6411 "util/configparser.c"
+#line 5758 "util/configparser.c"
     break;
 
-  case 514:
-#line 2625 "./util/configparser.y"
+  case 518: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG  */
+#line 2647 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
@@ -6422,11 +5769,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6426 "util/configparser.c"
+#line 5773 "util/configparser.c"
     break;
 
-  case 515:
-#line 2637 "./util/configparser.y"
+  case 519: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG  */
+#line 2659 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
@@ -6439,11 +5786,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6443 "util/configparser.c"
+#line 5790 "util/configparser.c"
     break;
 
-  case 516:
-#line 2651 "./util/configparser.y"
+  case 520: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG  */
+#line 2673 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
@@ -6454,11 +5801,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6458 "util/configparser.c"
+#line 5805 "util/configparser.c"
     break;
 
-  case 517:
-#line 2663 "./util/configparser.y"
+  case 521: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG  */
+#line 2685 "./util/configparser.y"
         {
        #ifdef USE_IPSECMOD
                OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
@@ -6471,11 +5818,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 6475 "util/configparser.c"
+#line 5822 "util/configparser.c"
     break;
 
-  case 518:
-#line 2677 "./util/configparser.y"
+  case 522: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG  */
+#line 2699 "./util/configparser.y"
         {
                OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(
@@ -6483,11 +5830,11 @@ yyreduce:
                        fatal_exit("out of memory adding "
                                "edns-client-string");
        }
-#line 6487 "util/configparser.c"
+#line 5834 "util/configparser.c"
     break;
 
-  case 519:
-#line 2686 "./util/configparser.y"
+  case 523: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG  */
+#line 2708 "./util/configparser.y"
         {
                OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -6498,11 +5845,11 @@ yyreduce:
                free((yyvsp[0].str));
 
        }
-#line 6502 "util/configparser.c"
+#line 5849 "util/configparser.c"
     break;
 
-  case 520:
-#line 2698 "./util/configparser.y"
+  case 524: /* stub_name: VAR_NAME STRING_ARG  */
+#line 2720 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -6511,31 +5858,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 6515 "util/configparser.c"
+#line 5862 "util/configparser.c"
     break;
 
-  case 521:
-#line 2708 "./util/configparser.y"
+  case 525: /* stub_host: VAR_STUB_HOST STRING_ARG  */
+#line 2730 "./util/configparser.y"
         {
                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 6525 "util/configparser.c"
+#line 5872 "util/configparser.c"
     break;
 
-  case 522:
-#line 2715 "./util/configparser.y"
+  case 526: /* stub_addr: VAR_STUB_ADDR STRING_ARG  */
+#line 2737 "./util/configparser.y"
         {
                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 6535 "util/configparser.c"
+#line 5882 "util/configparser.c"
     break;
 
-  case 523:
-#line 2722 "./util/configparser.y"
+  case 527: /* stub_first: VAR_STUB_FIRST STRING_ARG  */
+#line 2744 "./util/configparser.y"
         {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6543,11 +5890,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6547 "util/configparser.c"
+#line 5894 "util/configparser.c"
     break;
 
-  case 524:
-#line 2731 "./util/configparser.y"
+  case 528: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG  */
+#line 2753 "./util/configparser.y"
         {
                OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6555,11 +5902,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6559 "util/configparser.c"
+#line 5906 "util/configparser.c"
     break;
 
-  case 525:
-#line 2740 "./util/configparser.y"
+  case 529: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG  */
+#line 2762 "./util/configparser.y"
         {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6568,11 +5915,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6572 "util/configparser.c"
+#line 5919 "util/configparser.c"
     break;
 
-  case 526:
-#line 2750 "./util/configparser.y"
+  case 530: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG  */
+#line 2772 "./util/configparser.y"
         {
                 OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str)));
                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6581,11 +5928,11 @@ yyreduce:
                         (strcmp((yyvsp[0].str), "yes")==0);
                 free((yyvsp[0].str));
         }
-#line 6585 "util/configparser.c"
+#line 5932 "util/configparser.c"
     break;
 
-  case 527:
-#line 2760 "./util/configparser.y"
+  case 531: /* stub_prime: VAR_STUB_PRIME STRING_ARG  */
+#line 2782 "./util/configparser.y"
         {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6594,11 +5941,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6598 "util/configparser.c"
+#line 5945 "util/configparser.c"
     break;
 
-  case 528:
-#line 2770 "./util/configparser.y"
+  case 532: /* forward_name: VAR_NAME STRING_ARG  */
+#line 2792 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -6607,31 +5954,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 6611 "util/configparser.c"
+#line 5958 "util/configparser.c"
     break;
 
-  case 529:
-#line 2780 "./util/configparser.y"
+  case 533: /* forward_host: VAR_FORWARD_HOST STRING_ARG  */
+#line 2802 "./util/configparser.y"
         {
                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 6621 "util/configparser.c"
+#line 5968 "util/configparser.c"
     break;
 
-  case 530:
-#line 2787 "./util/configparser.y"
+  case 534: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG  */
+#line 2809 "./util/configparser.y"
         {
                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 6631 "util/configparser.c"
+#line 5978 "util/configparser.c"
     break;
 
-  case 531:
-#line 2794 "./util/configparser.y"
+  case 535: /* forward_first: VAR_FORWARD_FIRST STRING_ARG  */
+#line 2816 "./util/configparser.y"
         {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6639,11 +5986,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6643 "util/configparser.c"
+#line 5990 "util/configparser.c"
     break;
 
-  case 532:
-#line 2803 "./util/configparser.y"
+  case 536: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG  */
+#line 2825 "./util/configparser.y"
         {
                OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6651,11 +5998,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6655 "util/configparser.c"
+#line 6002 "util/configparser.c"
     break;
 
-  case 533:
-#line 2812 "./util/configparser.y"
+  case 537: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG  */
+#line 2834 "./util/configparser.y"
         {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6664,11 +6011,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6668 "util/configparser.c"
+#line 6015 "util/configparser.c"
     break;
 
-  case 534:
-#line 2822 "./util/configparser.y"
+  case 538: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG  */
+#line 2844 "./util/configparser.y"
         {
                 OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str)));
                 if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6677,11 +6024,11 @@ yyreduce:
                         (strcmp((yyvsp[0].str), "yes")==0);
                 free((yyvsp[0].str));
         }
-#line 6681 "util/configparser.c"
+#line 6028 "util/configparser.c"
     break;
 
-  case 535:
-#line 2832 "./util/configparser.y"
+  case 539: /* auth_name: VAR_NAME STRING_ARG  */
+#line 2854 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->auths->name)
@@ -6690,52 +6037,52 @@ yyreduce:
                free(cfg_parser->cfg->auths->name);
                cfg_parser->cfg->auths->name = (yyvsp[0].str);
        }
-#line 6694 "util/configparser.c"
+#line 6041 "util/configparser.c"
     break;
 
-  case 536:
-#line 2842 "./util/configparser.y"
+  case 540: /* auth_zonefile: VAR_ZONEFILE STRING_ARG  */
+#line 2864 "./util/configparser.y"
         {
                OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->auths->zonefile);
                cfg_parser->cfg->auths->zonefile = (yyvsp[0].str);
        }
-#line 6704 "util/configparser.c"
+#line 6051 "util/configparser.c"
     break;
 
-  case 537:
-#line 2849 "./util/configparser.y"
+  case 541: /* auth_master: VAR_MASTER STRING_ARG  */
+#line 2871 "./util/configparser.y"
         {
                OUTYY(("P(master:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6714 "util/configparser.c"
+#line 6061 "util/configparser.c"
     break;
 
-  case 538:
-#line 2856 "./util/configparser.y"
+  case 542: /* auth_url: VAR_URL STRING_ARG  */
+#line 2878 "./util/configparser.y"
         {
                OUTYY(("P(url:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6724 "util/configparser.c"
+#line 6071 "util/configparser.c"
     break;
 
-  case 539:
-#line 2863 "./util/configparser.y"
+  case 543: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG  */
+#line 2885 "./util/configparser.y"
         {
                OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify,
                        (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6735 "util/configparser.c"
+#line 6082 "util/configparser.c"
     break;
 
-  case 540:
-#line 2871 "./util/configparser.y"
+  case 544: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG  */
+#line 2893 "./util/configparser.y"
         {
                OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6744,11 +6091,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6748 "util/configparser.c"
+#line 6095 "util/configparser.c"
     break;
 
-  case 541:
-#line 2881 "./util/configparser.y"
+  case 545: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG  */
+#line 2903 "./util/configparser.y"
         {
                OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6757,11 +6104,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6761 "util/configparser.c"
+#line 6108 "util/configparser.c"
     break;
 
-  case 542:
-#line 2891 "./util/configparser.y"
+  case 546: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG  */
+#line 2913 "./util/configparser.y"
         {
                OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6770,11 +6117,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6774 "util/configparser.c"
+#line 6121 "util/configparser.c"
     break;
 
-  case 543:
-#line 2901 "./util/configparser.y"
+  case 547: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG  */
+#line 2923 "./util/configparser.y"
         {
                OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6783,11 +6130,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6787 "util/configparser.c"
+#line 6134 "util/configparser.c"
     break;
 
-  case 544:
-#line 2911 "./util/configparser.y"
+  case 548: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG  */
+#line 2933 "./util/configparser.y"
         {
                OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6796,11 +6143,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6800 "util/configparser.c"
+#line 6147 "util/configparser.c"
     break;
 
-  case 545:
-#line 2921 "./util/configparser.y"
+  case 549: /* view_name: VAR_NAME STRING_ARG  */
+#line 2943 "./util/configparser.y"
         {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -6809,11 +6156,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 6813 "util/configparser.c"
+#line 6160 "util/configparser.c"
     break;
 
-  case 546:
-#line 2931 "./util/configparser.y"
+  case 550: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG  */
+#line 2953 "./util/configparser.y"
         {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -6858,11 +6205,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 6862 "util/configparser.c"
+#line 6209 "util/configparser.c"
     break;
 
-  case 547:
-#line 2977 "./util/configparser.y"
+  case 551: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
+#line 2999 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -6871,33 +6218,33 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 6875 "util/configparser.c"
+#line 6222 "util/configparser.c"
     break;
 
-  case 548:
-#line 2987 "./util/configparser.y"
+  case 552: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
+#line 3009 "./util/configparser.y"
         {
                OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(
                        &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 6886 "util/configparser.c"
+#line 6233 "util/configparser.c"
     break;
 
-  case 549:
-#line 2995 "./util/configparser.y"
+  case 553: /* view_local_data: VAR_LOCAL_DATA STRING_ARG  */
+#line 3017 "./util/configparser.y"
         {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
                        fatal_exit("out of memory adding local-data");
                }
        }
-#line 6897 "util/configparser.c"
+#line 6244 "util/configparser.c"
     break;
 
-  case 550:
-#line 3003 "./util/configparser.y"
+  case 554: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG  */
+#line 3025 "./util/configparser.y"
         {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -6911,11 +6258,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 6915 "util/configparser.c"
+#line 6262 "util/configparser.c"
     break;
 
-  case 551:
-#line 3018 "./util/configparser.y"
+  case 555: /* view_first: VAR_VIEW_FIRST STRING_ARG  */
+#line 3040 "./util/configparser.y"
         {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6923,19 +6270,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6927 "util/configparser.c"
+#line 6274 "util/configparser.c"
     break;
 
-  case 552:
-#line 3027 "./util/configparser.y"
+  case 556: /* rcstart: VAR_REMOTE_CONTROL  */
+#line 3049 "./util/configparser.y"
         {
                OUTYY(("\nP(remote-control:)\n"));
        }
-#line 6935 "util/configparser.c"
+#line 6282 "util/configparser.c"
     break;
 
-  case 563:
-#line 3038 "./util/configparser.y"
+  case 567: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG  */
+#line 3060 "./util/configparser.y"
         {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -6944,11 +6291,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6948 "util/configparser.c"
+#line 6295 "util/configparser.c"
     break;
 
-  case 564:
-#line 3048 "./util/configparser.y"
+  case 568: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG  */
+#line 3070 "./util/configparser.y"
         {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -6956,79 +6303,79 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 6960 "util/configparser.c"
+#line 6307 "util/configparser.c"
     break;
 
-  case 565:
-#line 3057 "./util/configparser.y"
+  case 569: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG  */
+#line 3079 "./util/configparser.y"
         {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 6970 "util/configparser.c"
+#line 6317 "util/configparser.c"
     break;
 
-  case 566:
-#line 3064 "./util/configparser.y"
+  case 570: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG  */
+#line 3086 "./util/configparser.y"
         {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 6980 "util/configparser.c"
+#line 6327 "util/configparser.c"
     break;
 
-  case 567:
-#line 3071 "./util/configparser.y"
+  case 571: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG  */
+#line 3093 "./util/configparser.y"
         {
                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 6990 "util/configparser.c"
+#line 6337 "util/configparser.c"
     break;
 
-  case 568:
-#line 3078 "./util/configparser.y"
+  case 572: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG  */
+#line 3100 "./util/configparser.y"
         {
                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 7000 "util/configparser.c"
+#line 6347 "util/configparser.c"
     break;
 
-  case 569:
-#line 3085 "./util/configparser.y"
+  case 573: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG  */
+#line 3107 "./util/configparser.y"
         {
                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 7010 "util/configparser.c"
+#line 6357 "util/configparser.c"
     break;
 
-  case 570:
-#line 3092 "./util/configparser.y"
+  case 574: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG  */
+#line 3114 "./util/configparser.y"
         {
                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 7020 "util/configparser.c"
+#line 6367 "util/configparser.c"
     break;
 
-  case 571:
-#line 3099 "./util/configparser.y"
+  case 575: /* dtstart: VAR_DNSTAP  */
+#line 3121 "./util/configparser.y"
         {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 7028 "util/configparser.c"
+#line 6375 "util/configparser.c"
     break;
 
-  case 593:
-#line 3119 "./util/configparser.y"
+  case 597: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG  */
+#line 3141 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7036,11 +6383,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7040 "util/configparser.c"
+#line 6387 "util/configparser.c"
     break;
 
-  case 594:
-#line 3128 "./util/configparser.y"
+  case 598: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG  */
+#line 3150 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7049,31 +6396,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7053 "util/configparser.c"
+#line 6400 "util/configparser.c"
     break;
 
-  case 595:
-#line 3138 "./util/configparser.y"
+  case 599: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG  */
+#line 3160 "./util/configparser.y"
         {
                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 7063 "util/configparser.c"
+#line 6410 "util/configparser.c"
     break;
 
-  case 596:
-#line 3145 "./util/configparser.y"
+  case 600: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG  */
+#line 3167 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_ip);
                cfg_parser->cfg->dnstap_ip = (yyvsp[0].str);
        }
-#line 7073 "util/configparser.c"
+#line 6420 "util/configparser.c"
     break;
 
-  case 597:
-#line 3152 "./util/configparser.y"
+  case 601: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG  */
+#line 3174 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7081,51 +6428,51 @@ yyreduce:
                else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7085 "util/configparser.c"
+#line 6432 "util/configparser.c"
     break;
 
-  case 598:
-#line 3161 "./util/configparser.y"
+  case 602: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG  */
+#line 3183 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_server_name);
                cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str);
        }
-#line 7095 "util/configparser.c"
+#line 6442 "util/configparser.c"
     break;
 
-  case 599:
-#line 3168 "./util/configparser.y"
+  case 603: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG  */
+#line 3190 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_cert_bundle);
                cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str);
        }
-#line 7105 "util/configparser.c"
+#line 6452 "util/configparser.c"
     break;
 
-  case 600:
-#line 3175 "./util/configparser.y"
+  case 604: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG  */
+#line 3197 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_key_file);
                cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str);
        }
-#line 7115 "util/configparser.c"
+#line 6462 "util/configparser.c"
     break;
 
-  case 601:
-#line 3182 "./util/configparser.y"
+  case 605: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG  */
+#line 3204 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_tls_client_cert_file);
                cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str);
        }
-#line 7125 "util/configparser.c"
+#line 6472 "util/configparser.c"
     break;
 
-  case 602:
-#line 3189 "./util/configparser.y"
+  case 606: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG  */
+#line 3211 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7133,11 +6480,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7137 "util/configparser.c"
+#line 6484 "util/configparser.c"
     break;
 
-  case 603:
-#line 3198 "./util/configparser.y"
+  case 607: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG  */
+#line 3220 "./util/configparser.y"
         {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7145,31 +6492,31 @@ yyreduce:
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7149 "util/configparser.c"
+#line 6496 "util/configparser.c"
     break;
 
-  case 604:
-#line 3207 "./util/configparser.y"
+  case 608: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG  */
+#line 3229 "./util/configparser.y"
         {
                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 7159 "util/configparser.c"
+#line 6506 "util/configparser.c"
     break;
 
-  case 605:
-#line 3214 "./util/configparser.y"
+  case 609: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG  */
+#line 3236 "./util/configparser.y"
         {
                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 7169 "util/configparser.c"
+#line 6516 "util/configparser.c"
     break;
 
-  case 606:
-#line 3221 "./util/configparser.y"
+  case 610: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG  */
+#line 3243 "./util/configparser.y"
         {
                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)
@@ -7178,11 +6525,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7182 "util/configparser.c"
+#line 6529 "util/configparser.c"
     break;
 
-  case 607:
-#line 3231 "./util/configparser.y"
+  case 611: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG  */
+#line 3253 "./util/configparser.y"
         {
                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)
@@ -7191,11 +6538,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7195 "util/configparser.c"
+#line 6542 "util/configparser.c"
     break;
 
-  case 608:
-#line 3241 "./util/configparser.y"
+  case 612: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG  */
+#line 3263 "./util/configparser.y"
         {
                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)
@@ -7204,11 +6551,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7208 "util/configparser.c"
+#line 6555 "util/configparser.c"
     break;
 
-  case 609:
-#line 3251 "./util/configparser.y"
+  case 613: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG  */
+#line 3273 "./util/configparser.y"
         {
                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)
@@ -7217,11 +6564,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7221 "util/configparser.c"
+#line 6568 "util/configparser.c"
     break;
 
-  case 610:
-#line 3261 "./util/configparser.y"
+  case 614: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG  */
+#line 3283 "./util/configparser.y"
         {
                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)
@@ -7230,11 +6577,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7234 "util/configparser.c"
+#line 6581 "util/configparser.c"
     break;
 
-  case 611:
-#line 3271 "./util/configparser.y"
+  case 615: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG  */
+#line 3293 "./util/configparser.y"
         {
                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)
@@ -7243,47 +6590,47 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7247 "util/configparser.c"
+#line 6594 "util/configparser.c"
     break;
 
-  case 612:
-#line 3281 "./util/configparser.y"
+  case 616: /* pythonstart: VAR_PYTHON  */
+#line 3303 "./util/configparser.y"
         {
                OUTYY(("\nP(python:)\n"));
        }
-#line 7255 "util/configparser.c"
+#line 6602 "util/configparser.c"
     break;
 
-  case 616:
-#line 3290 "./util/configparser.y"
+  case 620: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG  */
+#line 3312 "./util/configparser.y"
         {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 7265 "util/configparser.c"
+#line 6612 "util/configparser.c"
     break;
 
-  case 617:
-#line 3296 "./util/configparser.y"
+  case 621: /* dynlibstart: VAR_DYNLIB  */
+#line 3318 "./util/configparser.y"
         { 
                OUTYY(("\nP(dynlib:)\n")); 
        }
-#line 7273 "util/configparser.c"
+#line 6620 "util/configparser.c"
     break;
 
-  case 621:
-#line 3305 "./util/configparser.y"
+  case 625: /* dl_file: VAR_DYNLIB_FILE STRING_ARG  */
+#line 3327 "./util/configparser.y"
         {
                OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 7283 "util/configparser.c"
+#line 6630 "util/configparser.c"
     break;
 
-  case 622:
-#line 3311 "./util/configparser.y"
+  case 626: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG  */
+#line 3333 "./util/configparser.y"
         {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7292,21 +6639,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7296 "util/configparser.c"
+#line 6643 "util/configparser.c"
     break;
 
-  case 623:
-#line 3321 "./util/configparser.y"
+  case 627: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG  */
+#line 3343 "./util/configparser.y"
         {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 7306 "util/configparser.c"
+#line 6653 "util/configparser.c"
     break;
 
-  case 624:
-#line 3328 "./util/configparser.y"
+  case 628: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG  */
+#line 3350 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -7314,30 +6661,30 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 7318 "util/configparser.c"
+#line 6665 "util/configparser.c"
     break;
 
-  case 625:
-#line 3337 "./util/configparser.y"
+  case 629: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG  */
+#line 3359 "./util/configparser.y"
         {
                OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 7329 "util/configparser.c"
+#line 6676 "util/configparser.c"
     break;
 
-  case 626:
-#line 3345 "./util/configparser.y"
+  case 630: /* dnscstart: VAR_DNSCRYPT  */
+#line 3367 "./util/configparser.y"
         {
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 7337 "util/configparser.c"
+#line 6684 "util/configparser.c"
     break;
 
-  case 639:
-#line 3361 "./util/configparser.y"
+  case 643: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG  */
+#line 3383 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -7345,11 +6692,11 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 7349 "util/configparser.c"
+#line 6696 "util/configparser.c"
     break;
 
-  case 640:
-#line 3371 "./util/configparser.y"
+  case 644: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG  */
+#line 3393 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -7357,21 +6704,21 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 7361 "util/configparser.c"
+#line 6708 "util/configparser.c"
     break;
 
-  case 641:
-#line 3380 "./util/configparser.y"
+  case 645: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG  */
+#line 3402 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnscrypt_provider);
                cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
        }
-#line 7371 "util/configparser.c"
+#line 6718 "util/configparser.c"
     break;
 
-  case 642:
-#line 3387 "./util/configparser.y"
+  case 646: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG  */
+#line 3409 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
@@ -7379,21 +6726,21 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert");
        }
-#line 7383 "util/configparser.c"
+#line 6730 "util/configparser.c"
     break;
 
-  case 643:
-#line 3396 "./util/configparser.y"
+  case 647: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG  */
+#line 3418 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-provider-cert-rotated");
        }
-#line 7393 "util/configparser.c"
+#line 6740 "util/configparser.c"
     break;
 
-  case 644:
-#line 3403 "./util/configparser.y"
+  case 648: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG  */
+#line 3425 "./util/configparser.y"
         {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
                if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
@@ -7401,22 +6748,22 @@ yyreduce:
                if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
                        fatal_exit("out of memory adding dnscrypt-secret-key");
        }
-#line 7405 "util/configparser.c"
+#line 6752 "util/configparser.c"
     break;
 
-  case 645:
-#line 3412 "./util/configparser.y"
+  case 649: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG  */
+#line 3434 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 7416 "util/configparser.c"
+#line 6763 "util/configparser.c"
     break;
 
-  case 646:
-#line 3420 "./util/configparser.y"
+  case 650: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG  */
+#line 3442 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0) {
@@ -7428,22 +6775,22 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 7432 "util/configparser.c"
+#line 6779 "util/configparser.c"
     break;
 
-  case 647:
-#line 3433 "./util/configparser.y"
+  case 651: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG  */
+#line 3455 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 7443 "util/configparser.c"
+#line 6790 "util/configparser.c"
     break;
 
-  case 648:
-#line 3441 "./util/configparser.y"
+  case 652: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG  */
+#line 3463 "./util/configparser.y"
   {
        OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0) {
@@ -7455,19 +6802,19 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 7459 "util/configparser.c"
+#line 6806 "util/configparser.c"
     break;
 
-  case 649:
-#line 3454 "./util/configparser.y"
+  case 653: /* cachedbstart: VAR_CACHEDB  */
+#line 3476 "./util/configparser.y"
         {
                OUTYY(("\nP(cachedb:)\n"));
        }
-#line 7467 "util/configparser.c"
+#line 6814 "util/configparser.c"
     break;
 
-  case 658:
-#line 3465 "./util/configparser.y"
+  case 662: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG  */
+#line 3487 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(backend:%s)\n", (yyvsp[0].str)));
@@ -7478,11 +6825,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 7482 "util/configparser.c"
+#line 6829 "util/configparser.c"
     break;
 
-  case 659:
-#line 3477 "./util/configparser.y"
+  case 663: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG  */
+#line 3499 "./util/configparser.y"
         {
        #ifdef USE_CACHEDB
                OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str)));
@@ -7493,11 +6840,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 7497 "util/configparser.c"
+#line 6844 "util/configparser.c"
     break;
 
-  case 660:
-#line 3489 "./util/configparser.y"
+  case 664: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG  */
+#line 3511 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str)));
@@ -7508,11 +6855,11 @@ yyreduce:
                free((yyvsp[0].str));
        #endif
        }
-#line 7512 "util/configparser.c"
+#line 6859 "util/configparser.c"
     break;
 
-  case 661:
-#line 3501 "./util/configparser.y"
+  case 665: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG  */
+#line 3523 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                int port;
@@ -7526,11 +6873,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 7530 "util/configparser.c"
+#line 6877 "util/configparser.c"
     break;
 
-  case 662:
-#line 3516 "./util/configparser.y"
+  case 666: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG  */
+#line 3538 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str)));
@@ -7542,11 +6889,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 7546 "util/configparser.c"
+#line 6893 "util/configparser.c"
     break;
 
-  case 663:
-#line 3529 "./util/configparser.y"
+  case 667: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG  */
+#line 3551 "./util/configparser.y"
         {
        #if defined(USE_CACHEDB) && defined(USE_REDIS)
                OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str)));
@@ -7558,11 +6905,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 7562 "util/configparser.c"
+#line 6909 "util/configparser.c"
     break;
 
-  case 664:
-#line 3542 "./util/configparser.y"
+  case 668: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG  */
+#line 3564 "./util/configparser.y"
         {
                OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if (atoi((yyvsp[0].str)) < 0)
@@ -7572,19 +6919,19 @@ yyreduce:
                                fatal_exit("out of memory adding tcp connection limit");
                }
        }
-#line 7576 "util/configparser.c"
+#line 6923 "util/configparser.c"
     break;
 
-  case 665:
-#line 3553 "./util/configparser.y"
+  case 669: /* ipsetstart: VAR_IPSET  */
+#line 3575 "./util/configparser.y"
                 {
                        OUTYY(("\nP(ipset:)\n"));
                }
-#line 7584 "util/configparser.c"
+#line 6931 "util/configparser.c"
     break;
 
-  case 670:
-#line 3562 "./util/configparser.y"
+  case 674: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG  */
+#line 3584 "./util/configparser.y"
                 {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str)));
@@ -7598,11 +6945,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 7602 "util/configparser.c"
+#line 6949 "util/configparser.c"
     break;
 
-  case 671:
-#line 3577 "./util/configparser.y"
+  case 675: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG  */
+#line 3599 "./util/configparser.y"
         {
                #ifdef USE_IPSET
                        OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str)));
@@ -7616,11 +6963,11 @@ yyreduce:
                        free((yyvsp[0].str));
                #endif
                }
-#line 7620 "util/configparser.c"
+#line 6967 "util/configparser.c"
     break;
 
 
-#line 7624 "util/configparser.c"
+#line 6971 "util/configparser.c"
 
       default: break;
     }
@@ -7780,13 +7127,13 @@ yyabortlab:
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  /* Fall through.  */
+  goto yyreturn;
 #endif
 
 
-/*-----------------------------------------------------.
-| yyreturn -- parsing is finished, return the result.  |
-`-----------------------------------------------------*/
+/*-------------------------------------------------------.
+| yyreturn -- parsing is finished, clean up and return.  |
+`-------------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -7814,7 +7161,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 3591 "./util/configparser.y"
+#line 3613 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index bac7d08f9aca8921bad72ccdecaed515c4e0703d..d919cf29cd43be4e970663fe9c6c8d2e88f9b8be 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.6.4.  */
+/* A Bison parser, made by GNU Bison 3.7.6.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -257,126 +257,129 @@ extern int yydebug;
     VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN  */
     VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR  */
     VAR_RATELIMIT_FACTOR = 460,    /* VAR_RATELIMIT_FACTOR  */
-    VAR_SEND_CLIENT_SUBNET = 461,  /* VAR_SEND_CLIENT_SUBNET  */
-    VAR_CLIENT_SUBNET_ZONE = 462,  /* VAR_CLIENT_SUBNET_ZONE  */
-    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 463, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
-    VAR_CLIENT_SUBNET_OPCODE = 464, /* VAR_CLIENT_SUBNET_OPCODE  */
-    VAR_MAX_CLIENT_SUBNET_IPV4 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
-    VAR_MAX_CLIENT_SUBNET_IPV6 = 466, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
-    VAR_MIN_CLIENT_SUBNET_IPV4 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
-    VAR_MIN_CLIENT_SUBNET_IPV6 = 468, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
-    VAR_MAX_ECS_TREE_SIZE_IPV4 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
-    VAR_MAX_ECS_TREE_SIZE_IPV6 = 470, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
-    VAR_CAPS_WHITELIST = 471,      /* VAR_CAPS_WHITELIST  */
-    VAR_CACHE_MAX_NEGATIVE_TTL = 472, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
-    VAR_PERMIT_SMALL_HOLDDOWN = 473, /* VAR_PERMIT_SMALL_HOLDDOWN  */
-    VAR_QNAME_MINIMISATION = 474,  /* VAR_QNAME_MINIMISATION  */
-    VAR_QNAME_MINIMISATION_STRICT = 475, /* VAR_QNAME_MINIMISATION_STRICT  */
-    VAR_IP_FREEBIND = 476,         /* VAR_IP_FREEBIND  */
-    VAR_DEFINE_TAG = 477,          /* VAR_DEFINE_TAG  */
-    VAR_LOCAL_ZONE_TAG = 478,      /* VAR_LOCAL_ZONE_TAG  */
-    VAR_ACCESS_CONTROL_TAG = 479,  /* VAR_ACCESS_CONTROL_TAG  */
-    VAR_LOCAL_ZONE_OVERRIDE = 480, /* VAR_LOCAL_ZONE_OVERRIDE  */
-    VAR_ACCESS_CONTROL_TAG_ACTION = 481, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
-    VAR_ACCESS_CONTROL_TAG_DATA = 482, /* VAR_ACCESS_CONTROL_TAG_DATA  */
-    VAR_VIEW = 483,                /* VAR_VIEW  */
-    VAR_ACCESS_CONTROL_VIEW = 484, /* VAR_ACCESS_CONTROL_VIEW  */
-    VAR_VIEW_FIRST = 485,          /* VAR_VIEW_FIRST  */
-    VAR_SERVE_EXPIRED = 486,       /* VAR_SERVE_EXPIRED  */
-    VAR_SERVE_EXPIRED_TTL = 487,   /* VAR_SERVE_EXPIRED_TTL  */
-    VAR_SERVE_EXPIRED_TTL_RESET = 488, /* VAR_SERVE_EXPIRED_TTL_RESET  */
-    VAR_SERVE_EXPIRED_REPLY_TTL = 489, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
-    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 490, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
-    VAR_SERVE_ORIGINAL_TTL = 491,  /* VAR_SERVE_ORIGINAL_TTL  */
-    VAR_FAKE_DSA = 492,            /* VAR_FAKE_DSA  */
-    VAR_FAKE_SHA1 = 493,           /* VAR_FAKE_SHA1  */
-    VAR_LOG_IDENTITY = 494,        /* VAR_LOG_IDENTITY  */
-    VAR_HIDE_TRUSTANCHOR = 495,    /* VAR_HIDE_TRUSTANCHOR  */
-    VAR_HIDE_HTTP_USER_AGENT = 496, /* VAR_HIDE_HTTP_USER_AGENT  */
-    VAR_HTTP_USER_AGENT = 497,     /* VAR_HTTP_USER_AGENT  */
-    VAR_TRUST_ANCHOR_SIGNALING = 498, /* VAR_TRUST_ANCHOR_SIGNALING  */
-    VAR_AGGRESSIVE_NSEC = 499,     /* VAR_AGGRESSIVE_NSEC  */
-    VAR_USE_SYSTEMD = 500,         /* VAR_USE_SYSTEMD  */
-    VAR_SHM_ENABLE = 501,          /* VAR_SHM_ENABLE  */
-    VAR_SHM_KEY = 502,             /* VAR_SHM_KEY  */
-    VAR_ROOT_KEY_SENTINEL = 503,   /* VAR_ROOT_KEY_SENTINEL  */
-    VAR_DNSCRYPT = 504,            /* VAR_DNSCRYPT  */
-    VAR_DNSCRYPT_ENABLE = 505,     /* VAR_DNSCRYPT_ENABLE  */
-    VAR_DNSCRYPT_PORT = 506,       /* VAR_DNSCRYPT_PORT  */
-    VAR_DNSCRYPT_PROVIDER = 507,   /* VAR_DNSCRYPT_PROVIDER  */
-    VAR_DNSCRYPT_SECRET_KEY = 508, /* VAR_DNSCRYPT_SECRET_KEY  */
-    VAR_DNSCRYPT_PROVIDER_CERT = 509, /* VAR_DNSCRYPT_PROVIDER_CERT  */
-    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 510, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
-    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 512, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
-    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
-    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 514, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
-    VAR_PAD_RESPONSES = 515,       /* VAR_PAD_RESPONSES  */
-    VAR_PAD_RESPONSES_BLOCK_SIZE = 516, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
-    VAR_PAD_QUERIES = 517,         /* VAR_PAD_QUERIES  */
-    VAR_PAD_QUERIES_BLOCK_SIZE = 518, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
-    VAR_IPSECMOD_ENABLED = 519,    /* VAR_IPSECMOD_ENABLED  */
-    VAR_IPSECMOD_HOOK = 520,       /* VAR_IPSECMOD_HOOK  */
-    VAR_IPSECMOD_IGNORE_BOGUS = 521, /* VAR_IPSECMOD_IGNORE_BOGUS  */
-    VAR_IPSECMOD_MAX_TTL = 522,    /* VAR_IPSECMOD_MAX_TTL  */
-    VAR_IPSECMOD_WHITELIST = 523,  /* VAR_IPSECMOD_WHITELIST  */
-    VAR_IPSECMOD_STRICT = 524,     /* VAR_IPSECMOD_STRICT  */
-    VAR_CACHEDB = 525,             /* VAR_CACHEDB  */
-    VAR_CACHEDB_BACKEND = 526,     /* VAR_CACHEDB_BACKEND  */
-    VAR_CACHEDB_SECRETSEED = 527,  /* VAR_CACHEDB_SECRETSEED  */
-    VAR_CACHEDB_REDISHOST = 528,   /* VAR_CACHEDB_REDISHOST  */
-    VAR_CACHEDB_REDISPORT = 529,   /* VAR_CACHEDB_REDISPORT  */
-    VAR_CACHEDB_REDISTIMEOUT = 530, /* VAR_CACHEDB_REDISTIMEOUT  */
-    VAR_CACHEDB_REDISEXPIRERECORDS = 531, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
-    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 532, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
-    VAR_FOR_UPSTREAM = 533,        /* VAR_FOR_UPSTREAM  */
-    VAR_AUTH_ZONE = 534,           /* VAR_AUTH_ZONE  */
-    VAR_ZONEFILE = 535,            /* VAR_ZONEFILE  */
-    VAR_MASTER = 536,              /* VAR_MASTER  */
-    VAR_URL = 537,                 /* VAR_URL  */
-    VAR_FOR_DOWNSTREAM = 538,      /* VAR_FOR_DOWNSTREAM  */
-    VAR_FALLBACK_ENABLED = 539,    /* VAR_FALLBACK_ENABLED  */
-    VAR_TLS_ADDITIONAL_PORT = 540, /* VAR_TLS_ADDITIONAL_PORT  */
-    VAR_LOW_RTT = 541,             /* VAR_LOW_RTT  */
-    VAR_LOW_RTT_PERMIL = 542,      /* VAR_LOW_RTT_PERMIL  */
-    VAR_FAST_SERVER_PERMIL = 543,  /* VAR_FAST_SERVER_PERMIL  */
-    VAR_FAST_SERVER_NUM = 544,     /* VAR_FAST_SERVER_NUM  */
-    VAR_ALLOW_NOTIFY = 545,        /* VAR_ALLOW_NOTIFY  */
-    VAR_TLS_WIN_CERT = 546,        /* VAR_TLS_WIN_CERT  */
-    VAR_TCP_CONNECTION_LIMIT = 547, /* VAR_TCP_CONNECTION_LIMIT  */
-    VAR_FORWARD_NO_CACHE = 548,    /* VAR_FORWARD_NO_CACHE  */
-    VAR_STUB_NO_CACHE = 549,       /* VAR_STUB_NO_CACHE  */
-    VAR_LOG_SERVFAIL = 550,        /* VAR_LOG_SERVFAIL  */
-    VAR_DENY_ANY = 551,            /* VAR_DENY_ANY  */
-    VAR_UNKNOWN_SERVER_TIME_LIMIT = 552, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
-    VAR_LOG_TAG_QUERYREPLY = 553,  /* VAR_LOG_TAG_QUERYREPLY  */
-    VAR_STREAM_WAIT_SIZE = 554,    /* VAR_STREAM_WAIT_SIZE  */
-    VAR_TLS_CIPHERS = 555,         /* VAR_TLS_CIPHERS  */
-    VAR_TLS_CIPHERSUITES = 556,    /* VAR_TLS_CIPHERSUITES  */
-    VAR_TLS_USE_SNI = 557,         /* VAR_TLS_USE_SNI  */
-    VAR_IPSET = 558,               /* VAR_IPSET  */
-    VAR_IPSET_NAME_V4 = 559,       /* VAR_IPSET_NAME_V4  */
-    VAR_IPSET_NAME_V6 = 560,       /* VAR_IPSET_NAME_V6  */
-    VAR_TLS_SESSION_TICKET_KEYS = 561, /* VAR_TLS_SESSION_TICKET_KEYS  */
-    VAR_RPZ = 562,                 /* VAR_RPZ  */
-    VAR_TAGS = 563,                /* VAR_TAGS  */
-    VAR_RPZ_ACTION_OVERRIDE = 564, /* VAR_RPZ_ACTION_OVERRIDE  */
-    VAR_RPZ_CNAME_OVERRIDE = 565,  /* VAR_RPZ_CNAME_OVERRIDE  */
-    VAR_RPZ_LOG = 566,             /* VAR_RPZ_LOG  */
-    VAR_RPZ_LOG_NAME = 567,        /* VAR_RPZ_LOG_NAME  */
-    VAR_DYNLIB = 568,              /* VAR_DYNLIB  */
-    VAR_DYNLIB_FILE = 569,         /* VAR_DYNLIB_FILE  */
-    VAR_EDNS_CLIENT_STRING = 570,  /* VAR_EDNS_CLIENT_STRING  */
-    VAR_EDNS_CLIENT_STRING_OPCODE = 571, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
-    VAR_NSID = 572,                /* VAR_NSID  */
-    VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE  */
-    VAR_ZONEMD_CHECK = 574,        /* VAR_ZONEMD_CHECK  */
-    VAR_ZONEMD_REJECT_ABSENCE = 575, /* VAR_ZONEMD_REJECT_ABSENCE  */
-    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 576 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
+    VAR_IP_RATELIMIT_BACKOFF = 461, /* VAR_IP_RATELIMIT_BACKOFF  */
+    VAR_RATELIMIT_BACKOFF = 462,   /* VAR_RATELIMIT_BACKOFF  */
+    VAR_SEND_CLIENT_SUBNET = 463,  /* VAR_SEND_CLIENT_SUBNET  */
+    VAR_CLIENT_SUBNET_ZONE = 464,  /* VAR_CLIENT_SUBNET_ZONE  */
+    VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD  */
+    VAR_CLIENT_SUBNET_OPCODE = 466, /* VAR_CLIENT_SUBNET_OPCODE  */
+    VAR_MAX_CLIENT_SUBNET_IPV4 = 467, /* VAR_MAX_CLIENT_SUBNET_IPV4  */
+    VAR_MAX_CLIENT_SUBNET_IPV6 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV6  */
+    VAR_MIN_CLIENT_SUBNET_IPV4 = 469, /* VAR_MIN_CLIENT_SUBNET_IPV4  */
+    VAR_MIN_CLIENT_SUBNET_IPV6 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV6  */
+    VAR_MAX_ECS_TREE_SIZE_IPV4 = 471, /* VAR_MAX_ECS_TREE_SIZE_IPV4  */
+    VAR_MAX_ECS_TREE_SIZE_IPV6 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV6  */
+    VAR_CAPS_WHITELIST = 473,      /* VAR_CAPS_WHITELIST  */
+    VAR_CACHE_MAX_NEGATIVE_TTL = 474, /* VAR_CACHE_MAX_NEGATIVE_TTL  */
+    VAR_PERMIT_SMALL_HOLDDOWN = 475, /* VAR_PERMIT_SMALL_HOLDDOWN  */
+    VAR_QNAME_MINIMISATION = 476,  /* VAR_QNAME_MINIMISATION  */
+    VAR_QNAME_MINIMISATION_STRICT = 477, /* VAR_QNAME_MINIMISATION_STRICT  */
+    VAR_IP_FREEBIND = 478,         /* VAR_IP_FREEBIND  */
+    VAR_DEFINE_TAG = 479,          /* VAR_DEFINE_TAG  */
+    VAR_LOCAL_ZONE_TAG = 480,      /* VAR_LOCAL_ZONE_TAG  */
+    VAR_ACCESS_CONTROL_TAG = 481,  /* VAR_ACCESS_CONTROL_TAG  */
+    VAR_LOCAL_ZONE_OVERRIDE = 482, /* VAR_LOCAL_ZONE_OVERRIDE  */
+    VAR_ACCESS_CONTROL_TAG_ACTION = 483, /* VAR_ACCESS_CONTROL_TAG_ACTION  */
+    VAR_ACCESS_CONTROL_TAG_DATA = 484, /* VAR_ACCESS_CONTROL_TAG_DATA  */
+    VAR_VIEW = 485,                /* VAR_VIEW  */
+    VAR_ACCESS_CONTROL_VIEW = 486, /* VAR_ACCESS_CONTROL_VIEW  */
+    VAR_VIEW_FIRST = 487,          /* VAR_VIEW_FIRST  */
+    VAR_SERVE_EXPIRED = 488,       /* VAR_SERVE_EXPIRED  */
+    VAR_SERVE_EXPIRED_TTL = 489,   /* VAR_SERVE_EXPIRED_TTL  */
+    VAR_SERVE_EXPIRED_TTL_RESET = 490, /* VAR_SERVE_EXPIRED_TTL_RESET  */
+    VAR_SERVE_EXPIRED_REPLY_TTL = 491, /* VAR_SERVE_EXPIRED_REPLY_TTL  */
+    VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT  */
+    VAR_SERVE_ORIGINAL_TTL = 493,  /* VAR_SERVE_ORIGINAL_TTL  */
+    VAR_FAKE_DSA = 494,            /* VAR_FAKE_DSA  */
+    VAR_FAKE_SHA1 = 495,           /* VAR_FAKE_SHA1  */
+    VAR_LOG_IDENTITY = 496,        /* VAR_LOG_IDENTITY  */
+    VAR_HIDE_TRUSTANCHOR = 497,    /* VAR_HIDE_TRUSTANCHOR  */
+    VAR_HIDE_HTTP_USER_AGENT = 498, /* VAR_HIDE_HTTP_USER_AGENT  */
+    VAR_HTTP_USER_AGENT = 499,     /* VAR_HTTP_USER_AGENT  */
+    VAR_TRUST_ANCHOR_SIGNALING = 500, /* VAR_TRUST_ANCHOR_SIGNALING  */
+    VAR_AGGRESSIVE_NSEC = 501,     /* VAR_AGGRESSIVE_NSEC  */
+    VAR_USE_SYSTEMD = 502,         /* VAR_USE_SYSTEMD  */
+    VAR_SHM_ENABLE = 503,          /* VAR_SHM_ENABLE  */
+    VAR_SHM_KEY = 504,             /* VAR_SHM_KEY  */
+    VAR_ROOT_KEY_SENTINEL = 505,   /* VAR_ROOT_KEY_SENTINEL  */
+    VAR_DNSCRYPT = 506,            /* VAR_DNSCRYPT  */
+    VAR_DNSCRYPT_ENABLE = 507,     /* VAR_DNSCRYPT_ENABLE  */
+    VAR_DNSCRYPT_PORT = 508,       /* VAR_DNSCRYPT_PORT  */
+    VAR_DNSCRYPT_PROVIDER = 509,   /* VAR_DNSCRYPT_PROVIDER  */
+    VAR_DNSCRYPT_SECRET_KEY = 510, /* VAR_DNSCRYPT_SECRET_KEY  */
+    VAR_DNSCRYPT_PROVIDER_CERT = 511, /* VAR_DNSCRYPT_PROVIDER_CERT  */
+    VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 512, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED  */
+    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 513, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE  */
+    VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 514, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS  */
+    VAR_DNSCRYPT_NONCE_CACHE_SIZE = 515, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE  */
+    VAR_DNSCRYPT_NONCE_CACHE_SLABS = 516, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS  */
+    VAR_PAD_RESPONSES = 517,       /* VAR_PAD_RESPONSES  */
+    VAR_PAD_RESPONSES_BLOCK_SIZE = 518, /* VAR_PAD_RESPONSES_BLOCK_SIZE  */
+    VAR_PAD_QUERIES = 519,         /* VAR_PAD_QUERIES  */
+    VAR_PAD_QUERIES_BLOCK_SIZE = 520, /* VAR_PAD_QUERIES_BLOCK_SIZE  */
+    VAR_IPSECMOD_ENABLED = 521,    /* VAR_IPSECMOD_ENABLED  */
+    VAR_IPSECMOD_HOOK = 522,       /* VAR_IPSECMOD_HOOK  */
+    VAR_IPSECMOD_IGNORE_BOGUS = 523, /* VAR_IPSECMOD_IGNORE_BOGUS  */
+    VAR_IPSECMOD_MAX_TTL = 524,    /* VAR_IPSECMOD_MAX_TTL  */
+    VAR_IPSECMOD_WHITELIST = 525,  /* VAR_IPSECMOD_WHITELIST  */
+    VAR_IPSECMOD_STRICT = 526,     /* VAR_IPSECMOD_STRICT  */
+    VAR_CACHEDB = 527,             /* VAR_CACHEDB  */
+    VAR_CACHEDB_BACKEND = 528,     /* VAR_CACHEDB_BACKEND  */
+    VAR_CACHEDB_SECRETSEED = 529,  /* VAR_CACHEDB_SECRETSEED  */
+    VAR_CACHEDB_REDISHOST = 530,   /* VAR_CACHEDB_REDISHOST  */
+    VAR_CACHEDB_REDISPORT = 531,   /* VAR_CACHEDB_REDISPORT  */
+    VAR_CACHEDB_REDISTIMEOUT = 532, /* VAR_CACHEDB_REDISTIMEOUT  */
+    VAR_CACHEDB_REDISEXPIRERECORDS = 533, /* VAR_CACHEDB_REDISEXPIRERECORDS  */
+    VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 534, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM  */
+    VAR_FOR_UPSTREAM = 535,        /* VAR_FOR_UPSTREAM  */
+    VAR_AUTH_ZONE = 536,           /* VAR_AUTH_ZONE  */
+    VAR_ZONEFILE = 537,            /* VAR_ZONEFILE  */
+    VAR_MASTER = 538,              /* VAR_MASTER  */
+    VAR_URL = 539,                 /* VAR_URL  */
+    VAR_FOR_DOWNSTREAM = 540,      /* VAR_FOR_DOWNSTREAM  */
+    VAR_FALLBACK_ENABLED = 541,    /* VAR_FALLBACK_ENABLED  */
+    VAR_TLS_ADDITIONAL_PORT = 542, /* VAR_TLS_ADDITIONAL_PORT  */
+    VAR_LOW_RTT = 543,             /* VAR_LOW_RTT  */
+    VAR_LOW_RTT_PERMIL = 544,      /* VAR_LOW_RTT_PERMIL  */
+    VAR_FAST_SERVER_PERMIL = 545,  /* VAR_FAST_SERVER_PERMIL  */
+    VAR_FAST_SERVER_NUM = 546,     /* VAR_FAST_SERVER_NUM  */
+    VAR_ALLOW_NOTIFY = 547,        /* VAR_ALLOW_NOTIFY  */
+    VAR_TLS_WIN_CERT = 548,        /* VAR_TLS_WIN_CERT  */
+    VAR_TCP_CONNECTION_LIMIT = 549, /* VAR_TCP_CONNECTION_LIMIT  */
+    VAR_FORWARD_NO_CACHE = 550,    /* VAR_FORWARD_NO_CACHE  */
+    VAR_STUB_NO_CACHE = 551,       /* VAR_STUB_NO_CACHE  */
+    VAR_LOG_SERVFAIL = 552,        /* VAR_LOG_SERVFAIL  */
+    VAR_DENY_ANY = 553,            /* VAR_DENY_ANY  */
+    VAR_UNKNOWN_SERVER_TIME_LIMIT = 554, /* VAR_UNKNOWN_SERVER_TIME_LIMIT  */
+    VAR_LOG_TAG_QUERYREPLY = 555,  /* VAR_LOG_TAG_QUERYREPLY  */
+    VAR_STREAM_WAIT_SIZE = 556,    /* VAR_STREAM_WAIT_SIZE  */
+    VAR_TLS_CIPHERS = 557,         /* VAR_TLS_CIPHERS  */
+    VAR_TLS_CIPHERSUITES = 558,    /* VAR_TLS_CIPHERSUITES  */
+    VAR_TLS_USE_SNI = 559,         /* VAR_TLS_USE_SNI  */
+    VAR_IPSET = 560,               /* VAR_IPSET  */
+    VAR_IPSET_NAME_V4 = 561,       /* VAR_IPSET_NAME_V4  */
+    VAR_IPSET_NAME_V6 = 562,       /* VAR_IPSET_NAME_V6  */
+    VAR_TLS_SESSION_TICKET_KEYS = 563, /* VAR_TLS_SESSION_TICKET_KEYS  */
+    VAR_RPZ = 564,                 /* VAR_RPZ  */
+    VAR_TAGS = 565,                /* VAR_TAGS  */
+    VAR_RPZ_ACTION_OVERRIDE = 566, /* VAR_RPZ_ACTION_OVERRIDE  */
+    VAR_RPZ_CNAME_OVERRIDE = 567,  /* VAR_RPZ_CNAME_OVERRIDE  */
+    VAR_RPZ_LOG = 568,             /* VAR_RPZ_LOG  */
+    VAR_RPZ_LOG_NAME = 569,        /* VAR_RPZ_LOG_NAME  */
+    VAR_DYNLIB = 570,              /* VAR_DYNLIB  */
+    VAR_DYNLIB_FILE = 571,         /* VAR_DYNLIB_FILE  */
+    VAR_EDNS_CLIENT_STRING = 572,  /* VAR_EDNS_CLIENT_STRING  */
+    VAR_EDNS_CLIENT_STRING_OPCODE = 573, /* VAR_EDNS_CLIENT_STRING_OPCODE  */
+    VAR_NSID = 574,                /* VAR_NSID  */
+    VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE  */
+    VAR_ZONEMD_CHECK = 576,        /* VAR_ZONEMD_CHECK  */
+    VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE  */
+    VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
 /* Token kinds.  */
+#define YYEMPTY -2
 #define YYEOF 0
 #define YYerror 256
 #define YYUNDEF 257
@@ -583,122 +586,124 @@ extern int yydebug;
 #define VAR_RATELIMIT_BELOW_DOMAIN 458
 #define VAR_IP_RATELIMIT_FACTOR 459
 #define VAR_RATELIMIT_FACTOR 460
-#define VAR_SEND_CLIENT_SUBNET 461
-#define VAR_CLIENT_SUBNET_ZONE 462
-#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 463
-#define VAR_CLIENT_SUBNET_OPCODE 464
-#define VAR_MAX_CLIENT_SUBNET_IPV4 465
-#define VAR_MAX_CLIENT_SUBNET_IPV6 466
-#define VAR_MIN_CLIENT_SUBNET_IPV4 467
-#define VAR_MIN_CLIENT_SUBNET_IPV6 468
-#define VAR_MAX_ECS_TREE_SIZE_IPV4 469
-#define VAR_MAX_ECS_TREE_SIZE_IPV6 470
-#define VAR_CAPS_WHITELIST 471
-#define VAR_CACHE_MAX_NEGATIVE_TTL 472
-#define VAR_PERMIT_SMALL_HOLDDOWN 473
-#define VAR_QNAME_MINIMISATION 474
-#define VAR_QNAME_MINIMISATION_STRICT 475
-#define VAR_IP_FREEBIND 476
-#define VAR_DEFINE_TAG 477
-#define VAR_LOCAL_ZONE_TAG 478
-#define VAR_ACCESS_CONTROL_TAG 479
-#define VAR_LOCAL_ZONE_OVERRIDE 480
-#define VAR_ACCESS_CONTROL_TAG_ACTION 481
-#define VAR_ACCESS_CONTROL_TAG_DATA 482
-#define VAR_VIEW 483
-#define VAR_ACCESS_CONTROL_VIEW 484
-#define VAR_VIEW_FIRST 485
-#define VAR_SERVE_EXPIRED 486
-#define VAR_SERVE_EXPIRED_TTL 487
-#define VAR_SERVE_EXPIRED_TTL_RESET 488
-#define VAR_SERVE_EXPIRED_REPLY_TTL 489
-#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 490
-#define VAR_SERVE_ORIGINAL_TTL 491
-#define VAR_FAKE_DSA 492
-#define VAR_FAKE_SHA1 493
-#define VAR_LOG_IDENTITY 494
-#define VAR_HIDE_TRUSTANCHOR 495
-#define VAR_HIDE_HTTP_USER_AGENT 496
-#define VAR_HTTP_USER_AGENT 497
-#define VAR_TRUST_ANCHOR_SIGNALING 498
-#define VAR_AGGRESSIVE_NSEC 499
-#define VAR_USE_SYSTEMD 500
-#define VAR_SHM_ENABLE 501
-#define VAR_SHM_KEY 502
-#define VAR_ROOT_KEY_SENTINEL 503
-#define VAR_DNSCRYPT 504
-#define VAR_DNSCRYPT_ENABLE 505
-#define VAR_DNSCRYPT_PORT 506
-#define VAR_DNSCRYPT_PROVIDER 507
-#define VAR_DNSCRYPT_SECRET_KEY 508
-#define VAR_DNSCRYPT_PROVIDER_CERT 509
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 510
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 511
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 512
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 513
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 514
-#define VAR_PAD_RESPONSES 515
-#define VAR_PAD_RESPONSES_BLOCK_SIZE 516
-#define VAR_PAD_QUERIES 517
-#define VAR_PAD_QUERIES_BLOCK_SIZE 518
-#define VAR_IPSECMOD_ENABLED 519
-#define VAR_IPSECMOD_HOOK 520
-#define VAR_IPSECMOD_IGNORE_BOGUS 521
-#define VAR_IPSECMOD_MAX_TTL 522
-#define VAR_IPSECMOD_WHITELIST 523
-#define VAR_IPSECMOD_STRICT 524
-#define VAR_CACHEDB 525
-#define VAR_CACHEDB_BACKEND 526
-#define VAR_CACHEDB_SECRETSEED 527
-#define VAR_CACHEDB_REDISHOST 528
-#define VAR_CACHEDB_REDISPORT 529
-#define VAR_CACHEDB_REDISTIMEOUT 530
-#define VAR_CACHEDB_REDISEXPIRERECORDS 531
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 532
-#define VAR_FOR_UPSTREAM 533
-#define VAR_AUTH_ZONE 534
-#define VAR_ZONEFILE 535
-#define VAR_MASTER 536
-#define VAR_URL 537
-#define VAR_FOR_DOWNSTREAM 538
-#define VAR_FALLBACK_ENABLED 539
-#define VAR_TLS_ADDITIONAL_PORT 540
-#define VAR_LOW_RTT 541
-#define VAR_LOW_RTT_PERMIL 542
-#define VAR_FAST_SERVER_PERMIL 543
-#define VAR_FAST_SERVER_NUM 544
-#define VAR_ALLOW_NOTIFY 545
-#define VAR_TLS_WIN_CERT 546
-#define VAR_TCP_CONNECTION_LIMIT 547
-#define VAR_FORWARD_NO_CACHE 548
-#define VAR_STUB_NO_CACHE 549
-#define VAR_LOG_SERVFAIL 550
-#define VAR_DENY_ANY 551
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 552
-#define VAR_LOG_TAG_QUERYREPLY 553
-#define VAR_STREAM_WAIT_SIZE 554
-#define VAR_TLS_CIPHERS 555
-#define VAR_TLS_CIPHERSUITES 556
-#define VAR_TLS_USE_SNI 557
-#define VAR_IPSET 558
-#define VAR_IPSET_NAME_V4 559
-#define VAR_IPSET_NAME_V6 560
-#define VAR_TLS_SESSION_TICKET_KEYS 561
-#define VAR_RPZ 562
-#define VAR_TAGS 563
-#define VAR_RPZ_ACTION_OVERRIDE 564
-#define VAR_RPZ_CNAME_OVERRIDE 565
-#define VAR_RPZ_LOG 566
-#define VAR_RPZ_LOG_NAME 567
-#define VAR_DYNLIB 568
-#define VAR_DYNLIB_FILE 569
-#define VAR_EDNS_CLIENT_STRING 570
-#define VAR_EDNS_CLIENT_STRING_OPCODE 571
-#define VAR_NSID 572
-#define VAR_ZONEMD_PERMISSIVE_MODE 573
-#define VAR_ZONEMD_CHECK 574
-#define VAR_ZONEMD_REJECT_ABSENCE 575
-#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 576
+#define VAR_IP_RATELIMIT_BACKOFF 461
+#define VAR_RATELIMIT_BACKOFF 462
+#define VAR_SEND_CLIENT_SUBNET 463
+#define VAR_CLIENT_SUBNET_ZONE 464
+#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 465
+#define VAR_CLIENT_SUBNET_OPCODE 466
+#define VAR_MAX_CLIENT_SUBNET_IPV4 467
+#define VAR_MAX_CLIENT_SUBNET_IPV6 468
+#define VAR_MIN_CLIENT_SUBNET_IPV4 469
+#define VAR_MIN_CLIENT_SUBNET_IPV6 470
+#define VAR_MAX_ECS_TREE_SIZE_IPV4 471
+#define VAR_MAX_ECS_TREE_SIZE_IPV6 472
+#define VAR_CAPS_WHITELIST 473
+#define VAR_CACHE_MAX_NEGATIVE_TTL 474
+#define VAR_PERMIT_SMALL_HOLDDOWN 475
+#define VAR_QNAME_MINIMISATION 476
+#define VAR_QNAME_MINIMISATION_STRICT 477
+#define VAR_IP_FREEBIND 478
+#define VAR_DEFINE_TAG 479
+#define VAR_LOCAL_ZONE_TAG 480
+#define VAR_ACCESS_CONTROL_TAG 481
+#define VAR_LOCAL_ZONE_OVERRIDE 482
+#define VAR_ACCESS_CONTROL_TAG_ACTION 483
+#define VAR_ACCESS_CONTROL_TAG_DATA 484
+#define VAR_VIEW 485
+#define VAR_ACCESS_CONTROL_VIEW 486
+#define VAR_VIEW_FIRST 487
+#define VAR_SERVE_EXPIRED 488
+#define VAR_SERVE_EXPIRED_TTL 489
+#define VAR_SERVE_EXPIRED_TTL_RESET 490
+#define VAR_SERVE_EXPIRED_REPLY_TTL 491
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492
+#define VAR_SERVE_ORIGINAL_TTL 493
+#define VAR_FAKE_DSA 494
+#define VAR_FAKE_SHA1 495
+#define VAR_LOG_IDENTITY 496
+#define VAR_HIDE_TRUSTANCHOR 497
+#define VAR_HIDE_HTTP_USER_AGENT 498
+#define VAR_HTTP_USER_AGENT 499
+#define VAR_TRUST_ANCHOR_SIGNALING 500
+#define VAR_AGGRESSIVE_NSEC 501
+#define VAR_USE_SYSTEMD 502
+#define VAR_SHM_ENABLE 503
+#define VAR_SHM_KEY 504
+#define VAR_ROOT_KEY_SENTINEL 505
+#define VAR_DNSCRYPT 506
+#define VAR_DNSCRYPT_ENABLE 507
+#define VAR_DNSCRYPT_PORT 508
+#define VAR_DNSCRYPT_PROVIDER 509
+#define VAR_DNSCRYPT_SECRET_KEY 510
+#define VAR_DNSCRYPT_PROVIDER_CERT 511
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 512
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 513
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 514
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 515
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 516
+#define VAR_PAD_RESPONSES 517
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 518
+#define VAR_PAD_QUERIES 519
+#define VAR_PAD_QUERIES_BLOCK_SIZE 520
+#define VAR_IPSECMOD_ENABLED 521
+#define VAR_IPSECMOD_HOOK 522
+#define VAR_IPSECMOD_IGNORE_BOGUS 523
+#define VAR_IPSECMOD_MAX_TTL 524
+#define VAR_IPSECMOD_WHITELIST 525
+#define VAR_IPSECMOD_STRICT 526
+#define VAR_CACHEDB 527
+#define VAR_CACHEDB_BACKEND 528
+#define VAR_CACHEDB_SECRETSEED 529
+#define VAR_CACHEDB_REDISHOST 530
+#define VAR_CACHEDB_REDISPORT 531
+#define VAR_CACHEDB_REDISTIMEOUT 532
+#define VAR_CACHEDB_REDISEXPIRERECORDS 533
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 534
+#define VAR_FOR_UPSTREAM 535
+#define VAR_AUTH_ZONE 536
+#define VAR_ZONEFILE 537
+#define VAR_MASTER 538
+#define VAR_URL 539
+#define VAR_FOR_DOWNSTREAM 540
+#define VAR_FALLBACK_ENABLED 541
+#define VAR_TLS_ADDITIONAL_PORT 542
+#define VAR_LOW_RTT 543
+#define VAR_LOW_RTT_PERMIL 544
+#define VAR_FAST_SERVER_PERMIL 545
+#define VAR_FAST_SERVER_NUM 546
+#define VAR_ALLOW_NOTIFY 547
+#define VAR_TLS_WIN_CERT 548
+#define VAR_TCP_CONNECTION_LIMIT 549
+#define VAR_FORWARD_NO_CACHE 550
+#define VAR_STUB_NO_CACHE 551
+#define VAR_LOG_SERVFAIL 552
+#define VAR_DENY_ANY 553
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 554
+#define VAR_LOG_TAG_QUERYREPLY 555
+#define VAR_STREAM_WAIT_SIZE 556
+#define VAR_TLS_CIPHERS 557
+#define VAR_TLS_CIPHERSUITES 558
+#define VAR_TLS_USE_SNI 559
+#define VAR_IPSET 560
+#define VAR_IPSET_NAME_V4 561
+#define VAR_IPSET_NAME_V6 562
+#define VAR_TLS_SESSION_TICKET_KEYS 563
+#define VAR_RPZ 564
+#define VAR_TAGS 565
+#define VAR_RPZ_ACTION_OVERRIDE 566
+#define VAR_RPZ_CNAME_OVERRIDE 567
+#define VAR_RPZ_LOG 568
+#define VAR_RPZ_LOG_NAME 569
+#define VAR_DYNLIB 570
+#define VAR_DYNLIB_FILE 571
+#define VAR_EDNS_CLIENT_STRING 572
+#define VAR_EDNS_CLIENT_STRING_OPCODE 573
+#define VAR_NSID 574
+#define VAR_ZONEMD_PERMISSIVE_MODE 575
+#define VAR_ZONEMD_CHECK 576
+#define VAR_ZONEMD_REJECT_ABSENCE 577
+#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -708,7 +713,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 712 "util/configparser.h"
+#line 717 "util/configparser.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
index 9ebd59aa9655132b19a40d6cfdfb1cf817d93b82..d4f965f94465ae5f0cb243fa2e3bdabbfca587cc 100644 (file)
@@ -142,6 +142,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_OUTBOUND_MSG_RETRY
 %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN
 %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR
+%token VAR_IP_RATELIMIT_BACKOFF VAR_RATELIMIT_BACKOFF
 %token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE
 %token VAR_CLIENT_SUBNET_ALWAYS_FORWARD VAR_CLIENT_SUBNET_OPCODE
 %token VAR_MAX_CLIENT_SUBNET_IPV4 VAR_MAX_CLIENT_SUBNET_IPV6
@@ -272,7 +273,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_ip_ratelimit_size | server_ratelimit_size |
        server_ratelimit_for_domain |
        server_ratelimit_below_domain | server_ratelimit_factor |
-       server_ip_ratelimit_factor | server_outbound_msg_retry |
+       server_ip_ratelimit_factor | server_ratelimit_backoff |
+       server_ip_ratelimit_backoff | server_outbound_msg_retry |
        server_send_client_subnet | server_client_subnet_zone |
        server_client_subnet_always_forward | server_client_subnet_opcode |
        server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 |
@@ -2504,6 +2506,26 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG
                free($2);
        }
        ;
+server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG
+       {
+               OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ip_ratelimit_backoff =
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
+server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG
+       {
+               OUTYY(("P(server_ratelimit_backoff:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ratelimit_backoff =
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG
        {
                OUTYY(("P(server_outbound_msg_retry:%s)\n", $2));