]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- caps-whitelist in unbound.conf allows whitelist of loadbalancers
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 1 May 2015 12:36:16 +0000 (12:36 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 1 May 2015 12:36:16 +0000 (12:36 +0000)
  that cannot work with caps-for-id or its fallback.

git-svn-id: file:///svn/unbound/trunk@3420 be551aaa-1e26-0410-a405-d3ace91eadb9

16 files changed:
Makefile.in
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
iterator/iter_utils.c
iterator/iterator.c
iterator/iterator.h
services/outside_network.c
testdata/fwd_capsid_white.tpkg [new file with mode: 0644]
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index e03f89e464f6750f180073fcbb57abb17ed06e33..40cf9a57d20836a699dce655b5409c5c8446693b 100644 (file)
@@ -691,7 +691,7 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/i
  $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
  $(srcdir)/services/modstack.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_kcache.h \
  $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h \
- $(srcdir)/sldns/sbuffer.h
+ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h
 listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/services/outside_network.h \
  $(srcdir)/util/rbtree.h  $(srcdir)/util/log.h $(srcdir)/util/config_file.h \
index a7a075299af739262e0b237f633a86c1e67cc750..669e083a3a5e2d3d3ecaa1eac98a05eccf69a5ec 100644 (file)
@@ -1,3 +1,7 @@
+1 May 2015: Wouter
+       - caps-whitelist in unbound.conf allows whitelist of loadbalancers
+         that cannot work with caps-for-id or its fallback.
+
 30 April 2015: Wouter
        - Unit test for type ANY synthesis.
 
index 4c45badcf42b4dd5484187d2d9e1f5c6dc38b1c1..68a4ef09b66ebd936a54932d31bc3b37ffa6604c 100644 (file)
@@ -296,6 +296,10 @@ server:
        # Use 0x20-encoded random bits in the query to foil spoof attempts.
        # This feature is an experimental implementation of draft dns-0x20.
        # use-caps-for-id: no
+       
+       # Domains (and domains in them) without support for dns-0x20 and
+       # the fallback fails because they keep sending different answers.
+       # caps-whitelist: "licdn.com"
 
        # Enforce privacy of these addresses. Strips them away from answers. 
        # It may cause DNSSEC validation to additionally mark it as bogus. 
index a5d0cc8ca66146d9c7110ee0b12a1f410fa1ab76..90e375f3a9800305fe030902a92c7cbc6304e32c 100644 (file)
@@ -574,6 +574,12 @@ authority servers and checks if the reply still has the correct casing.
 Disabled by default. 
 This feature is an experimental implementation of draft dns\-0x20.
 .TP
+.B caps\-whitelist: \fI<domain>
+Whitelist the domain so that it does not receive caps\-for\-id perturbed
+queries.  For domains that do not support 0x20 and also fail with fallback
+because they keep sending different answers, like some load balancers.
+Can be given multiple times, for different domains.
+.TP
 .B private\-address: \fI<IP address or subnet>
 Give IPv4 of IPv6 addresses or classless subnets. These are addresses
 on your private network, and are not allowed to be returned for public
index 5ec5752bf6a3603bbde8814748f84c1c4361a538..3df952841c68146e0bd667ee8d63abc7483b5e77 100644 (file)
@@ -65,6 +65,7 @@
 #include "validator/val_utils.h"
 #include "validator/val_sigcrypt.h"
 #include "sldns/sbuffer.h"
+#include "sldns/str2wire.h"
 
 /** time when nameserver glue is said to be 'recent' */
 #define SUSPICION_RECENT_EXPIRY 86400
@@ -105,6 +106,35 @@ read_fetch_policy(struct iter_env* ie, const char* str)
        return 1;
 }
 
+/** apply config caps whitelist items to name tree */
+static int
+caps_white_apply_cfg(rbtree_t* ntree, struct config_file* cfg)
+{
+       struct config_strlist* p;
+       for(p=cfg->caps_whitelist; p; p=p->next) {
+               struct name_tree_node* n;
+               size_t len;
+               uint8_t* nm = sldns_str2wire_dname(p->str, &len);
+               if(!nm) {
+                       log_err("could not parse %s", p->str);
+                       return 0;
+               }
+               n = (struct name_tree_node*)calloc(1, sizeof(*n));
+               n->node.key = n;
+               n->name = nm;
+               n->len = len;
+               n->labs = dname_count_labels(nm);
+               n->dclass = LDNS_RR_CLASS_IN;
+               if(!name_tree_insert(ntree, n, nm, len, n->labs, n->dclass)) {
+                       /* duplicate element ignored, idempotent */
+                       free(n->name);
+                       free(n);
+               }
+       }
+       name_tree_init_parents(ntree);
+       return 1;
+}
+
 int 
 iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg)
 {
@@ -128,6 +158,16 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg)
                log_err("Could not set private addresses");
                return 0;
        }
+       if(cfg->caps_whitelist) {
+               if(!iter_env->caps_white)
+                       iter_env->caps_white = rbtree_create(name_tree_compare);
+               if(!iter_env->caps_white || !caps_white_apply_cfg(
+                       iter_env->caps_white, cfg)) {
+                       log_err("Could not set capsforid whitelist");
+                       return 0;
+               }
+
+       }
        iter_env->supports_ipv6 = cfg->do_ip6;
        iter_env->supports_ipv4 = cfg->do_ip4;
        return 1;
index 9c65b1d992b3136867ac7b1b696e8dda174c8799..96918fa97883548ff1895076b5bf0b041179c5a7 100644 (file)
@@ -84,6 +84,16 @@ iter_init(struct module_env* env, int id)
        return 1;
 }
 
+/** delete caps_whitelist element */
+static void
+caps_free(struct rbnode_t* n, void* ATTR_UNUSED(d))
+{
+       if(n) {
+               free(((struct name_tree_node*)n)->name);
+               free(n);
+       }
+}
+
 void 
 iter_deinit(struct module_env* env, int id)
 {
@@ -94,6 +104,10 @@ iter_deinit(struct module_env* env, int id)
        free(iter_env->target_fetch_policy);
        priv_delete(iter_env->priv);
        donotq_delete(iter_env->donotq);
+       if(iter_env->caps_white) {
+               traverse_postorder(iter_env->caps_white, caps_free, NULL);
+               free(iter_env->caps_white);
+       }
        free(iter_env);
        env->modinfo[id] = NULL;
 }
@@ -459,6 +473,16 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq,
        return 1;
 }
 
+/** see if target name is caps-for-id whitelisted */
+static int
+is_caps_whitelisted(struct iter_env* ie, struct iter_qstate* iq)
+{
+       if(!ie->caps_white) return 0; /* no whitelist, or no capsforid */
+       return name_tree_lookup(ie->caps_white, iq->qchase.qname,
+               iq->qchase.qname_len, dname_count_labels(iq->qchase.qname),
+               iq->qchase.qclass) != NULL;
+}
+
 /** create target count structure for this query */
 static void
 target_count_create(struct iter_qstate* iq)
@@ -1965,8 +1989,9 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
                iq->qchase.qname, iq->qchase.qname_len, 
                iq->qchase.qtype, iq->qchase.qclass, 
                iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), EDNS_DO|BIT_CD, 
