diff --git a/daemon/worker.c b/daemon/worker.c index 19a1271dd..7ab97c592 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1042,7 +1042,8 @@ worker_init(struct worker* worker, struct config_file *cfg, cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, cfg->do_tcp?cfg->outgoing_num_tcp:0, worker->daemon->env->infra_cache, worker->rndstate, - cfg->use_caps_bits_for_id, worker->ports, worker->numports); + cfg->use_caps_bits_for_id, worker->ports, worker->numports, + cfg->unwanted_threshold, &worker_alloc_cleanup, worker); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/Changelog b/doc/Changelog index 1aeea8c1e..1a9ad9c01 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,9 @@ - new stub-prime: yesno option. Default is off, so it does not prime. can be turned on to get same behaviour as previous unbound release. - made automated test that checks if builtin root hints are uptodate. + - finished draft-wijngaards-dnsext-resolver-side-mitigation + implementation. The unwanted-reply-threshold can be set. + - fixup so fptr_whitelist test in alloc.c works. 21 October 2008: Wouter - fix update-anchors.sh, so it does not report different RR order diff --git a/doc/example.conf.in b/doc/example.conf.in index ab980e4c0..484280e56 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -261,6 +261,13 @@ server: # Allow the domain (and its subdomains) to contain private addresses. # local-data statements are allowed to contain private addresses too. # private-domain: "example.com" + + # If nonzero, unwanted replies are not only reported in statistics, + # but also a running total is kept per thread. If it reaches the + # threshold, a warning is printed and a defensive action is taken, + # the cache is cleared to flush potential poison out of it. + # A suggested value is 10000000, the default is 0 (turned off). + # unwanted-reply-threshold: 0 # Do not query the following addresses. No DNS queries are sent there. # List one address per entry. List classless netblocks with /size, diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 1d8887790..a9a9b4860 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -446,6 +446,13 @@ Allow this domain, and all its subdomains to contain private addresses. Give multiple times to allow multiple domain names to contain private addresses. Default is none. .TP +.B unwanted\-reply\-threshold: \fI +If set, a total number of unwanted replies is kept track of in every thread. +When it reaches the threshold, a defensive action is taken and a warning +is printed to the log. The defensive action is to clear the rrset and +message caches, hopefully flushing away any poison. A value of 10 million +is suggested. Default is 0 (turned off). +.TP .B do\-not\-query\-address: \fI Do not query the given IP address. Can be IP4 or IP6. Append /num to indicate a classless delegation netblock, for example like diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 47e1b378f..c4f68b984 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -159,7 +159,8 @@ libworker_setup(struct ub_ctx* ctx, int is_bg) cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, cfg->do_tcp?cfg->outgoing_num_tcp:0, w->env->infra_cache, w->env->rnd, cfg->use_caps_bits_for_id, - ports, numports); + ports, numports, cfg->unwanted_threshold, + &libworker_alloc_cleanup, w); if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); } diff --git a/services/outside_network.c b/services/outside_network.c index 02f6f7402..f7413f3b7 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -330,6 +330,17 @@ outnet_udp_cb(struct comm_point* c, void* arg, int error, verbose(VERB_QUERY, "received unwanted or unsolicited udp reply dropped."); log_buf(VERB_ALGO, "dropped message", c->buffer); outnet->unwanted_replies++; + if(outnet->unwanted_threshold && ++outnet->unwanted_total + >= outnet->unwanted_threshold) { + log_warn("unwanted reply total reached threshold (%u)" + " you may be under attack." + " defensive action: clearing the cache", + (unsigned)outnet->unwanted_threshold); + fptr_ok(fptr_whitelist_alloc_cleanup( + outnet->unwanted_action)); + (*outnet->unwanted_action)(outnet->unwanted_param); + outnet->unwanted_total = 0; + } return 0; } @@ -339,6 +350,17 @@ outnet_udp_cb(struct comm_point* c, void* arg, int error, verbose(VERB_QUERY, "received reply id,addr on wrong port. " "dropped."); outnet->unwanted_replies++; + if(outnet->unwanted_threshold && ++outnet->unwanted_total + >= outnet->unwanted_threshold) { + log_warn("unwanted reply total reached threshold (%u)" + " you may be under attack." + " defensive action: clearing the cache", + (unsigned)outnet->unwanted_threshold); + fptr_ok(fptr_whitelist_alloc_cleanup( + outnet->unwanted_action)); + (*outnet->unwanted_action)(outnet->unwanted_param); + outnet->unwanted_total = 0; + } return 0; } comm_timer_disable(p->timer); @@ -444,7 +466,8 @@ outside_network_create(struct comm_base *base, size_t bufsize, size_t num_ports, char** ifs, int num_ifs, int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache* infra, struct ub_randstate* rnd, int use_caps_for_id, int* availports, - int numavailports) + int numavailports, size_t unwanted_threshold, + void (*unwanted_action)(void*), void* unwanted_param) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -459,6 +482,9 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->infra = infra; outnet->rnd = rnd; outnet->svcd_overhead = 0; + outnet->unwanted_threshold = unwanted_threshold; + outnet->unwanted_action = unwanted_action; + outnet->unwanted_param = unwanted_param; outnet->use_caps_for_id = use_caps_for_id; if(numavailports == 0) { log_err("no outgoing ports available"); diff --git a/services/outside_network.h b/services/outside_network.h index ef28ee91a..2c5f513ee 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -76,8 +76,17 @@ struct outside_network { size_t svcd_overhead; /** use x20 bits to encode additional ID random bits */ int use_caps_for_id; - /** number of unwanted replies received */ + + /** number of unwanted replies received (for statistics) */ size_t unwanted_replies; + /** cumulative total of unwanted replies (for defense) */ + size_t unwanted_total; + /** threshold when to take defensive action. If 0 then never. */ + size_t unwanted_threshold; + /** what action to take, called when defensive action is needed */ + void (*unwanted_action)(void*); + /** user param for action */ + void* unwanted_param; /** linked list of available commpoints, unused file descriptors, * for use as outgoing UDP ports. cp.fd=-1 in them. */ @@ -334,13 +343,17 @@ struct serviced_query { * @param use_caps_for_id: enable to use 0x20 bits to encode id randomness. * @param availports: array of available ports. * @param numavailports: number of available ports in array. + * @param unwanted_threshold: when to take defensive action. + * @param unwanted_action: the action to take. + * @param unwanted_param: user parameter to action. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, size_t bufsize, size_t num_ports, char** ifs, int num_ifs, int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache* infra, struct ub_randstate* rnd, int use_caps_for_id, int* availports, - int numavailports); + int numavailports, size_t unwanted_threshold, + void (*unwanted_action)(void*), void* unwanted_param); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 9518c0662..dc3811b7a 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -722,10 +722,12 @@ outside_network_create(struct comm_base* base, size_t bufsize, struct infra_cache* ATTR_UNUSED(infra), struct ub_randstate* ATTR_UNUSED(rnd), int ATTR_UNUSED(use_caps_for_id), int* ATTR_UNUSED(availports), - int ATTR_UNUSED(numavailports)) + int ATTR_UNUSED(numavailports), size_t ATTR_UNUSED(unwanted_threshold), + void (*unwanted_action)(void*), void* ATTR_UNUSED(unwanted_param)) { struct outside_network* outnet = calloc(1, sizeof(struct outside_network)); + (void)unwanted_action; if(!outnet) return NULL; outnet->base = base; diff --git a/util/alloc.c b/util/alloc.c index 19a51ba27..73a354319 100644 --- a/util/alloc.c +++ b/util/alloc.c @@ -169,7 +169,7 @@ alloc_get_id(struct alloc_cache* alloc) uint64_t id = alloc->next_id++; if(id == alloc->last_id) { log_warn("rrset alloc: out of 64bit ids. Clearing cache."); - fptr_whitelist_alloc_cleanup(alloc->cleanup); + fptr_ok(fptr_whitelist_alloc_cleanup(alloc->cleanup)); (*alloc->cleanup)(alloc->cleanup_arg); /* start back at first number */ /* like in alloc_init*/ diff --git a/util/config_file.c b/util/config_file.c index a56ef0c7e..5d91f5d9d 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -135,6 +135,7 @@ config_create() cfg->use_caps_bits_for_id = 0; cfg->private_address = NULL; cfg->private_domain = NULL; + cfg->unwanted_threshold = 0; cfg->hide_identity = 0; cfg->hide_version = 0; cfg->identity = NULL; @@ -325,6 +326,9 @@ int config_set_option(struct config_file* cfg, const char* opt, return cfg_strlist_insert(&cfg->private_address, strdup(val)); } else if(strcmp(opt, "private-domain:") == 0) { return cfg_strlist_insert(&cfg->private_domain, strdup(val)); + } else if(strcmp(opt, "unwanted-reply-threshold:") == 0) { + IS_NUMBER_OR_ZERO; + cfg->unwanted_threshold = (size_t)atoi(val); } else if(strcmp(opt, "do-not-query-localhost:") == 0) { IS_YES_OR_NO; cfg->donotquery_localhost = (strcmp(val, "yes") == 0); diff --git a/util/config_file.h b/util/config_file.h index cff5b06b8..c26a5f74e 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -155,6 +155,8 @@ struct config_file { struct config_strlist* private_address; /** allow domain (and subdomains) to use private address space */ struct config_strlist* private_domain; + /** what threshold for unwanted action. */ + size_t unwanted_threshold; /** chrootdir, if not "" or chroot will be done */ char* chrootdir; diff --git a/util/configlexer.c b/util/configlexer.c index e97c26470..977c7bf16 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 110 -#define YY_END_OF_BUFFER 111 +#define YY_NUM_RULES 111 +#define YY_END_OF_BUFFER 112 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -370,118 +370,121 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1001] = +static yyconst flex_int16_t yy_accept[1025] = { 0, - 1, 1, 94, 94, 98, 98, 102, 102, 106, 106, - 111, 109, 1, 92, 93, 2, 97, 110, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 94, 95, 110, - 96, 110, 98, 99, 100, 110, 105, 102, 103, 104, - 110, 106, 107, 108, 110, 109, 0, 1, 2, 2, - 2, 2, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 94, 0, 98, + 1, 1, 95, 95, 99, 99, 103, 103, 107, 107, + 112, 110, 1, 93, 94, 2, 98, 111, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 95, 96, 111, + 97, 111, 99, 100, 101, 111, 106, 103, 104, 105, + 111, 107, 108, 109, 111, 110, 0, 1, 2, 2, + 2, 2, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 95, 0, - 0, 105, 0, 102, 106, 0, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 99, 0, 106, 0, 103, 107, 0, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 49, 109, - 109, 109, 109, 109, 6, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 50, 110, 110, 110, 110, 110, 6, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 109, 109, 109, 20, 109, 109, 109, 109, 12, 13, - 109, 15, 14, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 3, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 101, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 23, - 109, 109, 109, 109, 109, 109, 109, 24, 109, 109, + 110, 110, 110, 110, 110, 110, 110, 110, 20, 110, + 110, 110, 110, 12, 13, 110, 15, 14, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 3, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 102, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 23, 110, 110, 110, 110, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 62, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 61, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 21, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 22, 109, 109, 109, 109, 109, 109, 109, + 110, 110, 110, 24, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 63, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 62, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 21, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 17, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 50, 51, 109, 48, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 5, - 109, 109, 109, 109, 109, 109, 109, 109, 64, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 79, 78, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 25, 109, 109, 109, 109, + 22, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 17, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 51, 52, 110, 49, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 5, 110, + 110, 110, 110, 110, 110, 110, 110, 65, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 80, + 79, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 52, 109, 109, 109, 109, 77, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 42, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 4, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 87, 109, 16, 109, 109, - 54, 55, 53, 109, 109, 109, 109, 109, 60, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 110, 110, 110, 110, 25, 110, 110, 110, 110, 53, + 110, 110, 110, 110, 110, 78, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 42, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 4, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 88, 110, 16, 110, + 110, 55, 56, 54, 110, 110, 110, 110, 110, 61, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 68, 109, 109, 109, 109, 109, 109, 109, 109, 31, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 59, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 63, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 70, 109, 109, - 109, 109, 58, 109, 85, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 32, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 69, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 31, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 60, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 64, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 71, 110, 110, 110, 110, 59, 110, 86, 110, 110, - 33, 109, 38, 73, 109, 80, 109, 27, 109, 75, - 109, 109, 109, 109, 109, 7, 109, 47, 84, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 65, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 74, - 26, 28, 109, 109, 109, 109, 109, 46, 109, 109, - 109, 88, 109, 109, 109, 109, 109, 45, 109, 109, - 109, 109, 109, 109, 90, 109, 109, 109, 109, 109, - 109, 109, 11, 109, 109, 109, 109, 109, 109, 10, - 109, 109, 29, 109, 89, 109, 109, 109, 109, 109, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 32, 33, 110, 38, 74, 110, 81, 110, + 27, 110, 76, 110, 110, 110, 110, 110, 7, 110, + 48, 85, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 66, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 75, 26, 28, 110, 110, 110, 110, + 110, 47, 110, 110, 110, 89, 110, 110, 110, 110, + 110, 110, 45, 110, 110, 110, 110, 110, 110, 91, + 110, 110, 110, 110, 110, 110, 110, 11, 110, 110, - 109, 109, 109, 109, 91, 86, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 34, 109, 109, 109, 109, - 109, 30, 109, 109, 109, 66, 67, 109, 109, 69, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 18, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 83, 109, 109, 109, 109, 109, 109, - 19, 109, 9, 109, 109, 81, 39, 109, 109, 72, - 56, 109, 109, 41, 44, 40, 109, 35, 109, 8, - 109, 71, 109, 109, 109, 36, 109, 82, 109, 57, - 43, 37, 109, 109, 109, 109, 109, 109, 76, 0 + 110, 110, 110, 110, 10, 110, 110, 29, 110, 90, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 92, 87, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 34, 110, 110, 110, 110, 110, 30, 110, 110, + 110, 67, 68, 110, 110, 110, 70, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 18, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 84, 110, 110, 110, 110, 110, 110, 19, 110, + 9, 110, 110, 82, 39, 110, 110, 110, 73, 57, + 110, 110, 41, 44, 40, 110, 35, 110, 8, 110, + 110, 72, 110, 110, 110, 36, 110, 83, 110, 110, + 58, 43, 37, 110, 110, 110, 110, 46, 110, 110, + 110, 110, 77, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -524,239 +527,243 @@ static yyconst flex_int32_t yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1012] = +static yyconst flex_int16_t yy_base[1036] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 2050, 2036, 50, 2051, 2051, 82, 2051, 89, 33, 84, + 2098, 2084, 50, 2099, 2099, 82, 2099, 89, 33, 84, 79, 62, 72, 89, 93, 95, 96, 100, 102, 103, - 49, 105, 111, 113, 127, 106, 130, 2035, 2051, 2051, - 2051, 145, 2034, 2051, 2051, 118, 2033, 2043, 2051, 2051, - 149, 2031, 2051, 2051, 155, 2030, 159, 163, 0, 166, - 0, 0, 119, 139, 144, 149, 154, 159, 169, 165, - 161, 168, 167, 170, 174, 173, 176, 184, 178, 183, - 189, 188, 193, 196, 199, 197, 198, 200, 204, 205, - 208, 209, 211, 212, 217, 220, 218, 2029, 236, 2028, + 49, 105, 111, 113, 127, 122, 130, 2083, 2099, 2099, + 2099, 146, 2082, 2099, 2099, 115, 2081, 2091, 2099, 2099, + 155, 2079, 2099, 2099, 148, 2078, 159, 163, 0, 166, + 0, 0, 159, 161, 125, 154, 163, 112, 170, 167, + 171, 172, 169, 174, 177, 175, 176, 185, 178, 184, + 119, 186, 195, 196, 198, 199, 200, 205, 204, 203, + 206, 210, 207, 212, 213, 215, 214, 221, 2077, 236, - 240, 2027, 246, 2037, 2025, 250, 239, 243, 245, 246, - 247, 253, 267, 249, 250, 221, 256, 255, 262, 257, - 258, 259, 270, 282, 272, 264, 289, 286, 295, 297, - 293, 296, 294, 298, 301, 299, 303, 304, 305, 132, - 306, 309, 312, 315, 321, 317, 322, 318, 311, 331, - 337, 341, 61, 324, 332, 343, 344, 345, 348, 354, - 350, 351, 352, 355, 357, 268, 359, 361, 214, 364, - 366, 378, 360, 367, 371, 374, 380, 381, 385, 393, - 389, 390, 391, 397, 394, 396, 398, 404, 419, 408, - 402, 406, 412, 410, 413, 420, 415, 426, 439, 424, + 2076, 238, 2075, 246, 2085, 2073, 250, 243, 244, 230, + 234, 246, 255, 256, 253, 249, 257, 259, 266, 263, + 267, 268, 262, 274, 283, 281, 271, 291, 288, 294, + 295, 296, 298, 279, 297, 300, 301, 302, 305, 306, + 308, 309, 311, 312, 322, 323, 329, 314, 320, 324, + 328, 332, 336, 341, 61, 334, 344, 350, 338, 355, + 353, 362, 343, 345, 351, 359, 361, 365, 367, 368, + 369, 371, 372, 382, 373, 384, 385, 386, 388, 389, + 391, 397, 393, 394, 396, 403, 402, 406, 408, 409, + 410, 429, 415, 414, 416, 425, 417, 418, 419, 427, - 427, 432, 438, 441, 446, 445, 447, 449, 452, 455, - 451, 458, 464, 471, 462, 468, 469, 475, 2024, 477, - 470, 472, 479, 481, 2023, 482, 484, 486, 492, 483, - 485, 495, 497, 505, 498, 506, 507, 509, 513, 514, - 512, 515, 516, 522, 523, 519, 527, 528, 529, 536, - 530, 542, 546, 552, 549, 551, 553, 555, 561, 560, - 557, 554, 563, 565, 569, 566, 575, 573, 578, 580, - 588, 584, 586, 591, 587, 593, 595, 596, 597, 603, - 599, 607, 617, 600, 614, 606, 605, 613, 624, 625, - 627, 622, 615, 629, 630, 635, 636, 639, 632, 643, + 442, 451, 434, 436, 440, 446, 453, 455, 457, 458, + 459, 461, 465, 462, 472, 473, 480, 464, 478, 481, + 484, 2072, 486, 482, 488, 489, 492, 2071, 490, 494, + 493, 500, 491, 497, 505, 507, 517, 508, 514, 511, + 518, 520, 525, 523, 524, 529, 526, 532, 538, 530, + 540, 541, 544, 548, 549, 555, 557, 563, 561, 565, + 566, 568, 574, 573, 570, 567, 576, 578, 582, 579, + 588, 586, 591, 593, 601, 597, 599, 604, 600, 606, + 608, 609, 610, 616, 612, 620, 630, 613, 627, 619, + 618, 626, 637, 638, 640, 642, 635, 643, 645, 646, - 633, 645, 653, 2022, 651, 649, 655, 656, 2021, 2020, - 657, 2019, 2018, 658, 664, 675, 660, 666, 661, 669, - 670, 672, 676, 680, 685, 678, 689, 695, 690, 700, - 701, 702, 703, 706, 692, 707, 709, 718, 720, 719, - 713, 723, 725, 2017, 721, 729, 726, 731, 732, 735, - 734, 742, 738, 739, 744, 743, 752, 747, 754, 755, - 756, 759, 760, 761, 786, 762, 763, 765, 767, 771, - 773, 769, 770, 792, 796, 790, 780, 784, 805, 2016, - 811, 807, 800, 808, 809, 813, 812, 815, 816, 2015, - 818, 820, 823, 824, 827, 831, 839, 2014, 837, 840, + 649, 650, 652, 648, 656, 659, 660, 667, 2070, 669, + 661, 670, 671, 2069, 2068, 421, 2067, 2066, 672, 680, + 687, 677, 674, 683, 685, 681, 689, 695, 696, 698, + 693, 703, 714, 702, 719, 704, 716, 712, 721, 709, + 723, 724, 726, 735, 733, 732, 737, 739, 2065, 734, + 740, 741, 745, 747, 749, 748, 756, 753, 752, 758, + 759, 763, 765, 769, 767, 768, 773, 775, 776, 223, + 794, 777, 780, 778, 779, 787, 788, 790, 786, 806, + 808, 801, 811, 812, 816, 2064, 822, 818, 819, 820, + 823, 826, 824, 827, 830, 2063, 834, 832, 836, 840, - 826, 842, 843, 844, 847, 851, 852, 853, 854, 856, - 857, 403, 863, 862, 865, 867, 868, 874, 871, 875, - 873, 2013, 876, 883, 880, 879, 881, 887, 888, 897, - 891, 899, 900, 894, 902, 901, 904, 907, 910, 911, - 912, 915, 914, 923, 2012, 921, 917, 920, 922, 938, - 928, 944, 942, 945, 946, 936, 952, 953, 951, 955, - 949, 957, 962, 964, 966, 968, 969, 970, 971, 973, - 975, 979, 981, 982, 983, 988, 986, 989, 2011, 999, - 1003, 1005, 997, 1001, 1008, 1004, 1009, 1010, 1011, 1013, - 1014, 1016, 2010, 1022, 1015, 1018, 1023, 1026, 1019, 1031, + 839, 842, 851, 2062, 852, 850, 854, 855, 857, 859, + 860, 861, 866, 867, 868, 870, 869, 871, 881, 883, + 877, 885, 887, 888, 893, 890, 891, 894, 2061, 895, + 901, 898, 897, 899, 905, 907, 915, 912, 916, 918, + 917, 920, 926, 927, 921, 928, 929, 931, 933, 932, + 934, 2060, 939, 938, 935, 945, 959, 944, 956, 960, + 962, 963, 964, 970, 971, 968, 972, 969, 975, 974, + 980, 981, 984, 986, 988, 990, 996, 998, 1001, 1003, + 991, 999, 1005, 1008, 1012, 1014, 2059, 1020, 1022, 1024, + 1016, 1023, 1028, 1029, 1030, 1033, 1031, 1034, 1035, 1037, - 1025, 1027, 1035, 1046, 1037, 1040, 1047, 1048, 1052, 1058, - 1059, 1060, 2009, 1063, 1056, 1071, 1065, 1067, 1077, 1074, - 1076, 1078, 1079, 1080, 1081, 1084, 1082, 1085, 1087, 1086, - 1091, 1096, 1088, 1109, 1110, 2008, 2007, 1112, 2006, 1113, - 1092, 1103, 1114, 1118, 1115, 1119, 1121, 1122, 1123, 2005, - 1125, 1124, 1127, 1131, 1134, 1141, 1130, 1140, 2004, 1148, - 1137, 1151, 1138, 1145, 1149, 1155, 1158, 1159, 1161, 1163, - 1166, 1167, 1169, 1173, 1170, 1171, 1172, 1174, 1175, 1176, - 2003, 2002, 1185, 1177, 1188, 1195, 1203, 1202, 1199, 1205, - 1206, 1207, 1208, 1209, 1211, 2001, 1217, 1220, 1216, 1225, + 2058, 1041, 1038, 1039, 1043, 1044, 1046, 1045, 1047, 1053, + 1061, 1062, 1052, 1069, 1056, 1072, 1074, 1080, 1081, 1082, + 2057, 1084, 1073, 1091, 1088, 1094, 1101, 1085, 1095, 1097, + 1098, 1099, 1102, 1103, 1105, 1107, 1108, 1109, 1120, 1110, + 1112, 1127, 1130, 2056, 2055, 1134, 2054, 1128, 1124, 1126, + 1135, 1137, 1142, 1136, 1143, 1138, 1146, 1145, 2053, 1147, + 1148, 1153, 550, 1154, 1160, 1157, 1161, 2052, 1158, 1162, + 1169, 1166, 1171, 1174, 1175, 1182, 1178, 1172, 1176, 1185, + 1186, 1188, 1194, 1192, 1193, 1195, 1199, 1197, 1202, 2051, + 2050, 1198, 1203, 1208, 1210, 1226, 1224, 1211, 1215, 1225, - 2000, 1223, 1214, 1227, 1230, 1999, 1213, 1235, 1236, 1237, - 1238, 1240, 1244, 1250, 1249, 1251, 1252, 1254, 1257, 1260, - 1267, 1243, 1265, 1271, 1273, 1274, 1998, 1280, 1268, 1281, - 1278, 1283, 1284, 1285, 1287, 1288, 1289, 1290, 1291, 1292, - 1294, 1295, 1296, 1298, 1300, 1306, 1310, 1997, 1313, 1320, - 1316, 1312, 1322, 1321, 1323, 1325, 1328, 1331, 1329, 1333, - 1342, 1346, 1348, 1354, 1339, 1352, 1335, 1358, 1355, 1357, - 1362, 1359, 1363, 1364, 1366, 1996, 1367, 1995, 1371, 1373, - 1994, 1993, 1992, 1381, 1374, 1384, 1178, 1387, 1991, 1378, - 1388, 1380, 1390, 1392, 1393, 1394, 1395, 1403, 1397, 1396, + 1227, 1229, 1232, 1230, 2049, 1239, 1240, 1236, 1246, 2048, + 1237, 1238, 1244, 1250, 1251, 2047, 1252, 1253, 1254, 1260, + 1258, 1261, 1262, 1273, 1270, 1271, 1275, 1278, 1279, 1284, + 1285, 1286, 1291, 1293, 1295, 1296, 2046, 1302, 1287, 1303, + 1300, 1308, 1309, 1301, 1310, 1311, 1312, 1314, 1316, 1317, + 1319, 1321, 1324, 1322, 1326, 1323, 1329, 2045, 1336, 1343, + 1334, 1337, 1346, 1347, 1340, 1350, 1352, 1353, 1357, 1359, + 1365, 1368, 1366, 1364, 1375, 1371, 1377, 1372, 1379, 1380, + 1382, 1385, 1386, 1388, 1389, 1387, 2044, 1391, 2043, 1398, + 1400, 2042, 2041, 2040, 1406, 1390, 1404, 1411, 1415, 2039, - 1407, 1400, 1411, 1410, 1413, 1417, 1419, 1420, 1428, 1424, - 1425, 1421, 1427, 1433, 1432, 1431, 1434, 1430, 1436, 1448, - 1990, 1449, 1451, 1457, 1453, 1446, 1459, 1461, 1468, 1989, - 1464, 1470, 1471, 1474, 1475, 1477, 1476, 1478, 1479, 1482, - 1483, 1484, 1988, 1485, 1487, 1489, 1492, 1507, 1509, 1499, - 1511, 1514, 1496, 1517, 1987, 1518, 1520, 1521, 1525, 1504, - 1526, 1527, 1528, 1534, 1531, 1536, 1538, 1539, 1541, 1543, - 1546, 1545, 1547, 1548, 1549, 1553, 1490, 1986, 1438, 1559, - 1556, 1569, 1985, 1560, 1984, 1567, 1571, 1574, 1575, 1577, - 1561, 1578, 1582, 1588, 1584, 1585, 1586, 1589, 1592, 1983, + 1408, 1416, 1412, 1418, 1419, 1420, 1421, 1422, 1424, 1423, + 1426, 1435, 1427, 1438, 1437, 1440, 1441, 1447, 1448, 1454, + 1450, 1451, 1452, 1457, 1462, 1458, 1460, 1463, 1459, 1461, + 1475, 2038, 1478, 1464, 1473, 1486, 1483, 1480, 1487, 1488, + 1495, 2037, 1496, 1498, 1500, 1490, 1503, 1506, 1504, 1507, + 1509, 1511, 1512, 1513, 2036, 1514, 1516, 1518, 1520, 1523, + 1536, 1525, 1540, 1542, 1527, 1544, 2035, 1545, 1548, 1530, + 1552, 1515, 1553, 1554, 1555, 1561, 1558, 1563, 1565, 1566, + 1567, 1569, 1570, 1572, 1573, 1574, 1576, 1579, 1587, 1580, + 2034, 1583, 1586, 1590, 1599, 2033, 1596, 2032, 1597, 1601, - 1982, 1595, 1981, 1980, 1600, 1979, 1603, 1978, 1605, 1977, - 1611, 1607, 1593, 1610, 1612, 1976, 1614, 1975, 1974, 1615, - 1616, 1619, 1622, 1623, 1625, 1626, 1627, 1628, 1630, 1633, - 1631, 1634, 1636, 1641, 1645, 1648, 1973, 1637, 1651, 1644, - 1656, 1658, 1659, 1660, 1662, 1668, 1665, 1664, 1666, 1972, - 1971, 1970, 1667, 1669, 1671, 1673, 1677, 1969, 1682, 1678, - 1685, 1968, 1689, 1691, 1692, 1693, 1694, 1967, 1696, 1700, - 1702, 1703, 1709, 1715, 1966, 1712, 1704, 1719, 1720, 1721, - 1723, 1725, 1965, 1726, 1727, 1732, 1728, 1733, 1735, 1964, - 1738, 1736, 1960, 1743, 1956, 1739, 1750, 1752, 1754, 1757, + 1605, 1598, 1607, 1609, 1611, 1612, 1618, 1614, 1616, 1619, + 1615, 1625, 2031, 2030, 1621, 2029, 2028, 1634, 2027, 1636, + 2026, 1638, 2025, 1644, 1640, 1626, 1628, 1643, 2024, 1646, + 2023, 2022, 1647, 1649, 1653, 1655, 1656, 1657, 1659, 1660, + 1661, 1662, 1664, 1665, 1666, 1667, 1670, 1676, 1679, 1678, + 2021, 1680, 1685, 1688, 1689, 1690, 1693, 1691, 1695, 1701, + 1699, 1700, 1702, 2017, 2013, 2012, 1703, 1712, 1705, 1706, + 1711, 2011, 1717, 1713, 1725, 2007, 1726, 1718, 1728, 1730, + 1731, 1733, 2006, 1734, 1738, 1739, 1742, 1746, 1748, 2002, + 1750, 1751, 1753, 1752, 1758, 1759, 1762, 2001, 1754, 1764, - 1744, 1765, 1762, 1706, 1955, 1954, 1748, 1763, 1764, 1766, - 1768, 1769, 1770, 1772, 1774, 1950, 1775, 1777, 1780, 1784, - 1776, 1949, 1790, 1786, 1787, 1945, 1944, 1791, 1793, 1943, - 1800, 1797, 1803, 1807, 1801, 1804, 1811, 1808, 1809, 1810, - 1815, 1820, 1937, 1822, 1824, 1826, 1828, 1831, 1833, 1832, - 1837, 1839, 1834, 1909, 1841, 1843, 1850, 1855, 1851, 1858, - 1908, 1859, 1904, 1862, 1863, 1903, 1902, 1865, 1866, 1901, - 1900, 1847, 1869, 1899, 1897, 1896, 1875, 1895, 1872, 1840, - 1878, 1554, 1870, 1880, 1882, 1501, 1884, 1050, 1885, 924, - 777, 683, 1887, 1889, 1890, 1892, 1891, 1894, 571, 2051, + 1766, 1768, 1770, 1769, 2000, 1772, 1775, 1994, 1780, 1966, + 1776, 1784, 1786, 1791, 1793, 1782, 1787, 1799, 1798, 1802, + 1965, 1964, 1795, 1803, 1804, 1805, 1807, 1808, 1809, 1810, + 1813, 1963, 1815, 1816, 1825, 1822, 1820, 1962, 1827, 1830, + 1831, 1960, 1959, 1832, 1838, 1840, 1958, 1841, 1843, 1844, + 1848, 1845, 1850, 1852, 1853, 1851, 1854, 1864, 1865, 1957, + 1867, 1855, 1857, 1872, 1881, 1868, 1874, 1876, 1883, 1885, + 1878, 1956, 1888, 1890, 1892, 1895, 1898, 1900, 1954, 1901, + 1953, 1905, 1906, 1952, 1951, 1907, 1909, 1912, 1817, 1720, + 1910, 1914, 1669, 1630, 1537, 1920, 1456, 1921, 1264, 1923, - 1923, 1929, 1935, 1941, 550, 1947, 1953, 1959, 62, 1964, - 1970 + 1913, 1204, 1916, 1927, 1932, 1077, 1936, 993, 1929, 1937, + 904, 783, 700, 1939, 1924, 1946, 1933, 628, 1940, 1947, + 1948, 1950, 584, 2099, 1980, 1986, 1992, 1998, 154, 2004, + 2010, 2016, 62, 2021, 2027 } ; -static yyconst flex_int16_t yy_def[1012] = +static yyconst flex_int16_t yy_def[1036] = { 0, - 1000, 1, 1001, 1001, 1002, 1002, 1003, 1003, 1004, 1004, - 1000, 1005, 1000, 1000, 1000, 1006, 1000, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1007, 1000, 1000, - 1000, 1007, 1008, 1000, 1000, 1008, 1009, 1000, 1000, 1000, - 1009, 1010, 1000, 1000, 1010, 1005, 1005, 1000, 1011, 1006, - 1011, 1006, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1007, 1007, 1008, + 1024, 1, 1025, 1025, 1026, 1026, 1027, 1027, 1028, 1028, + 1024, 1029, 1024, 1024, 1024, 1030, 1024, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1031, 1024, 1024, + 1024, 1031, 1032, 1024, 1024, 1032, 1033, 1024, 1024, 1024, + 1033, 1034, 1024, 1024, 1034, 1029, 1029, 1024, 1035, 1030, + 1035, 1030, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1031, 1031, - 1008, 1009, 1009, 1000, 1010, 1010, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1032, 1032, 1033, 1033, 1024, 1034, 1034, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 0, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000 + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, + 1029, 1029, 1029, 0, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024 } ; -static yyconst flex_int16_t yy_nxt[2091] = +static yyconst flex_int16_t yy_nxt[2139] = { 0, 12, 13, 14, 14, 15, 16, 17, 12, 12, 12, 12, 12, 18, 19, 12, 20, 21, 22, 23, 12, @@ -764,232 +771,238 @@ static yyconst flex_int16_t yy_nxt[2091] = 33, 34, 35, 36, 37, 12, 12, 12, 12, 39, 40, 41, 39, 40, 41, 57, 44, 40, 63, 42, 45, 58, 42, 44, 40, 59, 46, 45, 53, 53, - 54, 57, 102, 46, 48, 49, 49, 50, 55, 40, + 54, 57, 103, 46, 48, 49, 49, 50, 55, 40, 53, 53, 54, 57, 57, 51, 48, 49, 49, 50, - 55, 40, 84, 61, 57, 61, 61, 51, 61, 199, + 55, 40, 84, 61, 57, 61, 61, 51, 61, 202, 56, 57, 56, 56, 62, 56, 57, 64, 70, 71, 67, 57, 72, 68, 65, 57, 69, 57, 57, 74, - 73, 66, 57, 77, 57, 57, 81, 57, 57, 75, - 82, 100, 76, 57, 100, 57, 85, 78, 88, 79, - 91, 57, 86, 80, 107, 87, 83, 95, 89, 57, - 93, 90, 57, 96, 57, 92, 184, 97, 98, 98, - 102, 57, 102, 102, 108, 102, 57, 94, 105, 105, - 56, 57, 56, 56, 58, 56, 57, 61, 59, 61, - 61, 57, 61, 57, 109, 110, 113, 57, 62, 57, - 57, 57, 57, 117, 111, 57, 57, 118, 57, 119, - 57, 115, 120, 112, 126, 57, 57, 114, 116, 124, + 73, 66, 57, 77, 57, 57, 81, 57, 101, 75, + 82, 101, 76, 57, 57, 57, 85, 78, 88, 79, + 91, 57, 86, 80, 57, 87, 83, 57, 89, 57, + 93, 90, 57, 97, 129, 92, 113, 98, 95, 99, + 99, 106, 106, 96, 56, 110, 103, 94, 103, 103, + 56, 103, 56, 56, 58, 56, 57, 61, 59, 61, + 61, 57, 61, 57, 108, 57, 109, 114, 62, 57, + 111, 57, 57, 57, 57, 118, 57, 57, 57, 57, + 57, 119, 120, 112, 127, 121, 57, 57, 57, 115, - 57, 57, 127, 125, 122, 57, 121, 129, 57, 57, - 57, 57, 57, 123, 128, 132, 57, 57, 130, 134, - 57, 57, 139, 57, 57, 135, 57, 133, 131, 57, - 57, 136, 57, 57, 143, 215, 137, 159, 138, 98, - 98, 141, 140, 100, 144, 142, 100, 102, 145, 102, - 102, 57, 102, 105, 105, 57, 146, 57, 57, 57, - 151, 57, 57, 147, 150, 57, 157, 57, 57, 57, - 57, 57, 148, 160, 57, 165, 57, 167, 149, 57, - 57, 161, 57, 152, 57, 158, 162, 164, 153, 163, - 169, 166, 212, 154, 57, 168, 171, 170, 57, 155, + 125, 116, 117, 128, 126, 130, 123, 57, 57, 122, + 57, 57, 57, 124, 133, 57, 57, 57, 57, 57, + 131, 135, 57, 140, 57, 57, 57, 57, 132, 134, + 136, 137, 145, 57, 138, 57, 139, 142, 146, 99, + 99, 101, 57, 141, 101, 143, 57, 103, 144, 103, + 103, 147, 103, 106, 106, 57, 57, 150, 57, 431, + 148, 57, 153, 152, 149, 57, 151, 57, 57, 57, + 159, 57, 154, 161, 57, 57, 162, 155, 57, 57, + 57, 169, 156, 57, 160, 167, 57, 164, 157, 158, + 165, 57, 163, 57, 168, 57, 170, 166, 173, 171, - 156, 57, 173, 172, 174, 57, 57, 57, 57, 57, - 57, 57, 175, 57, 176, 57, 57, 57, 57, 187, - 181, 57, 189, 57, 57, 185, 177, 57, 179, 57, - 57, 180, 178, 57, 57, 190, 57, 183, 182, 193, - 186, 195, 188, 57, 57, 194, 196, 201, 192, 57, - 197, 200, 191, 57, 198, 57, 57, 57, 204, 202, - 57, 206, 57, 57, 57, 205, 57, 57, 210, 57, - 203, 57, 57, 57, 213, 220, 57, 209, 57, 57, - 217, 218, 207, 57, 208, 214, 57, 211, 216, 219, - 57, 225, 57, 57, 226, 224, 221, 57, 223, 222, + 57, 175, 176, 57, 172, 174, 57, 57, 57, 57, + 57, 179, 57, 57, 57, 177, 178, 57, 57, 183, + 57, 57, 186, 57, 57, 189, 57, 181, 187, 190, + 192, 180, 57, 182, 57, 57, 57, 196, 185, 184, + 57, 57, 188, 193, 57, 195, 57, 199, 57, 200, + 57, 197, 191, 57, 201, 57, 57, 57, 198, 204, + 194, 203, 57, 57, 206, 57, 205, 57, 207, 209, + 208, 57, 213, 57, 57, 210, 212, 57, 211, 57, + 57, 57, 216, 57, 57, 57, 220, 221, 223, 215, + 218, 214, 217, 222, 57, 219, 57, 57, 57, 228, - 228, 57, 57, 57, 232, 57, 57, 230, 57, 57, - 57, 233, 231, 235, 57, 57, 57, 227, 57, 246, - 57, 229, 57, 244, 57, 57, 476, 57, 234, 236, - 237, 57, 57, 238, 239, 243, 57, 245, 57, 57, - 248, 250, 247, 251, 57, 240, 241, 242, 252, 253, - 57, 57, 249, 57, 257, 255, 254, 57, 57, 57, - 256, 57, 265, 57, 57, 263, 260, 57, 262, 266, - 57, 258, 259, 264, 57, 267, 57, 268, 269, 261, - 57, 57, 57, 57, 57, 271, 270, 57, 273, 57, - 274, 57, 276, 57, 57, 57, 57, 57, 57, 282, + 57, 57, 229, 57, 231, 57, 57, 227, 57, 57, + 235, 233, 226, 224, 57, 57, 225, 234, 57, 236, + 57, 57, 57, 230, 239, 232, 57, 57, 57, 57, + 57, 57, 250, 57, 238, 248, 241, 57, 237, 57, + 240, 57, 247, 242, 243, 252, 57, 249, 57, 251, + 375, 253, 57, 254, 57, 244, 245, 246, 57, 255, + 256, 257, 261, 57, 259, 57, 258, 57, 260, 57, + 57, 57, 269, 57, 57, 267, 57, 57, 264, 266, + 270, 263, 268, 262, 57, 57, 272, 273, 274, 271, + 57, 265, 57, 57, 57, 275, 57, 277, 57, 278, - 277, 280, 272, 275, 57, 278, 281, 57, 285, 57, - 57, 292, 290, 283, 279, 286, 284, 57, 57, 57, - 294, 57, 291, 287, 57, 57, 57, 57, 57, 289, - 302, 57, 299, 288, 57, 57, 295, 296, 304, 57, - 57, 57, 57, 293, 303, 297, 298, 300, 57, 301, - 56, 307, 305, 309, 57, 308, 306, 310, 57, 311, - 312, 57, 313, 57, 57, 57, 57, 57, 316, 57, - 314, 315, 57, 57, 318, 57, 317, 57, 57, 325, - 320, 57, 326, 57, 322, 57, 319, 57, 327, 323, - 57, 321, 57, 324, 328, 331, 57, 330, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 286, 280, 57, + 281, 284, 57, 285, 276, 279, 282, 57, 289, 57, + 57, 287, 283, 57, 294, 290, 57, 297, 288, 57, + 57, 299, 57, 291, 295, 57, 57, 57, 57, 293, + 296, 57, 57, 292, 57, 307, 304, 300, 298, 301, + 57, 309, 57, 57, 302, 308, 57, 305, 303, 306, + 57, 57, 57, 312, 625, 310, 314, 57, 315, 57, + 316, 311, 317, 57, 313, 57, 318, 57, 57, 57, + 57, 321, 57, 319, 320, 57, 57, 323, 57, 322, + 57, 57, 330, 325, 57, 331, 57, 327, 57, 324, - 57, 333, 332, 57, 335, 57, 334, 57, 57, 57, - 340, 57, 57, 338, 339, 57, 329, 57, 57, 57, - 341, 337, 342, 336, 343, 57, 57, 57, 344, 57, - 346, 350, 345, 347, 57, 348, 57, 57, 351, 57, - 349, 57, 57, 352, 57, 57, 354, 57, 57, 356, - 353, 57, 357, 358, 355, 57, 359, 57, 365, 362, - 363, 57, 360, 57, 361, 57, 364, 57, 57, 57, - 57, 371, 57, 57, 370, 367, 57, 377, 57, 366, - 380, 57, 57, 368, 57, 382, 369, 57, 57, 381, - 57, 372, 57, 384, 373, 57, 378, 57, 379, 374, + 57, 332, 328, 57, 326, 57, 329, 333, 336, 57, + 335, 57, 57, 57, 338, 337, 57, 340, 57, 339, + 57, 57, 57, 345, 57, 57, 343, 344, 57, 334, + 57, 57, 57, 346, 342, 347, 341, 348, 57, 57, + 57, 349, 57, 351, 355, 350, 352, 57, 353, 57, + 57, 356, 57, 354, 57, 57, 357, 57, 57, 358, + 57, 57, 57, 359, 57, 362, 363, 364, 57, 365, + 361, 57, 57, 57, 360, 369, 371, 367, 366, 57, + 370, 57, 57, 57, 57, 368, 57, 377, 376, 57, + 373, 372, 57, 57, 383, 57, 386, 57, 374, 57, - 385, 57, 57, 383, 57, 375, 376, 57, 388, 387, - 386, 390, 57, 57, 57, 57, 391, 389, 57, 57, - 392, 57, 395, 393, 396, 57, 394, 399, 397, 398, - 57, 57, 57, 57, 400, 57, 402, 57, 57, 401, - 403, 57, 405, 57, 57, 406, 57, 57, 404, 412, - 57, 57, 408, 410, 57, 57, 57, 407, 409, 57, - 411, 415, 418, 414, 57, 417, 57, 57, 57, 413, - 422, 57, 57, 57, 57, 57, 416, 57, 434, 57, - 420, 57, 57, 57, 419, 57, 435, 423, 421, 57, - 431, 432, 57, 436, 439, 438, 57, 424, 57, 430, + 387, 57, 388, 378, 384, 57, 379, 57, 57, 390, + 57, 380, 57, 391, 57, 57, 57, 381, 382, 397, + 385, 57, 389, 393, 57, 392, 57, 394, 57, 395, + 396, 57, 399, 57, 398, 57, 57, 404, 57, 401, + 402, 400, 405, 403, 57, 57, 57, 57, 406, 57, + 408, 57, 57, 57, 409, 411, 412, 57, 407, 57, + 57, 57, 410, 418, 57, 57, 414, 416, 57, 419, + 57, 57, 413, 415, 417, 57, 422, 57, 424, 57, + 57, 57, 421, 420, 425, 57, 429, 57, 57, 57, + 57, 57, 57, 427, 441, 57, 423, 426, 57, 57, - 433, 425, 57, 426, 57, 440, 443, 427, 57, 428, - 442, 437, 57, 441, 429, 444, 445, 57, 446, 57, - 57, 57, 447, 57, 57, 57, 450, 57, 57, 452, - 57, 448, 57, 449, 451, 57, 57, 456, 57, 57, - 457, 458, 454, 57, 460, 455, 461, 453, 459, 57, - 462, 57, 57, 463, 57, 57, 57, 466, 465, 57, - 467, 468, 469, 57, 57, 57, 57, 464, 57, 57, - 477, 473, 475, 474, 57, 57, 479, 57, 472, 57, - 57, 470, 482, 57, 471, 57, 57, 57, 57, 478, - 487, 57, 57, 57, 481, 57, 484, 488, 480, 57, + 57, 442, 57, 430, 439, 428, 57, 438, 443, 432, + 446, 433, 440, 57, 437, 434, 445, 435, 57, 447, + 57, 449, 436, 57, 57, 448, 444, 452, 57, 453, + 57, 57, 57, 454, 57, 57, 57, 450, 57, 57, + 457, 459, 57, 451, 57, 456, 57, 458, 57, 463, + 455, 57, 57, 464, 57, 467, 461, 465, 468, 460, + 466, 462, 57, 57, 57, 469, 57, 57, 470, 57, + 473, 57, 57, 57, 474, 476, 475, 471, 57, 57, + 57, 57, 57, 57, 482, 480, 472, 481, 484, 57, + 485, 477, 479, 57, 483, 57, 487, 57, 478, 57, - 57, 483, 486, 57, 491, 489, 57, 490, 493, 57, - 485, 57, 57, 57, 57, 492, 57, 496, 498, 57, - 495, 494, 57, 57, 57, 497, 57, 57, 499, 57, - 504, 500, 57, 57, 57, 57, 57, 509, 501, 511, - 57, 503, 505, 502, 507, 512, 506, 508, 57, 513, - 57, 515, 510, 514, 57, 516, 57, 57, 57, 520, - 521, 57, 517, 57, 57, 57, 519, 57, 522, 57, - 524, 523, 518, 528, 57, 525, 57, 526, 57, 527, - 57, 57, 57, 57, 536, 57, 537, 57, 532, 529, - 530, 57, 539, 57, 57, 57, 538, 531, 57, 533, + 57, 490, 57, 57, 486, 57, 57, 57, 495, 57, + 57, 57, 492, 57, 489, 496, 57, 57, 488, 57, + 491, 494, 499, 497, 57, 498, 501, 57, 57, 57, + 57, 493, 57, 57, 500, 504, 506, 503, 57, 57, + 57, 57, 502, 57, 57, 57, 57, 57, 505, 512, + 57, 57, 509, 507, 508, 515, 57, 57, 517, 511, + 513, 510, 519, 523, 514, 516, 520, 518, 57, 522, + 521, 57, 57, 524, 57, 57, 57, 528, 529, 525, + 57, 57, 57, 57, 57, 530, 57, 57, 531, 526, + 532, 536, 57, 57, 527, 533, 57, 534, 57, 535, - 57, 57, 535, 541, 543, 542, 545, 534, 544, 57, - 546, 57, 547, 57, 540, 57, 57, 57, 548, 550, - 57, 57, 57, 57, 554, 57, 57, 57, 57, 558, - 57, 57, 549, 559, 57, 57, 551, 57, 57, 57, - 553, 552, 563, 57, 567, 555, 557, 57, 561, 57, - 564, 556, 57, 560, 568, 562, 566, 565, 57, 57, - 57, 571, 57, 569, 57, 575, 576, 570, 57, 574, - 57, 57, 57, 577, 572, 57, 582, 57, 580, 57, - 578, 573, 581, 57, 584, 583, 57, 579, 57, 57, - 57, 57, 57, 57, 57, 592, 57, 57, 57, 57, + 57, 537, 57, 57, 540, 57, 538, 544, 57, 545, + 57, 57, 539, 57, 547, 57, 541, 57, 546, 549, + 57, 543, 550, 548, 57, 542, 57, 554, 57, 555, + 552, 556, 57, 553, 57, 57, 57, 557, 551, 559, + 57, 57, 57, 57, 563, 57, 57, 57, 567, 57, + 57, 57, 568, 57, 558, 57, 57, 57, 57, 57, + 572, 560, 561, 562, 57, 57, 564, 566, 57, 570, + 576, 574, 565, 57, 57, 571, 569, 573, 575, 578, + 577, 57, 579, 581, 57, 57, 57, 584, 585, 57, + 580, 583, 57, 57, 57, 586, 57, 57, 589, 591, - 57, 593, 596, 57, 57, 585, 589, 586, 57, 587, - 588, 591, 594, 597, 590, 57, 599, 600, 595, 603, - 598, 57, 57, 601, 57, 57, 57, 57, 602, 606, - 57, 57, 608, 57, 57, 57, 57, 57, 610, 57, - 604, 605, 57, 57, 609, 615, 57, 607, 617, 57, - 57, 616, 57, 57, 611, 612, 613, 57, 619, 614, - 57, 57, 618, 57, 622, 620, 625, 57, 623, 627, - 57, 57, 626, 57, 621, 57, 628, 624, 57, 57, - 634, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 629, 742, 632, 633, 630, 639, 57, 631, 640, + 57, 587, 590, 57, 588, 582, 57, 57, 593, 57, + 57, 57, 592, 57, 57, 57, 594, 57, 601, 57, + 57, 57, 57, 602, 57, 598, 595, 606, 596, 597, + 600, 605, 57, 603, 608, 599, 57, 609, 57, 57, + 57, 604, 57, 611, 607, 610, 57, 57, 57, 57, + 57, 612, 614, 616, 57, 57, 618, 57, 57, 57, + 57, 619, 620, 613, 615, 57, 57, 627, 617, 57, + 57, 626, 57, 57, 57, 630, 621, 622, 57, 629, + 623, 57, 632, 57, 57, 624, 57, 57, 57, 628, + 57, 635, 636, 637, 57, 638, 633, 57, 57, 631, - 57, 638, 635, 636, 641, 637, 642, 57, 643, 644, - 647, 57, 645, 648, 57, 57, 646, 57, 57, 57, - 57, 57, 654, 57, 656, 57, 57, 657, 57, 57, - 650, 649, 57, 652, 658, 57, 651, 57, 653, 57, - 659, 655, 57, 661, 662, 665, 660, 57, 57, 57, - 57, 666, 57, 667, 668, 57, 57, 672, 663, 669, - 664, 57, 57, 57, 57, 676, 57, 670, 671, 57, - 675, 678, 57, 673, 679, 680, 681, 57, 677, 57, - 57, 674, 682, 57, 683, 57, 57, 685, 687, 684, - 57, 690, 57, 57, 689, 57, 57, 57, 686, 57, + 57, 644, 639, 634, 57, 57, 57, 57, 640, 57, + 57, 57, 642, 643, 57, 57, 57, 641, 649, 652, + 57, 650, 57, 57, 645, 646, 648, 57, 647, 654, + 651, 656, 655, 657, 653, 658, 57, 57, 57, 57, + 660, 57, 57, 659, 57, 664, 666, 667, 57, 57, + 57, 57, 57, 662, 668, 661, 57, 671, 57, 663, + 665, 669, 57, 57, 57, 57, 57, 670, 672, 677, + 57, 678, 57, 57, 57, 673, 57, 679, 674, 680, + 683, 675, 57, 57, 676, 57, 682, 57, 681, 687, + 57, 57, 690, 686, 684, 689, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 699, 57, 57, 57, 691, - 57, 692, 57, 704, 701, 688, 693, 702, 57, 694, - 695, 696, 57, 697, 57, 57, 700, 708, 57, 698, - 707, 710, 57, 57, 57, 57, 703, 57, 706, 711, - 57, 57, 712, 57, 705, 57, 715, 57, 709, 719, - 713, 57, 716, 720, 57, 722, 714, 721, 57, 718, - 57, 723, 717, 724, 57, 727, 57, 57, 725, 57, - 57, 57, 726, 730, 57, 57, 57, 731, 57, 57, - 732, 729, 733, 57, 736, 57, 57, 734, 739, 728, - 57, 735, 57, 57, 738, 737, 57, 741, 743, 57, + 688, 685, 692, 57, 693, 57, 694, 57, 57, 696, + 698, 695, 57, 57, 57, 57, 701, 697, 691, 700, + 57, 57, 57, 57, 57, 702, 57, 703, 57, 57, + 710, 57, 704, 57, 57, 57, 57, 699, 57, 715, + 712, 57, 705, 706, 707, 713, 57, 708, 57, 57, + 719, 711, 57, 718, 709, 57, 721, 717, 57, 57, + 714, 716, 57, 722, 57, 57, 720, 724, 723, 57, + 726, 57, 730, 733, 727, 731, 57, 57, 57, 732, + 57, 725, 735, 57, 57, 729, 739, 57, 734, 57, + 728, 57, 57, 737, 57, 736, 742, 57, 57, 57, - 57, 745, 57, 740, 57, 57, 57, 57, 57, 57, - 744, 753, 57, 746, 747, 57, 748, 749, 755, 57, - 752, 750, 57, 57, 758, 57, 754, 751, 757, 57, - 759, 57, 57, 57, 760, 763, 57, 57, 756, 57, - 57, 764, 57, 57, 57, 57, 57, 766, 57, 761, - 57, 767, 762, 770, 768, 771, 765, 769, 57, 772, - 57, 57, 773, 57, 774, 57, 775, 776, 778, 57, - 830, 57, 777, 57, 779, 781, 57, 780, 782, 783, - 57, 785, 57, 57, 786, 784, 57, 57, 57, 57, - 57, 57, 788, 789, 57, 57, 57, 57, 787, 57, + 57, 57, 57, 57, 743, 744, 741, 745, 746, 738, + 57, 748, 57, 751, 740, 747, 57, 753, 57, 752, + 57, 750, 749, 57, 57, 754, 755, 57, 57, 757, + 57, 57, 57, 57, 57, 57, 57, 765, 57, 57, + 756, 764, 759, 760, 761, 758, 767, 57, 762, 57, + 57, 770, 57, 57, 763, 769, 766, 771, 772, 57, + 57, 775, 57, 57, 57, 768, 57, 776, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 773, 778, 782, + 774, 779, 777, 780, 783, 57, 781, 57, 784, 786, + 57, 785, 57, 787, 790, 57, 788, 791, 57, 57, - 796, 57, 57, 790, 57, 799, 829, 794, 57, 791, - 792, 57, 797, 57, 798, 793, 57, 795, 800, 57, - 801, 57, 803, 57, 802, 804, 57, 805, 806, 57, - 57, 808, 57, 57, 811, 807, 810, 57, 57, 57, - 57, 814, 813, 57, 812, 816, 57, 818, 57, 819, - 57, 57, 809, 57, 821, 57, 815, 57, 57, 57, - 57, 57, 817, 823, 825, 57, 57, 822, 57, 832, - 827, 57, 57, 57, 828, 826, 833, 820, 824, 57, - 831, 57, 835, 57, 834, 837, 57, 57, 836, 57, - 57, 838, 839, 840, 57, 843, 57, 57, 57, 842, + 57, 789, 57, 794, 792, 795, 796, 57, 57, 798, + 57, 793, 57, 799, 800, 57, 57, 797, 57, 57, + 801, 57, 802, 57, 57, 57, 57, 57, 57, 809, + 57, 803, 57, 812, 813, 57, 807, 57, 804, 57, + 805, 810, 57, 811, 806, 824, 808, 814, 57, 57, + 815, 816, 57, 817, 57, 819, 57, 57, 818, 821, + 57, 822, 820, 823, 57, 57, 57, 57, 827, 826, + 57, 825, 829, 57, 831, 57, 832, 57, 57, 57, + 834, 57, 57, 828, 57, 57, 57, 836, 57, 830, + 838, 57, 57, 835, 842, 57, 843, 840, 57, 57, - 57, 57, 844, 846, 57, 57, 848, 57, 849, 847, - 841, 850, 57, 845, 851, 57, 852, 57, 853, 57, - 854, 855, 57, 57, 57, 858, 57, 57, 57, 857, - 860, 57, 859, 862, 57, 57, 861, 57, 57, 57, - 57, 868, 57, 57, 856, 57, 57, 863, 57, 57, - 865, 866, 867, 57, 869, 864, 57, 57, 873, 875, - 57, 872, 874, 57, 877, 878, 871, 876, 57, 870, - 57, 57, 57, 883, 57, 884, 57, 57, 57, 57, - 57, 57, 890, 57, 889, 57, 879, 881, 880, 57, - 57, 882, 885, 893, 57, 886, 895, 57, 887, 888, + 841, 839, 57, 846, 833, 837, 847, 845, 57, 57, + 57, 57, 849, 57, 852, 844, 851, 57, 850, 57, + 848, 57, 853, 57, 57, 857, 57, 57, 57, 856, + 57, 57, 858, 57, 863, 861, 860, 57, 57, 862, + 57, 854, 57, 855, 859, 864, 57, 865, 57, 866, + 57, 867, 57, 868, 869, 57, 57, 872, 57, 57, + 871, 57, 870, 874, 873, 57, 876, 57, 57, 57, + 875, 57, 57, 57, 57, 883, 57, 57, 57, 57, + 877, 57, 57, 879, 880, 881, 884, 878, 57, 890, + 57, 57, 57, 888, 882, 887, 889, 57, 892, 886, - 891, 57, 896, 57, 57, 57, 57, 892, 57, 894, - 899, 900, 57, 898, 57, 57, 57, 902, 57, 903, - 905, 57, 931, 901, 57, 897, 906, 57, 908, 907, - 904, 57, 57, 57, 909, 57, 912, 57, 57, 57, - 57, 910, 911, 916, 57, 57, 913, 57, 57, 917, - 57, 57, 919, 918, 922, 57, 57, 914, 915, 920, - 57, 921, 57, 924, 57, 926, 57, 925, 927, 57, - 928, 923, 929, 930, 57, 57, 57, 57, 57, 932, - 57, 57, 57, 933, 57, 936, 57, 57, 57, 57, - 941, 943, 57, 939, 935, 934, 57, 945, 57, 57, + 57, 57, 57, 57, 885, 57, 898, 57, 899, 893, + 891, 57, 57, 57, 57, 57, 905, 57, 57, 894, + 895, 896, 897, 57, 57, 57, 900, 904, 908, 57, + 57, 901, 57, 906, 902, 903, 910, 57, 57, 911, + 57, 907, 57, 57, 909, 57, 57, 914, 915, 913, + 57, 57, 912, 916, 57, 918, 919, 921, 57, 922, + 57, 917, 57, 57, 57, 57, 57, 923, 925, 920, + 57, 57, 928, 926, 57, 924, 57, 932, 57, 927, + 57, 57, 57, 929, 57, 930, 935, 57, 57, 933, + 934, 938, 57, 936, 57, 931, 57, 940, 57, 57, - 944, 937, 57, 57, 949, 57, 940, 942, 938, 57, - 947, 946, 57, 57, 950, 57, 57, 951, 954, 57, - 57, 57, 57, 57, 948, 958, 961, 57, 952, 955, - 953, 957, 57, 963, 57, 956, 57, 962, 57, 966, - 57, 960, 967, 57, 57, 57, 57, 959, 970, 57, - 971, 57, 57, 57, 974, 57, 964, 968, 973, 57, - 965, 975, 57, 57, 969, 972, 976, 57, 977, 978, - 57, 57, 979, 980, 57, 57, 982, 57, 57, 984, - 981, 57, 57, 983, 57, 985, 986, 57, 987, 988, - 57, 990, 57, 991, 57, 992, 57, 57, 993, 57, + 937, 941, 942, 57, 943, 57, 946, 57, 939, 947, + 57, 57, 944, 945, 57, 57, 57, 57, 948, 57, + 57, 57, 57, 950, 953, 57, 949, 57, 57, 57, + 958, 956, 57, 952, 57, 951, 960, 57, 961, 57, + 954, 962, 57, 57, 57, 957, 959, 955, 963, 966, + 57, 967, 57, 57, 964, 57, 57, 57, 969, 972, + 57, 968, 57, 57, 57, 57, 57, 57, 965, 57, + 976, 971, 975, 973, 970, 979, 57, 57, 981, 57, + 57, 974, 980, 984, 57, 978, 57, 982, 57, 977, + 57, 983, 985, 57, 989, 57, 990, 57, 987, 986, - 989, 57, 57, 57, 57, 999, 57, 57, 57, 57, - 995, 57, 57, 57, 57, 57, 57, 996, 997, 994, - 57, 57, 998, 38, 38, 38, 38, 38, 38, 43, - 43, 43, 43, 43, 43, 47, 47, 47, 47, 47, - 47, 52, 52, 52, 52, 52, 52, 60, 60, 57, - 60, 60, 60, 98, 98, 57, 57, 57, 98, 100, - 100, 57, 57, 100, 105, 105, 57, 57, 57, 105, - 61, 61, 57, 61, 61, 61, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 993, 57, 994, 57, 992, 995, 57, 988, 991, + 57, 997, 57, 57, 998, 996, 999, 57, 57, 57, + 1002, 57, 57, 1000, 57, 57, 57, 1001, 57, 1003, + 1005, 1006, 57, 57, 1008, 57, 57, 1007, 1011, 57, + 1009, 57, 1004, 1012, 57, 57, 1010, 1013, 57, 57, + 1015, 57, 57, 1014, 1019, 1016, 1017, 1018, 57, 57, + 57, 1023, 57, 57, 57, 57, 57, 1020, 57, 57, + 57, 57, 57, 1021, 57, 57, 57, 57, 57, 1022, + 38, 38, 38, 38, 38, 38, 43, 43, 43, 43, + 43, 43, 47, 47, 47, 47, 47, 47, 52, 52, + 52, 52, 52, 52, 60, 60, 57, 60, 60, 60, + 99, 99, 57, 57, 57, 99, 101, 101, 57, 57, + 101, 106, 106, 57, 57, 57, 106, 61, 61, 57, + 61, 61, 61, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 106, 104, 103, - 101, 99, 57, 106, 104, 103, 101, 99, 57, 1000, - 11, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 107, 105, 104, 102, 100, + 57, 107, 105, 104, 102, 100, 57, 1024, 11, 1024, + + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 } ; -static yyconst flex_int16_t yy_chk[2091] = +static yyconst flex_int16_t yy_chk[2139] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -997,229 +1010,235 @@ static yyconst flex_int16_t yy_chk[2091] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, 19, 5, 5, 19, 3, 5, 13, 4, 6, 6, 13, 5, 6, 9, 9, - 9, 31, 1009, 6, 7, 7, 7, 7, 9, 7, - 10, 10, 10, 153, 22, 7, 8, 8, 8, 8, - 10, 8, 31, 16, 23, 16, 16, 8, 16, 153, + 9, 31, 1033, 6, 7, 7, 7, 7, 9, 7, + 10, 10, 10, 155, 22, 7, 8, 8, 8, 8, + 10, 8, 31, 16, 23, 16, 16, 8, 16, 155, 18, 21, 18, 18, 16, 18, 20, 20, 22, 23, 21, 24, 24, 21, 20, 25, 21, 26, 27, 25, - 24, 20, 28, 27, 29, 30, 30, 32, 36, 25, - 30, 46, 26, 33, 46, 34, 32, 28, 33, 29, - 34, 63, 32, 29, 63, 32, 30, 36, 33, 35, - 35, 33, 37, 37, 140, 34, 140, 37, 42, 42, - 51, 64, 51, 51, 64, 51, 65, 35, 55, 55, - 57, 66, 57, 57, 58, 57, 67, 60, 58, 60, - 60, 68, 60, 71, 65, 66, 69, 70, 60, 73, - 72, 69, 74, 73, 67, 76, 75, 74, 77, 75, - 79, 71, 75, 68, 79, 80, 78, 70, 72, 78, + 24, 20, 28, 27, 29, 30, 30, 32, 46, 25, + 30, 46, 26, 33, 68, 34, 32, 28, 33, 29, + 34, 81, 32, 29, 36, 32, 30, 65, 33, 35, + 35, 33, 37, 37, 81, 34, 68, 37, 36, 42, + 42, 55, 55, 36, 1029, 65, 51, 35, 51, 51, + 57, 51, 57, 57, 58, 57, 66, 60, 58, 60, + 60, 63, 60, 64, 63, 67, 64, 69, 60, 70, + 66, 73, 69, 71, 72, 73, 74, 76, 77, 75, + 79, 74, 75, 67, 79, 75, 80, 78, 82, 70, - 82, 81, 80, 78, 76, 83, 75, 82, 84, 86, - 87, 85, 88, 77, 81, 85, 89, 90, 83, 87, - 91, 92, 92, 93, 94, 88, 169, 86, 84, 95, - 97, 89, 96, 116, 95, 169, 90, 116, 91, 99, - 99, 93, 92, 101, 96, 94, 101, 103, 97, 103, - 103, 107, 103, 106, 106, 108, 107, 109, 110, 111, - 112, 114, 115, 108, 111, 112, 114, 118, 117, 120, - 121, 122, 109, 117, 119, 121, 126, 123, 110, 113, - 166, 118, 123, 113, 125, 115, 119, 120, 113, 119, - 125, 122, 166, 113, 124, 124, 127, 126, 128, 113, + 78, 71, 72, 80, 78, 82, 76, 83, 84, 75, + 85, 86, 87, 77, 85, 90, 89, 88, 91, 93, + 83, 87, 92, 92, 94, 95, 97, 96, 84, 86, + 88, 89, 96, 98, 90, 370, 91, 93, 97, 100, + 100, 102, 110, 92, 102, 94, 111, 104, 95, 104, + 104, 98, 104, 107, 107, 108, 109, 110, 112, 370, + 108, 116, 113, 112, 109, 115, 111, 113, 114, 117, + 115, 118, 114, 117, 123, 120, 118, 114, 119, 121, + 122, 124, 114, 127, 116, 122, 124, 120, 114, 114, + 120, 134, 119, 126, 123, 125, 125, 121, 128, 126, - 113, 127, 129, 128, 130, 131, 133, 129, 132, 130, - 134, 136, 131, 135, 132, 137, 138, 139, 141, 143, - 137, 142, 144, 149, 143, 141, 133, 144, 135, 146, - 148, 136, 134, 145, 147, 145, 154, 139, 138, 147, - 142, 149, 143, 150, 155, 148, 150, 155, 146, 151, - 151, 154, 145, 152, 152, 156, 157, 158, 158, 156, - 159, 160, 161, 162, 163, 159, 160, 164, 164, 165, - 157, 167, 173, 168, 167, 173, 170, 163, 171, 174, - 171, 171, 161, 175, 162, 168, 176, 165, 170, 172, - 172, 177, 177, 178, 178, 176, 174, 179, 175, 174, + 129, 130, 131, 128, 127, 129, 130, 131, 132, 135, + 133, 134, 136, 137, 138, 132, 133, 139, 140, 138, + 141, 142, 141, 143, 144, 144, 148, 136, 142, 145, + 146, 135, 149, 137, 145, 146, 150, 149, 140, 139, + 151, 147, 143, 147, 152, 148, 156, 152, 153, 153, + 159, 150, 145, 154, 154, 163, 157, 164, 151, 157, + 147, 156, 158, 165, 159, 161, 158, 160, 160, 162, + 161, 166, 166, 167, 162, 163, 165, 168, 164, 169, + 170, 171, 169, 172, 173, 175, 173, 173, 175, 168, + 171, 167, 170, 174, 174, 172, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 180, 185, 182, 186, 184, - 187, 185, 183, 187, 191, 412, 188, 179, 192, 193, - 190, 181, 194, 191, 193, 195, 412, 197, 186, 187, - 188, 189, 196, 189, 189, 190, 200, 192, 198, 201, - 195, 197, 194, 198, 202, 189, 189, 189, 199, 199, - 203, 199, 196, 204, 203, 201, 200, 206, 205, 207, - 202, 208, 210, 211, 209, 208, 206, 210, 207, 211, - 212, 204, 205, 209, 215, 212, 213, 213, 214, 206, - 216, 217, 221, 214, 222, 216, 215, 218, 218, 220, - 220, 223, 222, 224, 226, 230, 227, 231, 228, 229, + 179, 180, 180, 181, 182, 183, 184, 178, 185, 182, + 186, 184, 177, 176, 187, 186, 176, 185, 188, 187, + 189, 190, 191, 181, 190, 183, 194, 193, 195, 197, + 198, 199, 196, 316, 189, 194, 191, 196, 188, 200, + 190, 192, 193, 192, 192, 198, 203, 195, 204, 197, + 316, 199, 205, 200, 201, 192, 192, 192, 206, 201, + 202, 202, 206, 202, 204, 207, 203, 208, 205, 209, + 210, 211, 213, 212, 214, 211, 218, 213, 209, 210, + 214, 208, 212, 207, 215, 216, 216, 217, 218, 215, + 219, 209, 217, 220, 224, 219, 221, 221, 223, 223, - 223, 227, 217, 221, 229, 224, 228, 232, 232, 233, - 235, 235, 234, 230, 226, 232, 231, 234, 236, 237, - 237, 238, 234, 232, 241, 239, 240, 242, 243, 233, - 245, 246, 242, 232, 244, 245, 238, 239, 247, 247, - 248, 249, 251, 236, 246, 240, 241, 243, 250, 244, - 1005, 250, 248, 252, 252, 251, 249, 253, 253, 254, - 255, 255, 256, 256, 254, 257, 262, 258, 259, 261, - 257, 258, 260, 259, 261, 263, 260, 264, 266, 266, - 263, 265, 267, 999, 265, 268, 262, 267, 268, 265, - 269, 264, 270, 265, 269, 271, 272, 270, 273, 275, + 225, 226, 229, 233, 227, 231, 230, 232, 225, 234, + 226, 230, 232, 231, 220, 224, 227, 235, 235, 236, + 238, 233, 229, 240, 237, 235, 239, 239, 234, 237, + 241, 241, 242, 235, 237, 244, 245, 243, 247, 236, + 238, 246, 250, 235, 248, 249, 246, 242, 240, 243, + 249, 251, 251, 252, 244, 250, 253, 247, 245, 248, + 254, 255, 563, 254, 563, 252, 256, 256, 257, 257, + 258, 253, 259, 259, 255, 258, 260, 260, 261, 266, + 262, 263, 265, 261, 262, 264, 263, 265, 267, 264, + 268, 270, 270, 267, 269, 271, 1023, 269, 272, 266, - 271, 273, 272, 274, 275, 276, 274, 277, 278, 279, - 280, 281, 284, 278, 279, 280, 269, 287, 286, 282, - 281, 277, 282, 276, 283, 288, 285, 293, 283, 283, - 285, 289, 284, 286, 292, 287, 289, 290, 290, 291, - 288, 294, 295, 291, 299, 301, 293, 296, 297, 295, - 292, 298, 296, 297, 294, 300, 298, 302, 305, 301, - 302, 306, 299, 305, 300, 303, 303, 307, 308, 311, - 314, 315, 317, 319, 314, 307, 315, 317, 318, 306, - 320, 320, 321, 308, 322, 322, 311, 316, 323, 321, - 326, 316, 324, 324, 316, 992, 318, 325, 319, 316, + 271, 272, 269, 273, 268, 274, 269, 273, 275, 276, + 274, 277, 279, 275, 277, 276, 278, 279, 280, 278, + 281, 282, 283, 284, 285, 288, 282, 283, 284, 273, + 291, 290, 286, 285, 281, 286, 280, 287, 292, 289, + 1018, 287, 287, 289, 293, 288, 290, 297, 291, 293, + 294, 294, 295, 292, 296, 298, 295, 299, 300, 296, + 304, 301, 302, 297, 303, 300, 301, 302, 305, 303, + 299, 306, 307, 311, 298, 307, 310, 305, 304, 308, + 308, 310, 312, 313, 319, 306, 323, 320, 319, 322, + 312, 311, 320, 326, 322, 324, 325, 325, 313, 321, - 325, 327, 329, 323, 335, 316, 316, 328, 328, 327, - 326, 330, 330, 331, 332, 333, 331, 329, 334, 336, - 332, 337, 335, 333, 336, 341, 334, 339, 337, 338, - 338, 340, 339, 345, 340, 342, 342, 343, 347, 341, - 343, 346, 345, 348, 349, 346, 351, 350, 343, 352, - 353, 354, 348, 350, 352, 356, 355, 347, 349, 358, - 351, 355, 358, 354, 357, 357, 359, 360, 361, 353, - 362, 362, 363, 364, 366, 367, 356, 368, 370, 369, - 360, 372, 373, 370, 359, 371, 371, 363, 361, 991, - 367, 368, 377, 371, 373, 372, 378, 364, 365, 366, + 326, 327, 327, 321, 323, 331, 321, 328, 329, 329, + 330, 321, 1013, 330, 334, 332, 336, 321, 321, 336, + 324, 340, 328, 332, 338, 331, 333, 333, 337, 334, + 335, 335, 338, 339, 337, 341, 342, 343, 343, 340, + 341, 339, 344, 342, 346, 345, 350, 344, 345, 347, + 347, 348, 351, 352, 348, 350, 351, 353, 346, 354, + 356, 355, 348, 357, 359, 358, 353, 355, 357, 358, + 360, 361, 352, 354, 356, 362, 361, 363, 363, 365, + 366, 364, 360, 359, 364, 367, 368, 368, 369, 372, + 374, 375, 373, 366, 376, 1012, 362, 365, 379, 376, - 369, 365, 376, 365, 374, 374, 377, 365, 375, 365, - 376, 371, 383, 375, 365, 378, 379, 379, 381, 382, - 384, 385, 382, 381, 387, 386, 385, 388, 389, 387, - 391, 383, 392, 384, 386, 393, 394, 392, 401, 395, - 393, 394, 389, 396, 396, 391, 397, 388, 395, 399, - 399, 397, 400, 399, 402, 403, 404, 402, 401, 405, - 403, 404, 405, 406, 407, 408, 409, 400, 410, 411, - 413, 409, 411, 410, 414, 413, 415, 415, 408, 416, - 417, 406, 418, 419, 407, 421, 418, 420, 423, 414, - 424, 426, 425, 427, 417, 424, 420, 425, 416, 428, + 377, 377, 378, 369, 374, 367, 371, 373, 377, 371, + 379, 371, 375, 382, 372, 371, 378, 371, 380, 380, + 381, 382, 371, 383, 384, 381, 377, 385, 385, 387, + 388, 389, 390, 388, 387, 391, 393, 383, 392, 394, + 391, 393, 395, 384, 398, 390, 397, 392, 399, 398, + 389, 401, 400, 399, 402, 402, 395, 400, 403, 394, + 401, 397, 406, 403, 405, 405, 407, 408, 405, 409, + 408, 410, 411, 412, 409, 411, 410, 406, 413, 414, + 415, 417, 416, 418, 417, 415, 407, 416, 419, 421, + 420, 412, 414, 419, 418, 420, 422, 422, 413, 423, - 429, 419, 423, 431, 428, 426, 434, 427, 430, 430, - 421, 432, 433, 436, 435, 429, 437, 433, 435, 438, - 432, 431, 439, 440, 441, 434, 443, 442, 436, 447, - 441, 437, 448, 446, 449, 444, 990, 447, 438, 449, - 451, 440, 442, 439, 444, 450, 443, 446, 456, 450, - 450, 452, 448, 451, 453, 453, 452, 454, 455, 457, - 458, 461, 454, 459, 457, 458, 456, 460, 459, 462, - 461, 460, 455, 462, 463, 461, 464, 461, 465, 461, - 466, 467, 468, 469, 470, 470, 471, 471, 466, 463, - 464, 472, 473, 473, 474, 475, 472, 465, 477, 467, + 424, 425, 426, 427, 421, 425, 428, 430, 431, 433, + 432, 434, 427, 431, 424, 432, 1011, 435, 423, 436, + 426, 430, 435, 433, 438, 434, 437, 437, 439, 441, + 440, 428, 442, 445, 436, 440, 442, 439, 443, 444, + 446, 447, 438, 448, 450, 449, 451, 455, 441, 448, + 454, 453, 445, 443, 444, 451, 458, 456, 454, 447, + 449, 446, 456, 459, 450, 453, 457, 455, 459, 458, + 457, 457, 460, 460, 461, 462, 463, 464, 465, 461, + 466, 468, 464, 465, 467, 466, 470, 469, 467, 462, + 468, 469, 471, 472, 463, 468, 473, 468, 474, 468, - 476, 478, 469, 475, 477, 476, 480, 468, 478, 483, - 481, 480, 482, 484, 474, 481, 486, 482, 483, 485, - 485, 487, 488, 489, 489, 490, 491, 495, 492, 494, - 496, 499, 484, 494, 494, 497, 486, 501, 498, 502, - 488, 487, 498, 500, 502, 490, 492, 503, 496, 505, - 499, 491, 506, 495, 503, 497, 501, 500, 504, 507, - 508, 506, 988, 504, 509, 510, 511, 505, 515, 509, - 510, 511, 512, 512, 507, 514, 517, 517, 516, 518, - 514, 508, 516, 516, 519, 518, 520, 515, 521, 519, - 522, 523, 524, 525, 527, 527, 526, 528, 530, 529, + 475, 470, 476, 481, 473, 1008, 471, 477, 477, 478, + 478, 482, 472, 479, 480, 480, 474, 483, 479, 482, + 484, 476, 483, 481, 485, 475, 486, 488, 491, 489, + 485, 490, 488, 486, 489, 492, 490, 491, 484, 493, + 493, 494, 495, 497, 497, 496, 498, 499, 502, 500, + 503, 504, 502, 502, 492, 505, 506, 508, 507, 509, + 506, 494, 495, 496, 513, 510, 498, 500, 515, 504, + 510, 508, 499, 511, 512, 505, 503, 507, 509, 512, + 511, 514, 513, 515, 516, 523, 517, 518, 519, 1006, + 514, 517, 518, 519, 520, 520, 522, 528, 524, 525, - 533, 528, 531, 531, 541, 520, 524, 521, 532, 522, - 523, 526, 529, 532, 525, 542, 534, 535, 530, 541, - 533, 534, 535, 538, 538, 540, 543, 545, 540, 544, - 544, 546, 546, 547, 548, 549, 552, 551, 548, 553, - 542, 543, 557, 554, 547, 554, 555, 545, 556, 561, - 563, 555, 558, 556, 549, 551, 552, 564, 558, 553, - 560, 565, 557, 562, 562, 560, 565, 566, 563, 567, - 567, 568, 566, 569, 561, 570, 568, 564, 571, 572, - 574, 573, 575, 576, 577, 574, 578, 579, 580, 584, - 687, 569, 687, 572, 573, 570, 579, 583, 571, 579, + 525, 522, 524, 524, 523, 516, 526, 529, 527, 530, + 531, 532, 526, 527, 533, 534, 528, 535, 535, 536, + 537, 538, 540, 536, 541, 532, 529, 540, 530, 531, + 534, 539, 539, 537, 542, 533, 549, 543, 550, 542, + 548, 538, 543, 548, 541, 546, 546, 551, 554, 552, + 556, 549, 551, 553, 553, 555, 555, 558, 557, 560, + 561, 556, 557, 550, 552, 562, 564, 565, 554, 566, + 569, 564, 565, 567, 570, 569, 558, 560, 572, 567, + 561, 571, 571, 573, 578, 562, 574, 575, 579, 566, + 577, 574, 575, 576, 576, 577, 572, 580, 581, 570, - 585, 578, 575, 576, 580, 577, 583, 586, 584, 585, - 587, 589, 585, 588, 588, 587, 586, 590, 591, 592, - 593, 594, 594, 595, 597, 607, 603, 598, 599, 597, - 590, 589, 598, 592, 599, 602, 591, 600, 593, 604, - 600, 595, 605, 602, 603, 607, 600, 608, 609, 610, - 611, 608, 612, 609, 610, 622, 613, 614, 604, 611, - 605, 615, 614, 616, 617, 618, 618, 612, 613, 619, - 617, 620, 620, 615, 621, 622, 623, 623, 619, 621, - 629, 616, 624, 624, 625, 625, 626, 628, 630, 626, - 631, 633, 628, 630, 632, 632, 633, 634, 629, 635, + 582, 583, 578, 573, 584, 585, 583, 586, 579, 588, + 592, 587, 581, 582, 589, 593, 1002, 580, 588, 592, + 594, 588, 595, 598, 584, 585, 587, 599, 586, 594, + 589, 595, 594, 596, 593, 597, 597, 600, 596, 601, + 599, 602, 604, 598, 603, 603, 606, 607, 608, 611, + 612, 606, 607, 601, 608, 600, 613, 611, 609, 602, + 604, 609, 614, 615, 617, 618, 619, 609, 612, 618, + 621, 619, 620, 622, 623, 613, 999, 620, 614, 621, + 624, 615, 625, 626, 617, 624, 623, 627, 622, 628, + 628, 629, 631, 627, 625, 630, 630, 631, 632, 639, - 636, 637, 638, 639, 640, 640, 641, 642, 643, 634, - 644, 634, 645, 645, 642, 631, 634, 643, 646, 635, - 636, 637, 647, 638, 652, 649, 641, 650, 651, 639, - 649, 652, 650, 654, 653, 655, 644, 656, 647, 653, - 657, 659, 654, 658, 646, 660, 657, 667, 651, 661, - 655, 665, 658, 662, 661, 663, 656, 662, 662, 660, - 663, 664, 659, 665, 666, 668, 664, 669, 666, 670, - 668, 672, 667, 671, 671, 673, 674, 672, 675, 677, - 673, 670, 674, 679, 679, 680, 685, 675, 684, 669, - 690, 677, 692, 684, 680, 679, 686, 686, 688, 688, + 629, 626, 633, 633, 634, 634, 635, 635, 636, 638, + 640, 636, 641, 644, 638, 640, 643, 639, 632, 642, + 642, 643, 645, 646, 647, 644, 648, 644, 649, 650, + 650, 651, 644, 652, 654, 656, 653, 641, 655, 655, + 652, 657, 645, 646, 647, 653, 661, 648, 659, 662, + 660, 651, 665, 659, 649, 660, 662, 657, 663, 664, + 654, 656, 666, 663, 667, 668, 661, 665, 664, 669, + 667, 670, 671, 673, 668, 672, 674, 671, 673, 672, + 672, 666, 675, 676, 678, 670, 679, 675, 674, 677, + 669, 679, 680, 677, 681, 676, 682, 682, 683, 686, - 691, 691, 693, 685, 694, 695, 696, 697, 700, 699, - 690, 699, 702, 692, 693, 698, 694, 695, 701, 701, - 698, 696, 704, 703, 704, 705, 700, 697, 703, 706, - 705, 707, 708, 712, 706, 709, 710, 711, 702, 713, - 709, 710, 718, 716, 715, 714, 717, 712, 719, 707, - 779, 713, 708, 715, 714, 716, 711, 714, 726, 717, - 720, 722, 718, 723, 719, 725, 720, 722, 724, 724, - 779, 727, 723, 728, 725, 727, 731, 726, 728, 729, - 729, 732, 732, 733, 733, 731, 734, 735, 737, 736, - 738, 739, 735, 736, 740, 741, 742, 744, 734, 745, + 684, 685, 696, 688, 683, 684, 681, 685, 686, 678, + 690, 690, 691, 695, 680, 688, 697, 697, 695, 696, + 701, 691, 690, 698, 703, 698, 699, 699, 702, 702, + 704, 705, 706, 707, 708, 710, 709, 710, 711, 713, + 701, 709, 704, 705, 706, 703, 712, 712, 707, 715, + 714, 715, 716, 717, 708, 714, 711, 716, 717, 718, + 719, 720, 721, 722, 723, 713, 720, 721, 997, 724, + 726, 729, 727, 730, 725, 728, 734, 718, 723, 726, + 719, 724, 722, 725, 727, 735, 725, 731, 728, 730, + 733, 729, 738, 731, 735, 737, 733, 736, 736, 739, - 744, 746, 777, 737, 747, 747, 777, 741, 753, 738, - 739, 750, 745, 986, 746, 740, 760, 742, 748, 748, - 749, 749, 751, 751, 750, 752, 752, 753, 754, 754, - 756, 757, 757, 758, 760, 756, 759, 759, 761, 762, - 763, 763, 762, 765, 761, 764, 764, 766, 766, 767, - 767, 768, 758, 769, 769, 770, 763, 772, 771, 773, - 774, 775, 765, 771, 773, 776, 982, 770, 781, 781, - 775, 780, 784, 791, 776, 774, 782, 768, 772, 786, - 780, 782, 786, 787, 784, 788, 788, 789, 787, 790, - 792, 789, 790, 791, 793, 794, 795, 796, 797, 793, + 740, 734, 746, 739, 737, 740, 741, 741, 743, 744, + 744, 738, 745, 745, 746, 747, 749, 743, 748, 750, + 747, 751, 748, 752, 753, 754, 756, 772, 757, 756, + 758, 749, 759, 759, 760, 760, 753, 762, 750, 765, + 751, 757, 770, 758, 752, 772, 754, 761, 761, 995, + 762, 763, 763, 764, 764, 766, 766, 768, 765, 769, + 769, 770, 768, 771, 771, 773, 774, 775, 775, 774, + 777, 773, 776, 776, 778, 778, 779, 779, 780, 781, + 781, 782, 783, 775, 784, 785, 786, 783, 787, 777, + 785, 788, 790, 782, 789, 792, 790, 787, 793, 789, - 794, 798, 795, 797, 799, 813, 799, 802, 802, 798, - 792, 805, 805, 796, 807, 807, 809, 809, 811, 812, - 812, 813, 814, 811, 815, 817, 817, 820, 821, 815, - 821, 822, 820, 823, 823, 824, 822, 825, 826, 827, - 828, 829, 829, 831, 814, 830, 832, 824, 833, 838, - 826, 827, 828, 834, 830, 825, 840, 835, 834, 836, - 836, 833, 835, 839, 839, 840, 832, 838, 841, 831, - 842, 843, 844, 845, 845, 846, 848, 847, 849, 853, - 846, 854, 855, 855, 854, 856, 841, 843, 842, 857, - 860, 844, 847, 859, 859, 848, 861, 861, 849, 853, + 788, 786, 794, 794, 780, 784, 795, 793, 797, 799, + 802, 795, 799, 800, 802, 792, 801, 801, 800, 803, + 797, 804, 803, 805, 806, 807, 808, 811, 809, 806, + 807, 810, 808, 815, 815, 811, 810, 812, 826, 812, + 827, 804, 994, 805, 809, 818, 818, 820, 820, 822, + 822, 824, 825, 825, 826, 828, 824, 830, 830, 833, + 828, 834, 827, 834, 833, 835, 836, 836, 837, 838, + 835, 839, 840, 841, 842, 843, 843, 844, 845, 846, + 837, 993, 847, 839, 840, 841, 844, 838, 848, 850, + 850, 849, 852, 848, 842, 847, 849, 853, 853, 846, - 856, 863, 863, 864, 865, 866, 867, 857, 869, 860, - 866, 867, 870, 865, 871, 872, 877, 870, 904, 871, - 873, 873, 904, 869, 876, 864, 874, 874, 877, 876, - 872, 878, 879, 880, 878, 881, 881, 882, 884, 885, - 887, 879, 880, 886, 886, 888, 882, 889, 892, 887, - 891, 896, 889, 888, 894, 894, 901, 884, 885, 891, - 907, 892, 897, 897, 898, 899, 899, 898, 900, 900, - 901, 896, 902, 903, 903, 908, 909, 902, 910, 907, - 911, 912, 913, 908, 914, 911, 915, 917, 921, 918, - 917, 919, 919, 914, 910, 909, 920, 921, 924, 925, + 854, 855, 856, 858, 845, 857, 859, 859, 860, 854, + 852, 861, 862, 860, 863, 867, 869, 869, 870, 855, + 856, 857, 858, 871, 868, 874, 861, 868, 873, 873, + 878, 862, 990, 870, 863, 867, 875, 875, 877, 877, + 879, 871, 880, 881, 874, 882, 884, 880, 881, 879, + 885, 886, 878, 882, 887, 885, 886, 888, 888, 889, + 889, 884, 891, 892, 894, 893, 899, 891, 893, 887, + 895, 896, 896, 894, 897, 892, 900, 901, 901, 895, + 902, 904, 903, 897, 906, 899, 904, 907, 911, 902, + 903, 909, 909, 906, 916, 900, 912, 912, 913, 917, - 920, 912, 923, 928, 928, 929, 915, 918, 913, 932, - 924, 923, 931, 935, 929, 933, 936, 931, 934, 934, - 938, 939, 940, 937, 925, 938, 941, 941, 932, 935, - 933, 937, 942, 944, 944, 936, 945, 942, 946, 947, - 947, 940, 948, 948, 950, 949, 953, 939, 951, 951, - 952, 952, 980, 955, 956, 956, 945, 949, 955, 972, - 946, 957, 957, 959, 950, 953, 958, 958, 959, 960, - 960, 962, 962, 964, 964, 965, 968, 968, 969, 972, - 965, 973, 983, 969, 979, 973, 977, 977, 979, 981, - 981, 984, 984, 985, 985, 987, 987, 989, 989, 993, + 907, 913, 914, 914, 915, 915, 918, 923, 911, 919, + 919, 918, 916, 917, 920, 924, 925, 926, 920, 927, + 928, 929, 930, 924, 927, 931, 923, 933, 934, 989, + 933, 930, 937, 926, 936, 925, 935, 935, 936, 939, + 928, 937, 940, 941, 944, 931, 934, 929, 939, 944, + 945, 945, 946, 948, 940, 949, 950, 952, 948, 951, + 951, 946, 953, 956, 954, 955, 957, 962, 941, 963, + 955, 950, 954, 952, 949, 958, 958, 959, 961, 961, + 966, 953, 959, 964, 964, 957, 967, 962, 968, 956, + 971, 963, 965, 965, 969, 969, 970, 970, 967, 966, - 983, 994, 995, 997, 996, 998, 998, 978, 976, 975, - 994, 974, 971, 970, 967, 966, 963, 995, 996, 993, - 961, 954, 997, 1001, 1001, 1001, 1001, 1001, 1001, 1002, - 1002, 1002, 1002, 1002, 1002, 1003, 1003, 1003, 1003, 1003, - 1003, 1004, 1004, 1004, 1004, 1004, 1004, 1006, 1006, 943, - 1006, 1006, 1006, 1007, 1007, 930, 927, 926, 1007, 1008, - 1008, 922, 916, 1008, 1010, 1010, 906, 905, 895, 1010, - 1011, 1011, 893, 1011, 1011, 1011, 890, 883, 875, 868, - 862, 858, 852, 851, 850, 837, 819, 818, 816, 810, - 808, 806, 804, 803, 801, 800, 785, 783, 778, 755, + 973, 974, 974, 975, 975, 973, 976, 976, 968, 971, + 977, 978, 978, 980, 980, 977, 982, 982, 983, 986, + 987, 987, 991, 983, 988, 1001, 992, 986, 1003, 988, + 992, 996, 996, 998, 1000, 1000, 1015, 998, 1004, 1004, + 1001, 1009, 991, 1005, 1005, 1017, 1003, 1007, 1007, 1010, + 1010, 1014, 1019, 1009, 1017, 1014, 1015, 1016, 1016, 1020, + 1021, 1022, 1022, 985, 984, 981, 979, 1019, 972, 960, + 947, 943, 942, 1020, 938, 932, 922, 921, 910, 1021, + 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1026, 1026, 1026, + 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028, - 743, 730, 721, 689, 683, 682, 681, 678, 676, 648, - 627, 606, 601, 596, 582, 581, 559, 550, 539, 537, - 536, 513, 493, 479, 445, 422, 398, 390, 380, 344, - 313, 312, 310, 309, 304, 225, 219, 105, 104, 102, - 100, 98, 56, 52, 48, 47, 43, 38, 12, 11, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 + 1028, 1028, 1028, 1028, 1030, 1030, 908, 1030, 1030, 1030, + 1031, 1031, 905, 898, 890, 1031, 1032, 1032, 883, 876, + 1032, 1034, 1034, 872, 866, 865, 1034, 1035, 1035, 864, + 1035, 1035, 1035, 851, 832, 831, 829, 823, 821, 819, + 817, 816, 814, 813, 798, 796, 791, 767, 755, 742, + 732, 700, 694, 693, 692, 689, 687, 658, 637, 616, + 610, 605, 591, 590, 568, 559, 547, 545, 544, 521, + 501, 487, 452, 429, 404, 396, 386, 349, 318, 317, + 315, 314, 309, 228, 222, 106, 105, 103, 101, 99, + 56, 52, 48, 47, 43, 38, 12, 11, 1024, 1024, + + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024 } ; static yy_state_type yy_last_accepting_state; @@ -1331,7 +1350,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1334 "" +#line 1353 "" #define INITIAL 0 #define quotedstring 1 @@ -1517,7 +1536,7 @@ YY_DECL #line 107 "util/configlexer.lex" -#line 1520 "" +#line 1539 "" if ( !(yy_init) ) { @@ -1576,13 +1595,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 >= 1001 ) + if ( yy_current_state >= 1025 ) 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] != 2051 ); + while ( yy_base[yy_current_state] != 2099 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1834,266 +1853,271 @@ YY_RULE_SETUP case 46: YY_RULE_SETUP #line 153 "util/configlexer.lex" -{ YDOUT; return VAR_PRIVATE_ADDRESS;} +{ YDOUT; return VAR_UNWANTED_REPLY_THRESHOLD;} YY_BREAK case 47: YY_RULE_SETUP #line 154 "util/configlexer.lex" -{ YDOUT; return VAR_PRIVATE_DOMAIN;} +{ YDOUT; return VAR_PRIVATE_ADDRESS;} YY_BREAK case 48: YY_RULE_SETUP #line 155 "util/configlexer.lex" -{ YDOUT; return VAR_STUB_ZONE;} +{ YDOUT; return VAR_PRIVATE_DOMAIN;} YY_BREAK case 49: YY_RULE_SETUP #line 156 "util/configlexer.lex" -{ YDOUT; return VAR_NAME;} +{ YDOUT; return VAR_STUB_ZONE;} YY_BREAK case 50: YY_RULE_SETUP #line 157 "util/configlexer.lex" -{ YDOUT; return VAR_STUB_ADDR;} +{ YDOUT; return VAR_NAME;} YY_BREAK case 51: YY_RULE_SETUP #line 158 "util/configlexer.lex" -{ YDOUT; return VAR_STUB_HOST;} +{ YDOUT; return VAR_STUB_ADDR;} YY_BREAK case 52: YY_RULE_SETUP #line 159 "util/configlexer.lex" -{ YDOUT; return VAR_STUB_PRIME;} +{ YDOUT; return VAR_STUB_HOST;} YY_BREAK case 53: YY_RULE_SETUP #line 160 "util/configlexer.lex" -{ YDOUT; return VAR_FORWARD_ZONE;} +{ YDOUT; return VAR_STUB_PRIME;} YY_BREAK case 54: YY_RULE_SETUP #line 161 "util/configlexer.lex" -{ YDOUT; return VAR_FORWARD_ADDR;} +{ YDOUT; return VAR_FORWARD_ZONE;} YY_BREAK case 55: YY_RULE_SETUP #line 162 "util/configlexer.lex" -{ YDOUT; return VAR_FORWARD_HOST;} +{ YDOUT; return VAR_FORWARD_ADDR;} YY_BREAK case 56: YY_RULE_SETUP #line 163 "util/configlexer.lex" -{ YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;} +{ YDOUT; return VAR_FORWARD_HOST;} YY_BREAK case 57: YY_RULE_SETUP #line 164 "util/configlexer.lex" -{ YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;} +{ YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;} YY_BREAK case 58: YY_RULE_SETUP #line 165 "util/configlexer.lex" -{ YDOUT; return VAR_ACCESS_CONTROL;} +{ YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;} YY_BREAK case 59: YY_RULE_SETUP #line 166 "util/configlexer.lex" -{ YDOUT; return VAR_HIDE_IDENTITY;} +{ YDOUT; return VAR_ACCESS_CONTROL;} YY_BREAK case 60: YY_RULE_SETUP #line 167 "util/configlexer.lex" -{ YDOUT; return VAR_HIDE_VERSION;} +{ YDOUT; return VAR_HIDE_IDENTITY;} YY_BREAK case 61: YY_RULE_SETUP #line 168 "util/configlexer.lex" -{ YDOUT; return VAR_IDENTITY;} +{ YDOUT; return VAR_HIDE_VERSION;} YY_BREAK case 62: YY_RULE_SETUP #line 169 "util/configlexer.lex" -{ YDOUT; return VAR_VERSION;} +{ YDOUT; return VAR_IDENTITY;} YY_BREAK case 63: YY_RULE_SETUP #line 170 "util/configlexer.lex" -{ YDOUT; return VAR_MODULE_CONF;} +{ YDOUT; return VAR_VERSION;} YY_BREAK case 64: YY_RULE_SETUP #line 171 "util/configlexer.lex" -{ YDOUT; return VAR_DLV_ANCHOR;} +{ YDOUT; return VAR_MODULE_CONF;} YY_BREAK case 65: YY_RULE_SETUP #line 172 "util/configlexer.lex" -{ YDOUT; return VAR_DLV_ANCHOR_FILE;} +{ YDOUT; return VAR_DLV_ANCHOR;} YY_BREAK case 66: YY_RULE_SETUP #line 173 "util/configlexer.lex" -{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} +{ YDOUT; return VAR_DLV_ANCHOR_FILE;} YY_BREAK case 67: YY_RULE_SETUP #line 174 "util/configlexer.lex" -{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} +{ YDOUT; return VAR_TRUST_ANCHOR_FILE;} YY_BREAK case 68: YY_RULE_SETUP #line 175 "util/configlexer.lex" -{ YDOUT; return VAR_TRUST_ANCHOR;} +{ YDOUT; return VAR_TRUSTED_KEYS_FILE;} YY_BREAK case 69: YY_RULE_SETUP #line 176 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} +{ YDOUT; return VAR_TRUST_ANCHOR;} YY_BREAK case 70: YY_RULE_SETUP #line 177 "util/configlexer.lex" -{ YDOUT; return VAR_BOGUS_TTL;} +{ YDOUT; return VAR_VAL_OVERRIDE_DATE;} YY_BREAK case 71: YY_RULE_SETUP #line 178 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} +{ YDOUT; return VAR_BOGUS_TTL;} YY_BREAK case 72: YY_RULE_SETUP #line 179 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} +{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} YY_BREAK case 73: YY_RULE_SETUP #line 180 "util/configlexer.lex" -{ YDOUT; return VAR_KEY_CACHE_SIZE;} +{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;} YY_BREAK case 74: YY_RULE_SETUP #line 181 "util/configlexer.lex" -{ YDOUT; return VAR_KEY_CACHE_SLABS;} +{ YDOUT; return VAR_KEY_CACHE_SIZE;} YY_BREAK case 75: YY_RULE_SETUP #line 182 "util/configlexer.lex" -{ YDOUT; return VAR_NEG_CACHE_SIZE;} +{ YDOUT; return VAR_KEY_CACHE_SLABS;} YY_BREAK case 76: YY_RULE_SETUP #line 183 "util/configlexer.lex" -{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} +{ YDOUT; return VAR_NEG_CACHE_SIZE;} YY_BREAK case 77: YY_RULE_SETUP #line 184 "util/configlexer.lex" -{ YDOUT; return VAR_USE_SYSLOG;} +{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} YY_BREAK case 78: YY_RULE_SETUP #line 185 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_ZONE;} +{ YDOUT; return VAR_USE_SYSLOG;} YY_BREAK case 79: YY_RULE_SETUP #line 186 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_DATA;} +{ YDOUT; return VAR_LOCAL_ZONE;} YY_BREAK case 80: YY_RULE_SETUP #line 187 "util/configlexer.lex" -{ YDOUT; return VAR_LOCAL_DATA_PTR;} +{ YDOUT; return VAR_LOCAL_DATA;} YY_BREAK case 81: YY_RULE_SETUP #line 188 "util/configlexer.lex" -{ YDOUT; return VAR_STATISTICS_INTERVAL;} +{ YDOUT; return VAR_LOCAL_DATA_PTR;} YY_BREAK case 82: YY_RULE_SETUP #line 189 "util/configlexer.lex" -{ YDOUT; return VAR_STATISTICS_CUMULATIVE;} +{ YDOUT; return VAR_STATISTICS_INTERVAL;} YY_BREAK case 83: YY_RULE_SETUP #line 190 "util/configlexer.lex" -{ YDOUT; return VAR_EXTENDED_STATISTICS;} +{ YDOUT; return VAR_STATISTICS_CUMULATIVE;} YY_BREAK case 84: YY_RULE_SETUP #line 191 "util/configlexer.lex" -{ YDOUT; return VAR_REMOTE_CONTROL; } +{ YDOUT; return VAR_EXTENDED_STATISTICS;} YY_BREAK case 85: YY_RULE_SETUP #line 192 "util/configlexer.lex" -{ YDOUT; return VAR_CONTROL_ENABLE; } +{ YDOUT; return VAR_REMOTE_CONTROL; } YY_BREAK case 86: YY_RULE_SETUP #line 193 "util/configlexer.lex" -{ YDOUT; return VAR_CONTROL_INTERFACE; } +{ YDOUT; return VAR_CONTROL_ENABLE; } YY_BREAK case 87: YY_RULE_SETUP #line 194 "util/configlexer.lex" -{ YDOUT; return VAR_CONTROL_PORT; } +{ YDOUT; return VAR_CONTROL_INTERFACE; } YY_BREAK case 88: YY_RULE_SETUP #line 195 "util/configlexer.lex" -{ YDOUT; return VAR_SERVER_KEY_FILE; } +{ YDOUT; return VAR_CONTROL_PORT; } YY_BREAK case 89: YY_RULE_SETUP #line 196 "util/configlexer.lex" -{ YDOUT; return VAR_SERVER_CERT_FILE; } +{ YDOUT; return VAR_SERVER_KEY_FILE; } YY_BREAK case 90: YY_RULE_SETUP #line 197 "util/configlexer.lex" -{ YDOUT; return VAR_CONTROL_KEY_FILE; } +{ YDOUT; return VAR_SERVER_CERT_FILE; } YY_BREAK case 91: YY_RULE_SETUP #line 198 "util/configlexer.lex" -{ YDOUT; return VAR_CONTROL_CERT_FILE; } +{ YDOUT; return VAR_CONTROL_KEY_FILE; } YY_BREAK case 92: -/* rule 92 can match eol */ YY_RULE_SETUP #line 199 "util/configlexer.lex" +{ YDOUT; return VAR_CONTROL_CERT_FILE; } + YY_BREAK +case 93: +/* rule 93 can match eol */ +YY_RULE_SETUP +#line 200 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 93: +case 94: YY_RULE_SETUP -#line 202 "util/configlexer.lex" +#line 203 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 203 "util/configlexer.lex" +#line 204 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 94: -YY_RULE_SETUP -#line 207 "util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 95: -/* rule 95 can match eol */ YY_RULE_SETUP #line 208 "util/configlexer.lex" -{ cfg_parser->line++; yymore(); } +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 96: +/* rule 96 can match eol */ YY_RULE_SETUP #line 209 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 210 "util/configlexer.lex" { LEXOUT(("QE ")); BEGIN(INITIAL); @@ -2105,32 +2129,32 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 97: +case 98: YY_RULE_SETUP -#line 220 "util/configlexer.lex" +#line 221 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 221 "util/configlexer.lex" +#line 222 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 98: -YY_RULE_SETUP -#line 225 "util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 99: -/* rule 99 can match eol */ YY_RULE_SETUP #line 226 "util/configlexer.lex" -{ cfg_parser->line++; yymore(); } +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 100: +/* rule 100 can match eol */ YY_RULE_SETUP #line 227 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 228 "util/configlexer.lex" { LEXOUT(("SQE ")); BEGIN(INITIAL); @@ -2142,37 +2166,37 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 101: +case 102: YY_RULE_SETUP -#line 238 "util/configlexer.lex" +#line 239 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 239 "util/configlexer.lex" +#line 240 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(INITIAL); } YY_BREAK -case 102: -YY_RULE_SETUP -#line 243 "util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 103: -/* rule 103 can match eol */ YY_RULE_SETUP #line 244 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 104: +/* rule 104 can match eol */ YY_RULE_SETUP #line 245 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 105: YY_RULE_SETUP #line 246 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 247 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -2180,26 +2204,26 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 251 "util/configlexer.lex" +#line 252 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 106: -YY_RULE_SETUP -#line 255 "util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 107: -/* rule 107 can match eol */ YY_RULE_SETUP #line 256 "util/configlexer.lex" -{ cfg_parser->line++; yymore(); } +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK case 108: +/* rule 108 can match eol */ YY_RULE_SETUP #line 257 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 258 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -2208,7 +2232,7 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 263 "util/configlexer.lex" +#line 264 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -2219,18 +2243,18 @@ case YY_STATE_EOF(INITIAL): } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 273 "util/configlexer.lex" +#line 274 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); yylval.str = strdup(yytext); return STRING; } YY_BREAK -case 110: +case 111: YY_RULE_SETUP -#line 276 "util/configlexer.lex" +#line 277 "util/configlexer.lex" ECHO; YY_BREAK -#line 2233 "" +#line 2257 "" case YY_END_OF_BUFFER: { @@ -2520,7 +2544,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 >= 1001 ) + if ( yy_current_state >= 1025 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2548,11 +2572,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 >= 1001 ) + if ( yy_current_state >= 1025 ) 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 == 1000); + yy_is_jam = (yy_current_state == 1024); return yy_is_jam ? 0 : yy_current_state; } @@ -3189,7 +3213,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 276 "util/configlexer.lex" +#line 277 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 5b9b20436..35e81465f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -150,6 +150,7 @@ harden-glue{COLON} { YDOUT; return VAR_HARDEN_GLUE;} harden-dnssec-stripped{COLON} { YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;} harden-referral-path{COLON} { YDOUT; return VAR_HARDEN_REFERRAL_PATH;} use-caps-for-id{COLON} { YDOUT; return VAR_USE_CAPS_FOR_ID;} +unwanted-reply-threshold{COLON} { YDOUT; return VAR_UNWANTED_REPLY_THRESHOLD;} private-address{COLON} { YDOUT; return VAR_PRIVATE_ADDRESS;} private-domain{COLON} { YDOUT; return VAR_PRIVATE_DOMAIN;} stub-zone{COLON} { YDOUT; return VAR_STUB_ZONE;} diff --git a/util/configparser.c b/util/configparser.c index 79a43b9db..fc7621b58 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -162,7 +162,8 @@ VAR_EXTENDED_STATISTICS = 351, VAR_LOCAL_DATA_PTR = 352, VAR_JOSTLE_TIMEOUT = 353, - VAR_STUB_PRIME = 354 + VAR_STUB_PRIME = 354, + VAR_UNWANTED_REPLY_THRESHOLD = 355 }; #endif /* Tokens. */ @@ -263,6 +264,7 @@ #define VAR_LOCAL_DATA_PTR 352 #define VAR_JOSTLE_TIMEOUT 353 #define VAR_STUB_PRIME 354 +#define VAR_UNWANTED_REPLY_THRESHOLD 355 @@ -321,7 +323,7 @@ typedef union YYSTYPE char* str; } /* Line 187 of yacc.c. */ -#line 325 "util/configparser.c" +#line 327 "util/configparser.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -334,7 +336,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 338 "util/configparser.c" +#line 340 "util/configparser.c" #ifdef short # undef short @@ -549,20 +551,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 179 +#define YYLAST 180 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 100 +#define YYNTOKENS 101 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 101 +#define YYNNTS 102 /* YYNRULES -- Number of rules. */ -#define YYNRULES 191 +#define YYNRULES 193 /* YYNRULES -- Number of states. */ -#define YYNSTATES 280 +#define YYNSTATES 283 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 354 +#define YYMAXUTOK 355 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -605,7 +607,7 @@ static const yytype_uint8 yytranslate[] = 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99 + 95, 96, 97, 98, 99, 100 }; #if YYDEBUG @@ -621,71 +623,71 @@ static const yytype_uint16 yyprhs[] = 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, - 163, 165, 167, 169, 171, 174, 175, 177, 179, 181, - 183, 185, 188, 189, 191, 193, 195, 198, 201, 204, - 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, - 237, 240, 243, 246, 249, 252, 255, 258, 261, 264, - 267, 270, 273, 276, 279, 282, 285, 288, 291, 294, - 297, 300, 303, 306, 309, 312, 315, 318, 321, 324, - 327, 330, 333, 336, 339, 342, 345, 348, 351, 354, - 357, 360, 363, 366, 369, 373, 376, 379, 382, 385, - 388, 391, 394, 397, 400, 403, 407, 410, 413, 416, - 419, 422, 425, 428, 431, 434, 436, 439, 440, 442, - 444, 446, 448, 450, 452, 454, 457, 460, 463, 466, - 469, 472 + 163, 165, 167, 169, 171, 173, 176, 177, 179, 181, + 183, 185, 187, 190, 191, 193, 195, 197, 200, 203, + 206, 209, 212, 215, 218, 221, 224, 227, 230, 233, + 236, 239, 242, 245, 248, 251, 254, 257, 260, 263, + 266, 269, 272, 275, 278, 281, 284, 287, 290, 293, + 296, 299, 302, 305, 308, 311, 314, 317, 320, 323, + 326, 329, 332, 335, 338, 341, 344, 347, 350, 353, + 356, 359, 362, 365, 368, 371, 374, 378, 381, 384, + 387, 390, 393, 396, 399, 402, 405, 408, 412, 415, + 418, 421, 424, 427, 430, 433, 436, 439, 441, 444, + 445, 447, 449, 451, 453, 455, 457, 459, 462, 465, + 468, 471, 474, 477 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 101, 0, -1, -1, 101, 102, -1, 103, 104, -1, - 106, 107, -1, 109, 110, -1, 191, 192, -1, 11, - -1, 104, 105, -1, -1, 112, -1, 113, -1, 117, - -1, 120, -1, 126, -1, 127, -1, 128, -1, 129, - -1, 118, -1, 132, -1, 133, -1, 134, -1, 135, - -1, 136, -1, 148, -1, 149, -1, 150, -1, 152, - -1, 153, -1, 123, -1, 154, -1, 155, -1, 158, - -1, 156, -1, 157, -1, 159, -1, 160, -1, 161, - -1, 168, -1, 143, -1, 144, -1, 145, -1, 146, - -1, 162, -1, 171, -1, 140, -1, 142, -1, 172, - -1, 174, -1, 175, -1, 176, -1, 124, -1, 147, - -1, 178, -1, 179, -1, 141, -1, 177, -1, 131, - -1, 119, -1, 137, -1, 169, -1, 173, -1, 163, - -1, 170, -1, 181, -1, 182, -1, 125, -1, 114, - -1, 130, -1, 165, -1, 115, -1, 121, -1, 122, - -1, 138, -1, 139, -1, 180, -1, 164, -1, 166, - -1, 167, -1, 116, -1, 183, -1, 151, -1, 38, - -1, 107, 108, -1, -1, 184, -1, 185, -1, 186, - -1, 187, -1, 44, -1, 110, 111, -1, -1, 188, - -1, 189, -1, 190, -1, 13, 10, -1, 12, 10, - -1, 76, 10, -1, 79, 10, -1, 96, 10, -1, - 14, 10, -1, 16, 10, -1, 67, 10, -1, 15, - 10, -1, 80, 10, -1, 81, 10, -1, 31, 10, - -1, 60, 10, -1, 75, 10, -1, 17, 10, -1, - 18, 10, -1, 19, 10, -1, 20, 10, -1, 77, - 10, -1, 66, 10, -1, 21, 10, -1, 22, 10, - -1, 23, 10, -1, 24, 10, -1, 25, 10, -1, - 68, 10, -1, 82, 10, -1, 83, 10, -1, 54, - 10, -1, 64, 10, -1, 55, 10, -1, 48, 10, - -1, 49, 10, -1, 50, 10, -1, 51, 10, -1, - 61, 10, -1, 26, 10, -1, 27, 10, -1, 28, - 10, -1, 98, 10, -1, 29, 10, -1, 30, 10, - -1, 32, 10, -1, 33, 10, -1, 35, 10, -1, - 36, 10, -1, 34, 10, -1, 41, 10, -1, 42, - 10, -1, 43, 10, -1, 52, 10, -1, 71, 10, - -1, 85, 10, -1, 78, 10, -1, 86, 10, -1, - 87, 10, -1, 47, 10, -1, 69, 10, -1, 72, - 10, 10, -1, 53, 10, -1, 56, 10, -1, 70, - 10, -1, 57, 10, -1, 58, 10, -1, 59, 10, - -1, 65, 10, -1, 62, 10, -1, 63, 10, -1, - 84, 10, -1, 73, 10, 10, -1, 74, 10, -1, - 97, 10, -1, 37, 10, -1, 39, 10, -1, 40, - 10, -1, 99, 10, -1, 37, 10, -1, 45, 10, - -1, 46, 10, -1, 88, -1, 192, 193, -1, -1, - 194, -1, 196, -1, 195, -1, 197, -1, 198, -1, - 199, -1, 200, -1, 89, 10, -1, 91, 10, -1, - 90, 10, -1, 92, 10, -1, 93, 10, -1, 94, - 10, -1, 95, 10, -1 + 102, 0, -1, -1, 102, 103, -1, 104, 105, -1, + 107, 108, -1, 110, 111, -1, 193, 194, -1, 11, + -1, 105, 106, -1, -1, 113, -1, 114, -1, 118, + -1, 121, -1, 127, -1, 128, -1, 129, -1, 130, + -1, 119, -1, 133, -1, 134, -1, 135, -1, 136, + -1, 137, -1, 149, -1, 150, -1, 151, -1, 153, + -1, 154, -1, 124, -1, 155, -1, 156, -1, 159, + -1, 157, -1, 158, -1, 160, -1, 161, -1, 162, + -1, 170, -1, 144, -1, 145, -1, 146, -1, 147, + -1, 163, -1, 173, -1, 141, -1, 143, -1, 174, + -1, 176, -1, 177, -1, 178, -1, 125, -1, 148, + -1, 180, -1, 181, -1, 142, -1, 179, -1, 132, + -1, 120, -1, 138, -1, 171, -1, 175, -1, 164, + -1, 172, -1, 183, -1, 184, -1, 126, -1, 115, + -1, 131, -1, 166, -1, 116, -1, 122, -1, 123, + -1, 139, -1, 140, -1, 182, -1, 165, -1, 167, + -1, 168, -1, 117, -1, 185, -1, 152, -1, 169, + -1, 38, -1, 108, 109, -1, -1, 186, -1, 187, + -1, 188, -1, 189, -1, 44, -1, 111, 112, -1, + -1, 190, -1, 191, -1, 192, -1, 13, 10, -1, + 12, 10, -1, 76, 10, -1, 79, 10, -1, 96, + 10, -1, 14, 10, -1, 16, 10, -1, 67, 10, + -1, 15, 10, -1, 80, 10, -1, 81, 10, -1, + 31, 10, -1, 60, 10, -1, 75, 10, -1, 17, + 10, -1, 18, 10, -1, 19, 10, -1, 20, 10, + -1, 77, 10, -1, 66, 10, -1, 21, 10, -1, + 22, 10, -1, 23, 10, -1, 24, 10, -1, 25, + 10, -1, 68, 10, -1, 82, 10, -1, 83, 10, + -1, 54, 10, -1, 64, 10, -1, 55, 10, -1, + 48, 10, -1, 49, 10, -1, 50, 10, -1, 51, + 10, -1, 61, 10, -1, 26, 10, -1, 27, 10, + -1, 28, 10, -1, 98, 10, -1, 29, 10, -1, + 30, 10, -1, 32, 10, -1, 33, 10, -1, 35, + 10, -1, 36, 10, -1, 34, 10, -1, 41, 10, + -1, 42, 10, -1, 43, 10, -1, 52, 10, -1, + 71, 10, -1, 85, 10, -1, 78, 10, -1, 86, + 10, -1, 87, 10, -1, 100, 10, -1, 47, 10, + -1, 69, 10, -1, 72, 10, 10, -1, 53, 10, + -1, 56, 10, -1, 70, 10, -1, 57, 10, -1, + 58, 10, -1, 59, 10, -1, 65, 10, -1, 62, + 10, -1, 63, 10, -1, 84, 10, -1, 73, 10, + 10, -1, 74, 10, -1, 97, 10, -1, 37, 10, + -1, 39, 10, -1, 40, 10, -1, 99, 10, -1, + 37, 10, -1, 45, 10, -1, 46, 10, -1, 88, + -1, 194, 195, -1, -1, 196, -1, 198, -1, 197, + -1, 199, -1, 200, -1, 201, -1, 202, -1, 89, + 10, -1, 91, 10, -1, 90, 10, -1, 92, 10, + -1, 93, 10, -1, 94, 10, -1, 95, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -699,18 +701,18 @@ static const yytype_uint16 yyrline[] = 131, 131, 132, 132, 133, 133, 134, 134, 135, 135, 135, 136, 136, 137, 137, 138, 138, 138, 139, 139, 140, 140, 141, 141, 142, 142, 142, 143, 143, 144, - 144, 145, 145, 147, 159, 160, 161, 161, 161, 161, - 163, 175, 176, 177, 177, 177, 179, 188, 197, 208, - 217, 226, 235, 248, 263, 272, 281, 290, 299, 308, - 317, 326, 335, 344, 353, 362, 376, 383, 390, 397, - 405, 412, 419, 426, 433, 441, 449, 456, 465, 474, - 481, 488, 499, 507, 520, 529, 538, 546, 559, 568, - 577, 586, 595, 608, 615, 625, 635, 645, 655, 665, - 675, 682, 689, 696, 706, 720, 727, 745, 754, 763, - 773, 783, 790, 798, 811, 819, 838, 845, 860, 867, - 874, 881, 891, 898, 905, 912, 917, 918, 919, 919, - 919, 920, 920, 920, 921, 923, 933, 942, 949, 956, - 963, 970 + 144, 145, 145, 146, 148, 160, 161, 162, 162, 162, + 162, 164, 176, 177, 178, 178, 178, 180, 189, 198, + 209, 218, 227, 236, 249, 264, 273, 282, 291, 300, + 309, 318, 327, 336, 345, 354, 363, 377, 384, 391, + 398, 406, 413, 420, 427, 434, 442, 450, 457, 466, + 475, 482, 489, 500, 508, 521, 530, 539, 547, 560, + 569, 578, 587, 596, 609, 616, 626, 636, 646, 656, + 666, 676, 683, 690, 699, 706, 716, 730, 737, 755, + 764, 773, 783, 793, 800, 808, 821, 829, 848, 855, + 870, 877, 884, 891, 901, 908, 915, 922, 927, 928, + 929, 929, 929, 930, 930, 930, 931, 933, 943, 952, + 959, 966, 973, 980 }; #endif @@ -750,17 +752,17 @@ static const char *const yytname[] = "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE", "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", - "VAR_STUB_PRIME", "$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_do_daemonize", + "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "$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_do_daemonize", "server_use_syslog", "server_chroot", "server_username", "server_directory", "server_logfile", "server_pidfile", "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", @@ -777,18 +779,18 @@ static const char *const yytname[] = "server_harden_glue", "server_harden_dnssec_stripped", "server_harden_referral_path", "server_use_caps_for_id", "server_private_address", "server_private_domain", - "server_do_not_query_address", "server_do_not_query_localhost", - "server_access_control", "server_module_conf", - "server_val_override_date", "server_cache_max_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_val_nsec3_keysize_iterations", "server_key_cache_size", - "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", - "server_local_data", "server_local_data_ptr", "stub_name", "stub_host", - "stub_addr", "stub_prime", "forward_name", "forward_host", - "forward_addr", "rcstart", "contents_rc", "content_rc", - "rc_control_enable", "rc_control_port", "rc_control_interface", - "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", - "rc_control_cert_file", 0 + "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_cache_max_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_val_nsec3_keysize_iterations", + "server_key_cache_size", "server_key_cache_slabs", + "server_neg_cache_size", "server_local_zone", "server_local_data", + "server_local_data_ptr", "stub_name", "stub_host", "stub_addr", + "stub_prime", "forward_name", "forward_host", "forward_addr", "rcstart", + "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", + "rc_control_interface", "rc_server_key_file", "rc_server_cert_file", + "rc_control_key_file", "rc_control_cert_file", 0 }; #endif @@ -806,23 +808,24 @@ static const yytype_uint16 yytoknum[] = 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354 + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 100, 101, 101, 102, 102, 102, 102, 103, 104, - 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 106, 107, 107, 108, 108, 108, 108, - 109, 110, 110, 111, 111, 111, 112, 113, 114, 115, + 0, 101, 102, 102, 103, 103, 103, 103, 104, 105, + 105, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 107, 108, 108, 109, 109, 109, + 109, 110, 111, 111, 112, 112, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, @@ -830,9 +833,9 @@ static const yytype_uint8 yyr1[] = 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, 192, 193, 193, - 193, 193, 193, 193, 193, 194, 195, 196, 197, 198, - 199, 200 + 186, 187, 188, 189, 190, 191, 192, 193, 194, 194, + 195, 195, 195, 195, 195, 195, 195, 196, 197, 198, + 199, 200, 201, 202 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -846,18 +849,18 @@ 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, 2, 0, 1, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 2, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2 + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -865,101 +868,103 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 8, 83, 90, 175, 3, 10, 85, - 92, 177, 4, 5, 6, 7, 0, 0, 0, 0, + 2, 0, 1, 8, 84, 91, 177, 3, 10, 86, + 93, 179, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 11, - 12, 68, 71, 80, 13, 19, 59, 14, 72, 73, - 30, 52, 67, 15, 16, 17, 18, 69, 58, 20, - 21, 22, 23, 24, 60, 74, 75, 46, 56, 47, - 40, 41, 42, 43, 53, 25, 26, 27, 82, 28, - 29, 31, 32, 34, 35, 33, 36, 37, 38, 44, - 63, 77, 70, 78, 79, 39, 61, 64, 45, 48, - 62, 49, 50, 51, 57, 54, 55, 76, 65, 66, - 81, 0, 0, 0, 0, 84, 86, 87, 88, 89, - 0, 0, 0, 91, 93, 94, 95, 0, 0, 0, - 0, 0, 0, 0, 176, 178, 180, 179, 181, 182, - 183, 184, 97, 96, 101, 104, 102, 110, 111, 112, - 113, 116, 117, 118, 119, 120, 132, 133, 134, 136, - 137, 107, 138, 139, 142, 140, 141, 143, 144, 145, - 152, 127, 128, 129, 130, 146, 155, 124, 126, 156, - 158, 159, 160, 108, 131, 162, 163, 125, 161, 115, - 103, 121, 153, 157, 147, 0, 0, 166, 109, 98, - 114, 149, 99, 105, 106, 122, 123, 164, 148, 150, - 151, 100, 167, 135, 168, 169, 170, 171, 172, 173, - 174, 185, 187, 186, 188, 189, 190, 191, 154, 165 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 11, 12, 68, 71, 80, 13, 19, 59, 14, 72, + 73, 30, 52, 67, 15, 16, 17, 18, 69, 58, + 20, 21, 22, 23, 24, 60, 74, 75, 46, 56, + 47, 40, 41, 42, 43, 53, 25, 26, 27, 82, + 28, 29, 31, 32, 34, 35, 33, 36, 37, 38, + 44, 63, 77, 70, 78, 79, 83, 39, 61, 64, + 45, 48, 62, 49, 50, 51, 57, 54, 55, 76, + 65, 66, 81, 0, 0, 0, 0, 85, 87, 88, + 89, 90, 0, 0, 0, 92, 94, 95, 96, 0, + 0, 0, 0, 0, 0, 0, 178, 180, 182, 181, + 183, 184, 185, 186, 98, 97, 102, 105, 103, 111, + 112, 113, 114, 117, 118, 119, 120, 121, 133, 134, + 135, 137, 138, 108, 139, 140, 143, 141, 142, 144, + 145, 146, 154, 128, 129, 130, 131, 147, 157, 125, + 127, 158, 160, 161, 162, 109, 132, 164, 165, 126, + 163, 116, 104, 122, 155, 159, 148, 0, 0, 168, + 110, 99, 115, 150, 100, 106, 107, 123, 124, 166, + 149, 151, 152, 101, 169, 136, 153, 170, 171, 172, + 173, 174, 175, 176, 187, 189, 188, 190, 191, 192, + 193, 156, 167 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 7, 8, 12, 88, 9, 13, 165, 10, - 14, 173, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 166, 167, 168, 169, 174, 175, - 176, 11, 15, 184, 185, 186, 187, 188, 189, 190, - 191 + -1, 1, 7, 8, 12, 89, 9, 13, 167, 10, + 14, 175, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 168, 169, 170, 171, 176, + 177, 178, 11, 15, 186, 187, 188, 189, 190, 191, + 192, 193 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -88 +#define YYPACT_NINF -13 static const yytype_int16 yypact[] = { - -88, 0, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, 42, -20, -36, -87, 2, 3, 4, 5, - 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, - 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, - 41, 43, 70, 71, 72, 76, 77, 120, 121, 122, - 123, 124, 125, 126, 127, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, 154, 155, 156, 157, -88, -88, -88, -88, -88, - 158, 159, 160, -88, -88, -88, -88, 161, 162, 163, - 164, 165, 166, 167, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, 168, 169, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88 + -13, 76, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -12, 40, 44, 2, 15, 16, 17, 18, + 22, 23, 24, 68, 72, 73, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 105, 106, 107, 108, 109, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, 155, 156, 157, 158, -13, -13, -13, + -13, -13, 159, 160, 161, -13, -13, -13, -13, 162, + 163, 164, 165, 166, 167, 168, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, 169, 170, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88 + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, + -13, -13 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -969,61 +974,63 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 2, 170, 177, 178, 179, 180, 181, 182, 183, 171, - 172, 3, 192, 193, 194, 195, 196, 161, 197, 162, - 163, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 4, 215, - 216, 217, 218, 219, 5, 220, 221, 222, 223, 224, - 225, 226, 0, 227, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 164, - 228, 229, 230, 41, 42, 43, 231, 232, 6, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 233, 234, 235, 236, 237, 238, 239, 240, 85, 86, - 87, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279 + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 194, 195, 196, 197, 41, + 42, 43, 198, 199, 200, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 2, 163, 201, 164, + 165, 172, 202, 203, 85, 86, 87, 3, 88, 173, + 174, 179, 180, 181, 182, 183, 184, 185, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 4, 220, 221, 222, 223, 224, + 5, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 166, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 6, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282 }; -static const yytype_int8 yycheck[] = +static const yytype_uint8 yycheck[] = { - 0, 37, 89, 90, 91, 92, 93, 94, 95, 45, - 46, 11, 10, 10, 10, 10, 10, 37, 10, 39, - 40, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 38, 10, - 10, 10, 10, 10, 44, 10, 10, 10, 10, 10, - 10, 10, -1, 10, 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, 99, - 10, 10, 10, 41, 42, 43, 10, 10, 88, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 10, 10, 10, 10, 10, 10, 10, 10, 96, 97, - 98, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 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, 10, 10, 10, 10, 41, + 42, 43, 10, 10, 10, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 0, 37, 10, 39, + 40, 37, 10, 10, 96, 97, 98, 11, 100, 45, + 46, 89, 90, 91, 92, 93, 94, 95, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 38, 10, 10, 10, 10, 10, + 44, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 99, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 88, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 101, 0, 11, 38, 44, 88, 102, 103, 106, - 109, 191, 104, 107, 110, 192, 12, 13, 14, 15, + 0, 102, 0, 11, 38, 44, 88, 103, 104, 107, + 110, 193, 105, 108, 111, 194, 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, 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, 96, 97, 98, 105, 112, + 83, 84, 85, 86, 87, 96, 97, 98, 100, 106, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, @@ -1031,10 +1038,10 @@ static const yytype_uint8 yystos[] = 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, 37, 39, 40, 99, 108, 184, 185, 186, 187, - 37, 45, 46, 111, 188, 189, 190, 89, 90, 91, - 92, 93, 94, 95, 193, 194, 195, 196, 197, 198, - 199, 200, 10, 10, 10, 10, 10, 10, 10, 10, + 183, 184, 185, 37, 39, 40, 99, 109, 186, 187, + 188, 189, 37, 45, 46, 112, 190, 191, 192, 89, + 90, 91, 92, 93, 94, 95, 195, 196, 197, 198, + 199, 200, 201, 202, 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, @@ -1042,7 +1049,8 @@ static const yytype_uint8 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10 }; #define yyerrok (yyerrstatus = 0) @@ -1863,8 +1871,8 @@ yyreduce: } break; - case 83: -#line 148 "util/configparser.y" + case 84: +#line 149 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -1877,8 +1885,8 @@ yyreduce: } break; - case 90: -#line 164 "util/configparser.y" + case 91: +#line 165 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -1891,8 +1899,8 @@ yyreduce: } break; - case 96: -#line 180 "util/configparser.y" + case 97: +#line 181 "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) @@ -1902,8 +1910,8 @@ yyreduce: } break; - case 97: -#line 189 "util/configparser.y" + case 98: +#line 190 "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) @@ -1913,8 +1921,8 @@ yyreduce: } break; - case 98: -#line 198 "util/configparser.y" + case 99: +#line 199 "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) @@ -1926,8 +1934,8 @@ yyreduce: } break; - case 99: -#line 209 "util/configparser.y" + case 100: +#line 210 "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) @@ -1937,8 +1945,8 @@ yyreduce: } break; - case 100: -#line 218 "util/configparser.y" + case 101: +#line 219 "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) @@ -1948,8 +1956,8 @@ yyreduce: } break; - case 101: -#line 227 "util/configparser.y" + case 102: +#line 228 "util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -1959,8 +1967,8 @@ yyreduce: } break; - case 102: -#line 236 "util/configparser.y" + case 103: +#line 237 "util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -1974,8 +1982,8 @@ yyreduce: } break; - case 103: -#line 249 "util/configparser.y" + case 104: +#line 250 "util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -1991,8 +1999,8 @@ yyreduce: } break; - case 104: -#line 264 "util/configparser.y" + case 105: +#line 265 "util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2002,8 +2010,8 @@ yyreduce: } break; - case 105: -#line 273 "util/configparser.y" + case 106: +#line 274 "util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, @@ -2013,8 +2021,8 @@ yyreduce: } break; - case 106: -#line 282 "util/configparser.y" + case 107: +#line 283 "util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, @@ -2024,8 +2032,8 @@ yyreduce: } break; - case 107: -#line 291 "util/configparser.y" + case 108: +#line 292 "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) @@ -2035,8 +2043,8 @@ yyreduce: } break; - case 108: -#line 300 "util/configparser.y" + case 109: +#line 301 "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) @@ -2046,8 +2054,8 @@ yyreduce: } break; - case 109: -#line 309 "util/configparser.y" + case 110: +#line 310 "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) @@ -2057,8 +2065,8 @@ yyreduce: } break; - case 110: -#line 318 "util/configparser.y" + case 111: +#line 319 "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) @@ -2068,8 +2076,8 @@ yyreduce: } break; - case 111: -#line 327 "util/configparser.y" + case 112: +#line 328 "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) @@ -2079,8 +2087,8 @@ yyreduce: } break; - case 112: -#line 336 "util/configparser.y" + case 113: +#line 337 "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) @@ -2090,8 +2098,8 @@ yyreduce: } break; - case 113: -#line 345 "util/configparser.y" + case 114: +#line 346 "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) @@ -2101,8 +2109,8 @@ yyreduce: } break; - case 114: -#line 354 "util/configparser.y" + case 115: +#line 355 "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) @@ -2112,8 +2120,8 @@ yyreduce: } break; - case 115: -#line 363 "util/configparser.y" + case 116: +#line 364 "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) @@ -2128,8 +2136,8 @@ yyreduce: } break; - case 116: -#line 377 "util/configparser.y" + case 117: +#line 378 "util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->chrootdir); @@ -2137,8 +2145,8 @@ yyreduce: } break; - case 117: -#line 384 "util/configparser.y" + case 118: +#line 385 "util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->username); @@ -2146,8 +2154,8 @@ yyreduce: } break; - case 118: -#line 391 "util/configparser.y" + case 119: +#line 392 "util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); @@ -2155,8 +2163,8 @@ yyreduce: } break; - case 119: -#line 398 "util/configparser.y" + case 120: +#line 399 "util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->logfile); @@ -2165,8 +2173,8 @@ yyreduce: } break; - case 120: -#line 406 "util/configparser.y" + case 121: +#line 407 "util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->pidfile); @@ -2174,8 +2182,8 @@ yyreduce: } break; - case 121: -#line 413 "util/configparser.y" + case 122: +#line 414 "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))) @@ -2183,8 +2191,8 @@ yyreduce: } break; - case 122: -#line 420 "util/configparser.y" + case 123: +#line 421 "util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->dlv_anchor_file); @@ -2192,8 +2200,8 @@ yyreduce: } break; - case 123: -#line 427 "util/configparser.y" + case 124: +#line 428 "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))) @@ -2201,8 +2209,8 @@ yyreduce: } break; - case 124: -#line 434 "util/configparser.y" + case 125: +#line 435 "util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2211,8 +2219,8 @@ yyreduce: } break; - case 125: -#line 442 "util/configparser.y" + case 126: +#line 443 "util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> @@ -2221,8 +2229,8 @@ yyreduce: } break; - case 126: -#line 450 "util/configparser.y" + case 127: +#line 451 "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))) @@ -2230,8 +2238,8 @@ yyreduce: } break; - case 127: -#line 457 "util/configparser.y" + case 128: +#line 458 "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) @@ -2241,8 +2249,8 @@ yyreduce: } break; - case 128: -#line 466 "util/configparser.y" + case 129: +#line 467 "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) @@ -2252,8 +2260,8 @@ yyreduce: } break; - case 129: -#line 475 "util/configparser.y" + case 130: +#line 476 "util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->identity); @@ -2261,8 +2269,8 @@ yyreduce: } break; - case 130: -#line 482 "util/configparser.y" + case 131: +#line 483 "util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->version); @@ -2270,8 +2278,8 @@ yyreduce: } break; - case 131: -#line 489 "util/configparser.y" + case 132: +#line 490 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2283,8 +2291,8 @@ yyreduce: } break; - case 132: -#line 500 "util/configparser.y" + case 133: +#line 501 "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)) @@ -2293,8 +2301,8 @@ yyreduce: } break; - case 133: -#line 508 "util/configparser.y" + case 134: +#line 509 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2308,8 +2316,8 @@ yyreduce: } break; - case 134: -#line 521 "util/configparser.y" + case 135: +#line 522 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2319,8 +2327,8 @@ yyreduce: } break; - case 135: -#line 530 "util/configparser.y" + case 136: +#line 531 "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) @@ -2330,8 +2338,8 @@ yyreduce: } break; - case 136: -#line 539 "util/configparser.y" + case 137: +#line 540 "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)) @@ -2340,8 +2348,8 @@ yyreduce: } break; - case 137: -#line 547 "util/configparser.y" + case 138: +#line 548 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2355,8 +2363,8 @@ yyreduce: } break; - case 138: -#line 560 "util/configparser.y" + case 139: +#line 561 "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) @@ -2366,8 +2374,8 @@ yyreduce: } break; - case 139: -#line 569 "util/configparser.y" + case 140: +#line 570 "util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2377,8 +2385,8 @@ yyreduce: } break; - case 140: -#line 578 "util/configparser.y" + case 141: +#line 579 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2388,8 +2396,8 @@ yyreduce: } break; - case 141: -#line 587 "util/configparser.y" + case 142: +#line 588 "util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg-> @@ -2399,8 +2407,8 @@ yyreduce: } break; - case 142: -#line 596 "util/configparser.y" + case 143: +#line 597 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2414,8 +2422,8 @@ yyreduce: } break; - case 143: -#line 609 "util/configparser.y" + case 144: +#line 610 "util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->target_fetch_policy); @@ -2423,8 +2431,8 @@ yyreduce: } break; - case 144: -#line 616 "util/configparser.y" + case 145: +#line 617 "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) @@ -2435,8 +2443,8 @@ yyreduce: } break; - case 145: -#line 626 "util/configparser.y" + case 146: +#line 627 "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) @@ -2447,8 +2455,8 @@ yyreduce: } break; - case 146: -#line 636 "util/configparser.y" + case 147: +#line 637 "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) @@ -2459,8 +2467,8 @@ yyreduce: } break; - case 147: -#line 646 "util/configparser.y" + case 148: +#line 647 "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) @@ -2471,8 +2479,8 @@ yyreduce: } break; - case 148: -#line 656 "util/configparser.y" + case 149: +#line 657 "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) @@ -2483,8 +2491,8 @@ yyreduce: } break; - case 149: -#line 666 "util/configparser.y" + case 150: +#line 667 "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) @@ -2495,8 +2503,8 @@ yyreduce: } break; - case 150: -#line 676 "util/configparser.y" + case 151: +#line 677 "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))) @@ -2504,8 +2512,8 @@ yyreduce: } break; - case 151: -#line 683 "util/configparser.y" + case 152: +#line 684 "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))) @@ -2513,8 +2521,19 @@ yyreduce: } break; - case 152: -#line 690 "util/configparser.y" + case 153: +#line 691 "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) + yyerror("number expected"); + else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 154: +#line 700 "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))) @@ -2522,8 +2541,8 @@ yyreduce: } break; - case 153: -#line 697 "util/configparser.y" + case 155: +#line 707 "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) @@ -2534,8 +2553,8 @@ yyreduce: } break; - case 154: -#line 707 "util/configparser.y" + case 156: +#line 717 "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 && @@ -2550,8 +2569,8 @@ yyreduce: } break; - case 155: -#line 721 "util/configparser.y" + case 157: +#line 731 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -2559,8 +2578,8 @@ yyreduce: } break; - case 156: -#line 728 "util/configparser.y" + case 158: +#line 738 "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) { @@ -2579,8 +2598,8 @@ yyreduce: } break; - case 157: -#line 746 "util/configparser.y" + case 159: +#line 756 "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) @@ -2590,8 +2609,8 @@ yyreduce: } break; - case 158: -#line 755 "util/configparser.y" + case 160: +#line 765 "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) @@ -2601,8 +2620,8 @@ yyreduce: } break; - case 159: -#line 764 "util/configparser.y" + case 161: +#line 774 "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) @@ -2613,8 +2632,8 @@ yyreduce: } break; - case 160: -#line 774 "util/configparser.y" + case 162: +#line 784 "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) @@ -2625,8 +2644,8 @@ yyreduce: } break; - case 161: -#line 784 "util/configparser.y" + case 163: +#line 794 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -2634,8 +2653,8 @@ yyreduce: } break; - case 162: -#line 791 "util/configparser.y" + case 164: +#line 801 "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)) @@ -2644,8 +2663,8 @@ yyreduce: } break; - case 163: -#line 799 "util/configparser.y" + case 165: +#line 809 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2659,8 +2678,8 @@ yyreduce: } break; - case 164: -#line 812 "util/configparser.y" + case 166: +#line 822 "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)) @@ -2669,8 +2688,8 @@ yyreduce: } break; - case 165: -#line 820 "util/configparser.y" + case 167: +#line 830 "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 && @@ -2690,8 +2709,8 @@ yyreduce: } break; - case 166: -#line 839 "util/configparser.y" + case 168: +#line 849 "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))) @@ -2699,8 +2718,8 @@ yyreduce: } break; - case 167: -#line 846 "util/configparser.y" + case 169: +#line 856 "util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -2716,8 +2735,8 @@ yyreduce: } break; - case 168: -#line 861 "util/configparser.y" + case 170: +#line 871 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->stubs->name); @@ -2725,8 +2744,8 @@ yyreduce: } break; - case 169: -#line 868 "util/configparser.y" + case 171: +#line 878 "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))) @@ -2734,8 +2753,8 @@ yyreduce: } break; - case 170: -#line 875 "util/configparser.y" + case 172: +#line 885 "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))) @@ -2743,8 +2762,8 @@ yyreduce: } break; - case 171: -#line 882 "util/configparser.y" + case 173: +#line 892 "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) @@ -2755,8 +2774,8 @@ yyreduce: } break; - case 172: -#line 892 "util/configparser.y" + case 174: +#line 902 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->forwards->name); @@ -2764,8 +2783,8 @@ yyreduce: } break; - case 173: -#line 899 "util/configparser.y" + case 175: +#line 909 "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))) @@ -2773,8 +2792,8 @@ yyreduce: } break; - case 174: -#line 906 "util/configparser.y" + case 176: +#line 916 "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))) @@ -2782,15 +2801,15 @@ yyreduce: } break; - case 175: -#line 913 "util/configparser.y" + case 177: +#line 923 "util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; - case 185: -#line 924 "util/configparser.y" + case 187: +#line 934 "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) @@ -2801,8 +2820,8 @@ yyreduce: } break; - case 186: -#line 934 "util/configparser.y" + case 188: +#line 944 "util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -2812,8 +2831,8 @@ yyreduce: } break; - case 187: -#line 943 "util/configparser.y" + case 189: +#line 953 "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))) @@ -2821,8 +2840,8 @@ yyreduce: } break; - case 188: -#line 950 "util/configparser.y" + case 190: +#line 960 "util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -2830,8 +2849,8 @@ yyreduce: } break; - case 189: -#line 957 "util/configparser.y" + case 191: +#line 967 "util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -2839,8 +2858,8 @@ yyreduce: } break; - case 190: -#line 964 "util/configparser.y" + case 192: +#line 974 "util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -2848,8 +2867,8 @@ yyreduce: } break; - case 191: -#line 971 "util/configparser.y" + case 193: +#line 981 "util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -2859,7 +2878,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 2863 "util/configparser.c" +#line 2882 "util/configparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3073,7 +3092,7 @@ yyreturn: } -#line 977 "util/configparser.y" +#line 987 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index c4cb7affd..473492e04 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -135,7 +135,8 @@ VAR_EXTENDED_STATISTICS = 351, VAR_LOCAL_DATA_PTR = 352, VAR_JOSTLE_TIMEOUT = 353, - VAR_STUB_PRIME = 354 + VAR_STUB_PRIME = 354, + VAR_UNWANTED_REPLY_THRESHOLD = 355 }; #endif /* Tokens. */ @@ -236,6 +237,7 @@ #define VAR_LOCAL_DATA_PTR 352 #define VAR_JOSTLE_TIMEOUT 353 #define VAR_STUB_PRIME 354 +#define VAR_UNWANTED_REPLY_THRESHOLD 355 @@ -247,7 +249,7 @@ typedef union YYSTYPE char* str; } /* Line 1489 of yacc.c. */ -#line 251 "util/configparser.h" +#line 253 "util/configparser.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/util/configparser.y b/util/configparser.y index 2807c3847..e150d0a75 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -96,7 +96,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT -%token VAR_STUB_PRIME +%token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -142,7 +142,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | server_private_domain | server_extended_statistics | - server_local_data_ptr | server_jostle_timeout + server_local_data_ptr | server_jostle_timeout | + server_unwanted_reply_threshold ; stubstart: VAR_STUB_ZONE { @@ -686,6 +687,15 @@ server_private_domain: VAR_PRIVATE_DOMAIN STRING yyerror("out of memory"); } ; +server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING + { + OUTYY(("P(server_unwanted_reply_threshold:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->unwanted_threshold = atoi($2); + free($2); + } + ; server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING { OUTYY(("P(server_do_not_query_address:%s)\n", $2));