-               iq->dnssec_expected, iq->caps_fallback, &target->addr,
-               target->addrlen, iq->dp->name, iq->dp->namelen, qstate);
+               iq->dnssec_expected, iq->caps_fallback || is_caps_whitelisted(
+               ie, iq), &target->addr, target->addrlen, iq->dp->name,
+               iq->dp->namelen, qstate);
        if(!outq) {
                log_addr(VERB_DETAIL, "error sending query to auth server", 
                        &target->addr, target->addrlen);
index 36d3a6916142c4450bd2135c051b2ffcf53d440e..aaf0fb3834b701c00c7f1353ffc89a013d5d83ca 100644 (file)
@@ -51,6 +51,7 @@ struct iter_forwards;
 struct iter_donotq;
 struct iter_prep_list;
 struct iter_priv;
+struct rbtree_t;
 
 /** max number of targets spawned for a query and its subqueries */
 #define MAX_TARGET_COUNT       32
@@ -96,6 +97,9 @@ struct iter_env {
        /** private address space and private domains */
        struct iter_priv* priv;
 
+       /** whitelist for capsforid names */
+       struct rbtree_t* caps_white;
+
        /** The maximum dependency depth that this resolver will pursue. */
        int max_dependency_depth;
 
index 8d6760737ece029179d20bf672421c8696867dce..f105bc0d48b0bf610dfec29ed98324698000e36f 100644 (file)
@@ -1510,7 +1510,8 @@ serviced_callbacks(struct serviced_query* sq, int error, struct comm_point* c,
        log_assert(rem); /* should have been present */
        sq->to_be_deleted = 1; 
        verbose(VERB_ALGO, "svcd callbacks start");
-       if(sq->outnet->use_caps_for_id && error == NETEVENT_NOERROR && c) {
+       if(sq->outnet->use_caps_for_id && error == NETEVENT_NOERROR && c &&
+               !sq->nocaps) {
                /* noerror and nxdomain must have a qname in reply */
                if(sldns_buffer_read_u16_at(c->buffer, 4) == 0 &&
                        (LDNS_RCODE_WIRE(sldns_buffer_begin(c->buffer))
diff --git a/testdata/fwd_capsid_white.tpkg b/testdata/fwd_capsid_white.tpkg
new file mode 100644 (file)
index 0000000..199befb
Binary files /dev/null and b/testdata/fwd_capsid_white.tpkg differ
index 61291575a5f7d870e440646111c94470ba91c3f0..ac709bd6f49ccc04433b22ca0c3197fafdf6f7dc 100644 (file)
@@ -173,6 +173,7 @@ config_create(void)
        cfg->harden_referral_path = 0;
        cfg->harden_algo_downgrade = 1;
        cfg->use_caps_bits_for_id = 0;
+       cfg->caps_whitelist = NULL;
        cfg->private_address = NULL;
        cfg->private_domain = NULL;
        cfg->unwanted_threshold = 0;
@@ -416,6 +417,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_YNO("harden-referral-path:", harden_referral_path)
        else S_YNO("harden-algo-downgrade:", harden_algo_downgrade)
        else S_YNO("use-caps-for-id", use_caps_bits_for_id)
+       else S_STRLIST("caps-whitelist:", caps_whitelist)
        else S_SIZET_OR_ZERO("unwanted-reply-threshold:", unwanted_threshold)
        else S_STRLIST("private-address:", private_address)
        else S_STRLIST("private-domain:", private_domain)
@@ -685,6 +687,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_YNO(opt, "harden-referral-path", harden_referral_path)
        else O_YNO(opt, "harden-algo-downgrade", harden_algo_downgrade)
        else O_YNO(opt, "use-caps-for-id", use_caps_bits_for_id)
+       else O_LST(opt, "caps-whitelist", caps_whitelist)
        else O_DEC(opt, "unwanted-reply-threshold", unwanted_threshold)
        else O_YNO(opt, "do-not-query-localhost", donotquery_localhost)
        else O_STR(opt, "module-config", module_conf)
@@ -918,6 +921,7 @@ config_delete(struct config_file* cfg)
        free(cfg->version);
        free(cfg->module_conf);
        free(cfg->outgoing_avail_ports);
+       config_delstrlist(cfg->caps_whitelist);
        config_delstrlist(cfg->private_address);
        config_delstrlist(cfg->private_domain);
        config_delstrlist(cfg->auto_trust_anchor_file_list);
index 40afce5fd3c55179936d2af74a7e1ca841de4e36..6f82b5e61d1230c1ac247d1ebbeab4a89487e976 100644 (file)
@@ -179,6 +179,8 @@ struct config_file {
        int harden_algo_downgrade;
        /** use 0x20 bits in query as random ID bits */
        int use_caps_bits_for_id;
+       /** 0x20 whitelist, domains that do not use capsforid */
+       struct config_strlist* caps_whitelist;
        /** strip away these private addrs from answers, no DNS Rebinding */
        struct config_strlist* private_address;
        /** allow domain (and subdomains) to use private address space */
index 69a84816adf4f7535556168352ac555f1df9b6c7..018df08a8d269752e6dbbfd82436fd59cb429831 100644 (file)
@@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 172
-#define YY_END_OF_BUFFER 173
+#define YY_NUM_RULES 173
+#define YY_END_OF_BUFFER 174
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -372,196 +372,197 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1705] =
+static yyconst flex_int16_t yy_accept[1718] =
     {   0,
-        1,    1,  154,  154,  158,  158,  162,  162,  166,  166,
-        1,    1,  173,  170,    1,  152,  152,  171,    2,  171,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  154,
-      155,  155,  156,  171,  158,  159,  159,  160,  171,  165,
-      162,  163,  163,  164,  171,  166,  167,  167,  168,  171,
-      169,  153,    2,  157,  171,  169,  170,    0,    1,    2,
-        2,    2,    2,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  154,    0,  158,    0,  165,    0,  162,
-      166,    0,  169,    0,    2,    2,  169,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  169,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  169,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-       68,  170,  170,  170,  170,  170,    6,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      169,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  169,
-      170,  170,  170,  170,   30,  170,  170,  170,  170,  170,
-      170,  170,  170,  133,  170,   12,   13,  170,   15,   14,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  126,  170,
-
-      170,  170,  170,  170,  170,    3,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  169,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  161,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,   33,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,   34,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,   83,  161,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,   82,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,   66,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,   20,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,   31,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,   32,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,   22,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  146,
-      170,  170,  170,  170,  170,  170,   26,  170,   27,  170,
-      170,  170,   69,  170,   70,  170,   67,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,    5,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,   85,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-       23,  170,  170,  170,  170,  170,  110,  109,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-       35,  170,  170,  170,  170,  170,  170,  170,  170,   72,
-       71,  170,  170,  170,  170,  170,  170,  170,  106,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,   52,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,   56,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      108,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-        4,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  103,
-      170,  170,  170,  170,  170,  170,  170,  119,  170,  104,
-      170,  131,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,   21,  170,  170,  170,  170,   74,  170,   75,
-       73,  170,  170,  170,  170,  170,  170,  170,   81,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      105,  170,  170,  170,  170,  130,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,   65,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,   28,  170,  170,   17,  170,  170,  170,   16,  170,
-       90,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,   42,   43,  170,  170,  170,  170,
-      170,  170,  170,  134,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,   76,  170,  170,
-      170,  170,  170,  170,   80,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,   84,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  125,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,   94,  170,   98,  170,  170,
-      170,  170,   79,  170,  170,  117,  170,  170,  170,  170,
-      132,  170,  170,  170,  170,  170,  170,  170,  139,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-       97,  170,  170,  170,  170,  170,   44,   45,  170,   29,
-       51,   99,  170,  111,  107,  170,  170,   38,  170,  101,
-
-      170,  170,  170,  170,  170,    7,  170,   64,  170,  170,
-      170,  148,  170,  116,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-       86,  138,  170,  170,  170,  170,  170,  170,  170,  170,
-      127,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  100,  170,   37,   39,  170,
-      170,  170,  170,  170,   63,  170,  170,  170,  147,  170,
-      170,  170,  170,  121,   18,   19,  170,  170,  170,  170,
-      170,  170,  170,   61,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  123,  120,  170,  170,  170,  170,  170,
-      170,  170,  170,   36,  170,  170,  170,  170,  170,  170,
-      170,   11,  170,  170,  170,  170,  170,  170,  170,  170,
-       10,  170,  170,  170,  151,  170,   40,  170,  129,  122,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,   93,   92,  170,  124,  118,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,   46,  170,  128,  170,  170,  170,
-      170,  170,  170,   41,  170,  170,  170,   87,   89,  112,
-      170,  170,  170,   91,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  135,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,   24,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  137,  170,  170,  115,  170,
-      170,  170,  170,  170,  170,  170,   49,  170,   25,  170,
-        9,  170,  170,  170,  170,  113,   53,  170,  170,  170,
-       96,  170,  170,  170,  170,  170,  170,  136,   77,  170,
-      170,  170,  170,   55,   59,   54,  170,   47,  170,    8,
-      170,  149,  170,  170,   95,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,   60,   58,  170,   48,  170,  170,
-
-      114,  170,  170,   88,  170,  170,  170,  170,  170,  170,
-       78,   57,   50,  150,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-       62,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  102,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  142,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  140,  170,  143,  144,  170,  170,  170,  170,
-
-      170,  141,  145,    0
+        1,    1,  155,  155,  159,  159,  163,  163,  167,  167,
+        1,    1,  174,  171,    1,  153,  153,  172,    2,  172,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  155,
+      156,  156,  157,  172,  159,  160,  160,  161,  172,  166,
+      163,  164,  164,  165,  172,  167,  168,  168,  169,  172,
+      170,  154,    2,  158,  172,  170,  171,    0,    1,    2,
+        2,    2,    2,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  155,    0,  159,    0,  166,    0,  163,
+      167,    0,  170,    0,    2,    2,  170,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  170,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  170,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   69,  171,  171,  171,  171,  171,    6,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  170,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  170,  171,  171,  171,  171,  171,   30,
+      171,  171,  171,  171,  171,  171,  171,  171,  134,  171,
+       12,   13,  171,   15,   14,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  127,  171,  171,  171,  171,  171,  171,
+        3,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  170,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  162,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,   33,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,   34,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,   84,  162,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,   83,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,   67,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,   20,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   31,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,   32,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+       22,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  147,  171,  171,
+      171,  171,  171,  171,   26,  171,   27,  171,  171,  171,
+       70,  171,   71,  171,   68,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+        5,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,   86,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,  171,  171,   23,
+      171,  171,  171,  171,  171,  111,  110,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,   35,
+      171,  171,  171,  171,  171,  171,  171,  171,   73,   72,
+      171,  171,  171,  171,  171,  171,  171,  107,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,   52,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,   56,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      109,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+        4,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  104,
+      171,  171,  171,  171,  171,  171,  171,  171,  120,  171,
+      105,  171,  132,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   21,  171,  171,  171,  171,   75,  171,
+
+       76,   74,  171,  171,  171,  171,  171,  171,  171,   82,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  106,  171,  171,  171,  171,  131,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,   66,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,   28,  171,  171,   17,  171,  171,  171,   16,
+      171,   91,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,   42,   43,  171,  171,  171,
+      171,  171,  171,  171,  171,  135,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,   77,
+
+      171,  171,  171,  171,  171,  171,   81,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   85,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  126,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,   95,  171,   99,
+      171,  171,  171,  171,   80,  171,   62,  171,  118,  171,
+      171,  171,  171,  133,  171,  171,  171,  171,  171,  171,
+      171,  140,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   98,  171,  171,  171,  171,  171,   44,
+
+       45,  171,   29,   51,  100,  171,  112,  108,  171,  171,
+       38,  171,  102,  171,  171,  171,  171,  171,    7,  171,
+       65,  171,  171,  171,  149,  171,  117,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   87,  139,  171,  171,  171,  171,  171,
+      171,  171,  171,  128,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  101,  171,
+       37,   39,  171,  171,  171,  171,  171,   64,  171,  171,
+      171,  148,  171,  171,  171,  171,  122,   18,   19,  171,
+
+      171,  171,  171,  171,  171,  171,   61,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  124,  121,  171,  171,
+      171,  171,  171,  171,  171,  171,   36,  171,  171,  171,
+      171,  171,  171,  171,   11,  171,  171,  171,  171,  171,
+      171,  171,  171,   10,  171,  171,  171,  152,  171,   40,
+      171,  130,  123,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,   94,   93,  171,  125,  119,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,   46,  171,  129,
+      171,  171,  171,  171,  171,  171,   41,  171,  171,  171,
+
+       88,   90,  113,  171,  171,  171,   92,  171,  171,  171,
+      171,  171,  171,  171,  171,  136,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+       24,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  138,  171,
+      171,  116,  171,  171,  171,  171,  171,  171,  171,   49,
+      171,   25,  171,    9,  171,  171,  171,  171,  114,   53,
+      171,  171,  171,   97,  171,  171,  171,  171,  171,  171,
+      137,   78,  171,  171,  171,  171,   55,   59,   54,  171,
+       47,  171,    8,  171,  150,  171,  171,   96,  171,  171,
+
+      171,  171,  171,  171,  171,  171,  171,   60,   58,  171,
+       48,  171,  171,  115,  171,  171,   89,  171,  171,  171,
+      171,  171,  171,   79,   57,   50,  151,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,   63,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  103,  171,  171,  171,  171,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  143,  171,  171,  171,  171,  171,  171,  171,  171,
+
+      171,  171,  171,  171,  171,  141,  171,  144,  145,  171,
+      171,  171,  171,  171,  142,  146,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -604,393 +605,397 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1719] =
+static yyconst flex_int16_t yy_base[1732] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2907, 2759,   50, 3384, 3384, 3384,  129,   94,
+       87,  108, 2802, 2541,   50, 3409, 3409, 3409,  129,   94,
        70,  104,  130,   90,   92,  115,  127,   95,   84,  111,
-      137,  148,   50,  150,  161,  158,  154,  167,  182, 2510,
-     3384, 3384, 3384,   70, 2461, 3384, 3384, 3384,   42, 2413,
-     2316, 3384, 3384, 3384,  199, 2217, 3384, 3384, 3384,  141,
-     1867, 3384,  203, 3384,  207,  122, 1593,  213,  120,    0,
-      224,    0,    0,  103,  147,  140,  171,  208,  170,  209,
-      210,  189,  200,  222,  206,  214,  225,  227,  229,  180,
-      230,  236,  237,  231,  241,  248,  238,  240,  249,  252,
-
-      247,  257,  258,  261,  263,  265,  268,  269,  270,  272,
-      276,  274,  278,  280,  282,  286,  279,  284,  288,  299,
-      298,  292,  295, 1273,  314, 1186,  317, 1122,  323, 1009,
-      887,  327,  164,  332,  336,    0,  329,  333,  339,  316,
-      302,  320,  337,  345,  342,  348,  351,  372,  352,  341,
-      350,   49,  354,  356,  359,  362,  363,  364,  365,  367,
-      369,  374,  384,  394,  385,  388,  396,  397,  403,  399,
-      406,  407,  408,  410,  400,  411,  344,  413,  409,  412,
-      419,  423,  422,  424,  430,  426,  429,  433,  437,  434,
-      435,  448,  441,  450,  452,  451,  438,  456,  460,  461,
-
-      458,  462,  467,  465,  469,  476,  481,  482,  484,  470,
-      474,  488,  492,  493,  499,  487,  497,  495,  508,  504,
-      505,  506,  507,  509,  511,  512,  513,  514,  522,  515,
-      521,  519,  525,  528,  530,  532,  535,  541,  542,  546,
-      547,  548,  551,  553,  554,  552,  556,  559,  565,  561,
-      564,  570,  571,  572,  574,  582,  584,  576,  578,  580,
-      586,  587,  594,  609,  592,  596,  599,  603,  601,  610,
-      618,  614,  602,  604,  631,  615,  627,  637,  629,  633,
-      642,  636,  643,  644,  647,  646,  649,  650,  651,  654,
-      655,  652,  658,  666,  672,  671,  669,  678,  680,  670,
-
-      681,  689,  674,  687,  686,  688,  690,  694,  693,  700,
-     3384,  702,  697,  704,  706,  705, 3384,  707,  708,  709,
-      710,  711,  713,  725,  722,  724,  726,  729,  730,  731,
-      732,  734,  754,  737,  735,  744,  738,  743,  758,  742,
-      764,  756,  761,  766,  750,  752,  772,  775,  768,  776,
-      778,  788,  785,  786,  779,  790,  793,  794,  795,  796,
-      799,  800,  808,  801,  810,  813,  820,  818,  822,  828,
-      824,  825,  827,  834,  832,  833,  826,  840,  837,  839,
-      844,  848,  841,  843,  855,  851,  858,  862,  863,  854,
-      864,  865,  870,  876,  872,  874,  880,  879,  873,  875,
-
-      885,  892,  893,  901,  886,  902,  894,  904,  910,  906,
-      911,  912,  913,  915,  916,  917,  919,  918,  921,  920,
-      924,  934,  925,  940,  928,  468,  942,  943,  926,  948,
-      946,  949,  950,  951,  955,  952,  958,  962,  963,  964,
-      972,  974,  966,  967, 3384,  984,  981,  980,  973,  982,
-      983,  986, 1012, 3384,  988, 3384, 3384,  989, 3384, 3384,
-      993,  994,  995, 1009, 1035, 1005,  996,  997, 1013, 1008,
-     1018, 1019, 1015, 1026, 1029, 1023, 1033, 1038, 1040, 1041,
-     1043, 1045, 1046, 1050, 1057, 1066, 1067, 1048, 1063, 1065,
-     1068, 1070, 1072, 1071, 1075, 1079, 1085, 1081, 3384, 1082,
-
-     1083, 1084, 1089, 1092, 1093, 3384, 1094, 1097, 1095, 1099,
-     1101, 1105, 1103, 1106, 1108, 1109, 1111, 1113, 1118, 1114,
-     1117, 1135, 1137, 1129, 1121, 1136, 1138, 1139, 1141, 1149,
-     1147, 1145, 1146, 1156, 1152, 1154, 1158, 1155, 1161, 1162,
-     1164, 1166, 1189, 1167, 1168, 1174, 1169, 1173, 1176, 1177,
-     1175, 1182, 1196, 1202, 1195, 1185, 1203, 1187, 1213, 1214,
-     1204, 1218, 1212, 1219, 1224, 1227, 1221, 1228, 1230, 1234,
-     1235, 3384, 1241, 1243, 1237, 1238, 1245, 1244, 1248, 1252,
-     1247, 1253, 1254, 1255, 1259, 1262, 3384, 1260, 1265, 1267,
-     1270, 1271, 1272, 1278, 1280, 1289, 3384, 1291, 1292, 1285,
-
-     1294, 1295, 1297, 1298, 1299, 1300, 1302, 1303, 1306, 1312,
-     1316, 1304, 1308, 1321, 1311, 1319, 1323, 1327, 1325, 1328,
-     1331, 1332, 1334, 1336, 1342, 1344, 1341, 1347, 1350, 1351,
-     1352, 1357, 1354, 1358, 1355, 1359, 3384,  125, 1361, 1362,
-     1360, 1368, 1371, 1373, 1376, 1379, 1381, 1370, 1382, 1383,
-     1387, 1389, 1391, 1394, 1392, 1395, 1397, 1403, 1399, 1404,
-     1405, 1408, 1411, 1414, 1415, 1418, 1421, 1419, 1424, 1426,
-     1422, 1430, 1427, 1431, 1432, 1434, 1436, 1435, 1438, 3384,
-     1448, 1444, 1445, 1449, 1454, 1461, 1457, 1462, 1464, 1465,
-     1471, 1467, 1470, 1473, 1479, 1472, 1482, 1483, 1484, 1490,
-
-     1491, 1488, 1492, 1489, 1495, 3384, 1500, 1494, 1499, 1513,
-     1501, 1510, 1511, 1514, 1516, 1518, 1521, 1522, 1524, 3384,
-     1527, 1526, 1525, 1533, 1535, 1539, 1536, 1546, 1540, 1542,
-     1548, 1549, 1550, 1552, 1553, 1557, 3384, 1563, 1566, 1562,
-     1573, 1565, 1569, 1571, 1576, 1572, 1577, 1583, 1579, 1581,
-     1580, 1584, 1586, 1587, 1589, 1590, 1591, 1597, 3384, 1609,
-     1594, 1605, 1615, 1596, 1616, 1618, 1619, 1620, 1621, 1623,
-     1624, 1625, 1626, 1627, 1632, 1633, 1628, 1634, 1636, 1635,
-     1640, 1637, 1648, 1638, 1655, 1657, 1659, 1658, 1661, 1667,
-     1668, 1669, 3384, 1674, 1660, 1671, 1675, 1677, 1685, 1682,
-
-     1683, 1686, 1687, 1688, 1691, 1695, 1692, 1693, 1698, 1699,
-     1694, 1700, 1701, 1703, 1709, 1706, 1715, 1720, 1724, 3384,
-     1719, 1723, 1727, 1731, 1725, 1738, 3384, 1734, 3384, 1736,
-     1746, 1742, 3384, 1749, 3384, 1751, 3384, 1753, 1754, 1744,
-     1740, 1757, 1758, 1760, 1762, 1764, 1766, 1768, 1769, 1770,
-     1772, 1773, 3384, 1776, 1779, 1781, 1777, 1783, 1785, 1786,
-     1787, 1800, 1789, 1801, 1798, 1807, 1802, 3384, 1799, 1810,
-     1804, 1813, 1814, 1824, 1821, 1818, 1825, 1815, 1828, 1834,
-     1835, 1837, 1822, 1838, 1839, 1847, 1843, 1845, 1849, 1846,
-     1852, 1853, 1854, 1857, 1856, 1859, 1865, 1861, 1862, 1863,
-
-     3384, 1864, 1875, 1876, 1877, 1878, 3384, 3384, 1880, 1885,
-     1887, 1891, 1893, 1895, 1896, 1897, 1903, 1900, 1901, 1904,
-     1909, 1910, 1911, 1912, 1915, 1913, 1918, 1919, 1926, 1922,
-     3384, 1933, 1925, 1937, 1939, 1931, 1946, 1942, 1944, 3384,
-     3384, 1948, 1949, 1950, 1952, 1959, 1957, 1958, 3384, 1960,
-     1961, 1964, 1967, 1970, 1974, 1963, 1966, 1978, 1979, 1982,
-     1984, 1990, 1987, 1988, 1989, 1992, 1997, 2002, 3384, 1998,
-     2004, 2005, 2008, 2009, 2010, 2011, 2014, 2012, 2015, 2016,
-     2024, 2025, 2027, 2028, 2029, 2033, 2030, 2037, 2039, 2040,
-     2046, 2042, 3384, 2056, 2043, 2057, 2053, 2055, 2058, 2065,
-
-     2062, 2063, 2064, 2066, 2068, 2067, 2070, 2071, 2072, 2079,
-     3384, 2080, 2091, 2077, 2087, 2093, 2085, 2095, 2098, 2100,
-     3384, 2101, 2108, 2105, 2107, 2110, 2112, 2104, 2115, 2118,
-     2119, 2120, 2121, 2126, 2128, 2123, 2129, 2131, 2132, 2134,
-     2139, 2146, 2136, 2140, 2153, 2152, 2161, 2163, 2149, 2159,
-     2167, 2164, 2165, 2166, 2168, 2177, 2170, 2179, 2173, 3384,
-     2180, 2182, 2187, 2184, 2189, 2191, 2195, 3384, 2196, 3384,
-     2188, 3384, 2198, 2203, 2199, 2205, 2206, 2207, 2208, 2211,
-     2218, 2209, 3384, 2220, 2215, 2222, 2225, 3384, 2228, 3384,
-     3384, 2229, 2235, 2241, 2230, 2237, 2240, 2246, 3384, 2243,
-
-     2239, 2251, 2248, 2253, 2254, 2255, 2256, 2258, 2260, 2261,
-     3384, 2264, 2263, 2270, 2262, 3384, 2272, 2276, 2277, 2278,
-     2282, 2285, 2287, 2279, 2289, 2296, 2293, 3384, 2294, 2300,
-     2302, 2295, 2299, 2311, 2307, 2315, 2304, 2318, 2320, 2323,
-     2321, 3384, 2324, 2326, 3384, 2325, 2308, 2334, 3384, 2335,
-     3384, 2336, 2337, 2339, 2340, 2344, 2345, 2347, 2348, 2351,
-     2353, 2356, 2360, 2357, 3384, 3384, 2361, 2363, 2371, 2366,
-     2368, 2374, 2376, 3384, 2373, 2377, 2380, 2381, 2383, 2384,
-     2385, 2390, 2387, 2392, 2394, 2393, 2395, 3384, 2397, 2400,
-     2404, 2405, 2406, 2408, 3384, 2410, 2412, 2417, 2411, 2421,
-
-     2427, 2432, 2436, 2433, 2438, 2440, 2442, 2443, 2445, 2448,
-     2449, 3384, 2450, 2452, 2453, 2457, 2458, 2416, 2460, 2464,
-     2467, 2454, 2470, 3384, 2459, 2471, 2474, 2484, 2475, 2488,
-     2477, 2489, 2491, 2481, 2492, 2479, 2485, 2495, 2496, 2499,
-     2502, 2506, 2505, 2512, 2509, 3384, 2508, 3384, 2517, 2520,
-     2523, 2524, 3384, 2522, 2527, 3384, 2529, 2530, 2531, 2541,
-     3384, 2543, 2534, 2544, 2538, 2546, 2536, 2552, 3384, 2554,
-     2556, 2562, 2563, 2547, 2557, 2565, 2564, 2570, 2577, 2573,
-     3384, 2566, 2576, 2583, 2580, 2585, 3384, 3384, 2589, 3384,
-     3384, 3384, 2592, 3384, 3384, 2593, 2595, 3384, 2597, 3384,
-
-     2604, 2600, 2586, 2603, 2605, 3384, 2607, 3384, 2613, 2609,
-     2611, 3384, 2615, 3384, 2612, 2616, 2619, 2623, 2621, 2630,
-     2632, 2622, 2624, 2635, 2636, 2637, 2638, 2639, 2641, 2644,
-     2645, 2646, 2650, 2651, 2654, 2652, 2655, 2656, 2658, 2665,
-     3384, 3384, 2662, 2667, 2669, 2672, 2674, 2673, 2676, 2677,
-     3384, 2680, 2681, 2688, 2684, 2686, 2687, 2696, 2689, 2698,
-     2706, 2700, 2702, 2703, 2707, 3384, 2709, 3384, 3384, 2710,
-     2711, 2716, 2719, 2713, 3384, 2720, 2726, 2723, 3384, 2733,
-     2721, 2738, 2742, 3384, 3384, 3384, 2743, 2729, 2739, 2745,
-     2747, 2735, 2749, 3384, 2746, 2753, 2755, 2756, 2763, 2765,
-
-     2772, 2769, 2774, 3384, 3384, 2775, 2776, 2777, 2778, 2766,
-     2783, 2779, 2785, 3384, 2786, 2788, 2790, 2792, 2793, 2794,
-     2796, 3384, 2798, 2799, 2804, 2808, 2800, 2811, 2812, 2813,
-     3384, 2815, 2814, 2816, 3384, 2821, 3384, 2826, 3384, 3384,
-     2828, 2829, 2832, 2834, 2837, 2839, 2840, 2841, 2847, 2844,
-     2845, 3384, 3384, 2846, 3384, 3384, 2850, 2851, 2853, 2854,
-     2859, 2861, 2857, 2862, 2863, 2864, 2877, 2869, 2875, 2866,
-     2872, 2879, 2881, 2883, 3384, 2884, 3384, 2889, 2891, 2892,
-     2893, 2895, 2897, 3384, 2900, 2899, 2549, 3384, 3384, 3384,
-     2905, 2912, 2914, 3384, 2915, 2916, 2917, 2919, 2904, 2926,
-
-     2918, 2928, 3384, 2929, 2930, 2932, 2933, 2935, 2934, 2936,
-     2939, 2941, 2940, 2952, 2942, 2954, 2957, 3384, 2959, 2949,
-     2963, 2956, 2960, 2968, 2972, 2965, 2973, 2974, 2976, 2977,
-     2978, 2979, 2986, 2987, 2991, 3384, 2993, 2980, 3384, 2995,
-     2988, 2996, 3007, 3009, 3011, 3012, 3384, 3014, 3384, 3015,
-     3384, 3019, 3020, 3022, 3023, 3384, 3384, 3024, 3026, 3030,
-     3384, 3031, 3027, 3033, 3034, 3037, 3038, 3384, 3384, 3039,
-     3041, 3047, 3044, 3384, 3384, 3384, 3054, 3384, 3056, 3384,
-     3050, 3384, 3062, 3042, 3384, 3055, 3066, 3063, 3067, 3068,
-     3069, 3070, 3071, 3077, 3384, 3384, 3079, 3384, 3081, 3084,
-
-     3384, 3085, 3086, 3384, 3096, 3092, 3093, 3094, 3099, 3095,
-     3384, 3384, 3384, 3384, 3100, 3101, 3102, 3103, 3105, 3108,
-     3107, 3110, 3119, 3120, 3109, 3126, 3112, 3127, 3133, 3116,
-     3384, 3134, 3135, 3141, 3143, 3139, 3144, 3140, 3146, 3145,
-     3148, 3150, 3147, 3151, 3162, 3152, 3168, 3165, 3172, 3173,
-     3155, 3180, 3182, 3176, 3179, 3184, 3190, 3186, 3187, 3384,
-     3188, 3189, 3191, 3194, 3195, 3192, 3199, 3201, 3211, 3204,
-     3206, 3214, 3216, 3217, 3219, 3220, 3222, 3221, 3384, 3223,
-     3225, 3229, 3231, 3234, 3232, 3236, 3237, 3242, 3245, 3244,
-     3247, 3249, 3384, 3253, 3384, 3384, 3254, 3257, 3260, 3262,
-
-     3264, 3384, 3384, 3384, 3292, 3299, 3306, 3313, 3320,   94,
-     3327, 3334, 3341, 3348, 3355, 3362, 3369, 3376
+      137,  148,   50,  150,  161,  158,  154,  167,  182, 2324,
+     3409, 3409, 3409,   70, 2014, 3409, 3409, 3409,   42, 1939,
+     1899, 3409, 3409, 3409,  199, 1573, 3409, 3409, 3409,  141,
+     1198, 3409,  203, 3409,  207,  122,  861,  213,  120,    0,
+      224,    0,    0,  103,  147,  140,  206,  171,  170,  208,
+      210,  211,  200,  226,  217,  214,  225,  227,  232,  180,
+      230,  235,  242,  229,  246,  247,  240,  249,  252,  253,
+
+      257,  258,  259,  261,  262,  267,  268,  269,  274,  275,
+      276,  278,  280,  284,  283,  286,  282,  290,  292,  299,
+      303,  293,  296,  812,  318,  609,  321,  447,  327,  359,
+      174,  332,  164,  336,  340,    0,  317,  333,  341,  311,
+      335,  337,  339,  342,  349,  346,  352,  355,  376,  357,
+      345,  360,   49,  359,  361,  367,  368,  372,  370,  369,
+      378,  371,  373,  382,  392,  399,  400,  401,  386,  408,
+      404,  411,  417,  413,  415,  402,  418,  414,  419,  423,
+      416,  425,  429,  426,  432,  435,  433,  302,  437,  443,
+      439,  440,  441,  454,  460,  457,  456,  446,  461,  467,
+
+      466,  475,  463,  464,  473,  474,  477,  483,  488,  486,
+      489,  479,  491,  493,  494,  492,  502,  500,  503,  505,
+      512,  508,  509,  511,  513,  515,  517,  518,  519,  521,
+      525,  531,  524,  523,  529,  530,  539,  541,  542,  547,
+      554,  548,  549,  550,  556,  558,  560,  562,  566,  567,
+      574,  570,  571,  579,  572,  573,  588,  580,  591,  581,
+      583,  585,  593,  595,  599,  615,  601,  610,  604,  605,
+      606,  608,  637,  612,  620,  611,  623,  641,  622,  633,
+      644,  643,  645,  651,  646,  652,  653,  656,  655,  654,
+      660,  661,  662,  663,  674,  673,  667,  685,  681,  682,
+
+      664,  683,  689,  690,  697,  693,  694,  695,  696,  698,
+      701,  704,  708, 3409,  710,  705,  712,  713,  715, 3409,
+      716,  717,  718,  719,  724,  723,  735,  721,  733,  738,
+      740,  734,  741,  742,  743,  763,  745,  750,  752,  748,
+      753,  760,  756,  767,  770,  772,  775,  774,  754,  777,
+      778,  780,  783,  788,  791,  794,  795,  796,  797,  801,
+      802,  803,  804,  808,  816,  810,  822,  811,  828,  831,
+      825,  833,  835,  841,  818,  837,  840,  843,  845,  846,
+      847,  853,  850,  852,  856,  857,  854,  860,  870,  862,
+      873,  875,  877,  878,  880,  881,  883,  889,  863,  887,
+
+      893,  894,  886,  888,  898,  905,  906,  914,  907,  915,
+      912,  916,  923,  924,  917,  925,  928,  929,  930,  931,
+      933,  932,  935,  938,  939,  945,  942,  943,  948,  953,
+      955,  957,  958,  959,  962,  963,  967,  965,  966,  975,
+      976,  978,  980,  979,  982,  986,  981,  988,  991, 3409,
+     1001,  995,  992,  998,  892, 1003, 1005, 1031, 3409, 1007,
+     3409, 3409, 1006, 3409, 3409, 1008, 1009, 1010, 1018, 1054,
+     1019, 1011, 1012, 1025, 1027, 1032, 1033, 1020, 1041, 1044,
+     1046, 1038, 1045, 1048, 1052, 1062, 1049, 1059, 1069, 1071,
+     1080, 1081, 1079, 1078, 1083, 1085, 1068, 1087, 1088, 1090,
+
+     1094, 1101, 1097, 3409, 1098, 1100, 1099, 1104, 1106, 1108,
+     3409, 1109, 1110, 1112, 1114, 1117, 1118, 1120, 1122, 1123,
+     1124, 1127, 1128, 1125, 1132, 1135, 1145, 1151, 1144, 1137,
+     1147, 1150, 1153, 1157, 1165, 1161, 1154, 1162, 1168, 1166,
+     1170, 1177, 1167, 1179, 1171, 1173, 1178, 1180, 1201, 1181,
+     1184, 1188, 1187, 1189, 1191, 1193, 1211, 1203, 1209, 1216,
+     1219, 1208, 1220, 1225, 1228, 1235, 1226, 1227, 1230, 1237,
+     1195, 1240, 1239, 1242, 1246, 1251, 1248, 3409, 1258, 1254,
+     1255, 1259, 1262, 1260, 1264, 1266, 1263, 1268, 1269, 1270,
+     1276, 1283, 3409, 1271, 1277, 1281, 1286, 1287, 1288, 1294,
+
+     1297, 1304, 3409, 1306, 1307, 1309, 1300, 1302, 1310, 1313,
+     1314, 1318, 1319, 1315, 1322, 1325, 1327, 1328, 1329, 1333,
+     1332, 1334, 1339, 1341, 1340, 1343, 1342, 1346, 1344, 1351,
+     1357, 1361, 1358, 1365, 1362, 1366, 1367, 1372, 1369, 1374,
+     1370, 1371, 3409,  125, 1376, 1377, 1375, 1391, 1393, 1394,
+     1397, 1384, 1400, 1401, 1403, 1385, 1405, 1407, 1409, 1410,
+     1411, 1412, 1415, 1419, 1422, 1413, 1430, 1421, 1425, 1431,
+     1423, 1435, 1437, 1378, 1438, 1443, 1444, 1441, 1445, 1446,
+     1449, 1450, 1454, 1451, 1452, 1453, 3409, 1469, 1461, 1455,
+     1467, 1471, 1478, 1474, 1479, 1481, 1482, 1488, 1484, 1490,
+
+     1492, 1498, 1496, 1501, 1486, 1489, 1508, 1509, 1510, 1512,
+     1511, 1502, 3409, 1514, 1517, 1519, 1531, 1521, 1522, 1528,
+     1524, 1533, 1523, 1540, 1534, 1543, 3409, 1544, 1545, 1546,
+     1553, 1554, 1556, 1557, 1559, 1560, 1561, 1563, 1564, 1567,
+     1570, 1572, 1575, 3409, 1581, 1584, 1585, 1591, 1583, 1577,
+     1587, 1594, 1589, 1595, 1602, 1599, 1600, 1601, 1603, 1604,
+     1606, 1607, 1610, 1611, 1608, 1612, 3409, 1630, 1614, 1627,
+     1622, 1633, 1639, 1636, 1637, 1638, 1615, 1642, 1644, 1643,
+     1645, 1646, 1651, 1652, 1653, 1655, 1658, 1656, 1654, 1672,
+     1663, 1662, 1674, 1666, 1676, 1664, 1684, 1691, 1692, 1677,
+
+     3409, 1694, 1688, 1690, 1696, 1697, 1703, 1700, 1701, 1704,
+     1705, 1707, 1708, 1717, 1709, 1711, 1713, 1715, 1719, 1718,
+     1721, 1724, 1722, 1737, 1729, 1735, 1743, 3409, 1738, 1747,
+     1748, 1750, 1740, 1756, 3409, 1752, 3409, 1759, 1765, 1768,
+     3409, 1772, 3409, 1774, 3409, 1775, 1776, 1767, 1755, 1769,
+     1779, 1781, 1786, 1787, 1788, 1790, 1791, 1757, 1792, 1793,
+     3409, 1795, 1794, 1799, 1797, 1801, 1805, 1803, 1804, 1810,
+     1824, 1809, 1825, 1816, 1827, 1822, 3409, 1818, 1831, 1833,
+     1834, 1835, 1844, 1843, 1837, 1847, 1836, 1855, 1856, 1849,
+     1857, 1840, 1860, 1862, 1868, 1864, 1865, 1872, 1869, 1866,
+
+     1873, 1876, 1877, 1878, 1879, 1886, 1882, 1883, 1885, 3409,
+     1889, 1895, 1897, 1899, 1898, 3409, 3409, 1901, 1909, 1913,
+     1905, 1907, 1915, 1917, 1919, 1925, 1923, 1924, 1927, 1930,
+     1931, 1932, 1933, 1935, 1937, 1938, 1941, 1946, 1947, 3409,
+     1954, 1950, 1964, 1960, 1952, 1967, 1961, 1970, 3409, 3409,
+     1963, 1969, 1975, 1976, 1983, 1980, 1981, 3409, 1977, 1984,
+     1985, 1986, 1987, 1989, 1994, 2000, 2002, 2004, 2007, 2008,
+     2003, 2010, 2009, 2006, 2023, 2012, 2013, 2026, 3409, 2027,
+     2031, 2028, 2032, 2033, 2034, 2035, 2038, 2039, 2044, 2041,
+     2052, 2054, 2045, 2053, 2047, 2058, 2055, 2060, 2063, 2065,
+
+     2073, 2071, 3409, 2081, 2070, 2082, 2078, 2080, 2083, 2090,
+     2086, 2087, 2089, 2091, 2092, 2093, 2095, 2096, 2101, 2097,
+     3409, 2104, 2116, 2108, 2112, 2118, 2110, 2120, 2124, 2125,
+     3409, 2126, 2133, 2129, 2130, 2135, 2138, 2139, 2132, 2142,
+     2144, 2140, 2145, 2155, 2146, 2151, 2153, 2157, 2160, 2165,
+     2162, 2167, 2159, 2172, 2179, 2176, 2182, 2188, 2184, 2185,
+     2192, 2189, 2190, 2191, 2193, 2200, 2198, 2204, 2196, 3409,
+     2202, 2207, 2212, 2209, 2213, 2216, 2217, 2215, 3409, 2222,
+     3409, 2214, 3409, 2225, 2231, 2228, 2232, 2233, 2234, 2235,
+     2238, 2245, 2236, 3409, 2246, 2242, 2252, 2254, 3409, 2256,
+
+     3409, 3409, 2244, 2257, 2267, 2249, 2264, 2268, 2273, 3409,
+     2269, 2274, 2277, 2275, 2279, 2280, 2281, 2283, 2282, 2285,
+     2286, 3409, 2291, 2287, 2290, 2298, 3409, 2288, 2304, 2299,
+     2309, 2310, 2311, 2313, 2301, 2315, 2322, 2321, 3409, 2320,
+     2323, 2328, 2329, 2330, 2336, 2333, 2332, 2340, 2342, 2341,
+     2346, 2345, 3409, 2348, 2356, 3409, 2347, 2349, 2358, 3409,
+     2359, 3409, 2362, 2363, 2364, 2366, 2371, 2367, 2373, 2377,
+     2379, 2380, 2381, 2387, 2382, 3409, 3409, 2392, 2384, 2398,
+     2399, 2395, 2388, 2403, 2402, 3409, 2404, 2405, 2409, 2411,
+     2412, 2413, 2414, 2416, 2418, 2419, 2420, 2421, 2423, 3409,
+
+     2427, 2424, 2433, 2428, 2439, 2435, 3409, 2437, 2438, 2440,
+     2443, 2445, 2454, 2460, 2462, 2463, 2465, 2467, 2469, 2470,
+     2472, 2474, 2475, 3409, 2477, 2479, 2480, 2484, 2485, 2481,
+     2488, 2492, 2496, 2486, 2498, 3409, 2490, 2500, 2502, 2510,
+     2501, 2512, 2504, 2516, 2514, 2507, 2521, 2518, 2522, 2524,
+     2527, 2525, 2528, 2529, 2533, 2536, 2542, 3409, 2534, 3409,
+     2539, 2549, 2556, 2552, 3409, 2544, 3409, 2555, 3409, 2557,
+     2558, 2562, 2565, 3409, 2569, 2566, 2570, 2572, 2573, 2574,
+     2575, 3409, 2577, 2583, 2579, 2585, 2588, 2589, 2591, 2592,
+     2594, 2601, 2598, 3409, 2597, 2600, 2607, 2606, 2444, 3409,
+
+     3409, 2609, 3409, 3409, 3409, 2616, 3409, 3409, 2617, 2619,
+     3409, 2621, 3409, 2628, 2624, 2611, 2626, 2629, 3409, 2631,
+     3409, 2637, 2633, 2635, 3409, 2639, 3409, 2636, 2640, 2643,
+     2644, 2646, 2653, 2655, 2647, 2656, 2658, 2660, 2661, 2662,
+     2663, 2665, 2666, 2668, 2669, 2671, 2676, 2677, 2678, 2680,
+     2681, 2688, 2693, 3409, 3409, 2679, 2690, 2682, 2695, 2697,
+     2698, 2701, 2702, 3409, 2710, 2705, 2713, 2707, 2711, 2712,
+     2716, 2717, 2724, 2726, 2725, 2727, 2728, 2731, 3409, 2733,
+     3409, 3409, 2734, 2735, 2740, 2741, 2737, 3409, 2744, 2746,
+     2749, 3409, 2758, 2750, 2760, 2764, 3409, 3409, 3409, 2765,
+
+     2753, 2761, 2767, 2768, 2771, 2774, 3409, 2776, 2778, 2779,
+     2777, 2781, 2786, 2793, 2795, 2797, 3409, 3409, 2803, 2800,
+     2801, 2799, 2787, 2805, 2807, 2809, 3409, 2811, 2810, 2816,
+     2815, 2817, 2818, 2822, 3409, 2820, 2823, 2825, 2833, 2827,
+     2835, 2830, 2837, 3409, 2840, 2841, 2845, 3409, 2846, 3409,
+     2851, 3409, 3409, 2848, 2852, 2855, 2857, 2862, 2864, 2859,
+     2865, 2871, 2870, 2872, 3409, 3409, 2867, 3409, 3409, 2874,
+     2875, 2878, 2881, 2883, 2885, 2886, 2882, 2887, 2888, 2893,
+     2895, 2898, 2899, 2900, 2904, 2902, 2907, 3409, 2909, 3409,
+     2910, 2915, 2916, 2908, 2918, 2921, 3409, 2923, 2924, 2925,
+
+     3409, 3409, 3409, 2929, 2937, 2933, 3409, 2935, 2939, 2941,
+     2944, 2943, 2951, 2945, 2953, 3409, 2947, 2954, 2956, 2959,
+     2958, 2957, 2960, 2964, 2971, 2965, 2975, 2968, 2978, 2980,
+     3409, 2982, 2983, 2988, 2984, 2986, 2993, 2995, 2990, 2999,
+     2996, 3001, 3002, 3005, 3004, 3012, 3013, 3018, 3409, 3020,
+     3006, 3409, 3021, 3015, 3022, 3033, 3035, 3037, 3038, 3409,
+     3040, 3409, 3041, 3409, 3045, 3046, 3048, 3049, 3409, 3409,
+     3050, 3052, 3056, 3409, 3057, 3053, 3059, 3060, 3063, 3064,
+     3409, 3409, 3065, 3067, 3073, 3024, 3409, 3409, 3409, 3080,
+     3409, 3070, 3409, 3068, 3409, 3087, 3076, 3409, 3081, 3089,
+
+     3083, 3090, 3092, 3093, 3095, 3096, 3102, 3409, 3409, 3104,
+     3409, 3107, 3110, 3409, 3111, 3116, 3409, 3119, 3112, 3120,
+     3118, 3121, 3122, 3409, 3409, 3409, 3409, 3124, 3127, 3129,
+     3130, 3132, 3135, 3131, 3133, 3141, 3134, 3152, 3153, 3136,
+     3144, 3160, 3154, 3409, 3162, 3145, 3170, 3171, 3167, 3163,
+     3169, 3172, 3173, 3174, 3178, 3175, 3179, 3180, 3182, 3189,
+     3193, 3195, 3197, 3196, 3204, 3206, 3203, 3207, 3208, 3214,
+     3211, 3212, 3409, 3213, 3216, 3217, 3219, 3220, 3223, 3222,
+     3233, 3237, 3224, 3239, 3231, 3243, 3240, 3244, 3245, 3248,
+     3249, 3409, 3252, 3254, 3255, 3256, 3260, 3258, 3262, 3265,
+
+     3270, 3271, 3273, 3280, 3276, 3409, 3282, 3409, 3409, 3284,
+     3267, 3285, 3291, 3293, 3409, 3409, 3409, 3317, 3324, 3331,
+     3338, 3345,   94, 3352, 3359, 3366, 3373, 3380, 3387, 3394,
+     3401
     } ;
 
-static yyconst flex_int16_t yy_def[1719] =
+static yyconst flex_int16_t yy_def[1732] =
     {   0,
-     1704,    1, 1705, 1705, 1706, 1706, 1707, 1707, 1708, 1708,
-     1709, 1709, 1704, 1710, 1704, 1704, 1704, 1704, 1711, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1712,
-     1704, 1704, 1704, 1712, 1713, 1704, 1704, 1704, 1713, 1714,
-     1704, 1704, 1704, 1704, 1714, 1715, 1704, 1704, 1704, 1715,
-     1716, 1704, 1717, 1704, 1716, 1716, 1710, 1710, 1704, 1718,
-     1711, 1718, 1711, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1712, 1712, 1713, 1713, 1714, 1714, 1704,
-     1715, 1715, 1716, 1716, 1717, 1717, 1716, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1716, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1716, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1716, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1716,
-     1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1704, 1710, 1704, 1704, 1710, 1704, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1716, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1704, 1716, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1704, 1710,
-     1710, 1710, 1704, 1710, 1704, 1710, 1704, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1704, 1710, 1710, 1710, 1710, 1710, 1704, 1704, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1704,
-     1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1704, 1710, 1710, 1710, 1710, 1704, 1710, 1704,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1704, 1710, 1710, 1704, 1710, 1710, 1710, 1704, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1704, 1704, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710,
-     1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1704, 1710, 1704, 1710, 1710,
-     1710, 1710, 1704, 1710, 1710, 1704, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1704, 1704, 1710, 1704,
-     1704, 1704, 1710, 1704, 1704, 1710, 1710, 1704, 1710, 1704,
-
-     1710, 1710, 1710, 1710, 1710, 1704, 1710, 1704, 1710, 1710,
-     1710, 1704, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1704, 1710, 1704, 1704, 1710,
-     1710, 1710, 1710, 1710, 1704, 1710, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1704, 1704, 1704, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1710, 1704, 1704, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1704, 1710, 1704, 1710, 1704, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1704, 1704, 1710, 1704, 1704, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1704, 1710, 1704, 1710, 1710, 1710,
-     1710, 1710, 1710, 1704, 1710, 1710, 1710, 1704, 1704, 1704,
-     1710, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-
-     1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1704, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710, 1704, 1710,
-     1704, 1710, 1710, 1710, 1710, 1704, 1704, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1704, 1710,
-     1710, 1710, 1710, 1704, 1704, 1704, 1710, 1704, 1710, 1704,
-     1710, 1704, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1704, 1704, 1710, 1704, 1710, 1710,
-
-     1704, 1710, 1710, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1704, 1704, 1704, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1704, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1704, 1710,
-     1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
-     1710, 1710, 1704, 1710, 1704, 1704, 1710, 1710, 1710, 1710,
-
-     1710, 1704, 1704,    0, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704
+     1717,    1, 1718, 1718, 1719, 1719, 1720, 1720, 1721, 1721,
+     1722, 1722, 1717, 1723, 1717, 1717, 1717, 1717, 1724, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1725,
+     1717, 1717, 1717, 1725, 1726, 1717, 1717, 1717, 1726, 1727,
+     1717, 1717, 1717, 1717, 1727, 1728, 1717, 1717, 1717, 1728,
+     1729, 1717, 1730, 1717, 1729, 1729, 1723, 1723, 1717, 1731,
+     1724, 1731, 1724, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1725, 1725, 1726, 1726, 1727, 1727, 1717,
+     1728, 1728, 1729, 1729, 1730, 1730, 1729, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1729, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1729, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1729, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1729, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1717, 1717, 1723, 1717, 1717, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1729, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1717, 1729, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723,
+     1723, 1723, 1723, 1723, 1717, 1723, 1717, 1723, 1723, 1723,
+     1717, 1723, 1717, 1723, 1717, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1717, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1717, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1717, 1723,
+
+     1717, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1717, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1717, 1723, 1723, 1717, 1723, 1723, 1723, 1717,
+     1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1717, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1717,
+     1723, 1723, 1723, 1723, 1717, 1723, 1717, 1723, 1717, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1717,
+
+     1717, 1723, 1717, 1717, 1717, 1723, 1717, 1717, 1723, 1723,
+     1717, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1717, 1723, 1723, 1723, 1717, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1717, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1717, 1717, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723,
+     1723, 1717, 1723, 1723, 1723, 1723, 1717, 1717, 1717, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1717, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1717, 1723, 1717,
+     1723, 1717, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1717, 1717, 1723, 1717, 1717, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1717,
+     1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+
+     1717, 1717, 1717, 1723, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1723,
+     1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717,
+     1723, 1717, 1723, 1717, 1723, 1723, 1723, 1723, 1717, 1717,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1717, 1717, 1723, 1723, 1723, 1723, 1717, 1717, 1717, 1723,
+     1717, 1723, 1717, 1723, 1717, 1723, 1723, 1717, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1717, 1717, 1723,
+     1717, 1723, 1723, 1717, 1723, 1723, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1717, 1717, 1717, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+     1723, 1717, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+     1723, 1723, 1723, 1723, 1723, 1717, 1723, 1717, 1717, 1723,
+     1723, 1723, 1723, 1723, 1717, 1717,    0, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717
     } ;
 
-static yyconst flex_int16_t yy_nxt[3424] =
+static yyconst flex_int16_t yy_nxt[3449] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -1000,7 +1005,7 @@ static yyconst flex_int16_t yy_nxt[3424] =
        48,   69,   44,   46,   47,   70,   49,   48,   57,   58,
        59,   68,   68,   49,   51,   52,   53,   54,   60,   18,
        57,   58,   59,  124,  124,   55,   51,   52,   53,   54,
-       60,   18,   68,  104,  217,   74,   75,   55,   15,   16,
+       60,   18,   68,  104,  219,   74,   75,   55,   15,   16,
        17,   62,   63,   64,   67,   67,   68,   67,   67,   65,
 
        67,   95,   68,   76,   68,   67,   85,   68,   66,   15,
@@ -1011,367 +1016,369 @@ static yyconst flex_int16_t yy_nxt[3424] =
        97,   81,   68,   92,   82,   93,   83,   84,   98,   68,
        68,  101,   68,  139,   99,  102,   68,  117,  100,  118,
        68,  105,  140,   68,  109,  113,  134,  106,  110,   68,
-      107,  103,   68,   68,  119,  114,  141,  108,  111,  115,
-      116,  112,   68,  120,   68,  122,  143,  155,  121,  123,
+      107,  103,   68,   68,  119,  114,  132,  108,  111,  115,
+      116,  112,   68,  120,   68,  122,  144,  156,  121,  123,
 
-      128,   68,  128,  128,   72,  128,   72,   72,  133,   72,
+      128,  143,  128,  128,   72,  128,   72,   72,  133,   72,
       133,  133,   68,  133,   67,  136,   67,   67,   68,   67,
-       68,   68,   68,  146,   67,   72,   68,   72,   72,  148,
-       72,  147,  150,  144,   68,   72,   73,   68,  142,   68,
-      145,   68,   68,   68,  160,  154,  151,  149,   68,   68,
-       68,  157,   68,   68,  158,  152,  156,  153,  162,   68,
-       68,   68,  161,  164,   68,  168,  167,  165,  159,   68,
-       68,  169,  170,   68,  166,   68,  171,   68,  163,  174,
-       68,   68,   68,  172,   68,  176,   68,  184,   68,  177,
-       68,   68,   68,  173,   68,  175,   68,  180,   68,  186,
-
-       68,  178,  179,  181,   68,  182,  185,   68,  183,  188,
-       68,   68,  189,  191,   68,  193,  194,  124,  124,  187,
-      126,  190,  200,  126,  128,  195,  128,  128,   68,  128,
-      131,  131,   68,  133,  192,  133,  133,   72,  133,   72,
-       72,  134,   72,  199,  196,   68,  198,  201,  136,   68,
-      197,   68,  203,   68,   68,  206,   68,   68,  204,  205,
-       68,  207,   68,   68,   68,  214,   68,  216,   68,  202,
-      218,   68,  215,  219,   68,   68,   68,   68,  245,   68,
-      226,   68,  225,  208,   68,  220,   68,  222,  209,  221,
-      223,  230,  232,  210,  224,  234,   68,   68,  211,  227,
-
-       68,  228,  229,  233,  212,  213,   68,  231,   68,   68,
-      237,   68,   68,  239,  240,   68,  238,  235,   68,   68,
-       68,   68,   68,   68,   68,   68,  247,  241,  242,  244,
-      236,   68,  243,  246,   68,   68,   68,  254,   68,  248,
-      250,   68,   68,  256,  258,   68,   68,   68,  262,   68,
-       68,  249,  257,   68,  252,  253,  251,  264,  255,  260,
-       68,  261,   68,  134,   68,  259,  265,  270,   68,  268,
-       68,  263,   68,   68,   68,  267,  269,   68,  271,   68,
-       68,   68,   68,  266,  276,  272,   68,  274,   68,  277,
-      278,  523,  273,   68,   68,  279,   68,  280,  281,   68,
-
-       68,  282,  275,  283,   68,   68,  286,   68,  284,   68,
-      288,   68,  289,  287,  285,  290,   68,   68,   68,   68,
-       68,   68,  295,   68,   68,   68,   68,   68,  297,  300,
-      301,   68,  294,   68,   68,  292,  291,   68,  299,  293,
-       68,  296,   68,  298,   68,  302,  305,   68,  303,  309,
-      310,  304,  311,   68,   68,  307,  308,  312,   68,   68,
-       68,  306,  317,   68,   68,   68,   68,  319,   68,  316,
-      318,   68,  323,   68,  315,  313,   68,   68,  314,  320,
-      321,  325,   68,   68,   68,  326,   68,  327,   68,  333,
-       68,  322,   68,  324,   68,  332,   68,  328,   68,   68,
-
-      329,  334,  339,  330,   68,  331,   68,  337,   68,  335,
-      336,  134,  338,   68,   68,   68,   68,  350,  340,  349,
-      341,   68,   68,  342,  343,  355,   68,   68,  353,  357,
-       68,  358,  351,  344,  352,  345,  346,  347,  359,   68,
-      348,   68,  354,   68,  362,   68,  356,  360,   68,   68,
-      364,  365,  366,  361,   68,   68,   68,  363,   68,   68,
-      371,   68,   68,   68,   68,  372,   68,   68,  367,  378,
-       68,  368,  369,  370,  379,  375,  377,  374,   68,  381,
-      373,   68,   68,   68,   68,  383,   68,  380,  376,  382,
-       68,  384,   68,   68,  387,  386,  388,  385,   68,   68,
-
-       68,   68,   68,  393,  392,   68,   68,  389,  390,   68,
-      391,  394,   68,  396,   68,  397,   68,   68,   68,   68,
-       68,   68,   68,   68,  399,   68,  395,  400,  406,  401,
-      398,  405,  408,  407,   68,  404,   68,   68,   68,  402,
-      403,   68,   68,   68,   68,  412,   68,   68,  414,   68,
-       68,  424,  409,  426,   68,   68,   68,  413,  410,  411,
-      415,  425,   68,  423,   68,  416,   68,  417,   68,  422,
-       68,  428,  418,   68,  419,  427,   68,  430,   68,  429,
-       68,  434,  420,  431,   68,  432,  435,   68,   68,  436,
-      134,   68,  421,  433,  440,  441,  437,   68,   68,  438,
-
-       68,  445,   68,  439,  444,   68,   68,   68,   68,  442,
-      448,   68,   68,   68,  450,  453,  443,  446,  447,  454,
-       68,  456,   68,  449,  457,   68,  455,  458,  451,  459,
-       68,  452,   68,  460,   68,  461,   68,   68,   68,   68,
-       68,  465,  463,  464,   68,   68,   68,  469,  466,   68,
-      467,   68,   68,   68,  470,   68,   68,  462,  468,  472,
-       68,  475,  478,   68,  473,  471,   68,   68,  474,  477,
-       68,  476,  479,  480,   68,   68,   68,   68,  481,  484,
-      483,  485,   68,  488,   68,   68,   68,   68,   68,  490,
-      489,   68,   68,  486,  487,  491,  492,   68,   68,  132,
-
-      482,  494,  495,  493,   68,   68,   68,  496,  498,  501,
-      497,  500,  499,   68,   68,  502,   68,  505,   68,  503,
-      507,  506,   68,   68,   68,   68,  509,   68,   68,   68,
-       68,   68,   68,   68,  504,  514,   68,   68,   68,  515,
-       68,  519,  508,  510,  522,  511,   68,  512,  516,  513,
-      517,  518,   68,  521,   68,   68,  520,  526,   68,  524,
-       68,   68,   68,   68,   68,  528,  529,   68,  531,  530,
-       68,  525,  532,  527,   68,   68,  134,  534,   68,   68,
-      541,  537,  533,  535,   68,   68,   68,  538,  542,  536,
-      539,  543,   68,   68,   68,   68,   68,  544,   68,  540,
-
-       68,   68,  547,  546,  545,   68,   68,   68,   68,   68,
-      130,  559,  558,  548,  557,  555,  560,   68,  556,  572,
-       68,   68,  568,  549,   68,   68,  569,   68,  571,  550,
-       68,   68,  574,  551,  570,   68,  552,  573,   68,  576,
-      578,   68,  575,  553,  577,   68,  554,   68,  561,  562,
-       68,  563,   68,   68,  564,   68,  583,   68,   68,  565,
-       68,  582,   68,  590,  579,  566,  567,  586,  587,   68,
-      580,  581,  584,  588,  589,   68,  585,   68,   68,   68,
-       68,  591,   68,   68,   68,  592,  597,   68,  593,  595,
-      596,   68,  599,   68,   68,   68,   68,   68,  602,  598,
-
-      594,   68,  604,  601,   68,   68,   68,   68,  606,   68,
-      603,   68,  600,   68,  609,   68,  607,   68,   68,  605,
-       68,   68,  615,   68,  614,   68,   68,  608,  610,   68,
-       68,  611,  618,   68,  129,  612,  620,  613,  616,  619,
-      617,   68,  623,  622,  624,  625,  621,   68,   68,   68,
-       68,   68,  626,   68,  630,  628,  631,   68,   68,   68,
-      627,   68,  632,  635,   68,  637,   68,   68,   68,  638,
-      134,  634,  629,   68,   68,  633,   68,  640,   68,   68,
-       68,   68,  639,  650,  636,   68,   68,   68,   68,   68,
-      654,  657,  643,  641,   68,  651,  653,   68,  127,   68,
-
-      642,   68,  655,  656,  644,  665,  645,   68,   68,  658,
-      646,  652,  647,  659,   68,   68,   68,  648,  663,  661,
-      666,  662,  649,  660,   68,   68,   68,  667,  671,  664,
-       68,   68,  668,   68,  669,  672,   68,  675,  673,   68,
-       68,  677,   68,  674,  676,  680,   68,   68,  682,   68,
-       68,  681,  670,   68,  678,   68,   68,   68,  683,   68,
-       68,  679,  686,  685,   68,   68,   68,   68,  684,  695,
-      691,   68,   68,  689,   68,  687,  688,   68,  690,   68,
-      694,  693,   68,   68,   68,  125,  692,  699,  700,  701,
-       68,  696,   68,  703,  698,  697,  704,   68,  705,  702,
-
-      709,   68,  706,   68,   68,  707,   68,   68,  708,   68,
-       68,   68,   68,  713,   68,   68,   68,  715,   68,  716,
-       68,  717,  711,   68,   68,  721,  710,  720,   68,  712,
-      719,   68,  714,   68,  718,   68,  723,   68,  722,   68,
-       68,  724,  728,   68,   68,  729,   68,  731,   68,  734,
-      725,  735,  727,   68,   68,  726,   68,  732,  737,   68,
-      733,  730,   68,   68,   68,  741,   68,   68,  736,   68,
-       68,   68,   68,   68,   68,  749,  740,  739,  750,  743,
-       68,  738,   68,   68,  742,   68,  744,  746,   68,  747,
-      751,   68,  748,   68,   68,   68,  745,  755,  754,   68,
-
-      759,   68,  752,   68,   68,  753,   68,   68,  763,   68,
-      757,   68,  761,  756,  764,   68,   68,   68,  758,  767,
-       68,  760,  765,   68,  762,  766,   68,   68,  770,  769,
-       68,   68,  772,   68,   68,  768,   68,  774,   68,   68,
-      775,  778,   68,   68,   68,  771,   68,   68,   68,  773,
-       68,  776,  783,  777,  779,  787,   68,   68,  780,  786,
-       68,   68,  782,  784,  781,  789,   68,  785,  792,   68,
-      788,  791,  793,   68,   68,  795,   68,   68,  798,   68,
-      799,  790,   68,   68,   68,   68,  797,  800,  794,  796,
-      801,   68,  802,  803,   68,   68,   68,  807,  808,  804,
-
-       68,   68,   68,   68,   68,  809,   68,   68,  810,  805,
-      811,   68,   68,   68,  806,  812,  816,  813,  815,  814,
-      819,  817,   68,   68,  820,   68,   68,  821,   68,  818,
-       68,  823,  827,   68,   68,  829,   68,   68,   68,   68,
-      824,  822,  830,  831,  833,   68,  825,   68,   68,  828,
-      835,   68,   68,  836,   68,  826,  832,  837,   68,  839,
-       68,   68,   68,  842,   68,   68,  841,  834,  840,   68,
-      846,  844,  838,  847,   68,   68,  845,   68,   68,  848,
-      849,   68,  843,   68,   68,   68,  850,  853,   68,   68,
-      856,   68,   68,   68,  852,   68,   68,  860,   68,   68,
-
-      851,   68,   68,   68,  854,   68,   68,  864,   68,   68,
-      859,  857,  855,  858,  866,  869,  867,   68,  861,  863,
-      868,   68,  872,  873,  862,  870,  865,   68,   68,  871,
-       68,   68,   68,   68,  874,   68,   68,   68,   68,   68,
-       68,  879,  875,  882,   68,   68,   68,   68,   68,   68,
-       68,  876,   68,  878,  885,  880,  890,  889,  881,  877,
-       68,  886,  883,  887,  884,  891,  888,   68,  892,   68,
-       68,   68,   68,   68,  898,  899,  893,  895,  897,   68,
-       68,   68,  900,   68,  894,  901,   68,   68,  903,   68,
-      902,  896,  906,  908,   68,   68,  907,   68,   68,   68,
-
-       68,  904,  914,   68,   68,   68,   68,   68,  905,  913,
-       68,   68,   68,   68,  909,   68,  922,  910,   68,  912,
-      919,   68,  924,  915,  916,  911,  923,   68,  921,  917,
-      918,   68,   68,  920,  931,   68,   68,   68,  927,   68,
-      925,  926,  928,   68,  932,  935,   68,  933,   68,  939,
-       68,  930,   68,  937,   68,  929,   68,  934,   68,  938,
-      940,   68,  941,   68,  936,   68,   68,  943,  942,   68,
-       68,  944,   68,  949,   68,  947,   68,  945,   68,  951,
-       68,   68,   68,  946,   68,   68,  954,  948,   68,   68,
-      956,   68,  953,   68,  959,   68,  950,   68,   68,   68,
-
-      963,   68,  952,  955,  964,  958,  957,  965,  967,  960,
-       68,   68,   68,   68,   68,  961,   68,  962,  969,   68,
-      970,  966,   68,  972,  968,   68,   68,   68,  973,  975,
-       68,  978,  976,   68,   68,  971,   68,   68,  979,  980,
-       68,  984,  981,  983,  977,  974,   68,   68,  985,   68,
-       68,   68,  982,  987,  990,   68,  989,   68,   68,   68,
-      993,   68,  992,  994,   68,   68,   68,  986,   68,   68,
-      988,   68, 1001,   68,   68,   68,   68,   68,  991,  134,
-      999, 1005,  995,  998, 1000,  996,  997,   68,   68,   68,
-       68, 1011,   68, 1002, 1003, 1007, 1004,   68, 1008,   68,
-
-     1012, 1009, 1006,   68, 1013,   68, 1010,   68,   68,   68,
-     1020, 1021,   68,   68, 1015,   68,   68, 1017, 1019, 1014,
-     1018,   68,   68,   68,   68,   68, 1016,   68, 1028, 1023,
-       68,   68, 1031, 1022,   68, 1030, 1025,   68,   68, 1024,
-     1036, 1029, 1027,   68, 1038,   68, 1032, 1033, 1026,   68,
-     1034,   68, 1035, 1041,   68, 1037,   68, 1039,   68, 1043,
-       68,   68,   68, 1040,   68, 1044, 1049, 1042, 1045,   68,
-       68,   68,   68,   68, 1046,   68,   68, 1053,   68,   68,
-     1047, 1054,   68, 1048, 1055, 1050,   68, 1056, 1051, 1060,
-       68,   68, 1052, 1059,   68, 1057,   68, 1064, 1058,   68,
-
-       68,   68,   68, 1068,   68, 1061, 1062, 1067, 1063,   68,
-       68, 1065, 1069, 1070,   68, 1072,   68,   68, 1066, 1071,
-       68,   68,   68,   68,   68, 1074,   68,   68,   68, 1073,
-     1075, 1078, 1084, 1079, 1076, 1083,   68,   68, 1077,   68,
-       68,   68,   68, 1082, 1088,   68, 1080, 1081, 1090,   68,
-     1091,   68,   68, 1093,   68,   68, 1092, 1094,   68, 1086,
-     1085, 1087, 1089, 1095, 1097,   68, 1099,   68,   68,   68,
-       68, 1100, 1101, 1096,   68,   68,   68,   68,   68,   68,
-       68, 1111,   68,   68,   68, 1113, 1102, 1103, 1104,   68,
-     1098,   68,   68, 1105, 1109, 1106, 1107,   68, 1108,   68,
-
-     1110, 1115, 1116,   68, 1117,   68, 1118,   68, 1121, 1112,
-       68, 1114,   68,   68, 1119, 1125,   68,   68, 1124,   68,
-       68, 1128,   68, 1120,   68, 1130, 1127,   68, 1123, 1129,
-       68,   68,   68,   68, 1133,   68, 1122, 1126,   68, 1136,
-       68,   68, 1132,   68,   68, 1142,   68, 1131,   68, 1140,
-     1134,   68,   68, 1141, 1138, 1137, 1139, 1145,   68, 1135,
-     1148,   68, 1143, 1149,   68,   68, 1147, 1144, 1150, 1146,
-     1152,   68, 1151,   68, 1155,   68,   68,   68,   68,   68,
-       68, 1157,   68, 1154, 1160,   68, 1162, 1153, 1156,   68,
-     1158,   68,   68, 1165,   68, 1164,   68, 1163, 1166,   68,
-
-       68,   68, 1167,   68, 1161, 1159, 1168,   68,   68, 1169,
-       68,   68, 1172, 1171, 1174,   68, 1170,   68,   68,   68,
-       68,   68, 1173,   68, 1179, 1181, 1176,   68, 1180,  132,
-       68, 1175,   68, 1183,   68, 1182, 1177,   68, 1178, 1188,
-       68,   68,   68, 1186, 1184, 1185, 1187,   68, 1191,   68,
-     1193,   68,   68,   68, 1194,   68, 1189, 1195,   68, 1192,
-       68, 1190, 1196,   68, 1198,   68,   68,   68,   68, 1199,
-       68, 1197,   68,   68,   68,   68,   68, 1208, 1201, 1202,
-     1203, 1207,   68, 1210,   68, 1204, 1200, 1212,   68,   68,
-       68,   68, 1205, 1206,   68, 1214, 1215,   68, 1211,   68,
-
-     1209,   68, 1216, 1220, 1217,   68,   68,   68,   68, 1218,
-     1221,   68,   68, 1224,   68, 1213,   68,  130, 1227,   68,
-       68, 1219, 1225,   68, 1228, 1222, 1223,   68, 1230, 1229,
-       68, 1226,   68,   68, 1233,   68,   68,   68,   68, 1231,
-     1239, 1236, 1232, 1237, 1234, 1235,   68,   68,   68,   68,
-     1238,   68,   68, 1241, 1242, 1246,   68,   68, 1248,   68,
-       68, 1245, 1240,   68, 1243,   68, 1247, 1250,   68,   68,
-     1251, 1253,   68,   68, 1256,   68, 1244, 1254,   68, 1249,
-       68, 1252, 1255,   68, 1257,   68,   68, 1261,   68,   68,
-     1258, 1260,   68,   68, 1263,   68,   68,   68, 1259,   68,
-
-     1266, 1269,   68, 1270,   68,   68,   68,   68, 1265,   68,
-     1262, 1272,   68, 1268, 1267, 1264,   68,   68,   68, 1271,
-       68, 1281,   68,   68,   68,  129, 1274, 1282,   68,   68,
-     1279, 1273, 1275,   68, 1302, 1277, 1276, 1284, 1278,   68,
-     1286, 1280, 1283, 1287,   68,   68, 1285, 1288,   68, 1290,
-       68, 1291,   68, 1292,   68,   68, 1294,   68, 1289, 1295,
-       68,   68,   68, 1298,   68,   68,   68, 1297, 1300,   68,
-       68,   68,   68,  127, 1293, 1303,   68, 1304, 1306,   68,
-     1296, 1308,   68,   68, 1299, 1307,   68,   68, 1301,   68,
-     1311,   68, 1305,   68, 1309, 1312,   68,   68, 1310, 1314,
-
-       68,   68, 1316,   68,   68, 1318, 1313,   68,   68, 1319,
-     1321,   68, 1317, 1323,   68, 1315, 1320,   68,   68, 1328,
-       68,   68,  125, 1325,   68, 1329, 1324, 1326, 1322,   68,
-     1333, 1327,   68, 1332,   68,   68,   68, 1334, 1331,   68,
-     1330,   68,   68,   68, 1338, 1335,   68, 1339,   68, 1336,
-       68, 1337, 1341,   68, 1342,   68,   68, 1344,   68,   68,
-     1343,   68, 1345, 1340,   68, 1348,   68, 1347,   68,   68,
-     1349, 1350, 1346, 1351,   68,   68,   68,   68,   68, 1353,
-     1352, 1355,   68, 1354, 1358,   68, 1525, 1357,   68,   68,
-     1362, 1359,   68, 1361, 1360,   68, 1356,   68,   68, 1364,
-
-     1363,   68, 1365, 1366,   68,   68, 1368,   68, 1369,   68,
-     1367, 1370,   68, 1371, 1372,   68,   68,   68, 1375,   68,
-     1376,   68, 1374,   68,   68,   68, 1379,   68,   68, 1380,
-     1381,   68, 1384,   68,   68,   68,   68, 1373, 1378, 1377,
-     1383, 1385,   68, 1386,   68, 1382, 1387,   68,   68,   68,
-       68,   68, 1394,   68, 1388, 1392,   68,   68,   68, 1389,
-     1390, 1391,   68,   68,   68, 1395,   68,   68,   68, 1404,
-       68, 1393, 1402, 1403,   68, 1398, 1405,   68, 1397,   68,
-     1400,   68, 1401, 1396,   68,   68,   68, 1399,   68,   68,
-     1413, 1414,   68,   68, 1406, 1410,   68, 1407,   68,   68,
-
-       68,   68, 1415, 1408, 1409, 1411, 1412, 1416,   68, 1422,
-       68, 1417,   68, 1423,   68,   68, 1418, 1419,   68,   68,
-     1421,   68,   68,   68, 1420,   68, 1430, 1431,   68, 1425,
-     1424,   68,   68,   68, 1426,   68, 1434, 1435,   68, 1427,
-     1428,   68, 1429, 1433, 1437,   68, 1432,   68, 1436, 1439,
-       68,   68, 1438, 1440,   68,   68, 1441,   68,   68,   68,
-     1443,   68, 1444, 1442, 1445,   68, 1446,   68,   68, 1447,
-     1449,   68, 1450, 1448, 1452,   68, 1453,   68,   68, 1454,
-     1455,   68, 1457, 1451,   68, 1456,   68,   68,   68,   68,
-       68,   68, 1458, 1461, 1459,   68, 1463,   68,   68, 1460,
-
-       68, 1465,   68, 1462,   68,   68,   68, 1470,   68, 1464,
-       68,   68,   68, 1468, 1469, 1467,   68, 1471, 1466, 1475,
-       68, 1476, 1477,   68,   68,   68,   68,   68,   68, 1472,
-     1479, 1473, 1478,   68, 1483, 1474, 1480, 1484,   68, 1481,
-       68,   68, 1486, 1482,   68, 1488,   68, 1487, 1489,   68,
-     1490,   68,   68,   68, 1493, 1494,   68,   68,   68,   68,
-     1485, 1495,   68,   68, 1496,   68,   68, 1492, 1499,   68,
-     1491,   68, 1503,   68,   68,   68,   68, 1507,   68, 1497,
-     1498,   68, 1505, 1500,   68, 1502, 1501,   68, 1504,   68,
-     1508,   68, 1510,   68, 1506,   68,   68, 1509, 1511, 1516,
-
-     1513,   68, 1518,   68,   68,   68, 1704,   68, 1519,   68,
-     1512,   68,   68, 1514, 1520, 1515,   68,   68, 1522, 1517,
-     1521, 1523, 1526, 1524,   68, 1527,   68,   68,   68,   68,
-       68,   68, 1529, 1534, 1533, 1528, 1532, 1530,   68, 1536,
-       68,   68,   68, 1539,   68,   68,   68,   68,   68, 1540,
-     1531,   68,   68,   68,   68, 1535, 1541, 1538, 1545, 1544,
-     1537,   68, 1542, 1547,   68, 1549,   68, 1543,   68,   68,
-     1551,   68,   68, 1548, 1550,   68, 1553,   68, 1546, 1556,
-       68, 1552, 1554, 1557,   68,   68,   68, 1561,   68,   68,
-       68,   68,   68, 1565, 1555, 1563, 1558, 1559,   68,   68,
-
-       68, 1562, 1568,   68, 1569,   68, 1560,   68,   68, 1704,
-     1564, 1570, 1571, 1573, 1572, 1704, 1566, 1567, 1574,   68,
-     1575,   68, 1576,   68,   68, 1578,   68,   68, 1579, 1577,
-     1580,   68,   68, 1582,   68,   68,   68, 1585,   68,   68,
-     1583, 1581,   68,   68, 1584,   68,   68, 1586, 1587,   68,
-       68,   68, 1595,   68,   68, 1593,   68, 1588, 1596,   68,
-     1597, 1589,   68, 1590, 1591, 1598,   68,   68,   68, 1602,
-     1592, 1594, 1599, 1601,   68,   68, 1600, 1604,   68,   68,
-       68,   68,   68,   68, 1704, 1603, 1608, 1609, 1611,   68,
-     1612,   68, 1613,   68, 1606, 1614,   68,   68,   68, 1616,
-
-     1605, 1607, 1610, 1617,   68,   68,   68,   68,   68, 1615,
-     1619,   68,   68,   68,   68,   68, 1623,   68, 1618,   68,
-       68,   68,   68, 1622,   68, 1620, 1633, 1625,   68, 1621,
-     1631,   68,   68, 1624, 1626, 1627, 1628, 1630,   68,   68,
-     1637, 1632, 1638, 1634, 1629,   68,   68,   68, 1641, 1635,
-     1642,   68,   68,   68, 1636,   68,   68,   68,   68,   68,
-       68, 1639,   68,   68,   68, 1643, 1640,   68, 1651, 1644,
-     1704, 1645, 1646, 1648,   68, 1649, 1647,   68, 1650, 1652,
-       68, 1654, 1655, 1653,   68,   68, 1658, 1659,   68, 1656,
-     1657,   68,   68, 1660,   68, 1661,   68, 1664,   68,   68,
-
-       68,   68,   68,   68,   68, 1667,   68,   68, 1671, 1672,
-     1662,   68, 1666,   68, 1674, 1663,   68, 1665,   68, 1670,
-     1668, 1676, 1669,   68, 1675, 1677,   68, 1679,   68,   68,
-     1673,   68,   68,   68,   68,   68, 1680,   68, 1681, 1683,
-     1685,   68, 1686,   68,   68, 1678,   68, 1689,   68,   68,
-     1692, 1682, 1684, 1693,   68, 1695,   68,   68, 1696,   68,
-     1687,   68, 1688, 1690, 1694,   68,   68, 1691, 1697,   68,
-     1698, 1699,   68, 1702,   68, 1703,   68, 1704, 1704, 1704,
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1700, 1704,
-     1704, 1701,   40,   40,   40,   40,   40,   40,   40,   45,
-
-       45,   45,   45,   45,   45,   45,   50,   50,   50,   50,
-       50,   50,   50,   56,   56,   56,   56,   56,   56,   56,
-       61,   61,   61,   61,   61,   61,   61,   71,   71, 1704,
-       71,   71,   71,   71,  124,  124, 1704, 1704, 1704,  124,
-      124,  126,  126, 1704, 1704,  126, 1704,  126,  128, 1704,
-     1704, 1704, 1704, 1704,  128,  131,  131, 1704, 1704, 1704,
-      131,  131,  133, 1704, 1704, 1704, 1704, 1704,  133,  135,
-      135, 1704,  135,  135,  135,  135,   72,   72, 1704,   72,
-       72,   72,   72,   13, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704
+       68,  141,   68,   68,   67,   72,   68,   72,   72,   68,
+       72,  148,  145,  149,  142,   72,   73,   68,   68,   68,
+      146,   68,   68,  151,   68,  147,  152,   68,  155,  161,
+      158,  150,   68,  159,   68,  153,  157,  154,   68,   68,
+      162,   68,  165,  163,   68,   68,  166,  160,  169,   68,
+       68,   68,  170,   68,   68,  168,  167,  172,  175,   68,
+       68,   68,  171,  164,  173,  177,   68,   68,   68,  178,
+       68,  185,   68,  174,   68,   68,   68,  176,   68,  187,
+
+      181,  179,   68,  182,   68,   68,  180,  186,   68,  183,
+      184,   68,  189,  192,   68,   68,  258,  195,  190,  188,
+      194,  124,  124,   68,  126,  191,  196,  126,  128,  134,
+      128,  128,  197,  128,  193,  131,  131,  133,  200,  133,
+      133,   72,  133,   72,   72,   68,   72,   68,  199,   68,
+      198,   68,  136,   68,   68,  201,  205,   68,   68,  208,
+      130,   68,  206,  207,   68,  209,  203,   68,  202,   68,
+      216,   68,   68,   68,  204,  220,  217,  218,  221,   68,
+       68,   68,   68,   68,   68,   68,  227,  210,   68,  232,
+       68,  228,  211,  222,   68,  223,  224,  212,   68,  225,
+
+      226,  231,  213,  230,   68,  233,  234,  236,  214,  215,
+      229,   68,   68,   68,   68,  239,   68,  235,  241,  238,
+       68,  240,  237,   68,  242,   68,   68,   68,   68,   68,
+       68,   68,  243,  244,  245,   68,  246,   68,   68,  248,
+      249,   68,  256,  250,   68,   68,  252,   68,  247,   68,
+      260,   68,   68,   68,  263,   68,  259,  251,   68,  129,
+      253,  264,  254,  255,  262,  257,   68,  266,  134,   68,
+      261,  267,   68,   68,  272,   68,   68,  270,   68,   68,
+      269,  271,  274,  273,  265,   68,   68,   68,  268,   68,
+      275,   68,  279,  277,  276,   68,  280,  281,   68,  282,
+
+       68,   68,  283,   68,   68,   68,   68,  284,  286,  289,
+      287,  278,   68,  288,   68,   68,  291,   68,  285,  293,
+       68,   68,  292,   68,   68,   68,  290,   68,  298,   68,
+       68,   68,  303,   68,  300,   68,   68,   68,  297,  295,
+      294,   68,   68,   68,  296,  302,  304,  299,  305,  301,
+      308,   68,  306,   68,   68,  307,  312,  313,  314,   68,
+       68,   68,   68,  309,  310,  311,   68,  320,   68,  315,
+       68,  319,   68,  322,   68,  321,  318,  316,   68,   68,
+      317,  326,   68,   68,   68,   68,   68,  336,  328,  323,
+      324,   68,   68,   68,  329,   68,  330,   68,  331,  325,
+
+       68,  332,  327,   68,  333,   68,  334,   68,  337,  335,
+      342,   68,  340,   68,  338,  339,  134,   68,   68,  341,
+       68,  127,   68,   68,   68,  344,  343,   68,  352,  345,
+      346,  353,   68,  356,   68,   68,  355,  354,  361,  347,
+      357,  348,  349,  350,  358,   68,  351,  359,  363,   68,
+      362,  366,  360,   68,  364,   68,   68,   68,   68,  365,
+      369,  370,  368,   68,   68,   68,   68,   68,   68,  375,
+      376,  367,   68,   68,   68,   68,   68,  388,  371,   68,
+      372,  373,  374,  379,  381,   68,   68,  378,  384,  383,
+      377,  382,  385,   68,   68,   68,  380,   68,  387,  386,
+
+      389,   68,   68,  391,  392,   68,   68,   68,   68,   68,
+       68,  397,  396,   68,  390,  394,   68,   68,  398,  395,
+       68,  400,   68,  401,   68,   68,  393,   68,   68,   68,
+       68,   68,  403,   68,  404,   68,   68,  399,  402,  405,
+      409,  410,  412,  411,  408,   68,   68,   68,  406,  407,
+       68,  413,   68,   68,   68,   68,  416,   68,  418,  428,
+       68,  417,   68,  430,   68,   68,   68,  414,   68,  429,
+      419,  415,   68,  432,  420,   68,  421,  426,  427,   68,
+      434,  422,   68,  423,   68,  431,   68,   68,  439,   68,
+       68,  424,   68,  433,  440,   68,  436,  435,  445,  441,
+
+      134,  425,  437,   68,  444,  438,   68,   68,   68,   68,
+      443,  442,  450,   68,   68,   68,   68,  449,  446,  453,
+       68,  448,   68,   68,  125,  447,  451,  452,   68,  458,
+       68,  455,  463,  459,   68,  454,  460,   68,  456,  461,
+       68,  457,  462,   68,  464,   68,  465,   68,  466,   68,
+      470,  467,   68,   68,  468,   68,  469,   68,   68,   68,
+      474,  471,   68,  472,   68,   68,   68,  475,   68,   68,
+      480,  477,   68,   68,   68,   68,  478,  483,  476,  473,
+      479,  494,   68,  484,  481,   68,  482,   68,  485,   68,
+       68,  486,   68,   68,  488,   68,  493,  490,   68,   68,
+
+       68,   68,  495,  489,   68,   68,   68,  492,  496,  491,
+       68,  497,  553,  487,  499,  500,  498,   68,   68,   68,
+      501,  503,  506,  502,   68,  504,   68,   68,   68,   68,
+      510,  508,  505,  507,  511,   68,   68,   68,  512,  514,
+       68,   68,   68,   68,   68,   68,  509,   68,  513,  519,
+       68,   68,  524,  520,   68,   68,  526,   68,  515,  516,
+       68,  517,  521,  518,  527,   68,  523,   68,  522,   68,
+       68,   68,  529,  525,   68,   68,  528,   68,   68,   68,
+      534,  533,  536,  537,  532,  530,  535,   68,   68,  531,
+       68,  134,   68,   68,   68,  539,  542,  543,   68,  540,
+
+       68,  546,  544,   68,   68,  538,  541,   68,  549,  547,
+       68,  550,  548,   68,  545,   68,  551,   68,   68,   68,
+       68,   68,   68,   68,   68,  566,  565,  564,  552,  563,
+       68,   68,   68,  554,  561,  562,  574,   68,  578,   68,
+      577,  575,  555,   68,   68,   68,  580,  581,  556,  576,
+       68,  579,  557,   68,  582,  558,   68,   68,   68,  583,
+       68,   68,  559,  584,   68,  560,   68,  567,  568,  585,
+      569,   68,  588,  570,   68,  589,  590,  586,  571,  587,
+       68,   68,  593,   68,  572,  573,  592,  594,  595,  591,
+       68,   68,   68,   68,  596,   68,  597,   68,  600,   68,
+
+       68,  603,   68,  598,  601,  599,   68,  602,  605,   68,
+       68,   68,   68,   68,  604,  608,   68,  610,   68,  607,
+       68,   68,   68,  612,   68,  609,   68,  615,  606,   68,
+       68,  613,   68,  611,   68,   68,   68,   68,  621,   68,
+       68,  620,  614,  626,   68,  616,  617,   68,  624,   68,
+      619,  618,  629,  622,  625,  623,   68,   68,  630,   68,
+      631,  628,   68,   68,  627,   68,   68,  634,  632,   68,
+      636,  633,  637,   68,   68,  641,  638,   68,   68,   68,
+       68,  643,   68,   68,  639,   68,  635,  640,  644,  134,
+       68,   68,   68,   68,  645,  646,   68,  657,  642,   68,
+
+       68,   68,  647,   68,  649,   68,  661,   68,  682,  648,
+      134,  658,  650,   68,  660,   68,  651,  662,  652,  663,
+       68,   68,  653,   68,  654,  659,  666,  664,   68,  655,
+      665,   68,   68,  668,  656,  673,  667,   68,   68,   68,
+       68,  670,   68,  672,  679,  669,  671,   68,  674,   68,
+      678,   68,   68,  675,   68,  676,  680,  683,   68,  684,
+       68,  681,  687,   68,  688,  689,   68,   68,  685,  690,
+       68,   68,   68,  677,   68,   68,   68,  686,   68,  693,
+       68,   68,   68,   68,  692,  698,  691,  696,   68,   68,
+      702,  694,  695,   68,  697,   68,  700,  701,   68,   68,
+
+       68,  699,  703,  706,  707,  708,   68,  704,  705,   68,
+      710,  711,   68,  712,   68,  709,   68,  713,   68,   68,
+      714,   68,   68,  715,  716,   68,   68,   68,  720,  718,
+       68,   68,  717,  724,   68,  722,  723,   68,  727,   68,
+       68,   68,  719,  726,   68,   68,   68,  721,  730,  728,
+      725,   68,   68,   68,   68,   68,   68,  735,   68,  729,
+      736,  738,  731,   68,  741,  732,  734,  739,  742,   68,
+       68,  733,  737,   68,   68,  740,  744,   68,   68,   68,
+      748,   68,   68,   68,   68,  743,   68,   68,   68,   68,
+       68,  747,  746,  745,  782,  750,   68,   68,  756,  749,
+
+      757,  751,  753,   68,  754,   68,   68,  755,  752,   68,
+      760,  758,   68,   68,  759,   68,  764,   68,  762,   68,
+      767,   68,   68,   68,   68,   68,  761,   68,  771,  769,
+      763,   68,  765,   68,   68,   68,  772,   68,  766,  774,
+      768,  773,   68,   68,  770,  775,  777,   68,  778,   68,
+       68,  776,  780,   68,  779,   68,   68,   68,   68,  783,
+      786,   68,   68,   68,   68,   68,   68,   68,  781,  787,
+      784,  785,  791,   68,  794,  797,  795,  788,  792,   68,
+      790,   68,  789,   68,  793,  800,   68,  796,  799,  801,
+       68,   68,  803,   68,   68,  806,   68,  807,   68,  798,
+
+       68,   68,   68,  805,   68,  802,  804,  808,   68,  809,
+       68,  810,  813,   68,   68,  815,  816,  811,  812,  814,
+       68,   68,   68,   68,   68,  823,   68,  817,  818,   68,
+      824,   68,  819,   68,   68,   68,   68,  820,  827,  821,
+       68,  822,  828,   68,  825,   68,   68,  829,  831,  826,
+      832,  835,   68,  830,  837,   68,   68,   68,   68,  838,
+      834,  836,  839,  833,  841,   68,   68,  843,   68,   68,
+      845,   68,   68,   68,  844,   68,   68,  840,  847,   68,
+      850,  849,   68,  848,   68,  132,  842,   68,  854,   68,
+      852,  855,  846,   68,  853,   68,   68,   68,  857,   68,
+
+      851,   68,  856,   68,  858,  861,   68,   68,  859,  864,
+      860,   68,   68,   68,   68,   68,   68,  869,   68,   68,
+       68,  862,   68,   68,   68,  867,   68,   68,  873,  875,
+      863,  865,  866,  868,   68,  878,  880,  876,  870,   68,
+      872,  877,   68,  874,  871,   68,  882,  879,   68,   68,
+       68,   68,  883,  886,   68,   68,   68,   68,   68,  881,
+      884,  888,  891,   68,   68,   68,   68,   68,   68,  885,
+       68,  898,  887,  889,   68,   68,   68,  890,   68,  894,
+      900,  892,  895,  893,   68,  896,   68,  897,   68,   68,
+      909,  899,  901,  903,  904,  902,   68,  905,  907,  908,
+
+       68,  906,   68,   68,   68,  910,   68,  912,   68,   68,
+      915,  917,   68,   68,  916,   68,   68,   68,  911,   68,
+       68,   68,  913,   68,  923,   68,  922,   68,  914,   68,
+       68,   68,  918,   68,   68,  919,   68,  931,  921,  932,
+      924,   68,  925,  920,  926,  928,  927,   68,  930,   68,
+       68,  929,   68,  933,  934,   68,  935,  936,  940,   68,
+       68,  937,   68,  944,   68,  941,  942,   68,   68,   68,
+      939,   68,  943,  963,  938,  948,  946,   68,  947,   68,
+       68,   68,  945,  949,   68,  950,   68,   68,   68,  952,
+      951,   68,  954,   68,  953,  955,  956,  958,   68,   68,
+
+       68,  960,   68,   68,   68,   68,   68,   68,  957,   68,
+      965,   68,  968,   68,  962,   68,   68,   68,  973,  959,
+      967,   68,   68,  964,  961,  966,  971,  974,   68,  969,
+       68,  975,  977,  970,   68,  972,   68,   68,  979,   68,
+      980,  976,  978,   68,  982,   68,   68,   68,   68,   68,
+      985,  988,   68,  986,  981,   68,   68,  983,  990,   68,
+      989,   68,  995,  994,  991,  987,  984,   68,   68,   68,
+      993,  997,   68,  992,   68, 1000,   68,   68,   68,  999,
+       68,   68, 1002, 1003,   68,   68, 1004,  996,   68,   68,
+       68,   68,  998, 1011,   68,   68, 1005,   68,   68, 1001,
+
+      130,   68, 1009, 1008, 1010, 1006, 1015,   68, 1007,   68,
+       68,   68, 1021,   68, 1012, 1013, 1017,   68, 1014,   68,
+     1018,   68, 1016, 1019, 1022,   68, 1020,   68, 1025,   68,
+     1023,   68, 1030, 1024, 1031,   68,   68,   68, 1027,   68,
+     1029, 1028,   68,   68,   68,   68, 1026,   68, 1038,   68,
+       68,  129, 1033,   68, 1041, 1040, 1032, 1035,   68,   68,
+     1034, 1046,   68, 1037,   68, 1039,   68, 1043, 1042, 1036,
+     1044, 1048,   68,   68, 1051,   68,   68, 1045, 1049,   68,
+     1047,   68,   68, 1055, 1050, 1053, 1052,   68,   68,   68,
+     1059, 1054,   68,   68, 1056,   68,   68,   68,   68,   68,
+
+     1063,   68, 1064, 1065, 1066, 1057,   68, 1058, 1060, 1062,
+     1067, 1061,   68, 1070,   68,   68,   68, 1075,   68,   68,
+       68,   68,   68, 1079,   68,   68,  127, 1069, 1080, 1068,
+     1071, 1072, 1073, 1076, 1074,   68, 1077, 1081,   68,   68,
+       68, 1078, 1083,   68,   68,   68,   68,   68, 1082, 1085,
+       68,   68, 1084,   68, 1086, 1089,   68,   68, 1087,   68,
+     1090, 1095, 1088, 1094,   68,   68,   68,   68, 1093, 1099,
+       68, 1101,   68, 1091, 1102,   68, 1092,   68, 1096, 1098,
+     1104, 1103,   68,   68, 1097,   68, 1105, 1100, 1106, 1108,
+       68, 1110,   68,   68,   68,   68, 1111, 1112,   68,   68,
+
+     1107,   68,   68,   68,   68,   68, 1122,   68,   68,   68,
+     1113, 1114, 1115,   68, 1124, 1109,   68, 1116, 1120, 1117,
+       68, 1118,   68, 1119,   68, 1126, 1121, 1127,   68, 1125,
+       68, 1129,   68, 1132, 1123, 1128,   68,   68,   68, 1130,
+     1136,   68,   68, 1135,   68,   68, 1139,   68, 1131, 1138,
+       68,   68,   68, 1134,   68, 1140,   68,   68,   68, 1144,
+     1141, 1137, 1133,   68, 1142,   68, 1143,   68, 1147,   68,
+     1145,   68,   68, 1148,   68, 1151, 1153,   68, 1156,   68,
+     1150, 1152, 1149, 1146,   68, 1154, 1159, 1160,   68, 1161,
+     1155,   68, 1157, 1162,   68, 1163,   68,   68, 1158, 1166,
+
+       68,   68,   68,   68,   68,   68, 1168, 1171,   68, 1165,
+       68, 1173,   68, 1167,   68, 1169,   68, 1175, 1176,   68,
+     1174,   68, 1164, 1177,   68,   68,   68,   68,   68,   68,
+     1170, 1179, 1172, 1180,   68, 1181, 1182,   68, 1184, 1183,
+       68, 1178, 1186,   68,   68,   68,   68,   68,   68, 1185,
+       68, 1191, 1193, 1188,   68, 1192,   68,   68,   68, 1195,
+     1187,   68, 1194, 1189,   68, 1190,   68, 1200,   68,   68,
+     1196, 1201, 1197, 1198, 1203, 1199,   68, 1205, 1204,   68,
+       68,   68, 1206, 1202, 1207,   68,   68,   68, 1208,   68,
+     1210,   68,   68,   68,   68,   68, 1211,   68,   68,   68,
+
+       68, 1220,   68,   68, 1213, 1214, 1209, 1215, 1219, 1216,
+       68,   68, 1212,   68, 1223, 1224,   68, 1217, 1218, 1222,
+     1221,   68,   68,   68, 1227,   68, 1226,   68, 1228, 1232,
+     1229, 1230,   68,   68,   68,   68,  125, 1225, 1233, 1236,
+       68,   68,   68, 1239,   68,   68, 1241, 1231,   68, 1235,
+     1240, 1234,   68,   68,   68, 1245, 1237,   68,   68,   68,
+       68,   68, 1238, 1243, 1242, 1248, 1244, 1246,   68, 1247,
+       68,   68, 1250, 1249,   68,   68,   68, 1253,   68,   68,
+     1254, 1251, 1258,   68, 1260,   68, 1252, 1257, 1259,   68,
+     1255,   68,   68,   68,   68, 1262,   68, 1263, 1265,   68,
+
+       68, 1256, 1266, 1267,   68, 1268, 1264,   68, 1261, 1269,
+       68,   68, 1270, 1274,   68,   68,   68,   68, 1272, 1271,
+     1273,   68, 1276,   68,   68,   68,   68, 1282,   68, 1279,
+       68,   68,   68,   68, 1283,   68,   68, 1285, 1278,   68,
+       68, 1275, 1281, 1280, 1277,   68, 1284,   68, 1294,   68,
+       68,   68,   68, 1295, 1287,   68,   68,   68, 1377, 1286,
+     1289, 1291, 1288, 1292, 1290, 1296,   68, 1299, 1293, 1297,
+     1298, 1300,   68, 1301,   68,   68, 1303,   68, 1304,   68,
+     1305,   68,   68, 1307,   68, 1308,   68,   68, 1302,   68,
+     1311,   68,   68,   68, 1310, 1313,   68,   68,   68, 1315,
+
+       68, 1306,   68, 1316,   68, 1317, 1309, 1319,   68, 1321,
+       68, 1312,   68,   68,   68, 1314,   68, 1320, 1324,   68,
+     1318, 1325,   68, 1327,   68, 1322,   68, 1323,   68, 1329,
+       68, 1331, 1326,   68,   68, 1330,   68,   68, 1332,   68,
+       68,   68, 1328, 1341, 1336,   68,   68, 1334,   68, 1338,
+     1339,   68, 1337,   68,   68, 1333,   68, 1335, 1342, 1340,
+     1344,   68, 1345, 1346,   68, 1347, 1343,   68,   68,   68,
+       68, 1349, 1351, 1348,   68, 1352, 1354,   68,   68, 1350,
+     1355,   68,   68, 1357,   68,   68,   68,   68, 1361,   68,
+     1364,   68, 1356, 1362, 1353,   68, 1358,   68, 1363, 1359,
+
+       68,   68, 1365,   68,   68, 1360,   68, 1368, 1371,   68,
+       68, 1370,   68,   68, 1375, 1367, 1372, 1374,   68,   68,
+     1366,   68, 1378,   68, 1369, 1373, 1376, 1379,   68,   68,
+     1381,   68, 1382,   68, 1380, 1383,   68, 1384,   68, 1385,
+       68,   68, 1388,   68, 1389,   68, 1387,   68,   68,   68,
+     1392,   68,   68, 1393, 1394,   68,   68, 1397,   68,   68,
+     1386, 1396, 1391, 1390, 1398,   68, 1399,   68,   68, 1395,
+       68, 1400,   68,   68,   68,   68, 1407,   68,   68, 1405,
+       68,   68, 1402,   68, 1403, 1404, 1401, 1408,   68,   68,
+       68,   68,   68,   68,   68, 1406, 1411, 1415, 1416, 1417,
+
+       68, 1410,   68, 1413, 1418,   68, 1409,   68, 1414,   68,
+       68, 1419, 1412,   68,   68, 1426, 1421,   68, 1423,   68,
+     1420, 1427,   68,   68,   68,   68, 1428, 1422,   68,   68,
+     1424, 1425, 1429, 1436, 1430, 1435,   68,   68,   68,   68,
+       68, 1431, 1432,   68, 1433,   68,   68,   68, 1434,   68,
+     1443, 1444,   68,   68, 1438, 1437,   68, 1448,   68, 1439,
+     1447,   68,   68, 1440, 1441,   68, 1442, 1446, 1445, 1450,
+       68, 1452,   68,   68, 1449, 1453,   68,   68, 1454,   68,
+       68, 1451, 1456,   68, 1457, 1458,   68, 1455,   68,   68,
+       68,   68, 1465,   68, 1460, 1462, 1463, 1466,   68,   68,
+
+     1467, 1717, 1459, 1461, 1464,   68, 1468,   68, 1469,   68,
+     1470,   68,   68,   68, 1474,   68, 1471,   68, 1472,   68,
+     1473,   68,   68,   68, 1476, 1475, 1478,   68,   68,   68,
+       68, 1483,   68, 1477,   68,   68, 1481,   68, 1482,   68,
+     1479, 1480,   68, 1484, 1488,   68, 1490,   68, 1489,   68,
+     1491, 1485,   68,   68, 1492, 1486, 1487,   68,   68, 1496,
+       68, 1493, 1497,   68,   68, 1499, 1494,   68, 1501,   68,
+     1500,   68, 1495, 1502,   68, 1503,   68,   68, 1506,   68,
+     1498, 1507,   68,   68,   68, 1509,   68,   68, 1508, 1504,
+       68, 1505, 1512,   68,   68,   68, 1516,   68,   68,   68,
+
+       68, 1520, 1518, 1510, 1511,   68, 1521,   68, 1513, 1515,
+       68,   68,   68, 1514,   68, 1523,   68, 1517, 1519,   68,
+       68,   68,   68, 1522, 1529, 1526, 1531,   68,   68, 1533,
+       68, 1524, 1532,   68, 1527,   68,   68,   68, 1525, 1528,
+     1530,   68, 1535, 1534, 1536,   68, 1539,   68, 1537,   68,
+     1540,   68, 1542,   68, 1541,   68,   68,   68, 1547,   68,
+     1543, 1545, 1538,   68, 1549,   68,   68, 1552,   68,   68,
+       68,   68,   68, 1546, 1544, 1553,   68,   68, 1550, 1554,
+       68, 1551, 1548,   68, 1557, 1555, 1560,   68, 1558, 1562,
+       68, 1556,   68, 1564,   68,   68,   68, 1563,   68, 1561,
+
+       68, 1566,   68, 1559, 1569,   68, 1570,   68,   68, 1717,
+     1567,   68, 1574,   68,   68, 1565,   68,   68,   68, 1578,
+     1568, 1571, 1576, 1572,   68,   68, 1575,   68, 1573, 1581,
+       68, 1582,   68,   68,   68, 1577,   68, 1583, 1584, 1586,
+     1610, 1585, 1579, 1580, 1587,   68, 1588,   68, 1589,   68,
+       68, 1591,   68,   68, 1592, 1590, 1593,   68,   68, 1595,
+       68,   68,   68, 1598,   68,   68, 1596, 1594,   68,   68,
+     1597,   68,   68, 1599, 1600,   68,   68,   68, 1608,   68,
+       68, 1606,   68, 1601, 1609,   68, 1612, 1602,   68, 1603,
+     1604, 1611,   68,   68, 1613,   68, 1605, 1607, 1614,   68,
+
+     1617,   68,   68, 1615,   68,   68, 1717,   68,   68, 1717,
+     1621, 1616, 1622, 1624,   68, 1625,   68, 1619, 1626,   68,
+     1618, 1627,   68,   68,   68, 1620, 1630, 1623,   68, 1629,
+       68,   68,   68,   68,   68, 1628,   68, 1632, 1631,   68,
+     1636,   68,   68,   68,   68,   68,   68,   68,   68, 1633,
+     1635, 1634, 1644,   68, 1638, 1645,   68,   68, 1717, 1637,
+     1643, 1639, 1640, 1641,   68,   68,   68, 1650, 1642, 1646,
+     1647, 1649,   68, 1648,   68,   68, 1653, 1654, 1655,   68,
+     1651,   68,   68,   68,   68,   68,   68,   68, 1657, 1652,
+       68,   68,   68, 1656,   68, 1717, 1664, 1665, 1659, 1661,
+
+     1658,   68, 1667, 1662, 1660,   68, 1663,   68,   68,   68,
+     1668, 1672, 1669, 1666, 1670,   68,   68, 1673,   68,   68,
+       68, 1677, 1674,   68,   68,   68,   68, 1671,   68,   68,
+     1680,   68,   68, 1684,   68,   68,   68, 1679, 1675, 1676,
+     1685, 1689, 1678,   68, 1683,   68, 1687, 1681, 1682,   68,
+     1688,   68,   68, 1686, 1692,   68,   68,   68, 1690, 1693,
+       68,   68, 1691, 1694,   68, 1696,   68,   68,   68, 1698,
+       68, 1699,   68, 1702,   68, 1717, 1695,   68, 1705,   68,
+     1697, 1706,   68,   68, 1708,   68, 1700, 1701,   68, 1703,
+     1707, 1709,   68, 1704,   68, 1710,   68,   68, 1713, 1711,
+
+     1717, 1712, 1715,   68, 1716,   68, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1714,   40,   40,   40,
+       40,   40,   40,   40,   45,   45,   45,   45,   45,   45,
+       45,   50,   50,   50,   50,   50,   50,   50,   56,   56,
+       56,   56,   56,   56,   56,   61,   61,   61,   61,   61,
+       61,   61,   71,   71, 1717,   71,   71,   71,   71,  124,
+      124, 1717, 1717, 1717,  124,  124,  126,  126, 1717, 1717,
+      126, 1717,  126,  128, 1717, 1717, 1717, 1717, 1717,  128,
+      131,  131, 1717, 1717, 1717,  131,  131,  133, 1717, 1717,
+     1717, 1717, 1717,  133,  135,  135, 1717,  135,  135,  135,
+
+      135,   72,   72, 1717,   72,   72,   72,   72,   13, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717
     } ;
 
-static yyconst flex_int16_t yy_chk[3424] =
+static yyconst flex_int16_t yy_chk[3449] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1379,377 +1386,379 @@ static yyconst flex_int16_t yy_chk[3424] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
         3,    3,    4,    4,    4,   49,    5,    5,   49,    3,
         5,   15,    4,    6,    6,   15,    5,    6,    9,    9,
-        9,  152,   33,    6,    7,    7,    7,    7,    9,    7,
+        9,  153,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   44,   44,    7,    8,    8,    8,    8,
-       10,    8,   21,   33,  152,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1710,   20,   29,   20,   20,   11,
+       10,    8,   21,   33,  153,   21,   21,    8,   11,   11,
+       11,   11,   11,   11, 1723,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   74,   22,   22,   74,   25,
        12,   69,   28,   30,   22,   69,   24,   26,   26,   12,
-       19,   22,   19,   19,   66,   19,   26,  638,   30,   27,
+       19,   22,   19,   19,   66,   19,   26,  644,   30,   27,
        19,   19,   23,   27,   60,   60,   27,   23,   66,   31,
        31,   23,   76,   27,   23,   27,   23,   23,   31,   75,
        32,   32,   34,   75,   31,   32,   37,   37,   31,   37,
        36,   34,   76,   35,   35,   36,  133,   34,   35,   38,
-       34,   32,   79,   77,   37,   36,   77,   34,   35,   36,
+       34,   32,   79,   78,   37,   36,  131,   34,   35,   36,
        36,   35,   90,   38,   39,   39,   79,   90,   38,   39,
 
-       55,   82,   55,   55,   63,   55,   63,   63,   65,   63,
-       65,   65,   83,   65,   68,   63,   68,   68,   85,   68,
-       78,   80,   81,   82,   68,   71,   86,   71,   71,   84,
-       71,   83,   85,   80,   84,   71,   71,   87,   78,   88,
-       81,   89,   91,   94,   93,   89,   86,   84,   92,   93,
-       97,   92,   98,   95,   92,   87,   91,   88,   95,  101,
-       96,   99,   94,   96,  100,   99,   98,   96,   92,  102,
-      103,  100,  101,  104,   97,  105,  102,  106,   95,  105,
-      107,  108,  109,  103,  110,  107,  112,  114,  111,  107,
-      113,  117,  114,  104,  115,  106,  118,  110,  116,  116,
-
-      119,  108,  109,  111,  122,  112,  115,  123,  113,  117,
-      121,  120,  118,  120,  141,  121,  122,  125,  125,  116,
-      127,  119,  141,  127,  129,  123,  129,  129,  140,  129,
-      132,  132,  142,  134,  120,  134,  134,  135,  134,  135,
-      135,  137,  135,  140,  137,  138,  139,  142,  135,  143,
-      138,  139,  144,  150,  145,  146,  177,  144,  144,  145,
-      146,  147,  151,  147,  149,  149,  153,  151,  154,  143,
-      153,  155,  150,  154,  156,  157,  158,  159,  177,  160,
-      160,  161,  159,  147,  148,  155,  162,  157,  148,  156,
-      157,  163,  165,  148,  158,  166,  163,  165,  148,  160,
-
-      166,  161,  162,  165,  148,  148,  164,  164,  167,  168,
-      169,  170,  175,  171,  172,  169,  170,  167,  171,  172,
-      173,  179,  174,  176,  180,  178,  179,  173,  174,  176,
-      168,  181,  175,  178,  183,  182,  184,  185,  186,  180,
-      182,  187,  185,  187,  189,  188,  190,  191,  193,  189,
-      197,  181,  188,  193,  184,  184,  183,  194,  186,  191,
-      192,  192,  194,  196,  195,  190,  195,  199,  198,  197,
-      201,  193,  199,  200,  202,  196,  198,  204,  200,  203,
-      426,  205,  210,  195,  205,  201,  211,  203,  206,  206,
-      207,  426,  202,  207,  208,  208,  209,  209,  210,  216,
-
-      212,  211,  204,  212,  213,  214,  215,  218,  213,  217,
-      217,  215,  218,  216,  214,  219,  220,  221,  222,  223,
-      219,  224,  224,  225,  226,  227,  228,  230,  226,  229,
-      230,  232,  223,  231,  229,  221,  220,  233,  228,  222,
-      234,  225,  235,  227,  236,  231,  233,  237,  232,  237,
-      237,  232,  238,  238,  239,  235,  236,  239,  240,  241,
-      242,  234,  243,  243,  246,  244,  245,  245,  247,  242,
-      244,  248,  249,  250,  241,  240,  251,  249,  240,  246,
-      247,  251,  252,  253,  254,  252,  255,  252,  258,  256,
-      259,  248,  260,  250,  256,  255,  257,  253,  261,  262,
-
-      254,  257,  262,  254,  265,  254,  263,  260,  266,  258,
-      259,  267,  261,  269,  273,  268,  274,  266,  262,  265,
-      263,  264,  270,  264,  264,  271,  272,  276,  269,  273,
-      271,  274,  267,  264,  268,  264,  264,  264,  275,  277,
-      264,  279,  270,  275,  278,  280,  272,  276,  282,  278,
-      280,  281,  281,  277,  281,  283,  284,  279,  286,  285,
-      286,  287,  288,  289,  292,  287,  290,  291,  282,  292,
-      293,  283,  284,  285,  293,  290,  291,  289,  294,  295,
-      288,  297,  300,  296,  295,  297,  303,  294,  290,  296,
-      298,  298,  299,  301,  301,  300,  302,  299,  305,  304,
-
-      306,  302,  307,  307,  306,  309,  308,  303,  304,  313,
-      305,  308,  310,  310,  312,  312,  314,  316,  315,  318,
-      319,  320,  321,  322,  314,  323,  309,  315,  322,  316,
-      313,  321,  324,  323,  325,  320,  326,  324,  327,  318,
-      319,  328,  329,  330,  331,  328,  332,  335,  330,  334,
-      337,  336,  325,  337,  340,  338,  336,  329,  326,  327,
-      331,  336,  345,  335,  346,  332,  333,  333,  342,  334,
-      339,  339,  333,  343,  333,  338,  341,  341,  344,  340,
-      349,  345,  333,  342,  347,  343,  346,  348,  350,  347,
-      351,  355,  333,  344,  351,  352,  348,  353,  354,  349,
-
-      352,  356,  356,  350,  355,  357,  358,  359,  360,  353,
-      359,  361,  362,  364,  361,  363,  354,  357,  358,  363,
-      363,  365,  365,  360,  366,  366,  364,  367,  362,  368,
-      368,  362,  367,  369,  369,  370,  371,  372,  377,  373,
-      370,  374,  372,  373,  375,  376,  374,  378,  375,  379,
-      376,  380,  378,  383,  379,  384,  381,  371,  377,  381,
-      382,  382,  385,  386,  381,  380,  390,  385,  381,  384,
-      387,  383,  386,  387,  388,  389,  391,  392,  388,  390,
-      389,  391,  393,  394,  395,  399,  396,  400,  394,  396,
-      395,  398,  397,  392,  393,  397,  398,  401,  405,  131,
-
-      388,  400,  401,  399,  402,  403,  407,  402,  404,  406,
-      403,  405,  404,  404,  406,  407,  408,  409,  410,  408,
-      410,  409,  409,  411,  412,  413,  412,  414,  415,  416,
-      418,  417,  420,  419,  408,  417,  421,  423,  429,  418,
-      425,  422,  411,  413,  425,  414,  422,  415,  419,  416,
-      420,  421,  424,  424,  427,  428,  423,  429,  431,  427,
-      430,  432,  433,  434,  436,  431,  432,  435,  434,  433,
-      437,  428,  435,  430,  438,  439,  440,  437,  443,  444,
-      444,  440,  436,  438,  441,  449,  442,  441,  444,  439,
-      442,  446,  448,  447,  450,  451,  446,  447,  452,  443,
-
-      455,  458,  450,  449,  448,  461,  462,  463,  467,  468,
-      130,  463,  462,  451,  461,  455,  464,  466,  458,  470,
-      470,  464,  466,  452,  453,  469,  467,  473,  469,  453,
-      471,  472,  472,  453,  468,  476,  453,  471,  474,  474,
-      476,  475,  473,  453,  475,  477,  453,  465,  465,  465,
-      478,  465,  479,  480,  465,  481,  481,  482,  483,  465,
-      488,  480,  484,  488,  477,  465,  465,  484,  485,  485,
-      478,  479,  482,  486,  487,  489,  483,  490,  486,  487,
-      491,  489,  492,  494,  493,  490,  495,  495,  491,  493,
-      494,  496,  497,  498,  500,  501,  502,  497,  501,  496,
-
-      492,  503,  503,  500,  504,  505,  507,  509,  505,  508,
-      502,  510,  498,  511,  508,  513,  505,  512,  514,  504,
-      515,  516,  514,  517,  513,  518,  520,  507,  509,  521,
-      519,  510,  517,  525,  128,  511,  519,  512,  515,  518,
-      516,  524,  522,  521,  523,  524,  520,  522,  526,  523,
-      527,  528,  525,  529,  529,  527,  530,  532,  533,  531,
-      526,  530,  531,  534,  535,  536,  536,  538,  534,  537,
-      537,  533,  528,  539,  540,  532,  541,  539,  542,  544,
-      545,  547,  538,  544,  535,  548,  546,  551,  549,  550,
-      548,  551,  542,  540,  552,  545,  547,  556,  126,  558,
-
-      541,  543,  549,  550,  543,  558,  543,  555,  553,  552,
-      543,  546,  543,  553,  554,  557,  561,  543,  556,  554,
-      559,  555,  543,  553,  563,  559,  560,  560,  561,  557,
-      562,  564,  560,  567,  560,  562,  565,  565,  563,  566,
-      568,  567,  569,  564,  566,  570,  570,  571,  573,  575,
-      576,  571,  560,  573,  568,  574,  578,  577,  574,  581,
-      579,  569,  577,  576,  580,  582,  583,  584,  575,  586,
-      582,  585,  588,  580,  586,  578,  579,  589,  581,  590,
-      585,  584,  591,  592,  593,  124,  583,  591,  592,  593,
-      594,  588,  595,  595,  590,  589,  596,  600,  598,  594,
-
-      600,  596,  598,  598,  599,  599,  601,  602,  599,  603,
-      604,  605,  606,  604,  607,  608,  612,  606,  609,  607,
-      613,  608,  602,  615,  610,  612,  601,  611,  611,  603,
-      610,  616,  605,  614,  609,  617,  614,  619,  613,  618,
-      620,  615,  619,  621,  622,  620,  623,  622,  624,  625,
-      616,  626,  618,  627,  625,  617,  626,  623,  628,  628,
-      624,  621,  629,  630,  631,  632,  633,  635,  627,  632,
-      634,  636,  641,  639,  640,  642,  631,  630,  643,  634,
-      642,  629,  648,  643,  633,  644,  635,  639,  645,  640,
-      644,  646,  641,  647,  649,  650,  636,  648,  647,  651,
-
-      652,  652,  645,  653,  655,  646,  654,  656,  656,  657,
-      650,  659,  654,  649,  657,  658,  660,  661,  651,  660,
-      662,  653,  658,  663,  655,  659,  664,  665,  663,  662,
-      666,  668,  665,  667,  671,  661,  669,  667,  670,  673,
-      668,  671,  672,  674,  675,  664,  676,  678,  677,  666,
-      679,  669,  676,  670,  672,  681,  682,  683,  673,  679,
-      681,  684,  675,  677,  674,  683,  685,  678,  686,  687,
-      682,  685,  686,  686,  688,  688,  689,  690,  691,  692,
-      692,  684,  693,  691,  696,  694,  690,  693,  687,  689,
-      694,  695,  695,  696,  697,  698,  699,  700,  701,  697,
-
-      702,  704,  700,  701,  703,  702,  708,  705,  703,  698,
-      704,  709,  707,  711,  699,  704,  707,  704,  705,  704,
-      710,  708,  712,  713,  710,  710,  714,  711,  715,  709,
-      716,  713,  717,  717,  718,  719,  719,  723,  722,  721,
-      714,  712,  721,  722,  724,  724,  715,  725,  727,  718,
-      726,  726,  729,  727,  730,  716,  723,  728,  728,  730,
-      731,  732,  733,  733,  734,  735,  732,  725,  731,  736,
-      738,  735,  729,  739,  740,  738,  736,  742,  739,  740,
-      741,  743,  734,  744,  746,  741,  742,  745,  745,  747,
-      748,  749,  751,  750,  744,  748,  752,  752,  753,  754,
-
-      743,  755,  756,  757,  746,   67,  761,  756,  764,  758,
-      751,  749,  747,  750,  758,  761,  760,  762,  753,  755,
-      760,  760,  764,  765,  754,  762,  757,  763,  765,  763,
-      766,  767,  768,  769,  766,  770,  771,  772,  773,  774,
-      777,  771,  767,  774,  775,  776,  778,  780,  779,  782,
-      784,  768,  781,  770,  777,  772,  782,  781,  773,  769,
-      783,  778,  775,  779,  776,  783,  780,  785,  784,  786,
-      788,  787,  795,  789,  790,  791,  785,  787,  789,  790,
-      791,  792,  792,  796,  786,  794,  794,  797,  796,  798,
-      795,  788,  799,  800,  800,  801,  799,  799,  802,  803,
-
-      804,  797,  806,  805,  807,  808,  811,  806,  798,  805,
-      809,  810,  812,  813,  801,  814,  814,  802,  816,  804,
-      811,  815,  816,  807,  808,  803,  815,  817,  813,  809,
-      810,  821,  818,  812,  822,  822,  819,  825,  819,  823,
-      817,  818,  819,  824,  823,  826,  828,  824,  830,  832,
-      826,  821,  841,  830,  832,  819,  840,  825,  831,  831,
-      834,  834,  836,  836,  828,  838,  839,  839,  838,  842,
-      843,  840,  844,  845,  845,  843,  846,  841,  847,  847,
-      848,  849,  850,  842,  851,  852,  850,  844,  854,  857,
-      852,  855,  849,  856,  856,  858,  846,  859,  860,  861,
-
-      860,  863,  848,  851,  861,  855,  854,  862,  864,  857,
-      865,  869,  862,  864,  867,  858,  871,  859,  866,  866,
-      867,  863,  870,  870,  865,  872,  873,  878,  871,  873,
-      876,  874,  873,  875,  883,  869,  874,  877,  875,  876,
-      879,  880,  877,  879,  873,  872,  880,  881,  881,  882,
-      884,  885,  878,  883,  886,  887,  885,  888,  890,  886,
-      889,  889,  888,  890,  891,  892,  893,  882,  895,  894,
-      884,  896,  897,  898,  899,  900,  902,  897,  887,   61,
-      895,  902,  891,  894,  896,  892,  893,  903,  904,  905,
-      906,  909,  909,  898,  899,  904,  900,  910,  905,  911,
-
-      910,  905,  903,  912,  911,  913,  906,  914,  915,  916,
-      917,  918,  918,  919,  913,  917,  920,  915,  916,  912,
-      915,  921,  922,  923,  924,  926,  914,  925,  925,  920,
-      927,  928,  928,  919,  930,  927,  922,  933,  929,  921,
-      932,  926,  924,  936,  934,  932,  928,  929,  923,  934,
-      929,  935,  930,  937,  938,  933,  939,  935,  937,  939,
-      942,  943,  944,  936,  945,  939,  946,  938,  942,  947,
-      948,  946,  950,  951,  943,  956,  952,  951,  957,  953,
-      944,  952,  954,  945,  953,  947,  955,  954,  948,  958,
-      958,  959,  950,  957,  960,  955,  961,  962,  956,  963,
-
-      964,  965,  962,  966,  966,  959,  960,  965,  961,  967,
-      970,  963,  967,  968,  968,  971,  971,  972,  964,  970,
-      973,  974,  975,  976,  978,  973,  977,  979,  980,  972,
-      974,  977,  982,  978,  975,  981,  981,  982,  976,  983,
-      984,  985,  987,  980,  986,  986,  978,  979,  988,  988,
-      989,  989,  990,  991,  992,  995,  990,  992,  991,  984,
-      983,  985,  987,  994,  996,  997,  998,  998,  994,  996,
-      999,  999, 1000,  995, 1001, 1002, 1003, 1000, 1004, 1006,
-     1005, 1007, 1007, 1008, 1009, 1009, 1001, 1001, 1001, 1014,
-      997, 1010, 1012, 1001, 1005, 1002, 1003, 1017, 1004, 1015,
-
-     1006, 1012, 1013, 1013, 1014, 1016, 1015, 1018, 1018, 1008,
-     1019, 1010, 1020, 1022, 1016, 1023, 1028, 1024, 1022, 1025,
-     1023, 1026, 1026, 1017, 1027, 1028, 1025, 1029, 1020, 1027,
-     1030, 1031, 1032, 1033, 1031, 1036, 1019, 1024, 1034, 1034,
-     1035, 1037, 1030, 1038, 1039, 1040, 1040, 1029, 1043, 1038,
-     1032, 1041, 1044, 1039, 1036, 1035, 1037, 1042, 1042, 1033,
-     1045, 1049, 1041, 1046, 1046, 1045, 1044, 1041, 1047, 1043,
-     1048, 1050, 1047, 1047, 1051, 1048, 1052, 1053, 1054, 1051,
-     1055, 1053, 1057, 1050, 1056, 1059, 1058, 1049, 1052, 1056,
-     1054, 1058, 1061, 1062, 1062, 1061, 1064, 1059, 1063, 1063,
-
-     1071, 1065, 1064, 1066, 1057, 1055, 1065, 1067, 1069, 1066,
-     1073, 1075, 1071, 1069, 1074, 1074, 1067, 1076, 1077, 1078,
-     1079, 1082, 1073, 1080, 1079, 1081, 1076, 1085, 1080,   56,
-     1081, 1075, 1084, 1084, 1086, 1082, 1077, 1087, 1078, 1089,
-     1089, 1092, 1095, 1086, 1084, 1085, 1087, 1093, 1094, 1096,
-     1096, 1101, 1097, 1094, 1097, 1100, 1092, 1098, 1098, 1095,
-     1103, 1093, 1100, 1102, 1102, 1104, 1105, 1106, 1107, 1103,
-     1108, 1101, 1109, 1110, 1115, 1113, 1112, 1113, 1105, 1106,
-     1107, 1112, 1114, 1115, 1117, 1108, 1104, 1118, 1118, 1119,
-     1120, 1124, 1109, 1110, 1121, 1120, 1121, 1122, 1117, 1123,
-
-     1114, 1125, 1122, 1126, 1123, 1127, 1129, 1132, 1126, 1124,
-     1127, 1133, 1130, 1131, 1131, 1119, 1137,   51, 1134, 1135,
-     1147, 1125, 1132, 1134, 1135, 1129, 1130, 1136, 1137, 1136,
-     1138, 1133, 1139, 1141, 1139, 1140, 1143, 1146, 1144, 1138,
-     1147, 1143, 1138, 1144, 1140, 1141, 1148, 1150, 1152, 1153,
-     1146, 1154, 1155, 1150, 1152, 1156, 1156, 1157, 1158, 1158,
-     1159, 1155, 1148, 1160, 1153, 1161, 1157, 1160, 1162, 1164,
-     1161, 1163, 1163, 1167, 1168, 1168, 1154, 1164, 1170, 1159,
-     1171, 1162, 1167, 1169, 1169, 1175, 1172, 1173, 1173, 1176,
-     1170, 1172, 1177, 1178, 1176, 1179, 1180, 1181, 1171, 1183,
-
-     1179, 1182, 1182, 1183, 1184, 1186, 1185, 1187, 1178, 1189,
-     1175, 1185, 1190, 1181, 1180, 1177, 1191, 1192, 1193, 1184,
-     1194, 1196, 1196, 1199, 1197,   50, 1187, 1197, 1218, 1198,
-     1193, 1186, 1189, 1200, 1218, 1191, 1190, 1199, 1192, 1201,
-     1201, 1194, 1198, 1202, 1202, 1204, 1200, 1203, 1203, 1205,
-     1205, 1206, 1206, 1207, 1207, 1208, 1209, 1209, 1204, 1210,
-     1210, 1211, 1213, 1214, 1214, 1215, 1222, 1213, 1216, 1216,
-     1217, 1225, 1219,   45, 1208, 1219, 1220, 1220, 1221, 1221,
-     1211, 1223, 1223, 1226, 1215, 1222, 1227, 1229, 1217, 1231,
-     1227, 1236, 1220, 1234, 1225, 1228, 1228, 1237, 1226, 1230,
-
-     1230, 1232, 1232, 1233, 1235, 1234, 1229, 1238, 1239, 1235,
-     1237, 1240, 1233, 1239, 1241, 1231, 1236, 1243, 1242, 1244,
-     1247, 1245,   40, 1241, 1244, 1245, 1240, 1242, 1238, 1249,
-     1251, 1243, 1250, 1250, 1254, 1251, 1252, 1252, 1249, 1255,
-     1247, 1257, 1258, 1259, 1257, 1252, 1263, 1258, 1267, 1254,
-     1265, 1255, 1260, 1260, 1262, 1262, 1264, 1264, 1266, 1274,
-     1263, 1487, 1265, 1259, 1268, 1268, 1270, 1267, 1271, 1275,
-     1270, 1271, 1266, 1272, 1272, 1273, 1277, 1276, 1282, 1274,
-     1273, 1276, 1278, 1275, 1279, 1280, 1487, 1278, 1283, 1279,
-     1284, 1280, 1285, 1283, 1282, 1284, 1277, 1286, 1303, 1286,
-
-     1285, 1289, 1289, 1293, 1293, 1296, 1297, 1297, 1299, 1299,
-     1296, 1301, 1302, 1302, 1303, 1304, 1301, 1305, 1307, 1307,
-     1309, 1310, 1305, 1311, 1315, 1309, 1313, 1313, 1316, 1315,
-     1316, 1317, 1319, 1319, 1322, 1318, 1323, 1304, 1311, 1310,
-     1318, 1320, 1320, 1321, 1321, 1317, 1322, 1324, 1325, 1326,
-     1327, 1328, 1329, 1329, 1323, 1327, 1330, 1331, 1332, 1324,
-     1325, 1326, 1333, 1334, 1336, 1330, 1335, 1337, 1338, 1339,
-     1339, 1328, 1337, 1338, 1343, 1333, 1340, 1340, 1332, 1344,
-     1335, 1345, 1336, 1331, 1346, 1348, 1347, 1334, 1349, 1350,
-     1350, 1352, 1352, 1353, 1343, 1347, 1355, 1344, 1356, 1357,
-
-     1354, 1359, 1353, 1345, 1346, 1348, 1349, 1354, 1358, 1360,
-     1360, 1355, 1362, 1361, 1363, 1364, 1356, 1357, 1361, 1365,
-     1359, 1367, 1370, 1371, 1358, 1374, 1371, 1372, 1372, 1363,
-     1362, 1373, 1376, 1381, 1364, 1378, 1376, 1377, 1377, 1365,
-     1367, 1388, 1370, 1374, 1380, 1380, 1373, 1392, 1378, 1382,
-     1382, 1389, 1381, 1383, 1383, 1387, 1387, 1390, 1395, 1391,
-     1389, 1393, 1390, 1388, 1391, 1396, 1392, 1397, 1398, 1393,
-     1396,   14, 1397, 1395, 1399, 1399, 1400, 1400, 1410, 1401,
-     1402, 1402, 1406, 1398, 1401, 1403, 1403, 1406, 1407, 1408,
-     1409, 1412, 1407, 1410, 1408, 1411, 1412, 1413, 1415, 1409,
-
-     1416, 1415, 1417, 1411, 1418, 1419, 1420, 1420, 1421, 1413,
-     1423, 1424, 1427, 1418, 1419, 1417, 1425, 1421, 1416, 1426,
-     1426, 1427, 1428, 1428, 1429, 1430, 1433, 1432, 1434, 1423,
-     1430, 1424, 1429, 1436, 1436, 1425, 1432, 1438, 1438, 1433,
-     1441, 1442, 1442, 1434, 1443, 1444, 1444, 1443, 1445, 1445,
-     1446, 1446, 1447, 1448, 1449, 1450, 1450, 1451, 1454, 1449,
-     1441, 1451, 1457, 1458, 1454, 1459, 1460, 1448, 1458, 1463,
-     1447, 1461, 1462, 1462, 1464, 1465, 1466, 1466, 1470, 1457,
-     1457, 1468, 1464, 1459, 1471, 1461, 1460, 1469, 1463, 1467,
-     1467, 1472, 1469, 1473, 1465, 1474, 1476, 1468, 1470, 1476,
-
-     1472, 1478, 1479, 1479, 1480, 1481,   13, 1482, 1480, 1483,
-     1471, 1486, 1485, 1473, 1481, 1474, 1499, 1491, 1483, 1478,
-     1482, 1485, 1491, 1486, 1492, 1492, 1493, 1495, 1496, 1497,
-     1501, 1498, 1495, 1500, 1499, 1493, 1498, 1496, 1500, 1502,
-     1502, 1504, 1505, 1506, 1506, 1507, 1509, 1508, 1510, 1507,
-     1497, 1511, 1513, 1512, 1515, 1501, 1508, 1505, 1512, 1511,
-     1504, 1520, 1509, 1514, 1514, 1516, 1516, 1510, 1522, 1517,
-     1519, 1519, 1523, 1515, 1517, 1521, 1521, 1526, 1513, 1524,
-     1524, 1520, 1522, 1525, 1525, 1527, 1528, 1529, 1529, 1530,
-     1531, 1532, 1538, 1533, 1523, 1531, 1526, 1527, 1533, 1534,
-
-     1541, 1530, 1535, 1535, 1537, 1537, 1528, 1540, 1542,    0,
-     1532, 1538, 1540, 1542, 1541,    0, 1534, 1534, 1543, 1543,
-     1544, 1544, 1545, 1545, 1546, 1548, 1548, 1550, 1550, 1546,
-     1552, 1552, 1553, 1554, 1554, 1555, 1558, 1559, 1559, 1563,
-     1555, 1553, 1560, 1562, 1558, 1564, 1565, 1560, 1562, 1566,
-     1567, 1570, 1571, 1571, 1584, 1567, 1573, 1563, 1572, 1572,
-     1573, 1564, 1581, 1565, 1565, 1577, 1577, 1586, 1579, 1584,
-     1566, 1570, 1579, 1583, 1583, 1588, 1581, 1587, 1587, 1589,
-     1590, 1591, 1592, 1593,    0, 1586, 1591, 1592, 1594, 1594,
-     1597, 1597, 1599, 1599, 1589, 1600, 1600, 1602, 1603, 1603,
-
-     1588, 1590, 1593, 1605, 1606, 1607, 1608, 1610, 1605, 1602,
-     1607, 1609, 1615, 1616, 1617, 1618, 1615, 1619, 1606, 1621,
-     1620, 1625, 1622, 1610, 1627, 1608, 1625, 1617, 1630, 1609,
-     1623, 1623, 1624, 1616, 1618, 1619, 1620, 1622, 1626, 1628,
-     1629, 1624, 1630, 1626, 1621, 1629, 1632, 1633, 1634, 1627,
-     1635, 1636, 1638, 1634, 1628, 1635, 1637, 1640, 1639, 1643,
-     1641, 1632, 1642, 1644, 1646, 1636, 1633, 1651, 1644, 1637,
-        0, 1638, 1639, 1641, 1645, 1642, 1640, 1648, 1643, 1645,
-     1647, 1647, 1648, 1646, 1649, 1650, 1651, 1652, 1654, 1649,
-     1650, 1655, 1652, 1653, 1653, 1654, 1656, 1657, 1658, 1659,
-
-     1661, 1662, 1657, 1663, 1666, 1661, 1664, 1665, 1665, 1666,
-     1655, 1667, 1659, 1668, 1668, 1656, 1670, 1658, 1671, 1664,
-     1662, 1670, 1663, 1669, 1669, 1671, 1672, 1673, 1673, 1674,
-     1667, 1675, 1676, 1678, 1677, 1680, 1674, 1681, 1675, 1677,
-     1680, 1682, 1681, 1683, 1685, 1672, 1684, 1684, 1686, 1687,
-     1687, 1676, 1678, 1688, 1688, 1690, 1690, 1689, 1691, 1691,
-     1682, 1692, 1683, 1685, 1689, 1694, 1697, 1686, 1692, 1698,
-     1694, 1697, 1699, 1700, 1700, 1701, 1701,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0, 1698,    0,
-        0, 1699, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1706,
-
-     1706, 1706, 1706, 1706, 1706, 1706, 1707, 1707, 1707, 1707,
-     1707, 1707, 1707, 1708, 1708, 1708, 1708, 1708, 1708, 1708,
-     1709, 1709, 1709, 1709, 1709, 1709, 1709, 1711, 1711,    0,
-     1711, 1711, 1711, 1711, 1712, 1712,    0,    0,    0, 1712,
-     1712, 1713, 1713,    0,    0, 1713,    0, 1713, 1714,    0,
-        0,    0,    0,    0, 1714, 1715, 1715,    0,    0,    0,
-     1715, 1715, 1716,    0,    0,    0,    0,    0, 1716, 1717,
-     1717,    0, 1717, 1717, 1717, 1717, 1718, 1718,    0, 1718,
-     1718, 1718, 1718, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
-     1704, 1704, 1704
+       55,   78,   55,   55,   63,   55,   63,   63,   65,   63,
+       65,   65,   83,   65,   68,   63,   68,   68,   77,   68,
+       80,   77,   81,   82,   68,   71,   86,   71,   71,   85,
+       71,   83,   80,   84,   77,   71,   71,   87,   84,   88,
+       81,   94,   91,   85,   89,   82,   86,   92,   89,   93,
+       92,   84,   97,   92,   93,   87,   91,   88,   95,   96,
+       94,   98,   96,   95,   99,  100,   96,   92,   99,  101,
+      102,  103,  100,  104,  105,   98,   97,  102,  105,  106,
+      107,  108,  101,   95,  103,  107,  109,  110,  111,  107,
+      112,  114,  113,  104,  117,  115,  114,  106,  116,  116,
+
+      110,  108,  118,  111,  119,  122,  109,  115,  123,  112,
+      113,  120,  117,  120,  188,  121,  188,  122,  118,  116,
+      121,  125,  125,  140,  127,  119,  123,  127,  129,  137,
+      129,  129,  137,  129,  120,  132,  132,  134,  140,  134,
+      134,  135,  134,  135,  135,  138,  135,  141,  139,  142,
+      138,  143,  135,  139,  144,  141,  145,  151,  146,  147,
+      130,  145,  145,  146,  147,  148,  143,  148,  142,  150,
+      150,  154,  152,  155,  144,  154,  151,  152,  155,  156,
+      157,  160,  159,  162,  158,  163,  160,  148,  149,  164,
+      161,  161,  149,  156,  164,  157,  158,  149,  169,  158,
+
+      159,  163,  149,  162,  165,  165,  166,  167,  149,  149,
+      161,  166,  167,  168,  176,  170,  171,  166,  172,  169,
+      170,  171,  168,  172,  173,  174,  178,  175,  181,  173,
+      177,  179,  174,  175,  176,  180,  177,  182,  184,  179,
+      180,  183,  186,  181,  185,  187,  183,  186,  178,  189,
+      190,  191,  192,  193,  193,  190,  189,  182,  198,  128,
+      184,  194,  185,  185,  192,  187,  194,  195,  197,  196,
+      191,  196,  195,  199,  200,  203,  204,  198,  201,  200,
+      197,  199,  202,  201,  194,  205,  206,  202,  196,  207,
+      203,  212,  207,  205,  204,  208,  208,  209,  210,  210,
+
+      209,  211,  211,  213,  216,  214,  215,  212,  214,  217,
+      215,  206,  218,  216,  217,  219,  219,  220,  213,  221,
+      222,  223,  220,  224,  221,  225,  218,  226,  226,  227,
+      228,  229,  231,  230,  228,  234,  233,  231,  225,  223,
+      222,  235,  236,  232,  224,  230,  232,  227,  233,  229,
+      235,  237,  234,  238,  239,  234,  239,  239,  240,  240,
+      242,  243,  244,  236,  237,  238,  241,  245,  245,  241,
+      246,  244,  247,  247,  248,  246,  243,  242,  249,  250,
+      242,  251,  252,  253,  255,  256,  251,  258,  253,  248,
+      249,  254,  258,  260,  254,  261,  254,  262,  255,  250,
+
+      257,  256,  252,  259,  256,  263,  256,  264,  259,  257,
+      264,  265,  262,  267,  260,  261,  269,  270,  271,  263,
+      272,  126,  268,  276,  274,  265,  264,  266,  267,  266,
+      266,  268,  275,  271,  279,  277,  270,  269,  276,  266,
+      272,  266,  266,  266,  273,  280,  266,  274,  278,  273,
+      277,  281,  275,  278,  279,  282,  281,  283,  285,  280,
+      284,  284,  283,  284,  286,  287,  290,  289,  288,  289,
+      290,  282,  291,  292,  293,  294,  301,  301,  285,  297,
+      286,  287,  288,  293,  294,  296,  295,  292,  297,  296,
+      291,  295,  298,  299,  300,  302,  293,  298,  300,  299,
+
+      302,  303,  304,  304,  305,  306,  307,  308,  309,  305,
+      310,  310,  309,  311,  303,  307,  312,  316,  311,  308,
+      313,  313,  315,  315,  317,  318,  306,  319,  321,  322,
+      323,  324,  317,  328,  318,  326,  325,  312,  316,  319,
+      324,  325,  327,  326,  323,  329,  332,  327,  321,  322,
+      330,  328,  331,  333,  334,  335,  331,  337,  333,  339,
+      340,  332,  338,  340,  339,  341,  349,  329,  343,  339,
+      334,  330,  342,  342,  335,  336,  336,  337,  338,  344,
+      344,  336,  345,  336,  346,  341,  348,  347,  349,  350,
+      351,  336,  352,  343,  350,  353,  346,  345,  355,  351,
+
+      354,  336,  347,  355,  354,  348,  356,  357,  358,  359,
+      353,  352,  360,  360,  361,  362,  363,  359,  356,  363,
+      364,  358,  366,  368,  124,  357,  361,  362,  365,  367,
+      375,  365,  371,  367,  367,  364,  368,  371,  366,  369,
+      369,  366,  370,  370,  372,  372,  373,  373,  374,  376,
+      378,  375,  377,  374,  376,  378,  377,  379,  380,  381,
+      382,  379,  383,  380,  384,  382,  387,  383,  385,  386,
+      386,  385,  388,   67,  390,  399,  385,  389,  384,  381,
+      385,  399,  389,  390,  387,  391,  388,  392,  391,  393,
+      394,  392,  395,  396,  393,  397,  398,  395,  403,  400,
+
+      404,  398,  400,  394,  455,  401,  402,  397,  401,  396,
+      405,  402,  455,  392,  404,  405,  403,  406,  407,  409,
+      406,  408,  410,  407,  411,  408,  408,  410,  412,  415,
+      413,  412,  409,  411,  413,  413,  414,  416,  414,  416,
+      417,  418,  419,  420,  422,  421,  412,  423,  415,  421,
+      424,  425,  426,  422,  427,  428,  428,  426,  417,  418,
+      429,  419,  423,  420,  429,  430,  425,  431,  424,  432,
+      433,  434,  431,  427,  435,  436,  430,  438,  439,  437,
+      436,  435,  438,  439,  434,  432,  437,  440,  441,  433,
+      442,  444,  443,  447,  445,  441,  444,  445,  446,  442,
+
+      448,  448,  446,  449,  453,  440,  443,  452,  451,  448,
+      454,  452,  449,  451,  447,  456,  453,  457,  463,  460,
+      466,  467,  468,  472,  473,  469,  468,  467,  454,  466,
+      469,  471,  478,  456,  460,  463,  471,  474,  475,  475,
+      474,  472,  457,  458,  476,  477,  477,  478,  458,  473,
+      482,  476,  458,  479,  479,  458,  480,  483,  481,  480,
+      484,  487,  458,  481,  485,  458,  470,  470,  470,  482,
+      470,  488,  485,  470,  486,  486,  487,  483,  470,  484,
+      497,  489,  490,  490,  470,  470,  489,  491,  492,  488,
+      494,  493,  491,  492,  493,  495,  494,  496,  497,  498,
+
+      499,  500,  500,  495,  498,  496,  501,  499,  502,  503,
+      505,  507,  506,  502,  501,  506,  508,  508,  509,  505,
+      510,  512,  513,  510,  514,  507,  515,  513,  503,  516,
+      517,  510,  518,  509,  519,  520,  521,  524,  519,  522,
+      523,  518,  512,  524,  525,  514,  515,  526,  522,  530,
+      517,  516,  527,  520,  523,  521,  529,  527,  528,  531,
+      529,  526,  532,  528,  525,  533,  537,  532,  530,  534,
+      534,  531,  535,  536,  538,  539,  536,  535,  540,  543,
+      539,  541,  541,  545,  537,  546,  533,  538,  542,  542,
+      547,  544,  548,  550,  543,  544,  551,  550,  540,  553,
+
+      552,  554,  545,  555,  547,  556,  554,  571,  571,  546,
+       61,  551,  548,  549,  553,  558,  549,  555,  549,  556,
+      562,  559,  549,  557,  549,  552,  559,  557,  560,  549,
+      558,  561,  563,  560,  549,  565,  559,  564,  567,  568,
+      565,  562,  569,  564,  568,  561,  563,  566,  566,  570,
+      567,  573,  572,  566,  574,  566,  569,  572,  575,  573,
+      577,  570,  576,  576,  577,  579,  580,  581,  574,  580,
+      579,  582,  584,  566,  583,  587,  585,  575,  586,  583,
+      588,  589,  590,  594,  582,  588,  581,  586,  591,  595,
+      592,  584,  585,  596,  587,  592,  590,  591,  597,  598,
+
+      599,  589,  594,  597,  598,  599,  600,  595,  596,  601,
+      601,  602,  607,  604,  608,  600,  602,  604,  604,  605,
+      605,  606,  609,  605,  606,  610,  611,  614,  610,  608,
+      612,  613,  607,  614,  615,  612,  613,  616,  617,  617,
+      618,  619,  609,  616,  621,  620,  622,  611,  620,  618,
+      615,  623,  625,  624,  627,  626,  629,  625,  628,  619,
+      626,  628,  621,  630,  631,  622,  624,  629,  632,  631,
+      633,  623,  627,  632,  635,  630,  634,  634,  636,  637,
+      638,  639,  641,  642,  638,  633,  640,  647,  645,  646,
+      674,  637,  636,  635,  674,  640,  652,  656,  648,  639,
+
+      649,  641,  645,  648,  646,  649,  650,  647,  642,  651,
+      652,  650,  653,  654,  651,  655,  656,  657,  654,  658,
+      659,  659,  660,  661,  662,  666,  653,  663,  663,  661,
+      655,  664,  657,  668,  665,  671,  664,  669,  658,  666,
+      660,  665,  667,  670,  662,  667,  669,  672,  670,  673,
+      675,  668,  672,  678,  671,  676,  677,  679,  680,  675,
+      678,  681,  682,  684,  685,  686,  683,  690,  673,  679,
+      676,  677,  683,  689,  686,  690,  688,  680,  684,  691,
+      682,  688,  681,  692,  685,  693,  694,  689,  692,  693,
+      693,  695,  695,  696,  697,  698,  699,  699,  705,  691,
+
+      698,  706,  700,  697,  701,  694,  696,  700,  703,  701,
+      702,  702,  705,  704,  712,  707,  708,  703,  704,  706,
+      707,  708,  709,  711,  710,  712,  714,  709,  710,  715,
+      714,  716,  711,  718,  719,  723,  721,  711,  717,  711,
+      720,  711,  717,  717,  715,  722,  725,  718,  720,  716,
+      721,  724,  724,  719,  726,  726,  728,  729,  730,  728,
+      723,  725,  729,  722,  731,  731,  732,  733,  733,  734,
+      735,  735,  736,  737,  734,  738,  739,  730,  737,  740,
+      740,  739,  741,  738,  742,   56,  732,  743,  745,  750,
+      742,  746,  736,  745,  743,  749,  746,  747,  748,  751,
+
+      741,  753,  747,  748,  749,  752,  752,  754,  750,  755,
+      751,  756,  757,  758,  755,  759,  760,  760,  761,  762,
+      765,  753,  763,  764,  766,  758,  769,  777,  764,  766,
+      754,  756,  757,  759,  771,  769,  771,  768,  761,  770,
+      763,  768,  768,  765,  762,  772,  773,  770,  774,  775,
+      776,  773,  774,  777,  778,  780,  779,  781,  782,  772,
+      775,  779,  782,  783,  784,  785,  789,  786,  788,  776,
+      787,  789,  778,  780,  792,  791,  796,  781,  794,  785,
+      791,  783,  786,  784,  790,  787,  793,  788,  795,  800,
+      800,  790,  792,  794,  795,  793,  797,  796,  798,  799,
+
+      803,  797,  804,  798,  799,  802,  802,  804,  805,  806,
+      807,  808,  808,  809,  807,  807,  810,  811,  803,  812,
+      813,  815,  805,  816,  814,  817,  813,  818,  806,  814,
+      820,  819,  809,  821,  823,  810,  822,  822,  812,  823,
+      815,  825,  816,  811,  817,  819,  818,  826,  821,  824,
+      829,  820,  833,  824,  825,  827,  826,  827,  830,  830,
+      831,  827,  832,  834,  836,  831,  832,  849,  834,  858,
+      829,  838,  833,  858,  827,  840,  838,  839,  839,  848,
+      840,  850,  836,  842,  842,  844,  844,  846,  847,  847,
+      846,  851,  849,  852,  848,  850,  851,  853,  853,  854,
+
+      855,  855,  856,  857,  859,  860,  863,  862,  852,  865,
+      860,  864,  864,  866,  857,  868,  869,  867,  869,  854,
+      863,  872,  870,  859,  856,  862,  867,  870,  874,  865,
+      878,  871,  873,  866,  876,  868,  871,  873,  875,  875,
+      876,  872,  874,  879,  879,  880,  881,  882,  887,  885,
+      882,  883,  892,  882,  878,  884,  883,  880,  885,  886,
+      884,  890,  890,  889,  886,  882,  881,  888,  889,  891,
+      888,  892,  893,  887,  894,  895,  896,  897,  900,  894,
+      895,  899,  897,  898,  898,  901,  899,  891,  902,  903,
+      904,  905,  893,  906,  907,  908,  900,  909,  906,  896,
+
+       51,  911,  904,  903,  905,  901,  911,  912,  902,  913,
+      915,  914,  918,  918,  907,  908,  913,  921,  909,  922,
+      914,  919,  912,  914,  919,  920,  915,  923,  922,  924,
+      920,  925,  926,  921,  927,  927,  928,  926,  924,  929,
+      925,  924,  930,  931,  932,  933,  923,  934,  934,  935,
+      936,   50,  929,  937,  937,  936,  928,  931,  938,  939,
+      930,  941,  942,  933,  945,  935,  941,  938,  937,  932,
+      938,  943,  944,  947,  946,  951,  943,  939,  944,  946,
+      942,  952,  948,  951,  945,  948,  947,  953,  954,  959,
+      955,  948,  956,  957,  952,  955,  960,  961,  962,  963,
+
+      960,  964,  961,  962,  963,  953,  965,  954,  956,  959,
+      964,  957,  966,  967,  967,  971,  968,  972,  974,  969,
+      970,  973,  972,  976,  976,  977,   45,  966,  977,  965,
+      968,  969,  970,  973,  971,  975,  974,  978,  978,  980,
+      982,  975,  981,  981,  983,  984,  985,  986,  980,  983,
+      987,  988,  982,  990,  984,  987,  989,  993,  985,  995,
+      988,  992,  986,  991,  991,  994,  992,  997,  990,  996,
+      996,  998,  998,  988,  999,  999,  989, 1000,  993,  995,
+     1001, 1000, 1005, 1002,  994, 1001, 1002,  997, 1004, 1006,
+     1007, 1008, 1008, 1004, 1006, 1009, 1009, 1010, 1011, 1012,
+
+     1005, 1013, 1010, 1014, 1015, 1016, 1017, 1017, 1018, 1020,
+     1011, 1011, 1011, 1019, 1019, 1007, 1022, 1011, 1015, 1012,
+     1024, 1013, 1027, 1014, 1025, 1022, 1016, 1023, 1023, 1020,
+     1026, 1025, 1028, 1028, 1018, 1024, 1029, 1030, 1032, 1026,
+     1033, 1034, 1035, 1032, 1039, 1033, 1036, 1036, 1027, 1035,
+     1037, 1038, 1042, 1030, 1040, 1037, 1041, 1043, 1045, 1041,
+     1038, 1034, 1029, 1046, 1039, 1047, 1040, 1044, 1044, 1048,
+     1042, 1053, 1049, 1045, 1051, 1048, 1050, 1050, 1052, 1052,
+     1047, 1049, 1046, 1043, 1054, 1051, 1055, 1056, 1056, 1057,
+     1051, 1055, 1053, 1057, 1057, 1058, 1059, 1060, 1054, 1061,
+
+     1058, 1062, 1063, 1064, 1061, 1065, 1063, 1066, 1069, 1060,
+     1067, 1068, 1066, 1062, 1071, 1064, 1068, 1071, 1072, 1072,
+     1069, 1074, 1059, 1073, 1073, 1075, 1082, 1078, 1076, 1077,
+     1065, 1075, 1067, 1076, 1080, 1077, 1078, 1084, 1082, 1080,
+     1086, 1074, 1085, 1085, 1087, 1088, 1089, 1090, 1093, 1084,
+     1091, 1090, 1092, 1087, 1096, 1091, 1103, 1092, 1095, 1095,
+     1086, 1106, 1093, 1088, 1097, 1089, 1098, 1100, 1100, 1104,
+     1095, 1103, 1096, 1097, 1105, 1098, 1107, 1107, 1106, 1105,
+     1108, 1111, 1108, 1104, 1109, 1109, 1112, 1114, 1111, 1113,
+     1113, 1115, 1116, 1117, 1119, 1118, 1114, 1120, 1121, 1124,
+
+     1128, 1124, 1125, 1123, 1116, 1117, 1112, 1118, 1123, 1119,
+     1126, 1130, 1115, 1135, 1128, 1129, 1129, 1120, 1121, 1126,
+     1125, 1131, 1132, 1133, 1132, 1134, 1131, 1136, 1133, 1137,
+     1134, 1135, 1140, 1138, 1137, 1141,   40, 1130, 1138, 1142,
+     1142, 1143, 1144, 1145, 1147, 1146, 1147, 1136, 1145, 1141,
+     1146, 1140, 1148, 1150, 1149, 1150, 1143, 1152, 1151, 1157,
+     1154, 1158, 1144, 1149, 1148, 1154, 1149, 1151, 1155, 1152,
+     1159, 1161, 1157, 1155, 1163, 1164, 1165, 1161, 1166, 1168,
+     1163, 1158, 1167, 1167, 1169, 1169, 1159, 1166, 1168, 1170,
+     1164, 1171, 1172, 1173, 1175, 1171, 1179, 1172, 1174, 1174,
+
+     1183, 1165, 1175, 1178, 1178, 1179, 1173, 1182, 1170, 1180,
+     1180, 1181, 1181, 1185, 1185, 1184, 1187, 1188, 1183, 1182,
+     1184, 1189, 1188, 1190, 1191, 1192, 1193, 1194, 1194, 1191,
+     1195, 1196, 1197, 1198, 1195, 1199, 1202, 1197, 1190, 1201,
+     1204, 1187, 1193, 1192, 1189, 1203, 1196, 1206, 1208, 1208,
+     1209, 1205, 1210, 1209, 1199, 1211, 1299, 1212, 1299, 1198,
+     1202, 1204, 1201, 1205, 1203, 1210, 1213, 1213, 1206, 1211,
+     1212, 1214, 1214, 1215, 1215, 1216, 1217, 1217, 1218, 1218,
+     1219, 1219, 1220, 1221, 1221, 1222, 1222, 1223, 1216, 1225,
+     1226, 1226, 1227, 1230, 1225, 1228, 1228, 1229, 1234, 1230,
+
+     1231, 1220, 1237, 1231, 1232, 1232, 1223, 1233, 1233, 1235,
+     1235, 1227, 1238, 1241, 1239, 1229, 1243, 1234, 1239, 1246,
+     1232, 1240, 1240, 1242, 1242, 1237, 1245, 1238, 1244, 1244,
+     1248, 1246, 1241, 1247, 1249, 1245, 1250, 1252, 1247, 1251,
+     1253, 1254, 1243, 1256, 1251, 1255, 1259, 1249, 1256, 1253,
+     1254, 1261, 1252,   14, 1257, 1248, 1266, 1250, 1257, 1255,
+     1261, 1262, 1262, 1263, 1264, 1264, 1259, 1268, 1263, 1270,
+     1271, 1266, 1270, 1264, 1272, 1271, 1273, 1273, 1276, 1268,
+     1275, 1275, 1277, 1277, 1278, 1279, 1280, 1281, 1281, 1283,
+     1285, 1285, 1276, 1283, 1272, 1284, 1278, 1286, 1284, 1279,
+
+     1287, 1288, 1286, 1289, 1290, 1280, 1291, 1289, 1292, 1295,
+     1293, 1291, 1296, 1292, 1297, 1288, 1293, 1296, 1298, 1297,
+     1287, 1302, 1302, 1316, 1290, 1295, 1298, 1306, 1306, 1309,
+     1310, 1310, 1312, 1312, 1309, 1314, 1315, 1315, 1317, 1316,
+     1314, 1318, 1320, 1320, 1322, 1323, 1318, 1324, 1328, 1322,
+     1326, 1326, 1329, 1328, 1329, 1330, 1331, 1332, 1332, 1335,
+     1317, 1331, 1324, 1323, 1333, 1333, 1334, 1334, 1336, 1330,
+     1337, 1335, 1338, 1339, 1340, 1341, 1342, 1342, 1343, 1340,
+     1344, 1345, 1337, 1346, 1338, 1339, 1336, 1343, 1347, 1348,
+     1349, 1356, 1350, 1351, 1358, 1341, 1346, 1350, 1351, 1352,
+
+     1352, 1345, 1357, 1348, 1353, 1353, 1344, 1359, 1349, 1360,
+     1361, 1356, 1347, 1362, 1363, 1363, 1358, 1366, 1360, 1368,
+     1357, 1365, 1365, 1369, 1370, 1367, 1366, 1359, 1371, 1372,
+     1361, 1362, 1367, 1374, 1368, 1373, 1373, 1375, 1374, 1376,
+     1377, 1369, 1370, 1378, 1371, 1380, 1383, 1384, 1372, 1387,
+     1384, 1385, 1385, 1386, 1376, 1375, 1389, 1390, 1390, 1377,
+     1389, 1391, 1394, 1378, 1380, 1401, 1383, 1387, 1386, 1393,
+     1393, 1395, 1395, 1402, 1391, 1396, 1396, 1400, 1400, 1403,
+     1404, 1394, 1402, 1405, 1403, 1404, 1406, 1401, 1408, 1411,
+     1409, 1410, 1412, 1412, 1406, 1409, 1410, 1413, 1413, 1423,
+
+     1414,   13, 1405, 1408, 1411, 1414, 1415, 1415, 1416, 1416,
+     1419, 1422, 1420, 1421, 1423, 1419, 1420, 1424, 1421, 1425,
+     1422, 1426, 1429, 1428, 1425, 1424, 1428, 1431, 1430, 1432,
+     1433, 1433, 1436, 1426, 1434, 1437, 1431, 1438, 1432, 1440,
+     1429, 1430, 1442, 1434, 1439, 1439, 1441, 1441, 1440, 1443,
+     1442, 1436, 1445, 1446, 1443, 1437, 1438, 1447, 1449, 1449,
+     1454, 1445, 1451, 1451, 1455, 1455, 1446, 1456, 1457, 1457,
+     1456, 1460, 1447, 1458, 1458, 1459, 1459, 1461, 1462, 1467,
+     1454, 1463, 1463, 1462, 1464, 1467, 1470, 1471, 1464, 1460,
+     1472, 1461, 1471, 1473, 1477, 1474, 1475, 1475, 1476, 1478,
+
+     1479, 1479, 1477, 1470, 1470, 1480, 1480, 1481, 1472, 1474,
+     1482, 1483, 1484, 1473, 1486, 1482, 1485, 1476, 1478, 1487,
+     1494, 1489, 1491, 1481, 1489, 1485, 1492, 1492, 1493, 1494,
+     1495, 1483, 1493, 1496, 1486, 1498, 1499, 1500, 1484, 1487,
+     1491, 1504, 1496, 1495, 1498, 1506, 1504, 1508, 1499, 1505,
+     1505, 1509, 1508, 1510, 1506, 1512, 1511, 1514, 1513, 1517,
+     1509, 1511, 1500, 1513, 1515, 1515, 1518, 1519, 1519, 1522,
+     1521, 1520, 1523, 1512, 1510, 1520, 1524, 1526, 1517, 1521,
+     1528, 1518, 1514, 1525, 1524, 1522, 1527, 1527, 1525, 1529,
+     1529, 1523, 1530, 1532, 1532, 1533, 1535, 1530, 1536, 1528,
+
+     1534, 1534, 1539, 1526, 1537, 1537, 1538, 1538, 1541,    0,
+     1535, 1540, 1542, 1542, 1543, 1533, 1545, 1544, 1551, 1546,
+     1536, 1539, 1544, 1540, 1546, 1547, 1543, 1554, 1541, 1548,
+     1548, 1550, 1550, 1553, 1555, 1545, 1586, 1551, 1553, 1555,
+     1586, 1554, 1547, 1547, 1556, 1556, 1557, 1557, 1558, 1558,
+     1559, 1561, 1561, 1563, 1563, 1559, 1565, 1565, 1566, 1567,
+     1567, 1568, 1571, 1572, 1572, 1576, 1568, 1566, 1573, 1575,
+     1571, 1577, 1578, 1573, 1575, 1579, 1580, 1583, 1584, 1584,
+     1594, 1580, 1592, 1576, 1585, 1585, 1592, 1577, 1597, 1578,
+     1578, 1590, 1590, 1599, 1594, 1601, 1579, 1583, 1596, 1596,
+
+     1600, 1600, 1602, 1597, 1603, 1604,    0, 1605, 1606,    0,
+     1604, 1599, 1605, 1607, 1607, 1610, 1610, 1602, 1612, 1612,
+     1601, 1613, 1613, 1615, 1619, 1603, 1618, 1606, 1616, 1616,
+     1621, 1618, 1620, 1622, 1623, 1615, 1628, 1620, 1619, 1629,
+     1628, 1630, 1631, 1634, 1632, 1635, 1637, 1633, 1640, 1621,
+     1623, 1622, 1636, 1636, 1630, 1637, 1641, 1646,    0, 1629,
+     1635, 1631, 1632, 1633, 1638, 1639, 1643, 1642, 1634, 1638,
+     1639, 1641, 1642, 1640, 1645, 1650, 1646, 1647, 1648, 1649,
+     1643, 1651, 1647, 1648, 1652, 1653, 1654, 1656, 1650, 1645,
+     1655, 1657, 1658, 1649, 1659,    0, 1657, 1658, 1652, 1654,
+
+     1651, 1660, 1660, 1655, 1653, 1661, 1656, 1662, 1664, 1663,
+     1661, 1665, 1662, 1659, 1663, 1667, 1665, 1666, 1666, 1668,
+     1669, 1670, 1667, 1671, 1672, 1674, 1670, 1664, 1675, 1676,
+     1674, 1677, 1678, 1678, 1680, 1679, 1683, 1672, 1668, 1669,
+     1679, 1683, 1671, 1685, 1677, 1681, 1681, 1675, 1676, 1682,
+     1682, 1684, 1687, 1680, 1686, 1686, 1688, 1689, 1684, 1687,
+     1690, 1691, 1685, 1688, 1693, 1690, 1694, 1695, 1696, 1693,
+     1698, 1694, 1697, 1697, 1699,    0, 1689, 1700, 1700, 1711,
+     1691, 1701, 1701, 1702, 1703, 1703, 1695, 1696, 1705, 1698,
+     1702, 1704, 1704, 1699, 1707, 1705, 1710, 1712, 1711, 1707,
+
+        0, 1710, 1713, 1713, 1714, 1714,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0, 1712, 1718, 1718, 1718,
+     1718, 1718, 1718, 1718, 1719, 1719, 1719, 1719, 1719, 1719,
+     1719, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1721, 1721,
+     1721, 1721, 1721, 1721, 1721, 1722, 1722, 1722, 1722, 1722,
+     1722, 1722, 1724, 1724,    0, 1724, 1724, 1724, 1724, 1725,
+     1725,    0,    0,    0, 1725, 1725, 1726, 1726,    0,    0,
+     1726,    0, 1726, 1727,    0,    0,    0,    0,    0, 1727,
+     1728, 1728,    0,    0,    0, 1728, 1728, 1729,    0,    0,
+        0,    0,    0, 1729, 1730, 1730,    0, 1730, 1730, 1730,
+
+     1730, 1731, 1731,    0, 1731, 1731, 1731, 1731, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+     1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1950,7 +1959,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1952 "<stdout>"
+#line 1961 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2137,7 +2146,7 @@ YY_DECL
     
 #line 197 "./util/configlexer.lex"
 
-#line 2139 "<stdout>"
+#line 2148 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -2196,13 +2205,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 >= 1705 )
+                               if ( yy_current_state >= 1718 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 3384 );
+               while ( yy_base[yy_current_state] != 3409 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2537,495 +2546,500 @@ YY_RULE_SETUP
 case 62:
 YY_RULE_SETUP
 #line 262 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 263 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 264 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 265 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 266 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 267 "./util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 268 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 269 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 270 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 271 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 272 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 273 "./util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 274 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 275 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 276 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 277 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 278 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 279 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 280 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 281 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 282 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 283 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 284 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 285 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 286 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 287 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 288 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 289 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 290 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 291 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 292 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 293 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 294 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 295 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 296 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 297 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 298 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 299 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 300 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 301 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 302 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 303 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 312 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 318 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 320 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 333 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 336 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 341 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 343 "./util/configlexer.lex"
+#line 342 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 345 "./util/configlexer.lex"
+#line 344 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 347 "./util/configlexer.lex"
+#line 346 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 349 "./util/configlexer.lex"
+#line 348 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 351 "./util/configlexer.lex"
+#line 350 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 353 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+#line 352 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 354 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 355 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 356 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 357 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 358 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 152:
-/* rule 152 can match eol */
 YY_RULE_SETUP
 #line 359 "./util/configlexer.lex"
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+       YY_BREAK
+case 153:
+/* rule 153 can match eol */
+YY_RULE_SETUP
+#line 360 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 153:
+case 154:
 YY_RULE_SETUP
-#line 362 "./util/configlexer.lex"
+#line 363 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 363 "./util/configlexer.lex"
+#line 364 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 154:
+case 155:
 YY_RULE_SETUP
-#line 368 "./util/configlexer.lex"
+#line 369 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 155:
-/* rule 155 can match eol */
+case 156:
+/* rule 156 can match eol */
 YY_RULE_SETUP
-#line 369 "./util/configlexer.lex"
+#line 370 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 156:
+case 157:
 YY_RULE_SETUP
-#line 371 "./util/configlexer.lex"
+#line 372 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3038,34 +3052,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 157:
+case 158:
 YY_RULE_SETUP
-#line 383 "./util/configlexer.lex"
+#line 384 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 384 "./util/configlexer.lex"
+#line 385 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 158:
+case 159:
 YY_RULE_SETUP
-#line 389 "./util/configlexer.lex"
+#line 390 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 159:
-/* rule 159 can match eol */
+case 160:
+/* rule 160 can match eol */
 YY_RULE_SETUP
-#line 390 "./util/configlexer.lex"
+#line 391 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 160:
+case 161:
 YY_RULE_SETUP
-#line 392 "./util/configlexer.lex"
+#line 393 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3078,38 +3092,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 404 "./util/configlexer.lex"
+#line 405 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 406 "./util/configlexer.lex"
+#line 407 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 410 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 163:
-/* rule 163 can match eol */
 YY_RULE_SETUP
 #line 411 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 164:
+/* rule 164 can match eol */
 YY_RULE_SETUP
 #line 412 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 413 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 166:
+YY_RULE_SETUP
+#line 414 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3117,27 +3131,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 418 "./util/configlexer.lex"
+#line 419 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 422 "./util/configlexer.lex"
+#line 423 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 167:
-/* rule 167 can match eol */
+case 168:
+/* rule 168 can match eol */
 YY_RULE_SETUP
-#line 423 "./util/configlexer.lex"
+#line 424 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 425 "./util/configlexer.lex"
+#line 426 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3147,7 +3161,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 431 "./util/configlexer.lex"
+#line 432 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3159,33 +3173,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 442 "./util/configlexer.lex"
+#line 443 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 446 "./util/configlexer.lex"
+#line 447 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 450 "./util/configlexer.lex"
+#line 451 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 454 "./util/configlexer.lex"
+#line 455 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3187 "<stdout>"
+#line 3201 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3475,7 +3489,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 >= 1705 )
+                       if ( yy_current_state >= 1718 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3503,11 +3517,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 >= 1705 )
+               if ( yy_current_state >= 1718 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1704);
+       yy_is_jam = (yy_current_state == 1717);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4140,7 +4154,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 454 "./util/configlexer.lex"
+#line 455 "./util/configlexer.lex"
 
 
 
index dee003b060ee4c38d06fe52f023613a165fa5956..0edb7bb45bb602281ef4cb4eadf9b5847a0f303d 100644 (file)
@@ -259,6 +259,7 @@ harden-below-nxdomain{COLON}        { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
 harden-referral-path{COLON}    { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
 harden-algo-downgrade{COLON}   { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
 use-caps-for-id{COLON}         { YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+caps-whitelist{COLON}          { YDVAR(1, VAR_CAPS_WHITELIST) }
 unwanted-reply-threshold{COLON}        { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
 private-address{COLON}         { YDVAR(1, VAR_PRIVATE_ADDRESS) }
 private-domain{COLON}          { YDVAR(1, VAR_PRIVATE_DOMAIN) }
index acbd59b74e77c90d5c2982524beb6615b5d25646..063cd966992559ac09a70fb0da9582e07aef8047 100644 (file)
@@ -282,7 +282,8 @@ extern int yydebug;
      VAR_RATELIMIT_SIZE = 410,
      VAR_RATELIMIT_FOR_DOMAIN = 411,
      VAR_RATELIMIT_BELOW_DOMAIN = 412,
-     VAR_RATELIMIT_FACTOR = 413
+     VAR_RATELIMIT_FACTOR = 413,
+     VAR_CAPS_WHITELIST = 414
    };
 #endif
 /* Tokens.  */
@@ -442,6 +443,7 @@ extern int yydebug;
 #define VAR_RATELIMIT_FOR_DOMAIN 411
 #define VAR_RATELIMIT_BELOW_DOMAIN 412
 #define VAR_RATELIMIT_FACTOR 413
+#define VAR_CAPS_WHITELIST 414
 
 
 
@@ -455,7 +457,7 @@ typedef union YYSTYPE
 
 
 /* Line 387 of yacc.c  */
-#line 459 "util/configparser.c"
+#line 461 "util/configparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -483,7 +485,7 @@ int yyparse ();
 /* Copy the second part of user declarations.  */
 
 /* Line 390 of yacc.c  */
-#line 487 "util/configparser.c"
+#line 489 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -703,20 +705,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   297
+#define YYLAST   299
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  159
+#define YYNTOKENS  160
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  164
+#define YYNNTS  165
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  313
+#define YYNRULES  315
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  461
+#define YYNSTATES  464
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   413
+#define YYMAXUTOK   414
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -765,7 +767,7 @@ static const yytype_uint8 yytranslate[] =
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158
+     155,   156,   157,   158,   159
 };
 
 #if YYDEBUG
@@ -785,146 +787,147 @@ static const yytype_uint16 yyprhs[] =
      185,   187,   189,   191,   193,   195,   197,   199,   201,   203,
      205,   207,   209,   211,   213,   215,   217,   219,   221,   223,
      225,   227,   229,   231,   233,   235,   237,   239,   241,   243,
-     245,   247,   249,   251,   253,   255,   257,   259,   262,   263,
-     265,   267,   269,   271,   273,   275,   278,   279,   281,   283,
-     285,   287,   290,   293,   296,   299,   302,   305,   308,   311,
-     314,   317,   320,   323,   326,   329,   332,   335,   338,   341,
-     344,   347,   350,   353,   356,   359,   362,   365,   368,   371,
-     374,   377,   380,   383,   386,   389,   392,   395,   398,   401,
-     404,   407,   410,   413,   416,   419,   422,   425,   428,   431,
-     434,   437,   440,   443,   446,   449,   452,   455,   458,   461,
-     464,   467,   470,   473,   476,   479,   482,   485,   488,   491,
-     494,   497,   500,   503,   506,   509,   512,   515,   518,   521,
-     524,   527,   531,   534,   537,   540,   543,   546,   549,   552,
-     555,   558,   561,   564,   567,   570,   573,   576,   579,   582,
-     585,   589,   592,   595,   598,   601,   604,   607,   610,   613,
-     616,   619,   623,   627,   630,   633,   636,   639,   642,   645,
-     648,   651,   654,   657,   659,   662,   663,   665,   667,   669,
-     671,   673,   675,   677,   679,   682,   685,   688,   691,   694,
-     697,   700,   703,   705,   708,   709,   711,   713,   715,   717,
-     719,   721,   723,   725,   727,   729,   731,   733,   736,   739,
-     742,   745,   748,   751,   754,   757,   760,   763,   766,   769,
-     771,   774,   775,   777
+     245,   247,   249,   251,   253,   255,   257,   259,   261,   264,
+     265,   267,   269,   271,   273,   275,   277,   280,   281,   283,
+     285,   287,   289,   292,   295,   298,   301,   304,   307,   310,
+     313,   316,   319,   322,   325,   328,   331,   334,   337,   340,
+     343,   346,   349,   352,   355,   358,   361,   364,   367,   370,
+     373,   376,   379,   382,   385,   388,   391,   394,   397,   400,
+     403,   406,   409,   412,   415,   418,   421,   424,   427,   430,
+     433,   436,   439,   442,   445,   448,   451,   454,   457,   460,
+     463,   466,   469,   472,   475,   478,   481,   484,   487,   490,
+     493,   496,   499,   502,   505,   508,   511,   514,   517,   520,
+     523,   526,   529,   532,   536,   539,   542,   545,   548,   551,
+     554,   557,   560,   563,   566,   569,   572,   575,   578,   581,
+     584,   587,   590,   594,   597,   600,   603,   606,   609,   612,
+     615,   618,   621,   624,   628,   632,   635,   638,   641,   644,
+     647,   650,   653,   656,   659,   662,   664,   667,   668,   670,
+     672,   674,   676,   678,   680,   682,   684,   687,   690,   693,
+     696,   699,   702,   705,   708,   710,   713,   714,   716,   718,
+     720,   722,   724,   726,   728,   730,   732,   734,   736,   738,
+     741,   744,   747,   750,   753,   756,   759,   762,   765,   768,
+     771,   774,   776,   779,   780,   782
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     160,     0,    -1,    -1,   160,   161,    -1,   162,   163,    -1,
-     165,   166,    -1,   168,   169,    -1,   319,   320,    -1,   293,
-     294,    -1,   304,   305,    -1,    11,    -1,   163,   164,    -1,
-      -1,   171,    -1,   172,    -1,   176,    -1,   179,    -1,   185,
-      -1,   186,    -1,   187,    -1,   188,    -1,   177,    -1,   198,
-      -1,   199,    -1,   200,    -1,   201,    -1,   202,    -1,   221,
-      -1,   222,    -1,   223,    -1,   227,    -1,   228,    -1,   182,
-      -1,   229,    -1,   230,    -1,   233,    -1,   231,    -1,   232,
-      -1,   235,    -1,   236,    -1,   237,    -1,   249,    -1,   211,
-      -1,   212,    -1,   213,    -1,   214,    -1,   238,    -1,   252,
-      -1,   207,    -1,   209,    -1,   253,    -1,   258,    -1,   259,
-      -1,   260,    -1,   183,    -1,   220,    -1,   267,    -1,   268,
-      -1,   208,    -1,   263,    -1,   195,    -1,   178,    -1,   203,
-      -1,   250,    -1,   256,    -1,   239,    -1,   251,    -1,   270,
-      -1,   271,    -1,   184,    -1,   173,    -1,   194,    -1,   243,
-      -1,   174,    -1,   180,    -1,   181,    -1,   204,    -1,   205,
-      -1,   269,    -1,   241,    -1,   244,    -1,   245,    -1,   175,
-      -1,   272,    -1,   224,    -1,   248,    -1,   196,    -1,   210,
-      -1,   254,    -1,   255,    -1,   257,    -1,   262,    -1,   206,
-      -1,   264,    -1,   265,    -1,   266,    -1,   215,    -1,   219,
-      -1,   246,    -1,   247,    -1,   216,    -1,   240,    -1,   261,
-      -1,   197,    -1,   189,    -1,   190,    -1,   191,    -1,   192,
-      -1,   193,    -1,   273,    -1,   274,    -1,   275,    -1,   217,
-      -1,   225,    -1,   226,    -1,   276,    -1,   277,    -1,   234,
-      -1,   242,    -1,   218,    -1,   278,    -1,   280,    -1,   279,
-      -1,   281,    -1,   282,    -1,   283,    -1,    38,    -1,   166,
-     167,    -1,    -1,   284,    -1,   285,    -1,   286,    -1,   288,
-      -1,   287,    -1,    44,    -1,   169,   170,    -1,    -1,   289,
-      -1,   290,    -1,   291,    -1,   292,    -1,    13,    10,    -1,
-      12,    10,    -1,    76,    10,    -1,    79,    10,    -1,    97,
-      10,    -1,    14,    10,    -1,    16,    10,    -1,    67,    10,
-      -1,    15,    10,    -1,    80,    10,    -1,    81,    10,    -1,
-      31,    10,    -1,    60,    10,    -1,    75,    10,    -1,    17,
-      10,    -1,    18,    10,    -1,    19,    10,    -1,    20,    10,
-      -1,   123,    10,    -1,   124,    10,    -1,   125,    10,    -1,
-     126,    10,    -1,   127,    10,    -1,    77,    10,    -1,    66,
-      10,    -1,   102,    10,    -1,   122,    10,    -1,    21,    10,
-      -1,    22,    10,    -1,    23,    10,    -1,    24,    10,    -1,
-      25,    10,    -1,    68,    10,    -1,    82,    10,    -1,    83,
-      10,    -1,   110,    10,    -1,    54,    10,    -1,    64,    10,
-      -1,    55,    10,    -1,   103,    10,    -1,    48,    10,    -1,
-      49,    10,    -1,    50,    10,    -1,    51,    10,    -1,   114,
-      10,    -1,   118,    10,    -1,   119,    10,    -1,   152,    10,
-      -1,   115,    10,    -1,    61,    10,    -1,    26,    10,    -1,
-      27,    10,    -1,    28,    10,    -1,    99,    10,    -1,   133,
-      10,    -1,   134,    10,    -1,    29,    10,    -1,    30,    10,
-      -1,    32,    10,    -1,    33,    10,    -1,    35,    10,    -1,
-      36,    10,    -1,    34,    10,    -1,   135,    10,    -1,    41,
-      10,    -1,    42,    10,    -1,    43,    10,    -1,    52,    10,
-      -1,    71,    10,    -1,   120,    10,    -1,    85,    10,    -1,
-     151,    10,    -1,    78,    10,    -1,    86,    10,    -1,    87,
-      10,    -1,   116,    10,    -1,   117,    10,    -1,   101,    10,
-      -1,    47,    10,    -1,    69,    10,    -1,    72,    10,    10,
-      -1,    53,    10,    -1,    56,    10,    -1,   106,    10,    -1,
-     107,    10,    -1,    70,    10,    -1,   108,    10,    -1,    57,
-      10,    -1,    58,    10,    -1,    59,    10,    -1,   121,    10,
-      -1,   109,    10,    -1,    65,    10,    -1,   112,    10,    -1,
-     113,    10,    -1,   111,    10,    -1,    62,    10,    -1,    63,
-      10,    -1,    84,    10,    -1,    73,    10,    10,    -1,    74,
-      10,    -1,    98,    10,    -1,   130,    10,    -1,   131,    10,
-      -1,   132,    10,    -1,   136,    10,    -1,   137,    10,    -1,
-     153,    10,    -1,   155,    10,    -1,   154,    10,    -1,   156,
-      10,    10,    -1,   157,    10,    10,    -1,   158,    10,    -1,
-      37,    10,    -1,    39,    10,    -1,    40,    10,    -1,   129,
-      10,    -1,   100,    10,    -1,    37,    10,    -1,    45,    10,
-      -1,    46,    10,    -1,   128,    10,    -1,    88,    -1,   294,
-     295,    -1,    -1,   296,    -1,   298,    -1,   297,    -1,   300,
-      -1,   301,    -1,   302,    -1,   303,    -1,   299,    -1,    89,
-      10,    -1,    91,    10,    -1,    90,    10,    -1,    96,    10,
-      -1,    92,    10,    -1,    93,    10,    -1,    94,    10,    -1,
-      95,    10,    -1,   138,    -1,   305,   306,    -1,    -1,   307,
-      -1,   308,    -1,   309,    -1,   310,    -1,   311,    -1,   312,
-      -1,   313,    -1,   314,    -1,   315,    -1,   316,    -1,   317,
-      -1,   318,    -1,   139,    10,    -1,   140,    10,    -1,   141,
-      10,    -1,   142,    10,    -1,   143,    10,    -1,   144,    10,
-      -1,   145,    10,    -1,   146,    10,    -1,   147,    10,    -1,
-     148,    10,    -1,   149,    10,    -1,   150,    10,    -1,   104,
-      -1,   320,   321,    -1,    -1,   322,    -1,   105,    10,    -1
+     161,     0,    -1,    -1,   161,   162,    -1,   163,   164,    -1,
+     166,   167,    -1,   169,   170,    -1,   321,   322,    -1,   295,
+     296,    -1,   306,   307,    -1,    11,    -1,   164,   165,    -1,
+      -1,   172,    -1,   173,    -1,   177,    -1,   180,    -1,   186,
+      -1,   187,    -1,   188,    -1,   189,    -1,   178,    -1,   199,
+      -1,   200,    -1,   201,    -1,   202,    -1,   203,    -1,   222,
+      -1,   223,    -1,   224,    -1,   228,    -1,   229,    -1,   183,
+      -1,   230,    -1,   231,    -1,   234,    -1,   232,    -1,   233,
+      -1,   236,    -1,   237,    -1,   238,    -1,   251,    -1,   212,
+      -1,   213,    -1,   214,    -1,   215,    -1,   239,    -1,   254,
+      -1,   208,    -1,   210,    -1,   255,    -1,   260,    -1,   261,
+      -1,   262,    -1,   184,    -1,   221,    -1,   269,    -1,   270,
+      -1,   209,    -1,   265,    -1,   196,    -1,   179,    -1,   204,
+      -1,   252,    -1,   258,    -1,   240,    -1,   253,    -1,   272,
+      -1,   273,    -1,   185,    -1,   174,    -1,   195,    -1,   244,
+      -1,   175,    -1,   181,    -1,   182,    -1,   205,    -1,   206,
+      -1,   271,    -1,   242,    -1,   246,    -1,   247,    -1,   176,
+      -1,   274,    -1,   225,    -1,   250,    -1,   197,    -1,   211,
+      -1,   256,    -1,   257,    -1,   259,    -1,   264,    -1,   207,
+      -1,   266,    -1,   267,    -1,   268,    -1,   216,    -1,   220,
+      -1,   248,    -1,   249,    -1,   217,    -1,   241,    -1,   263,
+      -1,   198,    -1,   190,    -1,   191,    -1,   192,    -1,   193,
+      -1,   194,    -1,   275,    -1,   276,    -1,   277,    -1,   218,
+      -1,   226,    -1,   227,    -1,   278,    -1,   279,    -1,   235,
+      -1,   243,    -1,   219,    -1,   280,    -1,   282,    -1,   281,
+      -1,   283,    -1,   284,    -1,   285,    -1,   245,    -1,    38,
+      -1,   167,   168,    -1,    -1,   286,    -1,   287,    -1,   288,
+      -1,   290,    -1,   289,    -1,    44,    -1,   170,   171,    -1,
+      -1,   291,    -1,   292,    -1,   293,    -1,   294,    -1,    13,
+      10,    -1,    12,    10,    -1,    76,    10,    -1,    79,    10,
+      -1,    97,    10,    -1,    14,    10,    -1,    16,    10,    -1,
+      67,    10,    -1,    15,    10,    -1,    80,    10,    -1,    81,
+      10,    -1,    31,    10,    -1,    60,    10,    -1,    75,    10,
+      -1,    17,    10,    -1,    18,    10,    -1,    19,    10,    -1,
+      20,    10,    -1,   123,    10,    -1,   124,    10,    -1,   125,
+      10,    -1,   126,    10,    -1,   127,    10,    -1,    77,    10,
+      -1,    66,    10,    -1,   102,    10,    -1,   122,    10,    -1,
+      21,    10,    -1,    22,    10,    -1,    23,    10,    -1,    24,
+      10,    -1,    25,    10,    -1,    68,    10,    -1,    82,    10,
+      -1,    83,    10,    -1,   110,    10,    -1,    54,    10,    -1,
+      64,    10,    -1,    55,    10,    -1,   103,    10,    -1,    48,
+      10,    -1,    49,    10,    -1,    50,    10,    -1,    51,    10,
+      -1,   114,    10,    -1,   118,    10,    -1,   119,    10,    -1,
+     152,    10,    -1,   115,    10,    -1,    61,    10,    -1,    26,
+      10,    -1,    27,    10,    -1,    28,    10,    -1,    99,    10,
+      -1,   133,    10,    -1,   134,    10,    -1,    29,    10,    -1,
+      30,    10,    -1,    32,    10,    -1,    33,    10,    -1,    35,
+      10,    -1,    36,    10,    -1,    34,    10,    -1,   135,    10,
+      -1,    41,    10,    -1,    42,    10,    -1,    43,    10,    -1,
+      52,    10,    -1,    71,    10,    -1,   120,    10,    -1,    85,
+      10,    -1,   151,    10,    -1,    78,    10,    -1,   159,    10,
+      -1,    86,    10,    -1,    87,    10,    -1,   116,    10,    -1,
+     117,    10,    -1,   101,    10,    -1,    47,    10,    -1,    69,
+      10,    -1,    72,    10,    10,    -1,    53,    10,    -1,    56,
+      10,    -1,   106,    10,    -1,   107,    10,    -1,    70,    10,
+      -1,   108,    10,    -1,    57,    10,    -1,    58,    10,    -1,
+      59,    10,    -1,   121,    10,    -1,   109,    10,    -1,    65,
+      10,    -1,   112,    10,    -1,   113,    10,    -1,   111,    10,
+      -1,    62,    10,    -1,    63,    10,    -1,    84,    10,    -1,
+      73,    10,    10,    -1,    74,    10,    -1,    98,    10,    -1,
+     130,    10,    -1,   131,    10,    -1,   132,    10,    -1,   136,
+      10,    -1,   137,    10,    -1,   153,    10,    -1,   155,    10,
+      -1,   154,    10,    -1,   156,    10,    10,    -1,   157,    10,
+      10,    -1,   158,    10,    -1,    37,    10,    -1,    39,    10,
+      -1,    40,    10,    -1,   129,    10,    -1,   100,    10,    -1,
+      37,    10,    -1,    45,    10,    -1,    46,    10,    -1,   128,
+      10,    -1,    88,    -1,   296,   297,    -1,    -1,   298,    -1,
+     300,    -1,   299,    -1,   302,    -1,   303,    -1,   304,    -1,
+     305,    -1,   301,    -1,    89,    10,    -1,    91,    10,    -1,
+      90,    10,    -1,    96,    10,    -1,    92,    10,    -1,    93,
+      10,    -1,    94,    10,    -1,    95,    10,    -1,   138,    -1,
+     307,   308,    -1,    -1,   309,    -1,   310,    -1,   311,    -1,
+     312,    -1,   313,    -1,   314,    -1,   315,    -1,   316,    -1,
+     317,    -1,   318,    -1,   319,    -1,   320,    -1,   139,    10,
+      -1,   140,    10,    -1,   141,    10,    -1,   142,    10,    -1,
+     143,    10,    -1,   144,    10,    -1,   145,    10,    -1,   146,
+      10,    -1,   147,    10,    -1,   148,    10,    -1,   149,    10,
+      -1,   150,    10,    -1,   104,    -1,   322,   323,    -1,    -1,
+     324,    -1,   105,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   126,   126,   126,   127,   127,   128,   128,   129,   129,
-     133,   138,   139,   140,   140,   140,   141,   141,   142,   142,
-     142,   143,   143,   143,   144,   144,   144,   145,   145,   146,
-     146,   147,   147,   148,   148,   149,   149,   150,   150,   151,
-     151,   152,   152,   153,   153,   153,   154,   154,   154,   155,
-     155,   155,   156,   156,   157,   157,   158,   158,   159,   159,
-     160,   160,   160,   161,   161,   162,   162,   163,   163,   163,
-     164,   164,   165,   165,   166,   166,   167,   167,   167,   168,
-     168,   169,   169,   170,   170,   171,   171,   172,   172,   173,
-     173,   173,   174,   174,   175,   175,   175,   176,   176,   176,
-     177,   177,   177,   178,   178,   178,   179,   179,   179,   180,
-     180,   180,   181,   181,   181,   182,   182,   183,   183,   184,
-     184,   184,   185,   185,   186,   186,   188,   200,   201,   202,
-     202,   202,   202,   202,   204,   216,   217,   218,   218,   218,
-     218,   220,   229,   238,   249,   258,   267,   276,   289,   304,
-     313,   322,   331,   340,   349,   358,   367,   376,   385,   394,
-     403,   412,   419,   426,   435,   444,   458,   467,   476,   483,
-     490,   497,   505,   512,   519,   526,   533,   541,   549,   557,
-     564,   571,   580,   589,   596,   603,   611,   619,   629,   639,
-     652,   663,   671,   684,   693,   702,   711,   721,   729,   742,
-     751,   759,   768,   776,   789,   798,   805,   815,   825,   835,
-     845,   855,   865,   875,   885,   892,   899,   908,   917,   926,
-     933,   943,   960,   967,   985,   998,  1011,  1020,  1029,  1038,
-    1048,  1058,  1067,  1076,  1083,  1092,  1101,  1110,  1118,  1131,
-    1139,  1163,  1170,  1185,  1195,  1205,  1212,  1219,  1228,  1237,
-    1245,  1258,  1271,  1284,  1293,  1303,  1310,  1317,  1326,  1336,
-    1346,  1353,  1360,  1369,  1374,  1375,  1376,  1376,  1376,  1377,
-    1377,  1377,  1378,  1378,  1380,  1390,  1399,  1406,  1416,  1423,
-    1430,  1437,  1444,  1449,  1450,  1451,  1451,  1452,  1452,  1453,
-    1453,  1454,  1455,  1456,  1457,  1458,  1459,  1461,  1469,  1476,
-    1484,  1492,  1499,  1506,  1515,  1524,  1533,  1542,  1551,  1560,
-    1565,  1566,  1567,  1569
+       0,   127,   127,   127,   128,   128,   129,   129,   130,   130,
+     134,   139,   140,   141,   141,   141,   142,   142,   143,   143,
+     143,   144,   144,   144,   145,   145,   145,   146,   146,   147,
+     147,   148,   148,   149,   149,   150,   150,   151,   151,   152,
+     152,   153,   153,   154,   154,   154,   155,   155,   155,   156,
+     156,   156,   157,   157,   158,   158,   159,   159,   160,   160,
+     161,   161,   161,   162,   162,   163,   163,   164,   164,   164,
+     165,   165,   166,   166,   167,   167,   168,   168,   168,   169,
+     169,   170,   170,   171,   171,   172,   172,   173,   173,   174,
+     174,   174,   175,   175,   176,   176,   176,   177,   177,   177,
+     178,   178,   178,   179,   179,   179,   180,   180,   180,   181,
+     181,   181,   182,   182,   182,   183,   183,   184,   184,   185,
+     185,   185,   186,   186,   187,   187,   188,   190,   202,   203,
+     204,   204,   204,   204,   204,   206,   218,   219,   220,   220,
+     220,   220,   222,   231,   240,   251,   260,   269,   278,   291,
+     306,   315,   324,   333,   342,   351,   360,   369,   378,   387,
+     396,   405,   414,   421,   428,   437,   446,   460,   469,   478,
+     485,   492,   499,   507,   514,   521,   528,   535,   543,   551,
+     559,   566,   573,   582,   591,   598,   605,   613,   621,   631,
+     641,   654,   665,   673,   686,   695,   704,   713,   723,   731,
+     744,   753,   761,   770,   778,   791,   800,   807,   817,   827,
+     837,   847,   857,   867,   877,   887,   894,   901,   908,   917,
+     926,   935,   942,   952,   969,   976,   994,  1007,  1020,  1029,
+    1038,  1047,  1057,  1067,  1076,  1085,  1092,  1101,  1110,  1119,
+    1127,  1140,  1148,  1172,  1179,  1194,  1204,  1214,  1221,  1228,
+    1237,  1246,  1254,  1267,  1280,  1293,  1302,  1312,  1319,  1326,
+    1335,  1345,  1355,  1362,  1369,  1378,  1383,  1384,  1385,  1385,
+    1385,  1386,  1386,  1386,  1387,  1387,  1389,  1399,  1408,  1415,
+    1425,  1432,  1439,  1446,  1453,  1458,  1459,  1460,  1460,  1461,
+    1461,  1462,  1462,  1463,  1464,  1465,  1466,  1467,  1468,  1470,
+    1478,  1485,  1493,  1501,  1508,  1515,  1524,  1533,  1542,  1551,
+    1560,  1569,  1574,  1575,  1576,  1578
 };
 #endif
 
@@ -988,17 +991,18 @@ static const char *const yytname[] =
   "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES",
   "VAR_HARDEN_ALGO_DOWNGRADE", "VAR_IP_TRANSPARENT", "VAR_RATELIMIT",
   "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_RATELIMIT_FOR_DOMAIN",
-  "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR", "$accept",
-  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
-  "content_server", "stubstart", "contents_stub", "content_stub",
-  "forwardstart", "contents_forward", "content_forward",
-  "server_num_threads", "server_verbosity", "server_statistics_interval",
-  "server_statistics_cumulative", "server_extended_statistics",
-  "server_port", "server_interface", "server_outgoing_interface",
-  "server_outgoing_range", "server_outgoing_port_permit",
-  "server_outgoing_port_avoid", "server_outgoing_num_tcp",
-  "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4",
-  "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_upstream",
+  "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR",
+  "VAR_CAPS_WHITELIST", "$accept", "toplevelvars", "toplevelvar",
+  "serverstart", "contents_server", "content_server", "stubstart",
+  "contents_stub", "content_stub", "forwardstart", "contents_forward",
+  "content_forward", "server_num_threads", "server_verbosity",
+  "server_statistics_interval", "server_statistics_cumulative",
+  "server_extended_statistics", "server_port", "server_interface",
+  "server_outgoing_interface", "server_outgoing_range",
+  "server_outgoing_port_permit", "server_outgoing_port_avoid",
+  "server_outgoing_num_tcp", "server_incoming_num_tcp",
+  "server_interface_automatic", "server_do_ip4", "server_do_ip6",
+  "server_do_udp", "server_do_tcp", "server_tcp_upstream",
   "server_ssl_upstream", "server_ssl_service_key",
   "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize",
   "server_use_syslog", "server_log_time_ascii", "server_log_queries",
@@ -1022,13 +1026,13 @@ static const char *const yytname[] =
   "server_harden_glue", "server_harden_dnssec_stripped",
   "server_harden_below_nxdomain", "server_harden_referral_path",
   "server_harden_algo_downgrade", "server_use_caps_for_id",
-  "server_private_address", "server_private_domain", "server_prefetch",
-  "server_prefetch_key", "server_unwanted_reply_threshold",
-  "server_do_not_query_address", "server_do_not_query_localhost",
-  "server_access_control", "server_module_conf",
-  "server_val_override_date", "server_val_sig_skew_min",
-  "server_val_sig_skew_max", "server_cache_max_ttl",
-  "server_cache_min_ttl", "server_bogus_ttl",
+  "server_caps_whitelist", "server_private_address",
+  "server_private_domain", "server_prefetch", "server_prefetch_key",
+  "server_unwanted_reply_threshold", "server_do_not_query_address",
+  "server_do_not_query_localhost", "server_access_control",
+  "server_module_conf", "server_val_override_date",
+  "server_val_sig_skew_min", "server_val_sig_skew_max",
+  "server_cache_max_ttl", "server_cache_min_ttl", "server_bogus_ttl",
   "server_val_clean_additional", "server_val_permissive_mode",
   "server_ignore_cd_flag", "server_val_log_level",
   "server_val_nsec3_keysize_iterations", "server_add_holddown",
@@ -1077,28 +1081,28 @@ static const yytype_uint16 yytoknum[] =
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   159,   160,   160,   161,   161,   161,   161,   161,   161,
-     162,   163,   163,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
-     164,   164,   164,   164,   164,   164,   165,   166,   166,   167,
-     167,   167,   167,   167,   168,   169,   169,   170,   170,   170,
-     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+       0,   160,   161,   161,   162,   162,   162,   162,   162,   162,
+     163,   164,   164,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   165,   165,   165,   165,   165,   166,   167,   167,
+     168,   168,   168,   168,   168,   169,   170,   170,   171,   171,
+     171,   171,   172,   173,   174,   175,   176,   177,   178,   179,
      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
@@ -1110,12 +1114,12 @@ static const yytype_uint16 yyr1[] =
      260,   261,   262,   263,   264,   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,   294,   295,   295,   295,   295,
-     295,   295,   295,   295,   296,   297,   298,   299,   300,   301,
-     302,   303,   304,   305,   305,   306,   306,   306,   306,   306,
-     306,   306,   306,   306,   306,   306,   306,   307,   308,   309,
+     290,   291,   292,   293,   294,   295,   296,   296,   297,   297,
+     297,   297,   297,   297,   297,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   307,   308,   308,   308,
+     308,   308,   308,   308,   308,   308,   308,   308,   308,   309,
      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,   320,   321,   322
+     320,   321,   322,   322,   323,   324
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1133,9 +1137,9 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
-       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     0,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
+       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1143,16 +1147,16 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     3,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     3,     3,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     1,     2,     0,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
-       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
-       2,     0,     1,     2
+       2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     3,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
+       2,     2,     2,     2,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     1,     2,     0,     1,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -1160,8 +1164,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    10,   126,   134,   263,   309,   282,     3,
-      12,   128,   136,   265,   284,   311,     4,     5,     6,     8,
+       2,     0,     1,    10,   127,   135,   265,   311,   284,     3,
+      12,   129,   137,   267,   286,   313,     4,     5,     6,     8,
        9,     7,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1173,62 +1177,62 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    11,    13,    14,    70,    73,
-      82,    15,    21,    61,    16,    74,    75,    32,    54,    69,
-      17,    18,    19,    20,   104,   105,   106,   107,   108,    71,
-      60,    86,   103,    22,    23,    24,    25,    26,    62,    76,
-      77,    92,    48,    58,    49,    87,    42,    43,    44,    45,
-      96,   100,   112,   119,    97,    55,    27,    28,    29,    84,
-     113,   114,    30,    31,    33,    34,    36,    37,    35,   117,
-      38,    39,    40,    46,    65,   101,    79,   118,    72,    80,
-      81,    98,    99,    85,    41,    63,    66,    47,    50,    88,
-      89,    64,    90,    51,    52,    53,   102,    91,    59,    93,
-      94,    95,    56,    57,    78,    67,    68,    83,   109,   110,
-     111,   115,   116,   120,   122,   121,   123,   124,   125,     0,
-       0,     0,     0,     0,   127,   129,   130,   131,   133,   132,
-       0,     0,     0,     0,   135,   137,   138,   139,   140,     0,
-       0,     0,     0,     0,     0,     0,     0,   264,   266,   268,
-     267,   273,   269,   270,   271,   272,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   283,   285,
-     286,   287,   288,   289,   290,   291,   292,   293,   294,   295,
-     296,     0,   310,   312,   142,   141,   146,   149,   147,   155,
-     156,   157,   158,   168,   169,   170,   171,   172,   191,   192,
-     193,   197,   198,   152,   199,   200,   203,   201,   202,   205,
-     206,   207,   219,   181,   182,   183,   184,   208,   222,   177,
-     179,   223,   228,   229,   230,   153,   190,   237,   238,   178,
-     233,   165,   148,   173,   220,   226,   209,     0,     0,   241,
-     154,   143,   164,   213,   144,   150,   151,   174,   175,   239,
-     211,   214,   215,   145,   242,   194,   218,   166,   180,   224,
-     225,   227,   232,   176,   236,   234,   235,   185,   189,   216,
-     217,   186,   187,   210,   231,   167,   159,   160,   161,   162,
-     163,   243,   244,   245,   195,   196,   204,   246,   247,   212,
-     188,   248,   250,   249,     0,     0,   253,   254,   255,   256,
-     258,   257,   259,   260,   261,   262,   274,   276,   275,   278,
-     279,   280,   281,   277,   297,   298,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   313,   221,   240,   251,
-     252
+       0,     0,     0,     0,     0,     0,    11,    13,    14,    70,
+      73,    82,    15,    21,    61,    16,    74,    75,    32,    54,
+      69,    17,    18,    19,    20,   104,   105,   106,   107,   108,
+      71,    60,    86,   103,    22,    23,    24,    25,    26,    62,
+      76,    77,    92,    48,    58,    49,    87,    42,    43,    44,
+      45,    96,   100,   112,   119,    97,    55,    27,    28,    29,
+      84,   113,   114,    30,    31,    33,    34,    36,    37,    35,
+     117,    38,    39,    40,    46,    65,   101,    79,   118,    72,
+     126,    80,    81,    98,    99,    85,    41,    63,    66,    47,
+      50,    88,    89,    64,    90,    51,    52,    53,   102,    91,
+      59,    93,    94,    95,    56,    57,    78,    67,    68,    83,
+     109,   110,   111,   115,   116,   120,   122,   121,   123,   124,
+     125,     0,     0,     0,     0,     0,   128,   130,   131,   132,
+     134,   133,     0,     0,     0,     0,   136,   138,   139,   140,
+     141,     0,     0,     0,     0,     0,     0,     0,     0,   266,
+     268,   270,   269,   275,   271,   272,   273,   274,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     285,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,     0,   312,   314,   143,   142,   147,   150,
+     148,   156,   157,   158,   159,   169,   170,   171,   172,   173,
+     192,   193,   194,   198,   199,   153,   200,   201,   204,   202,
+     203,   206,   207,   208,   221,   182,   183,   184,   185,   209,
+     224,   178,   180,   225,   230,   231,   232,   154,   191,   239,
+     240,   179,   235,   166,   149,   174,   222,   228,   210,     0,
+       0,   243,   155,   144,   165,   214,   145,   151,   152,   175,
+     176,   241,   212,   216,   217,   146,   244,   195,   220,   167,
+     181,   226,   227,   229,   234,   177,   238,   236,   237,   186,
+     190,   218,   219,   187,   188,   211,   233,   168,   160,   161,
+     162,   163,   164,   245,   246,   247,   196,   197,   205,   248,
+     249,   213,   189,   250,   252,   251,     0,     0,   255,   215,
+     256,   257,   258,   260,   259,   261,   262,   263,   264,   276,
+     278,   277,   280,   281,   282,   283,   279,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   315,
+     223,   242,   253,   254
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     9,    10,    16,   135,    11,    17,   254,    12,
-      18,   264,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   255,   256,   257,   258,   259,
-     265,   266,   267,   268,    13,    19,   277,   278,   279,   280,
-     281,   282,   283,   284,   285,    14,    20,   298,   299,   300,
-     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
-      15,    21,   312,   313
+      -1,     1,     9,    10,    16,   136,    11,    17,   256,    12,
+      18,   266,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
+     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
+     245,   246,   247,   248,   249,   250,   257,   258,   259,   260,
+     261,   267,   268,   269,   270,    13,    19,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,    14,    20,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,    15,    21,   314,   315
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1239,17 +1243,17 @@ static const yytype_int16 yypact[] =
      -81,   116,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -12,    89,    47,   -13,
       22,   -80,    16,    17,    18,    23,    24,    78,   107,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   137,   138,
-     139,   140,   141,   142,   143,   145,   146,   147,   148,   149,
-     163,   164,   166,   167,   168,   169,   170,   171,   172,   173,
-     174,   175,   176,   177,   178,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   195,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     206,   207,   209,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   -81,   -81,   -81,   -81,   -81,
+     121,   122,   123,   124,   125,   126,   127,   128,   138,   139,
+     140,   141,   142,   143,   145,   146,   147,   148,   149,   163,
+     164,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   180,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   209,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   245,   246,   247,   248,   249,
+     250,   251,   252,   253,   254,   255,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
@@ -1260,29 +1264,29 @@ static const yytype_int16 yypact[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   254,
-     255,   256,   257,   258,   -81,   -81,   -81,   -81,   -81,   -81,
-     259,   260,   261,   262,   -81,   -81,   -81,   -81,   -81,   263,
-     264,   265,   266,   267,   268,   269,   270,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   283,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   256,   257,   258,   259,   260,   -81,   -81,   -81,   -81,
+     -81,   -81,   261,   262,   263,   264,   -81,   -81,   -81,   -81,
+     -81,   265,   266,   267,   268,   269,   270,   271,   272,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   285,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   -81,   -81,   -81,   284,   285,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   286,
+     287,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81,   286,   287,   -81,   -81,   -81,   -81,
+     -81,   -81,   -81,   -81,   -81,   -81,   288,   289,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81
+     -81,   -81,   -81,   -81
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1304,7 +1308,7 @@ static const yytype_int8 yypgoto[] =
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
      -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,   -81,
-     -81,   -81,   -81,   -81
+     -81,   -81,   -81,   -81,   -81
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1315,34 +1319,34 @@ static const yytype_uint16 yytable[] =
 {
       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,   311,   314,   315,   316,    47,
-      48,    49,     0,   317,   318,    50,    51,    52,    53,    54,
+      42,    43,    44,    45,    46,   313,   316,   317,   318,    47,
+      48,    49,     0,   319,   320,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,   269,   270,   271,   272,
-     273,   274,   275,   276,   260,    91,    92,    93,   319,    94,
-      95,    96,   261,   262,    97,    98,    99,   100,   101,   102,
+      85,    86,    87,    88,    89,    90,   271,   272,   273,   274,
+     275,   276,   277,   278,   262,    91,    92,    93,   321,    94,
+      95,    96,   263,   264,    97,    98,    99,   100,   101,   102,
      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,     2,   320,   119,   120,
-     121,   122,   123,   124,   125,   126,   249,     3,   250,   251,
-     321,   322,   323,   324,   325,   326,   327,   328,   329,   127,
-     128,   129,   130,   131,   132,   133,   134,   330,   331,   332,
-     333,   334,   335,   336,     4,   337,   338,   339,   340,   341,
-       5,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   342,   343,   263,   344,   345,   346,   347,
-     348,   349,   350,   351,   352,   353,   354,   355,   356,   252,
-     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
-     367,   368,   369,   370,     6,   371,   372,   373,   374,   375,
-     376,   377,   378,   379,   380,   381,   382,   383,   253,   384,
-       7,   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,     8,   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
+     113,   114,   115,   116,   117,   118,     2,   322,   119,   120,
+     121,   122,   123,   124,   125,   126,   251,     3,   252,   253,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   332,   333,
+     334,   335,   336,   337,     4,   338,   339,   340,   341,   342,
+       5,   288,   289,   290,   291,   292,   293,   294,   295,   296,
+     297,   298,   299,   343,   344,   265,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   254,
+     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
+     368,   369,   370,   371,     6,   372,   373,   374,   375,   376,
+     377,   378,   379,   380,   381,   382,   383,   384,   255,   385,
+       7,   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,     8,   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
 };
 
 #define yypact_value_is_default(Yystate) \
@@ -1367,7 +1371,7 @@ static const yytype_int16 yycheck[] =
      122,   123,   124,   125,   126,   127,     0,    10,   130,   131,
      132,   133,   134,   135,   136,   137,    37,    11,    39,    40,
       10,    10,    10,    10,    10,    10,    10,    10,    10,   151,
-     152,   153,   154,   155,   156,   157,   158,    10,    10,    10,
+     152,   153,   154,   155,   156,   157,   158,   159,    10,    10,
       10,    10,    10,    10,    38,    10,    10,    10,    10,    10,
       44,   139,   140,   141,   142,   143,   144,   145,   146,   147,
      148,   149,   150,    10,    10,   128,    10,    10,    10,    10,
@@ -1382,16 +1386,16 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   160,     0,    11,    38,    44,    88,   104,   138,   161,
-     162,   165,   168,   293,   304,   319,   163,   166,   169,   294,
-     305,   320,    12,    13,    14,    15,    16,    17,    18,    19,
+       0,   161,     0,    11,    38,    44,    88,   104,   138,   162,
+     163,   166,   169,   295,   306,   321,   164,   167,   170,   296,
+     307,   322,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    41,    42,    43,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
@@ -1402,7 +1406,7 @@ static const yytype_uint16 yystos[] =
      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
      119,   120,   121,   122,   123,   124,   125,   126,   127,   130,
      131,   132,   133,   134,   135,   136,   137,   151,   152,   153,
-     154,   155,   156,   157,   158,   164,   171,   172,   173,   174,
+     154,   155,   156,   157,   158,   159,   165,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
@@ -1413,14 +1417,14 @@ static const yytype_uint16 yystos[] =
      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,    37,
-      39,    40,   100,   129,   167,   284,   285,   286,   287,   288,
-      37,    45,    46,   128,   170,   289,   290,   291,   292,    89,
-      90,    91,    92,    93,    94,    95,    96,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   150,   306,   307,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,    37,    39,    40,   100,   129,   168,   286,   287,   288,
+     289,   290,    37,    45,    46,   128,   171,   291,   292,   293,
+     294,    89,    90,    91,    92,    93,    94,    95,    96,   297,
+     298,   299,   300,   301,   302,   303,   304,   305,   139,   140,
+     141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
      308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     318,   105,   321,   322,    10,    10,    10,    10,    10,    10,
+     318,   319,   320,   105,   323,   324,    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,
@@ -1435,7 +1439,7 @@ static const yytype_uint16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10
+      10,    10,    10,    10
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -2237,15 +2241,15 @@ yyreduce:
     {
         case 10:
 /* Line 1792 of yacc.c  */
-#line 134 "./util/configparser.y"
+#line 135 "./util/configparser.y"
     { 
                OUTYY(("\nP(server:)\n")); 
        }
     break;
 
-  case 126:
+  case 127:
 /* Line 1792 of yacc.c  */
-#line 189 "./util/configparser.y"
+#line 191 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2258,9 +2262,9 @@ yyreduce:
        }
     break;
 
-  case 134:
+  case 135:
 /* Line 1792 of yacc.c  */
-#line 205 "./util/configparser.y"
+#line 207 "./util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2273,9 +2277,9 @@ yyreduce:
        }
     break;
 
-  case 141:
+  case 142:
 /* Line 1792 of yacc.c  */
-#line 221 "./util/configparser.y"
+#line 223 "./util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2285,9 +2289,9 @@ yyreduce:
        }
     break;
 
-  case 142:
+  case 143:
 /* Line 1792 of yacc.c  */
-#line 230 "./util/configparser.y"
+#line 232 "./util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2297,9 +2301,9 @@ yyreduce:
        }
     break;
 
-  case 143:
+  case 144:
 /* Line 1792 of yacc.c  */
-#line 239 "./util/configparser.y"
+#line 241 "./util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
@@ -2311,9 +2315,9 @@ yyreduce:
        }
     break;
 
-  case 144:
+  case 145:
 /* Line 1792 of yacc.c  */
-#line 250 "./util/configparser.y"
+#line 252 "./util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2323,9 +2327,9 @@ yyreduce:
        }
     break;
 
-  case 145:
+  case 146:
 /* Line 1792 of yacc.c  */
-#line 259 "./util/configparser.y"
+#line 261 "./util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2335,9 +2339,9 @@ yyreduce:
        }
     break;
 
-  case 146:
+  case 147:
 /* Line 1792 of yacc.c  */
-#line 268 "./util/configparser.y"
+#line 270 "./util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2347,9 +2351,9 @@ yyreduce:
        }
     break;
 
-  case 147:
+  case 148:
 /* Line 1792 of yacc.c  */
-#line 277 "./util/configparser.y"
+#line 279 "./util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2363,9 +2367,9 @@ yyreduce:
        }
     break;
 
-  case 148:
+  case 149:
 /* Line 1792 of yacc.c  */
-#line 290 "./util/configparser.y"
+#line 292 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2381,9 +2385,9 @@ yyreduce:
        }
     break;
 
-  case 149:
+  case 150:
 /* Line 1792 of yacc.c  */
-#line 305 "./util/configparser.y"
+#line 307 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2393,9 +2397,9 @@ yyreduce:
        }
     break;
 
-  case 150:
+  case 151:
 /* Line 1792 of yacc.c  */
-#line 314 "./util/configparser.y"
+#line 316 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2405,9 +2409,9 @@ yyreduce:
        }
     break;
 
-  case 151:
+  case 152:
 /* Line 1792 of yacc.c  */
-#line 323 "./util/configparser.y"
+#line 325 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2417,9 +2421,9 @@ yyreduce:
        }
     break;
 
-  case 152:
+  case 153:
 /* Line 1792 of yacc.c  */
-#line 332 "./util/configparser.y"
+#line 334 "./util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2429,9 +2433,9 @@ yyreduce:
        }
     break;
 
-  case 153:
+  case 154:
 /* Line 1792 of yacc.c  */
-#line 341 "./util/configparser.y"
+#line 343 "./util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2441,9 +2445,9 @@ yyreduce:
        }
     break;
 
-  case 154:
+  case 155:
 /* Line 1792 of yacc.c  */
-#line 350 "./util/configparser.y"
+#line 352 "./util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2453,9 +2457,9 @@ yyreduce:
        }
     break;
 
-  case 155:
+  case 156:
 /* Line 1792 of yacc.c  */
-#line 359 "./util/configparser.y"
+#line 361 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2465,9 +2469,9 @@ yyreduce:
        }
     break;
 
-  case 156:
+  case 157:
 /* Line 1792 of yacc.c  */
-#line 368 "./util/configparser.y"
+#line 370 "./util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2477,9 +2481,9 @@ yyreduce:
        }
     break;
 
-  case 157:
+  case 158:
 /* Line 1792 of yacc.c  */
-#line 377 "./util/configparser.y"
+#line 379 "./util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2489,9 +2493,9 @@ yyreduce:
        }
     break;
 
-  case 158:
+  case 159:
 /* Line 1792 of yacc.c  */
-#line 386 "./util/configparser.y"
+#line 388 "./util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2501,9 +2505,9 @@ yyreduce:
        }
     break;
 
-  case 159:
+  case 160:
 /* Line 1792 of yacc.c  */
-#line 395 "./util/configparser.y"
+#line 397 "./util/configparser.y"
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2513,9 +2517,9 @@ yyreduce:
        }
     break;
 
-  case 160:
+  case 161:
 /* Line 1792 of yacc.c  */
-#line 404 "./util/configparser.y"
+#line 406 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2525,9 +2529,9 @@ yyreduce:
        }
     break;
 
-  case 161:
+  case 162:
 /* Line 1792 of yacc.c  */
-#line 413 "./util/configparser.y"
+#line 415 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_key);
@@ -2535,9 +2539,9 @@ yyreduce:
        }
     break;
 
-  case 162:
+  case 163:
 /* Line 1792 of yacc.c  */
-#line 420 "./util/configparser.y"
+#line 422 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->ssl_service_pem);
@@ -2545,9 +2549,9 @@ yyreduce:
        }
     break;
 
-  case 163:
+  case 164:
 /* Line 1792 of yacc.c  */
-#line 427 "./util/configparser.y"
+#line 429 "./util/configparser.y"
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2557,9 +2561,9 @@ yyreduce:
        }
     break;
 
-  case 164:
+  case 165:
 /* Line 1792 of yacc.c  */
-#line 436 "./util/configparser.y"
+#line 438 "./util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2569,9 +2573,9 @@ yyreduce:
        }
     break;
 
-  case 165:
+  case 166:
 /* Line 1792 of yacc.c  */
-#line 445 "./util/configparser.y"
+#line 447 "./util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2586,9 +2590,9 @@ yyreduce:
        }
     break;
 
-  case 166:
+  case 167:
 /* Line 1792 of yacc.c  */
-#line 459 "./util/configparser.y"
+#line 461 "./util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2598,9 +2602,9 @@ yyreduce:
        }
     break;
 
-  case 167:
+  case 168:
 /* Line 1792 of yacc.c  */
-#line 468 "./util/configparser.y"
+#line 470 "./util/configparser.y"
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2610,9 +2614,9 @@ yyreduce:
        }
     break;
 
-  case 168:
+  case 169:
 /* Line 1792 of yacc.c  */
-#line 477 "./util/configparser.y"
+#line 479 "./util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2620,9 +2624,9 @@ yyreduce:
        }
     break;
 
-  case 169:
+  case 170:
 /* Line 1792 of yacc.c  */
-#line 484 "./util/configparser.y"
+#line 486 "./util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2630,9 +2634,9 @@ yyreduce:
        }
     break;
 
-  case 170:
+  case 171:
 /* Line 1792 of yacc.c  */
-#line 491 "./util/configparser.y"
+#line 493 "./util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2640,9 +2644,9 @@ yyreduce:
        }
     break;
 
-  case 171:
+  case 172:
 /* Line 1792 of yacc.c  */
-#line 498 "./util/configparser.y"
+#line 500 "./util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2651,9 +2655,9 @@ yyreduce:
        }
     break;
 
-  case 172:
+  case 173:
 /* Line 1792 of yacc.c  */
-#line 506 "./util/configparser.y"
+#line 508 "./util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2661,9 +2665,9 @@ yyreduce:
        }
     break;
 
-  case 173:
+  case 174:
 /* Line 1792 of yacc.c  */
-#line 513 "./util/configparser.y"
+#line 515 "./util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2671,9 +2675,9 @@ yyreduce:
        }
     break;
 
-  case 174:
+  case 175:
 /* Line 1792 of yacc.c  */
-#line 520 "./util/configparser.y"
+#line 522 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2681,9 +2685,9 @@ yyreduce:
        }
     break;
 
-  case 175:
+  case 176:
 /* Line 1792 of yacc.c  */
-#line 527 "./util/configparser.y"
+#line 529 "./util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2691,9 +2695,9 @@ yyreduce:
        }
     break;
 
-  case 176:
+  case 177:
 /* Line 1792 of yacc.c  */
-#line 534 "./util/configparser.y"
+#line 536 "./util/configparser.y"
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2702,9 +2706,9 @@ yyreduce:
        }
     break;
 
-  case 177:
+  case 178:
 /* Line 1792 of yacc.c  */
-#line 542 "./util/configparser.y"
+#line 544 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2713,9 +2717,9 @@ yyreduce:
        }
     break;
 
-  case 178:
+  case 179:
 /* Line 1792 of yacc.c  */
-#line 550 "./util/configparser.y"
+#line 552 "./util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2724,9 +2728,9 @@ yyreduce:
        }
     break;
 
-  case 179:
+  case 180:
 /* Line 1792 of yacc.c  */
-#line 558 "./util/configparser.y"
+#line 560 "./util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2734,9 +2738,9 @@ yyreduce:
        }
     break;
 
-  case 180:
+  case 181:
 /* Line 1792 of yacc.c  */
-#line 565 "./util/configparser.y"
+#line 567 "./util/configparser.y"
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
@@ -2744,9 +2748,9 @@ yyreduce:
        }
     break;
 
-  case 181:
+  case 182:
 /* Line 1792 of yacc.c  */
-#line 572 "./util/configparser.y"
+#line 574 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2756,9 +2760,9 @@ yyreduce:
        }
     break;
 
-  case 182:
+  case 183:
 /* Line 1792 of yacc.c  */
-#line 581 "./util/configparser.y"
+#line 583 "./util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2768,9 +2772,9 @@ yyreduce:
        }
     break;
 
-  case 183:
+  case 184:
 /* Line 1792 of yacc.c  */
-#line 590 "./util/configparser.y"
+#line 592 "./util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2778,9 +2782,9 @@ yyreduce:
        }
     break;
 
-  case 184:
+  case 185:
 /* Line 1792 of yacc.c  */
-#line 597 "./util/configparser.y"
+#line 599 "./util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2788,9 +2792,9 @@ yyreduce:
        }
     break;
 
-  case 185:
+  case 186:
 /* Line 1792 of yacc.c  */
-#line 604 "./util/configparser.y"
+#line 606 "./util/configparser.y"
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf))
@@ -2799,9 +2803,9 @@ yyreduce:
        }
     break;
 
-  case 186:
+  case 187:
 /* Line 1792 of yacc.c  */
-#line 612 "./util/configparser.y"
+#line 614 "./util/configparser.y"
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf))
@@ -2810,9 +2814,9 @@ yyreduce:
        }
     break;
 
-  case 187:
+  case 188:
 /* Line 1792 of yacc.c  */
-#line 620 "./util/configparser.y"
+#line 622 "./util/configparser.y"
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str)));
         if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2823,9 +2827,9 @@ yyreduce:
     }
     break;
 
-  case 188:
+  case 189:
 /* Line 1792 of yacc.c  */
-#line 630 "./util/configparser.y"
+#line 632 "./util/configparser.y"
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str)));
         if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2836,9 +2840,9 @@ yyreduce:
     }
     break;
 
-  case 189:
+  case 190:
 /* Line 1792 of yacc.c  */
-#line 640 "./util/configparser.y"
+#line 642 "./util/configparser.y"
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2852,9 +2856,9 @@ yyreduce:
        }
     break;
 
-  case 190:
+  case 191:
 /* Line 1792 of yacc.c  */
-#line 653 "./util/configparser.y"
+#line 655 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2866,9 +2870,9 @@ yyreduce:
        }
     break;
 
-  case 191:
+  case 192:
 /* Line 1792 of yacc.c  */
-#line 664 "./util/configparser.y"
+#line 666 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2877,9 +2881,9 @@ yyreduce:
        }
     break;
 
-  case 192:
+  case 193:
 /* Line 1792 of yacc.c  */
-#line 672 "./util/configparser.y"
+#line 674 "./util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2893,9 +2897,9 @@ yyreduce:
        }
     break;
 
-  case 193:
+  case 194:
 /* Line 1792 of yacc.c  */
-#line 685 "./util/configparser.y"
+#line 687 "./util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2905,9 +2909,9 @@ yyreduce:
        }
     break;
 
-  case 194:
+  case 195:
 /* Line 1792 of yacc.c  */
-#line 694 "./util/configparser.y"
+#line 696 "./util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2917,9 +2921,9 @@ yyreduce:
        }
     break;
 
-  case 195:
+  case 196:
 /* Line 1792 of yacc.c  */
-#line 703 "./util/configparser.y"
+#line 705 "./util/configparser.y"
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2929,9 +2933,9 @@ yyreduce:
        }
     break;
 
-  case 196:
+  case 197:
 /* Line 1792 of yacc.c  */
-#line 712 "./util/configparser.y"
+#line 714 "./util/configparser.y"
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2942,9 +2946,9 @@ yyreduce:
        }
     break;
 
-  case 197:
+  case 198:
 /* Line 1792 of yacc.c  */
-#line 722 "./util/configparser.y"
+#line 724 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2953,9 +2957,9 @@ yyreduce:
        }
     break;
 
-  case 198:
+  case 199:
 /* Line 1792 of yacc.c  */
-#line 730 "./util/configparser.y"
+#line 732 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2969,9 +2973,9 @@ yyreduce:
        }
     break;
 
-  case 199:
+  case 200:
 /* Line 1792 of yacc.c  */
-#line 743 "./util/configparser.y"
+#line 745 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2981,9 +2985,9 @@ yyreduce:
        }
     break;
 
-  case 200:
+  case 201:
 /* Line 1792 of yacc.c  */
-#line 752 "./util/configparser.y"
+#line 754 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
@@ -2992,9 +2996,9 @@ yyreduce:
        }
     break;
 
-  case 201:
+  case 202:
 /* Line 1792 of yacc.c  */
-#line 760 "./util/configparser.y"
+#line 762 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3004,9 +3008,9 @@ yyreduce:
        }
     break;
 
-  case 202:
+  case 203:
 /* Line 1792 of yacc.c  */
-#line 769 "./util/configparser.y"
+#line 771 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
@@ -3015,9 +3019,9 @@ yyreduce:
        }
     break;
 
-  case 203:
+  case 204:
 /* Line 1792 of yacc.c  */
-#line 777 "./util/configparser.y"
+#line 779 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3031,9 +3035,9 @@ yyreduce:
        }
     break;
 
-  case 204:
+  case 205:
 /* Line 1792 of yacc.c  */
-#line 790 "./util/configparser.y"
+#line 792 "./util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3043,9 +3047,9 @@ yyreduce:
        }
     break;
 
-  case 205:
+  case 206:
 /* Line 1792 of yacc.c  */
-#line 799 "./util/configparser.y"
+#line 801 "./util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -3053,9 +3057,9 @@ yyreduce:
        }
     break;
 
-  case 206:
+  case 207:
 /* Line 1792 of yacc.c  */
-#line 806 "./util/configparser.y"
+#line 808 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3066,9 +3070,9 @@ yyreduce:
        }
     break;
 
-  case 207:
+  case 208:
 /* Line 1792 of yacc.c  */
-#line 816 "./util/configparser.y"
+#line 818 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3079,9 +3083,9 @@ yyreduce:
        }
     break;
 
-  case 208:
+  case 209:
 /* Line 1792 of yacc.c  */
-#line 826 "./util/configparser.y"
+#line 828 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3092,9 +3096,9 @@ yyreduce:
        }
     break;
 
-  case 209:
+  case 210:
 /* Line 1792 of yacc.c  */
-#line 836 "./util/configparser.y"
+#line 838 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3105,9 +3109,9 @@ yyreduce:
        }
     break;
 
-  case 210:
+  case 211:
 /* Line 1792 of yacc.c  */
-#line 846 "./util/configparser.y"
+#line 848 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3118,9 +3122,9 @@ yyreduce:
        }
     break;
 
-  case 211:
+  case 212:
 /* Line 1792 of yacc.c  */
-#line 856 "./util/configparser.y"
+#line 858 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3131,9 +3135,9 @@ yyreduce:
        }
     break;
 
-  case 212:
+  case 213:
 /* Line 1792 of yacc.c  */
-#line 866 "./util/configparser.y"
+#line 868 "./util/configparser.y"
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3144,9 +3148,9 @@ yyreduce:
        }
     break;
 
-  case 213:
+  case 214:
 /* Line 1792 of yacc.c  */
-#line 876 "./util/configparser.y"
+#line 878 "./util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3157,9 +3161,19 @@ yyreduce:
        }
     break;
 
-  case 214:
+  case 215:
 /* Line 1792 of yacc.c  */
-#line 886 "./util/configparser.y"
+#line 888 "./util/configparser.y"
+    {
+               OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str)))
+                       yyerror("out of memory");
+       }
+    break;
+
+  case 216:
+/* Line 1792 of yacc.c  */
+#line 895 "./util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -3167,9 +3181,9 @@ yyreduce:
        }
     break;
 
-  case 215:
+  case 217:
 /* Line 1792 of yacc.c  */
-#line 893 "./util/configparser.y"
+#line 902 "./util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -3177,9 +3191,9 @@ yyreduce:
        }
     break;
 
-  case 216:
+  case 218:
 /* Line 1792 of yacc.c  */
-#line 900 "./util/configparser.y"
+#line 909 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3189,9 +3203,9 @@ yyreduce:
        }
     break;
 
-  case 217:
+  case 219:
 /* Line 1792 of yacc.c  */
-#line 909 "./util/configparser.y"
+#line 918 "./util/configparser.y"
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3201,9 +3215,9 @@ yyreduce:
        }
     break;
 
-  case 218:
+  case 220:
 /* Line 1792 of yacc.c  */
-#line 918 "./util/configparser.y"
+#line 927 "./util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3213,9 +3227,9 @@ yyreduce:
        }
     break;
 
-  case 219:
+  case 221:
 /* Line 1792 of yacc.c  */
-#line 927 "./util/configparser.y"
+#line 936 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -3223,9 +3237,9 @@ yyreduce:
        }
     break;
 
-  case 220:
+  case 222:
 /* Line 1792 of yacc.c  */
-#line 934 "./util/configparser.y"
+#line 943 "./util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3236,9 +3250,9 @@ yyreduce:
        }
     break;
 
-  case 221:
+  case 223:
 /* Line 1792 of yacc.c  */
-#line 944 "./util/configparser.y"
+#line 953 "./util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -3256,9 +3270,9 @@ yyreduce:
        }
     break;
 
-  case 222:
+  case 224:
 /* Line 1792 of yacc.c  */
-#line 961 "./util/configparser.y"
+#line 970 "./util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -3266,9 +3280,9 @@ yyreduce:
        }
     break;
 
-  case 223:
+  case 225:
 /* Line 1792 of yacc.c  */
-#line 968 "./util/configparser.y"
+#line 977 "./util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3287,9 +3301,9 @@ yyreduce:
        }
     break;
 
-  case 224:
+  case 226:
 /* Line 1792 of yacc.c  */
-#line 986 "./util/configparser.y"
+#line 995 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3303,9 +3317,9 @@ yyreduce:
        }
     break;
 
-  case 225:
+  case 227:
 /* Line 1792 of yacc.c  */
-#line 999 "./util/configparser.y"
+#line 1008 "./util/configparser.y"
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -3319,9 +3333,9 @@ yyreduce:
        }
     break;
 
-  case 226:
+  case 228:
 /* Line 1792 of yacc.c  */
-#line 1012 "./util/configparser.y"
+#line 1021 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3331,9 +3345,9 @@ yyreduce:
        }
     break;
 
-  case 227:
+  case 229:
 /* Line 1792 of yacc.c  */
-#line 1021 "./util/configparser.y"
+#line 1030 "./util/configparser.y"
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3343,9 +3357,9 @@ yyreduce:
        }
     break;
 
-  case 228:
+  case 230:
 /* Line 1792 of yacc.c  */
-#line 1030 "./util/configparser.y"
+#line 1039 "./util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3355,9 +3369,9 @@ yyreduce:
        }
     break;
 
-  case 229:
+  case 231:
 /* Line 1792 of yacc.c  */
-#line 1039 "./util/configparser.y"
+#line 1048 "./util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3368,9 +3382,9 @@ yyreduce:
        }
     break;
 
-  case 230:
+  case 232:
 /* Line 1792 of yacc.c  */
-#line 1049 "./util/configparser.y"
+#line 1058 "./util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3381,9 +3395,9 @@ yyreduce:
        }
     break;
 
-  case 231:
+  case 233:
 /* Line 1792 of yacc.c  */
-#line 1059 "./util/configparser.y"
+#line 1068 "./util/configparser.y"
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3393,9 +3407,9 @@ yyreduce:
        }
     break;
 
-  case 232:
+  case 234:
 /* Line 1792 of yacc.c  */
-#line 1068 "./util/configparser.y"
+#line 1077 "./util/configparser.y"
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3405,9 +3419,9 @@ yyreduce:
        }
     break;
 
-  case 233:
+  case 235:
 /* Line 1792 of yacc.c  */
-#line 1077 "./util/configparser.y"
+#line 1086 "./util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -3415,9 +3429,9 @@ yyreduce:
        }
     break;
 
-  case 234:
+  case 236:
 /* Line 1792 of yacc.c  */
-#line 1084 "./util/configparser.y"
+#line 1093 "./util/configparser.y"
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3427,9 +3441,9 @@ yyreduce:
        }
     break;
 
-  case 235:
+  case 237:
 /* Line 1792 of yacc.c  */
-#line 1093 "./util/configparser.y"
+#line 1102 "./util/configparser.y"
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3439,9 +3453,9 @@ yyreduce:
        }
     break;
 
-  case 236:
+  case 238:
 /* Line 1792 of yacc.c  */
-#line 1102 "./util/configparser.y"
+#line 1111 "./util/configparser.y"
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3451,9 +3465,9 @@ yyreduce:
        }
     break;
 
-  case 237:
+  case 239:
 /* Line 1792 of yacc.c  */
-#line 1111 "./util/configparser.y"
+#line 1120 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -3462,9 +3476,9 @@ yyreduce:
        }
     break;
 
-  case 238:
+  case 240:
 /* Line 1792 of yacc.c  */
-#line 1119 "./util/configparser.y"
+#line 1128 "./util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3478,9 +3492,9 @@ yyreduce:
        }
     break;
 
-  case 239:
+  case 241:
 /* Line 1792 of yacc.c  */
-#line 1132 "./util/configparser.y"
+#line 1141 "./util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -3489,9 +3503,9 @@ yyreduce:
        }
     break;
 
-  case 240:
+  case 242:
 /* Line 1792 of yacc.c  */
-#line 1140 "./util/configparser.y"
+#line 1149 "./util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -3516,9 +3530,9 @@ yyreduce:
        }
     break;
 
-  case 241:
+  case 243:
 /* Line 1792 of yacc.c  */
-#line 1164 "./util/configparser.y"
+#line 1173 "./util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -3526,9 +3540,9 @@ yyreduce:
        }
     break;
 
-  case 242:
+  case 244:
 /* Line 1792 of yacc.c  */
-#line 1171 "./util/configparser.y"
+#line 1180 "./util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -3544,9 +3558,9 @@ yyreduce:
        }
     break;
 
-  case 243:
+  case 245:
 /* Line 1792 of yacc.c  */
-#line 1186 "./util/configparser.y"
+#line 1195 "./util/configparser.y"
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3557,9 +3571,9 @@ yyreduce:
        }
     break;
 
-  case 244:
+  case 246:
 /* Line 1792 of yacc.c  */
-#line 1196 "./util/configparser.y"
+#line 1205 "./util/configparser.y"
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3570,9 +3584,9 @@ yyreduce:
        }
     break;
 
-  case 245:
+  case 247:
 /* Line 1792 of yacc.c  */
-#line 1206 "./util/configparser.y"
+#line 1215 "./util/configparser.y"
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str));
@@ -3580,9 +3594,9 @@ yyreduce:
        }
     break;
 
-  case 246:
+  case 248:
 /* Line 1792 of yacc.c  */
-#line 1213 "./util/configparser.y"
+#line 1222 "./util/configparser.y"
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dns64_prefix);
@@ -3590,9 +3604,9 @@ yyreduce:
        }
     break;
 
-  case 247:
+  case 249:
 /* Line 1792 of yacc.c  */
-#line 1220 "./util/configparser.y"
+#line 1229 "./util/configparser.y"
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3602,9 +3616,9 @@ yyreduce:
        }
     break;
 
-  case 248:
+  case 250:
 /* Line 1792 of yacc.c  */
-#line 1229 "./util/configparser.y"
+#line 1238 "./util/configparser.y"
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3614,9 +3628,9 @@ yyreduce:
        }
     break;
 
-  case 249:
+  case 251:
 /* Line 1792 of yacc.c  */
-#line 1238 "./util/configparser.y"
+#line 1247 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size))
@@ -3625,9 +3639,9 @@ yyreduce:
        }
     break;
 
-  case 250:
+  case 252:
 /* Line 1792 of yacc.c  */
-#line 1246 "./util/configparser.y"
+#line 1255 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3641,9 +3655,9 @@ yyreduce:
        }
     break;
 
-  case 251:
+  case 253:
 /* Line 1792 of yacc.c  */
-#line 1259 "./util/configparser.y"
+#line 1268 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) {
@@ -3657,9 +3671,9 @@ yyreduce:
        }
     break;
 
-  case 252:
+  case 254:
 /* Line 1792 of yacc.c  */
-#line 1272 "./util/configparser.y"
+#line 1281 "./util/configparser.y"
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) {
@@ -3673,9 +3687,9 @@ yyreduce:
        }
     break;
 
-  case 253:
+  case 255:
 /* Line 1792 of yacc.c  */
-#line 1285 "./util/configparser.y"
+#line 1294 "./util/configparser.y"
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -3685,9 +3699,9 @@ yyreduce:
        }
     break;
 
-  case 254:
+  case 256:
 /* Line 1792 of yacc.c  */
-#line 1294 "./util/configparser.y"
+#line 1303 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3698,9 +3712,9 @@ yyreduce:
        }
     break;
 
-  case 255:
+  case 257:
 /* Line 1792 of yacc.c  */
-#line 1304 "./util/configparser.y"
+#line 1313 "./util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -3708,9 +3722,9 @@ yyreduce:
        }
     break;
 
-  case 256:
+  case 258:
 /* Line 1792 of yacc.c  */
-#line 1311 "./util/configparser.y"
+#line 1320 "./util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -3718,9 +3732,9 @@ yyreduce:
        }
     break;
 
-  case 257:
+  case 259:
 /* Line 1792 of yacc.c  */
-#line 1318 "./util/configparser.y"
+#line 1327 "./util/configparser.y"
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3730,9 +3744,9 @@ yyreduce:
        }
     break;
 
-  case 258:
+  case 260:
 /* Line 1792 of yacc.c  */
-#line 1327 "./util/configparser.y"
+#line 1336 "./util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3743,9 +3757,9 @@ yyreduce:
        }
     break;
 
-  case 259:
+  case 261:
 /* Line 1792 of yacc.c  */
-#line 1337 "./util/configparser.y"
+#line 1346 "./util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3756,9 +3770,9 @@ yyreduce:
        }
     break;
 
-  case 260:
+  case 262:
 /* Line 1792 of yacc.c  */
-#line 1347 "./util/configparser.y"
+#line 1356 "./util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -3766,9 +3780,9 @@ yyreduce:
        }
     break;
 
-  case 261:
+  case 263:
 /* Line 1792 of yacc.c  */
-#line 1354 "./util/configparser.y"
+#line 1363 "./util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -3776,9 +3790,9 @@ yyreduce:
        }
     break;
 
-  case 262:
+  case 264:
 /* Line 1792 of yacc.c  */
-#line 1361 "./util/configparser.y"
+#line 1370 "./util/configparser.y"
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3788,17 +3802,17 @@ yyreduce:
        }
     break;
 
-  case 263:
+  case 265:
 /* Line 1792 of yacc.c  */
-#line 1370 "./util/configparser.y"
+#line 1379 "./util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 274:
+  case 276:
 /* Line 1792 of yacc.c  */
-#line 1381 "./util/configparser.y"
+#line 1390 "./util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3809,9 +3823,9 @@ yyreduce:
        }
     break;
 
-  case 275:
+  case 277:
 /* Line 1792 of yacc.c  */
-#line 1391 "./util/configparser.y"
+#line 1400 "./util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -3821,9 +3835,9 @@ yyreduce:
        }
     break;
 
-  case 276:
+  case 278:
 /* Line 1792 of yacc.c  */
-#line 1400 "./util/configparser.y"
+#line 1409 "./util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -3831,9 +3845,9 @@ yyreduce:
        }
     break;
 
-  case 277:
+  case 279:
 /* Line 1792 of yacc.c  */
-#line 1407 "./util/configparser.y"
+#line 1416 "./util/configparser.y"
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3844,9 +3858,9 @@ yyreduce:
        }
     break;
 
-  case 278:
+  case 280:
 /* Line 1792 of yacc.c  */
-#line 1417 "./util/configparser.y"
+#line 1426 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -3854,9 +3868,9 @@ yyreduce:
        }
     break;
 
-  case 279:
+  case 281:
 /* Line 1792 of yacc.c  */
-#line 1424 "./util/configparser.y"
+#line 1433 "./util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -3864,9 +3878,9 @@ yyreduce:
        }
     break;
 
-  case 280:
+  case 282:
 /* Line 1792 of yacc.c  */
-#line 1431 "./util/configparser.y"
+#line 1440 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -3874,9 +3888,9 @@ yyreduce:
        }
     break;
 
-  case 281:
+  case 283:
 /* Line 1792 of yacc.c  */
-#line 1438 "./util/configparser.y"
+#line 1447 "./util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -3884,17 +3898,17 @@ yyreduce:
        }
     break;
 
-  case 282:
+  case 284:
 /* Line 1792 of yacc.c  */
-#line 1445 "./util/configparser.y"
+#line 1454 "./util/configparser.y"
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
     break;
 
-  case 297:
+  case 299:
 /* Line 1792 of yacc.c  */
-#line 1462 "./util/configparser.y"
+#line 1471 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3903,9 +3917,9 @@ yyreduce:
        }
     break;
 
-  case 298:
+  case 300:
 /* Line 1792 of yacc.c  */
-#line 1470 "./util/configparser.y"
+#line 1479 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
@@ -3913,9 +3927,9 @@ yyreduce:
        }
     break;
 
-  case 299:
+  case 301:
 /* Line 1792 of yacc.c  */
-#line 1477 "./util/configparser.y"
+#line 1486 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3924,9 +3938,9 @@ yyreduce:
        }
     break;
 
-  case 300:
+  case 302:
 /* Line 1792 of yacc.c  */
-#line 1485 "./util/configparser.y"
+#line 1494 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3935,9 +3949,9 @@ yyreduce:
        }
     break;
 
-  case 301:
+  case 303:
 /* Line 1792 of yacc.c  */
-#line 1493 "./util/configparser.y"
+#line 1502 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_identity);
@@ -3945,9 +3959,9 @@ yyreduce:
        }
     break;
 
-  case 302:
+  case 304:
 /* Line 1792 of yacc.c  */
-#line 1500 "./util/configparser.y"
+#line 1509 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dnstap_version);
@@ -3955,9 +3969,9 @@ yyreduce:
        }
     break;
 
-  case 303:
+  case 305:
 /* Line 1792 of yacc.c  */
-#line 1507 "./util/configparser.y"
+#line 1516 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3967,9 +3981,9 @@ yyreduce:
        }
     break;
 
-  case 304:
+  case 306:
 /* Line 1792 of yacc.c  */
-#line 1516 "./util/configparser.y"
+#line 1525 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3979,9 +3993,9 @@ yyreduce:
        }
     break;
 
-  case 305:
+  case 307:
 /* Line 1792 of yacc.c  */
-#line 1525 "./util/configparser.y"
+#line 1534 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -3991,9 +4005,9 @@ yyreduce:
        }
     break;
 
-  case 306:
+  case 308:
 /* Line 1792 of yacc.c  */
-#line 1534 "./util/configparser.y"
+#line 1543 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -4003,9 +4017,9 @@ yyreduce:
        }
     break;
 
-  case 307:
+  case 309:
 /* Line 1792 of yacc.c  */
-#line 1543 "./util/configparser.y"
+#line 1552 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -4015,9 +4029,9 @@ yyreduce:
        }
     break;
 
-  case 308:
+  case 310:
 /* Line 1792 of yacc.c  */
-#line 1552 "./util/configparser.y"
+#line 1561 "./util/configparser.y"
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -4027,17 +4041,17 @@ yyreduce:
        }
     break;
 
-  case 309:
+  case 311:
 /* Line 1792 of yacc.c  */
-#line 1561 "./util/configparser.y"
+#line 1570 "./util/configparser.y"
     { 
                OUTYY(("\nP(python:)\n")); 
        }
     break;
 
-  case 313:
+  case 315:
 /* Line 1792 of yacc.c  */
-#line 1570 "./util/configparser.y"
+#line 1579 "./util/configparser.y"
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->python_script);
@@ -4047,7 +4061,7 @@ yyreduce:
 
 
 /* Line 1792 of yacc.c  */
-#line 4051 "util/configparser.c"
+#line 4065 "util/configparser.c"
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4279,7 +4293,7 @@ yyreturn:
 
 
 /* Line 2055 of yacc.c  */
-#line 1575 "./util/configparser.y"
+#line 1584 "./util/configparser.y"
 
 
 /* parse helper routines could be here */
index c981269ab406324d39fa571affb03733d09c9652..c1ff9a5dd96b3a2ffe87d7904627ddc0198132db 100644 (file)
@@ -201,7 +201,8 @@ extern int yydebug;
      VAR_RATELIMIT_SIZE = 410,
      VAR_RATELIMIT_FOR_DOMAIN = 411,
      VAR_RATELIMIT_BELOW_DOMAIN = 412,
-     VAR_RATELIMIT_FACTOR = 413
+     VAR_RATELIMIT_FACTOR = 413,
+     VAR_CAPS_WHITELIST = 414
    };
 #endif
 /* Tokens.  */
@@ -361,6 +362,7 @@ extern int yydebug;
 #define VAR_RATELIMIT_FOR_DOMAIN 411
 #define VAR_RATELIMIT_BELOW_DOMAIN 412
 #define VAR_RATELIMIT_FACTOR 413
+#define VAR_CAPS_WHITELIST 414
 
 
 
@@ -374,7 +376,7 @@ typedef union YYSTYPE
 
 
 /* Line 2058 of yacc.c  */
-#line 378 "util/configparser.h"
+#line 380 "util/configparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index 45e438afb0188ec6954558bf3925b4de5cce3325..ddb188fe418afeb72f4410d34785c5c516d99fa6 100644 (file)
@@ -121,6 +121,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT
 %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
 %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR
+%token VAR_CAPS_WHITELIST
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -183,7 +184,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_infra_cache_min_rtt | server_harden_algo_downgrade |
        server_ip_transparent | server_ratelimit | server_ratelimit_slabs |
        server_ratelimit_size | server_ratelimit_for_domain |
-       server_ratelimit_below_domain | server_ratelimit_factor
+       server_ratelimit_below_domain | server_ratelimit_factor |
+       server_caps_whitelist
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -882,6 +884,13 @@ server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG
                free($2);
        }
        ;
+server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG
+       {
+               OUTYY(("P(server_caps_whitelist:%s)\n", $2));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, $2))
+                       yyerror("out of memory");
+       }
+       ;
 server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG
        {
                OUTYY(("P(server_private_address:%s)\n", $2));