From 28b45e1d877e9b6d6220c5de2f3ac1a981c4df69 Mon Sep 17 00:00:00 2001 From: Frank Riley Date: Fri, 1 Jan 2021 09:41:40 -0700 Subject: [PATCH 001/177] Add missing callbacks to the python module --- pythonmod/examples/inplace_callbacks.py | 43 +++++++++++++ pythonmod/interface.i | 80 +++++++++++++++++++++++++ pythonmod/pythonmod.h | 8 +++ util/fptr_wlist.c | 8 +++ 4 files changed, 139 insertions(+) diff --git a/pythonmod/examples/inplace_callbacks.py b/pythonmod/examples/inplace_callbacks.py index de375b4e1..18848f935 100644 --- a/pythonmod/examples/inplace_callbacks.py +++ b/pythonmod/examples/inplace_callbacks.py @@ -34,6 +34,9 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' + +import os + #Try: # - dig @localhost nlnetlabs.nl +ednsopt=65002: # This query *could* be answered from cache. If so, unbound will reply @@ -242,6 +245,36 @@ def inplace_query_callback(qinfo, flags, qstate, addr, zone, region, **kwargs): return True +def inplace_query_response_callback(qstate, response, **kwargs): + """ + Function that will be registered as an inplace callback function. + It will be called after receiving a reply from a backend server. + + :param qstate: module qstate. opt_lists are available here; + :param response: struct dns_msg. The reply received from the backend server; + :param **kwargs: Dictionary that may contain parameters added in a future + release. + """ + log_dns_msg( + "python: incoming reply from {}{}".format(qstate.reply.addr, os.linesep), + response.qinfo, response.rep + ) + return True + + +def inplace_edns_back_parsed_call(qstate, **kwargs): + """ + Function that will be registered as an inplace callback function. + It will be called after EDNS is parsed on a reply from a backend server.. + + :param qstate: module qstate. opt_lists are available here; + :param **kwargs: Dictionary that may contain parameters added in a future + release. + """ + log_info("python: edns parsed") + return True + + def init_standard(id, env): """ New version of the init function. @@ -281,6 +314,16 @@ def init_standard(id, env): if not register_inplace_cb_query(inplace_query_callback, env, id): return False + # Register the inplace_edns_back_parsed_call function as an inplace callback + # for when a reply is received from a backend server. + if not register_inplace_cb_query_response(inplace_query_response_callback, env, id): + return False + + # Register the inplace_edns_back_parsed_call function as an inplace callback + # for when EDNS is parsed on a reply from a backend server. + if not register_inplace_cb_edns_back_parsed_call(inplace_edns_back_parsed_call, env, id): + return False + return True diff --git a/pythonmod/interface.i b/pythonmod/interface.i index cbee4f714..4d8d2c95c 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1645,6 +1645,82 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, if (ret) Py_INCREF(py_cb); return ret; } + + int python_inplace_cb_query_response(struct module_qstate* qstate, + struct dns_msg* response, int id, void* python_callback) + { + int res = 0; + PyObject *func = python_callback; + + PyGILState_STATE gstate = PyGILState_Ensure(); + + PyObject *py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); + PyObject *py_response = SWIG_NewPointerObj((void*) response, SWIGTYPE_p_dns_msg, 0); + + PyObject *py_args = Py_BuildValue("(OO)", py_qstate, py_response); + PyObject *py_kwargs = Py_BuildValue("{}"); + PyObject *result = PyObject_Call(func, py_args, py_kwargs); + if (result) { + res = PyInt_AsLong(result); + } + + Py_XDECREF(py_qstate); + Py_XDECREF(py_response); + + Py_XDECREF(py_args); + Py_XDECREF(py_kwargs); + Py_XDECREF(result); + + PyGILState_Release(gstate); + + return res; + } + + static int register_inplace_cb_query_response(PyObject* py_cb, + struct module_env* env, int id) + { + int ret = inplace_cb_register(python_inplace_cb_query_response, + inplace_cb_query_response, (void*) py_cb, env, id); + if (ret) Py_INCREF(py_cb); + return ret; + } + + int python_inplace_cb_edns_back_parsed_call(struct module_qstate* qstate, + int id, void* python_callback) + { + int res = 0; + PyObject *func = python_callback; + + PyGILState_STATE gstate = PyGILState_Ensure(); + + PyObject *py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); + + PyObject *py_args = Py_BuildValue("(O)", py_qstate); + PyObject *py_kwargs = Py_BuildValue("{}"); + PyObject *result = PyObject_Call(func, py_args, py_kwargs); + if (result) { + res = PyInt_AsLong(result); + } + + Py_XDECREF(py_qstate); + + Py_XDECREF(py_args); + Py_XDECREF(py_kwargs); + Py_XDECREF(result); + + PyGILState_Release(gstate); + + return res; + } + + static int register_inplace_cb_edns_back_parsed_call(PyObject* py_cb, + struct module_env* env, int id) + { + int ret = inplace_cb_register(python_inplace_cb_edns_back_parsed_call, + inplace_cb_edns_back_parsed, (void*) py_cb, env, id); + if (ret) Py_INCREF(py_cb); + return ret; + } %} /* C declarations */ int inplace_cb_register(void* cb, enum inplace_cb_list_type type, void* cbarg, @@ -1661,3 +1737,7 @@ static int register_inplace_cb_reply_servfail(PyObject* py_cb, struct module_env* env, int id); static int register_inplace_cb_query(PyObject *py_cb, struct module_env* env, int id); +static int register_inplace_cb_query_response(PyObject *py_cb, + struct module_env* env, int id); +static int register_inplace_cb_edns_back_parsed_call(PyObject *py_cb, + struct module_env* env, int id); diff --git a/pythonmod/pythonmod.h b/pythonmod/pythonmod.h index ae8af27eb..cd624f104 100644 --- a/pythonmod/pythonmod.h +++ b/pythonmod/pythonmod.h @@ -82,4 +82,12 @@ int python_inplace_cb_query_generic( uint8_t* zone, size_t zonelen, struct regional* region, int id, void* python_callback); +/** Declared here for fptr_wlist access. The definition is in interface.i. */ +int python_inplace_cb_query_response(struct module_qstate* qstate, + struct dns_msg* response, int id, void* python_callback); + +/** Declared here for fptr_wlist access. The definition is in interface.i. */ +int python_inplace_cb_edns_back_parsed_call(struct module_qstate* qstate, + int id, void* python_callback); + #endif /* PYTHONMOD_H */ diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index a9e9d3a03..94eee3504 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -659,6 +659,10 @@ int fptr_whitelist_inplace_cb_edns_back_parsed( #else (void)fptr; #endif +#ifdef WITH_PYTHONMODULE + if(fptr == &python_inplace_cb_edns_back_parsed_call) + return 1; +#endif #ifdef WITH_DYNLIBMODULE if(fptr == &dynlib_inplace_cb_edns_back_parsed) return 1; @@ -675,6 +679,10 @@ int fptr_whitelist_inplace_cb_query_response( #else (void)fptr; #endif +#ifdef WITH_PYTHONMODULE + if(fptr == &python_inplace_cb_query_response) + return 1; +#endif #ifdef WITH_DYNLIBMODULE if(fptr == &dynlib_inplace_cb_query_response) return 1; From 41fa45c99e827012112fb4d3fc59cd54d3391687 Mon Sep 17 00:00:00 2001 From: Christian Allred Date: Mon, 5 Apr 2021 15:41:53 -0700 Subject: [PATCH 002/177] Add max-query-restarts config parameter --- util/config_file.c | 3 +++ util/config_file.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/util/config_file.c b/util/config_file.c index 171251f67..ce3fc543b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -344,6 +344,7 @@ config_create(void) cfg->pad_responses_block_size = 468; /* from RFC8467 */ cfg->pad_queries = 1; cfg->pad_queries_block_size = 128; /* from RFC8467 */ + cfg->max_query_restarts = MAX_RESTART_COUNT; #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; cfg->ipsecmod_ignore_bogus = 0; @@ -749,6 +750,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_SIZET_NONZERO("pad-responses-block-size:", pad_responses_block_size) else S_YNO("pad-queries:", pad_queries) else S_SIZET_NONZERO("pad-queries-block-size:", pad_queries_block_size) + else S_SIZET_NONZERO("max-query-restarts:", max_query_restarts) #ifdef USE_IPSECMOD else S_YNO("ipsecmod-enabled:", ipsecmod_enabled) else S_YNO("ipsecmod-ignore-bogus:", ipsecmod_ignore_bogus) @@ -1196,6 +1198,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "pad-queries", pad_queries) else O_DEC(opt, "pad-queries-block-size", pad_queries_block_size) else O_LS2(opt, "edns-client-strings", edns_client_strings) + else O_DEC(opt, "max-query-restarts", max_query_restarts) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) diff --git a/util/config_file.h b/util/config_file.h index f5eda738c..23837065a 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -615,6 +615,9 @@ struct config_file { /** block size with which to pad encrypted queries (default: 128) */ size_t pad_queries_block_size; + /** max number of query restarts. Determines max number of CNAME chain (default: 8) */ + size_t max_query_restarts; + /** IPsec module */ #ifdef USE_IPSECMOD /** false to bypass the IPsec module */ From 0e3068559c1e893fdf9de587cc3c7820ac4d554b Mon Sep 17 00:00:00 2001 From: Christian Allred Date: Mon, 5 Apr 2021 16:24:49 -0700 Subject: [PATCH 003/177] Add max-query-restarts to grammar and lexer --- util/configlexer.lex | 1 + util/configparser.y | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/util/configlexer.lex b/util/configlexer.lex index b52ddf81e..17d281faa 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -517,6 +517,7 @@ pad-responses{COLON} { YDVAR(1, VAR_PAD_RESPONSES) } pad-responses-block-size{COLON} { YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } pad-queries{COLON} { YDVAR(1, VAR_PAD_QUERIES) } pad-queries-block-size{COLON} { YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +max-query-restarts{COLON} { YDVAR(1, VAR_MAX_QUERY_RESTARTS) } ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } diff --git a/util/configparser.y b/util/configparser.y index 10f5ac1c4..95426dd9c 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -164,6 +164,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSCRYPT_NONCE_CACHE_SLABS %token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE %token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE +%token VAR_MAX_QUERY_RESTARTS %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED @@ -280,6 +281,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_qname_minimisation_strict | server_pad_responses | server_pad_responses_block_size | server_pad_queries | server_pad_queries_block_size | + server_max_query_restarts | server_serve_expired | server_serve_expired_ttl | server_serve_expired_ttl_reset | server_serve_expired_reply_ttl | server_serve_expired_client_timeout | @@ -2501,6 +2503,15 @@ server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG free($2); } ; +server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG + { + OUTYY(("P(server_max_query_restarts:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->max_query_restarts = atoi($2); + free($2); + } + ; server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG { #ifdef USE_IPSECMOD From 07c0d04a148a3da8a3d6fcd78ef3a2128ab5df95 Mon Sep 17 00:00:00 2001 From: Christian Allred Date: Mon, 5 Apr 2021 16:25:43 -0700 Subject: [PATCH 004/177] Use max-query-restarts in iterative resolver --- iterator/iter_utils.c | 3 +++ iterator/iterator.c | 2 +- iterator/iterator.h | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 94fa18f63..637acf736 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -176,6 +176,9 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) } iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; + + iter_env->max_query_restarts = cfg->max_query_restarts; + return 1; } diff --git a/iterator/iterator.c b/iterator/iterator.c index 99d020117..5163857fa 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1237,7 +1237,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, /* We enforce a maximum number of query restarts. This is primarily a * cheap way to prevent CNAME loops. */ - if(iq->query_restart_count > MAX_RESTART_COUNT) { + if(iq->query_restart_count > ie->max_query_restarts) { verbose(VERB_QUERY, "request has exceeded the maximum number" " of query restarts with %d", iq->query_restart_count); errinf(qstate, "request has exceeded the maximum number " diff --git a/iterator/iterator.h b/iterator/iterator.h index 342ac207e..d3ca716fc 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -139,6 +139,9 @@ struct iter_env { lock_basic_type queries_ratelimit_lock; /** number of queries that have been ratelimited */ size_t num_queries_ratelimited; + + /** max number of query restarts to limit length of CNAME chain */ + size_t max_query_restarts; }; /** From 766244bd81f1d8c808d44ee42a443f43d7a902b8 Mon Sep 17 00:00:00 2001 From: Christian Allred Date: Mon, 5 Apr 2021 18:59:09 -0700 Subject: [PATCH 005/177] Document max-query-restarts option --- doc/unbound.conf.5.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 00c1191be..6fe9f6203 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1613,6 +1613,11 @@ option can be used multiple times. The most specific match will be used. EDNS0 option code for the \fIedns\-client\-string\fR option, from 0 to 65535. A value from the `Reserved for Local/Experimental` range (65001-65534) should be used. Default is 65001. +.TP 5 +.B max\-query\-restarts: \fI +Set the maximum number of times a query is allowed to restart upon encountering +a CNAME record. If a query encounters more than the specified number of CNAME +records before resolving, unbound will reply with SERVFAIL. Default is 8. .SS "Remote Control Options" In the .B remote\-control: From 5b2eda28e338ad45f4bb589951776feddc063795 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Mon, 8 Nov 2021 13:39:13 -0800 Subject: [PATCH 006/177] add keep-cache option to unbound-control reload to keep caches --- daemon/cachedump.c | 9 ++-- daemon/daemon.c | 91 ++++++++++++++++++++++++++++++++++++-- daemon/daemon.h | 6 +++ daemon/remote.c | 6 ++- daemon/worker.c | 11 +++-- daemon/worker.h | 4 +- smallapp/unbound-control.c | 1 + 7 files changed, 111 insertions(+), 17 deletions(-) diff --git a/daemon/cachedump.c b/daemon/cachedump.c index b1ce53b59..517a6b1f3 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -385,7 +385,7 @@ move_into_cache(struct ub_packed_rrset_key* k, struct rrset_ref ref; uint8_t* p; - ak = alloc_special_obtain(&worker->alloc); + ak = alloc_special_obtain(worker->alloc); if(!ak) { log_warn("error out of memory"); return 0; @@ -396,7 +396,7 @@ move_into_cache(struct ub_packed_rrset_key* k, ak->rk.dname = (uint8_t*)memdup(k->rk.dname, k->rk.dname_len); if(!ak->rk.dname) { log_warn("error out of memory"); - ub_packed_rrset_parsedelete(ak, &worker->alloc); + ub_packed_rrset_parsedelete(ak, worker->alloc); return 0; } s = sizeof(*ad) + (sizeof(size_t) + sizeof(uint8_t*) + @@ -406,7 +406,7 @@ move_into_cache(struct ub_packed_rrset_key* k, ad = (struct packed_rrset_data*)malloc(s); if(!ad) { log_warn("error out of memory"); - ub_packed_rrset_parsedelete(ak, &worker->alloc); + ub_packed_rrset_parsedelete(ak, worker->alloc); return 0; } p = (uint8_t*)ad; @@ -429,7 +429,8 @@ move_into_cache(struct ub_packed_rrset_key* k, ref.key = ak; ref.id = ak->id; (void)rrset_cache_update(worker->env.rrset_cache, &ref, - &worker->alloc, *worker->env.now); + worker->alloc, *worker->env.now); + return 1; } diff --git a/daemon/daemon.c b/daemon/daemon.c index 0e3923b4e..e70ece168 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -433,6 +433,27 @@ static int daemon_get_shufport(struct daemon* daemon, int* shufport) return avail; } +/** + * Clear and delete per-worker alloc caches, and free memory maintained in + * superalloc. + * The rrset and message caches must be empty at the time of call. + * @param daemon: the daemon that maintains the alloc caches to be cleared. + */ +static void +daemon_clear_allocs(struct daemon* daemon) +{ + int i; + + for(i=0; inum; i++) { + alloc_clear(daemon->worker_allocs[i]); + free(daemon->worker_allocs[i]); + } + free(daemon->worker_allocs); + daemon->worker_allocs = NULL; + + alloc_clear_special(&daemon->superalloc); +} + /** * Allocate empty worker structures. With backptr and thread-number, * from 0..numthread initialised. Used as user arguments to new threads. @@ -485,6 +506,21 @@ daemon_create_workers(struct daemon* daemon) /* the above is not ports/numthr, due to rounding */ fatal_exit("could not create worker"); } + /* create per-worker alloc caches if not reusing existing ones. */ + if(!daemon->worker_allocs) { + daemon->worker_allocs = (struct alloc_cache**)calloc( + (size_t)daemon->num, sizeof(struct alloc_cache*)); + if(!daemon->worker_allocs) + fatal_exit("could not allocate worker allocs"); + for(i=0; inum; i++) { + struct alloc_cache* alloc = calloc(1, + sizeof(struct alloc_cache)); + if (!alloc) + fatal_exit("could not allocate worker alloc"); + alloc_init(alloc, &daemon->superalloc, i); + daemon->worker_allocs[i] = alloc; + } + } free(shufport); } @@ -713,6 +749,7 @@ daemon_fork(struct daemon* daemon) /* Shutdown SHM */ shm_main_shutdown(daemon); + daemon->reuse_cache = daemon->workers[0]->reuse_cache; daemon->need_to_exit = daemon->workers[0]->need_to_exit; } @@ -727,9 +764,16 @@ daemon_cleanup(struct daemon* daemon) log_thread_set(NULL); /* clean up caches because * a) RRset IDs will be recycled after a reload, causing collisions - * b) validation config can change, thus rrset, msg, keycache clear */ - slabhash_clear(&daemon->env->rrset_cache->table); - slabhash_clear(daemon->env->msg_cache); + * b) validation config can change, thus rrset, msg, keycache clear + * + * If we are trying to keep the cache as long as possible, we should + * defer the cleanup until we know whether the new configuration allows + * the reuse. (If we're exiting, cleanup should be done here). */ + if(!daemon->reuse_cache || daemon->need_to_exit) { + slabhash_clear(&daemon->env->rrset_cache->table); + slabhash_clear(daemon->env->msg_cache); + } + daemon->old_num = daemon->num; /* save the current num */ local_zones_delete(daemon->local_zones); daemon->local_zones = NULL; respip_set_delete(daemon->respip_set); @@ -745,7 +789,12 @@ daemon_cleanup(struct daemon* daemon) free(daemon->workers); daemon->workers = NULL; daemon->num = 0; - alloc_clear_special(&daemon->superalloc); + /* Unless we're trying to keep the cache, worker alloc_caches should be + * cleared and freed here. We do this after deleting workers to + * guarantee that the alloc caches are valid throughout the lifetime + * of workers. */ + if(!daemon->reuse_cache || daemon->need_to_exit) + daemon_clear_allocs(daemon); #ifdef USE_DNSTAP dt_delete(daemon->dtenv); daemon->dtenv = NULL; @@ -841,8 +890,42 @@ daemon_delete(struct daemon* daemon) void daemon_apply_cfg(struct daemon* daemon, struct config_file* cfg) { + int new_num = cfg->num_threads?cfg->num_threads:1; + daemon->cfg = cfg; config_apply(cfg); + + /* If this is a reload and we deferred the decision on whether to + * reuse the alloc, RRset, and message caches, then check to see if + * it's safe to keep the caches: + * - changing the number of threads is obviously incompatible with + * keeping the per-thread alloc caches. It also means we have to + * clear RRset and message caches. (note that 'new_num' may be + * adjusted in daemon_create_workers, but for our purpose we can + * simply compare it with 'old_num'; if they are equal here, + * 'new_num' won't be adjusted to a different value than 'old_num'). + * - changing RRset cache size effectively clears any remaining cache + * entries. We could keep their keys in alloc caches, but it would + * be more consistent with the sense of the change to clear allocs + * and free memory. To do so we also have to clear message cache. + * - only changing message cache size does not necessarily affect + * RRset or alloc cache. But almost all new subsequent queries will + * require recursive resolution anyway, so it doesn't help much to + * just keep RRset and alloc caches. For simplicity we clear/free + * the other two, too. */ + if(daemon->worker_allocs && + (new_num != daemon->old_num || + !slabhash_is_size(daemon->env->msg_cache, cfg->msg_cache_size, + cfg->msg_cache_slabs) || + !slabhash_is_size(&daemon->env->rrset_cache->table, + cfg->rrset_cache_size, cfg->rrset_cache_slabs))) + { + log_warn("cannot reuse caches due to critical config change"); + slabhash_clear(&daemon->env->rrset_cache->table); + slabhash_clear(daemon->env->msg_cache); + daemon_clear_allocs(daemon); + } + if(!slabhash_is_size(daemon->env->msg_cache, cfg->msg_cache_size, cfg->msg_cache_slabs)) { slabhash_delete(daemon->env->msg_cache); diff --git a/daemon/daemon.h b/daemon/daemon.h index 3effbafb7..58d78d6ff 100644 --- a/daemon/daemon.h +++ b/daemon/daemon.h @@ -99,8 +99,12 @@ struct daemon { void* listen_sslctx, *connect_sslctx; /** num threads allocated */ int num; + /** num threads allocated in the previous config or 0 at first */ + int old_num; /** the worker entries */ struct worker** workers; + /** per-worker allocation cache */ + struct alloc_cache **worker_allocs; /** do we need to exit unbound (or is it only a reload?) */ int need_to_exit; /** master random table ; used for port div between threads on reload*/ @@ -138,6 +142,8 @@ struct daemon { /** the dnscrypt environment */ struct dnsc_env* dnscenv; #endif + /** reuse existing cache on reload if other conditions allow it. */ + int reuse_cache; }; /** diff --git a/daemon/remote.c b/daemon/remote.c index adf038389..05e6b1a56 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -684,8 +684,10 @@ do_stop(RES* ssl, struct worker* worker) /** do the reload command */ static void -do_reload(RES* ssl, struct worker* worker) +do_reload(RES* ssl, struct worker* worker, char* arg) { + arg = skipwhite(arg); + worker->reuse_cache = (strcmp(arg, "+keep-cache") == 0); worker->need_to_exit = 0; comm_base_exit(worker->base); send_ok(ssl); @@ -3029,7 +3031,7 @@ execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, do_stop(ssl, worker); return; } else if(cmdcmp(p, "reload", 6)) { - do_reload(ssl, worker); + do_reload(ssl, worker, skipwhite(p+6)); return; } else if(cmdcmp(p, "stats_noreset", 13)) { do_stats(ssl, worker, 0); diff --git a/daemon/worker.c b/daemon/worker.c index b438700af..16368aa77 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -133,7 +133,7 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), rrset = slabhash_get_mem(&worker->env.rrset_cache->table); infra = infra_get_mem(worker->env.infra_cache); mesh = mesh_get_mem(worker->env.mesh); - ac = alloc_get_mem(&worker->alloc); + ac = alloc_get_mem(worker->alloc); superac = alloc_get_mem(&worker->daemon->superalloc); anch = anchors_get_mem(worker->env.anchors); iter = 0; @@ -1834,15 +1834,14 @@ worker_init(struct worker* worker, struct config_file *cfg, } server_stats_init(&worker->stats, cfg); - alloc_init(&worker->alloc, &worker->daemon->superalloc, - worker->thread_num); - alloc_set_id_cleanup(&worker->alloc, &worker_alloc_cleanup, worker); + worker->alloc = worker->daemon->worker_allocs[worker->thread_num]; + alloc_set_id_cleanup(worker->alloc, &worker_alloc_cleanup, worker); worker->env = *worker->daemon->env; comm_base_timept(worker->base, &worker->env.now, &worker->env.now_tv); worker->env.worker = worker; worker->env.worker_base = worker->base; worker->env.send_query = &worker_send_query; - worker->env.alloc = &worker->alloc; + worker->env.alloc = worker->alloc; worker->env.outnet = worker->back; worker->env.rnd = worker->rndstate; /* If case prefetch is triggered, the corresponding mesh will clear @@ -1986,7 +1985,7 @@ worker_delete(struct worker* worker) #endif /* USE_DNSTAP */ comm_base_delete(worker->base); ub_randfree(worker->rndstate); - alloc_clear(&worker->alloc); + /* don't touch worker->alloc, as it's maintained in daemon */ regional_destroy(worker->env.scratch); regional_destroy(worker->scratchpad); free(worker); diff --git a/daemon/worker.h b/daemon/worker.h index 3887d0405..59b76e1e3 100644 --- a/daemon/worker.h +++ b/daemon/worker.h @@ -114,7 +114,7 @@ struct worker { /** do we need to restart or quit (on signal) */ int need_to_exit; /** allocation cache for this thread */ - struct alloc_cache alloc; + struct alloc_cache *alloc; /** per thread statistics */ struct ub_server_stats stats; /** thread scratch regional */ @@ -127,6 +127,8 @@ struct worker { /** dnstap environment, changed for this thread */ struct dt_env dtenv; #endif + /** reuse existing cache on reload if other conditions allow it. */ + int reuse_cache; }; /** diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index c7c38276f..d9ba63b88 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -102,6 +102,7 @@ usage(void) printf(" stop stops the server\n"); printf(" reload reloads the server\n"); printf(" (this flushes data, stats, requestlist)\n"); + printf(" reload +keep-cache ditto but keep RRset and message cache\n"); printf(" stats print statistics\n"); printf(" stats_noreset peek at statistics\n"); #ifdef HAVE_SHMGET From 8afbc0944f054a0a60d0e19e3db9852efb43f4ba Mon Sep 17 00:00:00 2001 From: Tian Lan Date: Fri, 15 Apr 2022 15:26:16 -0400 Subject: [PATCH 007/177] Add prefetch support for subnet cache entries - Entries in the subnet cache should now be prefetched. - Rename testdata subnet_*.crpl to subnet_*.rpl so they are visible to make test Signed-off-by: Tian Lan --- edns-subnet/subnetmod.c | 46 +++++++++------ edns-subnet/subnetmod.h | 8 +++ services/mesh.c | 127 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 161 insertions(+), 20 deletions(-) diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index fcea71c31..02994b3ab 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -97,8 +97,8 @@ subnet_new_qstate(struct module_qstate *qstate, int id) } /** Add ecs struct to edns list, after parsing it to wire format. */ -static void -ecs_opt_list_append(struct ecs_data* ecs, struct edns_option** list, +void +subnet_ecs_opt_list_append(struct ecs_data* ecs, struct edns_option** list, struct module_qstate *qstate) { size_t sn_octs, sn_octs_remainder; @@ -164,7 +164,7 @@ int ecs_whitelist_check(struct query_info* qinfo, * set. */ if(!edns_opt_list_find(qstate->edns_opts_back_out, qstate->env->cfg->client_subnet_opcode)) { - ecs_opt_list_append(&sq->ecs_server_out, + subnet_ecs_opt_list_append(&sq->ecs_server_out, &qstate->edns_opts_back_out, qstate); } sq->subnet_sent = 1; @@ -231,7 +231,7 @@ subnetmod_init(struct module_env *env, int id) env->unique_mesh = 1; if(!edns_register_option(env->cfg->client_subnet_opcode, env->cfg->client_subnet_always_forward /* bypass cache */, - 0 /* no aggregation */, env)) { + 1 /* no aggregation */, env)) { log_err("subnetcache: could not register opcode"); ecs_whitelist_delete(sn_env->whitelist); slabhash_delete(sn_env->subnet_msg_cache); @@ -330,11 +330,15 @@ update_cache(struct module_qstate *qstate, int id) struct slabhash *subnet_msg_cache = sne->subnet_msg_cache; struct ecs_data *edns = &sq->ecs_client_in; size_t i; + hashvalue_type h; + + /* qinfo_hash is not set if it is prefetch request */ + if (qstate->minfo[id] && ((struct subnet_qstate*)qstate->minfo[id])->qinfo_hash) { + h = ((struct subnet_qstate*)qstate->minfo[id])->qinfo_hash; + } else { + h = query_info_hash(&qstate->qinfo, qstate->query_flags); + } - /* We already calculated hash upon lookup */ - hashvalue_type h = qstate->minfo[id] ? - ((struct subnet_qstate*)qstate->minfo[id])->qinfo_hash : - query_info_hash(&qstate->qinfo, qstate->query_flags); /* Step 1, general qinfo lookup */ struct lruhash_entry *lru_entry = slabhash_lookup(subnet_msg_cache, h, &qstate->qinfo, 1); @@ -380,7 +384,7 @@ update_cache(struct module_qstate *qstate, int id) log_err("subnetcache: cache insertion failed"); return; } - + /* store RRsets */ for(i=0; irrset_count; i++) { rep->ref[i].key = rep->rrsets[i]; @@ -402,7 +406,7 @@ update_cache(struct module_qstate *qstate, int id) /** Lookup in cache and reply true iff reply is sent. */ static int -lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate *sq) +lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate *sq, int prefetch) { struct lruhash_entry *e; struct module_env *env = qstate->env; @@ -451,6 +455,10 @@ lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate *sq) INET6_SIZE); sq->ecs_client_out.subnet_validdata = 1; } + + if (prefetch && *qstate->env->now > ((struct reply_info *)node->elem)->prefetch_ttl) { + qstate->need_refetch = 1; + } return 1; } @@ -487,7 +495,7 @@ eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) * module_finished */ return module_finished; } - + /* We have not asked for subnet data */ if (!sq->subnet_sent) { if (s_in->subnet_validdata) @@ -496,7 +504,7 @@ eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) cp_edns_bad_response(c_out, c_in); return module_finished; } - + /* subnet sent but nothing came back */ if (!s_in->subnet_validdata) { /* The authority indicated no support for edns subnet. As a @@ -513,11 +521,11 @@ eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) cp_edns_bad_response(c_out, c_in); return module_finished; } - + /* Being here means we have asked for and got a subnet specific * answer. Also, the answer from the authority is not yet cached * anywhere. */ - + /* can we accept response? */ if(s_out->subnet_addr_fam != s_in->subnet_addr_fam || s_out->subnet_source_mask != s_in->subnet_source_mask || @@ -602,7 +610,7 @@ parse_subnet_option(struct edns_option* ecs_option, struct ecs_data* ecs) return 1; } -static void +void subnet_option_from_ss(struct sockaddr_storage *ss, struct ecs_data* ecs, struct config_file* cfg) { @@ -759,13 +767,13 @@ subnetmod_operate(struct module_qstate *qstate, enum module_ev event, } lock_rw_wrlock(&sne->biglock); - if (lookup_and_reply(qstate, id, sq)) { + if (qstate->mesh_info->reply_list && lookup_and_reply(qstate, id, sq, qstate->env->cfg->prefetch)) { sne->num_msg_cache++; lock_rw_unlock(&sne->biglock); verbose(VERB_QUERY, "subnetcache: answered from cache"); qstate->ext_state[id] = module_finished; - ecs_opt_list_append(&sq->ecs_client_out, + subnet_ecs_opt_list_append(&sq->ecs_client_out, &qstate->edns_opts_front_out, qstate); return; } @@ -787,7 +795,7 @@ subnetmod_operate(struct module_qstate *qstate, enum module_ev event, sq->ecs_server_out.subnet_source_mask = qstate->env->cfg->max_client_subnet_ipv6; /* Safe to copy completely, even if the source is limited by the - * configuration. ecs_opt_list_append() will limit the address. + * configuration. subnet_ecs_opt_list_append() will limit the address. * */ memcpy(&sq->ecs_server_out.subnet_addr, sq->ecs_client_in.subnet_addr, INET6_SIZE); @@ -811,7 +819,7 @@ subnetmod_operate(struct module_qstate *qstate, enum module_ev event, qstate->ext_state[id] = eval_response(qstate, id, sq); if(qstate->ext_state[id] == module_finished && qstate->return_msg) { - ecs_opt_list_append(&sq->ecs_client_out, + subnet_ecs_opt_list_append(&sq->ecs_client_out, &qstate->edns_opts_front_out, qstate); } qstate->no_cache_store = sq->started_no_cache_store; diff --git a/edns-subnet/subnetmod.h b/edns-subnet/subnetmod.h index 27ba2ee74..8e6ccd66e 100644 --- a/edns-subnet/subnetmod.h +++ b/edns-subnet/subnetmod.h @@ -143,4 +143,12 @@ int ecs_query_response(struct module_qstate* qstate, struct dns_msg* response, /** mark subnet msg to be deleted */ void subnet_markdel(void* key); +/** Add ecs struct to edns list, after parsing it to wire format. */ +void subnet_ecs_opt_list_append(struct ecs_data* ecs, struct edns_option** list, + struct module_qstate *qstate); + +/** Create ecs_data from the sockaddr_storage information. */ +void subnet_option_from_ss(struct sockaddr_storage *ss, struct ecs_data* ecs, + struct config_file* cfg); + #endif /* SUBNETMOD_H */ diff --git a/services/mesh.c b/services/mesh.c index 4b022d47f..1f3eadad2 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -64,6 +64,11 @@ #include "respip/respip.h" #include "services/listen_dnsport.h" +#ifdef CLIENT_SUBNET +#include "edns-subnet/subnetmod.h" +#include "edns-subnet/edns-subnet.h" +#endif + /** subtract timers and the values do not overflow or become negative */ static void timeval_subtract(struct timeval* d, const struct timeval* end, const struct timeval* start) @@ -683,6 +688,107 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, return 1; } +#ifdef CLIENT_SUBNET +/* Same logic as mesh_schedule_prefetch but tailored to the subnet module logic + * like passing along the comm_reply info. This will be faked into an EDNS + * option for processing by the subnet module if the client has not already + * attached its own ECS data. */ +static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, + struct query_info* qinfo, uint16_t qflags, time_t leeway, int run, + int rpz_passthru, struct mesh_state* mstate, + struct sockaddr_storage *client_addr) +{ + struct mesh_state* s = NULL; + struct edns_option* opt = NULL; +#ifdef UNBOUND_DEBUG + struct rbnode_type* n; +#endif + + if(!mesh_make_new_space(mesh, NULL)) { + verbose(VERB_ALGO, "Too many queries. dropped prefetch."); + mesh->stats_dropped ++; + return; + } + + s = mesh_state_create(mesh->env, qinfo, NULL, + qflags&(BIT_RD|BIT_CD), 0, 0); + if(!s) { + log_err("prefetch_subnet mesh_state_create: out of memory"); + return; + } + + mesh_state_make_unique(s); + + opt = edns_opt_list_find(mstate->s.edns_opts_front_in, mesh->env->cfg->client_subnet_opcode); + if(opt) { + /* Use the client's ECS data */ + if(!edns_opt_list_append(&s->s.edns_opts_front_in, opt->opt_code, + opt->opt_len, opt->opt_data, s->s.region)) { + log_err("prefetch_subnet edns_opt_list_append: out of memory"); + return; + } + } else { + /* Fake the ECS data from the client's IP */ + struct ecs_data ecs; + memset(&ecs, 0, sizeof(ecs)); + subnet_option_from_ss(client_addr, &ecs, mesh->env->cfg); + + if(ecs.subnet_validdata == 0) { + log_err("prefetch_subnet subnet_option_from_ss: invalid data"); + return; + } + + subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in, &s->s); + if(!s->s.edns_opts_front_in) { + log_err("prefetch_subnet subnet_ecs_opt_list_append: out of memory"); + return; + } + } +#ifdef UNBOUND_DEBUG + n = +#else + (void) +#endif + rbtree_insert(&mesh->all, &s->node); + log_assert(n != NULL); + /* set detached (it is now) */ + mesh->num_detached_states++; + /* make it ignore the cache */ + sock_list_insert(&s->s.blacklist, NULL, 0, s->s.region); + s->s.prefetch_leeway = leeway; + + if(s->list_select == mesh_no_list) { + /* move to either the forever or the jostle_list */ + if(mesh->num_forever_states < mesh->max_forever_states) { + mesh->num_forever_states ++; + mesh_list_insert(s, &mesh->forever_first, + &mesh->forever_last); + s->list_select = mesh_forever_list; + } else { + mesh_list_insert(s, &mesh->jostle_first, + &mesh->jostle_last); + s->list_select = mesh_jostle_list; + } + } + + s->s.rpz_passthru = rpz_passthru; + + if(!run) { +#ifdef UNBOUND_DEBUG + n = +#else + (void) +#endif + rbtree_insert(&mesh->run, &s->run_node); + log_assert(n != NULL); + return; + } + + mesh_state_delete(&mstate->s); + mesh_run(mesh, s, module_event_new, NULL); +} +#endif /* CLIENT_SUBNET */ + /* Internal backend routine of mesh_new_prefetch(). It takes one additional * parameter, 'run', which controls whether to run the prefetch state * immediately. When this function is called internally 'run' could be @@ -1699,6 +1805,11 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, struct query_info* qinfo = NULL; uint16_t qflags; int rpz_p = 0; + struct sockaddr_storage client_addr; + + if (mstate->reply_list) { + client_addr = mstate->reply_list->query_reply.addr; + } mesh_query_done(mstate); mesh_walk_supers(mesh, mstate); @@ -1712,10 +1823,24 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, rpz_p = mstate->s.rpz_passthru; } - mesh_state_delete(&mstate->s); if(qinfo) { +#ifdef CLIENT_SUBNET + if(modstack_find(&mesh->mods, "subnetcache") != -1 ) { + mesh_schedule_prefetch_subnet(mesh, qinfo, qflags, + 0, 1, rpz_p, mstate, &client_addr); + } + else { + mesh_state_delete(&mstate->s); + mesh_schedule_prefetch(mesh, qinfo, qflags, + 0, 1, rpz_p); + } +#else + mesh_state_delete(&mstate->s); mesh_schedule_prefetch(mesh, qinfo, qflags, 0, 1, rpz_p); +#endif + } else { + mesh_state_delete(&mstate->s); } return 0; } From 1464b166a4fc7028ec21ff7afa9f0f20b96d5051 Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Fri, 22 Jul 2022 18:21:21 +1000 Subject: [PATCH 008/177] fix use after free when WSACreateEvent() fails --- util/tube.c | 1 + 1 file changed, 1 insertion(+) diff --git a/util/tube.c b/util/tube.c index 40556e720..422fdfc86 100644 --- a/util/tube.c +++ b/util/tube.c @@ -507,6 +507,7 @@ struct tube* tube_create(void) if(tube->event == WSA_INVALID_EVENT) { free(tube); log_err("WSACreateEvent: %s", wsa_strerror(WSAGetLastError())); + return NULL; } if(!WSAResetEvent(tube->event)) { log_err("WSAResetEvent: %s", wsa_strerror(WSAGetLastError())); From fccb2eb2e809d5df49d6c2ea366fda9b2511b873 Mon Sep 17 00:00:00 2001 From: JINMEI Tatuya Date: Fri, 22 Jul 2022 14:33:21 -0700 Subject: [PATCH 009/177] prevent memory leak in case cache isn't reused --- daemon/daemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index e70ece168..2b4c38028 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -788,13 +788,13 @@ daemon_cleanup(struct daemon* daemon) worker_delete(daemon->workers[i]); free(daemon->workers); daemon->workers = NULL; - daemon->num = 0; /* Unless we're trying to keep the cache, worker alloc_caches should be * cleared and freed here. We do this after deleting workers to * guarantee that the alloc caches are valid throughout the lifetime * of workers. */ if(!daemon->reuse_cache || daemon->need_to_exit) daemon_clear_allocs(daemon); + daemon->num = 0; #ifdef USE_DNSTAP dt_delete(daemon->dtenv); daemon->dtenv = NULL; From 14fe4669e79ebd98ce0ffc8b1f51fbb983ec2d91 Mon Sep 17 00:00:00 2001 From: TCY16 Date: Fri, 12 Aug 2022 14:09:00 +0200 Subject: [PATCH 010/177] fix testcase comment --- testdata/svcb.tdir/svcb.failure-cases-01 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/svcb.tdir/svcb.failure-cases-01 b/testdata/svcb.tdir/svcb.failure-cases-01 index c60151692..49b83651a 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-01 +++ b/testdata/svcb.tdir/svcb.failure-cases-01 @@ -3,7 +3,7 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; Here there are multiple instances of the same SvcParamKey in the mandatory list +; These cases should be bnase64 encoded but aren't f21 HTTPS 1 foo.example.com. ech="123" f21 HTTPS 1 foo.example.com. echconfig="123" From 6e31d1f5beb542e81d722f39cae92e59b95fad5a Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 15 Aug 2022 14:36:35 +0200 Subject: [PATCH 011/177] add dohpath parsing --- sldns/str2wire.c | 42 ++++++++++++++++++++++++++++++++++++++++++ sldns/str2wire.h | 7 +++++-- sldns/wire2str.c | 31 ++++++++++++++++++++++++++++++- 3 files changed, 77 insertions(+), 3 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 303d49ba6..a620738c2 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1150,6 +1150,11 @@ sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) return SVCB_KEY_IPV6HINT; break; + case sizeof("dohpath")-1: + if (!strncmp(key, "dohpath", sizeof("dohpath")-1)) + return SVCB_KEY_DOHPATH; + break; + case sizeof("ech")-1: if (!strncmp(key, "ech", sizeof("ech")-1)) return SVCB_KEY_ECH; @@ -1515,6 +1520,40 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, return LDNS_WIREPARSE_ERR_OK; } +static int +sldns_str2wire_svcbparam_dohpath_value(const char* val, + uint8_t* rd, size_t* rd_len) +{ + size_t val_len; + + /* RFC6570#section-2.1 + * "The characters outside of expressions in a URI Template string are + * intended to be copied literally" + * Practically this means we do not have to look for "double escapes" + * like in the alpn value list. + */ + + val_len = strlen(val); + + if (*rd_len < 4 + val_len) { + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + } + + /* draft-ietf-add-svcb-dns-06#section-5.1 + * The URI Template MUST contain a "dns" variable + */ + if (!(strstr(val, "?dns"))) { + return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; + } + + sldns_write_uint16(rd, SVCB_KEY_DOHPATH); + sldns_write_uint16(rd + 2, val_len); + memcpy(rd + 4, val, val_len); + *rd_len = 4 + val_len; + + return LDNS_WIREPARSE_ERR_OK; +} + static int sldns_str2wire_svcparam_value(const char *key, size_t key_len, const char *val, uint8_t* rd, size_t* rd_len) @@ -1535,6 +1574,7 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, case SVCB_KEY_PORT: case SVCB_KEY_IPV4HINT: case SVCB_KEY_IPV6HINT: + case SVCB_KEY_DOHPATH: return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; #endif default: @@ -1566,6 +1606,8 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); case SVCB_KEY_ALPN: return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); + case SVCB_KEY_DOHPATH: + return sldns_str2wire_svcbparam_dohpath_value(val, rd, rd_len); default: str_len = strlen(val); if (*rd_len < 4 + str_len) diff --git a/sldns/str2wire.h b/sldns/str2wire.h index baee4236f..18cfc4fa7 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -38,7 +38,8 @@ struct sldns_struct_lookup_table; #define SVCB_KEY_IPV4HINT 4 #define SVCB_KEY_ECH 5 #define SVCB_KEY_IPV6HINT 6 -#define SVCPARAMKEY_COUNT 7 +#define SVCB_KEY_DOHPATH 7 +#define SVCPARAMKEY_COUNT 8 #define MAX_NUMBER_OF_SVCPARAMS 64 @@ -234,7 +235,9 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES 383 #define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 384 #define LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE 385 -#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 386 +#define LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH 386 +#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 387 + /** * Get reference to a constant string for the (parse) error. diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 74d1b62df..5740aee77 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -171,6 +171,8 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { "Alpn strings need to be smaller than 255 chars"}, { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, "No-default-alpn should not have a value" }, + { LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH, + "Dohpath must have '?dns' in the URI template variable" }, { LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA, "General SVCParam error" }, { 0, NULL } @@ -224,7 +226,7 @@ sldns_lookup_table* sldns_tsig_errors = sldns_tsig_errors_data; /* draft-ietf-dnsop-svcb-https-06: 6. Initial SvcParamKeys */ const char *svcparamkey_strs[] = { "mandatory", "alpn", "no-default-alpn", "port", - "ipv4hint", "ech", "ipv6hint" + "ipv4hint", "ech", "ipv6hint", "dohpath" }; char* sldns_wire2str_pkt(uint8_t* data, size_t len) @@ -1144,6 +1146,29 @@ static int sldns_wire2str_svcparam_ech2str(char** s, return w + size; } +static int sldns_wire2str_svcparam_dohpath2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + int w = 0; + uint16_t i; + + assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ + + w += sldns_str_print(s, slen, "=\""); + + /* RC6570#section-2.1 specifies that the '\' (and other non-letter + * characters in the URI) are "intended to be copied literally" */ + for (i = 0; i < data_len; i++) { + // @TODO do a check like isprint()? + + w += sldns_str_print(s, slen, "%c", data[i]); + } + + w += sldns_str_print(s, slen, "\""); + + return w; +} + int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { uint8_t ch; @@ -1174,6 +1199,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl case SVCB_KEY_IPV4HINT: case SVCB_KEY_IPV6HINT: case SVCB_KEY_MANDATORY: + case SVCB_KEY_DOHPATH: return -1; default: return written_chars; @@ -1201,6 +1227,9 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl case SVCB_KEY_ECH: r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); break; + case SVCB_KEY_DOHPATH: + r = sldns_wire2str_svcparam_dohpath2str(s, slen, data_len, *d); + break; default: r = sldns_str_print(s, slen, "=\""); From 73b3b3206276e29dd70d7fa337b90200913b4b6b Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 15 Aug 2022 14:41:06 +0200 Subject: [PATCH 012/177] fix styling nits --- sldns/str2wire.c | 22 +++++++++++----------- sldns/wire2str.c | 14 +++++++------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index a620738c2..5497af999 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -357,7 +357,7 @@ rrinternal_get_delims(sldns_rdf_type rdftype, size_t r_cnt, size_t r_max) break; default : break; } - return "\n\t "; + return "\n\t "; } /* Syntactic sugar for sldns_rr_new_frm_str_internal */ @@ -448,7 +448,7 @@ rrinternal_parse_unknown(sldns_buffer* strbuf, char* token, size_t token_len, sldns_buffer_position(strbuf)); } hex_data_size = (size_t)atoi(token); - if(hex_data_size > LDNS_MAX_RDFLEN || + if(hex_data_size > LDNS_MAX_RDFLEN || *rr_cur_len + hex_data_size > *rr_len) { return RET_ERR(LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL, sldns_buffer_position(strbuf)); @@ -567,7 +567,7 @@ sldns_parse_rdf_token(sldns_buffer* strbuf, char* token, size_t token_len, /* check if not quoted yet, and we have encountered quotes */ if(!*quoted && sldns_rdf_type_maybe_quoted(rdftype) && slen >= 2 && - (token[0] == '"' || token[0] == '\'') && + (token[0] == '"' || token[0] == '\'') && (token[slen-1] == '"' || token[slen-1] == '\'')) { /* move token two smaller (quotes) with endnull */ memmove(token, token+1, slen-2); @@ -785,7 +785,7 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, token[2]=='\t')) { was_unknown_rr_format = 1; if((status=rrinternal_parse_unknown(strbuf, token, - token_len, rr, rr_len, &rr_cur_len, + token_len, rr, rr_len, &rr_cur_len, pre_data_pos)) != 0) return status; } else if(token_strlen > 0 || quoted) { @@ -844,7 +844,7 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, if (rr_type == LDNS_RR_TYPE_SVCB || rr_type == LDNS_RR_TYPE_HTTPS) { size_t rdata_len = rr_cur_len - dname_len - 10; uint8_t *rdata = rr+dname_len + 10; - + /* skip 1st rdata field SvcPriority (uint16_t) */ if (rdata_len < sizeof(uint16_t)) return LDNS_WIREPARSE_ERR_OK; @@ -1482,7 +1482,7 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, size_t str_len; size_t dst_len; size_t val_len; - + val_len = strlen(val); if (val_len > sizeof(unescaped_dst)) { @@ -1516,7 +1516,7 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, sldns_write_uint16(rd + 2, dst_len); memcpy(rd + 4, unescaped_dst, dst_len); *rd_len = 4 + dst_len; - + return LDNS_WIREPARSE_ERR_OK; } @@ -1635,7 +1635,7 @@ static int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_ /* case: key=value */ if (eq_pos != NULL && eq_pos[1]) { val_in = eq_pos + 1; - + /* unescape characters and "" blocks */ if (*val_in == '"') { val_in++; @@ -1652,11 +1652,11 @@ static int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_ } *val_out = 0; - return sldns_str2wire_svcparam_value(str, eq_pos - str, - unescaped_val[0] ? unescaped_val : NULL, rd, rd_len); + return sldns_str2wire_svcparam_value(str, eq_pos - str, + unescaped_val[0] ? unescaped_val : NULL, rd, rd_len); } /* case: key= */ - else if (eq_pos != NULL && !(eq_pos[1])) { + else if (eq_pos != NULL && !(eq_pos[1])) { return sldns_str2wire_svcparam_value(str, eq_pos - str, NULL, rd, rd_len); } /* case: key */ diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 5740aee77..d0b89cb75 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -159,7 +159,7 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { "Mandatory SvcParamKey is missing"}, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY, "Keys in SvcParam mandatory MUST be unique" }, - { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY, "mandatory MUST not be included as mandatory parameter" }, { LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX, "Could not parse port SvcParamValue" }, @@ -489,7 +489,7 @@ int sldns_wire2str_rr_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, uint8_t* rr = *d; size_t rrlen = *dlen, dname_off, rdlen, ordlen; uint16_t rrtype = 0; - + if(*dlen >= 3 && (*d)[0]==0 && sldns_read_uint16((*d)+1)==LDNS_RR_TYPE_OPT) { /* perform EDNS OPT processing */ @@ -1121,7 +1121,7 @@ static int sldns_wire2str_svcparam_alpn2str(char** s, w += sldns_str_print(s, slen, "%s", ","); } w += sldns_str_print(s, slen, "\""); - + return w; } @@ -1141,7 +1141,7 @@ static int sldns_wire2str_svcparam_ech2str(char** s, (*s) += size; (*slen) -= size; - w += sldns_str_print(s, slen, "\""); + w += sldns_str_print(s, slen, "\""); return w + size; } @@ -1187,7 +1187,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl /* verify that we have data_len data */ if (data_len > *dlen) - return -1; + return -1; written_chars += sldns_print_svcparamkey(s, slen, svcparamkey); if (!data_len) { @@ -1251,7 +1251,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl } if (r <= 0) return -1; /* wireformat error */ - + written_chars += r; *d += data_len; *dlen -= data_len; @@ -1580,7 +1580,7 @@ int sldns_wire2str_nsec_scan(uint8_t** d, size_t* dl, char** s, size_t* sl) unsigned i, bit, window, block_len; uint16_t t; int w = 0; - + /* check for errors */ while(pl) { if(pl < 2) return -1; From b465e0cfc03392f9b82b8286e26856ba7e940e2f Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 15 Aug 2022 16:12:22 +0200 Subject: [PATCH 013/177] add testcase and fix comment --- sldns/str2wire.c | 2 +- testdata/svcb.tdir/svcb.success-cases.zone | 5 +++++ testdata/svcb.tdir/svcb.success-cases.zone.cmp | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 5497af999..9f1fb0fca 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -698,7 +698,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) mandatory = svcparams[i]; } - /* 4. verify that all the SvcParamKeys in mandatory are present */ + /* Verify that all the SvcParamKeys in mandatory are present */ if(mandatory) { /* Divide by sizeof(uint16_t)*/ uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index 5d6339542..d63456369 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -45,3 +45,8 @@ s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a ke ; maximum alpn size allowed (255 characters) s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) + +; dohpath can be (non-)quoted and MUST contain "?dns" + +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/dns-query{?dns}" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?dns} diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp index e504e7b18..545333ba8 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone.cmp +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -8,3 +8,5 @@ s06.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" \ No newline at end of file From 8d939691a3a661ffce31bdcb3da9cb07b88ee65b Mon Sep 17 00:00:00 2001 From: TCY16 Date: Fri, 19 Aug 2022 14:48:47 +0200 Subject: [PATCH 014/177] implement @wcawijngaards' review comment --- sldns/wire2str.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sldns/wire2str.c b/sldns/wire2str.c index d0b89cb75..75753f910 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -1157,11 +1157,14 @@ static int sldns_wire2str_svcparam_dohpath2str(char** s, w += sldns_str_print(s, slen, "=\""); /* RC6570#section-2.1 specifies that the '\' (and other non-letter - * characters in the URI) are "intended to be copied literally" */ + * characters in the URI) are "intended to be copied literally" (as + * opposed to the alpn printing) */ for (i = 0; i < data_len; i++) { - // @TODO do a check like isprint()? - - w += sldns_str_print(s, slen, "%c", data[i]); + if (!isprint(data[i])) { + w += sldns_str_print(s, slen, "\\%03u", (unsigned) data[i]); + } else { + w += sldns_str_print(s, slen, "%c", data[i]); + } } w += sldns_str_print(s, slen, "\""); From f3fa3634431806759d61470458fef123dbf1f1f8 Mon Sep 17 00:00:00 2001 From: TCY16 Date: Wed, 24 Aug 2022 12:38:08 +0200 Subject: [PATCH 015/177] implement @gthess' review comments; fix check on compulsory text and add tests --- sldns/str2wire.c | 14 ++++++++++++-- testdata/svcb.tdir/svcb.failure-cases-05 | 8 ++++++++ testdata/svcb.tdir/svcb.success-cases.zone | 1 + testdata/svcb.tdir/svcb.success-cases.zone.cmp | 3 ++- testdata/svcb.tdir/svcb.test | 6 ++++++ 5 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 testdata/svcb.tdir/svcb.failure-cases-05 diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 9f1fb0fca..90648245b 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1525,6 +1525,7 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, uint8_t* rd, size_t* rd_len) { size_t val_len; + char* open_bracket, * close_bracket, * expr_ptr; /* RFC6570#section-2.1 * "The characters outside of expressions in a URI Template string are @@ -1542,8 +1543,17 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, /* draft-ietf-add-svcb-dns-06#section-5.1 * The URI Template MUST contain a "dns" variable */ - if (!(strstr(val, "?dns"))) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; + open_bracket = strchr(val, '{'); + close_bracket = strchr(val, '}'); + + if (!open_bracket && !close_bracket) { + return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; + } else { + expr_ptr = strstr(open_bracket+1, "?dns"); + + if (!expr_ptr || !((close_bracket - expr_ptr) >= 4 ) ) { + return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; + } } sldns_write_uint16(rd, SVCB_KEY_DOHPATH); diff --git a/testdata/svcb.tdir/svcb.failure-cases-05 b/testdata/svcb.tdir/svcb.failure-cases-05 new file mode 100644 index 000000000..67246c954 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-05 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Dohpath must have '?dns' in the URI template variable + +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?d} \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index d63456369..f625c6c5e 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -50,3 +50,4 @@ s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/dns-query{?dns}" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?dns} +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-queryéè{?dns} diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp index 545333ba8..9075cc6b5 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone.cmp +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -9,4 +9,5 @@ s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" -_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" \ No newline at end of file +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query\195\169\195\168{?dns}" diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index 17330e08f..88a9e95ff 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -75,6 +75,12 @@ then echo "Failure case 04: 256 is too many characters for an alpn; maximum is 255" echo "Incorrectly succeeded" exit 1 + +elif $PRE/readzone svcb.failure-cases-05 +then + echo "Dohpath must have '?dns' in the URI template variable" + echo "Incorrectly succeeded" + exit 1 else echo "All failure cases test successfully" fi From b642c5fe1f34cba894d8779a0a97f367cdc20d5b Mon Sep 17 00:00:00 2001 From: TCY16 Date: Thu, 25 Aug 2022 14:06:13 +0200 Subject: [PATCH 016/177] add better URI template checking --- sldns/str2wire.c | 39 ++++++++++++++----- sldns/wire2str.c | 2 +- testdata/svcb.tdir/svcb.success-cases.zone | 3 +- .../svcb.tdir/svcb.success-cases.zone.cmp | 3 +- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 90648245b..d210e6cd0 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1525,7 +1525,9 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, uint8_t* rd, size_t* rd_len) { size_t val_len; - char* open_bracket, * close_bracket, * expr_ptr; + char* open_bracket, * close_bracket; + const char* next_char; + uint8_t expr_found = 0; /* RFC6570#section-2.1 * "The characters outside of expressions in a URI Template string are @@ -1541,19 +1543,36 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, } /* draft-ietf-add-svcb-dns-06#section-5.1 - * The URI Template MUST contain a "dns" variable + * "The URI Template MUST contain a "dns" variable" + * A URI Template is alowed to have multiple variables */ - open_bracket = strchr(val, '{'); - close_bracket = strchr(val, '}'); + next_char = val; + while (next_char && *next_char != '\0') { + char* c; - if (!open_bracket && !close_bracket) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - } else { - expr_ptr = strstr(open_bracket+1, "?dns"); - - if (!expr_ptr || !((close_bracket - expr_ptr) >= 4 ) ) { + open_bracket = strchr(next_char, '{'); + if (!open_bracket) { return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; + break; } + + close_bracket = strchr(open_bracket, '}'); + if (!close_bracket) { + return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; + + } + for (c = open_bracket+1; (close_bracket - c) >= 4; c++) { + if (c[0] == '?' && c[1] == 'd' && c[2] == 'n' + && c[3] == 's') { + expr_found++; + } + } + + next_char = close_bracket+1; + } + + if (expr_found != 1) { + return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; } sldns_write_uint16(rd, SVCB_KEY_DOHPATH); diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 75753f910..5bb13f03b 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -172,7 +172,7 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, "No-default-alpn should not have a value" }, { LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH, - "Dohpath must have '?dns' in the URI template variable" }, + "Dohpath must contain a correct URI template variable which contains '?dns'" }, { LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA, "General SVCParam error" }, { 0, NULL } diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index f625c6c5e..fbe1fcb5f 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -49,5 +49,6 @@ s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ; dohpath can be (non-)quoted and MUST contain "?dns" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/dns-query{?dns}" -_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?dns} +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcd}{!abcd}{?dns} +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcdabcd?dns?defedf} _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-queryéè{?dns} diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp index 9075cc6b5..91ea71682 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone.cmp +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -9,5 +9,6 @@ s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" -_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?abcd}{!abcd}{?dns}" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?abcdabcd?dns?defedf}" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query\195\169\195\168{?dns}" From 5bf4c505db86ef597528012272f834a5c553fddf Mon Sep 17 00:00:00 2001 From: TCY16 Date: Fri, 28 Oct 2022 17:40:18 +0200 Subject: [PATCH 017/177] remove value check --- sldns/str2wire.c | 36 ------------------------ sldns/str2wire.h | 3 +- sldns/wire2str.c | 31 +------------------- testdata/svcb.tdir/svcb.failure-cases-05 | 8 ------ 4 files changed, 2 insertions(+), 76 deletions(-) delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-05 diff --git a/sldns/str2wire.c b/sldns/str2wire.c index d210e6cd0..5633f5428 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1525,9 +1525,6 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, uint8_t* rd, size_t* rd_len) { size_t val_len; - char* open_bracket, * close_bracket; - const char* next_char; - uint8_t expr_found = 0; /* RFC6570#section-2.1 * "The characters outside of expressions in a URI Template string are @@ -1542,39 +1539,6 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; } - /* draft-ietf-add-svcb-dns-06#section-5.1 - * "The URI Template MUST contain a "dns" variable" - * A URI Template is alowed to have multiple variables - */ - next_char = val; - while (next_char && *next_char != '\0') { - char* c; - - open_bracket = strchr(next_char, '{'); - if (!open_bracket) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - break; - } - - close_bracket = strchr(open_bracket, '}'); - if (!close_bracket) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - - } - for (c = open_bracket+1; (close_bracket - c) >= 4; c++) { - if (c[0] == '?' && c[1] == 'd' && c[2] == 'n' - && c[3] == 's') { - expr_found++; - } - } - - next_char = close_bracket+1; - } - - if (expr_found != 1) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - } - sldns_write_uint16(rd, SVCB_KEY_DOHPATH); sldns_write_uint16(rd + 2, val_len); memcpy(rd + 4, val, val_len); diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 18cfc4fa7..5e4d146d3 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -235,8 +235,7 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES 383 #define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 384 #define LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE 385 -#define LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH 386 -#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 387 +#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 386 /** diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 5bb13f03b..e6278ff56 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -171,8 +171,6 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { "Alpn strings need to be smaller than 255 chars"}, { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, "No-default-alpn should not have a value" }, - { LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH, - "Dohpath must contain a correct URI template variable which contains '?dns'" }, { LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA, "General SVCParam error" }, { 0, NULL } @@ -1146,32 +1144,6 @@ static int sldns_wire2str_svcparam_ech2str(char** s, return w + size; } -static int sldns_wire2str_svcparam_dohpath2str(char** s, - size_t* slen, uint16_t data_len, uint8_t* data) -{ - int w = 0; - uint16_t i; - - assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ - - w += sldns_str_print(s, slen, "=\""); - - /* RC6570#section-2.1 specifies that the '\' (and other non-letter - * characters in the URI) are "intended to be copied literally" (as - * opposed to the alpn printing) */ - for (i = 0; i < data_len; i++) { - if (!isprint(data[i])) { - w += sldns_str_print(s, slen, "\\%03u", (unsigned) data[i]); - } else { - w += sldns_str_print(s, slen, "%c", data[i]); - } - } - - w += sldns_str_print(s, slen, "\""); - - return w; -} - int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { uint8_t ch; @@ -1231,8 +1203,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); break; case SVCB_KEY_DOHPATH: - r = sldns_wire2str_svcparam_dohpath2str(s, slen, data_len, *d); - break; + /* fallthrough */ default: r = sldns_str_print(s, slen, "=\""); diff --git a/testdata/svcb.tdir/svcb.failure-cases-05 b/testdata/svcb.tdir/svcb.failure-cases-05 deleted file mode 100644 index 67246c954..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-05 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; Dohpath must have '?dns' in the URI template variable - -_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?d} \ No newline at end of file From 64fb06f892ba8b3bc6219c3853461114e2aed2f8 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Sat, 23 Jul 2022 14:26:20 -0400 Subject: [PATCH 018/177] NAT64 support This implements #721. Includes documentation and some very basic tests. Please refer to doc for further detail. --- daemon/cachedump.c | 3 +- doc/Changelog | 3 + doc/README.DNS64 | 20 ++++++ doc/example.conf.in | 10 +++ doc/unbound.conf.5.in | 12 ++++ iterator/iter_utils.c | 41 ++++++++++- iterator/iter_utils.h | 3 +- iterator/iterator.c | 52 +++++++++++--- iterator/iterator.h | 12 ++++ pythonmod/interface.i | 5 +- testdata/iter_nat64.rpl | 117 ++++++++++++++++++++++++++++++ testdata/iter_nat64_prefix.rpl | 118 +++++++++++++++++++++++++++++++ testdata/iter_nat64_prefix48.rpl | 118 +++++++++++++++++++++++++++++++ util/config_file.h | 5 ++ util/configlexer.lex | 2 + util/configparser.y | 24 ++++++- 16 files changed, 528 insertions(+), 17 deletions(-) create mode 100644 testdata/iter_nat64.rpl create mode 100644 testdata/iter_nat64_prefix.rpl create mode 100644 testdata/iter_nat64_prefix48.rpl diff --git a/daemon/cachedump.c b/daemon/cachedump.c index baf8008ea..3c5f97674 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -859,7 +859,8 @@ int print_deleg_lookup(RES* ssl, struct worker* worker, uint8_t* nm, /* go up? */ if(iter_dp_is_useless(&qinfo, BIT_RD, dp, (worker->env.cfg->do_ip4 && worker->back->num_ip4 != 0), - (worker->env.cfg->do_ip6 && worker->back->num_ip6 != 0))) { + (worker->env.cfg->do_ip6 && worker->back->num_ip6 != 0), + worker->env.cfg->do_nat64)) { print_dp_main(ssl, dp, msg); print_dp_details(ssl, worker, dp); if(!ssl_printf(ssl, "cache delegation was " diff --git a/doc/Changelog b/doc/Changelog index 32e7ae8ae..2a8bf5530 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 November 2022: equinox (David Lamparter) + - Implemented NAT64 support + 21 October 2022: George - Merge #767 from jonathangray: consistently use IPv4/IPv6 in unbound.conf.5. diff --git a/doc/README.DNS64 b/doc/README.DNS64 index 49446ac57..71e2310ed 100644 --- a/doc/README.DNS64 +++ b/doc/README.DNS64 @@ -28,3 +28,23 @@ prefix. For example: ;; ANSWER SECTION: jazz-v4.viagenie.ca. 86400 IN AAAA 64:ff9b::ce7b:1f02 + +NAT64 support was added by David Lamparter in 2022; license(s) of the +surrounding code apply. Note that NAT64 is closely related but functionally +orthogonal to DNS64; it allows Unbound to send outgoing queries to IPv4-only +servers over IPv6 through the configured NAT64 prefix. This allows running +an Unbound instance on an IPv6-only host without breaking every single domain +that only has IPv4 servers. Whether that Unbound instance also does DNS64 is +an independent choice. + +To enable NAT64 in Unbound, add to unbound.conf's "server" section: + + do-nat64: yes + +The NAT64 prefix defaults to the DNS64 prefix, which in turn defaults to the +standard 64:FF9B::/96 prefix. You can reconfigure it with: + + nat64-prefix: 64:FF9B::/96 + +To test NAT64 operation, pick a domain that only has IPv4 reachability for its +nameservers and try resolving any names in that domain. diff --git a/doc/example.conf.in b/doc/example.conf.in index c21246e4c..e45f497bb 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -229,6 +229,16 @@ server: # Enable IPv6, "yes" or "no". # do-ip6: yes + # If running unbound on an IPv6-only host, domains that only have + # IPv4 servers would become unresolveable. If NAT64 is available in + # the network, unbound can use NAT64 to reach these servers with + # the following option. This is NOT needed for enabling DNS64 on a + # system that has IPv4 connectivity. + # do-nat64: no + + # NAT64 prefix. Defaults to using dns64-prefix value. + # nat64-prefix: 64:ff9b::0/96 + # Enable UDP, "yes" or "no". # do-udp: yes diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index d829008a7..2f02c2640 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2268,6 +2268,18 @@ List domain for which the AAAA records are ignored and the A record is used by dns64 processing instead. Can be entered multiple times, list a new domain for which it applies, one per line. Applies also to names underneath the name given. +.SS "NAT64 Operation" +.LP +NAT64 operation allows using a NAT64 prefix for outbound requests to IPv4-only +servers. It is controlled by two options in the \fBserver:\fR section: +.TP +.B do\-nat64: \fI\fR +Use NAT64 to reach IPv4-only servers. Default no. +.TP +.B nat64\-prefix: \fI\fR +Use a specific NAT64 prefix to reach IPv4-only servers. Defaults to using +the prefix configured in \fBdns64\-prefix\fR, which in turn defaults to +64:ff9b::/96. Must be /96 or shorter. .SS "DNSCrypt Options" .LP The diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 56b184a02..98fac8186 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -71,6 +71,11 @@ /** time when nameserver glue is said to be 'recent' */ #define SUSPICION_RECENT_EXPIRY 86400 +/** if NAT64 is enabled and no NAT64 prefix is configured, first fall back to + * DNS64 prefix. If that is not configured, fall back to this default value. + */ +static const char DEFAULT_NAT64_PREFIX[] = "64:ff9b::/96"; + /** fillup fetch policy array */ static void fetch_fill(struct iter_env* ie, const char* str) @@ -142,6 +147,7 @@ caps_white_apply_cfg(rbtree_type* ntree, struct config_file* cfg) int iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) { + const char *nat64_prefix; int i; /* target fetch policy */ if(!read_fetch_policy(iter_env, cfg->target_fetch_policy)) @@ -172,8 +178,34 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) } } + + nat64_prefix = cfg->nat64_prefix; + if (!nat64_prefix) + nat64_prefix = cfg->dns64_prefix; + if (!nat64_prefix) + nat64_prefix = DEFAULT_NAT64_PREFIX; + if (!netblockstrtoaddr(nat64_prefix, 0, &iter_env->nat64_prefix_addr, + &iter_env->nat64_prefix_addrlen, + &iter_env->nat64_prefix_net)) { + log_err("cannot parse nat64-prefix netblock: %s", nat64_prefix); + return 0; + } + if (!addr_is_ip6(&iter_env->nat64_prefix_addr, + iter_env->nat64_prefix_addrlen)) { + log_err("nat64_prefix is not IPv6: %s", cfg->nat64_prefix); + return 0; + } + if (iter_env->nat64_prefix_net != 32 && iter_env->nat64_prefix_net != 40 && + iter_env->nat64_prefix_net != 48 && iter_env->nat64_prefix_net != 56 && + iter_env->nat64_prefix_net != 64 && iter_env->nat64_prefix_net != 96 ) { + log_err("dns64-prefix length it not 32, 40, 48, 56, 64 or 96: %s", + nat64_prefix); + return 0; + } + iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; + iter_env->use_nat64 = cfg->do_nat64; iter_env->outbound_msg_retry = cfg->outbound_msg_retry; return 1; } @@ -238,7 +270,8 @@ iter_filter_unsuitable(struct iter_env* iter_env, struct module_env* env, if(!iter_env->supports_ipv6 && addr_is_ip6(&a->addr, a->addrlen)) { return -1; /* there is no ip6 available */ } - if(!iter_env->supports_ipv4 && !addr_is_ip6(&a->addr, a->addrlen)) { + if(!iter_env->supports_ipv4 && !iter_env->use_nat64 && + !addr_is_ip6(&a->addr, a->addrlen)) { return -1; /* there is no ip4 available */ } /* check lameness - need zone , class info */ @@ -745,10 +778,14 @@ iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp, int supports_ipv4, int supports_ipv6) + struct delegpt* dp, int supports_ipv4, int supports_ipv6, int use_nat64) { struct delegpt_ns* ns; struct delegpt_addr* a; + + if (supports_ipv6 && use_nat64) + supports_ipv4 = 1; + /* check: * o RD qflag is on. * o no addresses are provided. diff --git a/iterator/iter_utils.h b/iterator/iter_utils.h index 850be96a6..48ea8316b 100644 --- a/iterator/iter_utils.h +++ b/iterator/iter_utils.h @@ -192,7 +192,8 @@ void iter_mark_pside_cycle_targets(struct module_qstate* qstate, * @return true if dp is useless. */ int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp, int supports_ipv4, int supports_ipv6); + struct delegpt* dp, int supports_ipv4, int supports_ipv6, + int use_nat64); /** * See if qname has DNSSEC needs. This is true if there is a trust anchor above diff --git a/iterator/iterator.c b/iterator/iterator.c index 9c8d256d3..8f4a8e04a 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -255,7 +255,7 @@ error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) log_err("out of memory adding missing"); } delegpt_mark_neg(dpns, qstate->qinfo.qtype); - if((dpns->got4 == 2 || !ie->supports_ipv4) && + if((dpns->got4 == 2 || (!ie->supports_ipv4 && !ie->use_nat64)) && (dpns->got6 == 2 || !ie->supports_ipv6)) { dpns->resolved = 1; /* mark as failed */ target_count_increase_nx(super_iq, 1); @@ -1571,7 +1571,8 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, * same server reply) if useless-checked. */ if(iter_dp_is_useless(&qstate->qinfo, qstate->query_flags, - iq->dp, ie->supports_ipv4, ie->supports_ipv6)) { + iq->dp, ie->supports_ipv4, ie->supports_ipv6, + ie->use_nat64)) { struct delegpt* retdp = NULL; if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, iq->qchase.qclass, &retdp)) { if(retdp) { @@ -2085,14 +2086,14 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, /* if this nameserver is at a delegation point, but that * delegation point is a stub and we cannot go higher, skip*/ if( ((ie->supports_ipv6 && !ns->done_pside6) || - (ie->supports_ipv4 && !ns->done_pside4)) && + ((ie->supports_ipv4 || ie->use_nat64) && !ns->done_pside4)) && !can_have_last_resort(qstate->env, ns->name, ns->namelen, iq->qchase.qclass, NULL)) { log_nametypeclass(VERB_ALGO, "cannot pside lookup ns " "because it is also a stub/forward,", ns->name, LDNS_RR_TYPE_NS, iq->qchase.qclass); if(ie->supports_ipv6) ns->done_pside6 = 1; - if(ie->supports_ipv4) ns->done_pside4 = 1; + if(ie->supports_ipv4 || ie->use_nat64) ns->done_pside4 = 1; continue; } /* query for parent-side A and AAAA for nameservers */ @@ -2117,7 +2118,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } } - if(ie->supports_ipv4 && !ns->done_pside4) { + if((ie->supports_ipv4 || ie->use_nat64) && !ns->done_pside4) { /* Send the A request. */ if(!generate_parentside_target_query(qstate, iq, id, ns->name, ns->namelen, @@ -2384,7 +2385,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, } if(!ie->supports_ipv6) delegpt_no_ipv6(iq->dp); - if(!ie->supports_ipv4) + if(!ie->supports_ipv4 && !ie->use_nat64) delegpt_no_ipv4(iq->dp); delegpt_log(VERB_ALGO, iq->dp); @@ -2811,6 +2812,41 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->dnssec_expected?"expected": "not expected", iq->dnssec_lame_query?" but lame_query anyway": ""); } + + struct sockaddr_storage real_addr = target->addr; + socklen_t real_addrlen = target->addrlen; + + if (ie->use_nat64 && real_addr.ss_family == AF_INET) { + struct sockaddr_in *sin = (struct sockaddr_in *)&target->addr; + struct sockaddr_in6 *sin6; + int plen = ie->nat64_prefix_net; + uint8_t *v4_byte; + + real_addr = ie->nat64_prefix_addr; + real_addrlen = ie->nat64_prefix_addrlen; + + sin6 = (struct sockaddr_in6 *)&real_addr; + sin6->sin6_flowinfo = 0; + sin6->sin6_port = sin->sin_port; + + /* config validation enforces these prefix lengths too */ + log_assert(plen == 32 || plen == 40 || plen == 48 || plen == 56 + || plen == 64 || plen == 96); + plen = plen / 8; + + v4_byte = (uint8_t *)&sin->sin_addr.s_addr; + for (int i = 0; i < 4; i++) { + if (plen == 8) + /* bits 64...72 are MBZ */ + sin6->sin6_addr.s6_addr[plen++] = 0; + + sin6->sin6_addr.s6_addr[plen++] = *v4_byte++; + } + + log_name_addr(VERB_QUERY, "applied NAT64:", iq->dp->name, + &real_addr, real_addrlen); + } + fptr_ok(fptr_whitelist_modenv_send_query(qstate->env->send_query)); outq = (*qstate->env->send_query)(&iq->qinfo_out, iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), @@ -2821,7 +2857,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, !qstate->blacklist&&(!iter_qname_indicates_dnssec(qstate->env, &iq->qinfo_out)||target->attempts==1)?0:BIT_CD), iq->dnssec_expected, iq->caps_fallback || is_caps_whitelisted( - ie, iq), sq_check_ratelimit, &target->addr, target->addrlen, + ie, iq), sq_check_ratelimit, &real_addr, real_addrlen, iq->dp->name, iq->dp->namelen, (iq->dp->tcp_upstream || qstate->env->cfg->tcp_upstream), (iq->dp->ssl_upstream || qstate->env->cfg->ssl_upstream), @@ -3564,7 +3600,7 @@ processTargetResponse(struct module_qstate* qstate, int id, } else { verbose(VERB_ALGO, "iterator TargetResponse failed"); delegpt_mark_neg(dpns, qstate->qinfo.qtype); - if((dpns->got4 == 2 || !ie->supports_ipv4) && + if((dpns->got4 == 2 || (!ie->supports_ipv4 && !ie->use_nat64)) && (dpns->got6 == 2 || !ie->supports_ipv6)) { dpns->resolved = 1; /* fail the target */ /* do not count cached answers */ diff --git a/iterator/iterator.h b/iterator/iterator.h index 18d3270a0..3f078cfe5 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -117,6 +117,18 @@ struct iter_env { /** A flag to indicate whether or not we have an IPv4 route */ int supports_ipv4; + /** A flag to locally apply NAT64 to make IPv4 addrs into IPv6 */ + int use_nat64; + + /** NAT64 prefix address, cf. dns64_env->prefix_addr */ + struct sockaddr_storage nat64_prefix_addr; + + /** sizeof(sockaddr_in6) */ + socklen_t nat64_prefix_addrlen; + + /** CIDR mask length of NAT64 prefix */ + int nat64_prefix_net; + /** A set of inetaddrs that should never be queried. */ struct iter_donotq* donotq; diff --git a/pythonmod/interface.i b/pythonmod/interface.i index df8514b47..17bf02273 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1378,7 +1378,7 @@ struct delegpt* dns_cache_find_delegation(struct module_env* env, struct regional* region, struct dns_msg** msg, uint32_t timenow, int noexpiredabove, uint8_t* expiretop, size_t expiretoplen); int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp, int supports_ipv4, int supports_ipv6); + struct delegpt* dp, int supports_ipv4, int supports_ipv6, int use_nat64); struct iter_hints_stub* hints_lookup_stub(struct iter_hints* hints, uint8_t* qname, uint16_t qclass, struct delegpt* dp); @@ -1409,7 +1409,8 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n if(!dp) return NULL; if(iter_dp_is_useless(&qinfo, BIT_RD, dp, - qstate->env->cfg->do_ip4, qstate->env->cfg->do_ip6)) { + qstate->env->cfg->do_ip4, qstate->env->cfg->do_ip6, + qstate->env->cfg->do_nat64)) { if (dname_is_root((uint8_t*)nm)) return NULL; nm = (char*)dp->name; diff --git a/testdata/iter_nat64.rpl b/testdata/iter_nat64.rpl new file mode 100644 index 000000000..dde0a2559 --- /dev/null +++ b/testdata/iter_nat64.rpl @@ -0,0 +1,117 @@ +; config options +server: + do-nat64: yes + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 2001:db8::1 +CONFIG_END + +SCENARIO_BEGIN Test NAT64 transport for a v4-only server. + +RANGE_BEGIN 0 100 + ADDRESS 2001:db8::1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS FAKE.ROOT. +SECTION ADDITIONAL +FAKE.ROOT. IN AAAA 2001:db8::1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +v4only. IN NS +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +RANGE_END + +; replies from NS over "NAT64" + +RANGE_BEGIN 0 100 + ADDRESS 64:ff9b::c000:0201 + +; A over NAT64 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.v4only. IN A +SECTION ANSWER +ns.v4only. IN A 192.0.2.1 +SECTION AUTHORITY +v4only. IN NS ns.v4only. +ENTRY_END + +; no AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.v4only. IN AAAA +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +v4only. IN NS +SECTION ANSWER +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +test.v4only. IN A +SECTION ANSWER +test.v4only. IN A 192.0.2.2 +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +test.v4only. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +test.v4only. IN A +SECTION ANSWER +test.v4only. IN A 192.0.2.2 +ENTRY_END + +SCENARIO_END diff --git a/testdata/iter_nat64_prefix.rpl b/testdata/iter_nat64_prefix.rpl new file mode 100644 index 000000000..afc317e85 --- /dev/null +++ b/testdata/iter_nat64_prefix.rpl @@ -0,0 +1,118 @@ +; config options +server: + do-nat64: yes + nat64-prefix: 2001:db8:1234::/96 + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 2001:db8::1 +CONFIG_END + +SCENARIO_BEGIN Test NAT64 transport for a v4-only server, custom NAT64 prefix. + +RANGE_BEGIN 0 100 + ADDRESS 2001:db8::1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS FAKE.ROOT. +SECTION ADDITIONAL +FAKE.ROOT. IN AAAA 2001:db8::1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +v4only. IN NS +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +RANGE_END + +; replies from NS over "NAT64" + +RANGE_BEGIN 0 100 + ADDRESS 2001:db8:1234::c000:0201 + +; A over NAT64 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.v4only. IN A +SECTION ANSWER +ns.v4only. IN A 192.0.2.1 +SECTION AUTHORITY +v4only. IN NS ns.v4only. +ENTRY_END + +; no AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.v4only. IN AAAA +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +v4only. IN NS +SECTION ANSWER +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +test.v4only. IN A +SECTION ANSWER +test.v4only. IN A 192.0.2.2 +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +test.v4only. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +test.v4only. IN A +SECTION ANSWER +test.v4only. IN A 192.0.2.2 +ENTRY_END + +SCENARIO_END diff --git a/testdata/iter_nat64_prefix48.rpl b/testdata/iter_nat64_prefix48.rpl new file mode 100644 index 000000000..e7c32e8ff --- /dev/null +++ b/testdata/iter_nat64_prefix48.rpl @@ -0,0 +1,118 @@ +; config options +server: + do-nat64: yes + nat64-prefix: 2001:db8:2345::/48 + target-fetch-policy: "0 0 0 0 0" + +stub-zone: + name: "." + stub-addr: 2001:db8::1 +CONFIG_END + +SCENARIO_BEGIN Test NAT64 transport, this time with /48 NAT64 prefix. + +RANGE_BEGIN 0 100 + ADDRESS 2001:db8::1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS FAKE.ROOT. +SECTION ADDITIONAL +FAKE.ROOT. IN AAAA 2001:db8::1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +v4only. IN NS +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +RANGE_END + +; replies from NS over "NAT64" + +RANGE_BEGIN 0 100 + ADDRESS 2001:db8:2345:c000:0002:0100:: + +; A over NAT64 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.v4only. IN A +SECTION ANSWER +ns.v4only. IN A 192.0.2.1 +SECTION AUTHORITY +v4only. IN NS ns.v4only. +ENTRY_END + +; no AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +ns.v4only. IN AAAA +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +v4only. IN NS +SECTION ANSWER +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY AA QR NOERROR +SECTION QUESTION +test.v4only. IN A +SECTION ANSWER +test.v4only. IN A 192.0.2.2 +SECTION AUTHORITY +v4only. IN NS ns.v4only. +SECTION ADDITIONAL +ns.v4only. IN A 192.0.2.1 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +test.v4only. IN A +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +test.v4only. IN A +SECTION ANSWER +test.v4only. IN A 192.0.2.2 +ENTRY_END + +SCENARIO_END diff --git a/util/config_file.h b/util/config_file.h index b1406913a..7f24ddc10 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -86,6 +86,8 @@ struct config_file { int do_ip4; /** do ip6 query support. */ int do_ip6; + /** do nat64 on queries */ + int do_nat64; /** prefer ip4 upstream queries. */ int prefer_ip4; /** prefer ip6 upstream queries. */ @@ -533,6 +535,9 @@ struct config_file { /** ignore AAAAs for these domain names and use A record anyway */ struct config_strlist* dns64_ignore_aaaa; + /* NAT64 prefix; if unset defaults to dns64_prefix */ + char* nat64_prefix; + /** true to enable dnstap support */ int dnstap; /** using bidirectional frame streams if true */ diff --git a/util/configlexer.lex b/util/configlexer.lex index 09e314b21..e71ffa7ca 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -227,6 +227,7 @@ outgoing-num-tcp{COLON} { YDVAR(1, VAR_OUTGOING_NUM_TCP) } incoming-num-tcp{COLON} { YDVAR(1, VAR_INCOMING_NUM_TCP) } do-ip4{COLON} { YDVAR(1, VAR_DO_IP4) } do-ip6{COLON} { YDVAR(1, VAR_DO_IP6) } +do-nat64{COLON} { YDVAR(1, VAR_DO_NAT64) } prefer-ip4{COLON} { YDVAR(1, VAR_PREFER_IP4) } prefer-ip6{COLON} { YDVAR(1, VAR_PREFER_IP6) } do-udp{COLON} { YDVAR(1, VAR_DO_UDP) } @@ -461,6 +462,7 @@ max-udp-size{COLON} { YDVAR(1, VAR_MAX_UDP_SIZE) } dns64-prefix{COLON} { YDVAR(1, VAR_DNS64_PREFIX) } dns64-synthall{COLON} { YDVAR(1, VAR_DNS64_SYNTHALL) } dns64-ignore-aaaa{COLON} { YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +nat64-prefix{COLON} { YDVAR(1, VAR_NAT64_PREFIX) } define-tag{COLON} { YDVAR(1, VAR_DEFINE_TAG) } local-zone-tag{COLON} { YDVAR(2, VAR_LOCAL_ZONE_TAG) } access-control-tag{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } diff --git a/util/configparser.y b/util/configparser.y index 3ecdad2ad..91f8af0a7 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -73,7 +73,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_FORCE_TOPLEVEL %token VAR_SERVER VAR_VERBOSITY VAR_NUM_THREADS VAR_PORT %token VAR_OUTGOING_RANGE VAR_INTERFACE VAR_PREFER_IP4 -%token VAR_DO_IP4 VAR_DO_IP6 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP +%token VAR_DO_IP4 VAR_DO_IP6 VAR_DO_NAT64 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP %token VAR_TCP_MSS VAR_OUTGOING_TCP_MSS VAR_TCP_IDLE_TIMEOUT %token VAR_EDNS_TCP_KEEPALIVE VAR_EDNS_TCP_KEEPALIVE_TIMEOUT %token VAR_CHROOT VAR_USERNAME VAR_DIRECTORY VAR_LOGFILE VAR_PIDFILE @@ -123,6 +123,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES %token VAR_INFRA_CACHE_MIN_RTT VAR_INFRA_CACHE_MAX_RTT VAR_INFRA_KEEP_PROBING %token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL VAR_DNS64_IGNORE_AAAA +%token VAR_NAT64_PREFIX %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH VAR_DNSTAP_IP %token VAR_DNSTAP_TLS VAR_DNSTAP_TLS_SERVER_NAME VAR_DNSTAP_TLS_CERT_BUNDLE %token VAR_DNSTAP_TLS_CLIENT_KEY_FILE VAR_DNSTAP_TLS_CLIENT_CERT_FILE @@ -222,8 +223,8 @@ contents_server: contents_server content_server | ; content_server: server_num_threads | server_verbosity | server_port | server_outgoing_range | server_do_ip4 | - server_do_ip6 | server_prefer_ip4 | server_prefer_ip6 | - server_do_udp | server_do_tcp | + server_do_ip6 | server_do_nat64 | server_prefer_ip4 | + server_prefer_ip6 | server_do_udp | server_do_tcp | server_tcp_mss | server_outgoing_tcp_mss | server_tcp_idle_timeout | server_tcp_keepalive | server_tcp_keepalive_timeout | server_interface | server_chroot | server_username | @@ -273,6 +274,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_so_reuseport | server_delay_close | server_udp_connect | server_unblock_lan_zones | server_insecure_lan_zones | server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa | + server_nat64_prefix | server_infra_cache_min_rtt | server_infra_cache_max_rtt | server_harden_algo_downgrade | server_ip_transparent | server_ip_ratelimit | server_ratelimit | server_ip_dscp | server_infra_keep_probing | @@ -840,6 +842,15 @@ server_do_ip6: VAR_DO_IP6 STRING_ARG free($2); } ; +server_do_nat64: VAR_DO_NAT64 STRING_ARG + { + OUTYY(("P(server_do_nat64:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_nat64 = (strcmp($2, "yes")==0); + free($2); + } + ; server_do_udp: VAR_DO_UDP STRING_ARG { OUTYY(("P(server_do_udp:%s)\n", $2)); @@ -2323,6 +2334,13 @@ server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG fatal_exit("out of memory adding dns64-ignore-aaaa"); } ; +server_nat64_prefix: VAR_NAT64_PREFIX STRING_ARG + { + OUTYY(("P(nat64_prefix:%s)\n", $2)); + free(cfg_parser->cfg->nat64_prefix); + cfg_parser->cfg->nat64_prefix = $2; + } + ; server_define_tag: VAR_DEFINE_TAG STRING_ARG { char* p, *s = $2; From 896f7a8306f7b5bfc05eb2b1f97b406f0deee206 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 22 Nov 2022 17:44:55 +0100 Subject: [PATCH 019/177] - Ignore expired error responses. --- cachedb/cachedb.c | 12 +- daemon/worker.c | 10 +- doc/Changelog | 3 + services/cache/dns.c | 8 + testdata/fwd_0ttlservfail.rpl | 3 +- testdata/serve_expired_cached_servfail.rpl | 130 ++++++++++++++ ...serve_expired_client_timeout_servfail.rpl} | 20 +-- testdata/subnet_cached_servfail.crpl | 167 ++++++++++++++++++ 8 files changed, 337 insertions(+), 16 deletions(-) create mode 100644 testdata/serve_expired_cached_servfail.rpl rename testdata/{serve_expired_servfail.rpl => serve_expired_client_timeout_servfail.rpl} (86%) create mode 100644 testdata/subnet_cached_servfail.crpl diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 6f987fc03..245daa986 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -551,10 +551,16 @@ parse_data(struct module_qstate* qstate, struct sldns_buffer* buf) verbose(VERB_ALGO, "cachedb msg expired"); /* If serve-expired is enabled, we still use an expired message * setting the TTL to 0. */ - if(qstate->env->cfg->serve_expired) - adjust = -1; - else + if(!qstate->env->cfg->serve_expired || + (FLAGS_GET_RCODE(qstate->return_msg->rep->flags) + != LDNS_RCODE_NOERROR && + FLAGS_GET_RCODE(qstate->return_msg->rep->flags) + != LDNS_RCODE_NXDOMAIN && + FLAGS_GET_RCODE(qstate->return_msg->rep->flags) + != LDNS_RCODE_YXDOMAIN)) return 0; /* message expired */ + else + adjust = -1; } verbose(VERB_ALGO, "cachedb msg adjusted down by %d", (int)adjust); adjust_msg_ttl(qstate->return_msg, adjust); diff --git a/daemon/worker.c b/daemon/worker.c index caefad621..2180b4f96 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -623,6 +623,14 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, if(worker->env.cfg->serve_expired_ttl && rep->serve_expired_ttl < timenow) return 0; + /* Ignore expired failure answers */ + if(FLAGS_GET_RCODE(rep->flags) != + LDNS_RCODE_NOERROR && + FLAGS_GET_RCODE(rep->flags) != + LDNS_RCODE_NXDOMAIN && + FLAGS_GET_RCODE(rep->flags) != + LDNS_RCODE_YXDOMAIN) + return 0; if(!rrset_array_lock(rep->ref, rep->rrset_count, 0)) return 0; *is_expired_answer = 1; @@ -730,8 +738,6 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, goto bail_out; } } else { - /* We don't check the global ede as this is a warning, not - * an error */ if (*is_expired_answer == 1 && worker->env.cfg->ede_serve_expired && worker->env.cfg->ede) { EDNS_OPT_LIST_APPEND_EDE(&edns->opt_list_out, diff --git a/doc/Changelog b/doc/Changelog index 66cc6161d..0375b0716 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +22 November 2022: George + - Ignore expired error responses. + 11 November 2022: Wouter - Fix #779: [doc] Missing documention in ub_resolve_event() for callback parameter was_ratelimited. diff --git a/services/cache/dns.c b/services/cache/dns.c index b6e569734..6fc9919ef 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -636,6 +636,14 @@ tomsg(struct module_env* env, struct query_info* q, struct reply_info* r, r->serve_expired_ttl < now) { return NULL; } + /* Ignore expired failure answers */ + if(FLAGS_GET_RCODE(r->flags) != + LDNS_RCODE_NOERROR && + FLAGS_GET_RCODE(r->flags) != + LDNS_RCODE_NXDOMAIN && + FLAGS_GET_RCODE(r->flags) != + LDNS_RCODE_YXDOMAIN) + return 0; } else { return NULL; } diff --git a/testdata/fwd_0ttlservfail.rpl b/testdata/fwd_0ttlservfail.rpl index f1a6dc629..ed912c73b 100644 --- a/testdata/fwd_0ttlservfail.rpl +++ b/testdata/fwd_0ttlservfail.rpl @@ -2,6 +2,7 @@ ; config options go here. server: serve-expired: yes + prefetch: yes forward-zone: name: "." forward-addr: 216.0.0.1 CONFIG_END @@ -45,7 +46,7 @@ SECTION ANSWER ENTRY_END ; enough to pass by the TTL of the servfail answer in cache -STEP 50 TIME_PASSES ELAPSE 40 +STEP 50 TIME_PASSES ELAPSE 5 ; this query triggers a prefetch STEP 210 QUERY diff --git a/testdata/serve_expired_cached_servfail.rpl b/testdata/serve_expired_cached_servfail.rpl new file mode 100644 index 000000000..286de708b --- /dev/null +++ b/testdata/serve_expired_cached_servfail.rpl @@ -0,0 +1,130 @@ +; config options +server: + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-expired: yes + serve-expired-reply-ttl: 123 + log-servfail: yes + ede: yes + ede-serve-expired: yes + + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-expired with client-timeout and a SERVFAIL upstream reply +; Scenario overview: +; - query for example.com. IN A +; - answer from upstream is SERVFAIL; will be cached for NORR_TTL(5) +; - check that the client gets the SERVFAIL; also cached +; - query again right after the TTL expired +; - cached SERVFAIL should be ignored and upstream queried +; - check that we get the correct answer + +; ns.example.com. +RANGE_BEGIN 0 20 + ADDRESS 1.2.3.4 + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA SERVFAIL + SECTION QUESTION + example.com. IN A + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 30 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. 10 IN NS + SECTION ANSWER + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 0 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we get the SERVFAIL (will be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we get the cached SERVFAIL +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Wait for the SERVFAIL to expire +STEP 31 TIME_PASSES ELAPSE 6 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got the correct answer +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/testdata/serve_expired_servfail.rpl b/testdata/serve_expired_client_timeout_servfail.rpl similarity index 86% rename from testdata/serve_expired_servfail.rpl rename to testdata/serve_expired_client_timeout_servfail.rpl index 6e3192ef0..1cae3fd82 100644 --- a/testdata/serve_expired_servfail.rpl +++ b/testdata/serve_expired_client_timeout_servfail.rpl @@ -4,7 +4,7 @@ server: qname-minimisation: "no" minimal-responses: no serve-expired: yes - serve-expired-client-timeout: 1800 + serve-expired-client-timeout: 1 serve-expired-reply-ttl: 123 log-servfail: yes ede: yes @@ -32,11 +32,11 @@ RANGE_BEGIN 0 20 ADJUST copy_id REPLY QR NOERROR SECTION QUESTION - example.com. IN NS + example.com. 10 IN NS SECTION ANSWER - example.com. IN NS ns.example.com. + example.com. 10 IN NS ns.example.com. SECTION ADDITIONAL - ns.example.com. IN A 1.2.3.4 + ns.example.com. 10 IN A 1.2.3.4 ENTRY_END ENTRY_BEGIN @@ -48,14 +48,14 @@ RANGE_BEGIN 0 20 SECTION ANSWER example.com. 10 IN A 5.6.7.8 SECTION AUTHORITY - example.com. IN NS ns.example.com. + example.com. 10 IN NS ns.example.com. SECTION ADDITIONAL - ns.example.com. IN A 1.2.3.4 + ns.example.com. 10 IN A 1.2.3.4 ENTRY_END RANGE_END ; ns.example.com. -RANGE_BEGIN 30 100 +RANGE_BEGIN 30 70 ADDRESS 1.2.3.4 ; response to A query ENTRY_BEGIN @@ -85,13 +85,13 @@ ENTRY_BEGIN SECTION ANSWER example.com. 10 IN A 5.6.7.8 SECTION AUTHORITY - example.com. IN NS ns.example.com. + example.com. 10 IN NS ns.example.com. SECTION ADDITIONAL - ns.example.com. IN A 1.2.3.4 + ns.example.com. 10 IN A 1.2.3.4 ENTRY_END ; Wait for the TTL to expire -STEP 11 TIME_PASSES ELAPSE 3601 +STEP 11 TIME_PASSES ELAPSE 11 ; Query again STEP 30 QUERY diff --git a/testdata/subnet_cached_servfail.crpl b/testdata/subnet_cached_servfail.crpl new file mode 100644 index 000000000..9c746d579 --- /dev/null +++ b/testdata/subnet_cached_servfail.crpl @@ -0,0 +1,167 @@ +; Check if an expired SERVFAIL answer stored in the global cache does not block +; ECS queries to reach the ECS cache. + +server: + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 21 + module-config: "subnetcache iterator" + verbosity: 3 + access-control: 127.0.0.1 allow_snoop + qname-minimisation: no + minimal-responses: no + serve-expired: yes + prefetch: yes + +stub-zone: + name: "example.com." + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test that expired SERVFAIL in global cache does not block clients to reach the ECS cache + +; ns.example.com. +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR SERVFAIL + SECTION QUESTION + www.example.com. IN A + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 11 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. 10 IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 05 ; option length + 00 01 ; Family + 08 00 ; source mask, scopemask + 7f ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This answer should be in the global cache +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; Bring the cached SERVFAIL to prefetch time +STEP 10 TIME_PASSES ELAPSE 5 + +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +SECTION ADDITIONAL +HEX_EDNSDATA_BEGIN + 00 08 00 05 ; OPC, optlen + 00 01 08 00 ; ip4, source 8, scope 0 + 7f ; 127.0.0.0/8 +HEX_EDNSDATA_END +ENTRY_END + +; This answer was cached but a prefetch was triggerred +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; Wait for the SERVFAIL to expire +STEP 13 TIME_PASSES ELAPSE 2 + +; Query again to verify that the record was prefetched and stored in the ECS +; cache (because the server replied with ECS this time) +STEP 14 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +SECTION ADDITIONAL +HEX_EDNSDATA_BEGIN + 00 08 00 05 ; OPC, optlen + 00 01 08 00 ; ip4, source 8, scope 0 + 7f ; 127.0.0.0/8 +HEX_EDNSDATA_END +ENTRY_END + +; This record came from the ECS cache +STEP 15 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA DO NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 8 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3598 IN NS ns.example.com. +SECTION ADDITIONAL +HEX_EDNSDATA_BEGIN + 00 08 00 05 ; OPC, optlen + 00 01 08 08 ; ip4, source 8, scope 0 + 7f ; 127.0.0.0/8 +HEX_EDNSDATA_END +ns.example.com. 3598 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END From 6f7da59b7744c345be580db2bd9b37380cab5a42 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 28 Nov 2022 10:04:52 +0100 Subject: [PATCH 020/177] - Fix for the ignore of tcp events for closed comm points, preserve the use after free protection features. --- doc/Changelog | 4 ++++ util/netevent.c | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0375b0716..17b25f1f8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +28 November 2022: Wouter + - Fix for the ignore of tcp events for closed comm points, preserve + the use after free protection features. + 22 November 2022: George - Ignore expired error responses. diff --git a/util/netevent.c b/util/netevent.c index 6ddeb076d..fe3d51164 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2665,6 +2665,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) #endif ) { int has_tcpq = (c->tcp_req_info != NULL); + int* moreread = c->tcp_more_read_again; if(!comm_point_tcp_handle_read(fd, c, 0)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -2679,12 +2680,13 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) if(!tcp_req_info_read_again(fd, c)) return; } - if(c->tcp_more_read_again && *c->tcp_more_read_again) + if(moreread && *moreread) tcp_more_read_again(fd, c); return; } if(event&UB_EV_WRITE) { int has_tcpq = (c->tcp_req_info != NULL); + int* morewrite = c->tcp_more_write_again; if(!comm_point_tcp_handle_write(fd, c)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -2699,7 +2701,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) if(!tcp_req_info_read_again(fd, c)) return; } - if(c->tcp_more_write_again && *c->tcp_more_write_again) + if(morewrite && *morewrite) tcp_more_write_again(fd, c); return; } @@ -4495,6 +4497,11 @@ comm_point_close(struct comm_point* c) tcp_req_info_clear(c->tcp_req_info); if(c->h2_session) http2_session_server_delete(c->h2_session); + /* stop the comm point from reading or writing after it is closed. */ + if(c->tcp_more_read_again && *c->tcp_more_read_again) + *c->tcp_more_read_again = 0; + if(c->tcp_more_write_again && *c->tcp_more_write_again) + *c->tcp_more_write_again = 0; /* close fd after removing from event lists, or epoll.. is messed up */ if(c->fd != -1 && !c->do_not_close) { From 81861aee05cb59b36a7db0b44675d36c927a582e Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 29 Nov 2022 16:20:52 +0100 Subject: [PATCH 021/177] Changelog entry for #720 --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 17b25f1f8..1b1190673 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,10 @@ - Fix for the ignore of tcp events for closed comm points, preserve the use after free protection features. +23 November 2022: Philip + - Merge #720 from jonathangray: fix use after free when + WSACreateEvent() fails. + 22 November 2022: George - Ignore expired error responses. From effbf99281874d60262e07b5c938b1e01b7526cb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Nov 2022 10:18:27 +0100 Subject: [PATCH 022/177] - Fix #782: Segmentation fault in stats.c:404. --- doc/Changelog | 3 +++ util/tube.c | 52 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 1b1190673..8f561a5a5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +30 November 2022: Wouter + - Fix #782: Segmentation fault in stats.c:404. + 28 November 2022: Wouter - Fix for the ignore of tcp events for closed comm points, preserve the use after free protection features. diff --git a/util/tube.c b/util/tube.c index f08b05bba..7d98b93c3 100644 --- a/util/tube.c +++ b/util/tube.c @@ -45,6 +45,9 @@ #include "util/netevent.h" #include "util/fptr_wlist.h" #include "util/ub_event.h" +#ifdef HAVE_POLL_H +#include +#endif #ifndef USE_WINSOCK /* on unix */ @@ -396,20 +399,28 @@ int tube_read_msg(struct tube* tube, uint8_t** buf, uint32_t* len, return 1; } -/** perform a select() on the fd */ +/** perform poll() on the fd */ static int pollit(int fd, struct timeval* t) { - fd_set r; + struct pollfd fds; + int pret; + int msec = -1; + memset(&fds, 0, sizeof(fds)); + fds.fd = fd; + fds.events = POLLIN | POLLERR | POLLHUP; #ifndef S_SPLINT_S - FD_ZERO(&r); - FD_SET(FD_SET_T fd, &r); + if(t) + msec = t->tv_sec*1000 + t->tv_usec/1000; #endif - if(select(fd+1, &r, NULL, NULL, t) == -1) { + + pret = poll(&fds, 1, msec); + + if(pret == -1) return 0; - } - errno = 0; - return (int)(FD_ISSET(fd, &r)); + if(pret != 0) + return 1; + return 0; } int tube_poll(struct tube* tube) @@ -426,24 +437,27 @@ int tube_wait(struct tube* tube) int tube_wait_timeout(struct tube* tube, int msec) { - struct timeval t; - int fd = tube->sr; - fd_set r; - t.tv_sec = msec/1000; - t.tv_usec = (msec%1000)*1000; -#ifndef S_SPLINT_S - FD_ZERO(&r); - FD_SET(FD_SET_T fd, &r); -#endif + int ret = 0; + while(1) { - if(select(fd+1, &r, NULL, NULL, &t) == -1) { + struct pollfd fds; + memset(&fds, 0, sizeof(fds)); + + fds.fd = tube->sr; + fds.events = POLLIN | POLLERR | POLLHUP; + ret = poll(&fds, 1, msec); + + if(ret == -1) { if(errno == EAGAIN || errno == EINTR) continue; return -1; } break; } - return (int)(FD_ISSET(fd, &r)); + + if(ret != 0) + return 1; + return 0; } int tube_read_fd(struct tube* tube) From 90f6cb11580076dea693be1df1312235b41a71a8 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 30 Nov 2022 14:33:16 +0100 Subject: [PATCH 023/177] - Add SVCB and HTTPS to the types removed by 'unbound-control flush'. --- daemon/remote.c | 2 ++ doc/Changelog | 3 +++ doc/unbound-control.8.in | 2 +- sldns/rrdef.h | 4 ++-- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 7d4a41400..532e77db7 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1963,6 +1963,8 @@ do_flush_name(RES* ssl, struct worker* w, char* arg) do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_PTR, LDNS_RR_CLASS_IN); do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_SRV, LDNS_RR_CLASS_IN); do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_NAPTR, LDNS_RR_CLASS_IN); + do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_SVCB, LDNS_RR_CLASS_IN); + do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_HTTPS, LDNS_RR_CLASS_IN); free(nm); send_ok(ssl); diff --git a/doc/Changelog b/doc/Changelog index 17b25f1f8..a6ea73a66 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +30 November 2022: George + - Add SVCB and HTTPS to the types removed by 'unbound-control flush'. + 28 November 2022: Wouter - Fix for the ignore of tcp events for closed comm points, preserve the use after free protection features. diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index d3147be6f..39adb7643 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -130,7 +130,7 @@ name specified. .TP .B flush \fIname Remove the name from the cache. Removes the types -A, AAAA, NS, SOA, CNAME, DNAME, MX, PTR, SRV and NAPTR. +A, AAAA, NS, SOA, CNAME, DNAME, MX, PTR, SRV, NAPTR, SVCB and HTTPS. Because that is fast to do. Other record types can be removed using .B flush_type or diff --git a/sldns/rrdef.h b/sldns/rrdef.h index 999c22307..98fb257dc 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -196,8 +196,8 @@ enum sldns_enum_rr_type LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */ LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */ LDNS_RR_TYPE_ZONEMD = 63, /* draft-ietf-dnsop-dns-zone-digest-12 */ - LDNS_RR_TYPE_SVCB = 64, /* draft-ietf-dnsop-svcb-https-04 */ - LDNS_RR_TYPE_HTTPS = 65, /* draft-ietf-dnsop-svcb-https-04 */ + LDNS_RR_TYPE_SVCB = 64, /* draft-ietf-dnsop-svcb-https-04 */ + LDNS_RR_TYPE_HTTPS = 65, /* draft-ietf-dnsop-svcb-https-04 */ LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */ From d7a9def160ea0474ba53aaac1c66a62fc3de4893 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 30 Nov 2022 14:45:36 +0100 Subject: [PATCH 024/177] - Clear documentation for interactivity between the subnet module and the serve-expired and prefetch configuration options. --- doc/Changelog | 2 ++ doc/unbound.conf.5.in | 3 +++ edns-subnet/subnetmod.c | 11 +++++++++++ 3 files changed, 16 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 3409a2d59..4d948f53a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 30 November 2022: George - Add SVCB and HTTPS to the types removed by 'unbound-control flush'. + - Clear documentation for interactivity between the subnet module and + the serve-expired and prefetch configuration options. 30 November 2022: Wouter - Fix #782: Segmentation fault in stats.c:404. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index d829008a7..13e08be20 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2358,6 +2358,9 @@ The maximum size of the ECS cache is controlled by 'msg-cache-size' in the configuration file. On top of that, for each query only 100 different subnets are allowed to be stored for each address family. Exceeding that number, older entries will be purged from cache. +.LP +This module does not interact with the \fBserve\-expired*\fR and +\fBprefetch:\fR options. .TP .B send\-client\-subnet: \fI\fR Send client source address to this authority. Append /num to indicate a diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 0f1df417f..458a89702 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -204,6 +204,17 @@ subnetmod_init(struct module_env *env, int id) } alloc_init(&sn_env->alloc, NULL, 0); env->modinfo[id] = (void*)sn_env; + + /* Warn that serve-expired and prefetch do not work with the subnet + * module cache. */ + if(env->cfg->serve_expired) + log_warn( + "subnetcache: serve-expired is set but not working " + "for data originating from the subnet module cache."); + if(env->cfg->prefetch) + log_warn( + "subnetcache: prefetch is set but not working " + "for data originating from the subnet module cache."); /* Copy msg_cache settings */ sn_env->subnet_msg_cache = slabhash_create(env->cfg->msg_cache_slabs, HASH_DEFAULT_STARTARRAY, env->cfg->msg_cache_size, From 5c041c0ba9f48f25e73e7675c4c654b2815d483b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Dec 2022 13:04:05 +0100 Subject: [PATCH 025/177] - Fix #773: When used with systemd-networkd, unbound does not start until systemd-networkd-wait-online.service times out. --- contrib/unbound.service.in | 5 ++--- doc/Changelog | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index ada5fac9c..5a05c5251 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -42,9 +42,8 @@ [Unit] Description=Validating, recursive, and caching DNS resolver Documentation=man:unbound(8) -After=network-online.target -Before=nss-lookup.target -Wants=network-online.target nss-lookup.target +After=network.target +Before=network-online.target nss-lookup.target [Install] WantedBy=multi-user.target diff --git a/doc/Changelog b/doc/Changelog index 4d948f53a..5d03ba46c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +30 November 2022: Wouter + - Fix #773: When used with systemd-networkd, unbound does not start + until systemd-networkd-wait-online.service times out. + 30 November 2022: George - Add SVCB and HTTPS to the types removed by 'unbound-control flush'. - Clear documentation for interactivity between the subnet module and From 6b8642b6620486f7bd0c57c87f3045cf928bf581 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Dec 2022 13:05:02 +0100 Subject: [PATCH 026/177] Fix date. --- doc/Changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 5d03ba46c..dd16b88c6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,4 +1,4 @@ -30 November 2022: Wouter +1 December 2022: Wouter - Fix #773: When used with systemd-networkd, unbound does not start until systemd-networkd-wait-online.service times out. From dd3984eae94366451fe7a03fe16a21c06f534138 Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 5 Dec 2022 11:41:17 +0100 Subject: [PATCH 027/177] add validation EDEs to CD bit queries --- services/mesh.c | 66 ++++++++++++++++++++++++-------------- testdata/ede.tdir/ede.test | 11 ++++++- 2 files changed, 52 insertions(+), 25 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index 9007b6e08..dcaa3cc32 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1315,6 +1315,34 @@ mesh_is_udp(struct mesh_reply const* r) { return r->query_reply.c->type == comm_udp; } +static inline void +mesh_find_and_attach_ede_and_reason(struct mesh_state* m, + struct reply_info* rep, struct mesh_reply* r) { + char *reason = m->s.env->cfg->val_log_level >= 2 + ? errinf_to_str_bogus(&m->s) : NULL; + + /* During validation the EDE code can be received via two + * code paths. One code path fills the reply_info EDE, and + * the other fills it in the errinf_strlist. These paths + * intersect at some points, but where is opaque due to + * the complexity of the validator. At the time of writing + * we make the choice to prefer the EDE from errinf_strlist + * but a compelling reason to do otherwise is just as valid + */ + sldns_ede_code reason_bogus = errinf_to_reason_bogus(&m->s); + if ((reason_bogus == LDNS_EDE_DNSSEC_BOGUS && + rep->reason_bogus != LDNS_EDE_NONE) || + reason_bogus == LDNS_EDE_NONE) { + reason_bogus = rep->reason_bogus; + } + + if(reason_bogus != LDNS_EDE_NONE) { + edns_opt_list_append_ede(&r->edns.opt_list_out, + m->s.region, reason_bogus, reason); + } + free(reason); +} + /** * Send reply to mesh reply entry * @param m: mesh state to send it for. @@ -1406,35 +1434,14 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list_inplace_cb_out = NULL; } - /* Send along EDE BOGUS EDNS0 option when answer is bogus */ + /* Send along EDE BOGUS EDNS0 option when validation is bogus */ if(m->s.env->cfg->ede && rcode == LDNS_RCODE_SERVFAIL && m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || m->s.env->cfg->ignore_cd) && rep && (rep->security <= sec_status_bogus || rep->security == sec_status_secure_sentinel_fail)) { - char *reason = m->s.env->cfg->val_log_level >= 2 - ? errinf_to_str_bogus(&m->s) : NULL; - - /* During validation the EDE code can be received via two - * code paths. One code path fills the reply_info EDE, and - * the other fills it in the errinf_strlist. These paths - * intersect at some points, but where is opaque due to - * the complexity of the validator. At the time of writing - * we make the choice to prefer the EDE from errinf_strlist - * but a compelling reason to do otherwise is just as valid - */ - sldns_ede_code reason_bogus = errinf_to_reason_bogus(&m->s); - if ((reason_bogus == LDNS_EDE_DNSSEC_BOGUS && - rep->reason_bogus != LDNS_EDE_NONE) || - reason_bogus == LDNS_EDE_NONE) { - reason_bogus = rep->reason_bogus; - } - - if(reason_bogus != LDNS_EDE_NONE) { - edns_opt_list_append_ede(&r->edns.opt_list_out, - m->s.region, reason_bogus, reason); - } - free(reason); + + mesh_find_and_attach_ede_and_reason(m, rep, r); } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, r->qflags, &r->edns); @@ -1449,6 +1456,14 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, r->edns.bits &= EDNS_DO; m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; + + /* Attach EDE without servfail if the validation failed */ + if (m->s.env->cfg->ede && rep && + (rep->security <= sec_status_bogus || + rep->security == sec_status_secure_sentinel_fail)) { + mesh_find_and_attach_ede_and_reason(m, rep, r); + } + if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region, &r->start_time) || !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, @@ -1464,6 +1479,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); } + + /* Send along EDE BOGUS EDNS0 option when validation is bogus */ + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); m->reply_list = rlist; diff --git a/testdata/ede.tdir/ede.test b/testdata/ede.tdir/ede.test index 5d478bd49..0ce8b92a5 100644 --- a/testdata/ede.tdir/ede.test +++ b/testdata/ede.tdir/ede.test @@ -68,5 +68,14 @@ then exit 1 fi +# EDE with CD bit set (EDE but no SERVFAIL) +dig @127.0.0.1 -p $UNBOUND_PORT cd.dnskey-failures.test +cd > cd_bit_ede.txt -# @TODO DNSSEC indeterminate when implemented +if ! grep -q -e "OPT=15: 00 09" -e "EDE: 9" cd_bit_ede.txt +then + echo "No EDE attached with CD bit set" + cat cd_bit_ede.txt + exit 1 +fi + +# TODO DNSSEC indeterminate when implemented From 2daaebf3aaa56f0f79738fb851a990074f2bb56d Mon Sep 17 00:00:00 2001 From: sneurlax Date: Mon, 12 Dec 2022 19:27:19 -0600 Subject: [PATCH 028/177] wrap directory variables in quotes see https://github.com/NLnetLabs/unbound/issues/807 --- Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index e7c76c258..d999e9fe7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -616,7 +616,7 @@ install-all: all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) $(UNBOUND_EVENT_INSTA $(INSTALL) -c -m 644 doc/unbound.conf.5 $(DESTDIR)$(mandir)/man5 $(INSTALL) -c -m 644 doc/unbound-host.1 $(DESTDIR)$(mandir)/man1 $(INSTALL) -c -m 755 unbound-control-setup $(DESTDIR)$(sbindir)/unbound-control-setup - if test ! -e $(DESTDIR)$(configfile); then $(INSTALL) -d `dirname $(DESTDIR)$(configfile)`; $(INSTALL) -c -m 644 doc/example.conf $(DESTDIR)$(configfile); fi + if test ! -e "$(DESTDIR)$(configfile)"; then $(INSTALL) -d `dirname "$(DESTDIR)$(configfile)"`; $(INSTALL) -c -m 644 doc/example.conf "$(DESTDIR)$(configfile)"; fi pythonmod-uninstall: rm -f -- $(DESTDIR)$(PYTHON_SITE_PKG)/unboundmodule.py From 726aa5b0f56e50ba9e54d9356dd5e0600574aa4d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 13 Dec 2022 08:53:44 +0100 Subject: [PATCH 029/177] Changelog note for #808 - Merge #808: Wrap Makefile script's directory variables in quotes. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index dd16b88c6..ef642cbd5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 December 2022: Wouter + - Merge #808: Wrap Makefile script's directory variables in quotes. + 1 December 2022: Wouter - Fix #773: When used with systemd-networkd, unbound does not start until systemd-networkd-wait-online.service times out. From 1a2e6aabac83426f868011e62df5c87433ceb963 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 13 Dec 2022 09:03:52 +0100 Subject: [PATCH 030/177] - Fix to wrap Makefile scripts directory in quotes for uninstall. --- Makefile.in | 2 +- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index d999e9fe7..bc021aa1e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -645,7 +645,7 @@ uninstall: $(PYTHONMOD_UNINSTALL) $(PYUNBOUND_UNINSTALL) $(UNBOUND_EVENT_UNINSTA rm -f -- $(DESTDIR)$(includedir)/unbound.h $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/libunbound.la @echo - @echo "You still need to remove "`dirname $(DESTDIR)$(configfile)`" , $(DESTDIR)$(configfile) by hand" + @echo "You still need to remove "`dirname "$(DESTDIR)$(configfile)"`" , $(DESTDIR)$(configfile) by hand" iana_update: curl -o port-numbers.tmp https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml --compressed diff --git a/doc/Changelog b/doc/Changelog index ef642cbd5..46da7188f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 13 December 2022: Wouter - Merge #808: Wrap Makefile script's directory variables in quotes. + - Fix to wrap Makefile scripts directory in quotes for uninstall. 1 December 2022: Wouter - Fix #773: When used with systemd-networkd, unbound does not start From 859d0f2dfe766d6261e1fd91e4eaab8e8eb39e5b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 13 Dec 2022 10:04:06 +0100 Subject: [PATCH 031/177] - Expose 'statistics-inhibit-zero' as a configuration option; the default value retains Unbound's behavior. --- daemon/remote.c | 6 +- doc/Changelog | 4 + doc/example.conf.in | 7 +- doc/unbound.conf.5.in | 8 + smallapp/unbound-control.c | 6 +- util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 3438 +++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 3447 ++++++++++++++++++------------------ util/configparser.h | 6 +- util/configparser.y | 13 +- 12 files changed, 3500 insertions(+), 3441 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 532e77db7..2b16021ce 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -105,8 +105,6 @@ /** what to put on statistics lines between var and value, ": " or "=" */ #define SQ "=" -/** if true, inhibits a lot of =0 lines from the stats output */ -static const int inhibit_zero = 1; /** subtract timers and the values do not overflow or become negative */ static void @@ -920,7 +918,7 @@ print_hist(RES* ssl, struct ub_stats_info* s) /** print extended stats */ static int -print_ext(RES* ssl, struct ub_stats_info* s) +print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) { int i; char nm[32]; @@ -1129,7 +1127,7 @@ do_stats(RES* ssl, struct worker* worker, int reset) return; if(!print_hist(ssl, &total)) return; - if(!print_ext(ssl, &total)) + if(!print_ext(ssl, &total, daemon->cfg->stat_inhibit_zero)) return; } } diff --git a/doc/Changelog b/doc/Changelog index dd16b88c6..ca5d674fe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +13 December 2022: George + - Expose 'statistics-inhibit-zero' as a configuration option; the + default value retains Unbound's behavior. + 1 December 2022: Wouter - Fix #773: When used with systemd-networkd, unbound does not start until systemd-networkd-wait-online.service times out. diff --git a/doc/example.conf.in b/doc/example.conf.in index c21246e4c..206c2ce89 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -35,9 +35,14 @@ server: # statistics-cumulative: no # enable extended statistics (query types, answer codes, status) - # printed from unbound-control. default off, because of speed. + # printed from unbound-control. Default off, because of speed. # extended-statistics: no + # Inhibits selected extended statistics (qtype, qclass, qopcode, rcode, + # rpz-actions) from printing if their value is 0. + # Default on. + # statistics-inhibit-zero: yes + # number of threads to create. 1 disables threading. # num-threads: 1 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 13e08be20..1cd776bd6 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -112,6 +112,14 @@ If enabled, extended statistics are printed from \fIunbound\-control\fR(8). Default is off, because keeping track of more statistics takes time. The counters are listed in \fIunbound\-control\fR(8). .TP +.B statistics\-inhibit\-zero: \fI +If enabled, selected extended statistics with a value of 0 are inhibited from +printing with \fIunbound\-control\fR(8). +These are query types, query classes, query opcodes, answer rcodes +(except NOERROR, FORMERR, SERVFAIL, NXDOMAIN, NOTIMPL, REFUSED) and +RPZ actions. +Default is on. +.TP .B num\-threads: \fI The number of threads to create to serve clients. Use 1 for no threading. .TP diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 34fb801bb..9fbf09736 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -180,8 +180,6 @@ usage(void) #ifdef HAVE_SHMGET /** what to put on statistics lines between var and value, ": " or "=" */ #define SQ "=" -/** if true, inhibits a lot of =0 lines from the stats output */ -static const int inhibit_zero = 1; /** divide sum of timers to get average */ static void timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) @@ -316,7 +314,7 @@ static void print_hist(struct ub_stats_info* s) } /** print extended */ -static void print_extended(struct ub_stats_info* s) +static void print_extended(struct ub_stats_info* s, int inhibit_zero) { int i; char nm[16]; @@ -439,7 +437,7 @@ static void do_stats_shm(struct config_file* cfg, struct ub_stats_info* stats, if(cfg->stat_extended) { print_mem(shm_stat, &stats[0]); print_hist(stats); - print_extended(stats); + print_extended(stats, cfg->stat_inhibit_zero); } } #endif /* HAVE_SHMGET */ diff --git a/util/config_file.c b/util/config_file.c index f807397e4..5f8c22101 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -99,6 +99,7 @@ config_create(void) cfg->stat_interval = 0; cfg->stat_cumulative = 0; cfg->stat_extended = 0; + cfg->stat_inhibit_zero = 1; cfg->num_threads = 1; cfg->port = UNBOUND_DNS_PORT; cfg->do_ip4 = 1; @@ -516,6 +517,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("use-syslog:", use_syslog) else S_STR("log-identity:", log_identity) else S_YNO("extended-statistics:", stat_extended) + else S_YNO("statistics-inhibit-zero:", stat_inhibit_zero) else S_YNO("statistics-cumulative:", stat_cumulative) else S_YNO("shm-enable:", shm_enable) else S_NUMBER_OR_ZERO("shm-key:", shm_key) @@ -996,6 +998,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "statistics-interval", stat_interval) else O_YNO(opt, "statistics-cumulative", stat_cumulative) else O_YNO(opt, "extended-statistics", stat_extended) + else O_YNO(opt, "statistics-inhibit-zero", stat_inhibit_zero) else O_YNO(opt, "shm-enable", shm_enable) else O_DEC(opt, "shm-key", shm_key) else O_YNO(opt, "use-syslog", use_syslog) diff --git a/util/config_file.h b/util/config_file.h index b1406913a..c5c826a6b 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -76,6 +76,8 @@ struct config_file { int stat_cumulative; /** if true, the statistics are kept in greater detail */ int stat_extended; + /** if true, inhibits a lot of =0 lines from the extended stats output */ + int stat_inhibit_zero; /** number of threads to create */ int num_threads; diff --git a/util/configlexer.c b/util/configlexer.c index 845d9e00d..90c20b148 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 369 -#define YY_END_OF_BUFFER 370 +#define YY_NUM_RULES 370 +#define YY_END_OF_BUFFER 371 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,409 +363,410 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3646] = +static const flex_int16_t yy_accept[3657] = { 0, - 1, 1, 343, 343, 347, 347, 351, 351, 355, 355, - 1, 1, 359, 359, 363, 363, 370, 367, 1, 341, - 341, 368, 2, 368, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 343, 344, 344, 345, - 368, 347, 348, 348, 349, 368, 354, 351, 352, 352, - 353, 368, 355, 356, 356, 357, 368, 366, 342, 2, - 346, 368, 366, 362, 359, 360, 360, 361, 368, 363, - 364, 364, 365, 368, 367, 0, 1, 2, 2, 2, - 2, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 1, 1, 344, 344, 348, 348, 352, 352, 356, 356, + 1, 1, 360, 360, 364, 364, 371, 368, 1, 342, + 342, 369, 2, 369, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 344, 345, 345, 346, + 369, 348, 349, 349, 350, 369, 355, 352, 353, 353, + 354, 369, 356, 357, 357, 358, 369, 367, 343, 2, + 347, 369, 367, 363, 360, 361, 361, 362, 369, 364, + 365, 365, 366, 369, 368, 0, 1, 2, 2, 2, + 2, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 343, - 0, 347, 0, 354, 0, 351, 355, 0, 366, 0, - 2, 2, 366, 362, 0, 359, 363, 0, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 344, + 0, 348, 0, 355, 0, 352, 356, 0, 367, 0, + 2, 2, 367, 363, 0, 360, 364, 0, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 366, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 367, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 339, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 133, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 143, 367, 367, 367, 367, - 367, 367, 367, 366, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 340, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 133, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 143, 368, 368, 368, 368, + 368, 368, 368, 367, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 115, 367, 338, 367, 367, 367, - 367, 367, 367, 367, 367, 8, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 115, 368, 339, 368, 368, 368, + 368, 368, 368, 368, 368, 8, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 134, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 148, 367, 367, 366, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 134, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 148, 368, 368, 367, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 331, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 332, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 366, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 69, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 260, 367, 14, - 15, 367, 19, 18, 367, 367, 240, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 69, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 261, 368, 14, + 15, 368, 19, 18, 368, 368, 241, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 141, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 238, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 3, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 141, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 239, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 3, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 366, 367, 367, 367, 367, 367, 367, 367, 325, 367, - 367, 324, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 367, 368, 368, 368, 368, 368, 368, 368, 326, 368, + 368, 325, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 350, 367, 367, 367, 367, 367, 367, 367, - 367, 68, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 72, 367, - 294, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 332, 333, 367, 367, 367, 367, 367, 367, 367, 367, - 73, 367, 367, 142, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 137, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 227, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 351, 368, 368, 368, 368, 368, 368, 368, + 368, 68, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 72, 368, + 295, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 333, 334, 368, 368, 368, 368, 368, 368, 368, 368, + 73, 368, 368, 142, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 137, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 228, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 21, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 169, 367, 367, 367, - 367, 367, 366, 350, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 113, 367, 367, 367, 367, - 367, 367, 367, 302, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 21, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 169, 368, 368, 368, + 368, 368, 367, 351, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 113, 368, 368, 368, 368, + 368, 368, 368, 303, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 196, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 168, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 112, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 196, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 168, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 112, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 35, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 36, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 70, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 140, 367, 367, 367, 366, 367, 367, - 367, 367, 367, 132, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 71, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 35, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 36, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 70, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 140, 368, 368, 368, 367, 368, 368, + 368, 368, 368, 132, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 71, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 264, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 197, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 58, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 265, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 197, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 58, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 282, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 63, 367, 64, 367, 367, - 367, 367, 367, 116, 367, 117, 367, 367, 367, 367, - 367, 114, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 7, 367, 367, 367, 367, - 366, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 283, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 63, 368, 64, 368, 368, + 368, 368, 368, 116, 368, 117, 368, 368, 368, 368, + 368, 114, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 7, 368, 368, 368, 368, + 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 249, - 367, 367, 367, 367, 172, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 265, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 49, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 59, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 219, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 250, + 368, 368, 368, 368, 172, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 266, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 49, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 59, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 219, - 367, 218, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 16, 17, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 74, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 226, 367, 367, 367, 367, 367, 367, 119, - 367, 118, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 210, 367, + 368, 218, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 16, 17, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 74, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 227, 368, 368, 368, 368, 368, 368, 119, + 368, 118, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 210, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 149, 367, - 367, 367, 366, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 107, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 95, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 239, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 100, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 149, 368, + 368, 368, 367, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 107, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 95, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 240, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 100, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 67, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 213, 214, 367, 367, - 367, 296, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 6, 367, 367, 367, 367, - 367, 367, 367, 315, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 300, 367, 367, 367, 367, 367, 367, - 367, 326, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 67, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 213, 214, 368, 368, + 368, 297, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 6, 368, 368, 368, 368, + 368, 368, 368, 316, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 301, 368, 368, 368, 368, 368, 368, + 368, 327, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 46, 367, 367, 367, - 367, 367, 48, 367, 367, 367, 96, 367, 367, 367, - 367, 367, 56, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 366, 367, 206, 367, 367, 367, - 144, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 231, 367, 207, 367, 367, 367, 246, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 57, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 146, 125, 367, 126, 367, 367, 367, 367, 124, 367, + 368, 368, 368, 368, 368, 368, 46, 368, 368, 368, + 368, 368, 48, 368, 368, 368, 96, 368, 368, 368, + 368, 368, 56, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 367, 368, 206, 368, 368, 368, + 144, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 232, 368, 207, 368, 368, 368, 247, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 57, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 146, 125, 368, 126, 368, 368, 368, 368, 124, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 165, 367, - 367, 54, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 281, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 208, 367, 367, 367, 367, 367, 211, 367, - 217, 367, 367, 367, 367, 367, 367, 245, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 111, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 138, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 165, 368, + 368, 54, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 282, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 208, 368, 368, 368, 368, 368, 211, 368, + 217, 368, 368, 368, 368, 368, 368, 246, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 111, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 138, 368, 368, 368, - 367, 367, 367, 367, 367, 65, 367, 367, 367, 29, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 20, 367, 367, 367, 367, 367, 367, 367, - 30, 39, 367, 177, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 204, 367, - 367, 366, 367, 367, 367, 367, 367, 367, 82, 84, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 304, 367, 367, 367, 367, 261, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 65, 368, 368, 368, 29, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 20, 368, 368, 368, 368, 368, 368, 368, + 30, 39, 368, 177, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 204, 368, + 368, 367, 368, 368, 368, 368, 368, 368, 82, 84, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 305, 368, 368, 368, 368, 262, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 127, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 164, 367, 50, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 255, 367, 367, - 367, 367, 367, 367, 367, 319, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 171, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 313, - 367, 367, 367, 367, 237, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 329, 367, 367, 367, 367, + 368, 368, 127, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 164, 368, 50, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 256, 368, 368, + 368, 368, 368, 368, 368, 320, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 171, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 314, + 368, 368, 368, 368, 238, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 330, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 189, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 120, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 184, 367, 198, 367, 367, 367, 367, 367, - 367, 367, 366, 367, 152, 367, 367, 367, 367, 367, - 106, 367, 367, 367, 367, 229, 367, 367, 367, 367, - 367, 367, 247, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 273, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 189, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 120, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 184, 368, 198, 368, 368, 368, 368, + 368, 368, 368, 367, 368, 152, 368, 368, 368, 368, + 368, 106, 368, 368, 368, 368, 230, 368, 368, 368, + 368, 368, 368, 248, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 274, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 145, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 188, - 367, 367, 367, 367, 367, 367, 367, 85, 367, 86, - 367, 367, 367, 367, 367, 258, 367, 367, 367, 367, - 66, 322, 367, 367, 367, 367, 367, 94, 199, 367, - 220, 367, 250, 367, 367, 212, 297, 367, 367, 367, - 367, 367, 367, 78, 367, 201, 367, 367, 367, 367, - 367, 367, 9, 367, 367, 367, 367, 367, 110, 367, - 367, 367, 367, 367, 367, 286, 367, 367, 367, 367, - 228, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 145, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 188, 368, 368, 368, 368, 368, 368, 368, 85, 368, + 86, 368, 368, 368, 368, 368, 259, 368, 368, 368, + 368, 66, 323, 368, 368, 368, 368, 368, 94, 199, + 368, 220, 368, 251, 368, 368, 212, 298, 368, 368, + 368, 368, 368, 368, 78, 368, 201, 368, 368, 368, + 368, 368, 368, 9, 368, 368, 368, 368, 368, 110, + 368, 368, 368, 368, 368, 368, 287, 368, 368, 368, + 368, 229, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 366, 367, 367, 367, 367, - 187, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 173, 367, 303, 367, 367, 367, 367, 367, 272, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 241, 367, 367, 367, 367, 367, 367, 295, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 367, 368, 368, + 368, 368, 187, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 173, 368, 304, 368, 368, 368, 368, + 368, 273, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 242, 368, 368, 368, 368, 368, 368, + 296, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 170, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 323, 367, 200, - 367, 367, 367, 367, 367, 367, 367, 367, 77, 79, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 109, 367, 367, 367, 367, 367, 367, 284, 367, 367, - 367, 367, 299, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 233, 37, 31, 33, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 38, 367, 32, 34, 367, 40, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 170, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 324, + 368, 200, 368, 368, 368, 368, 368, 368, 368, 368, + 77, 79, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 109, 368, 368, 368, 368, 368, 368, 285, + 368, 368, 368, 368, 300, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 234, 37, + 31, 33, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 38, 368, 32, 34, 368, - 367, 367, 367, 367, 367, 105, 367, 183, 367, 367, - 367, 367, 367, 367, 367, 366, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 235, 232, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 76, 367, - 367, 367, 147, 367, 128, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 166, 51, 367, 367, 367, - 358, 13, 367, 367, 367, 367, 367, 367, 367, 153, - 367, 367, 367, 367, 367, 367, 367, 317, 367, 320, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 40, 368, 368, 368, 368, 368, 368, 368, 105, 368, + 183, 368, 368, 368, 368, 368, 368, 368, 367, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 236, 233, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 76, 368, 368, 368, 147, 368, 128, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 166, 51, + 368, 368, 368, 359, 13, 368, 368, 368, 368, 368, + 368, 368, 153, 368, 368, 368, 368, 368, 368, 368, + 318, 368, 321, 368, 368, 368, 368, 368, 368, 368, - 367, 367, 12, 367, 367, 22, 367, 367, 367, 367, - 367, 367, 367, 290, 367, 367, 367, 367, 301, 367, - 367, 367, 367, 80, 367, 243, 367, 367, 367, 367, - 367, 234, 367, 367, 75, 367, 367, 367, 367, 367, - 367, 23, 367, 367, 47, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 182, 181, 367, - 367, 358, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 236, 230, 367, 248, 367, 367, 305, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 194, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 12, 368, 368, 22, 368, + 368, 368, 368, 368, 368, 368, 291, 368, 368, 368, + 368, 302, 368, 368, 368, 368, 80, 368, 244, 368, + 368, 368, 368, 368, 235, 368, 368, 368, 75, 368, + 368, 368, 368, 368, 368, 23, 368, 368, 47, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 182, 181, 368, 368, 359, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 237, 231, 368, 249, 368, + 368, 306, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 194, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 87, 367, 367, 367, 367, 367, - 367, 367, 285, 367, 367, 367, 367, 216, 367, 367, - 367, 367, 367, 242, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 292, 367, 367, 367, 327, 328, - 179, 367, 367, 367, 81, 367, 367, 367, 367, 190, - 367, 367, 367, 121, 123, 122, 367, 367, 367, 25, - 367, 367, 174, 367, 176, 367, 221, 367, 367, 367, - 367, 180, 367, 367, 367, 367, 251, 367, 367, 367, - 367, 367, 367, 367, 155, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 87, 368, + 368, 368, 368, 368, 368, 368, 286, 368, 368, 368, + 368, 216, 368, 368, 368, 368, 368, 243, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 293, 368, + 368, 368, 328, 329, 179, 368, 368, 368, 81, 368, + 368, 368, 368, 190, 368, 368, 368, 368, 121, 123, + 122, 368, 368, 368, 25, 368, 368, 174, 368, 176, + 368, 221, 368, 368, 368, 368, 180, 368, 368, 368, + 368, 252, 368, 368, 368, 368, 368, 368, 368, 155, - 367, 367, 367, 367, 367, 367, 367, 263, 367, 367, - 367, 367, 367, 367, 367, 336, 367, 27, 367, 298, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 92, 222, 367, - 367, 257, 367, 367, 283, 367, 321, 367, 215, 367, - 367, 367, 367, 367, 293, 60, 367, 367, 367, 367, - 367, 367, 367, 4, 367, 367, 367, 367, 136, 367, - 154, 367, 367, 367, 195, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 254, 41, 42, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 264, 368, 368, 368, 368, 368, 368, 368, + 337, 368, 27, 368, 299, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 92, 222, 368, 368, 258, 368, 368, 284, + 368, 322, 368, 215, 368, 368, 368, 368, 368, 294, + 60, 368, 368, 368, 368, 368, 368, 368, 4, 368, + 368, 368, 368, 136, 368, 154, 368, 368, 368, 195, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 255, - 367, 367, 367, 306, 367, 367, 367, 367, 367, 367, - 367, 271, 367, 367, 367, 367, 367, 367, 367, 367, - 225, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 91, 90, 367, 367, 61, - 367, 367, 289, 367, 259, 367, 367, 367, 367, 367, - 11, 367, 367, 367, 367, 340, 367, 367, 367, 367, - 135, 367, 367, 367, 367, 367, 223, 97, 367, 367, - 44, 367, 367, 367, 367, 367, 367, 367, 367, 186, - 367, 367, 367, 367, 367, 367, 367, 157, 367, 367, - 367, 367, 262, 367, 367, 367, 367, 367, 270, 367, + 41, 42, 368, 368, 368, 368, 368, 368, 368, 307, + 368, 368, 368, 368, 368, 368, 368, 272, 368, 368, + 368, 368, 368, 368, 368, 368, 225, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 91, 90, 368, 368, 61, 368, 368, 290, 368, + 260, 368, 368, 368, 368, 368, 11, 368, 368, 368, + 368, 341, 368, 368, 368, 368, 135, 368, 368, 368, + 368, 368, 368, 223, 97, 368, 368, 44, 368, 368, + 368, 368, 368, 368, 368, 368, 186, 368, 368, 368, + 368, 368, 368, 368, 157, 368, 368, 368, 368, 263, - 367, 367, 367, 150, 367, 367, 367, 129, 131, 130, - 367, 367, 367, 99, 103, 98, 167, 367, 367, 367, - 367, 88, 367, 256, 291, 367, 367, 367, 367, 367, - 367, 10, 367, 367, 367, 367, 367, 287, 330, 367, - 367, 367, 367, 367, 367, 335, 43, 367, 367, 367, - 367, 367, 185, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 104, 102, - 367, 55, 367, 367, 89, 367, 318, 367, 367, 367, - 367, 24, 367, 367, 367, 367, 367, 209, 367, 367, + 368, 368, 368, 368, 368, 271, 368, 368, 368, 368, + 150, 368, 368, 368, 129, 131, 130, 368, 368, 368, + 99, 103, 98, 167, 368, 368, 368, 368, 88, 368, + 257, 292, 368, 368, 368, 368, 368, 368, 10, 368, + 368, 368, 368, 368, 288, 331, 368, 368, 368, 368, + 368, 368, 368, 336, 43, 368, 368, 368, 368, 368, + 185, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 104, 102, 368, 55, + 368, 368, 89, 368, 319, 368, 368, 368, 368, 24, - 367, 367, 367, 367, 224, 367, 367, 367, 367, 367, - 367, 367, 367, 205, 367, 367, 175, 83, 367, 367, - 367, 367, 367, 307, 367, 367, 367, 367, 367, 367, - 367, 267, 367, 367, 266, 151, 367, 367, 101, 52, - 367, 367, 158, 159, 162, 163, 160, 161, 93, 316, - 367, 367, 288, 139, 367, 367, 367, 26, 367, 178, - 367, 367, 367, 367, 203, 367, 253, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 192, 191, - 45, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 368, 368, 368, 368, 368, 209, 368, 368, 368, 368, + 368, 368, 224, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 205, 368, 368, 175, 83, 368, 368, 368, + 368, 368, 308, 368, 368, 368, 368, 368, 368, 368, + 268, 368, 368, 267, 151, 368, 368, 101, 52, 368, + 368, 158, 159, 162, 163, 160, 161, 93, 317, 368, + 368, 289, 139, 368, 368, 368, 368, 26, 368, 178, + 368, 368, 368, 368, 203, 368, 254, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 192, 191, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 314, 367, 367, 367, 367, 108, - 367, 252, 367, 280, 311, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 337, 367, 53, 62, - 5, 367, 367, 244, 367, 367, 312, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 268, 28, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 269, 367, 367, 367, 156, 367, 367, 367, 367, 367, - 367, 367, 367, 193, 367, 202, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 308, 367, 367, 367, 367, + 226, 45, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 315, 368, 368, 368, 368, + 108, 368, 253, 368, 281, 312, 368, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 338, 368, 53, + 62, 5, 368, 368, 245, 368, 368, 313, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 269, 28, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 270, 368, 368, 368, 156, 368, 368, 368, 368, + 368, 368, 368, 368, 193, 368, 202, 368, 368, 368, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 334, 367, 367, 276, 367, 367, 367, - 367, 367, 309, 367, 367, 367, 367, 367, 367, 310, - 367, 367, 367, 274, 367, 277, 278, 367, 367, 367, - 367, 367, 275, 279, 0 + 368, 368, 368, 368, 368, 368, 309, 368, 368, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 368, 368, 335, 368, 368, 277, 368, 368, + 368, 368, 368, 310, 368, 368, 368, 368, 368, 368, + 311, 368, 368, 368, 275, 368, 278, 279, 368, 368, + 368, 368, 368, 276, 280, 0 } ; static const YY_CHAR yy_ec[256] = @@ -808,17 +809,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3664] = +static const flex_int16_t yy_base[3675] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4156, 2779, 81, 7110, - 7110, 7110, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 4156, 2779, 81, 7129, + 7129, 7129, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2391, 7110, 7110, 7110, - 107, 2147, 7110, 7110, 7110, 154, 2117, 1982, 7110, 7110, - 7110, 245, 1770, 7110, 7110, 7110, 163, 1609, 7110, 249, - 7110, 253, 148, 1509, 1480, 7110, 7110, 7110, 257, 1324, - 7110, 7110, 7110, 233, 1201, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2391, 7129, 7129, 7129, + 107, 2147, 7129, 7129, 7129, 154, 2117, 1982, 7129, 7129, + 7129, 245, 1770, 7129, 7129, 7129, 163, 1609, 7129, 249, + 7129, 253, 148, 1509, 1480, 7129, 7129, 7129, 257, 1324, + 7129, 7129, 7129, 233, 1201, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -843,15 +844,15 @@ static const flex_int16_t yy_base[3664] = 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - 704, 705, 710, 711, 708, 7110, 718, 714, 721, 722, + 704, 705, 710, 711, 708, 7129, 718, 714, 721, 722, 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, 770, 765, 772, 785, 767, 773, 777, 778, 786, 774, 780, 798, 812, 790, 808, 809, 795, 813, 814, 815, 816, 818, 822, 819, 833, 821, 823, 830, 836, 837, - 839, 840, 847, 842, 7110, 844, 852, 866, 853, 862, + 839, 840, 847, 842, 7129, 844, 852, 866, 853, 862, 865, 849, 869, 871, 850, 881, 877, 874, 891, 913, - 878, 884, 882, 886, 889, 7110, 896, 893, 937, 895, + 878, 884, 882, 886, 889, 7129, 896, 893, 937, 895, 902, 923, 918, 906, 919, 920, 921, 925, 947, 928, 926, 943, 961, 958, 942, 948, 945, 959, 967, 972, @@ -861,16 +862,16 @@ static const flex_int16_t yy_base[3664] = 1037, 1042, 1022, 1038, 1050, 1049, 1051, 1039, 1040, 1055, 1058, 1067, 1060, 1063, 1076, 1071, 1074, 1077, 1078, 1079, 1081, 1080, 1085, 1086, 1087, 1088, 1095, 1093, 1094, 1101, - 1103, 1096, 1109, 1107, 7110, 1111, 7110, 1113, 1114, 1115, - 1116, 1118, 1119, 1120, 1121, 7110, 1123, 1126, 1127, 1137, + 1103, 1096, 1109, 1107, 7129, 1111, 7129, 1113, 1114, 1115, + 1116, 1118, 1119, 1120, 1121, 7129, 1123, 1126, 1127, 1137, 1128, 1138, 1145, 1152, 1130, 1148, 1149, 1150, 1151, 1155, 1158, 1169, 1156, 1161, 1172, 1159, 1174, 1171, 1168, 1177, - 1175, 1182, 1178, 1184, 1185, 1186, 1205, 7110, 1187, 1188, + 1175, 1182, 1178, 1184, 1185, 1186, 1205, 7129, 1187, 1188, 1195, 1192, 1198, 1203, 1202, 1212, 1223, 1214, 1215, 1222, 1226, 1239, 1227, 1230, 1191, 1234, 1236, 1247, 1237, 1249, 1243, 1251, 1245, 1252, 1254, 1255, 1259, 1261, 1265, 1266, - 1268, 7110, 1267, 1271, 1278, 1285, 1280, 1272, 1269, 1283, + 1268, 7129, 1267, 1271, 1278, 1285, 1280, 1272, 1269, 1283, 1286, 1289, 1290, 1291, 1293, 1296, 1298, 1300, 1308, 1303, 1311, 1309, 1310, 1312, 1314, 1317, 1316, 1318, 1323, 1331, 1328, 1333, 1336, 1344, 1343, 1346, 1353, 1355, 1340, 1348, @@ -878,7 +879,7 @@ static const flex_int16_t yy_base[3664] = 1373, 1374, 1375, 1377, 1378, 1382, 1380, 1385, 1387, 1388, 1390, 1389, 1391, 1398, 1397, 1399, 1404, 1401, 1417, 1403, - 1406, 1420, 1423, 1410, 1414, 7110, 1432, 1427, 1430, 1431, + 1406, 1420, 1423, 1410, 1414, 7129, 1432, 1427, 1430, 1431, 1434, 1437, 1438, 1442, 1441, 1444, 1447, 1445, 1446, 1449, 1452, 1453, 1454, 1455, 1456, 1462, 1469, 1464, 1473, 1480, 1479, 1481, 1467, 1483, 1484, 1487, 1488, 1495, 1491, 1499, @@ -892,20 +893,20 @@ static const flex_int16_t yy_base[3664] = 1619, 1626, 1628, 1634, 1635, 1636, 1637, 1638, 1639, 1641, 1642, 1648, 1645, 1651, 1652, 1655, 1657, 1656, 1670, 1662, 1671, 1672, 1659, 1675, 1677, 1679, 1660, 1683, 1685, 1688, - 1690, 1680, 7110, 1678, 1702, 1691, 1699, 1698, 1700, 1701, - 1712, 1705, 1707, 1704, 1708, 1709, 1734, 7110, 1715, 7110, - 7110, 1718, 7110, 7110, 1717, 1721, 7110, 1716, 1731, 1723, + 1690, 1680, 7129, 1678, 1702, 1691, 1699, 1698, 1700, 1701, + 1712, 1705, 1707, 1704, 1708, 1709, 1734, 7129, 1715, 7129, + 7129, 1718, 7129, 7129, 1717, 1721, 7129, 1716, 1731, 1723, 1724, 1741, 1747, 1749, 1744, 1742, 1751, 1752, 1763, 1773, 1758, 1759, 1761, 1766, 1767, 1762, 1779, 1776, 1768, 1788, 1789, 1769, 1795, 1802, 1790, 1805, 1800, 1803, 1809, 1807, 1811, 1813, 1817, 1819, 1820, 1822, 1823, 1824, 1826, 1720, 1828, 1825, 1833, 1830, 1834, 1836, 1835, 1843, 1846, 1839, - 1855, 7110, 1853, 1856, 1842, 1865, 1862, 1866, 1868, 1863, + 1855, 7129, 1853, 1856, 1842, 1865, 1862, 1866, 1868, 1863, 1864, 1874, 1876, 1870, 1877, 1879, 1881, 1880, 1882, 1883, - 1886, 1889, 1892, 1890, 1894, 1897, 1896, 1902, 7110, 1903, + 1886, 1889, 1892, 1890, 1894, 1897, 1896, 1902, 7129, 1903, 1904, 1906, 1910, 1907, 1908, 1917, 1909, 1918, 1919, 1920, - 1932, 1924, 1934, 1925, 1927, 1936, 1929, 1937, 1939, 7110, + 1932, 1924, 1934, 1925, 1927, 1936, 1929, 1937, 1939, 7129, 1947, 1952, 1941, 1954, 1944, 1948, 1956, 1957, 1958, 1960, 1961, 1963, 1964, 1966, 1977, 1972, 1974, 1973, 1975, 1983, @@ -913,716 +914,718 @@ static const flex_int16_t yy_base[3664] = 2003, 2005, 2006, 2008, 2012, 2013, 2020, 2016, 2024, 2017, 2019, 2035, 2040, 2022, 2033, 2036, 2037, 2038, 2043, 2047, 2051, 2046, 2050, 2053, 2060, 2055, 2058, 2061, 2062, 2069, - 2071, 2063, 2073, 2080, 2064, 2074, 2083, 2076, 7110, 2082, - 2084, 7110, 2089, 2090, 2091, 2113, 2092, 2096, 2099, 2104, + 2071, 2063, 2073, 2080, 2064, 2074, 2083, 2076, 7129, 2082, + 2084, 7129, 2089, 2090, 2091, 2113, 2092, 2096, 2099, 2104, 2101, 2105, 2108, 2097, 2115, 2107, 2131, 2119, 2127, 2132, 2135, 2137, 2133, 2138, 2139, 2140, 2144, 2146, 2149, 2151, 2159, 2162, 2166, 2168, 2170, 2169, 2171, 2172, 2174, 2194, 2173, 2175, 2176, 2177, 2178, 2181, 2188, 2182, 2183, 2184, 2187, 2199, 2207, 2204, 2205, 2210, 2211, 2212, 2216, 2219, - 2221, 2222, 7110, 2229, 2232, 2224, 2226, 2233, 2244, 2236, - 2237, 7110, 2239, 2240, 2245, 2253, 2250, 2251, 2252, 2254, - 2255, 2258, 2260, 2262, 2264, 2275, 2263, 2282, 7110, 2267, - 7110, 2265, 2266, 2284, 2268, 2277, 2285, 2290, 2288, 2292, - 7110, 7110, 2294, 2295, 2300, 2302, 2312, 2298, 2308, 2309, - 7110, 2310, 2317, 7110, 2314, 2313, 2321, 2319, 2320, 2325, - 2327, 2329, 2331, 2336, 2332, 2343, 2334, 2339, 2347, 7110, + 2221, 2222, 7129, 2229, 2232, 2224, 2226, 2233, 2244, 2236, + 2237, 7129, 2239, 2240, 2245, 2253, 2250, 2251, 2252, 2254, + 2255, 2258, 2260, 2262, 2264, 2275, 2263, 2282, 7129, 2267, + 7129, 2265, 2266, 2284, 2268, 2277, 2285, 2290, 2288, 2292, + 7129, 7129, 2294, 2295, 2300, 2302, 2312, 2298, 2308, 2309, + 7129, 2310, 2317, 7129, 2314, 2313, 2321, 2319, 2320, 2325, + 2327, 2329, 2331, 2336, 2332, 2343, 2334, 2339, 2347, 7129, 2350, 2335, 2348, 2353, 2354, 2355, 2356, 2357, 2363, 2360, - 7110, 2364, 2366, 2367, 2380, 2376, 2377, 2378, 2381, 2387, + 7129, 2364, 2366, 2367, 2380, 2376, 2377, 2378, 2381, 2387, 2379, 2383, 2385, 2389, 2390, 2399, 2400, 2401, 2404, 2406, - 2413, 2410, 2414, 7110, 2412, 2398, 2418, 2425, 2421, 2423, + 2413, 2410, 2414, 7129, 2412, 2398, 2418, 2425, 2421, 2423, 2420, 2424, 2427, 2428, 2430, 2431, 2436, 2437, 2435, 2441, 2442, 2443, 2450, 2451, 2452, 2453, 2456, 2447, 2457, 2460, - 2461, 2468, 2463, 2465, 2469, 2470, 7110, 2473, 2476, 2477, + 2461, 2468, 2463, 2465, 2469, 2470, 7129, 2473, 2476, 2477, 2478, 2482, 2480, 171, 2484, 2486, 2490, 2489, 2496, 2504, 2491, 2499, 2512, 2497, 2509, 2508, 2515, 2507, 2516, 2517, - 2518, 2519, 2524, 2525, 2523, 7110, 2527, 2529, 2528, 2532, - 2535, 2534, 2539, 7110, 2545, 2536, 2551, 2560, 2550, 2548, + 2518, 2519, 2524, 2525, 2523, 7129, 2527, 2529, 2528, 2532, + 2535, 2534, 2539, 7129, 2545, 2536, 2551, 2560, 2550, 2548, 2561, 2552, 2563, 2565, 2567, 2566, 2568, 2575, 2573, 2570, - 2576, 2577, 7110, 2583, 2586, 2588, 2579, 2589, 2597, 2595, + 2576, 2577, 7129, 2583, 2586, 2588, 2579, 2589, 2597, 2595, 2590, 2592, 2598, 2600, 2606, 2602, 2608, 2610, 2611, 2613, 2616, 2615, 2624, 2614, 2619, 2626, 2623, 2625, 2628, 2627, - 2633, 2636, 2643, 2641, 7110, 2648, 2645, 2649, 2647, 2650, + 2633, 2636, 2643, 2641, 7129, 2648, 2645, 2649, 2647, 2650, 2652, 2654, 2653, 2672, 2656, 2662, 2664, 2673, 2678, 2667, 2681, 2688, 2684, 2689, 2693, 2698, 2695, 2699, 2705, 2696, 2707, 2709, 2703, 2710, 2719, 2711, 2715, 2716, 2718, 2722, 2730, 2731, 2729, 2733, 2726, 2727, 2744, 2738, 2750, 2756, - 2746, 7110, 2755, 2748, 2742, 2758, 2760, 2767, 2764, 2765, + 2746, 7129, 2755, 2748, 2742, 2758, 2760, 2767, 2764, 2765, 2770, 2768, 2771, 2772, 2774, 2778, 2783, 2784, 2657, 2781, 2786, 2790, 2788, 2794, 2797, 2796, 2798, 2801, 2808, 2805, - 2810, 2811, 7110, 2812, 2816, 2799, 2817, 2825, 2819, 2828, + 2810, 2811, 7129, 2812, 2816, 2799, 2817, 2825, 2819, 2828, 2829, 2831, 2822, 2832, 2833, 2835, 2837, 2838, 2841, 2840, - 2848, 2845, 2847, 2849, 2846, 7110, 2858, 2852, 2859, 2863, + 2848, 2845, 2847, 2849, 2846, 7129, 2858, 2852, 2859, 2863, 2862, 2865, 2866, 2873, 2877, 2879, 2881, 2883, 2869, 2885, - 2886, 2889, 7110, 2896, 2898, 2894, 2895, 2903, 2901, 2904, - 2905, 2907, 2908, 7110, 2909, 2911, 2912, 2915, 2913, 2917, - 2924, 2925, 2920, 7110, 2927, 2931, 2932, 2934, 2935, 2936, - 2937, 2938, 2941, 2942, 2944, 2943, 2957, 2946, 2953, 7110, + 2886, 2889, 7129, 2896, 2898, 2894, 2895, 2903, 2901, 2904, + 2905, 2907, 2908, 7129, 2909, 2911, 2912, 2915, 2913, 2917, + 2924, 2925, 2920, 7129, 2927, 2931, 2932, 2934, 2935, 2936, + 2937, 2938, 2941, 2942, 2944, 2943, 2957, 2946, 2953, 7129, 2949, 2965, 2960, 2963, 2966, 2970, 2971, 2973, 2975, 2976, - 2977, 2981, 7110, 2993, 2871, 2989, 2998, 2982, 2990, 2994, - 2999, 3002, 3003, 2996, 3005, 3006, 3009, 7110, 3010, 3013, + 2977, 2981, 7129, 2993, 2871, 2989, 2998, 2982, 2990, 2994, + 2999, 3002, 3003, 2996, 3005, 3006, 3009, 7129, 3010, 3013, 3015, 3017, 3019, 3020, 3021, 3028, 3027, 3026, 3030, 3032, 3035, 3036, 3034, 3043, 3037, 3047, 3041, 3045, 3054, 3055, 3057, 3058, 3060, 3061, 3070, 3071, 3068, 3073, 3076, 3077, - 3069, 3078, 3079, 3087, 3092, 3094, 3089, 3095, 7110, 3098, + 3069, 3078, 3079, 3087, 3092, 3094, 3089, 3095, 7129, 3098, 3100, 3093, 3091, 3101, 3105, 3103, 3107, 3110, 3106, 3108, 3120, 3121, 3112, 3128, 3130, 3123, 3132, 3134, 3136, 3137, 3139, 3138, 3140, 3141, 3148, 3145, 3147, 3149, 3158, 3151, 3156, 3169, 3154, 3161, 3164, 3165, 3166, 3168, 3171, 3172, 3176, 3178, 3174, 3179, 3188, 3190, 3195, 3186, 3197, 3196, - 3199, 3202, 3203, 3204, 7110, 3207, 3208, 3205, 3212, 3215, + 3199, 3202, 3203, 3204, 7129, 3207, 3208, 3205, 3212, 3215, 3218, 3219, 3227, 3222, 3226, 3234, 3230, 3229, 3236, 3238, - 3241, 3242, 3243, 3250, 3246, 7110, 3247, 7110, 3248, 3249, - 3252, 3261, 3256, 7110, 3267, 7110, 3257, 3271, 3262, 3264, - 3268, 7110, 3272, 3273, 3277, 3274, 3279, 3281, 3285, 3286, + 3241, 3242, 3243, 3250, 3246, 7129, 3247, 7129, 3248, 3249, + 3252, 3261, 3256, 7129, 3267, 7129, 3257, 3271, 3262, 3264, + 3268, 7129, 3272, 3273, 3277, 3274, 3279, 3281, 3285, 3286, 3287, 3288, 3289, 3296, 3291, 3295, 3298, 3302, 3301, 3305, 3308, 3310, 3311, 3313, 3312, 3315, 3319, 3320, 3321, 3328, - 3330, 3331, 3332, 3333, 3334, 7110, 3338, 3341, 3335, 3346, + 3330, 3331, 3332, 3333, 3334, 7129, 3338, 3341, 3335, 3346, 3343, 3345, 3347, 3353, 3354, 3355, 3356, 3360, 3358, 3362, - 3367, 3370, 3364, 3371, 3374, 3381, 3383, 3375, 3390, 7110, - 3385, 3388, 3389, 3392, 7110, 3396, 3393, 3402, 3404, 3397, + 3367, 3370, 3364, 3371, 3374, 3381, 3383, 3375, 3390, 7129, + 3385, 3388, 3389, 3392, 7129, 3396, 3393, 3402, 3404, 3397, 3394, 3400, 3406, 3413, 3407, 3410, 3416, 3420, 3424, 3427, - 3428, 7110, 3421, 3429, 3419, 3437, 3442, 3433, 3445, 3449, + 3428, 7129, 3421, 3429, 3419, 3437, 3442, 3433, 3445, 3449, 3446, 3452, 3454, 3456, 3458, 3435, 3459, 3460, 3461, 3462, 3470, 3472, 3473, 3469, 3482, 3468, 3475, 3484, 3485, 3471, 3478, 3486, 3487, 3488, 3492, 3494, 3493, 3495, 3496, 3497, - 3503, 3509, 7110, 3501, 3512, 3504, 3521, 3510, 3518, 3519, - 3514, 3523, 3531, 3527, 7110, 3538, 3525, 3535, 3529, 3542, - 3533, 3546, 3547, 3549, 3550, 3551, 3554, 3553, 3552, 7110, + 3503, 3509, 7129, 3501, 3512, 3504, 3521, 3510, 3518, 3519, + 3514, 3523, 3531, 3527, 7129, 3538, 3525, 3535, 3529, 3542, + 3533, 3546, 3547, 3549, 3550, 3551, 3554, 3553, 3552, 7129, - 3555, 7110, 3556, 3569, 3558, 3564, 3573, 3574, 3576, 3578, + 3555, 7129, 3556, 3569, 3558, 3564, 3573, 3574, 3576, 3578, 3580, 3582, 3583, 3584, 3586, 3589, 3590, 3594, 3595, 3598, 3596, 3615, 3600, 3597, 3602, 3611, 3612, 3613, 3616, 3626, - 3618, 3617, 7110, 7110, 3619, 3621, 3633, 3628, 3635, 3636, - 3637, 3640, 3647, 3643, 3646, 3649, 3650, 3658, 7110, 3653, + 3618, 3617, 7129, 7129, 3619, 3621, 3633, 3628, 3635, 3636, + 3637, 3640, 3647, 3643, 3646, 3649, 3650, 3658, 7129, 3653, 3654, 3660, 3661, 3662, 3671, 3663, 3673, 3680, 3678, 3675, - 3685, 3684, 7110, 3677, 3686, 3693, 3688, 3695, 3702, 7110, - 3691, 7110, 3692, 3694, 3703, 3706, 3705, 3707, 3708, 3709, + 3685, 3684, 7129, 3677, 3686, 3693, 3688, 3695, 3702, 7129, + 3691, 7129, 3692, 3694, 3703, 3706, 3705, 3707, 3708, 3709, 3712, 3715, 3717, 3720, 3730, 3732, 3733, 3727, 3735, 3723, - 3728, 3737, 3739, 3742, 3750, 3745, 3747, 3748, 7110, 3752, + 3728, 3737, 3739, 3742, 3750, 3745, 3747, 3748, 7129, 3752, - 3749, 3753, 3754, 3758, 3760, 3768, 3761, 3762, 7110, 3764, + 3749, 3753, 3754, 3758, 3760, 3768, 3761, 3762, 7129, 3764, 3771, 3774, 3772, 3776, 3782, 3779, 3783, 3786, 3788, 3789, - 3790, 3792, 3794, 7110, 3793, 3796, 3807, 3799, 3800, 3802, - 3810, 3814, 3820, 7110, 3821, 3813, 3829, 3825, 3815, 3828, + 3790, 3792, 3794, 7129, 3793, 3796, 3807, 3799, 3800, 3802, + 3810, 3814, 3820, 7129, 3821, 3813, 3829, 3825, 3815, 3828, 3831, 3832, 3833, 3835, 3836, 3837, 3838, 3839, 3844, 3845, - 3841, 3840, 3847, 3858, 3859, 3850, 3869, 3857, 3861, 7110, + 3841, 3840, 3847, 3858, 3859, 3850, 3869, 3857, 3861, 7129, 3871, 3866, 3872, 3873, 3874, 3875, 3876, 3878, 3881, 3884, 3886, 3896, 3897, 3888, 3893, 3899, 3901, 3903, 3908, 3910, - 7110, 3911, 3904, 3918, 3916, 3915, 3923, 3925, 3917, 3927, + 7129, 3911, 3904, 3918, 3916, 3915, 3923, 3925, 3917, 3927, 3929, 3919, 3930, 3931, 3933, 3941, 3939, 3949, 3945, 3935, - 3947, 3946, 3954, 3950, 3952, 3953, 3956, 7110, 3968, 3963, + 3947, 3946, 3954, 3950, 3952, 3953, 3956, 7129, 3968, 3963, 3969, 3971, 3974, 3975, 3982, 3978, 3979, 3980, 3989, 3981, - 3991, 3983, 3986, 3993, 3996, 3997, 7110, 7110, 4005, 3998, - 4000, 7110, 4002, 4006, 4016, 4012, 4014, 4015, 4018, 4019, - 4020, 4021, 4024, 4022, 4030, 7110, 4037, 4034, 4038, 4035, - 4042, 4050, 4041, 7110, 4040, 4051, 4053, 4056, 4054, 4057, + 3991, 3983, 3986, 3993, 3996, 3997, 7129, 7129, 4005, 3998, + 4000, 7129, 4002, 4006, 4016, 4012, 4014, 4015, 4018, 4019, + 4020, 4021, 4024, 4022, 4030, 7129, 4037, 4034, 4038, 4035, + 4042, 4050, 4041, 7129, 4040, 4051, 4053, 4056, 4054, 4057, 4058, 4060, 4062, 4064, 4066, 4067, 4068, 4070, 4080, 4081, - 4073, 4077, 4082, 7110, 4083, 4084, 4090, 4088, 4089, 4091, - 4096, 7110, 4097, 4100, 4098, 4101, 4105, 4109, 4115, 4112, + 4073, 4077, 4082, 7129, 4083, 4084, 4090, 4088, 4089, 4091, + 4096, 7129, 4097, 4100, 4098, 4101, 4105, 4109, 4115, 4112, 4118, 4120, 4121, 4124, 4122, 4125, 4126, 4129, 4136, 4132, - 4133, 4134, 4131, 4138, 4151, 4153, 7110, 4147, 4154, 4140, - 4158, 4162, 7110, 4167, 4174, 4175, 7110, 4177, 4155, 4159, - 4172, 4182, 7110, 4178, 4179, 4180, 4185, 4187, 4194, 4189, - 4197, 4196, 4198, 4193, 4199, 4202, 7110, 4203, 4200, 4201, - 7110, 4205, 4209, 4221, 4223, 4207, 4224, 4225, 4228, 4226, - 4229, 7110, 4230, 7110, 4234, 4236, 4239, 7110, 4241, 4242, + 4133, 4134, 4131, 4138, 4151, 4153, 7129, 4147, 4154, 4140, + 4158, 4162, 7129, 4167, 4174, 4175, 7129, 4177, 4155, 4159, + 4172, 4182, 7129, 4178, 4179, 4180, 4185, 4187, 4194, 4189, + 4197, 4196, 4198, 4193, 4199, 4202, 7129, 4203, 4200, 4201, + 7129, 4205, 4209, 4221, 4223, 4207, 4224, 4225, 4228, 4226, + 4229, 7129, 4230, 7129, 4234, 4236, 4239, 7129, 4241, 4242, 4244, 4246, 4243, 4250, 4251, 4257, 4259, 4247, 4261, 4262, - 4263, 4264, 4266, 4275, 4265, 4272, 4273, 4274, 7110, 4277, + 4263, 4264, 4266, 4275, 4265, 4272, 4273, 4274, 7129, 4277, 4276, 4284, 4286, 4279, 4296, 4292, 4290, 4285, 4298, 4287, - 7110, 7110, 4305, 7110, 4307, 4308, 4309, 4311, 7110, 4313, + 7129, 7129, 4305, 7129, 4307, 4308, 4309, 4311, 7129, 4313, - 4312, 4320, 4315, 4316, 4319, 4318, 4323, 4329, 7110, 4331, - 4333, 7110, 4335, 4338, 4345, 4340, 4341, 4342, 4343, 4346, + 4312, 4320, 4315, 4316, 4319, 4318, 4323, 4329, 7129, 4331, + 4333, 7129, 4335, 4338, 4345, 4340, 4341, 4342, 4343, 4346, 4350, 4349, 4353, 4355, 4356, 4357, 4352, 4366, 4361, 4374, - 4360, 4379, 7110, 4362, 4372, 4377, 4387, 4384, 4380, 4388, - 4392, 4390, 7110, 4394, 4401, 4393, 4404, 4405, 7110, 4406, - 7110, 4396, 4407, 4408, 4417, 4413, 4424, 7110, 4421, 4422, + 4360, 4379, 7129, 4362, 4372, 4377, 4387, 4384, 4380, 4388, + 4392, 4390, 7129, 4394, 4401, 4393, 4404, 4405, 7129, 4406, + 7129, 4396, 4407, 4408, 4417, 4413, 4424, 7129, 4421, 4422, 4426, 4427, 4428, 4429, 4430, 4434, 4437, 4438, 4440, 4447, - 4443, 4444, 4442, 4451, 4458, 7110, 4446, 4449, 4452, 4462, + 4443, 4444, 4442, 4451, 4458, 7129, 4446, 4449, 4452, 4462, 4467, 4459, 4469, 4471, 4478, 4474, 4473, 4476, 4477, 4481, - 4483, 4486, 4488, 4490, 4492, 4482, 7110, 4498, 4496, 4501, + 4483, 4486, 4488, 4490, 4492, 4482, 7129, 4498, 4496, 4501, - 4504, 4512, 4507, 4509, 4510, 7110, 4514, 4515, 4516, 7110, - 4517, 4513, 4523, 4528, 4524, 4529, 4531, 4534, 4535, 4537, - 4538, 4536, 7110, 4540, 4543, 4539, 4556, 4557, 4545, 4546, - 7110, 7110, 4563, 7110, 4565, 4544, 4558, 4548, 4568, 4570, - 4575, 4572, 4577, 4578, 4580, 4583, 4584, 4585, 7110, 4586, - 4594, 4590, 4601, 4597, 4608, 4603, 4607, 4604, 7110, 7110, - 4610, 4613, 4611, 4617, 4618, 4621, 4622, 4629, 4625, 4626, - 4632, 4636, 4643, 7110, 4634, 4635, 4642, 4644, 7110, 4645, - 4647, 4648, 4650, 4649, 4651, 4656, 4653, 4657, 4658, 4660, - 4663, 4661, 4674, 4666, 4668, 4675, 4677, 4678, 4681, 4682, + 4504, 4512, 4507, 4509, 4510, 7129, 4514, 4515, 4516, 7129, + 4517, 4523, 4524, 4528, 4529, 4532, 4534, 4535, 4513, 4539, + 4540, 4536, 7129, 4537, 4542, 4544, 4556, 4557, 4558, 4545, + 7129, 7129, 4559, 7129, 4560, 4546, 4568, 4570, 4548, 4571, + 4575, 4572, 4577, 4579, 4582, 4585, 4586, 4587, 7129, 4584, + 4596, 4592, 4599, 4608, 4610, 4606, 4605, 4595, 7129, 7129, + 4612, 4616, 4618, 4620, 4621, 4623, 4607, 4630, 4628, 4636, + 4639, 4629, 4632, 7129, 4640, 4641, 4643, 4645, 7129, 4646, + 4648, 4649, 4651, 4650, 4652, 4657, 4654, 4658, 4656, 4660, + 4664, 4662, 4675, 4667, 4669, 4676, 4679, 4681, 4682, 4683, - 4683, 4688, 7110, 4690, 4685, 4691, 4692, 4696, 4699, 4702, - 4703, 4700, 4705, 4713, 7110, 4714, 7110, 4709, 4706, 4725, - 4715, 4708, 4733, 4730, 4734, 4727, 4718, 4736, 4738, 4743, - 4746, 4739, 4748, 4749, 4752, 4753, 4754, 7110, 4757, 4759, - 4761, 4763, 4769, 4771, 4773, 7110, 4774, 4765, 4776, 4777, - 4781, 4783, 4784, 4787, 4788, 4791, 4792, 4793, 4795, 4800, - 4797, 4801, 4802, 4804, 4805, 7110, 4808, 4815, 4809, 4817, - 4812, 4820, 4821, 4823, 4831, 4834, 4822, 4829, 4835, 7110, - 4836, 4838, 4840, 4848, 7110, 4843, 4845, 4846, 4849, 4850, - 4853, 4855, 4856, 4858, 4862, 7110, 4866, 4859, 4868, 4867, + 4684, 4689, 7129, 4690, 4686, 4692, 4693, 4697, 4699, 4703, + 4704, 4701, 4706, 4714, 7129, 4709, 7129, 4715, 4707, 4710, + 4717, 4718, 4730, 4726, 4732, 4733, 4734, 4736, 4739, 4740, + 4743, 4745, 4749, 4744, 4751, 4754, 4756, 7129, 4762, 4763, + 4768, 4765, 4771, 4773, 4775, 7129, 4776, 4778, 4779, 4782, + 4784, 4786, 4787, 4789, 4737, 4791, 4792, 4795, 4797, 4802, + 4803, 4804, 4793, 4805, 4808, 7129, 4809, 4812, 4815, 4821, + 4818, 4823, 4816, 4826, 4824, 4831, 4832, 4833, 4835, 7129, + 4838, 4839, 4842, 4849, 7129, 4844, 4845, 4846, 4847, 4850, + 4856, 4852, 4861, 4857, 4859, 7129, 4868, 4863, 4870, 4865, - 4870, 4871, 4872, 4876, 4882, 4884, 4878, 4891, 7110, 4892, - 4885, 4890, 4896, 4898, 4899, 4900, 4903, 4904, 7110, 4905, - 4913, 4914, 4907, 4926, 4931, 4906, 4917, 4934, 4924, 4933, - 4915, 4935, 4936, 4937, 4941, 4942, 4943, 4944, 4945, 4955, - 4960, 4958, 7110, 4946, 7110, 4947, 4956, 4963, 4974, 4969, - 4971, 4972, 4976, 4975, 7110, 4961, 4982, 4984, 4979, 4987, - 7110, 4988, 4985, 4989, 4990, 7110, 5003, 4986, 4992, 4993, - 5008, 5009, 7110, 5014, 5015, 5011, 5023, 5025, 5020, 5022, - 5024, 5026, 5028, 5030, 5031, 5032, 5041, 5034, 5037, 7110, - 5039, 5046, 5052, 5053, 5054, 5036, 5047, 5055, 5057, 5063, + 4873, 4875, 4880, 4876, 4881, 4878, 4884, 4885, 7129, 4896, + 4889, 4892, 4894, 4898, 4900, 4904, 4906, 4907, 4908, 7129, + 4909, 4911, 4917, 4918, 4926, 4927, 4910, 4924, 4935, 4932, + 4936, 4919, 4930, 4942, 4928, 4938, 4940, 4946, 4950, 4951, + 4958, 4960, 4953, 7129, 4956, 7129, 4961, 4962, 4963, 4972, + 4968, 4970, 4973, 4975, 4967, 7129, 4978, 4982, 4984, 4985, + 4986, 7129, 4990, 4988, 4991, 4993, 7129, 4996, 4992, 5001, + 5003, 5008, 5009, 7129, 5012, 5013, 5014, 5023, 5024, 5020, + 5026, 5022, 5027, 5030, 5031, 5032, 5033, 5041, 5038, 5039, + 7129, 5043, 5037, 5049, 5050, 5053, 5054, 5056, 5046, 5057, - 5060, 7110, 5064, 5065, 5066, 5067, 5068, 5070, 5071, 5072, - 5084, 5083, 5079, 5076, 5081, 5088, 5090, 5092, 5097, 7110, - 5093, 5098, 5099, 5108, 5109, 5110, 5115, 7110, 5111, 7110, - 5112, 5116, 5121, 5124, 5128, 7110, 5131, 5132, 5119, 5136, - 7110, 7110, 5138, 5139, 5140, 5144, 5141, 7110, 7110, 5147, - 7110, 5148, 7110, 5149, 5151, 7110, 7110, 5101, 5153, 5154, - 5155, 5156, 5158, 7110, 5165, 7110, 5168, 5169, 5170, 5172, - 5159, 5173, 7110, 5174, 5177, 5182, 5183, 5185, 7110, 5176, - 5187, 5191, 5204, 5190, 5186, 7110, 5200, 5202, 5203, 5206, - 7110, 5209, 5212, 5213, 5207, 5214, 5215, 5216, 5123, 5217, + 5060, 5062, 7129, 5064, 5067, 5068, 5070, 5071, 5072, 5073, + 5074, 5083, 5078, 5080, 5082, 5086, 5089, 5091, 5092, 5095, + 7129, 5097, 5098, 5099, 5107, 5112, 5102, 5115, 7129, 5111, + 7129, 5116, 5118, 5121, 5123, 5124, 7129, 5128, 5133, 5103, + 5134, 7129, 7129, 5137, 5144, 5127, 5143, 5140, 7129, 7129, + 5146, 7129, 5147, 7129, 5148, 5150, 7129, 7129, 5151, 5152, + 5153, 5154, 5155, 5158, 7129, 5164, 7129, 5167, 5168, 5169, + 5171, 5172, 5175, 7129, 5173, 5176, 5177, 5181, 5183, 7129, + 5184, 5186, 5185, 5196, 5197, 5198, 7129, 5202, 5203, 5199, + 5204, 7129, 5207, 5210, 5211, 5205, 5212, 5214, 5219, 5226, - 5219, 5220, 5229, 5226, 5227, 5230, 5237, 5239, 5241, 5243, - 5244, 5245, 5248, 5249, 5251, 5254, 5257, 5258, 5259, 5260, - 5261, 5265, 5267, 5264, 5273, 5275, 5268, 5277, 5284, 5285, - 5286, 5270, 5288, 5287, 5289, 5295, 5291, 5302, 5297, 5299, - 5303, 5304, 5306, 5305, 5308, 5312, 5313, 5317, 5315, 5318, - 7110, 5311, 5321, 5322, 5331, 5325, 5332, 5335, 5342, 5347, - 5348, 7110, 5350, 7110, 5352, 5336, 5344, 5338, 5356, 7110, - 5358, 5359, 5360, 5361, 5363, 5364, 5365, 5366, 5362, 5369, - 5373, 7110, 5375, 5389, 5376, 5370, 5385, 5396, 7110, 5391, - 5398, 5383, 5393, 5399, 5402, 5403, 5404, 5405, 5408, 5406, + 5217, 5220, 5225, 5230, 5229, 5232, 5233, 5240, 5242, 5244, + 5246, 5236, 5251, 5247, 5250, 5256, 5258, 5260, 5254, 5262, + 5263, 5264, 5267, 5269, 5271, 5268, 5273, 5277, 5278, 5280, + 5274, 5283, 5281, 5291, 5292, 5294, 5295, 5299, 5296, 5301, + 5302, 5303, 5304, 5306, 5307, 5309, 5308, 5312, 5318, 5313, + 5320, 5325, 7129, 5316, 5326, 5327, 5329, 5333, 5336, 5337, + 5339, 5344, 5345, 7129, 5351, 7129, 5353, 5349, 5355, 5356, + 5357, 7129, 5358, 5359, 5360, 5361, 5362, 5363, 5368, 5364, + 5369, 5373, 5379, 7129, 5385, 5393, 5374, 5376, 5386, 5397, + 7129, 5390, 5401, 5394, 5402, 5403, 5404, 5407, 5405, 5406, - 5407, 5413, 5416, 5410, 5419, 5420, 7110, 5428, 5432, 5435, - 5421, 5433, 5434, 5436, 5438, 5440, 5442, 5443, 5444, 5446, - 5447, 5448, 5454, 5460, 5457, 5465, 5470, 7110, 5453, 7110, - 5471, 5473, 5474, 5461, 5477, 5478, 5475, 5479, 7110, 7110, - 5476, 5484, 5485, 5490, 5491, 5487, 5494, 5497, 5499, 5500, - 7110, 5501, 5503, 5507, 5511, 5510, 5512, 7110, 5517, 5519, - 5520, 5522, 7110, 5523, 5524, 5526, 5527, 5537, 5529, 5542, - 5538, 5544, 5531, 5534, 5545, 5550, 7110, 7110, 7110, 7110, - 5551, 5554, 5556, 5557, 5558, 5559, 5560, 5564, 5566, 5562, - 5563, 5567, 7110, 5578, 7110, 7110, 5574, 7110, 5580, 5581, + 5409, 5408, 5410, 5414, 5416, 5418, 5419, 5426, 7129, 5429, + 5431, 5439, 5434, 5435, 5436, 5440, 5441, 5442, 5444, 5445, + 5446, 5448, 5449, 5450, 5456, 5462, 5458, 5467, 5472, 7129, + 5454, 7129, 5474, 5463, 5475, 5476, 5479, 5480, 5477, 5481, + 7129, 7129, 5478, 5486, 5488, 5490, 5492, 5493, 5495, 5499, + 5501, 5502, 7129, 5503, 5505, 5508, 5509, 5522, 5512, 7129, + 5515, 5517, 5519, 5524, 7129, 5526, 5527, 5528, 5533, 5541, + 5529, 5543, 5544, 5545, 5531, 5546, 5535, 5551, 7129, 7129, + 7129, 7129, 5552, 5556, 5557, 5560, 5561, 5562, 5563, 5564, + 5568, 5569, 5567, 5570, 5571, 7129, 5581, 7129, 7129, 5582, - 5584, 5586, 5568, 5588, 5590, 7110, 5591, 7110, 5596, 5599, - 5592, 5603, 5609, 5600, 5593, 5611, 5613, 5614, 5615, 5616, - 5623, 5621, 5624, 5622, 5627, 5629, 5631, 7110, 7110, 5635, - 5639, 5640, 5642, 5644, 5645, 5646, 5653, 5651, 5652, 5654, - 5656, 5658, 5659, 5667, 5668, 5664, 5665, 5673, 7110, 5674, - 5670, 5676, 7110, 5678, 7110, 5682, 5683, 5684, 5685, 5686, - 5691, 5692, 5693, 5695, 5697, 7110, 7110, 5696, 5711, 5706, - 7110, 7110, 5698, 5707, 5708, 5710, 5716, 5713, 5718, 7110, - 5721, 5722, 5723, 5719, 5725, 5733, 5726, 7110, 5735, 7110, - 5736, 5738, 5744, 5739, 5747, 5752, 5748, 5755, 5754, 5751, + 7129, 5583, 5584, 5589, 5585, 5572, 5592, 5595, 7129, 5596, + 7129, 5597, 5599, 5600, 5606, 5608, 5609, 5610, 5613, 5616, + 5617, 5618, 5619, 5626, 5625, 5627, 5624, 5633, 5632, 5635, + 7129, 7129, 5640, 5642, 5643, 5650, 5647, 5651, 5645, 5654, + 5657, 5655, 5658, 5662, 5663, 5664, 5672, 5674, 5665, 5669, + 5676, 7129, 5673, 5678, 5679, 7129, 5684, 7129, 5686, 5687, + 5688, 5689, 5690, 5695, 5697, 5698, 5700, 5705, 7129, 7129, + 5694, 5708, 5711, 7129, 7129, 5701, 5713, 5714, 5716, 5719, + 5715, 5721, 7129, 5723, 5727, 5724, 5726, 5728, 5730, 5731, + 7129, 5737, 7129, 5738, 5742, 5745, 5739, 5753, 5754, 5749, - 5757, 5758, 7110, 5760, 5761, 7110, 5768, 5767, 5771, 5765, - 5772, 5777, 5773, 7110, 5778, 5780, 5785, 5790, 7110, 5792, - 5793, 5794, 5787, 7110, 5801, 7110, 5795, 5802, 5804, 5809, - 5805, 7110, 5806, 5810, 7110, 5813, 5819, 5821, 5822, 5814, - 5823, 7110, 5829, 5824, 7110, 5830, 5832, 5833, 5838, 5839, - 5841, 5835, 5843, 5844, 5851, 5847, 5849, 7110, 7110, 5862, - 5852, 135, 5865, 5855, 5860, 5863, 5866, 5873, 5868, 5870, - 5876, 7110, 7110, 5877, 7110, 5871, 5881, 7110, 5869, 5885, - 5886, 5889, 5890, 5891, 5892, 5896, 5898, 5899, 5900, 5901, - 5902, 5908, 7110, 5920, 5923, 5905, 5926, 5927, 5929, 5931, + 5757, 5756, 5760, 5759, 5761, 7129, 5762, 5763, 7129, 5775, + 5770, 5774, 5765, 5772, 5780, 5777, 7129, 5781, 5785, 5788, + 5790, 7129, 5794, 5791, 5796, 5797, 7129, 5799, 7129, 5800, + 5802, 5804, 5811, 5809, 7129, 5808, 5812, 5813, 7129, 5818, + 5823, 5825, 5826, 5827, 5830, 7129, 5834, 5819, 7129, 5815, + 5839, 5841, 5845, 5831, 5848, 5836, 5850, 5851, 5858, 5854, + 5855, 7129, 7129, 5862, 5861, 135, 5870, 5857, 5863, 5867, + 5871, 5878, 5860, 5875, 5874, 7129, 7129, 5876, 7129, 5882, + 5886, 7129, 5884, 5888, 5892, 5894, 5895, 5896, 5897, 5899, + 5902, 5904, 5905, 5906, 5903, 5907, 7129, 5925, 5927, 5910, - 5933, 5935, 5937, 5938, 5939, 5918, 5940, 5941, 5942, 5945, - 5947, 5948, 5949, 5951, 7110, 5958, 5963, 5952, 5960, 5965, - 5966, 5967, 7110, 5974, 5970, 5979, 5976, 7110, 5983, 5980, - 5984, 5986, 5987, 7110, 5988, 5991, 5998, 5999, 5992, 5994, - 6000, 6002, 6004, 6015, 7110, 6005, 6007, 6008, 7110, 7110, - 7110, 6020, 6022, 6019, 7110, 6027, 6023, 6010, 6028, 7110, - 6030, 6031, 6032, 7110, 7110, 7110, 6034, 6036, 6038, 7110, - 6042, 6045, 7110, 6043, 7110, 6048, 7110, 6049, 6051, 6052, - 6057, 7110, 6058, 6060, 6050, 6067, 7110, 6075, 6077, 6079, - 6061, 6065, 6072, 6081, 7110, 6088, 6084, 6087, 6094, 6080, + 5931, 5932, 5934, 5936, 5938, 5940, 5928, 5942, 5923, 5945, + 5946, 5948, 5949, 5950, 5952, 5954, 5956, 5957, 7129, 5959, + 5963, 5964, 5951, 5970, 5972, 5965, 7129, 5980, 5975, 5985, + 5981, 7129, 5988, 5989, 5990, 5991, 5992, 7129, 5993, 5995, + 5997, 6002, 6003, 6004, 6005, 6007, 6008, 6015, 7129, 6013, + 6010, 6017, 7129, 7129, 7129, 6020, 6030, 6018, 7129, 6034, + 6024, 6027, 6031, 7129, 6036, 6037, 6045, 6041, 7129, 7129, + 7129, 6040, 6042, 6048, 7129, 6043, 6050, 7129, 6054, 7129, + 6051, 7129, 6055, 6056, 6058, 6062, 7129, 6064, 6067, 6068, + 6073, 7129, 6076, 6079, 6084, 6081, 6085, 6070, 6086, 7129, - 6083, 6090, 6096, 6097, 6105, 6100, 6103, 7110, 6104, 6107, - 6109, 6116, 6110, 6106, 6113, 7110, 6118, 7110, 6120, 7110, - 6122, 6123, 6124, 6126, 6131, 6127, 6132, 6133, 6134, 6142, - 6144, 6146, 6147, 6148, 6150, 6153, 6154, 7110, 7110, 6164, - 6156, 7110, 6160, 6168, 7110, 6157, 7110, 6172, 7110, 6159, - 6161, 6176, 6169, 6179, 7110, 7110, 6183, 6180, 6186, 6193, - 6188, 6190, 6191, 7110, 6196, 6192, 6194, 6199, 7110, 6207, - 7110, 6202, 6209, 6212, 7110, 6204, 6215, 6219, 6205, 6208, - 6224, 6216, 6221, 6225, 6235, 6231, 6232, 6233, 6237, 6234, - 6238, 6239, 6246, 7110, 7110, 7110, 6240, 6248, 6257, 6255, + 6093, 6092, 6094, 6096, 6088, 6098, 6100, 6102, 6101, 6109, + 6104, 6112, 7129, 6113, 6115, 6118, 6124, 6108, 6116, 6122, + 7129, 6114, 7129, 6133, 7129, 6126, 6128, 6130, 6136, 6135, + 6138, 6142, 6145, 6146, 6147, 6148, 6150, 6152, 6155, 6157, + 6163, 6158, 7129, 7129, 6166, 6164, 7129, 6168, 6172, 7129, + 6169, 7129, 6176, 7129, 6173, 6179, 6180, 6182, 6183, 7129, + 7129, 6187, 6184, 6191, 6199, 6192, 6197, 6194, 7129, 6201, + 6203, 6205, 6207, 7129, 6214, 7129, 6209, 6216, 6218, 7129, + 6211, 6212, 6220, 6222, 6225, 6226, 6228, 6230, 6234, 6231, + 6242, 6235, 6232, 6237, 6249, 6245, 6250, 6252, 6258, 7129, - 6256, 6264, 6260, 7110, 6261, 6263, 6265, 6267, 6275, 6271, - 6273, 7110, 6279, 6274, 6276, 6277, 6281, 6283, 6282, 6284, - 7110, 6295, 6297, 6300, 6303, 6304, 6305, 6307, 6312, 6314, - 6316, 6309, 6317, 6325, 6321, 7110, 7110, 6324, 6320, 7110, - 6328, 6330, 7110, 6331, 7110, 6332, 6333, 6334, 6335, 6337, - 7110, 6340, 6341, 6342, 6344, 7110, 6345, 6347, 6349, 6352, - 7110, 6346, 6366, 6359, 6362, 6363, 7110, 7110, 6369, 6371, - 7110, 6373, 6375, 6374, 6382, 6377, 6378, 6384, 6387, 7110, - 6391, 6393, 6385, 6394, 6396, 6397, 6400, 7110, 6399, 6402, - 6403, 6404, 7110, 6408, 6411, 6412, 6410, 6413, 7110, 6415, + 7129, 7129, 6256, 6261, 6269, 6265, 6267, 6272, 6262, 7129, + 6271, 6274, 6277, 6275, 6284, 6279, 6286, 7129, 6283, 6287, + 6288, 6289, 6291, 6292, 6293, 6298, 7129, 6300, 6304, 6315, + 6301, 6308, 6312, 6319, 6321, 6324, 6326, 6316, 6310, 6333, + 6330, 7129, 7129, 6332, 6328, 7129, 6338, 6340, 7129, 6334, + 7129, 6341, 6342, 6343, 6345, 6346, 7129, 6349, 6350, 6351, + 6352, 7129, 6354, 6356, 6358, 6360, 7129, 6355, 6375, 6361, + 6368, 6372, 6378, 7129, 7129, 6371, 6380, 7129, 6385, 6386, + 6382, 6394, 6389, 6390, 6400, 6397, 7129, 6403, 6404, 6393, + 6395, 6405, 6406, 6408, 7129, 6411, 6412, 6416, 6417, 7129, - 6416, 6425, 6417, 7110, 6428, 6432, 6433, 7110, 7110, 7110, - 6438, 6440, 6441, 7110, 7110, 7110, 7110, 6443, 6444, 6434, - 6451, 7110, 6447, 7110, 7110, 6455, 6459, 6463, 6465, 6469, - 6468, 7110, 6470, 6471, 6474, 6458, 6477, 7110, 7110, 6478, - 6481, 6482, 6483, 6485, 6486, 7110, 7110, 6487, 6489, 6490, - 6495, 6492, 7110, 6493, 6498, 6500, 6505, 6508, 6516, 6518, - 6510, 6519, 6520, 6527, 6528, 6513, 6530, 6523, 6531, 6534, - 6533, 6541, 6543, 6542, 6547, 6550, 6551, 6553, 7110, 7110, - 6555, 7110, 6557, 6559, 7110, 6560, 7110, 6562, 6564, 6570, - 6572, 7110, 6574, 6576, 6580, 6582, 6565, 7110, 6577, 6584, + 6420, 6423, 6424, 6422, 6421, 7129, 6425, 6427, 6434, 6435, + 7129, 6429, 6445, 6433, 7129, 7129, 7129, 6451, 6453, 6454, + 7129, 7129, 7129, 7129, 6456, 6457, 6444, 6460, 7129, 6461, + 7129, 7129, 6465, 6469, 6473, 6475, 6480, 6468, 7129, 6479, + 6481, 6483, 6485, 6486, 7129, 7129, 6487, 6489, 6491, 6492, + 6494, 6495, 6496, 7129, 7129, 6498, 6499, 6501, 6508, 6504, + 7129, 6502, 6507, 6515, 6518, 6521, 6525, 6529, 6526, 6530, + 6531, 6538, 6539, 6534, 6536, 6542, 6544, 6545, 6546, 6548, + 6558, 6554, 6556, 6562, 6553, 6564, 7129, 7129, 6567, 7129, + 6571, 6572, 7129, 6557, 7129, 6574, 6577, 6579, 6583, 7129, - 6588, 6585, 6589, 6590, 7110, 6593, 6595, 6597, 6598, 6599, - 6603, 6604, 6607, 7110, 6602, 6609, 7110, 7110, 6600, 6616, - 6611, 6620, 6622, 7110, 6623, 6630, 6625, 6627, 6628, 6631, - 6629, 7110, 6635, 6633, 7110, 7110, 6634, 6636, 7110, 7110, - 6643, 6644, 7110, 7110, 7110, 7110, 7110, 7110, 7110, 7110, - 6648, 6652, 7110, 7110, 6646, 6657, 6661, 7110, 6663, 7110, - 6650, 6658, 6666, 6654, 7110, 6665, 7110, 6668, 6671, 6672, - 6285, 6675, 6680, 6676, 6678, 6683, 6684, 6685, 6687, 6686, - 6692, 6688, 6694, 6698, 6699, 6706, 6696, 6707, 7110, 7110, - 7110, 6708, 6709, 6714, 6711, 6724, 6725, 6728, 6731, 6717, + 6585, 6587, 6589, 6591, 6580, 7129, 6592, 6594, 6596, 6598, + 6597, 6599, 7129, 6600, 6603, 6604, 6611, 6605, 6608, 6612, + 6613, 6617, 7129, 6618, 6626, 7129, 7129, 6622, 6627, 6628, + 6631, 6629, 7129, 6634, 6641, 6636, 6638, 6639, 6642, 6645, + 7129, 6646, 6644, 7129, 7129, 6651, 6648, 7129, 7129, 6649, + 6656, 7129, 7129, 7129, 7129, 7129, 7129, 7129, 7129, 6657, + 6664, 7129, 7129, 6659, 6666, 6669, 6671, 7129, 6674, 7129, + 6677, 6678, 6679, 6681, 7129, 6680, 7129, 6682, 6684, 6685, + 6686, 6689, 6691, 6693, 6696, 6698, 6697, 6699, 6702, 6703, + 6707, 6709, 6708, 6718, 6711, 6721, 6722, 6726, 7129, 7129, - 6719, 6732, 6733, 6737, 6721, 6734, 6747, 6740, 6743, 6745, - 6752, 6744, 6757, 6759, 7110, 6761, 6748, 6753, 6766, 7110, - 6762, 7110, 6767, 7110, 7110, 6769, 6770, 6773, 6774, 6782, - 6784, 6775, 6779, 6780, 6783, 6787, 7110, 6791, 7110, 7110, - 7110, 6794, 6796, 7110, 6795, 6797, 7110, 6798, 6800, 6802, - 6804, 6806, 6803, 6807, 6808, 6811, 7110, 7110, 6814, 6820, - 6823, 6825, 6826, 6833, 6828, 6830, 6832, 6836, 6839, 6846, - 7110, 6844, 6845, 6848, 7110, 6849, 6851, 6852, 6854, 6855, - 6862, 6857, 6864, 7110, 6860, 7110, 6866, 6863, 6878, 6867, - 6868, 6869, 6879, 6884, 6881, 7110, 6871, 6890, 6885, 6892, + 7129, 7129, 6725, 6727, 6733, 6728, 6735, 6740, 6744, 6746, + 6736, 6738, 6748, 6749, 6752, 6750, 6753, 6762, 6759, 6760, + 6761, 6764, 6765, 6770, 6777, 7129, 6779, 6767, 6771, 6781, + 7129, 6774, 7129, 6783, 7129, 7129, 6787, 6791, 6788, 6784, + 6799, 6800, 6795, 6797, 6798, 6802, 6805, 7129, 6812, 7129, + 7129, 7129, 6806, 6808, 7129, 6815, 6814, 7129, 6813, 6816, + 6819, 6822, 6823, 6820, 6825, 6826, 6841, 7129, 7129, 6824, + 6832, 6834, 6843, 6846, 6854, 6855, 6847, 6857, 6858, 6845, + 6865, 7129, 6861, 6866, 6868, 7129, 6869, 6870, 6872, 6874, + 6875, 6882, 6877, 6878, 7129, 6880, 7129, 6884, 6886, 6885, - 6895, 6898, 6899, 6888, 6901, 6905, 6909, 6913, 6908, 6914, - 6916, 6917, 6918, 7110, 6920, 6923, 7110, 6924, 6925, 6926, - 6927, 6931, 7110, 6934, 6928, 6936, 6938, 6941, 6943, 7110, - 6949, 6952, 6953, 7110, 6954, 7110, 7110, 6956, 6944, 6957, - 6965, 6967, 7110, 7110, 7110, 6990, 6997, 7004, 7011, 7018, - 7025, 7032, 88, 7039, 7046, 7053, 7060, 7067, 7074, 7081, - 7088, 7095, 7102 + 6887, 6888, 6892, 6899, 6897, 6901, 7129, 6903, 6908, 6904, + 6910, 6912, 6915, 6917, 6916, 6919, 6921, 6925, 6931, 6932, + 6933, 6922, 6937, 6928, 7129, 6944, 6934, 7129, 6945, 6946, + 6936, 6938, 6948, 7129, 6959, 6952, 6954, 6960, 6963, 6965, + 7129, 6967, 6969, 6970, 7129, 6974, 7129, 7129, 6975, 6964, + 6976, 6982, 6985, 7129, 7129, 7129, 7009, 7016, 7023, 7030, + 7037, 7044, 7051, 88, 7058, 7065, 7072, 7079, 7086, 7093, + 7100, 7107, 7114, 7121 } ; -static const flex_int16_t yy_def[3664] = +static const flex_int16_t yy_def[3675] = { 0, - 3645, 1, 3646, 3646, 3647, 3647, 3648, 3648, 3649, 3649, - 3650, 3650, 3651, 3651, 3652, 3652, 3645, 3653, 3645, 3645, - 3645, 3645, 3654, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3655, 3645, 3645, 3645, - 3655, 3656, 3645, 3645, 3645, 3656, 3657, 3645, 3645, 3645, - 3645, 3657, 3658, 3645, 3645, 3645, 3658, 3659, 3645, 3660, - 3645, 3659, 3659, 3661, 3645, 3645, 3645, 3645, 3661, 3662, - 3645, 3645, 3645, 3662, 3653, 3653, 3645, 3663, 3654, 3663, - 3654, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3656, 1, 3657, 3657, 3658, 3658, 3659, 3659, 3660, 3660, + 3661, 3661, 3662, 3662, 3663, 3663, 3656, 3664, 3656, 3656, + 3656, 3656, 3665, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3666, 3656, 3656, 3656, + 3666, 3667, 3656, 3656, 3656, 3667, 3668, 3656, 3656, 3656, + 3656, 3668, 3669, 3656, 3656, 3656, 3669, 3670, 3656, 3671, + 3656, 3670, 3670, 3672, 3656, 3656, 3656, 3656, 3672, 3673, + 3656, 3656, 3656, 3673, 3664, 3664, 3656, 3674, 3665, 3674, + 3665, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3655, - 3655, 3656, 3656, 3657, 3657, 3645, 3658, 3658, 3659, 3659, - 3660, 3660, 3659, 3661, 3661, 3645, 3662, 3662, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3666, + 3666, 3667, 3667, 3668, 3668, 3656, 3669, 3669, 3670, 3670, + 3671, 3671, 3670, 3672, 3672, 3656, 3673, 3673, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3659, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3659, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3659, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3659, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, - 3645, 3653, 3645, 3645, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3670, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, + 3656, 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3659, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3659, 3659, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3670, 3670, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3659, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3670, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3659, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3659, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3659, 3653, 3645, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3645, 3653, 3645, 3653, 3653, 3653, 3653, 3645, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3670, 3664, 3656, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3645, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3659, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3659, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3670, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3645, 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, - 3645, 3653, 3645, 3653, 3653, 3645, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3656, + 3664, 3656, 3664, 3656, 3664, 3664, 3656, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3659, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3670, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3645, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3645, 3645, 3653, 3645, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3656, 3664, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3659, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, 3653, - 3645, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3670, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, + 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3653, 3653, 3645, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3645, 3653, - 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, - 3653, 3659, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3645, 3653, 3645, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3656, 3664, 3664, 3670, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3656, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3645, 3645, - 3645, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3645, 3645, 3645, 3653, 3653, 3653, 3645, - 3653, 3653, 3645, 3653, 3645, 3653, 3645, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3656, 3656, 3656, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3656, + 3656, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, 3656, + 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, - 3653, 3645, 3653, 3653, 3645, 3653, 3645, 3653, 3645, 3653, - 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3645, 3653, - 3645, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3645, 3645, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3656, + 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, 3645, - 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3653, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3656, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3656, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3645, 3645, 3645, - 3653, 3653, 3653, 3645, 3645, 3645, 3645, 3653, 3653, 3653, - 3653, 3645, 3653, 3645, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, - 3653, 3645, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3656, 3656, 3656, 3664, 3664, 3664, + 3656, 3656, 3656, 3656, 3664, 3664, 3664, 3664, 3656, 3664, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3656, + 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3656, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3645, 3645, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3645, 3653, 3653, 3645, 3645, 3653, 3653, 3645, 3645, - 3653, 3653, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3653, 3653, 3645, 3645, 3653, 3653, 3653, 3645, 3653, 3645, - 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, - 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3656, 3656, 3664, 3664, 3664, + 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3656, 3656, 3664, 3664, 3656, 3656, 3664, + 3664, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3664, + 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3656, + 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3645, - 3653, 3645, 3653, 3645, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3645, 3645, - 3645, 3653, 3653, 3645, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3645, 3645, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3645, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3645, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3645, 3653, 3653, 3653, 3653, + 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3656, 3664, 3656, 3664, 3656, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, + 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3645, 3653, 3653, 3645, 3653, 3653, 3653, - 3653, 3653, 3645, 3653, 3653, 3653, 3653, 3653, 3653, 3645, - 3653, 3653, 3653, 3645, 3653, 3645, 3645, 3653, 3653, 3653, - 3653, 3653, 3645, 3645, 0, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645 + 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, 3664, + 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, + 3656, 3664, 3664, 3664, 3656, 3664, 3656, 3656, 3664, 3664, + 3664, 3664, 3664, 3656, 3656, 0, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656 } ; -static const flex_int16_t yy_nxt[7151] = +static const flex_int16_t yy_nxt[7170] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -2080,7 +2083,7 @@ static const flex_int16_t yy_nxt[7151] = 2204, 2206, 86, 2199, 2200, 86, 2198, 2205, 86, 2201, 2210, 86, 2207, 86, 86, 86, 2208, 86, 86, 86, 2214, 2209, 86, 2218, 86, 86, 86, 86, 2212, 86, - 2223, 86, 2221, 86, 2211, 3645, 2213, 2222, 2215, 2216, + 2223, 86, 2221, 86, 2211, 3656, 2213, 2222, 2215, 2216, 86, 2220, 2217, 2219, 86, 2224, 86, 86, 86, 2226, 2225, 86, 86, 2229, 2231, 86, 2230, 2238, 2227, 2232, 86, 2233, 2235, 2228, 2236, 86, 2234, 86, 86, 2240, @@ -2088,7 +2091,7 @@ static const flex_int16_t yy_nxt[7151] = 86, 2246, 86, 2241, 2248, 2243, 86, 86, 2249, 86, 86, 86, 170, 86, 86, 86, 86, 2252, 86, 2256, - 86, 2257, 86, 2258, 2247, 2245, 2251, 2253, 2254, 3645, + 86, 2257, 86, 2258, 2247, 2245, 2251, 2253, 2254, 3656, 2250, 2262, 2255, 2259, 86, 2260, 86, 86, 86, 86, 2261, 86, 86, 86, 2263, 2265, 2264, 86, 2267, 86, 2268, 2266, 86, 2270, 86, 86, 86, 86, 2274, 86, @@ -2123,296 +2126,298 @@ static const flex_int16_t yy_nxt[7151] = 2401, 86, 2400, 2402, 86, 2403, 2406, 86, 2404, 2408, 86, 2405, 86, 86, 2409, 86, 86, 86, 86, 86, 86, 2411, 2410, 2414, 2415, 2412, 86, 86, 2407, 2413, - 2419, 86, 86, 2416, 86, 2418, 2417, 86, 86, 86, - 86, 86, 86, 86, 2427, 2420, 86, 86, 86, 86, - 2421, 86, 2422, 2423, 2425, 2428, 2426, 2433, 2429, 86, - 86, 86, 2430, 2424, 2431, 2432, 86, 2434, 86, 2440, - 2438, 86, 2435, 86, 2437, 86, 2439, 2443, 86, 2445, - 86, 86, 2442, 86, 2444, 2436, 86, 86, 86, 86, + 2420, 86, 86, 2416, 2417, 86, 2419, 86, 86, 86, + 86, 2425, 86, 86, 2428, 86, 2418, 86, 86, 86, + 2421, 86, 2429, 2422, 2424, 2423, 2426, 2430, 2427, 86, + 86, 86, 86, 86, 2432, 2433, 2435, 2431, 2436, 2438, + 2434, 86, 2439, 86, 86, 86, 2442, 2444, 86, 2446, + 86, 2437, 86, 2443, 2445, 86, 2440, 86, 86, 86, - 2448, 2452, 2449, 170, 2456, 3645, 2441, 86, 2454, 2446, - 86, 2450, 2447, 2455, 86, 2457, 86, 86, 2451, 2458, - 86, 86, 2461, 86, 86, 2453, 86, 2462, 2459, 2466, - 86, 86, 2467, 2465, 86, 86, 2470, 2460, 86, 86, - 2472, 2463, 86, 2471, 2473, 86, 2468, 86, 86, 86, - 2475, 2476, 2464, 2469, 2474, 86, 86, 86, 86, 2478, - 86, 86, 86, 86, 86, 2481, 86, 2484, 2477, 86, - 86, 86, 2490, 86, 86, 2488, 86, 2479, 2483, 86, - 2491, 86, 2485, 2480, 2482, 2486, 2487, 86, 86, 2492, - 86, 86, 2493, 2489, 86, 86, 86, 2494, 86, 2499, + 86, 2441, 2449, 2453, 2450, 170, 2455, 3656, 86, 86, + 2447, 2456, 86, 2451, 2448, 2457, 2452, 2458, 86, 86, + 86, 86, 2459, 86, 2462, 86, 2460, 2454, 2461, 86, + 2463, 86, 2467, 86, 86, 2468, 86, 2471, 2470, 2476, + 2466, 86, 86, 86, 2464, 86, 2472, 2475, 2469, 86, + 2473, 2474, 86, 86, 86, 2465, 86, 2477, 86, 86, + 2479, 86, 86, 86, 86, 86, 2482, 86, 2485, 86, + 86, 86, 2491, 86, 2478, 86, 2489, 86, 2480, 2484, + 86, 2492, 86, 2486, 2481, 2483, 2487, 2488, 86, 86, + 2493, 2490, 86, 2494, 86, 86, 86, 86, 2495, 86, - 2502, 86, 2497, 86, 86, 86, 2496, 2495, 2500, 86, - 2498, 2503, 86, 86, 2501, 86, 86, 2504, 86, 86, - 2513, 86, 86, 2505, 2506, 2511, 86, 86, 86, 3645, - 2518, 86, 2507, 2516, 2509, 2515, 2508, 2510, 86, 2512, - 86, 2519, 2514, 86, 2517, 2520, 86, 86, 2521, 86, - 2522, 86, 86, 2523, 2529, 2524, 86, 2527, 2528, 86, - 2530, 86, 86, 2525, 2526, 86, 86, 86, 2534, 2536, - 86, 2535, 86, 2537, 86, 2538, 86, 2531, 86, 2533, - 2532, 2541, 86, 2542, 86, 2539, 86, 86, 2540, 86, - 86, 2543, 2544, 2548, 86, 2549, 86, 86, 2545, 2551, + 2500, 2503, 86, 86, 2498, 86, 86, 2497, 2496, 2501, + 86, 2504, 86, 2499, 86, 2502, 86, 86, 2505, 86, + 86, 2514, 86, 86, 2506, 2507, 2512, 86, 86, 2518, + 86, 86, 2519, 2508, 2517, 2510, 2509, 2515, 2511, 86, + 2513, 2516, 2521, 86, 2522, 86, 86, 86, 2523, 86, + 86, 2520, 86, 86, 2528, 2529, 86, 86, 86, 2524, + 2530, 2531, 86, 2526, 86, 2527, 3656, 86, 2553, 86, + 2535, 2525, 2532, 2536, 2537, 86, 86, 2538, 86, 2533, + 2534, 86, 2539, 2542, 86, 2543, 86, 2540, 86, 86, + 2541, 86, 86, 2544, 2545, 86, 2549, 86, 2550, 86, - 86, 86, 2547, 2553, 86, 86, 86, 2556, 86, 2546, - 86, 2555, 2557, 86, 86, 86, 2550, 86, 86, 2552, - 2554, 86, 86, 2559, 2558, 86, 2563, 2564, 86, 2566, - 86, 2561, 2560, 86, 86, 86, 86, 2562, 2568, 2570, - 2569, 2565, 86, 2567, 86, 2571, 2573, 86, 86, 86, - 2576, 86, 2579, 86, 2574, 2580, 86, 2575, 86, 86, - 2572, 86, 86, 86, 2577, 2586, 86, 2585, 86, 86, - 2578, 86, 86, 2582, 2588, 86, 2581, 2584, 2591, 86, - 86, 86, 2583, 86, 86, 86, 2589, 2587, 2593, 86, - 2590, 86, 2592, 2601, 2594, 86, 2599, 86, 86, 2605, + 86, 2552, 86, 2554, 86, 86, 86, 2548, 86, 2557, + 86, 2546, 2547, 2556, 2558, 86, 86, 86, 86, 2551, + 2555, 86, 86, 2561, 2565, 86, 2560, 2564, 86, 86, + 2559, 86, 2562, 2567, 86, 2570, 86, 86, 2572, 86, + 2563, 2569, 2571, 2574, 86, 86, 86, 2566, 86, 2568, + 2577, 86, 86, 2573, 2580, 86, 2581, 86, 86, 86, + 86, 2576, 86, 86, 2575, 86, 2578, 2586, 2587, 86, + 86, 2579, 86, 2583, 86, 2585, 86, 2582, 86, 2589, + 2592, 86, 2584, 86, 2588, 2590, 86, 2591, 86, 86, + 2594, 86, 2595, 86, 86, 2600, 2593, 86, 86, 2602, - 2597, 2595, 2596, 86, 86, 86, 2600, 2602, 2607, 86, - 2606, 86, 86, 86, 2608, 2598, 86, 86, 86, 86, - 86, 2612, 2603, 2614, 2604, 2610, 86, 86, 86, 3645, - 86, 2615, 2616, 2618, 2611, 2617, 2609, 86, 2619, 86, - 2620, 2622, 2623, 2613, 86, 2621, 86, 86, 86, 86, - 86, 2624, 2627, 2625, 86, 86, 86, 86, 86, 86, - 86, 2626, 2634, 2629, 2630, 2631, 2632, 2635, 86, 86, - 2628, 86, 2633, 86, 86, 2636, 86, 2640, 2639, 2637, - 2638, 2641, 86, 2642, 86, 86, 2645, 86, 86, 170, - 2649, 2643, 86, 2644, 2646, 86, 2651, 86, 86, 86, + 2601, 2603, 86, 2606, 2596, 86, 2597, 86, 2598, 86, + 2608, 86, 2609, 86, 2607, 2599, 2604, 86, 2605, 86, + 86, 86, 86, 86, 86, 2614, 2611, 2616, 2613, 2617, + 86, 86, 86, 2620, 2621, 2618, 2610, 86, 2612, 86, + 86, 86, 2624, 86, 2622, 86, 2619, 2615, 86, 86, + 2625, 86, 2623, 86, 2626, 86, 2628, 2627, 2629, 86, + 2631, 2630, 2632, 86, 86, 2636, 86, 2637, 2633, 86, + 2638, 86, 2634, 86, 86, 86, 86, 2642, 2635, 2643, + 86, 86, 2644, 86, 2641, 86, 86, 2647, 170, 2639, + 2645, 86, 2646, 2648, 2640, 86, 2653, 86, 86, 86, - 86, 86, 86, 86, 2659, 86, 86, 2652, 2647, 2653, - 2648, 2650, 3645, 2654, 2655, 2657, 86, 2656, 2661, 2658, - 2662, 86, 86, 2663, 86, 2660, 2664, 86, 86, 2666, - 2667, 2665, 2668, 86, 2670, 86, 86, 86, 86, 86, - 2672, 86, 2669, 86, 86, 86, 2676, 86, 2677, 86, - 86, 2671, 86, 2673, 86, 2679, 2680, 2674, 2685, 86, - 86, 2678, 2681, 2675, 2682, 86, 86, 86, 86, 2686, - 86, 2683, 2684, 86, 2688, 2689, 86, 86, 86, 86, - 86, 86, 2691, 86, 86, 86, 2690, 2696, 2687, 86, - 2698, 2699, 86, 2701, 86, 2695, 86, 86, 2692, 2693, + 2649, 86, 2650, 86, 86, 86, 86, 2651, 2655, 86, + 2661, 2652, 2660, 2654, 86, 2656, 86, 2657, 2659, 2658, + 2664, 86, 86, 2665, 2666, 86, 86, 86, 2663, 2667, + 2669, 2670, 2668, 86, 2662, 86, 86, 86, 2672, 86, + 86, 2674, 2671, 86, 86, 86, 86, 2678, 2679, 2673, + 86, 86, 86, 2683, 86, 2675, 86, 2681, 2676, 86, + 2682, 2684, 86, 86, 2677, 2680, 86, 86, 2685, 86, + 86, 2686, 2691, 86, 2690, 86, 2687, 86, 2688, 2689, + 86, 86, 2693, 86, 86, 86, 86, 86, 2692, 2698, + 2701, 86, 2700, 86, 2703, 86, 86, 2702, 2697, 86, - 2694, 86, 2700, 86, 2697, 86, 86, 2702, 2705, 2707, - 86, 86, 86, 2703, 86, 2711, 2712, 2710, 2708, 2734, - 2704, 86, 86, 86, 86, 86, 2706, 2709, 86, 86, - 2714, 2713, 86, 2715, 86, 2718, 86, 86, 2769, 2716, - 2719, 86, 2720, 2717, 86, 86, 2726, 2721, 2722, 86, - 2724, 86, 86, 86, 86, 2725, 2728, 86, 2723, 2730, - 86, 86, 86, 2729, 86, 2727, 86, 86, 86, 86, - 2739, 86, 86, 2737, 2738, 2741, 2732, 2740, 86, 2731, - 2733, 86, 86, 86, 2743, 86, 86, 86, 2736, 86, - 86, 2746, 2735, 2748, 2745, 86, 86, 2751, 86, 86, + 2694, 2695, 86, 2696, 86, 86, 2699, 2709, 86, 2707, + 86, 86, 86, 2704, 2713, 86, 86, 2712, 2705, 2714, + 86, 2706, 2710, 2715, 86, 86, 2708, 2711, 86, 86, + 2716, 86, 3656, 2717, 86, 2720, 86, 86, 2722, 2721, + 86, 86, 2725, 2718, 2723, 2719, 86, 86, 2726, 2724, + 86, 2728, 2729, 86, 2727, 2730, 86, 86, 2732, 86, + 86, 86, 2731, 86, 86, 86, 86, 86, 86, 2736, + 2741, 86, 2739, 2740, 2743, 2734, 2742, 86, 2733, 2735, + 86, 86, 86, 2745, 86, 86, 86, 2738, 86, 86, + 86, 2737, 2750, 2748, 86, 2753, 86, 86, 86, 86, - 86, 2744, 2742, 86, 86, 2752, 2747, 2749, 2750, 2753, - 2754, 2755, 2758, 86, 2757, 86, 86, 86, 2759, 86, - 86, 2756, 86, 2762, 2763, 86, 86, 86, 86, 86, - 86, 2764, 86, 86, 2768, 2760, 2766, 2761, 2765, 86, - 86, 2767, 86, 86, 2770, 2772, 2771, 2773, 2776, 2777, - 86, 2778, 86, 2779, 86, 2780, 86, 86, 86, 2774, - 2775, 86, 86, 2784, 86, 2785, 2783, 86, 2786, 2781, - 86, 86, 86, 86, 86, 3645, 2782, 86, 86, 2793, - 86, 86, 2787, 86, 2789, 2795, 86, 2796, 86, 2798, - 86, 2788, 2797, 2790, 2792, 2791, 2794, 86, 86, 86, + 2746, 2744, 2751, 2757, 2756, 2749, 2752, 2747, 2755, 86, + 86, 86, 86, 2754, 2760, 86, 86, 86, 86, 2761, + 86, 2764, 2765, 86, 86, 86, 2759, 86, 2758, 2766, + 86, 2762, 86, 86, 2768, 2763, 2767, 2770, 86, 86, + 2769, 2771, 86, 86, 2772, 86, 86, 2773, 2775, 86, + 2774, 2778, 2779, 86, 2780, 86, 2781, 86, 2782, 86, + 86, 2783, 2776, 86, 86, 2777, 2784, 86, 2786, 86, + 2787, 86, 2788, 86, 2789, 86, 86, 86, 2785, 2790, + 86, 86, 86, 2796, 86, 2798, 86, 86, 2792, 2799, + 86, 86, 2801, 86, 86, 2791, 86, 2793, 2795, 2802, - 86, 86, 86, 2802, 86, 2800, 2803, 2806, 86, 2799, - 86, 2801, 86, 2807, 2808, 86, 86, 86, 86, 86, - 2804, 86, 2805, 2815, 86, 170, 86, 2817, 86, 2811, - 86, 86, 2810, 2813, 86, 86, 2809, 2816, 86, 2818, - 2814, 2812, 2821, 2819, 86, 86, 2820, 2824, 86, 86, - 2826, 86, 2825, 2827, 2828, 86, 2822, 86, 2823, 2829, - 86, 86, 2830, 86, 2831, 86, 2832, 2833, 2834, 86, - 2835, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 2843, 3645, 86, 86, 2836, 2841, 86, 2847, 86, 86, - 2838, 2837, 2848, 2845, 2840, 2839, 86, 2842, 86, 2844, + 2797, 2794, 2800, 2803, 86, 86, 2804, 86, 86, 86, + 2806, 2809, 86, 2811, 86, 86, 86, 86, 2810, 86, + 86, 86, 86, 2818, 2805, 170, 86, 2807, 2808, 86, + 2814, 86, 2820, 86, 2816, 2821, 2813, 2819, 86, 86, + 86, 2812, 86, 2815, 2817, 2827, 86, 2824, 2822, 86, + 86, 2831, 86, 2823, 2829, 2830, 2832, 86, 86, 2833, + 2828, 2825, 86, 2826, 86, 2834, 86, 2835, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 3656, 2837, + 2836, 86, 86, 2846, 2844, 2839, 86, 86, 2838, 86, + 2841, 2840, 86, 2850, 2843, 2842, 2845, 2847, 86, 86, - 2846, 2849, 86, 2850, 86, 2851, 86, 2852, 2853, 86, - 2855, 86, 86, 2854, 2856, 86, 86, 86, 86, 86, - 86, 86, 2859, 86, 2857, 2866, 86, 2865, 2867, 86, - 2858, 2860, 86, 86, 86, 2861, 2862, 2863, 2864, 2870, - 2871, 86, 2873, 2868, 2872, 86, 86, 86, 86, 86, - 2869, 86, 2874, 86, 2880, 86, 86, 86, 2879, 86, - 86, 86, 2876, 3645, 2875, 2878, 86, 86, 2877, 2888, - 86, 2884, 2886, 86, 86, 2887, 2881, 2882, 86, 2883, - 2889, 2885, 2890, 86, 86, 2891, 86, 86, 86, 86, - 86, 86, 86, 2892, 2895, 2896, 2897, 86, 86, 2894, + 2848, 2853, 2851, 86, 2849, 2852, 86, 86, 2855, 2856, + 86, 2854, 2857, 2858, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 2862, 2859, 2869, 86, 2870, 86, + 2868, 86, 86, 2860, 2861, 2863, 2864, 2865, 2866, 86, + 2867, 2874, 86, 2875, 86, 2873, 2876, 86, 86, 86, + 2872, 2871, 86, 86, 86, 86, 2883, 86, 86, 86, + 2882, 86, 86, 86, 2879, 2877, 2878, 86, 2881, 86, + 2891, 86, 2880, 2887, 2889, 86, 86, 2890, 2884, 2885, + 86, 2886, 2892, 2888, 2893, 86, 2894, 86, 86, 86, + 86, 86, 86, 86, 86, 2896, 2895, 2899, 2900, 86, - 86, 2902, 2903, 86, 86, 2893, 2906, 86, 2898, 2900, - 86, 2899, 86, 86, 86, 2901, 86, 2909, 2905, 2904, - 86, 2907, 2914, 86, 86, 86, 2912, 2908, 2913, 2910, - 86, 2911, 86, 86, 2919, 86, 86, 86, 2915, 86, - 86, 2923, 86, 2922, 86, 2916, 2921, 86, 2920, 2924, - 86, 86, 2917, 2918, 2926, 86, 2927, 86, 86, 2930, - 2929, 2925, 2932, 86, 86, 2933, 2928, 86, 2935, 86, - 86, 86, 86, 86, 2942, 86, 86, 86, 2931, 86, - 86, 86, 2939, 2936, 2937, 2938, 2940, 86, 2941, 2934, - 2945, 86, 2946, 86, 86, 2944, 2943, 86, 2947, 86, + 2897, 86, 2906, 86, 2905, 86, 86, 2909, 86, 2898, + 2901, 2903, 86, 2902, 86, 86, 86, 2904, 86, 2912, + 2907, 86, 86, 2910, 2908, 86, 2916, 2915, 86, 2911, + 86, 2913, 86, 2914, 2917, 86, 2922, 86, 2918, 86, + 86, 86, 86, 2919, 86, 2925, 86, 2926, 86, 2924, + 2920, 2923, 2921, 2927, 86, 2929, 86, 86, 86, 86, + 2932, 2928, 2930, 2935, 86, 86, 2936, 2931, 2934, 86, + 86, 2933, 2939, 86, 86, 86, 86, 86, 2937, 2946, + 86, 86, 86, 86, 86, 86, 2943, 2940, 2941, 2942, + 2944, 2945, 2938, 2949, 86, 86, 86, 86, 86, 2948, - 2951, 86, 2949, 86, 86, 86, 86, 2950, 2948, 86, - 2952, 2953, 86, 86, 2955, 2958, 86, 2956, 2960, 2954, - 2957, 2959, 86, 2962, 170, 2961, 86, 86, 86, 86, - 2967, 3645, 2964, 2963, 86, 86, 86, 86, 2969, 2968, - 86, 2972, 86, 2973, 86, 2971, 2965, 2966, 86, 2977, - 2970, 2975, 86, 86, 2978, 86, 2976, 86, 86, 86, - 2982, 2974, 2979, 2980, 86, 86, 86, 86, 2983, 86, - 2984, 86, 86, 2981, 2989, 2990, 2985, 86, 86, 2987, - 86, 86, 2991, 86, 2986, 2993, 86, 86, 2995, 86, - 2992, 86, 2996, 2988, 2994, 86, 86, 86, 86, 86, + 2950, 2951, 86, 2947, 2955, 86, 2954, 2953, 86, 86, + 86, 2952, 86, 86, 2956, 2959, 2957, 2960, 2962, 86, + 2963, 86, 86, 86, 2958, 2966, 170, 2964, 2961, 86, + 86, 86, 86, 2971, 3656, 2968, 2967, 86, 86, 86, + 86, 2973, 2965, 2972, 2976, 86, 86, 2977, 86, 2969, + 2970, 2975, 2974, 86, 2979, 86, 86, 2981, 86, 2980, + 86, 2986, 2982, 86, 86, 2983, 2978, 86, 86, 2984, + 86, 86, 2985, 2988, 2987, 86, 86, 86, 86, 2993, + 2989, 2994, 86, 2995, 2991, 86, 86, 86, 2997, 86, + 2990, 86, 86, 2998, 2996, 3000, 2999, 86, 2992, 86, - 2998, 2999, 3000, 2997, 86, 86, 86, 3005, 86, 86, - 86, 86, 3002, 3003, 3004, 3007, 3001, 3006, 3009, 86, - 86, 86, 3645, 86, 86, 3010, 86, 3008, 3015, 86, - 3011, 86, 86, 3016, 86, 86, 86, 3020, 86, 86, - 3012, 3013, 3014, 3018, 3019, 3023, 86, 3021, 86, 86, - 3017, 86, 86, 3022, 3030, 3027, 3028, 86, 3024, 3031, - 86, 86, 3033, 3025, 86, 86, 3034, 86, 86, 3026, - 86, 86, 3035, 86, 86, 3040, 3037, 3029, 86, 3032, - 86, 86, 3038, 3041, 86, 86, 86, 3039, 3042, 3045, - 86, 86, 3047, 86, 3645, 3036, 3043, 3049, 86, 3044, + 86, 86, 86, 86, 3002, 3003, 3004, 86, 86, 3001, + 86, 86, 3009, 86, 86, 3013, 3006, 3007, 86, 3008, + 3005, 86, 3010, 3011, 86, 3012, 86, 86, 86, 86, + 3014, 3019, 86, 3015, 86, 3020, 86, 86, 3024, 86, + 86, 86, 3027, 86, 86, 3022, 3016, 3017, 3018, 3023, + 86, 86, 86, 3021, 3025, 86, 3026, 3032, 86, 3031, + 3034, 3035, 86, 3028, 3037, 3029, 86, 86, 3038, 86, + 86, 3030, 86, 86, 86, 86, 86, 3033, 86, 3041, + 3036, 3039, 3044, 86, 3042, 86, 3045, 86, 86, 3043, + 86, 3046, 3049, 86, 86, 3051, 3047, 3040, 86, 3048, - 86, 3046, 3050, 86, 3051, 86, 86, 86, 86, 3054, - 3052, 3048, 3053, 3055, 86, 86, 3059, 86, 86, 86, - 3057, 3060, 86, 86, 3063, 3064, 86, 86, 3056, 3058, - 3061, 3065, 86, 3066, 86, 86, 86, 86, 3067, 3062, - 3068, 3070, 86, 86, 3073, 86, 86, 3074, 86, 3069, - 3075, 86, 86, 3077, 86, 3071, 86, 86, 3081, 3082, - 86, 3078, 86, 3072, 86, 86, 3083, 3076, 86, 3084, - 3085, 3080, 3086, 86, 3079, 86, 86, 3087, 86, 86, - 3092, 86, 86, 86, 86, 3091, 86, 3094, 3095, 86, - 86, 3088, 3097, 3089, 86, 3096, 3090, 3098, 86, 86, + 3053, 86, 3054, 86, 86, 3050, 3055, 86, 3056, 86, + 86, 3059, 86, 86, 3057, 86, 3052, 86, 3063, 3058, + 3061, 86, 86, 3064, 86, 86, 86, 3068, 86, 3062, + 3069, 86, 86, 3060, 3065, 3070, 86, 3071, 86, 86, + 86, 3066, 3072, 86, 86, 3067, 3075, 86, 3077, 86, + 3076, 3078, 86, 3073, 86, 3079, 3074, 3080, 86, 3081, + 3082, 86, 3083, 86, 86, 3086, 3087, 86, 86, 3089, + 86, 86, 3088, 86, 86, 86, 86, 3091, 3085, 3090, + 86, 3084, 3092, 86, 86, 3097, 3100, 86, 86, 86, + 3096, 86, 3099, 3093, 3101, 86, 3094, 86, 3098, 86, - 3101, 3100, 86, 86, 86, 86, 3093, 3099, 3104, 86, - 3108, 86, 86, 86, 86, 86, 3110, 3645, 86, 3102, - 3103, 86, 3105, 3107, 3111, 3106, 3109, 3115, 3112, 3114, - 3117, 86, 3116, 86, 3113, 3118, 86, 3119, 3120, 86, - 86, 3121, 86, 3122, 86, 3123, 86, 3124, 86, 3125, - 86, 86, 86, 86, 86, 86, 3127, 3129, 86, 3131, - 86, 86, 86, 3133, 86, 86, 3126, 3130, 3140, 3134, - 3138, 86, 3128, 86, 3132, 3139, 86, 3142, 86, 86, - 86, 3135, 3136, 86, 3137, 3143, 3145, 86, 3141, 86, - 3146, 3147, 86, 86, 3148, 3149, 86, 86, 3144, 86, + 3095, 86, 3103, 3102, 3105, 86, 3106, 86, 86, 86, + 86, 3656, 86, 3109, 3113, 86, 86, 86, 86, 86, + 86, 3115, 3104, 86, 3107, 3108, 3112, 3110, 3119, 3116, + 3111, 3114, 3120, 3117, 3122, 3118, 86, 3121, 86, 3123, + 86, 86, 3124, 3125, 86, 86, 3126, 86, 3127, 86, + 3128, 86, 3129, 86, 3130, 86, 3133, 3131, 86, 86, + 3132, 86, 86, 86, 86, 86, 3136, 86, 3138, 86, + 86, 3143, 86, 3135, 3139, 3144, 86, 86, 86, 3146, + 3145, 3137, 3147, 86, 3134, 86, 3656, 3140, 86, 3141, + 3142, 3148, 3150, 86, 86, 3151, 3149, 3152, 86, 3153, - 86, 86, 3150, 3155, 86, 86, 3151, 86, 3152, 3153, - 3156, 86, 86, 86, 3158, 86, 3157, 86, 86, 3154, - 86, 86, 3163, 86, 3160, 3167, 3159, 3164, 86, 3166, - 3161, 3165, 86, 86, 3169, 86, 86, 3162, 3168, 3171, - 86, 86, 3175, 86, 86, 86, 3170, 86, 3173, 86, - 3172, 86, 3182, 3176, 3179, 86, 86, 3177, 86, 3174, - 3180, 86, 86, 86, 86, 86, 3187, 3185, 3183, 3186, - 86, 86, 3178, 86, 86, 3181, 3189, 3191, 86, 3188, - 86, 3192, 3184, 3197, 3193, 86, 3190, 3194, 86, 3195, - 86, 3196, 86, 86, 86, 3201, 86, 86, 3198, 3200, + 3154, 86, 86, 86, 86, 86, 86, 3160, 86, 3161, + 86, 3155, 3156, 3157, 3158, 86, 86, 86, 86, 3162, + 86, 86, 3168, 86, 3159, 3163, 86, 3169, 86, 3165, + 86, 86, 3171, 86, 3172, 3166, 3164, 86, 3173, 3170, + 86, 3167, 3174, 86, 86, 3175, 3176, 86, 3180, 86, + 86, 3177, 3182, 86, 86, 86, 86, 3188, 86, 3181, + 3185, 86, 3179, 86, 86, 3178, 3183, 86, 86, 86, + 3186, 86, 3193, 3191, 3192, 86, 3187, 86, 3184, 3189, + 86, 86, 3195, 86, 3194, 3190, 86, 3198, 3200, 86, + 3199, 3201, 86, 3196, 86, 3197, 3202, 86, 86, 86, - 86, 86, 3202, 86, 3199, 3203, 3204, 86, 3206, 86, - 86, 3205, 3210, 86, 3208, 3212, 86, 86, 86, 86, - 86, 3213, 86, 86, 3207, 3214, 86, 3215, 3209, 86, - 3216, 86, 3221, 86, 3218, 86, 86, 86, 3211, 86, - 86, 3219, 3217, 3225, 86, 86, 86, 86, 3222, 3223, - 3224, 3220, 3230, 3226, 3229, 86, 3227, 86, 3232, 86, - 86, 86, 3236, 86, 3228, 3237, 86, 86, 3233, 86, - 86, 3239, 86, 86, 86, 3231, 3240, 86, 3234, 3242, - 3243, 86, 86, 3241, 3245, 86, 3238, 3235, 3246, 86, - 3247, 3244, 86, 86, 3248, 3251, 86, 3250, 3249, 86, + 3207, 86, 3205, 3203, 3206, 86, 86, 86, 3210, 86, + 3208, 86, 3209, 86, 86, 86, 3216, 86, 3204, 3211, + 3214, 86, 86, 3212, 3218, 86, 86, 86, 86, 86, + 3219, 86, 3215, 3220, 3213, 86, 3221, 86, 3222, 86, + 3223, 86, 3217, 86, 3224, 3227, 86, 3226, 86, 86, + 3225, 86, 3228, 3231, 3229, 86, 3230, 3232, 86, 86, + 86, 86, 3238, 86, 3236, 86, 3235, 3233, 86, 3242, + 86, 86, 3239, 3245, 3234, 3243, 86, 86, 3246, 86, + 3237, 86, 86, 3240, 3249, 86, 86, 3248, 3251, 86, + 3244, 3247, 86, 86, 3241, 86, 86, 86, 3254, 3257, - 3254, 86, 3256, 86, 86, 86, 86, 86, 3253, 86, - 3258, 3261, 86, 3252, 3262, 86, 3264, 86, 86, 3259, - 86, 86, 86, 3257, 3255, 86, 3260, 3267, 86, 86, - 3265, 3268, 86, 3269, 86, 3263, 3271, 86, 86, 3266, - 3273, 3270, 3276, 3274, 86, 86, 86, 86, 86, 3280, - 86, 86, 86, 86, 3282, 3283, 3272, 3278, 3275, 86, - 3284, 86, 3281, 3277, 3287, 3285, 3279, 3288, 86, 86, - 86, 3290, 3289, 86, 86, 3293, 86, 86, 86, 3292, - 86, 3286, 3296, 3294, 86, 3299, 86, 86, 86, 86, - 86, 3291, 86, 3304, 86, 86, 86, 86, 86, 3295, + 86, 3256, 3252, 3250, 86, 86, 3260, 86, 3253, 3262, + 86, 3255, 86, 3259, 86, 3264, 86, 3258, 86, 3267, + 86, 3268, 86, 3270, 86, 86, 3263, 86, 3261, 86, + 3265, 86, 3274, 86, 3275, 86, 3271, 3266, 86, 86, + 3278, 86, 3269, 86, 86, 86, 3272, 86, 86, 3283, + 86, 3273, 3656, 3276, 3280, 86, 3281, 3285, 86, 3277, + 3279, 3287, 86, 86, 3282, 86, 3289, 3284, 3290, 86, + 3286, 86, 3291, 3288, 86, 86, 3294, 3295, 86, 3297, + 86, 3292, 86, 3296, 86, 86, 3300, 86, 86, 3299, + 86, 3303, 86, 3298, 3293, 3301, 86, 86, 3306, 86, - 3500, 3297, 3298, 3303, 3300, 3301, 3307, 3308, 86, 3309, - 86, 3306, 3310, 86, 3302, 3305, 86, 86, 86, 3314, - 86, 3311, 86, 3313, 3315, 86, 3316, 86, 3317, 86, - 86, 3312, 3320, 86, 86, 3318, 3322, 86, 86, 3321, - 3324, 86, 3325, 86, 86, 86, 86, 86, 86, 3323, - 86, 3331, 3332, 86, 86, 86, 3319, 86, 86, 86, - 86, 3338, 86, 3326, 3339, 86, 3329, 3327, 3328, 3337, - 3330, 3335, 86, 3341, 3334, 86, 86, 3340, 3336, 86, - 3333, 3344, 86, 3346, 86, 3347, 86, 86, 86, 3350, - 86, 86, 3342, 3348, 3343, 86, 3353, 86, 86, 3352, + 86, 86, 86, 3311, 86, 86, 86, 3302, 3307, 3304, + 3305, 86, 3315, 86, 86, 3310, 3316, 86, 3308, 3318, + 3314, 86, 3313, 86, 3312, 86, 3309, 3317, 86, 86, + 3320, 3321, 86, 3322, 86, 3319, 3323, 86, 3324, 86, + 3327, 86, 3325, 86, 3329, 86, 86, 86, 3328, 3326, + 3331, 86, 3332, 86, 86, 86, 86, 3330, 86, 86, + 3338, 3339, 86, 86, 86, 86, 3333, 86, 86, 86, + 3345, 86, 3346, 86, 86, 3336, 3334, 3335, 3344, 3342, + 3337, 86, 3348, 3341, 86, 86, 3347, 3343, 86, 3340, + 3351, 86, 3354, 86, 3349, 86, 3352, 3355, 86, 86, - 86, 3349, 3351, 3345, 86, 3354, 86, 86, 3355, 86, - 86, 3356, 86, 86, 3359, 86, 86, 86, 3357, 3361, - 3362, 86, 3360, 86, 86, 86, 86, 3358, 86, 86, - 86, 3371, 3374, 3372, 3363, 3375, 3364, 3365, 86, 3366, - 3367, 86, 3368, 3369, 3370, 86, 86, 86, 3377, 3373, - 3379, 86, 3380, 86, 86, 3382, 86, 86, 3381, 3378, - 86, 3376, 3383, 3385, 86, 3645, 3384, 3387, 86, 3388, - 3389, 86, 86, 3390, 3391, 3386, 86, 3392, 86, 3393, - 3394, 86, 86, 86, 86, 3395, 3398, 86, 3396, 3399, - 86, 86, 3401, 3397, 86, 86, 86, 3405, 86, 86, + 3350, 3358, 86, 86, 3356, 3353, 86, 86, 86, 3357, + 86, 3360, 3361, 86, 3359, 3362, 86, 86, 86, 86, + 3363, 86, 3364, 3367, 86, 86, 3365, 3369, 3366, 86, + 86, 3368, 3370, 86, 86, 86, 86, 86, 86, 3379, + 86, 3382, 86, 3380, 3371, 3656, 86, 86, 86, 3372, + 3373, 3374, 3375, 3383, 3376, 3377, 3378, 86, 86, 3386, + 3381, 3385, 3384, 3387, 86, 3388, 86, 86, 3390, 86, + 86, 3389, 3393, 86, 86, 3391, 3392, 3395, 86, 3396, + 3397, 86, 86, 3398, 3399, 3403, 86, 3400, 86, 3394, + 3401, 3402, 86, 86, 86, 3406, 86, 3404, 86, 86, - 86, 3404, 86, 86, 3400, 86, 86, 3409, 86, 3408, - 3645, 86, 3414, 86, 3402, 3403, 3413, 3410, 86, 3406, - 3411, 86, 3416, 86, 3412, 3407, 86, 3415, 3417, 86, - 3418, 86, 86, 86, 3423, 3425, 86, 3420, 3419, 3424, - 86, 86, 3421, 86, 86, 3422, 86, 86, 3645, 3429, - 3433, 3426, 3430, 3432, 86, 86, 86, 3428, 3427, 3435, - 86, 3434, 3436, 86, 86, 3431, 86, 3439, 86, 3440, - 86, 3438, 86, 86, 3443, 86, 3444, 86, 86, 3437, - 3645, 3441, 3445, 86, 3446, 86, 3447, 86, 3448, 86, - 86, 3442, 3449, 86, 3450, 86, 3453, 86, 86, 3452, + 86, 3409, 86, 3405, 86, 86, 3413, 86, 86, 86, + 3412, 86, 86, 3408, 86, 86, 3407, 86, 3418, 3417, + 86, 86, 3410, 3656, 3411, 3422, 3414, 3423, 86, 3415, + 3419, 86, 3420, 3421, 86, 3425, 3416, 3426, 86, 86, + 3424, 3427, 86, 86, 86, 3432, 3434, 86, 3429, 86, + 3433, 86, 86, 3430, 3428, 86, 3431, 86, 86, 86, + 3441, 86, 3438, 3439, 3436, 3442, 86, 86, 3444, 86, + 86, 86, 3435, 3443, 3445, 86, 3437, 86, 3440, 3448, + 86, 3446, 3447, 3449, 86, 86, 3452, 86, 3451, 3453, + 86, 3454, 86, 86, 3450, 3455, 86, 3456, 86, 3457, - 3454, 86, 86, 86, 3451, 3458, 86, 3455, 86, 3460, - 86, 86, 86, 86, 3456, 86, 86, 86, 3464, 3465, - 86, 3467, 86, 3457, 86, 3462, 3461, 3459, 3463, 86, - 3466, 3468, 3469, 86, 3471, 86, 86, 3474, 86, 3473, - 86, 86, 86, 86, 86, 3476, 86, 86, 86, 86, - 3470, 3482, 3475, 3472, 3480, 3481, 86, 86, 3479, 86, - 3477, 86, 3478, 86, 3483, 86, 3486, 86, 3487, 3489, - 86, 86, 3488, 3490, 86, 3491, 86, 3485, 86, 86, - 3493, 86, 3484, 3494, 86, 86, 3492, 3495, 86, 86, - 3499, 86, 3496, 86, 3502, 3498, 86, 86, 86, 86, + 86, 3458, 86, 3459, 86, 86, 3462, 86, 3463, 86, + 86, 86, 86, 86, 3461, 3468, 86, 86, 86, 3460, + 3464, 86, 3465, 3470, 86, 86, 86, 3474, 3467, 3475, + 86, 86, 3466, 3471, 3472, 86, 3469, 3473, 3477, 86, + 86, 86, 86, 3479, 86, 3481, 3476, 86, 3484, 86, + 3483, 86, 86, 3478, 86, 86, 3486, 86, 86, 86, + 3482, 86, 86, 3485, 86, 3490, 3491, 3480, 3492, 86, + 86, 3487, 86, 3488, 3489, 3496, 3493, 86, 3499, 86, + 3497, 3500, 86, 3501, 86, 3498, 3502, 86, 3494, 3495, + 86, 86, 86, 86, 86, 86, 3505, 86, 86, 86, - 86, 86, 3503, 3501, 3497, 86, 3511, 86, 3509, 86, - 3504, 86, 86, 3506, 3505, 3508, 3513, 3510, 3515, 86, - 86, 86, 86, 3507, 86, 3517, 3520, 86, 3512, 3516, - 86, 3514, 86, 3521, 86, 3518, 3522, 86, 86, 3523, - 3524, 86, 3519, 3525, 86, 86, 86, 86, 3528, 3526, - 86, 3529, 3527, 86, 3533, 3530, 86, 86, 86, 3531, - 86, 86, 3532, 3536, 3537, 86, 86, 3534, 3535, 3539, - 86, 3540, 86, 3541, 86, 86, 3542, 3538, 3544, 86, - 86, 3547, 86, 86, 3548, 3543, 86, 86, 86, 3551, - 3545, 3552, 86, 86, 3549, 86, 86, 86, 3546, 3557, + 3504, 3511, 86, 3510, 86, 3513, 86, 3507, 3509, 86, + 86, 86, 86, 3503, 3506, 86, 86, 3512, 3508, 3514, + 86, 86, 86, 3656, 86, 3520, 3517, 3522, 3515, 3516, + 3519, 86, 3521, 3526, 86, 86, 3524, 3518, 86, 86, + 86, 86, 3523, 3525, 3528, 3531, 86, 3533, 86, 86, + 3532, 86, 3529, 86, 3534, 3527, 3535, 86, 3536, 86, + 3530, 86, 86, 86, 3539, 86, 86, 3540, 3537, 3544, + 3541, 3538, 86, 86, 86, 86, 3548, 86, 86, 3547, + 86, 3543, 3550, 86, 86, 3546, 3545, 86, 3542, 3551, + 86, 3552, 86, 3555, 86, 3553, 86, 86, 3549, 3558, - 86, 3556, 3553, 3558, 86, 3554, 3550, 86, 86, 86, - 86, 86, 3555, 86, 3562, 86, 86, 86, 3564, 86, - 86, 86, 3561, 3571, 86, 3569, 3570, 86, 3559, 3560, - 3566, 3563, 3567, 86, 3565, 3568, 86, 3575, 86, 86, - 3577, 86, 3578, 86, 3576, 86, 86, 3572, 3579, 86, - 3580, 3573, 86, 3583, 3581, 3574, 3584, 86, 86, 86, - 3586, 86, 86, 3585, 86, 86, 3587, 86, 86, 3592, - 86, 3582, 3589, 86, 3595, 86, 86, 86, 3596, 86, - 86, 86, 86, 3588, 86, 3597, 3590, 3591, 3598, 3593, - 3594, 86, 86, 3603, 86, 3602, 3599, 86, 86, 3600, + 86, 86, 3556, 3554, 86, 3559, 3562, 3563, 86, 3560, + 86, 86, 86, 86, 3557, 86, 3561, 3568, 86, 86, + 3567, 86, 3564, 3565, 3569, 86, 86, 86, 86, 86, + 3566, 3573, 86, 86, 3575, 86, 86, 86, 86, 86, + 3570, 3571, 3572, 3580, 3581, 86, 3574, 86, 3577, 3578, + 3656, 3576, 3579, 3582, 86, 3586, 86, 3583, 86, 86, + 86, 3588, 3656, 3584, 3587, 3590, 3585, 86, 86, 3589, + 86, 86, 3594, 3595, 86, 3591, 3592, 3593, 86, 86, + 3597, 86, 86, 86, 3596, 86, 3598, 86, 86, 3603, + 86, 86, 3600, 86, 3606, 86, 3607, 86, 86, 86, - 3601, 86, 3604, 86, 3607, 86, 3609, 3605, 86, 3610, - 3606, 86, 86, 3614, 86, 3645, 3611, 3608, 86, 3612, - 3613, 86, 86, 3615, 3616, 3617, 86, 86, 3618, 86, - 86, 86, 3623, 86, 3619, 3621, 86, 86, 86, 86, - 86, 86, 3625, 3626, 86, 3629, 3630, 86, 3620, 86, - 3622, 86, 3633, 3634, 86, 3624, 86, 86, 3627, 3628, - 3631, 3636, 86, 3635, 3637, 86, 86, 86, 3632, 86, - 86, 3645, 3639, 3638, 3640, 3645, 3641, 3643, 86, 3644, - 86, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3642, - 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, + 86, 86, 3599, 3610, 3605, 86, 3601, 3602, 3608, 3604, + 86, 3609, 86, 3614, 86, 3615, 86, 86, 3613, 3611, + 3612, 86, 3618, 86, 3620, 86, 3621, 3616, 86, 86, + 86, 3625, 86, 3622, 86, 86, 3619, 3623, 86, 3626, + 3627, 86, 3617, 3628, 86, 86, 86, 86, 3624, 86, + 86, 86, 3629, 3630, 3631, 3632, 3634, 86, 86, 86, + 3633, 86, 3640, 3636, 3637, 86, 3635, 86, 3638, 3656, + 3639, 3641, 86, 86, 3644, 3645, 86, 86, 86, 3647, + 86, 3648, 86, 86, 3642, 3646, 3643, 86, 86, 86, + 3649, 3656, 3650, 3651, 3654, 86, 3652, 3655, 86, 3656, - 52, 52, 52, 52, 57, 57, 57, 57, 57, 57, - 57, 63, 63, 63, 63, 63, 63, 63, 68, 68, - 68, 68, 68, 68, 68, 74, 74, 74, 74, 74, - 74, 74, 80, 80, 80, 80, 80, 80, 80, 89, - 89, 3645, 89, 89, 89, 89, 160, 160, 3645, 3645, - 3645, 160, 160, 162, 162, 3645, 3645, 162, 3645, 162, - 164, 3645, 3645, 3645, 3645, 3645, 164, 167, 167, 3645, - 3645, 3645, 167, 167, 169, 3645, 3645, 3645, 3645, 3645, - 169, 171, 171, 3645, 171, 171, 171, 171, 174, 3645, - 3645, 3645, 3645, 3645, 174, 177, 177, 3645, 3645, 3645, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3653, 47, + 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, + 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, + 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, + 74, 80, 80, 80, 80, 80, 80, 80, 89, 89, + 3656, 89, 89, 89, 89, 160, 160, 3656, 3656, 3656, + 160, 160, 162, 162, 3656, 3656, 162, 3656, 162, 164, + 3656, 3656, 3656, 3656, 3656, 164, 167, 167, 3656, 3656, + 3656, 167, 167, 169, 3656, 3656, 3656, 3656, 3656, 169, - 177, 177, 90, 90, 3645, 90, 90, 90, 90, 17, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645 + 171, 171, 3656, 171, 171, 171, 171, 174, 3656, 3656, + 3656, 3656, 3656, 174, 177, 177, 3656, 3656, 3656, 177, + 177, 90, 90, 3656, 90, 90, 90, 90, 17, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656 } ; -static const flex_int16_t yy_chk[7151] = +static const flex_int16_t yy_chk[7170] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2422,14 +2427,14 @@ static const flex_int16_t yy_chk[7151] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3653, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3664, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2962, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2966, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, @@ -2911,295 +2916,297 @@ static const flex_int16_t yy_chk[7151] = 2192, 2193, 2193, 2194, 2184, 2195, 2189, 2188, 2191, 2199, 2195, 2198, 2194, 2196, 2200, 2198, 2200, 2201, 2199, 2202, - 2203, 2199, 2204, 2205, 2202, 2202, 2212, 2207, 2208, 2209, - 2211, 2204, 2203, 2208, 2209, 2205, 2213, 2215, 2201, 2207, - 2214, 2214, 2216, 2211, 2217, 2213, 2212, 2218, 2219, 2222, - 2220, 2221, 2226, 2224, 2222, 2215, 2225, 2236, 2229, 2230, - 2216, 2238, 2217, 2218, 2220, 2224, 2221, 2229, 2225, 2227, - 2228, 2237, 2226, 2219, 2227, 2228, 2233, 2230, 2235, 2238, - 2236, 2239, 2233, 2240, 2235, 2242, 2237, 2241, 2241, 2243, - 2243, 2244, 2240, 2245, 2242, 2233, 2246, 2247, 2248, 2250, + 2203, 2199, 2204, 2205, 2202, 2202, 2219, 2207, 2208, 2209, + 2211, 2204, 2203, 2208, 2209, 2205, 2212, 2213, 2201, 2207, + 2214, 2214, 2215, 2211, 2212, 2216, 2213, 2217, 2218, 2222, + 2224, 2219, 2220, 2221, 2222, 2225, 2212, 2226, 2230, 2236, + 2215, 2239, 2224, 2216, 2218, 2217, 2220, 2225, 2221, 2227, + 2228, 2229, 2233, 2235, 2227, 2228, 2230, 2226, 2233, 2235, + 2229, 2237, 2236, 2238, 2240, 2242, 2239, 2241, 2241, 2243, + 2243, 2233, 2244, 2240, 2242, 2245, 2237, 2250, 2246, 2247, - 2246, 2251, 2247, 2252, 2254, 0, 2239, 2251, 2253, 2244, - 2254, 2248, 2245, 2253, 2253, 2255, 2256, 2258, 2250, 2256, - 2257, 2255, 2261, 2261, 2263, 2252, 2262, 2262, 2257, 2264, - 2264, 2265, 2265, 2263, 2266, 2267, 2268, 2258, 2269, 2270, - 2270, 2262, 2268, 2269, 2271, 2271, 2266, 2275, 2276, 2272, - 2273, 2275, 2262, 2267, 2272, 2277, 2273, 2278, 2280, 2277, - 2281, 2282, 2284, 2283, 2285, 2281, 2287, 2284, 2276, 2286, - 2288, 2289, 2290, 2290, 2292, 2288, 2291, 2278, 2283, 2294, - 2291, 2295, 2285, 2280, 2282, 2286, 2287, 2293, 2296, 2292, - 2297, 2298, 2293, 2289, 2299, 2300, 2301, 2294, 2305, 2299, + 2248, 2238, 2246, 2251, 2247, 2252, 2253, 0, 2258, 2251, + 2244, 2253, 2253, 2248, 2245, 2254, 2250, 2255, 2257, 2256, + 2267, 2254, 2256, 2255, 2261, 2261, 2257, 2252, 2258, 2262, + 2262, 2263, 2264, 2264, 2265, 2265, 2266, 2268, 2267, 2273, + 2263, 2269, 2272, 2268, 2262, 2273, 2269, 2272, 2266, 2270, + 2270, 2271, 2271, 2275, 2276, 2262, 2277, 2275, 2278, 2280, + 2277, 2281, 2282, 2284, 2283, 2285, 2281, 2287, 2284, 2289, + 2286, 2288, 2290, 2290, 2276, 2292, 2288, 2291, 2278, 2283, + 2294, 2291, 2295, 2285, 2280, 2282, 2286, 2287, 2293, 2296, + 2292, 2289, 2297, 2293, 2298, 2299, 2300, 2301, 2294, 2305, - 2302, 2302, 2297, 2304, 2306, 2307, 2296, 2295, 2300, 2308, - 2298, 2304, 2309, 2312, 2301, 2310, 2311, 2305, 2313, 2319, - 2314, 2322, 2318, 2306, 2307, 2312, 2314, 2316, 2321, 0, - 2321, 2327, 2308, 2319, 2310, 2318, 2309, 2311, 2320, 2313, - 2326, 2322, 2316, 2324, 2320, 2323, 2323, 2325, 2324, 2328, - 2325, 2329, 2332, 2326, 2332, 2327, 2330, 2330, 2331, 2331, - 2333, 2333, 2334, 2328, 2329, 2335, 2336, 2337, 2337, 2339, - 2339, 2337, 2340, 2340, 2341, 2341, 2342, 2334, 2348, 2336, - 2335, 2343, 2343, 2344, 2344, 2342, 2345, 2347, 2342, 2349, - 2350, 2345, 2347, 2351, 2351, 2352, 2352, 2353, 2348, 2354, + 2299, 2302, 2302, 2304, 2297, 2306, 2307, 2296, 2295, 2300, + 2308, 2304, 2309, 2298, 2312, 2301, 2310, 2311, 2305, 2313, + 2319, 2314, 2316, 2320, 2306, 2307, 2312, 2314, 2318, 2320, + 2321, 2322, 2321, 2308, 2319, 2310, 2309, 2316, 2311, 2324, + 2313, 2318, 2323, 2323, 2324, 2325, 2326, 2327, 2325, 2328, + 2355, 2322, 2329, 2330, 2330, 2331, 2331, 2334, 2332, 2326, + 2332, 2333, 2333, 2328, 2335, 2329, 0, 2336, 2355, 2337, + 2337, 2327, 2334, 2337, 2339, 2339, 2340, 2340, 2342, 2335, + 2336, 2341, 2341, 2343, 2343, 2344, 2344, 2342, 2345, 2347, + 2342, 2348, 2349, 2345, 2347, 2350, 2351, 2351, 2352, 2352, - 2354, 2355, 2350, 2356, 2356, 2357, 2358, 2359, 2359, 2349, - 2361, 2358, 2360, 2360, 2362, 2363, 2353, 2364, 2365, 2355, - 2357, 2367, 2369, 2362, 2361, 2371, 2367, 2368, 2368, 2370, - 2370, 2364, 2363, 2372, 2373, 2377, 2374, 2365, 2372, 2374, - 2373, 2369, 2378, 2371, 2375, 2375, 2376, 2376, 2379, 2381, - 2379, 2382, 2383, 2383, 2377, 2384, 2386, 2378, 2387, 2388, - 2375, 2384, 2389, 2390, 2381, 2391, 2391, 2390, 2392, 2393, - 2382, 2394, 2398, 2387, 2393, 2395, 2386, 2389, 2397, 2397, - 2400, 2399, 2388, 2401, 2402, 2403, 2394, 2392, 2399, 2404, - 2395, 2407, 2398, 2407, 2400, 2405, 2405, 2406, 2411, 2410, + 2353, 2354, 2354, 2356, 2356, 2357, 2363, 2350, 2358, 2359, + 2359, 2348, 2349, 2358, 2360, 2360, 2361, 2362, 2364, 2353, + 2357, 2365, 2367, 2363, 2368, 2368, 2362, 2367, 2369, 2373, + 2361, 2371, 2364, 2370, 2370, 2373, 2372, 2375, 2375, 2374, + 2365, 2372, 2374, 2376, 2376, 2377, 2378, 2369, 2379, 2371, + 2379, 2381, 2382, 2375, 2383, 2383, 2384, 2386, 2387, 2388, + 2389, 2378, 2384, 2390, 2377, 2392, 2381, 2390, 2391, 2391, + 2394, 2382, 2395, 2387, 2393, 2389, 2398, 2386, 2400, 2393, + 2397, 2397, 2388, 2399, 2392, 2394, 2401, 2395, 2402, 2404, + 2399, 2406, 2400, 2403, 2405, 2405, 2398, 2407, 2408, 2407, - 2403, 2401, 2402, 2412, 2408, 2410, 2406, 2408, 2412, 2413, - 2411, 2414, 2415, 2416, 2413, 2404, 2417, 2418, 2420, 2426, - 2423, 2417, 2408, 2420, 2408, 2415, 2421, 2422, 2431, 0, - 2427, 2421, 2422, 2424, 2416, 2423, 2414, 2429, 2425, 2424, - 2426, 2428, 2429, 2418, 2425, 2427, 2430, 2428, 2432, 2433, - 2434, 2430, 2433, 2431, 2435, 2436, 2437, 2438, 2439, 2444, - 2446, 2432, 2440, 2435, 2436, 2437, 2438, 2441, 2440, 2447, - 2434, 2442, 2439, 2441, 2456, 2442, 2448, 2448, 2447, 2444, - 2446, 2449, 2450, 2450, 2451, 2452, 2452, 2449, 2454, 2453, - 2456, 2450, 2459, 2451, 2453, 2457, 2458, 2458, 2463, 2468, + 2406, 2408, 2411, 2410, 2401, 2412, 2402, 2413, 2403, 2410, + 2412, 2414, 2413, 2415, 2411, 2404, 2408, 2416, 2408, 2417, + 2418, 2419, 2421, 2427, 2422, 2418, 2415, 2421, 2417, 2422, + 2423, 2424, 2432, 2425, 2426, 2423, 2414, 2428, 2416, 2425, + 2426, 2435, 2429, 2433, 2427, 2430, 2424, 2419, 2429, 2431, + 2430, 2436, 2428, 2437, 2431, 2434, 2433, 2432, 2434, 2438, + 2436, 2435, 2437, 2439, 2440, 2441, 2443, 2442, 2438, 2445, + 2443, 2441, 2439, 2442, 2447, 2448, 2449, 2449, 2440, 2450, + 2455, 2451, 2451, 2452, 2448, 2450, 2453, 2453, 2454, 2445, + 2451, 2457, 2452, 2454, 2447, 2458, 2459, 2459, 2460, 2461, - 2460, 2462, 2464, 2465, 2468, 2469, 2470, 2459, 2454, 2460, - 2454, 2457, 0, 2462, 2463, 2465, 2467, 2464, 2470, 2467, - 2471, 2471, 2472, 2472, 2476, 2469, 2474, 2474, 2475, 2476, - 2477, 2475, 2478, 2479, 2480, 2480, 2477, 2481, 2478, 2482, - 2482, 2483, 2479, 2484, 2485, 2486, 2486, 2488, 2487, 2496, - 2489, 2481, 2491, 2483, 2487, 2489, 2491, 2484, 2496, 2492, - 2497, 2488, 2492, 2485, 2493, 2493, 2494, 2495, 2498, 2497, - 2499, 2494, 2495, 2501, 2499, 2500, 2500, 2503, 2504, 2505, - 2506, 2507, 2503, 2508, 2509, 2510, 2501, 2508, 2498, 2514, - 2510, 2511, 2513, 2513, 2515, 2507, 2512, 2511, 2504, 2505, + 2455, 2464, 2455, 2463, 2465, 2469, 2466, 2457, 2461, 2468, + 2469, 2458, 2468, 2460, 2470, 2463, 2471, 2464, 2466, 2465, + 2472, 2472, 2473, 2473, 2475, 2475, 2476, 2477, 2471, 2476, + 2478, 2479, 2477, 2480, 2470, 2482, 2478, 2479, 2481, 2481, + 2483, 2483, 2480, 2484, 2485, 2486, 2487, 2487, 2488, 2482, + 2493, 2489, 2490, 2493, 2488, 2484, 2492, 2490, 2485, 2499, + 2492, 2494, 2494, 2495, 2486, 2489, 2496, 2497, 2495, 2498, + 2500, 2496, 2501, 2501, 2500, 2502, 2497, 2504, 2498, 2499, + 2505, 2506, 2504, 2507, 2508, 2509, 2510, 2511, 2502, 2509, + 2512, 2513, 2511, 2514, 2514, 2515, 2512, 2513, 2508, 2516, - 2506, 2516, 2512, 2517, 2509, 2518, 2521, 2514, 2517, 2519, - 2519, 2522, 2523, 2515, 2558, 2524, 2525, 2523, 2521, 2558, - 2516, 2524, 2525, 2526, 2529, 2531, 2518, 2522, 2527, 2532, - 2527, 2526, 2539, 2529, 2533, 2533, 2599, 2534, 2599, 2531, - 2534, 2535, 2535, 2532, 2537, 2538, 2544, 2537, 2538, 2540, - 2540, 2543, 2544, 2545, 2547, 2543, 2546, 2546, 2539, 2550, - 2550, 2552, 2554, 2547, 2555, 2545, 2559, 2560, 2561, 2562, - 2563, 2563, 2571, 2561, 2562, 2567, 2554, 2565, 2565, 2552, - 2555, 2567, 2568, 2569, 2569, 2570, 2572, 2574, 2560, 2580, - 2575, 2572, 2559, 2575, 2571, 2576, 2577, 2578, 2578, 2585, + 2505, 2506, 2517, 2507, 2518, 2519, 2510, 2520, 2520, 2518, + 2522, 2523, 2524, 2515, 2525, 2527, 2540, 2524, 2516, 2526, + 2525, 2517, 2522, 2527, 2530, 2526, 2519, 2523, 2528, 2532, + 2528, 2533, 0, 2530, 2534, 2534, 2535, 2536, 2536, 2535, + 2546, 2538, 2540, 2532, 2538, 2533, 2539, 2541, 2541, 2539, + 2544, 2545, 2546, 2548, 2544, 2547, 2547, 2545, 2551, 2551, + 2553, 2555, 2548, 2556, 2559, 2560, 2561, 2562, 2563, 2559, + 2564, 2564, 2562, 2563, 2568, 2555, 2566, 2566, 2553, 2556, + 2568, 2569, 2570, 2570, 2571, 2572, 2575, 2561, 2573, 2576, + 2577, 2560, 2576, 2573, 2578, 2579, 2579, 2581, 2583, 2582, - 2581, 2570, 2568, 2584, 2582, 2580, 2574, 2576, 2577, 2581, - 2582, 2583, 2587, 2587, 2585, 2588, 2589, 2583, 2588, 2590, - 2595, 2584, 2592, 2592, 2593, 2593, 2594, 2596, 2597, 2598, - 2600, 2594, 2601, 2602, 2598, 2589, 2596, 2590, 2595, 2604, - 2605, 2597, 2603, 2606, 2600, 2602, 2601, 2603, 2606, 2607, - 2607, 2608, 2608, 2609, 2609, 2610, 2610, 2611, 2612, 2604, - 2605, 2613, 2614, 2614, 2615, 2615, 2613, 2616, 2616, 2611, - 2617, 2618, 2619, 2620, 2621, 0, 2612, 2624, 2622, 2623, - 2623, 2627, 2617, 2632, 2619, 2625, 2625, 2626, 2626, 2628, - 2628, 2618, 2627, 2620, 2622, 2621, 2624, 2629, 2630, 2631, + 2571, 2569, 2577, 2584, 2583, 2575, 2578, 2572, 2582, 2584, + 2585, 2586, 2590, 2581, 2588, 2588, 2589, 2591, 2596, 2589, + 2593, 2593, 2594, 2594, 2595, 2597, 2586, 2598, 2585, 2595, + 2601, 2590, 2599, 2602, 2597, 2591, 2596, 2599, 2603, 2600, + 2598, 2600, 2605, 2604, 2601, 2606, 2607, 2602, 2604, 2612, + 2603, 2607, 2608, 2608, 2609, 2609, 2610, 2610, 2611, 2611, + 2614, 2612, 2605, 2615, 2613, 2606, 2613, 2619, 2615, 2616, + 2616, 2617, 2617, 2618, 2618, 2620, 2621, 2622, 2614, 2619, + 2623, 2626, 2624, 2625, 2625, 2627, 2627, 2631, 2621, 2628, + 2628, 2629, 2630, 2630, 2633, 2620, 2632, 2622, 2624, 2631, - 2634, 2633, 2635, 2632, 2637, 2630, 2633, 2636, 2636, 2629, - 2639, 2631, 2640, 2637, 2638, 2638, 2641, 2642, 2644, 2643, - 2634, 2645, 2635, 2645, 2652, 2646, 2647, 2647, 2649, 2641, - 2648, 2650, 2640, 2643, 2653, 2654, 2639, 2646, 2656, 2648, - 2644, 2642, 2652, 2649, 2655, 2657, 2650, 2655, 2658, 2666, - 2657, 2668, 2656, 2658, 2659, 2659, 2653, 2667, 2654, 2660, - 2660, 2661, 2661, 2663, 2663, 2665, 2665, 2666, 2667, 2669, - 2668, 2671, 2672, 2673, 2674, 2679, 2675, 2676, 2677, 2678, - 2677, 0, 2680, 2686, 2669, 2675, 2681, 2681, 2683, 2685, - 2672, 2671, 2683, 2679, 2674, 2673, 2692, 2676, 2687, 2678, + 2626, 2623, 2629, 2632, 2634, 2635, 2633, 2636, 2637, 2639, + 2635, 2638, 2638, 2640, 2640, 2641, 2642, 2643, 2639, 2644, + 2645, 2647, 2646, 2647, 2634, 2648, 2650, 2636, 2637, 2654, + 2643, 2649, 2649, 2651, 2645, 2650, 2642, 2648, 2652, 2655, + 2656, 2641, 2657, 2644, 2646, 2657, 2658, 2654, 2651, 2659, + 2660, 2661, 2661, 2652, 2659, 2660, 2662, 2662, 2663, 2663, + 2658, 2655, 2668, 2656, 2665, 2665, 2667, 2667, 2669, 2670, + 2671, 2673, 2674, 2675, 2676, 2677, 2678, 2680, 0, 2669, + 2668, 2679, 2681, 2679, 2677, 2671, 2682, 2687, 2670, 2688, + 2674, 2673, 2683, 2683, 2676, 2675, 2678, 2680, 2685, 2689, - 2680, 2684, 2684, 2685, 2690, 2686, 2693, 2687, 2688, 2688, - 2691, 2691, 2694, 2690, 2692, 2695, 2696, 2697, 2698, 2700, - 2701, 2699, 2695, 2704, 2693, 2702, 2702, 2701, 2703, 2703, - 2694, 2696, 2705, 2706, 2711, 2697, 2698, 2699, 2700, 2706, - 2708, 2708, 2710, 2704, 2709, 2709, 2712, 2713, 2710, 2714, - 2705, 2715, 2711, 2716, 2717, 2717, 2718, 2719, 2716, 2720, - 2721, 2722, 2713, 0, 2712, 2715, 2729, 2723, 2714, 2725, - 2725, 2721, 2723, 2724, 2734, 2724, 2718, 2719, 2726, 2720, - 2726, 2722, 2727, 2727, 2731, 2729, 2732, 2733, 2737, 2741, - 2735, 2736, 2738, 2731, 2734, 2735, 2736, 2742, 2743, 2733, + 2681, 2687, 2685, 2692, 2682, 2686, 2686, 2694, 2689, 2690, + 2690, 2688, 2692, 2693, 2693, 2695, 2696, 2697, 2699, 2700, + 2698, 2702, 2701, 2703, 2697, 2694, 2704, 2704, 2705, 2705, + 2703, 2706, 2707, 2695, 2696, 2698, 2699, 2700, 2701, 2708, + 2702, 2710, 2710, 2711, 2711, 2708, 2712, 2713, 2714, 2715, + 2707, 2706, 2712, 2716, 2717, 2718, 2719, 2719, 2720, 2721, + 2718, 2722, 2723, 2724, 2715, 2713, 2714, 2731, 2717, 2725, + 2727, 2727, 2716, 2723, 2725, 2726, 2734, 2726, 2720, 2721, + 2728, 2722, 2728, 2724, 2729, 2729, 2731, 2733, 2735, 2736, + 2739, 2743, 2737, 2738, 2740, 2734, 2733, 2737, 2738, 2744, - 2746, 2743, 2744, 2744, 2745, 2732, 2747, 2747, 2737, 2741, - 2748, 2738, 2749, 2750, 2752, 2742, 2753, 2750, 2746, 2745, - 2754, 2748, 2756, 2756, 2755, 2757, 2754, 2749, 2755, 2752, - 2759, 2753, 2760, 2761, 2762, 2762, 2764, 2765, 2757, 2766, - 2767, 2767, 2769, 2766, 2773, 2759, 2765, 2774, 2764, 2768, - 2768, 2771, 2760, 2761, 2770, 2770, 2771, 2772, 2775, 2774, - 2773, 2769, 2776, 2776, 2781, 2781, 2772, 2782, 2783, 2783, - 2784, 2785, 2786, 2787, 2790, 2790, 2791, 2788, 2775, 2789, - 2792, 2803, 2787, 2784, 2785, 2786, 2788, 2797, 2789, 2782, - 2794, 2794, 2797, 2799, 2800, 2792, 2791, 2801, 2799, 2802, + 2735, 2745, 2746, 2746, 2745, 2747, 2748, 2749, 2749, 2736, + 2739, 2743, 2750, 2740, 2751, 2752, 2754, 2744, 2755, 2752, + 2747, 2756, 2757, 2750, 2748, 2759, 2757, 2756, 2761, 2751, + 2762, 2754, 2763, 2755, 2758, 2758, 2764, 2764, 2759, 2766, + 2767, 2768, 2771, 2761, 2775, 2768, 2769, 2769, 2777, 2767, + 2762, 2766, 2763, 2770, 2770, 2772, 2772, 2773, 2774, 2776, + 2775, 2771, 2773, 2778, 2778, 2783, 2783, 2774, 2777, 2784, + 2785, 2776, 2786, 2786, 2787, 2788, 2789, 2790, 2784, 2793, + 2793, 2791, 2792, 2794, 2795, 2806, 2790, 2787, 2788, 2789, + 2791, 2792, 2785, 2797, 2797, 2800, 2802, 2803, 2805, 2795, - 2803, 2804, 2801, 2805, 2807, 2811, 2815, 2802, 2800, 2809, - 2804, 2805, 2810, 2814, 2809, 2812, 2812, 2810, 2814, 2807, - 2811, 2813, 2813, 2816, 2816, 2815, 2817, 2818, 2819, 2820, - 2821, 0, 2818, 2817, 2822, 2824, 2821, 2823, 2823, 2822, - 2825, 2826, 2826, 2827, 2827, 2825, 2819, 2820, 2830, 2833, - 2824, 2831, 2831, 2832, 2833, 2833, 2832, 2834, 2835, 2836, - 2837, 2830, 2834, 2835, 2838, 2839, 2837, 2840, 2838, 2841, - 2839, 2842, 2843, 2836, 2844, 2845, 2840, 2846, 2847, 2842, - 2844, 2845, 2846, 2851, 2841, 2848, 2848, 2850, 2851, 2852, - 2847, 2854, 2852, 2843, 2850, 2856, 2857, 2858, 2859, 2860, + 2800, 2802, 2804, 2794, 2806, 2807, 2805, 2804, 2808, 2810, + 2812, 2803, 2813, 2814, 2807, 2812, 2808, 2813, 2815, 2815, + 2816, 2816, 2817, 2818, 2810, 2819, 2819, 2817, 2814, 2820, + 2821, 2822, 2823, 2824, 0, 2821, 2820, 2827, 2825, 2824, + 2826, 2826, 2818, 2825, 2829, 2829, 2828, 2830, 2830, 2822, + 2823, 2828, 2827, 2833, 2834, 2834, 2835, 2836, 2839, 2835, + 2837, 2840, 2836, 2836, 2838, 2837, 2833, 2840, 2842, 2838, + 2841, 2843, 2839, 2842, 2841, 2844, 2845, 2846, 2849, 2847, + 2843, 2848, 2850, 2849, 2845, 2847, 2853, 2848, 2851, 2851, + 2844, 2854, 2855, 2853, 2850, 2855, 2854, 2857, 2846, 2859, - 2856, 2857, 2858, 2854, 2861, 2862, 2863, 2863, 2864, 2868, - 2865, 2873, 2860, 2861, 2862, 2865, 2859, 2864, 2869, 2870, - 2874, 2875, 0, 2876, 2869, 2870, 2878, 2868, 2877, 2877, - 2873, 2879, 2884, 2878, 2881, 2882, 2883, 2883, 2885, 2887, - 2874, 2875, 2876, 2881, 2882, 2886, 2886, 2884, 2889, 2891, - 2879, 2892, 2894, 2885, 2895, 2892, 2893, 2893, 2887, 2896, - 2895, 2897, 2898, 2889, 2900, 2896, 2899, 2899, 2898, 2891, - 2901, 2902, 2900, 2904, 2905, 2907, 2902, 2894, 2910, 2897, - 2908, 2907, 2904, 2908, 2909, 2911, 2913, 2905, 2909, 2912, - 2912, 2915, 2915, 2916, 0, 2901, 2910, 2917, 2917, 2911, + 2860, 2861, 2862, 2863, 2859, 2860, 2861, 2871, 2864, 2857, + 2865, 2866, 2866, 2867, 2876, 2872, 2863, 2864, 2868, 2865, + 2862, 2872, 2867, 2868, 2873, 2871, 2877, 2878, 2881, 2879, + 2873, 2880, 2880, 2876, 2882, 2881, 2884, 2886, 2886, 2887, + 2885, 2888, 2889, 2889, 2890, 2884, 2877, 2878, 2879, 2885, + 2892, 2894, 2897, 2882, 2887, 2895, 2888, 2896, 2896, 2895, + 2898, 2899, 2900, 2890, 2901, 2892, 2898, 2899, 2902, 2902, + 2901, 2894, 2904, 2903, 2905, 2907, 2908, 2897, 2913, 2905, + 2900, 2903, 2910, 2911, 2907, 2914, 2911, 2912, 2910, 2908, + 2916, 2912, 2915, 2915, 2918, 2918, 2913, 2904, 2919, 2914, - 2923, 2913, 2918, 2918, 2920, 2920, 2921, 2922, 2927, 2923, - 2921, 2916, 2922, 2925, 2925, 2928, 2930, 2929, 2931, 2933, - 2928, 2930, 2930, 2934, 2934, 2936, 2936, 2940, 2927, 2929, - 2931, 2937, 2937, 2938, 2938, 2939, 2941, 2944, 2939, 2933, - 2940, 2943, 2943, 2946, 2947, 2947, 2948, 2948, 2952, 2941, - 2949, 2949, 2950, 2951, 2951, 2944, 2953, 2954, 2955, 2956, - 2956, 2952, 2957, 2946, 2955, 2961, 2957, 2950, 2964, 2960, - 2961, 2954, 2963, 2965, 2953, 2960, 2966, 2963, 2963, 2967, - 2968, 2969, 2979, 2970, 2976, 2967, 2968, 2970, 2971, 2971, - 2974, 2964, 2976, 2965, 2977, 2974, 2966, 2977, 2980, 2981, + 2920, 2920, 2921, 2921, 2924, 2916, 2923, 2923, 2924, 2925, + 2926, 2928, 2928, 2930, 2925, 2931, 2919, 2932, 2933, 2926, + 2931, 2936, 2934, 2933, 2933, 2937, 2938, 2938, 2950, 2932, + 2940, 2940, 2948, 2930, 2934, 2941, 2941, 2942, 2942, 2943, + 2944, 2936, 2943, 2945, 2954, 2937, 2947, 2947, 2950, 2956, + 2948, 2951, 2951, 2944, 2952, 2952, 2945, 2953, 2953, 2954, + 2955, 2955, 2956, 2957, 2958, 2959, 2960, 2960, 2961, 2964, + 2968, 2959, 2961, 2973, 2965, 2964, 2969, 2967, 2958, 2965, + 2970, 2957, 2967, 2967, 2971, 2972, 2975, 2975, 2974, 2978, + 2971, 2972, 2974, 2968, 2978, 2980, 2969, 2983, 2973, 2981, - 2981, 2980, 2982, 2983, 2984, 2985, 2969, 2979, 2983, 2986, - 2987, 2987, 2988, 2989, 2990, 2991, 2989, 0, 2996, 2982, - 2982, 2992, 2984, 2986, 2989, 2985, 2988, 2994, 2990, 2992, - 2995, 3006, 2994, 2994, 2991, 2995, 2995, 2996, 2997, 2997, - 2998, 2998, 2999, 2999, 3000, 3000, 3001, 3001, 3002, 3002, - 3003, 3004, 3005, 3007, 3008, 3009, 3004, 3006, 3010, 3008, - 3011, 3012, 3013, 3010, 3014, 3018, 3003, 3007, 3018, 3011, - 3016, 3016, 3005, 3019, 3009, 3017, 3017, 3020, 3020, 3021, - 3022, 3012, 3013, 3025, 3014, 3021, 3024, 3024, 3019, 3027, - 3025, 3026, 3026, 3030, 3027, 3029, 3029, 3031, 3022, 3032, + 2970, 2984, 2981, 2980, 2984, 2985, 2985, 2986, 2987, 2988, + 2989, 0, 2990, 2987, 2991, 2991, 2995, 2992, 2993, 2994, + 2996, 2993, 2983, 3000, 2986, 2986, 2990, 2988, 2996, 2993, + 2989, 2992, 2998, 2994, 2999, 2995, 3009, 2998, 2998, 2999, + 2999, 3007, 3000, 3001, 3001, 3002, 3002, 3003, 3003, 3004, + 3004, 3005, 3005, 3006, 3006, 3008, 3009, 3007, 3010, 3011, + 3008, 3012, 3013, 3014, 3023, 3015, 3012, 3016, 3014, 3017, + 3018, 3020, 3020, 3011, 3015, 3021, 3021, 3022, 3026, 3023, + 3022, 3013, 3024, 3024, 3010, 3025, 0, 3016, 3029, 3017, + 3018, 3025, 3028, 3028, 3031, 3029, 3026, 3030, 3030, 3031, - 3033, 3035, 3030, 3036, 3036, 3039, 3031, 3040, 3032, 3033, - 3037, 3037, 3038, 3041, 3039, 3042, 3038, 3043, 3046, 3035, - 3047, 3048, 3044, 3058, 3041, 3048, 3040, 3044, 3044, 3047, - 3042, 3046, 3054, 3052, 3053, 3053, 3057, 3043, 3052, 3056, - 3056, 3059, 3061, 3061, 3062, 3063, 3054, 3067, 3058, 3068, - 3057, 3069, 3072, 3062, 3068, 3071, 3074, 3063, 3072, 3059, - 3069, 3076, 3078, 3085, 3079, 3080, 3080, 3078, 3074, 3079, - 3081, 3083, 3067, 3084, 3091, 3071, 3083, 3085, 3092, 3081, - 3086, 3086, 3076, 3091, 3086, 3093, 3084, 3088, 3088, 3089, - 3089, 3090, 3090, 3100, 3094, 3096, 3101, 3097, 3092, 3094, + 3033, 3033, 3034, 3035, 3036, 3037, 3039, 3040, 3040, 3041, + 3041, 3034, 3035, 3036, 3037, 3042, 3043, 3044, 3045, 3042, + 3046, 3047, 3048, 3051, 3039, 3043, 3050, 3048, 3048, 3045, + 3052, 3058, 3051, 3056, 3052, 3046, 3044, 3061, 3056, 3050, + 3062, 3047, 3057, 3057, 3063, 3058, 3060, 3060, 3065, 3065, + 3066, 3061, 3067, 3072, 3068, 3073, 3076, 3077, 3067, 3066, + 3073, 3074, 3063, 3077, 3081, 3062, 3068, 3079, 3083, 3084, + 3074, 3085, 3085, 3083, 3084, 3086, 3076, 3088, 3072, 3079, + 3089, 3090, 3088, 3098, 3086, 3081, 3091, 3091, 3093, 3093, + 3091, 3094, 3094, 3089, 3096, 3090, 3095, 3095, 3097, 3099, - 3098, 3096, 3097, 3102, 3093, 3098, 3099, 3099, 3101, 3103, - 3104, 3100, 3105, 3106, 3103, 3107, 3107, 3109, 3105, 3114, - 3110, 3109, 3111, 3113, 3102, 3110, 3115, 3111, 3104, 3112, - 3112, 3117, 3119, 3119, 3114, 3121, 3122, 3123, 3106, 3124, - 3126, 3115, 3113, 3124, 3125, 3127, 3128, 3129, 3121, 3122, - 3123, 3117, 3129, 3125, 3128, 3130, 3126, 3131, 3131, 3132, - 3133, 3134, 3135, 3135, 3127, 3136, 3136, 3137, 3132, 3141, - 3146, 3140, 3150, 3143, 3151, 3130, 3140, 3140, 3133, 3143, - 3144, 3144, 3153, 3141, 3148, 3148, 3137, 3134, 3150, 3152, - 3151, 3146, 3154, 3158, 3152, 3157, 3157, 3154, 3153, 3159, + 3101, 3105, 3098, 3096, 3099, 3102, 3101, 3103, 3104, 3104, + 3102, 3106, 3103, 3107, 3109, 3108, 3110, 3111, 3097, 3105, + 3108, 3118, 3110, 3106, 3112, 3112, 3114, 3122, 3115, 3119, + 3114, 3116, 3109, 3115, 3107, 3120, 3116, 3117, 3117, 3126, + 3118, 3127, 3111, 3128, 3119, 3124, 3124, 3122, 3130, 3129, + 3120, 3131, 3126, 3129, 3127, 3132, 3128, 3130, 3133, 3134, + 3135, 3136, 3136, 3137, 3134, 3138, 3133, 3131, 3139, 3140, + 3140, 3142, 3137, 3145, 3132, 3141, 3141, 3146, 3145, 3145, + 3135, 3148, 3151, 3138, 3149, 3149, 3155, 3148, 3153, 3153, + 3142, 3146, 3156, 3157, 3139, 3158, 3159, 3163, 3157, 3162, - 3160, 3161, 3162, 3162, 3163, 3166, 3160, 3167, 3159, 3165, - 3165, 3168, 3168, 3158, 3170, 3172, 3173, 3176, 3179, 3166, - 3170, 3180, 3173, 3163, 3161, 3174, 3167, 3177, 3177, 3182, - 3174, 3178, 3178, 3179, 3183, 3172, 3181, 3181, 3184, 3176, - 3182, 3180, 3185, 3183, 3186, 3187, 3188, 3190, 3185, 3189, - 3189, 3191, 3192, 3197, 3191, 3192, 3181, 3187, 3184, 3193, - 3193, 3198, 3190, 3186, 3199, 3197, 3188, 3200, 3200, 3201, - 3199, 3202, 3201, 3203, 3205, 3206, 3206, 3202, 3207, 3205, - 3208, 3198, 3209, 3207, 3210, 3211, 3211, 3214, 3209, 3215, - 3216, 3203, 3213, 3217, 3217, 3219, 3218, 3220, 3471, 3208, + 3162, 3159, 3155, 3151, 3164, 3166, 3165, 3168, 3156, 3167, + 3167, 3158, 3165, 3164, 3170, 3170, 3171, 3163, 3172, 3173, + 3173, 3175, 3177, 3178, 3181, 3182, 3168, 3175, 3166, 3178, + 3171, 3179, 3183, 3183, 3184, 3184, 3179, 3172, 3185, 3186, + 3187, 3187, 3177, 3188, 3190, 3193, 3181, 3189, 3192, 3191, + 3194, 3182, 0, 3185, 3188, 3191, 3189, 3193, 3196, 3186, + 3187, 3195, 3195, 3197, 3190, 3198, 3197, 3192, 3198, 3203, + 3194, 3199, 3199, 3196, 3204, 3209, 3205, 3206, 3206, 3208, + 3207, 3203, 3205, 3207, 3211, 3208, 3212, 3212, 3214, 3211, + 3213, 3215, 3216, 3209, 3204, 3213, 3219, 3215, 3217, 3217, - 3471, 3210, 3210, 3216, 3213, 3214, 3220, 3222, 3222, 3223, - 3223, 3219, 3224, 3224, 3215, 3218, 3225, 3226, 3227, 3228, - 3228, 3225, 3232, 3227, 3229, 3229, 3230, 3230, 3231, 3231, - 3233, 3226, 3234, 3239, 3235, 3232, 3238, 3238, 3234, 3235, - 3241, 3241, 3242, 3242, 3244, 3246, 3247, 3248, 3249, 3239, - 3250, 3250, 3252, 3252, 3253, 3254, 3233, 3255, 3257, 3262, - 3258, 3259, 3259, 3244, 3260, 3260, 3248, 3246, 3247, 3258, - 3249, 3255, 3264, 3263, 3254, 3265, 3266, 3262, 3257, 3263, - 3253, 3266, 3269, 3270, 3270, 3272, 3272, 3274, 3273, 3275, - 3276, 3277, 3264, 3273, 3265, 3275, 3278, 3278, 3283, 3277, + 3220, 3221, 3222, 3223, 3223, 3224, 3225, 3214, 3219, 3216, + 3216, 3226, 3228, 3228, 3231, 3222, 3229, 3229, 3220, 3231, + 3226, 3232, 3225, 3239, 3224, 3233, 3221, 3230, 3230, 3238, + 3233, 3234, 3234, 3235, 3235, 3232, 3236, 3236, 3237, 3237, + 3240, 3245, 3238, 3241, 3244, 3244, 3240, 3250, 3241, 3239, + 3247, 3247, 3248, 3248, 3252, 3253, 3254, 3245, 3255, 3256, + 3256, 3258, 3258, 3259, 3260, 3261, 3250, 3263, 3268, 3264, + 3265, 3265, 3266, 3266, 3270, 3254, 3252, 3253, 3264, 3261, + 3255, 3271, 3269, 3260, 3276, 3272, 3268, 3263, 3269, 3259, + 3272, 3273, 3277, 3277, 3270, 3281, 3273, 3279, 3279, 3280, - 3279, 3274, 3276, 3269, 3281, 3279, 3282, 3284, 3281, 3285, - 3286, 3282, 3289, 3287, 3285, 3290, 3291, 3292, 3283, 3287, - 3289, 3294, 3286, 3297, 3295, 3296, 3298, 3284, 3300, 3301, - 3303, 3298, 3302, 3300, 3290, 3303, 3291, 3292, 3302, 3294, - 3295, 3305, 3296, 3296, 3297, 3306, 3307, 3320, 3306, 3301, - 3311, 3311, 3312, 3312, 3313, 3318, 3318, 3319, 3313, 3307, - 3323, 3305, 3319, 3321, 3321, 0, 3320, 3326, 3326, 3327, - 3327, 3336, 3327, 3328, 3328, 3323, 3328, 3329, 3329, 3330, - 3330, 3331, 3330, 3333, 3334, 3331, 3335, 3335, 3333, 3336, - 3337, 3340, 3340, 3334, 3341, 3342, 3343, 3344, 3344, 3345, + 3271, 3282, 3283, 3284, 3280, 3276, 3290, 3282, 3291, 3281, + 3286, 3284, 3285, 3285, 3283, 3286, 3288, 3289, 3292, 3293, + 3288, 3294, 3289, 3292, 3296, 3297, 3290, 3294, 3291, 3298, + 3299, 3293, 3296, 3301, 3305, 3304, 3302, 3303, 3307, 3305, + 3308, 3309, 3312, 3307, 3297, 0, 3314, 3309, 3310, 3298, + 3299, 3301, 3302, 3310, 3303, 3303, 3304, 3327, 3313, 3314, + 3308, 3313, 3312, 3318, 3318, 3319, 3319, 3320, 3325, 3325, + 3326, 3320, 3328, 3328, 3330, 3326, 3327, 3333, 3333, 3334, + 3334, 3338, 3334, 3335, 3335, 3338, 3335, 3336, 3336, 3330, + 3337, 3337, 3340, 3337, 3341, 3342, 3342, 3340, 3343, 3344, - 3348, 3343, 3349, 3350, 3337, 3352, 3354, 3350, 3351, 3349, - 0, 3355, 3356, 3356, 3341, 3342, 3355, 3351, 3357, 3345, - 3352, 3358, 3358, 3361, 3354, 3348, 3366, 3357, 3359, 3359, - 3360, 3360, 3362, 3363, 3364, 3365, 3368, 3362, 3361, 3364, - 3364, 3365, 3363, 3367, 3369, 3363, 3371, 3370, 0, 3369, - 3373, 3366, 3370, 3372, 3372, 3374, 3373, 3368, 3367, 3375, - 3375, 3374, 3376, 3376, 3377, 3371, 3378, 3381, 3381, 3383, - 3383, 3378, 3384, 3386, 3388, 3388, 3389, 3389, 3397, 3377, - 0, 3384, 3390, 3390, 3391, 3391, 3393, 3393, 3394, 3394, - 3399, 3386, 3395, 3395, 3396, 3396, 3400, 3400, 3402, 3399, + 3347, 3347, 3348, 3341, 3349, 3350, 3351, 3351, 3352, 3353, + 3350, 3356, 3357, 3344, 3358, 3362, 3343, 3360, 3358, 3357, + 3363, 3359, 3348, 0, 3349, 3363, 3352, 3364, 3364, 3353, + 3359, 3365, 3360, 3362, 3366, 3366, 3356, 3367, 3367, 3369, + 3365, 3368, 3368, 3370, 3371, 3372, 3373, 3374, 3370, 3375, + 3372, 3372, 3373, 3371, 3369, 3376, 3371, 3377, 3378, 3379, + 3380, 3380, 3377, 3378, 3375, 3381, 3385, 3382, 3383, 3383, + 3394, 3381, 3374, 3382, 3384, 3384, 3376, 3386, 3379, 3389, + 3389, 3385, 3386, 3391, 3391, 3392, 3396, 3396, 3394, 3397, + 3397, 3398, 3398, 3405, 3392, 3399, 3399, 3401, 3401, 3402, - 3401, 3401, 3403, 3404, 3397, 3406, 3406, 3402, 3407, 3408, - 3408, 3409, 3410, 3419, 3403, 3415, 3411, 3412, 3412, 3413, - 3413, 3416, 3416, 3404, 3421, 3410, 3409, 3407, 3411, 3420, - 3415, 3419, 3420, 3422, 3422, 3423, 3425, 3426, 3427, 3425, - 3428, 3429, 3431, 3426, 3430, 3428, 3434, 3437, 3433, 3438, - 3421, 3437, 3427, 3423, 3433, 3434, 3441, 3442, 3431, 3455, - 3429, 3451, 3430, 3461, 3438, 3452, 3451, 3464, 3452, 3456, - 3456, 3462, 3455, 3457, 3457, 3459, 3459, 3442, 3466, 3463, - 3462, 3468, 3441, 3463, 3469, 3470, 3461, 3464, 3472, 3474, - 3470, 3475, 3466, 3473, 3473, 3469, 3476, 3477, 3478, 3480, + 3402, 3403, 3403, 3404, 3404, 3407, 3408, 3408, 3409, 3409, + 3411, 3410, 3412, 3414, 3407, 3415, 3415, 3416, 3418, 3405, + 3410, 3419, 3411, 3417, 3417, 3420, 3421, 3421, 3414, 3422, + 3422, 3424, 3412, 3418, 3419, 3428, 3416, 3420, 3425, 3425, + 3429, 3430, 3432, 3429, 3431, 3431, 3424, 3434, 3435, 3436, + 3434, 3437, 3438, 3428, 3435, 3439, 3437, 3443, 3440, 3442, + 3432, 3447, 3450, 3436, 3446, 3442, 3443, 3430, 3446, 3451, + 3460, 3438, 3464, 3439, 3440, 3460, 3447, 3461, 3465, 3465, + 3461, 3466, 3466, 3467, 3467, 3464, 3469, 3469, 3450, 3451, + 3471, 3472, 3473, 3476, 3474, 3478, 3473, 3479, 3480, 3481, - 3479, 3482, 3474, 3472, 3468, 3481, 3482, 3483, 3480, 3487, - 3475, 3484, 3485, 3477, 3476, 3479, 3484, 3481, 3486, 3486, - 3488, 3492, 3493, 3478, 3495, 3488, 3494, 3494, 3483, 3487, - 3500, 3485, 3501, 3495, 3505, 3492, 3496, 3496, 3497, 3497, - 3498, 3498, 3493, 3499, 3499, 3502, 3503, 3506, 3502, 3500, - 3504, 3503, 3501, 3508, 3507, 3504, 3509, 3512, 3510, 3505, - 3507, 3517, 3506, 3510, 3511, 3511, 3518, 3508, 3509, 3513, - 3513, 3514, 3514, 3516, 3516, 3521, 3517, 3512, 3519, 3519, - 3523, 3526, 3526, 3527, 3527, 3518, 3528, 3529, 3532, 3530, - 3521, 3531, 3533, 3534, 3528, 3530, 3535, 3531, 3523, 3536, + 3472, 3481, 3482, 3480, 3483, 3483, 3484, 3476, 3479, 3485, + 3487, 3486, 3488, 3471, 3474, 3489, 3490, 3482, 3478, 3484, + 3491, 3493, 3492, 0, 3495, 3490, 3487, 3492, 3485, 3486, + 3489, 3494, 3491, 3496, 3496, 3497, 3494, 3488, 3503, 3498, + 3504, 3506, 3493, 3495, 3498, 3505, 3505, 3507, 3507, 3511, + 3506, 3512, 3503, 3508, 3508, 3497, 3509, 3509, 3510, 3510, + 3504, 3513, 3514, 3516, 3513, 3515, 3517, 3514, 3511, 3518, + 3515, 3512, 3519, 3520, 3521, 3518, 3522, 3522, 3523, 3521, + 3528, 3517, 3524, 3524, 3529, 3520, 3519, 3532, 3516, 3525, + 3525, 3527, 3527, 3530, 3530, 3528, 3534, 3540, 3523, 3537, - 3536, 3535, 3532, 3538, 3538, 3533, 3529, 3542, 3545, 3543, - 3546, 3548, 3534, 3549, 3546, 3550, 3553, 3551, 3549, 3552, - 3554, 3555, 3545, 3556, 3556, 3554, 3555, 3559, 3542, 3543, - 3551, 3548, 3552, 3560, 3550, 3553, 3561, 3562, 3562, 3563, - 3564, 3565, 3565, 3566, 3563, 3567, 3564, 3559, 3566, 3568, - 3567, 3560, 3569, 3570, 3568, 3561, 3572, 3572, 3573, 3570, - 3574, 3574, 3576, 3573, 3577, 3578, 3576, 3579, 3580, 3581, - 3582, 3569, 3578, 3585, 3585, 3581, 3588, 3583, 3587, 3587, - 3590, 3591, 3592, 3577, 3597, 3588, 3579, 3580, 3588, 3582, - 3583, 3589, 3593, 3593, 3595, 3592, 3589, 3594, 3599, 3590, + 3537, 3539, 3532, 3529, 3538, 3538, 3541, 3542, 3543, 3539, + 3544, 3545, 3541, 3542, 3534, 3546, 3540, 3547, 3547, 3553, + 3546, 3554, 3543, 3544, 3549, 3549, 3559, 3557, 3556, 3560, + 3545, 3557, 3561, 3564, 3560, 3562, 3563, 3570, 3565, 3566, + 3553, 3554, 3556, 3565, 3566, 3571, 3559, 3572, 3562, 3563, + 0, 3561, 3564, 3567, 3567, 3573, 3573, 3570, 3580, 3574, + 3577, 3575, 0, 3571, 3574, 3577, 3572, 3575, 3576, 3576, + 3578, 3579, 3581, 3583, 3583, 3578, 3579, 3580, 3581, 3584, + 3585, 3585, 3587, 3588, 3584, 3589, 3587, 3590, 3591, 3592, + 3593, 3594, 3589, 3596, 3596, 3592, 3598, 3598, 3600, 3599, - 3591, 3604, 3594, 3598, 3598, 3600, 3600, 3595, 3601, 3601, - 3597, 3602, 3603, 3605, 3605, 0, 3602, 3599, 3606, 3603, - 3604, 3609, 3607, 3606, 3607, 3608, 3608, 3610, 3609, 3611, - 3612, 3613, 3615, 3615, 3610, 3612, 3616, 3618, 3619, 3620, - 3621, 3625, 3618, 3619, 3622, 3622, 3624, 3624, 3611, 3626, - 3613, 3627, 3627, 3628, 3628, 3616, 3629, 3639, 3620, 3621, - 3625, 3631, 3631, 3629, 3632, 3632, 3633, 3635, 3626, 3638, - 3640, 0, 3635, 3633, 3638, 0, 3639, 3641, 3641, 3642, - 3642, 0, 0, 0, 0, 0, 0, 0, 0, 3640, - 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3647, 3647, 3647, + 3601, 3602, 3588, 3600, 3594, 3603, 3590, 3591, 3599, 3593, + 3605, 3599, 3604, 3604, 3606, 3605, 3608, 3610, 3603, 3601, + 3602, 3609, 3609, 3611, 3611, 3612, 3612, 3606, 3613, 3615, + 3614, 3616, 3616, 3613, 3617, 3622, 3610, 3614, 3618, 3617, + 3618, 3624, 3608, 3619, 3619, 3620, 3621, 3627, 3615, 3631, + 3623, 3632, 3620, 3621, 3622, 3623, 3626, 3626, 3629, 3630, + 3624, 3633, 3633, 3629, 3630, 3636, 3627, 3637, 3631, 0, + 3632, 3635, 3635, 3638, 3638, 3639, 3639, 3650, 3640, 3642, + 3642, 3643, 3643, 3644, 3636, 3640, 3637, 3646, 3649, 3651, + 3644, 0, 3646, 3649, 3652, 3652, 3650, 3653, 3653, 0, - 3647, 3647, 3647, 3647, 3648, 3648, 3648, 3648, 3648, 3648, - 3648, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3650, 3650, - 3650, 3650, 3650, 3650, 3650, 3651, 3651, 3651, 3651, 3651, - 3651, 3651, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3654, - 3654, 0, 3654, 3654, 3654, 3654, 3655, 3655, 0, 0, - 0, 3655, 3655, 3656, 3656, 0, 0, 3656, 0, 3656, - 3657, 0, 0, 0, 0, 0, 3657, 3658, 3658, 0, - 0, 0, 3658, 3658, 3659, 0, 0, 0, 0, 0, - 3659, 3660, 3660, 0, 3660, 3660, 3660, 3660, 3661, 0, - 0, 0, 0, 0, 3661, 3662, 3662, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3651, 3657, + 3657, 3657, 3657, 3657, 3657, 3657, 3658, 3658, 3658, 3658, + 3658, 3658, 3658, 3659, 3659, 3659, 3659, 3659, 3659, 3659, + 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3661, 3661, 3661, + 3661, 3661, 3661, 3661, 3662, 3662, 3662, 3662, 3662, 3662, + 3662, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3665, 3665, + 0, 3665, 3665, 3665, 3665, 3666, 3666, 0, 0, 0, + 3666, 3666, 3667, 3667, 0, 0, 3667, 0, 3667, 3668, + 0, 0, 0, 0, 0, 3668, 3669, 3669, 0, 0, + 0, 3669, 3669, 3670, 0, 0, 0, 0, 0, 3670, - 3662, 3662, 3663, 3663, 0, 3663, 3663, 3663, 3663, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645 + 3671, 3671, 0, 3671, 3671, 3671, 3671, 3672, 0, 0, + 0, 0, 0, 3672, 3673, 3673, 0, 0, 0, 3673, + 3673, 3674, 3674, 0, 3674, 3674, 3674, 3674, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, + 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656 } ; static yy_state_type yy_last_accepting_state; @@ -3405,7 +3412,7 @@ static void config_end_include(void) } #endif -#line 3406 "" +#line 3413 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3414,9 +3421,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3415 "" +#line 3422 "" -#line 3417 "" +#line 3424 "" #define INITIAL 0 #define quotedstring 1 @@ -3640,7 +3647,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3641 "" +#line 3648 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3673,13 +3680,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 >= 3646 ) + if ( yy_current_state >= 3657 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 7110 ); + while ( yy_base[yy_current_state] != 7129 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4835,365 +4842,365 @@ YY_RULE_SETUP case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 255: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_TAG) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 256: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) } +{ YDVAR(2, VAR_INTERFACE_TAG) } YY_BREAK case 257: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(3, VAR_INTERFACE_TAG_DATA) } +{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) } YY_BREAK case 258: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_VIEW) } +{ YDVAR(3, VAR_INTERFACE_TAG_DATA) } YY_BREAK case 259: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_INTERFACE_VIEW) } YY_BREAK case 260: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 261: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 262: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 263: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 264: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 265: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 266: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 267: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 268: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 269: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 484 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 270: YY_RULE_SETUP -#line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 486 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 271: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 272: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 273: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 274: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 275: YY_RULE_SETUP -#line 493 "./util/configlexer.lex" +#line 492 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 276: YY_RULE_SETUP -#line 495 "./util/configlexer.lex" +#line 494 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 277: YY_RULE_SETUP -#line 497 "./util/configlexer.lex" +#line 496 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 278: YY_RULE_SETUP -#line 499 "./util/configlexer.lex" +#line 498 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 279: YY_RULE_SETUP -#line 501 "./util/configlexer.lex" +#line 500 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 280: YY_RULE_SETUP -#line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 502 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 297: YY_RULE_SETUP @@ -5208,119 +5215,119 @@ YY_RULE_SETUP case 299: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 300: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 301: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 302: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 303: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 304: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 305: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 306: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 307: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 308: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 309: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 310: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 533 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 311: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 535 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 322: YY_RULE_SETUP @@ -5330,128 +5337,133 @@ YY_RULE_SETUP case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 330: YY_RULE_SETUP #line 555 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 331: YY_RULE_SETUP #line 556 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 332: YY_RULE_SETUP #line 557 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 333: YY_RULE_SETUP #line 558 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_NSID ) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDE ) } YY_BREAK case 341: -/* rule 341 can match eol */ YY_RULE_SETUP #line 566 "./util/configlexer.lex" +{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } + YY_BREAK +case 342: +/* rule 342 can match eol */ +YY_RULE_SETUP +#line 567 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 342: +case 343: YY_RULE_SETUP -#line 569 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 570 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 343: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 344: -/* rule 344 can match eol */ YY_RULE_SETUP #line 576 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 345: +/* rule 345 can match eol */ +YY_RULE_SETUP +#line 577 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 345: +case 346: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5464,34 +5476,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 346: +case 347: YY_RULE_SETUP -#line 590 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 591 "./util/configlexer.lex" +#line 592 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 347: -YY_RULE_SETUP -#line 596 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 348: -/* rule 348 can match eol */ YY_RULE_SETUP #line 597 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 349: +/* rule 349 can match eol */ +YY_RULE_SETUP +#line 598 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 349: +case 350: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5504,38 +5516,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 350: +case 351: YY_RULE_SETUP -#line 611 "./util/configlexer.lex" +#line 612 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 613 "./util/configlexer.lex" +#line 614 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 351: -YY_RULE_SETUP -#line 617 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 352: -/* rule 352 can match eol */ YY_RULE_SETUP #line 618 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 353: +/* rule 353 can match eol */ YY_RULE_SETUP #line 619 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 354: YY_RULE_SETUP #line 620 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 355: +YY_RULE_SETUP +#line 621 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5543,27 +5555,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 625 "./util/configlexer.lex" +#line 626 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 355: -YY_RULE_SETUP -#line 629 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 356: -/* rule 356 can match eol */ YY_RULE_SETUP #line 630 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 357: +/* rule 357 can match eol */ +YY_RULE_SETUP +#line 631 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 357: +case 358: YY_RULE_SETUP -#line 632 "./util/configlexer.lex" +#line 633 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5573,7 +5585,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 638 "./util/configlexer.lex" +#line 639 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5588,39 +5600,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 358: +case 359: YY_RULE_SETUP -#line 652 "./util/configlexer.lex" +#line 653 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 655 "./util/configlexer.lex" +#line 656 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 359: -YY_RULE_SETUP -#line 659 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 360: -/* rule 360 can match eol */ YY_RULE_SETUP #line 660 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 361: +/* rule 361 can match eol */ YY_RULE_SETUP #line 661 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 362: YY_RULE_SETUP #line 662 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 363: +YY_RULE_SETUP +#line 663 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5629,29 +5641,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 668 "./util/configlexer.lex" +#line 669 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 363: -YY_RULE_SETUP -#line 672 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 364: -/* rule 364 can match eol */ YY_RULE_SETUP #line 673 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 365: +/* rule 365 can match eol */ +YY_RULE_SETUP +#line 674 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 365: +case 366: YY_RULE_SETUP -#line 677 "./util/configlexer.lex" +#line 678 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5660,33 +5672,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 366: +case 367: YY_RULE_SETUP -#line 685 "./util/configlexer.lex" +#line 686 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 367: +case 368: YY_RULE_SETUP -#line 689 "./util/configlexer.lex" +#line 690 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 368: +case 369: YY_RULE_SETUP -#line 693 "./util/configlexer.lex" +#line 694 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 369: +case 370: YY_RULE_SETUP -#line 697 "./util/configlexer.lex" +#line 698 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5687 "" +#line 5699 "" case YY_END_OF_BUFFER: { @@ -5981,7 +5993,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 >= 3646 ) + if ( yy_current_state >= 3657 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6009,11 +6021,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 >= 3646 ) + if ( yy_current_state >= 3657 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3645); + yy_is_jam = (yy_current_state == 3656); return yy_is_jam ? 0 : yy_current_state; } @@ -6652,6 +6664,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 697 "./util/configlexer.lex" +#line 698 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 09e314b21..9b7c27b5f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -438,6 +438,7 @@ insecure-lan-zones{COLON} { YDVAR(1, VAR_INSECURE_LAN_ZONES) } statistics-interval{COLON} { YDVAR(1, VAR_STATISTICS_INTERVAL) } statistics-cumulative{COLON} { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } extended-statistics{COLON} { YDVAR(1, VAR_EXTENDED_STATISTICS) } +statistics-inhibit-zero{COLON} { YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) } shm-enable{COLON} { YDVAR(1, VAR_SHM_ENABLE) } shm-key{COLON} { YDVAR(1, VAR_SHM_KEY) } remote-control{COLON} { YDVAR(0, VAR_REMOTE_CONTROL) } diff --git a/util/configparser.c b/util/configparser.c index 4670d36e7..65252cbb7 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -459,365 +459,367 @@ enum yysymbol_kind_t YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 331, /* VAR_INTERFACE_TAG_ACTION */ YYSYMBOL_VAR_INTERFACE_TAG_DATA = 332, /* VAR_INTERFACE_TAG_DATA */ YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 333, /* VAR_PROXY_PROTOCOL_PORT */ - YYSYMBOL_YYACCEPT = 334, /* $accept */ - YYSYMBOL_toplevelvars = 335, /* toplevelvars */ - YYSYMBOL_toplevelvar = 336, /* toplevelvar */ - YYSYMBOL_force_toplevel = 337, /* force_toplevel */ - YYSYMBOL_serverstart = 338, /* serverstart */ - YYSYMBOL_contents_server = 339, /* contents_server */ - YYSYMBOL_content_server = 340, /* content_server */ - YYSYMBOL_stubstart = 341, /* stubstart */ - YYSYMBOL_contents_stub = 342, /* contents_stub */ - YYSYMBOL_content_stub = 343, /* content_stub */ - YYSYMBOL_forwardstart = 344, /* forwardstart */ - YYSYMBOL_contents_forward = 345, /* contents_forward */ - YYSYMBOL_content_forward = 346, /* content_forward */ - YYSYMBOL_viewstart = 347, /* viewstart */ - YYSYMBOL_contents_view = 348, /* contents_view */ - YYSYMBOL_content_view = 349, /* content_view */ - YYSYMBOL_authstart = 350, /* authstart */ - YYSYMBOL_contents_auth = 351, /* contents_auth */ - YYSYMBOL_content_auth = 352, /* content_auth */ - YYSYMBOL_rpz_tag = 353, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 354, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 355, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 356, /* rpz_log */ - YYSYMBOL_rpz_log_name = 357, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 358, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 359, /* rpzstart */ - YYSYMBOL_contents_rpz = 360, /* contents_rpz */ - YYSYMBOL_content_rpz = 361, /* content_rpz */ - YYSYMBOL_server_num_threads = 362, /* server_num_threads */ - YYSYMBOL_server_verbosity = 363, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 364, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 365, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 366, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 367, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 368, /* server_shm_key */ - YYSYMBOL_server_port = 369, /* server_port */ - YYSYMBOL_server_send_client_subnet = 370, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 371, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 372, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 373, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 374, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 375, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 376, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 377, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 378, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 379, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 380, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 381, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 382, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 383, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 384, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 385, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 386, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 387, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 388, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 389, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 390, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 391, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 392, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 393, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 394, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 395, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 396, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 397, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 398, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 399, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 400, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 401, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 402, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 403, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 404, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 405, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 406, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 407, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 408, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 409, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 410, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 411, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 412, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 413, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 414, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 415, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 416, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 417, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 418, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 419, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 420, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 421, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 422, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 423, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 424, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 425, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 426, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 427, /* server_log_queries */ - YYSYMBOL_server_log_replies = 428, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 429, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 430, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 431, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 432, /* server_chroot */ - YYSYMBOL_server_username = 433, /* server_username */ - YYSYMBOL_server_directory = 434, /* server_directory */ - YYSYMBOL_server_logfile = 435, /* server_logfile */ - YYSYMBOL_server_pidfile = 436, /* server_pidfile */ - YYSYMBOL_server_root_hints = 437, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 438, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 439, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 440, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 441, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 442, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 443, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 444, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 445, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 446, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 447, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 448, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 449, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 450, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 451, /* server_identity */ - YYSYMBOL_server_version = 452, /* server_version */ - YYSYMBOL_server_http_user_agent = 453, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 454, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 455, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 456, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 457, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 458, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 459, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 460, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 461, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 462, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 463, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 464, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 465, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 466, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 467, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 468, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 469, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 470, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 471, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 472, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 473, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 474, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 475, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 476, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 477, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 478, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 479, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 480, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 481, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 482, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 483, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 484, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 485, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 486, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 487, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 488, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 489, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 490, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 491, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 492, /* server_private_address */ - YYSYMBOL_server_private_domain = 493, /* server_private_domain */ - YYSYMBOL_server_prefetch = 494, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 495, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 496, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 497, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 498, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 499, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 500, /* server_access_control */ - YYSYMBOL_server_interface_action = 501, /* server_interface_action */ - YYSYMBOL_server_module_conf = 502, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 503, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 504, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 505, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 506, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 507, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 508, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 509, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 510, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 511, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 512, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 513, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 514, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 515, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 516, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 517, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 518, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 519, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 520, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 521, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 522, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 523, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 524, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 525, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 526, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 527, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 528, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 529, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 530, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 531, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 532, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 533, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 534, /* server_local_zone */ - YYSYMBOL_server_local_data = 535, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 536, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 537, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 538, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 539, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 540, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 541, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 542, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 543, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 544, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 545, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 546, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 547, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 548, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 549, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 550, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 551, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 552, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 553, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 554, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 555, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 556, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 557, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 558, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 559, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 560, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 561, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 562, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 563, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 564, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 565, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 566, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 567, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 568, /* server_outbound_msg_retry */ - YYSYMBOL_server_low_rtt = 569, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 570, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 571, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 572, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 573, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 574, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 575, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 576, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 577, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 578, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 579, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 580, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 581, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 582, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 583, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 584, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 585, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 586, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 587, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 588, /* stub_name */ - YYSYMBOL_stub_host = 589, /* stub_host */ - YYSYMBOL_stub_addr = 590, /* stub_addr */ - YYSYMBOL_stub_first = 591, /* stub_first */ - YYSYMBOL_stub_no_cache = 592, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 593, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 594, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 595, /* stub_prime */ - YYSYMBOL_forward_name = 596, /* forward_name */ - YYSYMBOL_forward_host = 597, /* forward_host */ - YYSYMBOL_forward_addr = 598, /* forward_addr */ - YYSYMBOL_forward_first = 599, /* forward_first */ - YYSYMBOL_forward_no_cache = 600, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 601, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 602, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 603, /* auth_name */ - YYSYMBOL_auth_zonefile = 604, /* auth_zonefile */ - YYSYMBOL_auth_master = 605, /* auth_master */ - YYSYMBOL_auth_url = 606, /* auth_url */ - YYSYMBOL_auth_allow_notify = 607, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 608, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 609, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 610, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 611, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 612, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 613, /* view_name */ - YYSYMBOL_view_local_zone = 614, /* view_local_zone */ - YYSYMBOL_view_response_ip = 615, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 616, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 617, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 618, /* view_local_data_ptr */ - YYSYMBOL_view_first = 619, /* view_first */ - YYSYMBOL_rcstart = 620, /* rcstart */ - YYSYMBOL_contents_rc = 621, /* contents_rc */ - YYSYMBOL_content_rc = 622, /* content_rc */ - YYSYMBOL_rc_control_enable = 623, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 624, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 625, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 626, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 627, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 628, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 629, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 630, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 631, /* dtstart */ - YYSYMBOL_contents_dt = 632, /* contents_dt */ - YYSYMBOL_content_dt = 633, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 634, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 635, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 636, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 637, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 638, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 639, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 640, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 641, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 642, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 643, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 644, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 645, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 646, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 647, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 648, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 649, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 650, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 651, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 652, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 653, /* pythonstart */ - YYSYMBOL_contents_py = 654, /* contents_py */ - YYSYMBOL_content_py = 655, /* content_py */ - YYSYMBOL_py_script = 656, /* py_script */ - YYSYMBOL_dynlibstart = 657, /* dynlibstart */ - YYSYMBOL_contents_dl = 658, /* contents_dl */ - YYSYMBOL_content_dl = 659, /* content_dl */ - YYSYMBOL_dl_file = 660, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 661, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 662, /* server_log_identity */ - YYSYMBOL_server_response_ip = 663, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 664, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 665, /* dnscstart */ - YYSYMBOL_contents_dnsc = 666, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 667, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 668, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 669, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 670, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 671, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 672, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 673, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 674, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 675, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 676, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 677, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 678, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 679, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 680, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 681, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 682, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 683, /* redis_server_host */ - YYSYMBOL_redis_server_port = 684, /* redis_server_port */ - YYSYMBOL_redis_timeout = 685, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 686, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 687, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 688, /* ipsetstart */ - YYSYMBOL_contents_ipset = 689, /* contents_ipset */ - YYSYMBOL_content_ipset = 690, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 691, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 692 /* ipset_name_v6 */ + YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 334, /* VAR_STATISTICS_INHIBIT_ZERO */ + YYSYMBOL_YYACCEPT = 335, /* $accept */ + YYSYMBOL_toplevelvars = 336, /* toplevelvars */ + YYSYMBOL_toplevelvar = 337, /* toplevelvar */ + YYSYMBOL_force_toplevel = 338, /* force_toplevel */ + YYSYMBOL_serverstart = 339, /* serverstart */ + YYSYMBOL_contents_server = 340, /* contents_server */ + YYSYMBOL_content_server = 341, /* content_server */ + YYSYMBOL_stubstart = 342, /* stubstart */ + YYSYMBOL_contents_stub = 343, /* contents_stub */ + YYSYMBOL_content_stub = 344, /* content_stub */ + YYSYMBOL_forwardstart = 345, /* forwardstart */ + YYSYMBOL_contents_forward = 346, /* contents_forward */ + YYSYMBOL_content_forward = 347, /* content_forward */ + YYSYMBOL_viewstart = 348, /* viewstart */ + YYSYMBOL_contents_view = 349, /* contents_view */ + YYSYMBOL_content_view = 350, /* content_view */ + YYSYMBOL_authstart = 351, /* authstart */ + YYSYMBOL_contents_auth = 352, /* contents_auth */ + YYSYMBOL_content_auth = 353, /* content_auth */ + YYSYMBOL_rpz_tag = 354, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 355, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 356, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 357, /* rpz_log */ + YYSYMBOL_rpz_log_name = 358, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 359, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 360, /* rpzstart */ + YYSYMBOL_contents_rpz = 361, /* contents_rpz */ + YYSYMBOL_content_rpz = 362, /* content_rpz */ + YYSYMBOL_server_num_threads = 363, /* server_num_threads */ + YYSYMBOL_server_verbosity = 364, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 365, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 366, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 367, /* server_extended_statistics */ + YYSYMBOL_server_statistics_inhibit_zero = 368, /* server_statistics_inhibit_zero */ + YYSYMBOL_server_shm_enable = 369, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 370, /* server_shm_key */ + YYSYMBOL_server_port = 371, /* server_port */ + YYSYMBOL_server_send_client_subnet = 372, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 373, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 374, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 375, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 376, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 377, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 378, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 379, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 380, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 381, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 382, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 383, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 384, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 385, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 386, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 387, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 388, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 389, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 390, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 391, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 392, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 393, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 394, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 395, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 396, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 397, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 398, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 399, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 400, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 401, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 402, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 403, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 404, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 405, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 406, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 407, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 408, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 409, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 410, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 411, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 412, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 413, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 414, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 415, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 416, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 417, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 418, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 419, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 420, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 421, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 422, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 423, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 424, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 425, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 426, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 427, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 428, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 429, /* server_log_queries */ + YYSYMBOL_server_log_replies = 430, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 431, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 432, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 433, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 434, /* server_chroot */ + YYSYMBOL_server_username = 435, /* server_username */ + YYSYMBOL_server_directory = 436, /* server_directory */ + YYSYMBOL_server_logfile = 437, /* server_logfile */ + YYSYMBOL_server_pidfile = 438, /* server_pidfile */ + YYSYMBOL_server_root_hints = 439, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 440, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 441, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 442, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 443, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 444, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 445, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 446, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 447, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 448, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 449, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 450, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 451, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 452, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 453, /* server_identity */ + YYSYMBOL_server_version = 454, /* server_version */ + YYSYMBOL_server_http_user_agent = 455, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 456, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 457, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 458, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 459, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 460, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 461, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 462, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 463, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 464, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 465, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 466, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 467, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 468, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 469, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 470, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 471, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 472, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 473, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 474, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 475, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 476, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 477, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 478, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 479, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 480, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 481, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 482, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 483, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 484, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 485, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 486, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 487, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 488, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 489, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 490, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 491, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 492, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 493, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 494, /* server_private_address */ + YYSYMBOL_server_private_domain = 495, /* server_private_domain */ + YYSYMBOL_server_prefetch = 496, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 497, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 498, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 499, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 500, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 501, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 502, /* server_access_control */ + YYSYMBOL_server_interface_action = 503, /* server_interface_action */ + YYSYMBOL_server_module_conf = 504, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 505, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 506, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 507, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 508, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 509, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 510, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 511, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 512, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 513, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 514, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 515, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 516, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 517, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 518, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 519, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 520, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 521, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 522, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 523, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 524, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 525, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 526, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 527, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 528, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 529, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 530, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 531, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 532, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 533, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 534, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 535, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 536, /* server_local_zone */ + YYSYMBOL_server_local_data = 537, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 538, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 539, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 540, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 541, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 542, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 543, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 544, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 545, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 546, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 547, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 548, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 549, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 550, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 551, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 552, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 553, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 554, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 555, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 556, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 557, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 558, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 559, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 560, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 561, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 562, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 563, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 564, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 565, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 566, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 567, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 568, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 569, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 570, /* server_outbound_msg_retry */ + YYSYMBOL_server_low_rtt = 571, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 572, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 573, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 574, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 575, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 576, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 577, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 578, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 579, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 580, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 581, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 582, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 583, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 584, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 585, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 586, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 587, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 588, /* server_ede */ + YYSYMBOL_server_proxy_protocol_port = 589, /* server_proxy_protocol_port */ + YYSYMBOL_stub_name = 590, /* stub_name */ + YYSYMBOL_stub_host = 591, /* stub_host */ + YYSYMBOL_stub_addr = 592, /* stub_addr */ + YYSYMBOL_stub_first = 593, /* stub_first */ + YYSYMBOL_stub_no_cache = 594, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 595, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 596, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 597, /* stub_prime */ + YYSYMBOL_forward_name = 598, /* forward_name */ + YYSYMBOL_forward_host = 599, /* forward_host */ + YYSYMBOL_forward_addr = 600, /* forward_addr */ + YYSYMBOL_forward_first = 601, /* forward_first */ + YYSYMBOL_forward_no_cache = 602, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 603, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 604, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 605, /* auth_name */ + YYSYMBOL_auth_zonefile = 606, /* auth_zonefile */ + YYSYMBOL_auth_master = 607, /* auth_master */ + YYSYMBOL_auth_url = 608, /* auth_url */ + YYSYMBOL_auth_allow_notify = 609, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 610, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 611, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 612, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 613, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 614, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 615, /* view_name */ + YYSYMBOL_view_local_zone = 616, /* view_local_zone */ + YYSYMBOL_view_response_ip = 617, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 618, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 619, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 620, /* view_local_data_ptr */ + YYSYMBOL_view_first = 621, /* view_first */ + YYSYMBOL_rcstart = 622, /* rcstart */ + YYSYMBOL_contents_rc = 623, /* contents_rc */ + YYSYMBOL_content_rc = 624, /* content_rc */ + YYSYMBOL_rc_control_enable = 625, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 626, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 627, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 628, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 629, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 630, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 631, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 632, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 633, /* dtstart */ + YYSYMBOL_contents_dt = 634, /* contents_dt */ + YYSYMBOL_content_dt = 635, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 636, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 637, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 638, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 639, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 640, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 641, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 642, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 643, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 644, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 645, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 646, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 647, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 648, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 649, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 650, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 651, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 652, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 653, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 654, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 655, /* pythonstart */ + YYSYMBOL_contents_py = 656, /* contents_py */ + YYSYMBOL_content_py = 657, /* content_py */ + YYSYMBOL_py_script = 658, /* py_script */ + YYSYMBOL_dynlibstart = 659, /* dynlibstart */ + YYSYMBOL_contents_dl = 660, /* contents_dl */ + YYSYMBOL_content_dl = 661, /* content_dl */ + YYSYMBOL_dl_file = 662, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 663, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 664, /* server_log_identity */ + YYSYMBOL_server_response_ip = 665, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 666, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 667, /* dnscstart */ + YYSYMBOL_contents_dnsc = 668, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 669, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 670, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 671, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 672, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 673, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 674, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 675, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 676, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 677, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 678, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 679, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 680, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 681, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 682, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 683, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 684, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 685, /* redis_server_host */ + YYSYMBOL_redis_server_port = 686, /* redis_server_port */ + YYSYMBOL_redis_timeout = 687, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 688, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 689, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 690, /* ipsetstart */ + YYSYMBOL_contents_ipset = 691, /* contents_ipset */ + YYSYMBOL_content_ipset = 692, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 693, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 694 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1145,19 +1147,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 713 +#define YYLAST 715 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 334 +#define YYNTOKENS 335 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 359 +#define YYNNTS 360 /* YYNRULES -- Number of rules. */ -#define YYNRULES 695 +#define YYNRULES 697 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1040 +#define YYNSTATES 1043 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 588 +#define YYMAXUTOK 589 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1229,7 +1231,7 @@ static const yytype_int16 yytranslate[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333 + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334 }; #if YYDEBUG @@ -1261,51 +1263,51 @@ static const yytype_int16 yyrline[] = 310, 311, 311, 312, 312, 313, 313, 314, 314, 314, 315, 315, 315, 316, 316, 316, 317, 317, 318, 318, 319, 319, 320, 320, 321, 321, 322, 322, 323, 323, - 324, 324, 325, 327, 341, 342, 343, 343, 343, 343, - 343, 344, 344, 344, 346, 360, 361, 362, 362, 362, - 362, 363, 363, 363, 365, 381, 382, 383, 383, 383, - 383, 384, 384, 384, 386, 407, 408, 409, 409, 409, - 409, 410, 410, 410, 411, 411, 411, 414, 433, 450, - 458, 468, 475, 485, 504, 505, 506, 506, 506, 506, - 506, 507, 507, 507, 508, 508, 508, 508, 510, 519, - 528, 539, 548, 557, 566, 577, 586, 598, 612, 627, - 638, 655, 672, 689, 706, 721, 736, 749, 764, 773, - 782, 791, 800, 809, 818, 825, 834, 843, 852, 861, - 870, 879, 888, 897, 910, 921, 932, 943, 952, 965, - 974, 983, 992, 999, 1006, 1015, 1022, 1031, 1039, 1046, - 1053, 1061, 1070, 1078, 1094, 1102, 1110, 1118, 1126, 1134, - 1143, 1152, 1166, 1175, 1184, 1193, 1202, 1211, 1220, 1227, - 1234, 1260, 1268, 1275, 1282, 1289, 1296, 1304, 1312, 1320, - 1327, 1338, 1349, 1356, 1365, 1374, 1383, 1392, 1399, 1406, - 1413, 1429, 1437, 1445, 1455, 1465, 1475, 1489, 1497, 1510, - 1521, 1529, 1542, 1551, 1560, 1569, 1578, 1588, 1598, 1606, - 1619, 1628, 1636, 1645, 1653, 1666, 1675, 1684, 1694, 1701, - 1711, 1721, 1731, 1741, 1751, 1761, 1771, 1781, 1788, 1795, - 1802, 1811, 1820, 1829, 1838, 1845, 1855, 1863, 1872, 1879, - 1897, 1910, 1923, 1936, 1945, 1954, 1963, 1972, 1982, 1992, - 2003, 2012, 2021, 2030, 2039, 2048, 2057, 2066, 2075, 2088, - 2101, 2110, 2117, 2126, 2135, 2144, 2153, 2162, 2170, 2183, - 2191, 2246, 2253, 2268, 2278, 2288, 2295, 2302, 2309, 2318, - 2326, 2340, 2361, 2382, 2394, 2406, 2418, 2427, 2448, 2460, - 2472, 2481, 2502, 2511, 2520, 2528, 2536, 2549, 2562, 2577, - 2592, 2601, 2610, 2620, 2630, 2639, 2645, 2654, 2663, 2673, - 2683, 2693, 2702, 2712, 2721, 2734, 2747, 2759, 2773, 2785, - 2799, 2808, 2819, 2828, 2835, 2845, 2852, 2859, 2868, 2877, - 2887, 2897, 2907, 2917, 2924, 2931, 2940, 2949, 2959, 2969, - 2979, 2986, 2993, 3000, 3008, 3018, 3028, 3038, 3048, 3058, - 3068, 3124, 3134, 3142, 3150, 3165, 3174, 3180, 3181, 3182, - 3182, 3182, 3183, 3183, 3183, 3184, 3184, 3186, 3196, 3205, - 3212, 3219, 3226, 3233, 3240, 3247, 3253, 3254, 3255, 3255, - 3255, 3256, 3256, 3256, 3257, 3258, 3258, 3259, 3259, 3260, - 3260, 3261, 3262, 3263, 3264, 3265, 3266, 3268, 3277, 3287, - 3294, 3301, 3310, 3317, 3324, 3331, 3338, 3347, 3356, 3363, - 3370, 3380, 3390, 3400, 3410, 3420, 3430, 3436, 3437, 3438, - 3440, 3446, 3452, 3453, 3454, 3456, 3462, 3472, 3479, 3488, - 3496, 3502, 3503, 3505, 3505, 3505, 3506, 3506, 3507, 3508, - 3509, 3510, 3511, 3513, 3523, 3532, 3539, 3548, 3555, 3564, - 3572, 3585, 3593, 3606, 3612, 3613, 3614, 3614, 3615, 3615, - 3615, 3616, 3618, 3630, 3642, 3654, 3669, 3682, 3695, 3706, - 3712, 3713, 3714, 3714, 3716, 3731 + 324, 324, 325, 325, 327, 341, 342, 343, 343, 343, + 343, 343, 344, 344, 344, 346, 360, 361, 362, 362, + 362, 362, 363, 363, 363, 365, 381, 382, 383, 383, + 383, 383, 384, 384, 384, 386, 407, 408, 409, 409, + 409, 409, 410, 410, 410, 411, 411, 411, 414, 433, + 450, 458, 468, 475, 485, 504, 505, 506, 506, 506, + 506, 506, 507, 507, 507, 508, 508, 508, 508, 510, + 519, 528, 539, 548, 557, 566, 575, 586, 595, 607, + 621, 636, 647, 664, 681, 698, 715, 730, 745, 758, + 773, 782, 791, 800, 809, 818, 827, 834, 843, 852, + 861, 870, 879, 888, 897, 906, 919, 930, 941, 952, + 961, 974, 983, 992, 1001, 1008, 1015, 1024, 1031, 1040, + 1048, 1055, 1062, 1070, 1079, 1087, 1103, 1111, 1119, 1127, + 1135, 1143, 1152, 1161, 1175, 1184, 1193, 1202, 1211, 1220, + 1229, 1236, 1243, 1269, 1277, 1284, 1291, 1298, 1305, 1313, + 1321, 1329, 1336, 1347, 1358, 1365, 1374, 1383, 1392, 1401, + 1408, 1415, 1422, 1438, 1446, 1454, 1464, 1474, 1484, 1498, + 1506, 1519, 1530, 1538, 1551, 1560, 1569, 1578, 1587, 1597, + 1607, 1615, 1628, 1637, 1645, 1654, 1662, 1675, 1684, 1693, + 1703, 1710, 1720, 1730, 1740, 1750, 1760, 1770, 1780, 1790, + 1797, 1804, 1811, 1820, 1829, 1838, 1847, 1854, 1864, 1872, + 1881, 1888, 1906, 1919, 1932, 1945, 1954, 1963, 1972, 1981, + 1991, 2001, 2012, 2021, 2030, 2039, 2048, 2057, 2066, 2075, + 2084, 2097, 2110, 2119, 2126, 2135, 2144, 2153, 2162, 2171, + 2179, 2192, 2200, 2255, 2262, 2277, 2287, 2297, 2304, 2311, + 2318, 2327, 2335, 2349, 2370, 2391, 2403, 2415, 2427, 2436, + 2457, 2469, 2481, 2490, 2511, 2520, 2529, 2537, 2545, 2558, + 2571, 2586, 2601, 2610, 2619, 2629, 2639, 2648, 2654, 2663, + 2672, 2682, 2692, 2702, 2711, 2721, 2730, 2743, 2756, 2768, + 2782, 2794, 2808, 2817, 2828, 2837, 2844, 2854, 2861, 2868, + 2877, 2886, 2896, 2906, 2916, 2926, 2933, 2940, 2949, 2958, + 2968, 2978, 2988, 2995, 3002, 3009, 3017, 3027, 3037, 3047, + 3057, 3067, 3077, 3133, 3143, 3151, 3159, 3174, 3183, 3189, + 3190, 3191, 3191, 3191, 3192, 3192, 3192, 3193, 3193, 3195, + 3205, 3214, 3221, 3228, 3235, 3242, 3249, 3256, 3262, 3263, + 3264, 3264, 3264, 3265, 3265, 3265, 3266, 3267, 3267, 3268, + 3268, 3269, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3277, + 3286, 3296, 3303, 3310, 3319, 3326, 3333, 3340, 3347, 3356, + 3365, 3372, 3379, 3389, 3399, 3409, 3419, 3429, 3439, 3445, + 3446, 3447, 3449, 3455, 3461, 3462, 3463, 3465, 3471, 3481, + 3488, 3497, 3505, 3511, 3512, 3514, 3514, 3514, 3515, 3515, + 3516, 3517, 3518, 3519, 3520, 3522, 3532, 3541, 3548, 3557, + 3564, 3573, 3581, 3594, 3602, 3615, 3621, 3622, 3623, 3623, + 3624, 3624, 3624, 3625, 3627, 3639, 3651, 3663, 3678, 3691, + 3704, 3715, 3721, 3722, 3723, 3723, 3725, 3740 }; #endif @@ -1447,18 +1449,18 @@ static const char *const yytname[] = "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION", "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG", "VAR_INTERFACE_TAG_ACTION", - "VAR_INTERFACE_TAG_DATA", "VAR_PROXY_PROTOCOL_PORT", "$accept", - "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", - "contents_server", "content_server", "stubstart", "contents_stub", - "content_stub", "forwardstart", "contents_forward", "content_forward", - "viewstart", "contents_view", "content_view", "authstart", - "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", - "rpz_cname_override", "rpz_log", "rpz_log_name", + "VAR_INTERFACE_TAG_DATA", "VAR_PROXY_PROTOCOL_PORT", + "VAR_STATISTICS_INHIBIT_ZERO", "$accept", "toplevelvars", "toplevelvar", + "force_toplevel", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "viewstart", "contents_view", + "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", + "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "server_statistics_inhibit_zero", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "server_client_subnet_always_forward", "server_client_subnet_opcode", "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", @@ -1624,25 +1626,25 @@ static const yytype_int16 yypact[] = 162, 163, 164, 165, 208, 210, 230, 231, 234, 235, 237, 254, 255, 256, 257, 259, 260, 263, 264, 265, 268, 271, 274, 284, 285, 288, 289, 290, 291, 293, - 294, 295, 300, 302, 311, 316, 317, 318, 319, 320, - 321, 331, 332, 333, 335, 338, 339, 345, 347, 348, - 349, 351, 357, 363, 364, 365, 366, 367, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 490, 491, 492, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 506, - 507, 508, 509, 510, 511, 512, 513, 515, 516, 517, - 518, 519, 520, 521, 522, 524, 525, 526, 527, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 544, 545, 546, 548, 549, - 550, 552, 553, 554, 555, 556, -284, -284, -284, -284, + 294, 295, 300, 302, 316, 317, 318, 319, 320, 321, + 331, 332, 333, 335, 338, 339, 345, 347, 348, 349, + 351, 357, 363, 364, 365, 366, 367, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 469, 470, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 490, 491, 492, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 506, 507, + 508, 509, 510, 511, 512, 513, 515, 516, 517, 518, + 519, 520, 521, 522, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 548, 549, 550, + 552, 553, 554, 555, 556, 558, 559, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, @@ -1665,60 +1667,61 @@ static const yytype_int16 yypact[] = -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, 558, 559, - 560, 561, 562, 563, 564, 565, -284, -284, -284, -284, - -284, -284, -284, -284, -284, 566, 567, 568, 569, 570, - 571, 572, -284, -284, -284, -284, -284, -284, -284, -284, - 573, 574, 575, 576, 577, 578, 579, -284, -284, -284, - -284, -284, -284, -284, -284, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, 590, 591, 592, 593, - 594, 595, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, 596, 597, 598, 599, 600, - 601, 602, 603, -284, -284, -284, -284, -284, -284, -284, - -284, -284, 604, 605, 606, 607, 608, 609, 610, 611, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 560, 561, 562, 563, 564, 565, 566, 567, -284, -284, + -284, -284, -284, -284, -284, -284, -284, 568, 569, 570, + 571, 572, 573, 574, -284, -284, -284, -284, -284, -284, + -284, -284, 575, 576, 577, 578, 579, 580, 581, -284, + -284, -284, -284, -284, -284, -284, -284, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, 592, 593, + 594, 595, 596, 597, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, 598, 599, 600, + 601, 602, 603, 604, 605, -284, -284, -284, -284, -284, + -284, -284, -284, -284, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 622, 623, 624, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, 623, -284, -284, 624, -284, -284, 625, 626, 627, - 628, 629, 630, 631, 632, 633, 634, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, 635, 636, - 637, 638, 639, 640, -284, -284, -284, -284, -284, -284, - -284, 641, 642, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, 625, -284, -284, 626, -284, -284, 627, + 628, 629, 630, 631, 632, 633, 634, 635, 636, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 637, 638, 639, 640, 641, 642, -284, -284, -284, -284, + -284, -284, -284, 643, 644, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, 643, 644, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, 645, 646, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, 645, 646, 647, + -284, -284, -284, -284, -284, -284, -284, -284, -284, 647, + 648, 649, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, 650, 651, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, 648, 649, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, 650, 651, 652, 653, 654, 655, + -284, -284, -284, -284, -284, -284, 652, 653, 654, 655, + 656, 657, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, 658, -284, -284, + -284, -284, -284, -284, -284, -284, -284, 659, -284, -284, + -284, -284, -284, 660, 661, 662, 663, 664, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, 656, -284, -284, -284, -284, - -284, -284, -284, -284, -284, 657, -284, -284, -284, -284, - -284, 658, 659, 660, 661, 662, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, 663, -284, -284, 664, 665, -284, -284, + -284, -284, -284, -284, -284, -284, 665, -284, -284, 666, + 667, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, 666, 667, 668, -284, -284, -284, -284, -284, -284, - 669, 670, -284, -284, -284, -284, -284, -284, -284, -284 + -284, -284, -284, -284, 668, 669, 670, -284, -284, -284, + -284, -284, -284, 671, 672, -284, -284, -284, -284, -284, + -284, -284, -284 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1726,10 +1729,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 253, 264, 576, 636, 595, - 274, 650, 673, 284, 689, 303, 641, 3, 17, 21, - 255, 266, 276, 286, 305, 578, 597, 638, 643, 652, - 675, 691, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 254, 265, 578, 638, 597, + 275, 652, 675, 285, 691, 304, 643, 3, 17, 21, + 256, 267, 277, 287, 306, 580, 599, 640, 645, 654, + 677, 693, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1753,83 +1756,84 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 22, 23, 88, - 91, 100, 213, 214, 24, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 37, 79, 25, 92, 93, - 48, 72, 87, 250, 26, 27, 30, 31, 28, 29, - 32, 33, 34, 247, 248, 249, 35, 36, 124, 225, - 125, 127, 128, 129, 227, 232, 228, 239, 240, 241, - 242, 130, 131, 132, 133, 134, 135, 136, 209, 89, - 78, 104, 122, 123, 237, 234, 126, 38, 39, 40, - 41, 42, 80, 94, 95, 111, 66, 76, 67, 217, - 218, 105, 58, 59, 216, 62, 60, 61, 63, 245, - 115, 119, 140, 151, 181, 154, 238, 116, 73, 43, - 44, 45, 102, 141, 142, 143, 144, 46, 47, 49, - 50, 52, 53, 51, 148, 149, 155, 54, 55, 56, - 64, 83, 120, 97, 150, 90, 177, 98, 99, 117, - 118, 235, 103, 57, 81, 84, 190, 65, 68, 106, - 107, 108, 82, 178, 109, 69, 70, 71, 226, 121, - 200, 201, 202, 203, 204, 205, 206, 207, 215, 110, - 77, 246, 112, 113, 114, 179, 74, 75, 96, 85, - 86, 101, 137, 138, 236, 139, 145, 146, 147, 182, - 183, 185, 187, 188, 186, 189, 192, 193, 194, 191, - 210, 152, 153, 158, 159, 156, 157, 160, 161, 163, - 162, 165, 164, 166, 229, 231, 230, 180, 195, 196, - 197, 198, 199, 219, 221, 220, 222, 223, 224, 243, - 244, 251, 252, 184, 208, 211, 212, 233, 0, 0, - 0, 0, 0, 0, 0, 0, 254, 256, 257, 258, - 260, 261, 262, 263, 259, 0, 0, 0, 0, 0, - 0, 0, 265, 267, 268, 269, 270, 271, 272, 273, - 0, 0, 0, 0, 0, 0, 0, 275, 277, 278, - 281, 282, 279, 283, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 285, 287, 288, 289, 290, - 294, 295, 296, 291, 292, 293, 0, 0, 0, 0, - 0, 0, 308, 312, 313, 314, 315, 316, 304, 306, - 307, 309, 310, 311, 317, 0, 0, 0, 0, 0, - 0, 0, 0, 577, 579, 581, 580, 586, 582, 583, - 584, 585, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, + 88, 91, 100, 253, 213, 214, 24, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 37, 79, 25, + 92, 93, 48, 72, 87, 250, 26, 27, 30, 31, + 28, 29, 32, 33, 34, 247, 248, 249, 35, 36, + 124, 225, 125, 127, 128, 129, 227, 232, 228, 239, + 240, 241, 242, 130, 131, 132, 133, 134, 135, 136, + 209, 89, 78, 104, 122, 123, 237, 234, 126, 38, + 39, 40, 41, 42, 80, 94, 95, 111, 66, 76, + 67, 217, 218, 105, 58, 59, 216, 62, 60, 61, + 63, 245, 115, 119, 140, 151, 181, 154, 238, 116, + 73, 43, 44, 45, 102, 141, 142, 143, 144, 46, + 47, 49, 50, 52, 53, 51, 148, 149, 155, 54, + 55, 56, 64, 83, 120, 97, 150, 90, 177, 98, + 99, 117, 118, 235, 103, 57, 81, 84, 190, 65, + 68, 106, 107, 108, 82, 178, 109, 69, 70, 71, + 226, 121, 200, 201, 202, 203, 204, 205, 206, 207, + 215, 110, 77, 246, 112, 113, 114, 179, 74, 75, + 96, 85, 86, 101, 137, 138, 236, 139, 145, 146, + 147, 182, 183, 185, 187, 188, 186, 189, 192, 193, + 194, 191, 210, 152, 153, 158, 159, 156, 157, 160, + 161, 163, 162, 165, 164, 166, 229, 231, 230, 180, + 195, 196, 197, 198, 199, 219, 221, 220, 222, 223, + 224, 243, 244, 251, 252, 184, 208, 211, 212, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 257, + 258, 259, 261, 262, 263, 264, 260, 0, 0, 0, + 0, 0, 0, 0, 266, 268, 269, 270, 271, 272, + 273, 274, 0, 0, 0, 0, 0, 0, 0, 276, + 278, 279, 282, 283, 280, 284, 281, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 286, 288, 289, + 290, 291, 295, 296, 297, 292, 293, 294, 0, 0, + 0, 0, 0, 0, 309, 313, 314, 315, 316, 317, + 305, 307, 308, 310, 311, 312, 318, 0, 0, 0, + 0, 0, 0, 0, 0, 579, 581, 583, 582, 588, + 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 596, 598, 600, 599, 601, 602, 603, 604, 605, + 0, 0, 0, 598, 600, 602, 601, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 0, 637, 639, 0, 642, 644, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 651, 653, 654, - 655, 657, 658, 656, 659, 660, 661, 662, 0, 0, - 0, 0, 0, 0, 674, 676, 677, 678, 679, 680, - 681, 0, 0, 690, 692, 693, 319, 318, 325, 338, - 336, 349, 345, 346, 350, 347, 348, 351, 352, 353, - 357, 358, 388, 389, 390, 391, 392, 420, 421, 422, - 428, 429, 341, 430, 431, 434, 432, 433, 438, 439, - 440, 454, 403, 404, 407, 408, 441, 458, 397, 399, - 459, 466, 467, 468, 342, 419, 487, 488, 398, 481, - 381, 337, 393, 455, 463, 442, 0, 0, 491, 343, - 320, 380, 446, 321, 339, 340, 394, 395, 489, 444, - 448, 449, 355, 354, 322, 492, 423, 453, 382, 402, - 460, 461, 462, 465, 480, 396, 485, 483, 484, 411, - 418, 450, 451, 412, 413, 443, 470, 383, 384, 387, - 359, 361, 356, 362, 363, 364, 365, 372, 373, 374, - 375, 376, 377, 378, 493, 494, 496, 424, 425, 426, - 427, 435, 436, 437, 497, 498, 499, 0, 0, 0, - 445, 414, 416, 646, 512, 516, 514, 513, 517, 515, - 524, 0, 0, 520, 521, 522, 523, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 447, 464, 486, - 528, 529, 415, 500, 0, 0, 0, 0, 0, 0, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 647, - 405, 406, 409, 400, 469, 379, 323, 324, 401, 530, - 531, 532, 533, 534, 536, 535, 537, 538, 539, 360, - 367, 525, 527, 526, 366, 0, 386, 452, 495, 385, - 417, 368, 369, 371, 370, 0, 541, 410, 482, 344, - 542, 0, 0, 0, 0, 0, 543, 544, 545, 546, - 551, 549, 550, 547, 548, 552, 553, 554, 555, 557, - 558, 556, 569, 0, 573, 574, 0, 0, 575, 559, - 567, 560, 561, 562, 566, 568, 563, 564, 565, 297, - 298, 299, 300, 301, 302, 587, 589, 588, 591, 592, - 593, 594, 590, 617, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 618, 628, 629, 630, 631, 632, 633, - 634, 635, 640, 645, 663, 664, 665, 668, 666, 667, - 669, 670, 671, 672, 682, 683, 684, 685, 686, 687, - 694, 695, 456, 490, 511, 648, 649, 518, 519, 501, - 502, 0, 0, 0, 506, 688, 540, 457, 510, 507, - 0, 0, 570, 571, 572, 505, 503, 504, 508, 509 + 616, 617, 618, 0, 639, 641, 0, 644, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 653, + 655, 656, 657, 659, 660, 658, 661, 662, 663, 664, + 0, 0, 0, 0, 0, 0, 676, 678, 679, 680, + 681, 682, 683, 0, 0, 692, 694, 695, 320, 319, + 327, 340, 338, 351, 347, 348, 352, 349, 350, 353, + 354, 355, 359, 360, 390, 391, 392, 393, 394, 422, + 423, 424, 430, 431, 343, 432, 433, 436, 434, 435, + 440, 441, 442, 456, 405, 406, 409, 410, 443, 460, + 399, 401, 461, 468, 469, 470, 344, 421, 489, 490, + 400, 483, 383, 339, 395, 457, 465, 444, 0, 0, + 493, 345, 321, 382, 448, 322, 341, 342, 396, 397, + 491, 446, 450, 451, 357, 356, 323, 494, 425, 455, + 384, 404, 462, 463, 464, 467, 482, 398, 487, 485, + 486, 413, 420, 452, 453, 414, 415, 445, 472, 385, + 386, 389, 361, 363, 358, 364, 365, 366, 367, 374, + 375, 376, 377, 378, 379, 380, 495, 496, 498, 426, + 427, 428, 429, 437, 438, 439, 499, 500, 501, 0, + 0, 0, 447, 416, 418, 648, 514, 518, 516, 515, + 519, 517, 526, 0, 0, 522, 523, 524, 525, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 449, + 466, 488, 530, 531, 417, 502, 0, 0, 0, 0, + 0, 0, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 649, 407, 408, 411, 402, 471, 381, 325, 326, + 403, 532, 533, 534, 535, 536, 538, 537, 539, 540, + 541, 362, 369, 527, 529, 528, 368, 0, 388, 454, + 497, 387, 419, 370, 371, 373, 372, 0, 543, 412, + 484, 346, 544, 0, 0, 0, 0, 0, 545, 324, + 546, 547, 548, 553, 551, 552, 549, 550, 554, 555, + 556, 557, 559, 560, 558, 571, 0, 575, 576, 0, + 0, 577, 561, 569, 562, 563, 564, 568, 570, 565, + 566, 567, 298, 299, 300, 301, 302, 303, 589, 591, + 590, 593, 594, 595, 596, 592, 619, 621, 622, 623, + 624, 625, 626, 627, 628, 629, 620, 630, 631, 632, + 633, 634, 635, 636, 637, 642, 647, 665, 666, 667, + 670, 668, 669, 671, 672, 673, 674, 684, 685, 686, + 687, 688, 689, 696, 697, 458, 492, 513, 650, 651, + 520, 521, 503, 504, 0, 0, 0, 508, 690, 542, + 459, 512, 509, 0, 0, 572, 573, 574, 507, 505, + 506, 510, 511 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1861,8 +1865,8 @@ static const yytype_int16 yypgoto[] = -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, 671, - 672, 673, 674, 675, -284, -284, 676, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + 673, 674, 675, 676, 677, -284, -284, 678, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, @@ -1870,48 +1874,48 @@ static const yytype_int16 yypgoto[] = -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284 + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 276, 20, 33, 516, - 21, 34, 532, 22, 35, 547, 23, 36, 565, 582, - 583, 584, 585, 586, 587, 24, 37, 588, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 517, 518, 519, 520, 521, 522, - 523, 524, 533, 534, 535, 536, 537, 538, 539, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 548, - 549, 550, 551, 552, 553, 554, 25, 38, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 26, 39, 631, - 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, - 642, 643, 644, 645, 646, 647, 648, 649, 650, 27, - 40, 652, 653, 28, 41, 655, 656, 503, 504, 505, - 506, 29, 42, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 30, 43, 684, 685, 686, 687, - 688, 689, 690, 507, 31, 44, 693, 694, 695 + 0, 1, 17, 18, 19, 32, 277, 20, 33, 518, + 21, 34, 534, 22, 35, 549, 23, 36, 567, 584, + 585, 586, 587, 588, 589, 24, 37, 590, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 519, 520, 521, 522, 523, + 524, 525, 526, 535, 536, 537, 538, 539, 540, 541, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 550, 551, 552, 553, 554, 555, 556, 25, 38, 605, + 606, 607, 608, 609, 610, 611, 612, 613, 26, 39, + 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, + 27, 40, 654, 655, 28, 41, 657, 658, 505, 506, + 507, 508, 29, 42, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 30, 43, 686, 687, 688, + 689, 690, 691, 692, 509, 31, 44, 695, 696, 697 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1922,75 +1926,75 @@ static const yytype_int16 yytable[] = 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, 691, 692, 651, 654, 77, 78, 79, 696, - 697, 698, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 693, 694, 653, 656, 77, 78, 79, 698, + 699, 700, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 555, 678, 679, 680, 681, 682, 683, - 699, 700, 121, 122, 123, 124, 125, 540, 126, 127, - 128, 701, 702, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 557, 680, 681, 682, 683, 684, 685, + 701, 702, 121, 122, 123, 124, 125, 542, 126, 127, + 128, 703, 704, 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, 555, - 703, 704, 155, 541, 542, 156, 157, 158, 159, 160, - 161, 162, 705, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 706, 707, 708, 709, - 543, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 710, 711, 712, 713, 714, 176, 177, 178, 179, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 557, + 705, 706, 155, 543, 544, 156, 157, 158, 159, 160, + 161, 162, 707, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 708, 709, 710, 711, + 545, 659, 660, 661, 662, 663, 664, 665, 666, 667, + 668, 712, 713, 714, 715, 716, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 715, 218, - 716, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 210, 211, 212, 213, 214, 215, 216, 217, 717, 218, + 718, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 717, 718, 544, 545, 719, 720, 508, 721, 509, 510, + 719, 720, 546, 547, 721, 722, 510, 723, 511, 512, 2, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 3, 4, 525, 722, 723, 724, 725, 248, 726, - 727, 526, 527, 728, 729, 730, 249, 250, 731, 251, - 252, 732, 253, 254, 733, 546, 255, 256, 257, 258, - 259, 260, 261, 262, 734, 735, 5, 263, 736, 737, - 738, 739, 6, 740, 741, 742, 264, 265, 266, 267, - 743, 511, 744, 268, 269, 270, 271, 272, 273, 274, - 275, 745, 557, 558, 559, 560, 746, 747, 748, 749, - 750, 751, 562, 595, 596, 597, 598, 599, 600, 601, - 602, 752, 753, 754, 512, 755, 7, 513, 756, 757, - 576, 577, 578, 579, 580, 758, 514, 759, 760, 761, - 528, 762, 529, 581, 8, 530, 556, 763, 557, 558, - 559, 560, 561, 764, 765, 766, 767, 768, 562, 612, - 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 628, 629, 630, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 563, 564, 778, - 779, 780, 781, 782, 783, 784, 785, 786, 787, 9, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, - 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, - 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, - 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 10, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 863, 864, 865, 515, - 866, 867, 868, 11, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 531, 880, 881, 882, 883, - 884, 885, 886, 887, 12, 888, 889, 890, 891, 892, - 893, 894, 895, 13, 896, 897, 898, 899, 900, 901, - 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, - 912, 913, 914, 915, 916, 917, 918, 14, 919, 920, - 921, 15, 922, 923, 924, 925, 926, 16, 927, 928, - 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, - 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, - 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, - 1039, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 247, 3, 4, 527, 724, 725, 726, 727, 248, 728, + 729, 528, 529, 730, 731, 732, 249, 250, 733, 251, + 252, 734, 253, 254, 735, 548, 255, 256, 257, 258, + 259, 260, 261, 262, 736, 737, 5, 263, 738, 739, + 740, 741, 6, 742, 743, 744, 264, 265, 266, 267, + 745, 513, 746, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 559, 560, 561, 562, 747, 748, 749, 750, + 751, 752, 564, 597, 598, 599, 600, 601, 602, 603, + 604, 753, 754, 755, 514, 756, 7, 515, 757, 758, + 578, 579, 580, 581, 582, 759, 516, 760, 761, 762, + 530, 763, 531, 583, 8, 532, 558, 764, 559, 560, + 561, 562, 563, 765, 766, 767, 768, 769, 564, 614, + 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 770, 771, + 772, 773, 774, 775, 776, 777, 778, 565, 566, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 9, + 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, + 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, + 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, + 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, + 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, + 849, 10, 850, 851, 852, 853, 854, 855, 856, 857, + 858, 859, 860, 861, 862, 863, 864, 865, 866, 517, + 867, 868, 869, 11, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 533, 881, 882, 883, 884, + 885, 886, 887, 888, 12, 889, 890, 891, 892, 893, + 894, 895, 896, 13, 897, 898, 899, 900, 901, 902, + 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, + 913, 914, 915, 916, 917, 918, 919, 14, 920, 921, + 922, 15, 923, 924, 925, 926, 927, 16, 928, 929, + 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, + 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, + 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, + 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 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, 589, 590, - 591, 592, 593, 594 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 591, 592, 593, 594, 595, 596 }; static const yytype_int16 yycheck[] = @@ -2027,7 +2031,7 @@ static const yytype_int16 yycheck[] = 303, 304, 305, 306, 10, 10, 46, 310, 10, 10, 10, 10, 52, 10, 10, 10, 319, 320, 321, 322, 10, 110, 10, 326, 327, 328, 329, 330, 331, 332, - 333, 10, 284, 285, 286, 287, 10, 10, 10, 10, + 333, 334, 284, 285, 286, 287, 10, 10, 10, 10, 10, 10, 294, 97, 98, 99, 100, 101, 102, 103, 104, 10, 10, 10, 143, 10, 96, 146, 10, 10, 312, 313, 314, 315, 316, 10, 155, 10, 10, 10, @@ -2063,21 +2067,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, 37, - 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 37, 37, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 335, 0, 11, 12, 46, 52, 96, 114, 169, - 231, 253, 274, 283, 307, 311, 317, 336, 337, 338, - 341, 344, 347, 350, 359, 620, 631, 653, 657, 665, - 678, 688, 339, 342, 345, 348, 351, 360, 621, 632, - 654, 658, 666, 679, 689, 13, 14, 15, 16, 17, + 0, 336, 0, 11, 12, 46, 52, 96, 114, 169, + 231, 253, 274, 283, 307, 311, 317, 337, 338, 339, + 342, 345, 348, 351, 360, 622, 633, 655, 659, 667, + 680, 690, 340, 343, 346, 349, 352, 361, 623, 634, + 656, 660, 668, 681, 691, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2100,7 +2104,7 @@ static const yytype_int16 yystos[] = 266, 267, 268, 269, 270, 271, 272, 273, 281, 289, 290, 292, 293, 295, 296, 299, 300, 301, 302, 303, 304, 305, 306, 310, 319, 320, 321, 322, 326, 327, - 328, 329, 330, 331, 332, 333, 340, 362, 363, 364, + 328, 329, 330, 331, 332, 333, 334, 341, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, @@ -2123,26 +2127,26 @@ static const yytype_int16 yystos[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 661, 662, 663, 664, 687, 45, 47, - 48, 110, 143, 146, 155, 298, 343, 588, 589, 590, - 591, 592, 593, 594, 595, 45, 53, 54, 142, 144, - 147, 297, 346, 596, 597, 598, 599, 600, 601, 602, - 45, 81, 82, 108, 190, 191, 233, 349, 613, 614, - 615, 616, 617, 618, 619, 45, 282, 284, 285, 286, - 287, 288, 294, 323, 324, 352, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 312, 313, 314, 315, - 316, 325, 353, 354, 355, 356, 357, 358, 361, 603, - 604, 605, 606, 607, 610, 97, 98, 99, 100, 101, - 102, 103, 104, 622, 623, 624, 625, 626, 627, 628, - 629, 630, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 585, 586, 587, 588, 589, 663, 664, 665, 666, 689, + 45, 47, 48, 110, 143, 146, 155, 298, 344, 590, + 591, 592, 593, 594, 595, 596, 597, 45, 53, 54, + 142, 144, 147, 297, 347, 598, 599, 600, 601, 602, + 603, 604, 45, 81, 82, 108, 190, 191, 233, 350, + 615, 616, 617, 618, 619, 620, 621, 45, 282, 284, + 285, 286, 287, 288, 294, 323, 324, 353, 605, 606, + 607, 608, 609, 610, 611, 612, 613, 614, 312, 313, + 314, 315, 316, 325, 354, 355, 356, 357, 358, 359, + 362, 605, 606, 607, 608, 609, 612, 97, 98, 99, + 100, 101, 102, 103, 104, 624, 625, 626, 627, 628, + 629, 630, 631, 632, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 115, 655, 656, 318, 659, 660, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 275, 276, - 277, 278, 279, 280, 680, 681, 682, 683, 684, 685, - 686, 308, 309, 690, 691, 692, 10, 10, 10, 10, + 652, 653, 654, 115, 657, 658, 318, 661, 662, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 275, 276, 277, 278, 279, 280, 682, 683, 684, 685, + 686, 687, 688, 308, 309, 692, 693, 694, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2176,44 +2180,45 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 334, 335, 335, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 337, 338, - 339, 339, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 341, 342, 342, 343, 343, 343, 343, - 343, 343, 343, 343, 344, 345, 345, 346, 346, 346, - 346, 346, 346, 346, 347, 348, 348, 349, 349, 349, - 349, 349, 349, 349, 350, 351, 351, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 360, 361, 361, 361, 361, - 361, 361, 361, 361, 361, 361, 361, 361, 362, 363, + 0, 335, 336, 336, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 337, 337, 337, 337, 338, 339, + 340, 340, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 342, 343, 343, 344, 344, 344, + 344, 344, 344, 344, 344, 345, 346, 346, 347, 347, + 347, 347, 347, 347, 347, 348, 349, 349, 350, 350, + 350, 350, 350, 350, 350, 351, 352, 352, 353, 353, + 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 361, 362, 362, 362, + 362, 362, 362, 362, 362, 362, 362, 362, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, @@ -2239,19 +2244,19 @@ static const yytype_int16 yyr1[] = 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 621, 622, - 622, 622, 622, 622, 622, 622, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 632, 633, 633, - 633, 633, 633, 633, 633, 633, 633, 633, 633, 633, - 633, 633, 633, 633, 633, 633, 633, 634, 635, 636, + 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, + 623, 624, 624, 624, 624, 624, 624, 624, 624, 625, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 634, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 654, 655, - 656, 657, 658, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 666, 667, 667, 667, 667, 667, 667, 667, - 667, 667, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 679, 680, 680, 680, 680, - 680, 680, 681, 682, 683, 684, 685, 686, 687, 688, - 689, 689, 690, 690, 691, 692 + 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, + 656, 657, 658, 659, 660, 660, 661, 662, 663, 664, + 665, 666, 667, 668, 668, 669, 669, 669, 669, 669, + 669, 669, 669, 669, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 681, 682, 682, + 682, 682, 682, 682, 683, 684, 685, 686, 687, 688, + 689, 690, 691, 691, 692, 692, 693, 694 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -2282,13 +2287,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2302,31 +2307,31 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 3, 4, 4, 4, 3, 3, 4, 4, - 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, + 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, + 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 1, 2, 0, 1, 2, 2, 2, 3, 3, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 3, 1, - 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 2, 1, 2, 0, 1, 2, 2, 2, + 3, 3, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2795,7 +2800,7 @@ yyreduce: OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2799 "util/configparser.c" +#line 2804 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ @@ -2804,10 +2809,10 @@ yyreduce: OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2808 "util/configparser.c" +#line 2813 "util/configparser.c" break; - case 253: /* stubstart: VAR_STUB_ZONE */ + case 254: /* stubstart: VAR_STUB_ZONE */ #line 328 "./util/configparser.y" { struct config_stub* s; @@ -2821,10 +2826,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2825 "util/configparser.c" +#line 2830 "util/configparser.c" break; - case 264: /* forwardstart: VAR_FORWARD_ZONE */ + case 265: /* forwardstart: VAR_FORWARD_ZONE */ #line 347 "./util/configparser.y" { struct config_stub* s; @@ -2838,10 +2843,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2842 "util/configparser.c" +#line 2847 "util/configparser.c" break; - case 274: /* viewstart: VAR_VIEW */ + case 275: /* viewstart: VAR_VIEW */ #line 366 "./util/configparser.y" { struct config_view* s; @@ -2857,10 +2862,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2861 "util/configparser.c" +#line 2866 "util/configparser.c" break; - case 284: /* authstart: VAR_AUTH_ZONE */ + case 285: /* authstart: VAR_AUTH_ZONE */ #line 387 "./util/configparser.y" { struct config_auth* s; @@ -2881,10 +2886,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2885 "util/configparser.c" +#line 2890 "util/configparser.c" break; - case 297: /* rpz_tag: VAR_TAGS STRING_ARG */ + case 298: /* rpz_tag: VAR_TAGS STRING_ARG */ #line 415 "./util/configparser.y" { uint8_t* bitlist; @@ -2902,10 +2907,10 @@ yyreduce: } } -#line 2906 "util/configparser.c" +#line 2911 "util/configparser.c" break; - case 298: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ + case 299: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ #line 434 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2921,20 +2926,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2925 "util/configparser.c" +#line 2930 "util/configparser.c" break; - case 299: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ + case 300: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ #line 451 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2935 "util/configparser.c" +#line 2940 "util/configparser.c" break; - case 300: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ + case 301: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ #line 459 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2943,20 +2948,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2947 "util/configparser.c" +#line 2952 "util/configparser.c" break; - case 301: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ + case 302: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ #line 469 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2957 "util/configparser.c" +#line 2962 "util/configparser.c" break; - case 302: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ + case 303: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ #line 476 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); @@ -2965,10 +2970,10 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2969 "util/configparser.c" +#line 2974 "util/configparser.c" break; - case 303: /* rpzstart: VAR_RPZ */ + case 304: /* rpzstart: VAR_RPZ */ #line 486 "./util/configparser.y" { struct config_auth* s; @@ -2987,10 +2992,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2991 "util/configparser.c" +#line 2996 "util/configparser.c" break; - case 318: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ + case 319: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ #line 511 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -2999,10 +3004,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3003 "util/configparser.c" +#line 3008 "util/configparser.c" break; - case 319: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ + case 320: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ #line 520 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -3011,10 +3016,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3015 "util/configparser.c" +#line 3020 "util/configparser.c" break; - case 320: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ + case 321: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ #line 529 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -3025,10 +3030,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3029 "util/configparser.c" +#line 3034 "util/configparser.c" break; - case 321: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ + case 322: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ #line 540 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3037,10 +3042,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3041 "util/configparser.c" +#line 3046 "util/configparser.c" break; - case 322: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ + case 323: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ #line 549 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3049,11 +3054,23 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3053 "util/configparser.c" +#line 3058 "util/configparser.c" break; - case 323: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ + case 324: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ #line 558 "./util/configparser.y" + { + OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3070 "util/configparser.c" + break; + + case 325: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 567 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3061,11 +3078,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3065 "util/configparser.c" +#line 3082 "util/configparser.c" break; - case 324: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 567 "./util/configparser.y" + case 326: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 576 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3075,11 +3092,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3079 "util/configparser.c" +#line 3096 "util/configparser.c" break; - case 325: /* server_port: VAR_PORT STRING_ARG */ -#line 578 "./util/configparser.y" + case 327: /* server_port: VAR_PORT STRING_ARG */ +#line 587 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3087,11 +3104,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3091 "util/configparser.c" +#line 3108 "util/configparser.c" break; - case 326: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 587 "./util/configparser.y" + case 328: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 596 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3102,11 +3119,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3106 "util/configparser.c" +#line 3123 "util/configparser.c" break; - case 327: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 599 "./util/configparser.y" + case 329: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 608 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3118,11 +3135,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3122 "util/configparser.c" +#line 3139 "util/configparser.c" break; - case 328: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 613 "./util/configparser.y" + case 330: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3136,11 +3153,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3140 "util/configparser.c" +#line 3157 "util/configparser.c" break; - case 329: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 628 "./util/configparser.y" + case 331: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 637 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3150,11 +3167,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3154 "util/configparser.c" +#line 3171 "util/configparser.c" break; - case 330: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 639 "./util/configparser.y" + case 332: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 648 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3170,11 +3187,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3174 "util/configparser.c" +#line 3191 "util/configparser.c" break; - case 331: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 656 "./util/configparser.y" + case 333: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 665 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3190,11 +3207,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3194 "util/configparser.c" +#line 3211 "util/configparser.c" break; - case 332: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 673 "./util/configparser.y" + case 334: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 682 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3210,11 +3227,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3231 "util/configparser.c" break; - case 333: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 690 "./util/configparser.y" + case 335: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 699 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3230,11 +3247,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" +#line 3251 "util/configparser.c" break; - case 334: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 707 "./util/configparser.y" + case 336: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 716 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3248,11 +3265,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3252 "util/configparser.c" +#line 3269 "util/configparser.c" break; - case 335: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 722 "./util/configparser.y" + case 337: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 731 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3266,11 +3283,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3270 "util/configparser.c" +#line 3287 "util/configparser.c" break; - case 336: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 737 "./util/configparser.y" + case 338: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 746 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3282,11 +3299,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3286 "util/configparser.c" +#line 3303 "util/configparser.c" break; - case 337: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 750 "./util/configparser.y" + case 339: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 759 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3300,11 +3317,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3304 "util/configparser.c" +#line 3321 "util/configparser.c" break; - case 338: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 765 "./util/configparser.y" + case 340: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 774 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3312,11 +3329,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3316 "util/configparser.c" +#line 3333 "util/configparser.c" break; - case 339: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 774 "./util/configparser.y" + case 341: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 783 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3324,11 +3341,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3328 "util/configparser.c" +#line 3345 "util/configparser.c" break; - case 340: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 783 "./util/configparser.y" + case 342: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 792 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3336,11 +3353,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3340 "util/configparser.c" +#line 3357 "util/configparser.c" break; - case 341: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 792 "./util/configparser.y" + case 343: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 801 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3348,11 +3365,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3352 "util/configparser.c" +#line 3369 "util/configparser.c" break; - case 342: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 801 "./util/configparser.y" + case 344: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 810 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3360,11 +3377,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3364 "util/configparser.c" +#line 3381 "util/configparser.c" break; - case 343: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 810 "./util/configparser.y" + case 345: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 819 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3372,21 +3389,21 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3376 "util/configparser.c" +#line 3393 "util/configparser.c" break; - case 344: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ -#line 819 "./util/configparser.y" + case 346: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ +#line 828 "./util/configparser.y" { OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3386 "util/configparser.c" +#line 3403 "util/configparser.c" break; - case 345: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 826 "./util/configparser.y" + case 347: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 835 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3394,11 +3411,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3398 "util/configparser.c" +#line 3415 "util/configparser.c" break; - case 346: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 835 "./util/configparser.y" + case 348: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 844 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3406,11 +3423,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3410 "util/configparser.c" +#line 3427 "util/configparser.c" break; - case 347: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 844 "./util/configparser.y" + case 349: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 853 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3418,11 +3435,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3422 "util/configparser.c" +#line 3439 "util/configparser.c" break; - case 348: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 853 "./util/configparser.y" + case 350: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 862 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3430,11 +3447,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3434 "util/configparser.c" +#line 3451 "util/configparser.c" break; - case 349: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 862 "./util/configparser.y" + case 351: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 871 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3442,11 +3459,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3446 "util/configparser.c" +#line 3463 "util/configparser.c" break; - case 350: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 871 "./util/configparser.y" + case 352: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 880 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3454,11 +3471,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3458 "util/configparser.c" +#line 3475 "util/configparser.c" break; - case 351: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 880 "./util/configparser.y" + case 353: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 889 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3466,11 +3483,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 3487 "util/configparser.c" break; - case 352: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 889 "./util/configparser.y" + case 354: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 898 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3478,11 +3495,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3482 "util/configparser.c" +#line 3499 "util/configparser.c" break; - case 353: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 898 "./util/configparser.y" + case 355: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 907 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3494,11 +3511,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3498 "util/configparser.c" +#line 3515 "util/configparser.c" break; - case 354: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 911 "./util/configparser.y" + case 356: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 920 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3508,11 +3525,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3512 "util/configparser.c" +#line 3529 "util/configparser.c" break; - case 355: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 922 "./util/configparser.y" + case 357: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 931 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3522,11 +3539,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3526 "util/configparser.c" +#line 3543 "util/configparser.c" break; - case 356: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 933 "./util/configparser.y" + case 358: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 942 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3536,11 +3553,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3540 "util/configparser.c" +#line 3557 "util/configparser.c" break; - case 357: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 944 "./util/configparser.y" + case 359: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 953 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3548,11 +3565,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3552 "util/configparser.c" +#line 3569 "util/configparser.c" break; - case 358: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 953 "./util/configparser.y" + case 360: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 962 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3564,11 +3581,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3568 "util/configparser.c" +#line 3585 "util/configparser.c" break; - case 359: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 966 "./util/configparser.y" + case 361: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 975 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3576,11 +3593,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3580 "util/configparser.c" +#line 3597 "util/configparser.c" break; - case 360: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 975 "./util/configparser.y" + case 362: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 984 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3588,11 +3605,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3592 "util/configparser.c" +#line 3609 "util/configparser.c" break; - case 361: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 984 "./util/configparser.y" + case 363: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 993 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3600,31 +3617,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3604 "util/configparser.c" +#line 3621 "util/configparser.c" break; - case 362: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 993 "./util/configparser.y" + case 364: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 1002 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3614 "util/configparser.c" +#line 3631 "util/configparser.c" break; - case 363: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 1000 "./util/configparser.y" + case 365: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 1009 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3624 "util/configparser.c" +#line 3641 "util/configparser.c" break; - case 364: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 1007 "./util/configparser.y" + case 366: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 1016 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3632,21 +3649,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3636 "util/configparser.c" +#line 3653 "util/configparser.c" break; - case 365: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 1016 "./util/configparser.y" + case 367: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 1025 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3646 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 366: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1023 "./util/configparser.y" + case 368: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 1032 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3654,53 +3671,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3658 "util/configparser.c" +#line 3675 "util/configparser.c" break; - case 367: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1032 "./util/configparser.y" + case 369: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 1041 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3669 "util/configparser.c" +#line 3686 "util/configparser.c" break; - case 368: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1040 "./util/configparser.y" + case 370: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 1049 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3679 "util/configparser.c" +#line 3696 "util/configparser.c" break; - case 369: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1047 "./util/configparser.y" + case 371: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1056 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3689 "util/configparser.c" +#line 3706 "util/configparser.c" break; - case 370: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1054 "./util/configparser.y" + case 372: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1063 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3700 "util/configparser.c" +#line 3717 "util/configparser.c" break; - case 371: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1062 "./util/configparser.y" + case 373: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1071 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3708,11 +3725,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3712 "util/configparser.c" +#line 3729 "util/configparser.c" break; - case 372: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1071 "./util/configparser.y" + case 374: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1080 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3720,11 +3737,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3724 "util/configparser.c" +#line 3741 "util/configparser.c" break; - case 373: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1079 "./util/configparser.y" + case 375: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1088 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3740,11 +3757,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3744 "util/configparser.c" +#line 3761 "util/configparser.c" break; - case 374: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1095 "./util/configparser.y" + case 376: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1104 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3752,11 +3769,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3756 "util/configparser.c" +#line 3773 "util/configparser.c" break; - case 375: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1103 "./util/configparser.y" + case 377: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1112 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3764,11 +3781,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3768 "util/configparser.c" +#line 3785 "util/configparser.c" break; - case 376: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1111 "./util/configparser.y" + case 378: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1120 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3776,11 +3793,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3780 "util/configparser.c" +#line 3797 "util/configparser.c" break; - case 377: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1119 "./util/configparser.y" + case 379: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1128 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3788,11 +3805,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3792 "util/configparser.c" +#line 3809 "util/configparser.c" break; - case 378: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1127 "./util/configparser.y" + case 380: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1136 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3800,11 +3817,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3804 "util/configparser.c" +#line 3821 "util/configparser.c" break; - case 379: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1135 "./util/configparser.y" + case 381: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1144 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3812,11 +3829,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3833 "util/configparser.c" break; - case 380: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1144 "./util/configparser.y" + case 382: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1153 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3824,11 +3841,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3828 "util/configparser.c" +#line 3845 "util/configparser.c" break; - case 381: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1153 "./util/configparser.y" + case 383: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1162 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3841,11 +3858,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3845 "util/configparser.c" +#line 3862 "util/configparser.c" break; - case 382: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1167 "./util/configparser.y" + case 384: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1176 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3853,11 +3870,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3857 "util/configparser.c" +#line 3874 "util/configparser.c" break; - case 383: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1176 "./util/configparser.y" + case 385: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1185 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3865,11 +3882,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3869 "util/configparser.c" +#line 3886 "util/configparser.c" break; - case 384: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1185 "./util/configparser.y" + case 386: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1194 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3877,11 +3894,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3881 "util/configparser.c" +#line 3898 "util/configparser.c" break; - case 385: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1194 "./util/configparser.y" + case 387: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1203 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3889,11 +3906,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3893 "util/configparser.c" +#line 3910 "util/configparser.c" break; - case 386: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1203 "./util/configparser.y" + case 388: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1212 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3901,11 +3918,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3905 "util/configparser.c" +#line 3922 "util/configparser.c" break; - case 387: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1212 "./util/configparser.y" + case 389: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1221 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3913,31 +3930,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3917 "util/configparser.c" +#line 3934 "util/configparser.c" break; - case 388: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1221 "./util/configparser.y" + case 390: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1230 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3927 "util/configparser.c" +#line 3944 "util/configparser.c" break; - case 389: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1228 "./util/configparser.y" + case 391: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1237 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3937 "util/configparser.c" +#line 3954 "util/configparser.c" break; - case 390: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1235 "./util/configparser.y" + case 392: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1244 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3962,105 +3979,105 @@ yyreduce: } } } -#line 3966 "util/configparser.c" +#line 3983 "util/configparser.c" break; - case 391: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1261 "./util/configparser.y" + case 393: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1270 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3977 "util/configparser.c" +#line 3994 "util/configparser.c" break; - case 392: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1269 "./util/configparser.y" + case 394: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1278 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3987 "util/configparser.c" +#line 4004 "util/configparser.c" break; - case 393: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1276 "./util/configparser.y" + case 395: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1285 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3997 "util/configparser.c" +#line 4014 "util/configparser.c" break; - case 394: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1283 "./util/configparser.y" + case 396: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1292 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4007 "util/configparser.c" +#line 4024 "util/configparser.c" break; - case 395: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1290 "./util/configparser.y" + case 397: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1299 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4017 "util/configparser.c" +#line 4034 "util/configparser.c" break; - case 396: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1297 "./util/configparser.y" + case 398: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1306 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4028 "util/configparser.c" +#line 4045 "util/configparser.c" break; - case 397: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1305 "./util/configparser.y" + case 399: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1314 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4039 "util/configparser.c" +#line 4056 "util/configparser.c" break; - case 398: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1313 "./util/configparser.y" + case 400: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1322 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4050 "util/configparser.c" +#line 4067 "util/configparser.c" break; - case 399: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1321 "./util/configparser.y" + case 401: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1330 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4060 "util/configparser.c" +#line 4077 "util/configparser.c" break; - case 400: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1328 "./util/configparser.y" + case 402: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1337 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4070,11 +4087,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4074 "util/configparser.c" +#line 4091 "util/configparser.c" break; - case 401: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1339 "./util/configparser.y" + case 403: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1348 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4084,21 +4101,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4088 "util/configparser.c" +#line 4105 "util/configparser.c" break; - case 402: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1350 "./util/configparser.y" + case 404: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1359 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4098 "util/configparser.c" +#line 4115 "util/configparser.c" break; - case 403: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1357 "./util/configparser.y" + case 405: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1366 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4106,11 +4123,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4110 "util/configparser.c" +#line 4127 "util/configparser.c" break; - case 404: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1366 "./util/configparser.y" + case 406: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1375 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4118,11 +4135,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4122 "util/configparser.c" +#line 4139 "util/configparser.c" break; - case 405: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1375 "./util/configparser.y" + case 407: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1384 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4130,11 +4147,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4151 "util/configparser.c" break; - case 406: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1384 "./util/configparser.y" + case 408: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1393 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4142,41 +4159,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4146 "util/configparser.c" +#line 4163 "util/configparser.c" break; - case 407: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1393 "./util/configparser.y" + case 409: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1402 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4156 "util/configparser.c" +#line 4173 "util/configparser.c" break; - case 408: /* server_version: VAR_VERSION STRING_ARG */ -#line 1400 "./util/configparser.y" + case 410: /* server_version: VAR_VERSION STRING_ARG */ +#line 1409 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4166 "util/configparser.c" +#line 4183 "util/configparser.c" break; - case 409: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1407 "./util/configparser.y" + case 411: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1416 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4176 "util/configparser.c" +#line 4193 "util/configparser.c" break; - case 410: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1414 "./util/configparser.y" + case 412: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1423 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4191,33 +4208,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4195 "util/configparser.c" +#line 4212 "util/configparser.c" break; - case 411: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1430 "./util/configparser.y" + case 413: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1439 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4206 "util/configparser.c" +#line 4223 "util/configparser.c" break; - case 412: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1438 "./util/configparser.y" + case 414: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1447 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4217 "util/configparser.c" +#line 4234 "util/configparser.c" break; - case 413: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1446 "./util/configparser.y" + case 415: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1455 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4226,11 +4243,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4230 "util/configparser.c" +#line 4247 "util/configparser.c" break; - case 414: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1456 "./util/configparser.y" + case 416: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1465 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4239,11 +4256,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4243 "util/configparser.c" +#line 4260 "util/configparser.c" break; - case 415: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1466 "./util/configparser.y" + case 417: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1475 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4252,11 +4269,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4256 "util/configparser.c" +#line 4273 "util/configparser.c" break; - case 416: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1476 "./util/configparser.y" + case 418: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1485 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4269,22 +4286,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4273 "util/configparser.c" +#line 4290 "util/configparser.c" break; - case 417: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1490 "./util/configparser.y" + case 419: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1499 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4284 "util/configparser.c" +#line 4301 "util/configparser.c" break; - case 418: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1498 "./util/configparser.y" + case 420: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1507 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4296,11 +4313,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4300 "util/configparser.c" +#line 4317 "util/configparser.c" break; - case 419: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1511 "./util/configparser.y" + case 421: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1520 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4310,22 +4327,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4314 "util/configparser.c" +#line 4331 "util/configparser.c" break; - case 420: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1522 "./util/configparser.y" + case 422: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1531 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4325 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 421: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1530 "./util/configparser.y" + case 423: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1539 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4337,11 +4354,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4341 "util/configparser.c" +#line 4358 "util/configparser.c" break; - case 422: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1543 "./util/configparser.y" + case 424: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1552 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4349,11 +4366,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4353 "util/configparser.c" +#line 4370 "util/configparser.c" break; - case 423: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1552 "./util/configparser.y" + case 425: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1561 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4361,11 +4378,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4365 "util/configparser.c" +#line 4382 "util/configparser.c" break; - case 424: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1561 "./util/configparser.y" + case 426: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1570 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4373,11 +4390,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4377 "util/configparser.c" +#line 4394 "util/configparser.c" break; - case 425: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1570 "./util/configparser.y" + case 427: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1579 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4385,11 +4402,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4389 "util/configparser.c" +#line 4406 "util/configparser.c" break; - case 426: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1579 "./util/configparser.y" + case 428: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1588 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4398,11 +4415,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" +#line 4419 "util/configparser.c" break; - case 427: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1589 "./util/configparser.y" + case 429: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1598 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4411,22 +4428,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4415 "util/configparser.c" +#line 4432 "util/configparser.c" break; - case 428: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1599 "./util/configparser.y" + case 430: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1608 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4426 "util/configparser.c" +#line 4443 "util/configparser.c" break; - case 429: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1607 "./util/configparser.y" + case 431: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1616 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4438,11 +4455,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4442 "util/configparser.c" +#line 4459 "util/configparser.c" break; - case 430: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1620 "./util/configparser.y" + case 432: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1629 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4450,22 +4467,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4454 "util/configparser.c" +#line 4471 "util/configparser.c" break; - case 431: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1629 "./util/configparser.y" + case 433: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1638 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4465 "util/configparser.c" +#line 4482 "util/configparser.c" break; - case 432: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1637 "./util/configparser.y" + case 434: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1646 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4473,22 +4490,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4477 "util/configparser.c" +#line 4494 "util/configparser.c" break; - case 433: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1646 "./util/configparser.y" + case 435: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1655 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4488 "util/configparser.c" +#line 4505 "util/configparser.c" break; - case 434: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1654 "./util/configparser.y" + case 436: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1663 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4500,11 +4517,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4521 "util/configparser.c" break; - case 435: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1667 "./util/configparser.y" + case 437: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1676 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4512,11 +4529,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4533 "util/configparser.c" break; - case 436: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ -#line 1676 "./util/configparser.y" + case 438: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ +#line 1685 "./util/configparser.y" { OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4524,11 +4541,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4528 "util/configparser.c" +#line 4545 "util/configparser.c" break; - case 437: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1685 "./util/configparser.y" + case 439: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1694 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4537,21 +4554,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4541 "util/configparser.c" +#line 4558 "util/configparser.c" break; - case 438: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1695 "./util/configparser.y" + case 440: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1704 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4551 "util/configparser.c" +#line 4568 "util/configparser.c" break; - case 439: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1702 "./util/configparser.y" + case 441: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1711 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4560,11 +4577,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4564 "util/configparser.c" +#line 4581 "util/configparser.c" break; - case 440: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1712 "./util/configparser.y" + case 442: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1721 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4573,11 +4590,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4577 "util/configparser.c" +#line 4594 "util/configparser.c" break; - case 441: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1722 "./util/configparser.y" + case 443: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1731 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4586,11 +4603,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4590 "util/configparser.c" +#line 4607 "util/configparser.c" break; - case 442: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1732 "./util/configparser.y" + case 444: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1741 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4599,11 +4616,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4603 "util/configparser.c" +#line 4620 "util/configparser.c" break; - case 443: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1742 "./util/configparser.y" + case 445: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1751 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4612,11 +4629,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4616 "util/configparser.c" +#line 4633 "util/configparser.c" break; - case 444: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1752 "./util/configparser.y" + case 446: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1761 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4625,11 +4642,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4629 "util/configparser.c" +#line 4646 "util/configparser.c" break; - case 445: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1762 "./util/configparser.y" + case 447: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1771 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4638,11 +4655,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" +#line 4659 "util/configparser.c" break; - case 446: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1772 "./util/configparser.y" + case 448: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1781 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4651,41 +4668,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4655 "util/configparser.c" +#line 4672 "util/configparser.c" break; - case 447: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1782 "./util/configparser.y" + case 449: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1791 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4665 "util/configparser.c" +#line 4682 "util/configparser.c" break; - case 448: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1789 "./util/configparser.y" + case 450: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1798 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4675 "util/configparser.c" +#line 4692 "util/configparser.c" break; - case 449: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1796 "./util/configparser.y" + case 451: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1805 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4685 "util/configparser.c" +#line 4702 "util/configparser.c" break; - case 450: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1803 "./util/configparser.y" + case 452: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1812 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4693,11 +4710,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4697 "util/configparser.c" +#line 4714 "util/configparser.c" break; - case 451: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1812 "./util/configparser.y" + case 453: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1821 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4705,11 +4722,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4709 "util/configparser.c" +#line 4726 "util/configparser.c" break; - case 452: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1821 "./util/configparser.y" + case 454: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1830 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4717,11 +4734,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4721 "util/configparser.c" +#line 4738 "util/configparser.c" break; - case 453: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1830 "./util/configparser.y" + case 455: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1839 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4729,21 +4746,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4733 "util/configparser.c" +#line 4750 "util/configparser.c" break; - case 454: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1839 "./util/configparser.y" + case 456: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1848 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4743 "util/configparser.c" +#line 4760 "util/configparser.c" break; - case 455: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1846 "./util/configparser.y" + case 457: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1855 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4752,22 +4769,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4773 "util/configparser.c" break; - case 456: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1856 "./util/configparser.y" + case 458: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1865 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_acl_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4767 "util/configparser.c" +#line 4784 "util/configparser.c" break; - case 457: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ -#line 1864 "./util/configparser.y" + case 459: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ +#line 1873 "./util/configparser.y" { OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_acl_action((yyvsp[0].str)); @@ -4775,21 +4792,21 @@ yyreduce: &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4779 "util/configparser.c" +#line 4796 "util/configparser.c" break; - case 458: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1873 "./util/configparser.y" + case 460: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1882 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4789 "util/configparser.c" +#line 4806 "util/configparser.c" break; - case 459: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1880 "./util/configparser.y" + case 461: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1889 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4806,11 +4823,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4810 "util/configparser.c" +#line 4827 "util/configparser.c" break; - case 460: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1898 "./util/configparser.y" + case 462: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1907 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4822,11 +4839,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4826 "util/configparser.c" +#line 4843 "util/configparser.c" break; - case 461: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1911 "./util/configparser.y" + case 463: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1920 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4838,11 +4855,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4842 "util/configparser.c" +#line 4859 "util/configparser.c" break; - case 462: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1924 "./util/configparser.y" + case 464: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1933 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4854,11 +4871,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4858 "util/configparser.c" +#line 4875 "util/configparser.c" break; - case 463: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1937 "./util/configparser.y" + case 465: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1946 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4866,11 +4883,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4870 "util/configparser.c" +#line 4887 "util/configparser.c" break; - case 464: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1946 "./util/configparser.y" + case 466: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1955 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4878,11 +4895,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4882 "util/configparser.c" +#line 4899 "util/configparser.c" break; - case 465: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1955 "./util/configparser.y" + case 467: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1964 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4890,11 +4907,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4894 "util/configparser.c" +#line 4911 "util/configparser.c" break; - case 466: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1964 "./util/configparser.y" + case 468: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1973 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4902,11 +4919,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4906 "util/configparser.c" +#line 4923 "util/configparser.c" break; - case 467: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1973 "./util/configparser.y" + case 469: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1982 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4915,11 +4932,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4919 "util/configparser.c" +#line 4936 "util/configparser.c" break; - case 468: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1983 "./util/configparser.y" + case 470: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1992 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4928,11 +4945,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4949 "util/configparser.c" break; - case 469: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1993 "./util/configparser.y" + case 471: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 2002 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4942,11 +4959,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4963 "util/configparser.c" break; - case 470: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 2004 "./util/configparser.y" + case 472: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 2013 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4954,11 +4971,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4958 "util/configparser.c" +#line 4975 "util/configparser.c" break; - case 471: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 2013 "./util/configparser.y" + case 473: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 2022 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4966,11 +4983,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4970 "util/configparser.c" +#line 4987 "util/configparser.c" break; - case 472: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 2022 "./util/configparser.y" + case 474: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 2031 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4978,11 +4995,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4982 "util/configparser.c" +#line 4999 "util/configparser.c" break; - case 473: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2031 "./util/configparser.y" + case 475: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 2040 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4990,11 +5007,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4994 "util/configparser.c" +#line 5011 "util/configparser.c" break; - case 474: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2040 "./util/configparser.y" + case 476: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 2049 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5002,11 +5019,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5006 "util/configparser.c" +#line 5023 "util/configparser.c" break; - case 475: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2049 "./util/configparser.y" + case 477: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2058 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5014,11 +5031,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5018 "util/configparser.c" +#line 5035 "util/configparser.c" break; - case 476: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ -#line 2058 "./util/configparser.y" + case 478: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ +#line 2067 "./util/configparser.y" { OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5026,11 +5043,11 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5030 "util/configparser.c" +#line 5047 "util/configparser.c" break; - case 477: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2067 "./util/configparser.y" + case 479: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2076 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5038,11 +5055,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5042 "util/configparser.c" +#line 5059 "util/configparser.c" break; - case 478: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2076 "./util/configparser.y" + case 480: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2085 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5054,11 +5071,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5058 "util/configparser.c" +#line 5075 "util/configparser.c" break; - case 479: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2089 "./util/configparser.y" + case 481: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2098 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5070,11 +5087,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5074 "util/configparser.c" +#line 5091 "util/configparser.c" break; - case 480: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2102 "./util/configparser.y" + case 482: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2111 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5082,21 +5099,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5086 "util/configparser.c" +#line 5103 "util/configparser.c" break; - case 481: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2111 "./util/configparser.y" + case 483: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2120 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5096 "util/configparser.c" +#line 5113 "util/configparser.c" break; - case 482: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2118 "./util/configparser.y" + case 484: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2127 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5104,11 +5121,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5108 "util/configparser.c" +#line 5125 "util/configparser.c" break; - case 483: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2127 "./util/configparser.y" + case 485: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2136 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5116,11 +5133,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5120 "util/configparser.c" +#line 5137 "util/configparser.c" break; - case 484: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2136 "./util/configparser.y" + case 486: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2145 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5128,11 +5145,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5132 "util/configparser.c" +#line 5149 "util/configparser.c" break; - case 485: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2145 "./util/configparser.y" + case 487: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2154 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5140,11 +5157,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5144 "util/configparser.c" +#line 5161 "util/configparser.c" break; - case 486: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2154 "./util/configparser.y" + case 488: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2163 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5153,22 +5170,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5157 "util/configparser.c" +#line 5174 "util/configparser.c" break; - case 487: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2163 "./util/configparser.y" + case 489: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2172 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5168 "util/configparser.c" +#line 5185 "util/configparser.c" break; - case 488: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2171 "./util/configparser.y" + case 490: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2180 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5180,22 +5197,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5184 "util/configparser.c" +#line 5201 "util/configparser.c" break; - case 489: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2184 "./util/configparser.y" + case 491: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2193 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5195 "util/configparser.c" +#line 5212 "util/configparser.c" break; - case 490: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2192 "./util/configparser.y" + case 492: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2201 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5249,21 +5266,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5253 "util/configparser.c" +#line 5270 "util/configparser.c" break; - case 491: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2247 "./util/configparser.y" + case 493: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2256 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5263 "util/configparser.c" +#line 5280 "util/configparser.c" break; - case 492: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2254 "./util/configparser.y" + case 494: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2263 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5277,11 +5294,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5281 "util/configparser.c" +#line 5298 "util/configparser.c" break; - case 493: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2269 "./util/configparser.y" + case 495: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2278 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5290,11 +5307,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5294 "util/configparser.c" +#line 5311 "util/configparser.c" break; - case 494: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2279 "./util/configparser.y" + case 496: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2288 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5303,41 +5320,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5307 "util/configparser.c" +#line 5324 "util/configparser.c" break; - case 495: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2289 "./util/configparser.y" + case 497: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2298 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5317 "util/configparser.c" +#line 5334 "util/configparser.c" break; - case 496: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2296 "./util/configparser.y" + case 498: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2305 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5327 "util/configparser.c" +#line 5344 "util/configparser.c" break; - case 497: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2303 "./util/configparser.y" + case 499: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2312 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5337 "util/configparser.c" +#line 5354 "util/configparser.c" break; - case 498: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2310 "./util/configparser.y" + case 500: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2319 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5345,22 +5362,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5366 "util/configparser.c" break; - case 499: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2319 "./util/configparser.y" + case 501: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2328 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5360 "util/configparser.c" +#line 5377 "util/configparser.c" break; - case 500: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2327 "./util/configparser.y" + case 502: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2336 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5373,11 +5390,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5377 "util/configparser.c" +#line 5394 "util/configparser.c" break; - case 501: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2341 "./util/configparser.y" + case 503: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2350 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5397,11 +5414,11 @@ yyreduce: } } } -#line 5401 "util/configparser.c" +#line 5418 "util/configparser.c" break; - case 502: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2362 "./util/configparser.y" + case 504: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2371 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5421,11 +5438,11 @@ yyreduce: } } } -#line 5425 "util/configparser.c" +#line 5442 "util/configparser.c" break; - case 503: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2383 "./util/configparser.y" + case 505: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2392 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5436,11 +5453,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5440 "util/configparser.c" +#line 5457 "util/configparser.c" break; - case 504: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2395 "./util/configparser.y" + case 506: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2404 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5451,11 +5468,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5455 "util/configparser.c" +#line 5472 "util/configparser.c" break; - case 505: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2407 "./util/configparser.y" + case 507: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2416 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5466,11 +5483,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5470 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 506: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2419 "./util/configparser.y" + case 508: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2428 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5478,11 +5495,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5482 "util/configparser.c" +#line 5499 "util/configparser.c" break; - case 507: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ -#line 2428 "./util/configparser.y" + case 509: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ +#line 2437 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5502,11 +5519,11 @@ yyreduce: } } } -#line 5506 "util/configparser.c" +#line 5523 "util/configparser.c" break; - case 508: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2449 "./util/configparser.y" + case 510: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2458 "./util/configparser.y" { OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, @@ -5517,11 +5534,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5521 "util/configparser.c" +#line 5538 "util/configparser.c" break; - case 509: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2461 "./util/configparser.y" + case 511: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2470 "./util/configparser.y" { OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, @@ -5532,11 +5549,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5536 "util/configparser.c" +#line 5553 "util/configparser.c" break; - case 510: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ -#line 2473 "./util/configparser.y" + case 512: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ +#line 2482 "./util/configparser.y" { OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, @@ -5544,11 +5561,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5548 "util/configparser.c" +#line 5565 "util/configparser.c" break; - case 511: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2482 "./util/configparser.y" + case 513: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2491 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5568,11 +5585,11 @@ yyreduce: } } } -#line 5572 "util/configparser.c" +#line 5589 "util/configparser.c" break; - case 512: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2503 "./util/configparser.y" + case 514: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2512 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5580,11 +5597,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5584 "util/configparser.c" +#line 5601 "util/configparser.c" break; - case 513: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2512 "./util/configparser.y" + case 515: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2521 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5592,33 +5609,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5596 "util/configparser.c" +#line 5613 "util/configparser.c" break; - case 514: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2521 "./util/configparser.y" + case 516: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2530 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5607 "util/configparser.c" +#line 5624 "util/configparser.c" break; - case 515: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2529 "./util/configparser.y" + case 517: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2538 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5618 "util/configparser.c" +#line 5635 "util/configparser.c" break; - case 516: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2537 "./util/configparser.y" + case 518: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2546 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5630,11 +5647,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5634 "util/configparser.c" +#line 5651 "util/configparser.c" break; - case 517: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2550 "./util/configparser.y" + case 519: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2559 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5646,11 +5663,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5650 "util/configparser.c" +#line 5667 "util/configparser.c" break; - case 518: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2563 "./util/configparser.y" + case 520: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2572 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5664,11 +5681,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5668 "util/configparser.c" +#line 5685 "util/configparser.c" break; - case 519: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2578 "./util/configparser.y" + case 521: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2587 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5682,11 +5699,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5686 "util/configparser.c" +#line 5703 "util/configparser.c" break; - case 520: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2593 "./util/configparser.y" + case 522: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2602 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5694,11 +5711,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5698 "util/configparser.c" +#line 5715 "util/configparser.c" break; - case 521: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2602 "./util/configparser.y" + case 523: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2611 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5706,11 +5723,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5727 "util/configparser.c" break; - case 522: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2611 "./util/configparser.y" + case 524: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ +#line 2620 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5719,11 +5736,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5723 "util/configparser.c" +#line 5740 "util/configparser.c" break; - case 523: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2621 "./util/configparser.y" + case 525: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ +#line 2630 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5732,11 +5749,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5736 "util/configparser.c" +#line 5753 "util/configparser.c" break; - case 524: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2631 "./util/configparser.y" + case 526: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ +#line 2640 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5744,20 +5761,20 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5748 "util/configparser.c" +#line 5765 "util/configparser.c" break; - case 525: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2640 "./util/configparser.y" + case 527: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2649 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5757 "util/configparser.c" +#line 5774 "util/configparser.c" break; - case 526: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2646 "./util/configparser.y" + case 528: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2655 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5765,11 +5782,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5769 "util/configparser.c" +#line 5786 "util/configparser.c" break; - case 527: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2655 "./util/configparser.y" + case 529: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2664 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5777,11 +5794,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5781 "util/configparser.c" +#line 5798 "util/configparser.c" break; - case 528: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2664 "./util/configparser.y" + case 530: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2673 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5790,11 +5807,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5794 "util/configparser.c" +#line 5811 "util/configparser.c" break; - case 529: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2674 "./util/configparser.y" + case 531: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2683 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5803,11 +5820,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5807 "util/configparser.c" +#line 5824 "util/configparser.c" break; - case 530: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2684 "./util/configparser.y" + case 532: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2693 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5816,11 +5833,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5820 "util/configparser.c" +#line 5837 "util/configparser.c" break; - case 531: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2694 "./util/configparser.y" + case 533: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2703 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5828,11 +5845,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5832 "util/configparser.c" +#line 5849 "util/configparser.c" break; - case 532: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2703 "./util/configparser.y" + case 534: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2712 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5841,11 +5858,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5845 "util/configparser.c" +#line 5862 "util/configparser.c" break; - case 533: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2713 "./util/configparser.y" + case 535: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2722 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5853,11 +5870,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5857 "util/configparser.c" +#line 5874 "util/configparser.c" break; - case 534: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2722 "./util/configparser.y" + case 536: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2731 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5869,11 +5886,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5873 "util/configparser.c" +#line 5890 "util/configparser.c" break; - case 535: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2735 "./util/configparser.y" + case 537: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2744 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5885,11 +5902,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5889 "util/configparser.c" +#line 5906 "util/configparser.c" break; - case 536: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2748 "./util/configparser.y" + case 538: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2757 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5900,11 +5917,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5904 "util/configparser.c" +#line 5921 "util/configparser.c" break; - case 537: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2760 "./util/configparser.y" + case 539: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2769 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5917,11 +5934,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5921 "util/configparser.c" +#line 5938 "util/configparser.c" break; - case 538: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2774 "./util/configparser.y" + case 540: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2783 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5932,11 +5949,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5936 "util/configparser.c" +#line 5953 "util/configparser.c" break; - case 539: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2786 "./util/configparser.y" + case 541: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2795 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5949,11 +5966,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5953 "util/configparser.c" +#line 5970 "util/configparser.c" break; - case 540: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2800 "./util/configparser.y" + case 542: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2809 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5961,11 +5978,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5965 "util/configparser.c" +#line 5982 "util/configparser.c" break; - case 541: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2809 "./util/configparser.y" + case 543: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2818 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5975,11 +5992,11 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5979 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 542: /* server_ede: VAR_EDE STRING_ARG */ -#line 2820 "./util/configparser.y" + case 544: /* server_ede: VAR_EDE STRING_ARG */ +#line 2829 "./util/configparser.y" { OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5987,21 +6004,21 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5991 "util/configparser.c" +#line 6008 "util/configparser.c" break; - case 543: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2829 "./util/configparser.y" + case 545: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ +#line 2838 "./util/configparser.y" { OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6001 "util/configparser.c" +#line 6018 "util/configparser.c" break; - case 544: /* stub_name: VAR_NAME STRING_ARG */ -#line 2836 "./util/configparser.y" + case 546: /* stub_name: VAR_NAME STRING_ARG */ +#line 2845 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6010,31 +6027,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6014 "util/configparser.c" +#line 6031 "util/configparser.c" break; - case 545: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2846 "./util/configparser.y" + case 547: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2855 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6024 "util/configparser.c" +#line 6041 "util/configparser.c" break; - case 546: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2853 "./util/configparser.y" + case 548: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2862 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6034 "util/configparser.c" +#line 6051 "util/configparser.c" break; - case 547: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2860 "./util/configparser.y" + case 549: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2869 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6042,11 +6059,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6046 "util/configparser.c" +#line 6063 "util/configparser.c" break; - case 548: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2869 "./util/configparser.y" + case 550: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2878 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6054,11 +6071,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6058 "util/configparser.c" +#line 6075 "util/configparser.c" break; - case 549: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2878 "./util/configparser.y" + case 551: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2887 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6067,11 +6084,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6071 "util/configparser.c" +#line 6088 "util/configparser.c" break; - case 550: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2888 "./util/configparser.y" + case 552: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2897 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6080,11 +6097,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 6101 "util/configparser.c" break; - case 551: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2898 "./util/configparser.y" + case 553: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2907 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6093,11 +6110,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6097 "util/configparser.c" +#line 6114 "util/configparser.c" break; - case 552: /* forward_name: VAR_NAME STRING_ARG */ -#line 2908 "./util/configparser.y" + case 554: /* forward_name: VAR_NAME STRING_ARG */ +#line 2917 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6106,31 +6123,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6110 "util/configparser.c" +#line 6127 "util/configparser.c" break; - case 553: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2918 "./util/configparser.y" + case 555: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2927 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6120 "util/configparser.c" +#line 6137 "util/configparser.c" break; - case 554: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2925 "./util/configparser.y" + case 556: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2934 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6130 "util/configparser.c" +#line 6147 "util/configparser.c" break; - case 555: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2932 "./util/configparser.y" + case 557: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2941 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6138,11 +6155,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6142 "util/configparser.c" +#line 6159 "util/configparser.c" break; - case 556: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2941 "./util/configparser.y" + case 558: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2950 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6150,11 +6167,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 6171 "util/configparser.c" break; - case 557: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2950 "./util/configparser.y" + case 559: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2959 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6163,11 +6180,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6167 "util/configparser.c" +#line 6184 "util/configparser.c" break; - case 558: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2960 "./util/configparser.y" + case 560: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 2969 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6176,11 +6193,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6180 "util/configparser.c" +#line 6197 "util/configparser.c" break; - case 559: /* auth_name: VAR_NAME STRING_ARG */ -#line 2970 "./util/configparser.y" + case 561: /* auth_name: VAR_NAME STRING_ARG */ +#line 2979 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6189,52 +6206,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6193 "util/configparser.c" +#line 6210 "util/configparser.c" break; - case 560: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2980 "./util/configparser.y" + case 562: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2989 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6203 "util/configparser.c" +#line 6220 "util/configparser.c" break; - case 561: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2987 "./util/configparser.y" + case 563: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2996 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6213 "util/configparser.c" +#line 6230 "util/configparser.c" break; - case 562: /* auth_url: VAR_URL STRING_ARG */ -#line 2994 "./util/configparser.y" + case 564: /* auth_url: VAR_URL STRING_ARG */ +#line 3003 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6223 "util/configparser.c" +#line 6240 "util/configparser.c" break; - case 563: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3001 "./util/configparser.y" + case 565: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 3010 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6234 "util/configparser.c" +#line 6251 "util/configparser.c" break; - case 564: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3009 "./util/configparser.y" + case 566: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 3018 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6243,11 +6260,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6247 "util/configparser.c" +#line 6264 "util/configparser.c" break; - case 565: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3019 "./util/configparser.y" + case 567: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 3028 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6256,11 +6273,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6260 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 566: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3029 "./util/configparser.y" + case 568: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 3038 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6269,11 +6286,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6290 "util/configparser.c" break; - case 567: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3039 "./util/configparser.y" + case 569: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 3048 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6282,11 +6299,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6303 "util/configparser.c" break; - case 568: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3049 "./util/configparser.y" + case 570: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 3058 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6295,11 +6312,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 569: /* view_name: VAR_NAME STRING_ARG */ -#line 3059 "./util/configparser.y" + case 571: /* view_name: VAR_NAME STRING_ARG */ +#line 3068 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6308,11 +6325,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6312 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 570: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3069 "./util/configparser.y" + case 572: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 3078 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -6367,11 +6384,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6371 "util/configparser.c" +#line 6388 "util/configparser.c" break; - case 571: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3125 "./util/configparser.y" + case 573: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3134 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6380,33 +6397,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6384 "util/configparser.c" +#line 6401 "util/configparser.c" break; - case 572: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3135 "./util/configparser.y" + case 574: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3144 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6395 "util/configparser.c" +#line 6412 "util/configparser.c" break; - case 573: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3143 "./util/configparser.y" + case 575: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3152 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6406 "util/configparser.c" +#line 6423 "util/configparser.c" break; - case 574: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3151 "./util/configparser.y" + case 576: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3160 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6420,11 +6437,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6424 "util/configparser.c" +#line 6441 "util/configparser.c" break; - case 575: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3166 "./util/configparser.y" + case 577: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3175 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6432,20 +6449,20 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6436 "util/configparser.c" +#line 6453 "util/configparser.c" break; - case 576: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3175 "./util/configparser.y" + case 578: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3184 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6445 "util/configparser.c" +#line 6462 "util/configparser.c" break; - case 587: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3187 "./util/configparser.y" + case 589: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3196 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6454,11 +6471,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6458 "util/configparser.c" +#line 6475 "util/configparser.c" break; - case 588: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3197 "./util/configparser.y" + case 590: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3206 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6466,80 +6483,80 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6470 "util/configparser.c" +#line 6487 "util/configparser.c" break; - case 589: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3206 "./util/configparser.y" + case 591: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3215 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6480 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 590: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3213 "./util/configparser.y" + case 592: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3222 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6490 "util/configparser.c" +#line 6507 "util/configparser.c" break; - case 591: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3220 "./util/configparser.y" + case 593: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3229 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6500 "util/configparser.c" +#line 6517 "util/configparser.c" break; - case 592: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3227 "./util/configparser.y" + case 594: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3236 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6510 "util/configparser.c" +#line 6527 "util/configparser.c" break; - case 593: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3234 "./util/configparser.y" + case 595: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3243 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6520 "util/configparser.c" +#line 6537 "util/configparser.c" break; - case 594: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3241 "./util/configparser.y" + case 596: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3250 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6530 "util/configparser.c" +#line 6547 "util/configparser.c" break; - case 595: /* dtstart: VAR_DNSTAP */ -#line 3248 "./util/configparser.y" + case 597: /* dtstart: VAR_DNSTAP */ +#line 3257 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6539 "util/configparser.c" +#line 6556 "util/configparser.c" break; - case 617: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3269 "./util/configparser.y" + case 619: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3278 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6547,11 +6564,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6551 "util/configparser.c" +#line 6568 "util/configparser.c" break; - case 618: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3278 "./util/configparser.y" + case 620: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3287 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6560,31 +6577,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6564 "util/configparser.c" +#line 6581 "util/configparser.c" break; - case 619: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3288 "./util/configparser.y" + case 621: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3297 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6574 "util/configparser.c" +#line 6591 "util/configparser.c" break; - case 620: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3295 "./util/configparser.y" + case 622: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3304 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6584 "util/configparser.c" +#line 6601 "util/configparser.c" break; - case 621: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3302 "./util/configparser.y" + case 623: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3311 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6592,51 +6609,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6596 "util/configparser.c" +#line 6613 "util/configparser.c" break; - case 622: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3311 "./util/configparser.y" + case 624: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3320 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6606 "util/configparser.c" +#line 6623 "util/configparser.c" break; - case 623: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3318 "./util/configparser.y" + case 625: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3327 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6616 "util/configparser.c" +#line 6633 "util/configparser.c" break; - case 624: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3325 "./util/configparser.y" + case 626: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3334 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6626 "util/configparser.c" +#line 6643 "util/configparser.c" break; - case 625: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3332 "./util/configparser.y" + case 627: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3341 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6636 "util/configparser.c" +#line 6653 "util/configparser.c" break; - case 626: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3339 "./util/configparser.y" + case 628: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3348 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6644,11 +6661,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6648 "util/configparser.c" +#line 6665 "util/configparser.c" break; - case 627: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3348 "./util/configparser.y" + case 629: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3357 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6656,31 +6673,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6660 "util/configparser.c" +#line 6677 "util/configparser.c" break; - case 628: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3357 "./util/configparser.y" + case 630: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3366 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6670 "util/configparser.c" +#line 6687 "util/configparser.c" break; - case 629: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3364 "./util/configparser.y" + case 631: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3373 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6680 "util/configparser.c" +#line 6697 "util/configparser.c" break; - case 630: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3371 "./util/configparser.y" + case 632: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3380 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6689,11 +6706,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6693 "util/configparser.c" +#line 6710 "util/configparser.c" break; - case 631: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3381 "./util/configparser.y" + case 633: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3390 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6702,11 +6719,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6706 "util/configparser.c" +#line 6723 "util/configparser.c" break; - case 632: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3391 "./util/configparser.y" + case 634: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3400 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6715,11 +6732,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6719 "util/configparser.c" +#line 6736 "util/configparser.c" break; - case 633: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3401 "./util/configparser.y" + case 635: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3410 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6728,11 +6745,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6732 "util/configparser.c" +#line 6749 "util/configparser.c" break; - case 634: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3411 "./util/configparser.y" + case 636: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3420 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6741,11 +6758,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6745 "util/configparser.c" +#line 6762 "util/configparser.c" break; - case 635: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3421 "./util/configparser.y" + case 637: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3430 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6754,49 +6771,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6758 "util/configparser.c" +#line 6775 "util/configparser.c" break; - case 636: /* pythonstart: VAR_PYTHON */ -#line 3431 "./util/configparser.y" + case 638: /* pythonstart: VAR_PYTHON */ +#line 3440 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6767 "util/configparser.c" +#line 6784 "util/configparser.c" break; - case 640: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3441 "./util/configparser.y" + case 642: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3450 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6777 "util/configparser.c" +#line 6794 "util/configparser.c" break; - case 641: /* dynlibstart: VAR_DYNLIB */ -#line 3447 "./util/configparser.y" + case 643: /* dynlibstart: VAR_DYNLIB */ +#line 3456 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6786 "util/configparser.c" +#line 6803 "util/configparser.c" break; - case 645: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3457 "./util/configparser.y" + case 647: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3466 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6796 "util/configparser.c" +#line 6813 "util/configparser.c" break; - case 646: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3463 "./util/configparser.y" + case 648: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3472 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6805,21 +6822,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6809 "util/configparser.c" +#line 6826 "util/configparser.c" break; - case 647: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3473 "./util/configparser.y" + case 649: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3482 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6819 "util/configparser.c" +#line 6836 "util/configparser.c" break; - case 648: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3480 "./util/configparser.y" + case 650: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3489 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6827,31 +6844,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6831 "util/configparser.c" +#line 6848 "util/configparser.c" break; - case 649: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3489 "./util/configparser.y" + case 651: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3498 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6842 "util/configparser.c" +#line 6859 "util/configparser.c" break; - case 650: /* dnscstart: VAR_DNSCRYPT */ -#line 3497 "./util/configparser.y" + case 652: /* dnscstart: VAR_DNSCRYPT */ +#line 3506 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6851 "util/configparser.c" +#line 6868 "util/configparser.c" break; - case 663: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3514 "./util/configparser.y" + case 665: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3523 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6859,11 +6876,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6863 "util/configparser.c" +#line 6880 "util/configparser.c" break; - case 664: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3524 "./util/configparser.y" + case 666: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3533 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6871,21 +6888,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6875 "util/configparser.c" +#line 6892 "util/configparser.c" break; - case 665: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3533 "./util/configparser.y" + case 667: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3542 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6885 "util/configparser.c" +#line 6902 "util/configparser.c" break; - case 666: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3540 "./util/configparser.y" + case 668: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3549 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6893,21 +6910,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6897 "util/configparser.c" +#line 6914 "util/configparser.c" break; - case 667: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3549 "./util/configparser.y" + case 669: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3558 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6907 "util/configparser.c" +#line 6924 "util/configparser.c" break; - case 668: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3556 "./util/configparser.y" + case 670: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3565 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6915,22 +6932,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6919 "util/configparser.c" +#line 6936 "util/configparser.c" break; - case 669: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3565 "./util/configparser.y" + case 671: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3574 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6930 "util/configparser.c" +#line 6947 "util/configparser.c" break; - case 670: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3573 "./util/configparser.y" + case 672: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3582 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6942,22 +6959,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6946 "util/configparser.c" +#line 6963 "util/configparser.c" break; - case 671: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3586 "./util/configparser.y" + case 673: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3595 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6957 "util/configparser.c" +#line 6974 "util/configparser.c" break; - case 672: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3594 "./util/configparser.y" + case 674: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3603 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6969,20 +6986,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6973 "util/configparser.c" +#line 6990 "util/configparser.c" break; - case 673: /* cachedbstart: VAR_CACHEDB */ -#line 3607 "./util/configparser.y" + case 675: /* cachedbstart: VAR_CACHEDB */ +#line 3616 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 6982 "util/configparser.c" +#line 6999 "util/configparser.c" break; - case 682: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3619 "./util/configparser.y" + case 684: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3628 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6993,11 +7010,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6997 "util/configparser.c" +#line 7014 "util/configparser.c" break; - case 683: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3631 "./util/configparser.y" + case 685: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3640 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7008,11 +7025,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7012 "util/configparser.c" +#line 7029 "util/configparser.c" break; - case 684: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3643 "./util/configparser.y" + case 686: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3652 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7023,11 +7040,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7027 "util/configparser.c" +#line 7044 "util/configparser.c" break; - case 685: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3655 "./util/configparser.y" + case 687: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3664 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7041,11 +7058,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7045 "util/configparser.c" +#line 7062 "util/configparser.c" break; - case 686: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3670 "./util/configparser.y" + case 688: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3679 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7057,11 +7074,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7061 "util/configparser.c" +#line 7078 "util/configparser.c" break; - case 687: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3683 "./util/configparser.y" + case 689: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3692 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7073,11 +7090,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7077 "util/configparser.c" +#line 7094 "util/configparser.c" break; - case 688: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3696 "./util/configparser.y" + case 690: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3705 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7087,20 +7104,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7091 "util/configparser.c" +#line 7108 "util/configparser.c" break; - case 689: /* ipsetstart: VAR_IPSET */ -#line 3707 "./util/configparser.y" + case 691: /* ipsetstart: VAR_IPSET */ +#line 3716 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7100 "util/configparser.c" +#line 7117 "util/configparser.c" break; - case 694: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3717 "./util/configparser.y" + case 696: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3726 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7114,11 +7131,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7118 "util/configparser.c" +#line 7135 "util/configparser.c" break; - case 695: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3732 "./util/configparser.y" + case 697: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3741 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7132,11 +7149,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7136 "util/configparser.c" +#line 7153 "util/configparser.c" break; -#line 7140 "util/configparser.c" +#line 7157 "util/configparser.c" default: break; } @@ -7329,7 +7346,7 @@ yyreturnlab: return yyresult; } -#line 3746 "./util/configparser.y" +#line 3755 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 4987e1169..dba009dc3 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -384,7 +384,8 @@ extern int yydebug; VAR_INTERFACE_TAG = 585, /* VAR_INTERFACE_TAG */ VAR_INTERFACE_TAG_ACTION = 586, /* VAR_INTERFACE_TAG_ACTION */ VAR_INTERFACE_TAG_DATA = 587, /* VAR_INTERFACE_TAG_DATA */ - VAR_PROXY_PROTOCOL_PORT = 588 /* VAR_PROXY_PROTOCOL_PORT */ + VAR_PROXY_PROTOCOL_PORT = 588, /* VAR_PROXY_PROTOCOL_PORT */ + VAR_STATISTICS_INHIBIT_ZERO = 589 /* VAR_STATISTICS_INHIBIT_ZERO */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -724,6 +725,7 @@ extern int yydebug; #define VAR_INTERFACE_TAG_ACTION 586 #define VAR_INTERFACE_TAG_DATA 587 #define VAR_PROXY_PROTOCOL_PORT 588 +#define VAR_STATISTICS_INHIBIT_ZERO 589 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -733,7 +735,7 @@ union YYSTYPE char* str; -#line 737 "util/configparser.h" +#line 739 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 3ecdad2ad..b449d7def 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -193,7 +193,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS VAR_EDE %token VAR_INTERFACE_ACTION VAR_INTERFACE_VIEW VAR_INTERFACE_TAG %token VAR_INTERFACE_TAG_ACTION VAR_INTERFACE_TAG_DATA -%token VAR_PROXY_PROTOCOL_PORT +%token VAR_PROXY_PROTOCOL_PORT VAR_STATISTICS_INHIBIT_ZERO %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -322,7 +322,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_zonemd_permissive_mode | server_max_reuse_tcp_queries | server_tcp_reuse_timeout | server_tcp_auth_query_timeout | server_interface_automatic_ports | server_ede | - server_proxy_protocol_port + server_proxy_protocol_port | server_statistics_inhibit_zero ; stubstart: VAR_STUB_ZONE { @@ -554,6 +554,15 @@ server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG free($2); } ; +server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG + { + OUTYY(("P(server_statistics_inhibit_zero:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_inhibit_zero = (strcmp($2, "yes")==0); + free($2); + } + ; server_shm_enable: VAR_SHM_ENABLE STRING_ARG { OUTYY(("P(server_shm_enable:%s)\n", $2)); From c61b2121b53de9bb8655f0d42c6e7761e7c03431 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 13 Dec 2022 13:50:05 +0100 Subject: [PATCH 032/177] - Expose 'max-sent-count' as a configuration option; the default value retains Unbound's behavior. --- doc/Changelog | 2 + doc/example.conf.in | 5 + doc/unbound.conf.5.in | 6 + iterator/iter_utils.c | 1 + iterator/iterator.c | 4 +- iterator/iterator.h | 6 +- util/config_file.c | 3 + util/config_file.h | 3 + util/configlexer.c | 5010 +++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 3665 +++++++++++++++--------------- util/configparser.h | 532 ++--- util/configparser.y | 13 +- 13 files changed, 4658 insertions(+), 4593 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ca5d674fe..298156cb8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 13 December 2022: George - Expose 'statistics-inhibit-zero' as a configuration option; the default value retains Unbound's behavior. + - Expose 'max-sent-count' as a configuration option; the + default value retains Unbound's behavior. 1 December 2022: Wouter - Fix #773: When used with systemd-networkd, unbound does not start diff --git a/doc/example.conf.in b/doc/example.conf.in index 206c2ce89..0fdf3d0b1 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -178,6 +178,11 @@ server: # a throwaway response (also timeouts) is received. # outbound-msg-retry: 5 + # Hard limit on the number of outgoing queries Unbound will make while + # resolving a name, making sure large NS sets do not loop. + # It resets on query restarts (e.g., CNAME) and referrals. + # max-sent-count: 32 + # msec for waiting for an unknown server to reply. Increase if you # are behind a slow satellite link, to eg. 1128. # unknown-server-time-limit: 376 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 1cd776bd6..08c13e898 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1828,6 +1828,12 @@ If a forward/stub zone is used, this is the number of retries per nameserver in the zone. Default is 5. .TP 5 +.B max\-sent\-count: \fI +Hard limit on the number of outgoing queries Unbound will make while resolving +a name, making sure large NS sets do not loop. +It resets on query restarts (e.g., CNAME) and referrals. +Default is 32. +.TP 5 .B fast\-server\-permil: \fI Specify how many times out of 1000 to pick from the set of fastest servers. 0 turns the feature off. A value of 900 would pick from the fastest diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 56b184a02..b17b6ef86 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -175,6 +175,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; iter_env->outbound_msg_retry = cfg->outbound_msg_retry; + iter_env->max_sent_count = cfg->max_sent_count; return 1; } diff --git a/iterator/iterator.c b/iterator/iterator.c index 9c8d256d3..dba9b58bb 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2282,7 +2282,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, errinf(qstate, "exceeded the maximum of referrals"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } - if(iq->sent_count > MAX_SENT_COUNT) { + if(iq->sent_count > ie->max_sent_count) { verbose(VERB_QUERY, "request has exceeded the maximum " "number of sends with %d", iq->sent_count); errinf(qstate, "exceeded the maximum number of sends"); @@ -2629,7 +2629,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, * the original query is one that matched too, so we have * caps_server+1 number of matching queries now */ if(iq->caps_server+1 >= naddr*3 || - iq->caps_server*2+2 >= MAX_SENT_COUNT) { + iq->caps_server*2+2 >= (size_t)ie->max_sent_count) { /* *2 on sentcount check because ipv6 may fail */ /* we're done, process the response */ verbose(VERB_ALGO, "0x20 fallback had %d responses " diff --git a/iterator/iterator.h b/iterator/iterator.h index 18d3270a0..8175ec12e 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -67,9 +67,6 @@ struct rbtree_type; #define MAX_RESTART_COUNT 11 /** max number of referrals. Makes sure resolver does not run away */ #define MAX_REFERRAL_COUNT 130 -/** max number of queries-sent-out. Make sure large NS set does not loop. - * Resets on query restarts (e.g., CNAMES) and referrals. */ -#define MAX_SENT_COUNT 32 /** max number of queries for which to perform dnsseclameness detection, * (rrsigs missing detection) after that, just pick up that response */ #define DNSSEC_LAME_DETECT_COUNT 4 @@ -146,6 +143,9 @@ struct iter_env { /** number of retries on outgoing queries */ int outbound_msg_retry; + + /** number of queries_sent */ + int max_sent_count; }; /** diff --git a/util/config_file.c b/util/config_file.c index 5f8c22101..7f97a4f21 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -337,6 +337,7 @@ config_create(void) cfg->ip_ratelimit_backoff = 0; cfg->ratelimit_backoff = 0; cfg->outbound_msg_retry = 5; + cfg->max_sent_count = 32; cfg->qname_minimisation = 1; cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; @@ -780,6 +781,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("ip-ratelimit-backoff:", ip_ratelimit_backoff) else S_YNO("ratelimit-backoff:", ratelimit_backoff) else S_NUMBER_NONZERO("outbound-msg-retry:", outbound_msg_retry) + else S_NUMBER_NONZERO("max-sent-count", max_sent_count) else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) @@ -1241,6 +1243,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "ip-ratelimit-backoff", ip_ratelimit_backoff) else O_YNO(opt, "ratelimit-backoff", ratelimit_backoff) else O_UNS(opt, "outbound-msg-retry", outbound_msg_retry) + else O_UNS(opt, "max-sent-count", max_sent_count) else O_DEC(opt, "fast-server-num", fast_server_num) else O_DEC(opt, "fast-server-permil", fast_server_permil) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) diff --git a/util/config_file.h b/util/config_file.h index c5c826a6b..0c3cc6947 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -610,6 +610,9 @@ struct config_file { /** number of retries on outgoing queries */ int outbound_msg_retry; + /** max sent queries per qstate; resets on query restarts (e.g., + * CNAMES) and referrals. */ + int max_sent_count; /** minimise outgoing QNAME and hide original QTYPE if possible */ int qname_minimisation; /** minimise QNAME in strict mode, minimise according to RFC. diff --git a/util/configlexer.c b/util/configlexer.c index 90c20b148..50d22f9d8 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 370 -#define YY_END_OF_BUFFER 371 +#define YY_NUM_RULES 371 +#define YY_END_OF_BUFFER 372 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,410 +363,411 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3657] = +static const flex_int16_t yy_accept[3668] = { 0, - 1, 1, 344, 344, 348, 348, 352, 352, 356, 356, - 1, 1, 360, 360, 364, 364, 371, 368, 1, 342, - 342, 369, 2, 369, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 344, 345, 345, 346, - 369, 348, 349, 349, 350, 369, 355, 352, 353, 353, - 354, 369, 356, 357, 357, 358, 369, 367, 343, 2, - 347, 369, 367, 363, 360, 361, 361, 362, 369, 364, - 365, 365, 366, 369, 368, 0, 1, 2, 2, 2, - 2, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 1, 1, 345, 345, 349, 349, 353, 353, 357, 357, + 1, 1, 361, 361, 365, 365, 372, 369, 1, 343, + 343, 370, 2, 370, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 345, 346, 346, 347, + 370, 349, 350, 350, 351, 370, 356, 353, 354, 354, + 355, 370, 357, 358, 358, 359, 370, 368, 344, 2, + 348, 370, 368, 364, 361, 362, 362, 363, 370, 365, + 366, 366, 367, 370, 369, 0, 1, 2, 2, 2, + 2, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 344, - 0, 348, 0, 355, 0, 352, 356, 0, 367, 0, - 2, 2, 367, 363, 0, 360, 364, 0, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 345, + 0, 349, 0, 356, 0, 353, 357, 0, 368, 0, + 2, 2, 368, 364, 0, 361, 365, 0, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 367, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 368, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 340, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 133, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 143, 368, 368, 368, 368, - 368, 368, 368, 367, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 341, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 133, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 143, 369, 369, 369, 369, + 369, 369, 369, 368, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 115, 368, 339, 368, 368, 368, - 368, 368, 368, 368, 368, 8, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 115, 369, 340, 369, 369, + 369, 369, 369, 369, 369, 369, 8, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 134, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 148, 368, 368, 367, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 134, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 148, 369, 369, 368, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 332, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 333, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 367, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 69, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 261, 368, 14, - 15, 368, 19, 18, 368, 368, 241, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 368, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 69, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 261, + 369, 14, 15, 369, 19, 18, 369, 369, 241, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 141, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 239, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 3, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 141, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 239, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 3, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 367, 368, 368, 368, 368, 368, 368, 368, 326, 368, - 368, 325, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 368, 369, 369, 369, 369, 369, 369, + 369, 327, 369, 369, 326, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 351, 368, 368, 368, 368, 368, 368, 368, - 368, 68, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 72, 368, - 295, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 333, 334, 368, 368, 368, 368, 368, 368, 368, 368, - 73, 368, 368, 142, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 137, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 228, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 352, 369, 369, 369, 369, + 369, 369, 369, 369, 68, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 72, 369, 296, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 334, 335, 369, 369, 369, 369, + 369, 369, 369, 369, 73, 369, 369, 142, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 137, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 228, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 21, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 169, 368, 368, 368, - 368, 368, 367, 351, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 113, 368, 368, 368, 368, - 368, 368, 368, 303, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 21, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 169, 369, 369, 369, 369, 369, 368, 352, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 113, + 369, 369, 369, 369, 369, 369, 369, 304, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 196, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 168, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 112, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 196, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 168, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 112, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 35, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 36, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 70, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 140, 368, 368, 368, 367, 368, 368, - 368, 368, 368, 132, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 71, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 35, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 36, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 70, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 140, 369, + 369, 369, 368, 369, 369, 369, 369, 369, 132, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 71, 369, 369, 369, 369, 369, - 368, 368, 265, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 197, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 58, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 265, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 197, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 58, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 283, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 63, 368, 64, 368, 368, - 368, 368, 368, 116, 368, 117, 368, 368, 368, 368, - 368, 114, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 7, 368, 368, 368, 368, - 367, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 283, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 63, 369, 64, 369, 369, 369, 369, 369, 116, + 369, 117, 369, 369, 369, 369, 369, 114, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 7, 369, 369, 369, 369, 368, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 250, - 368, 368, 368, 368, 172, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 266, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 49, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 59, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 219, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 250, 369, 369, 369, 369, + 172, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 266, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 49, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 59, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 218, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 16, 17, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 74, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 227, 368, 368, 368, 368, 368, 368, 119, - 368, 118, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 210, 368, + 369, 369, 369, 369, 369, 219, 369, 218, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 16, + 17, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 74, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 227, + 369, 369, 369, 369, 369, 369, 119, 369, 118, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 149, 368, - 368, 368, 367, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 107, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 95, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 240, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 100, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 210, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 149, 369, 369, 369, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 107, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 95, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 240, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 100, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 67, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 213, 214, 368, 368, - 368, 297, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 6, 368, 368, 368, 368, - 368, 368, 368, 316, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 301, 368, 368, 368, 368, 368, 368, - 368, 327, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 67, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 213, 214, 369, 369, 369, 298, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 6, 369, 369, 369, 369, 369, 369, + 369, 317, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 302, 369, 369, 369, 369, 369, 369, 369, 328, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 46, 368, 368, 368, - 368, 368, 48, 368, 368, 368, 96, 368, 368, 368, - 368, 368, 56, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 367, 368, 206, 368, 368, 368, - 144, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 232, 368, 207, 368, 368, 368, 247, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 57, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 146, 125, 368, 126, 368, 368, 368, 368, 124, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 46, 369, 369, 369, 369, 369, + 48, 369, 369, 369, 96, 369, 369, 369, 369, 369, + 56, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 368, 369, 206, 369, 369, 369, 144, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 232, + 369, 207, 369, 369, 369, 247, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 57, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 146, 125, - 368, 368, 368, 368, 368, 368, 368, 368, 165, 368, - 368, 54, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 282, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 208, 368, 368, 368, 368, 368, 211, 368, - 217, 368, 368, 368, 368, 368, 368, 246, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 111, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 138, 368, 368, 368, + 369, 126, 369, 369, 369, 369, 124, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 165, 369, 369, 54, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 282, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 208, 369, 369, 369, 369, 369, 211, 369, 217, 369, + 369, 369, 369, 369, 369, 369, 246, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 111, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 65, 368, 368, 368, 29, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 20, 368, 368, 368, 368, 368, 368, 368, - 30, 39, 368, 177, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 204, 368, - 368, 367, 368, 368, 368, 368, 368, 368, 82, 84, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 305, 368, 368, 368, 368, 262, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 138, 369, 369, 369, 369, + 369, 369, 369, 369, 65, 369, 369, 369, 29, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 20, 369, 369, 369, 369, 369, 369, 369, 30, + 39, 369, 177, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 204, 369, 369, + 368, 369, 369, 369, 369, 369, 369, 82, 84, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 306, 369, 369, 369, 369, 262, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 127, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 164, 368, 50, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 256, 368, 368, - 368, 368, 368, 368, 368, 320, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 171, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 314, - 368, 368, 368, 368, 238, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 330, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 127, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 164, 369, 50, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 256, 369, 369, 369, + 369, 369, 369, 369, 321, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 171, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 315, + 369, 369, 369, 369, 238, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 189, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 120, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 184, 368, 198, 368, 368, 368, 368, - 368, 368, 368, 367, 368, 152, 368, 368, 368, 368, - 368, 106, 368, 368, 368, 368, 230, 368, 368, 368, - 368, 368, 368, 248, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 274, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 331, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 189, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 120, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 184, 369, 198, 369, 369, 369, 369, + 369, 369, 369, 368, 369, 152, 369, 369, 369, 369, + 369, 106, 369, 369, 369, 369, 230, 369, 369, 369, + 369, 369, 369, 248, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 145, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 188, 368, 368, 368, 368, 368, 368, 368, 85, 368, - 86, 368, 368, 368, 368, 368, 259, 368, 368, 368, - 368, 66, 323, 368, 368, 368, 368, 368, 94, 199, - 368, 220, 368, 251, 368, 368, 212, 298, 368, 368, - 368, 368, 368, 368, 78, 368, 201, 368, 368, 368, - 368, 368, 368, 9, 368, 368, 368, 368, 368, 110, - 368, 368, 368, 368, 368, 368, 287, 368, 368, 368, - 368, 229, 368, 368, 368, 368, 368, 368, 368, 368, + 274, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 145, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 188, 369, 369, 369, 369, 369, 369, 369, 85, 369, + 86, 369, 369, 369, 369, 369, 259, 369, 369, 369, + 369, 66, 324, 369, 369, 369, 369, 369, 94, 199, + 369, 220, 369, 251, 369, 369, 212, 299, 369, 369, + 369, 295, 369, 369, 369, 78, 369, 201, 369, 369, + 369, 369, 369, 369, 9, 369, 369, 369, 369, 369, + 110, 369, 369, 369, 369, 369, 369, 287, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 367, 368, 368, - 368, 368, 187, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 173, 368, 304, 368, 368, 368, 368, - 368, 273, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 242, 368, 368, 368, 368, 368, 368, - 296, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 229, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 368, 369, + 369, 369, 369, 187, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 173, 369, 305, 369, 369, 369, + 369, 369, 273, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 242, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 170, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 324, - 368, 200, 368, 368, 368, 368, 368, 368, 368, 368, - 77, 79, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 109, 368, 368, 368, 368, 368, 368, 285, - 368, 368, 368, 368, 300, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 234, 37, - 31, 33, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 38, 368, 32, 34, 368, + 369, 297, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 170, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 325, 369, 200, 369, 369, 369, 369, 369, 369, 369, + 369, 77, 79, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 109, 369, 369, 369, 369, 369, 369, + 285, 369, 369, 369, 369, 301, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 234, + 37, 31, 33, 369, 369, 369, 369, 369, 369, 369, - 40, 368, 368, 368, 368, 368, 368, 368, 105, 368, - 183, 368, 368, 368, 368, 368, 368, 368, 367, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 236, 233, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 76, 368, 368, 368, 147, 368, 128, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 166, 51, - 368, 368, 368, 359, 13, 368, 368, 368, 368, 368, - 368, 368, 153, 368, 368, 368, 368, 368, 368, 368, - 318, 368, 321, 368, 368, 368, 368, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 38, 369, 32, 34, + 369, 40, 369, 369, 369, 369, 369, 369, 369, 105, + 369, 183, 369, 369, 369, 369, 369, 369, 369, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 236, 233, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 76, 369, 369, 369, 147, 369, 128, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 166, + 51, 369, 369, 369, 360, 13, 369, 369, 369, 369, + 369, 369, 369, 153, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 12, 368, 368, 22, 368, - 368, 368, 368, 368, 368, 368, 291, 368, 368, 368, - 368, 302, 368, 368, 368, 368, 80, 368, 244, 368, - 368, 368, 368, 368, 235, 368, 368, 368, 75, 368, - 368, 368, 368, 368, 368, 23, 368, 368, 47, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 182, 181, 368, 368, 359, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 237, 231, 368, 249, 368, - 368, 306, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 194, 368, 368, 368, + 369, 319, 369, 322, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 12, 369, 369, 22, + 369, 369, 369, 369, 369, 369, 369, 291, 369, 369, + 369, 369, 303, 369, 369, 369, 369, 80, 369, 244, + 369, 369, 369, 369, 369, 235, 369, 369, 369, 75, + 369, 369, 369, 369, 369, 369, 23, 369, 369, 47, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 182, 181, 369, 369, 360, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 237, 231, 369, 249, + 369, 369, 307, 369, 369, 369, 369, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 87, 368, - 368, 368, 368, 368, 368, 368, 286, 368, 368, 368, - 368, 216, 368, 368, 368, 368, 368, 243, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 293, 368, - 368, 368, 328, 329, 179, 368, 368, 368, 81, 368, - 368, 368, 368, 190, 368, 368, 368, 368, 121, 123, - 122, 368, 368, 368, 25, 368, 368, 174, 368, 176, - 368, 221, 368, 368, 368, 368, 180, 368, 368, 368, - 368, 252, 368, 368, 368, 368, 368, 368, 368, 155, + 369, 369, 369, 369, 369, 369, 369, 194, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 87, + 369, 369, 369, 369, 369, 369, 369, 286, 369, 369, + 369, 369, 216, 369, 369, 369, 369, 369, 243, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 293, + 369, 369, 369, 329, 330, 179, 369, 369, 369, 81, + 369, 369, 369, 369, 190, 369, 369, 369, 369, 121, + 123, 122, 369, 369, 369, 25, 369, 369, 174, 369, + 176, 369, 221, 369, 369, 369, 369, 180, 369, 369, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 264, 368, 368, 368, 368, 368, 368, 368, - 337, 368, 27, 368, 299, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 92, 222, 368, 368, 258, 368, 368, 284, - 368, 322, 368, 215, 368, 368, 368, 368, 368, 294, - 60, 368, 368, 368, 368, 368, 368, 368, 4, 368, - 368, 368, 368, 136, 368, 154, 368, 368, 368, 195, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 255, + 369, 369, 252, 369, 369, 369, 369, 369, 369, 369, + 155, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 264, 369, 369, 369, 369, 369, 369, + 369, 338, 369, 27, 369, 300, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 92, 222, 369, 369, 258, 369, 369, + 284, 369, 323, 369, 215, 369, 369, 369, 369, 369, + 294, 60, 369, 369, 369, 369, 369, 369, 369, 4, + 369, 369, 369, 369, 136, 369, 154, 369, 369, 369, + 195, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 41, 42, 368, 368, 368, 368, 368, 368, 368, 307, - 368, 368, 368, 368, 368, 368, 368, 272, 368, 368, - 368, 368, 368, 368, 368, 368, 225, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 91, 90, 368, 368, 61, 368, 368, 290, 368, - 260, 368, 368, 368, 368, 368, 11, 368, 368, 368, - 368, 341, 368, 368, 368, 368, 135, 368, 368, 368, - 368, 368, 368, 223, 97, 368, 368, 44, 368, 368, - 368, 368, 368, 368, 368, 368, 186, 368, 368, 368, - 368, 368, 368, 368, 157, 368, 368, 368, 368, 263, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 255, 41, 42, 369, 369, 369, 369, 369, 369, 369, + 308, 369, 369, 369, 369, 369, 369, 369, 272, 369, + 369, 369, 369, 369, 369, 369, 369, 225, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 91, 90, 369, 369, 61, 369, 369, 290, + 369, 260, 369, 369, 369, 369, 369, 11, 369, 369, + 369, 369, 342, 369, 369, 369, 369, 135, 369, 369, + 369, 369, 369, 369, 223, 97, 369, 369, 44, 369, + 369, 369, 369, 369, 369, 369, 369, 186, 369, 369, - 368, 368, 368, 368, 368, 271, 368, 368, 368, 368, - 150, 368, 368, 368, 129, 131, 130, 368, 368, 368, - 99, 103, 98, 167, 368, 368, 368, 368, 88, 368, - 257, 292, 368, 368, 368, 368, 368, 368, 10, 368, - 368, 368, 368, 368, 288, 331, 368, 368, 368, 368, - 368, 368, 368, 336, 43, 368, 368, 368, 368, 368, - 185, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 104, 102, 368, 55, - 368, 368, 89, 368, 319, 368, 368, 368, 368, 24, + 369, 369, 369, 369, 369, 157, 369, 369, 369, 369, + 263, 369, 369, 369, 369, 369, 271, 369, 369, 369, + 369, 150, 369, 369, 369, 129, 131, 130, 369, 369, + 369, 99, 103, 98, 167, 369, 369, 369, 369, 88, + 369, 257, 292, 369, 369, 369, 369, 369, 369, 10, + 369, 369, 369, 369, 369, 288, 332, 369, 369, 369, + 369, 369, 369, 369, 337, 43, 369, 369, 369, 369, + 369, 185, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 104, 102, 369, - 368, 368, 368, 368, 368, 209, 368, 368, 368, 368, - 368, 368, 224, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 205, 368, 368, 175, 83, 368, 368, 368, - 368, 368, 308, 368, 368, 368, 368, 368, 368, 368, - 268, 368, 368, 267, 151, 368, 368, 101, 52, 368, - 368, 158, 159, 162, 163, 160, 161, 93, 317, 368, - 368, 289, 139, 368, 368, 368, 368, 26, 368, 178, - 368, 368, 368, 368, 203, 368, 254, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 192, 191, + 55, 369, 369, 89, 369, 320, 369, 369, 369, 369, + 24, 369, 369, 369, 369, 369, 209, 369, 369, 369, + 369, 369, 369, 224, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 205, 369, 369, 175, 83, 369, 369, + 369, 369, 369, 309, 369, 369, 369, 369, 369, 369, + 369, 268, 369, 369, 267, 151, 369, 369, 101, 52, + 369, 369, 158, 159, 162, 163, 160, 161, 93, 318, + 369, 369, 289, 139, 369, 369, 369, 369, 26, 369, + 178, 369, 369, 369, 369, 203, 369, 254, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 226, 45, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 315, 368, 368, 368, 368, - 108, 368, 253, 368, 281, 312, 368, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 338, 368, 53, - 62, 5, 368, 368, 245, 368, 368, 313, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 269, 28, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 270, 368, 368, 368, 156, 368, 368, 368, 368, - 368, 368, 368, 368, 193, 368, 202, 368, 368, 368, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 192, + 191, 226, 45, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 316, 369, 369, 369, + 369, 108, 369, 253, 369, 281, 313, 369, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 339, 369, + 53, 62, 5, 369, 369, 245, 369, 369, 314, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 269, 28, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 270, 369, 369, 369, 156, 369, 369, 369, - 368, 368, 368, 368, 368, 368, 309, 368, 368, 368, - 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 368, 368, 335, 368, 368, 277, 368, 368, - 368, 368, 368, 310, 368, 368, 368, 368, 368, 368, - 311, 368, 368, 368, 275, 368, 278, 279, 368, 368, - 368, 368, 368, 276, 280, 0 + 369, 369, 369, 369, 369, 193, 369, 202, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 310, 369, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 369, 336, 369, 369, 277, 369, + 369, 369, 369, 369, 311, 369, 369, 369, 369, 369, + 369, 312, 369, 369, 369, 275, 369, 278, 279, 369, + 369, 369, 369, 369, 276, 280, 0 } ; static const YY_CHAR yy_ec[256] = @@ -809,17 +810,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3675] = +static const flex_int16_t yy_base[3686] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4156, 2779, 81, 7129, - 7129, 7129, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3207, 3099, 81, 7154, + 7154, 7154, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2391, 7129, 7129, 7129, - 107, 2147, 7129, 7129, 7129, 154, 2117, 1982, 7129, 7129, - 7129, 245, 1770, 7129, 7129, 7129, 163, 1609, 7129, 249, - 7129, 253, 148, 1509, 1480, 7129, 7129, 7129, 257, 1324, - 7129, 7129, 7129, 233, 1201, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2733, 7154, 7154, 7154, + 107, 2694, 7154, 7154, 7154, 154, 2684, 2555, 7154, 7154, + 7154, 245, 2449, 7154, 7154, 7154, 163, 2404, 7154, 249, + 7154, 253, 148, 2295, 2105, 7154, 7154, 7154, 257, 1842, + 7154, 7154, 7154, 233, 1413, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -827,8 +828,8 @@ static const flex_int16_t yy_base[3675] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1026, - 419, 993, 422, 933, 429, 800, 757, 433, 713, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1195, + 419, 947, 422, 899, 429, 866, 800, 433, 713, 437, 441, 0, 433, 515, 447, 479, 364, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 493, @@ -844,788 +845,790 @@ static const flex_int16_t yy_base[3675] = 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - 704, 705, 710, 711, 708, 7129, 718, 714, 721, 722, + 704, 705, 710, 711, 708, 7154, 718, 714, 721, 722, 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, - 770, 765, 772, 785, 767, 773, 777, 778, 786, 774, - 780, 798, 812, 790, 808, 809, 795, 813, 814, 815, - 816, 818, 822, 819, 833, 821, 823, 830, 836, 837, - 839, 840, 847, 842, 7129, 844, 852, 866, 853, 862, - 865, 849, 869, 871, 850, 881, 877, 874, 891, 913, - 878, 884, 882, 886, 889, 7129, 896, 893, 937, 895, - 902, 923, 918, 906, 919, 920, 921, 925, 947, 928, + 770, 765, 772, 785, 767, 773, 777, 790, 778, 774, + 780, 786, 807, 796, 813, 798, 810, 814, 816, 817, + 819, 821, 822, 823, 830, 832, 835, 836, 837, 839, + 840, 838, 848, 843, 7154, 845, 847, 867, 851, 859, + 863, 869, 871, 872, 875, 879, 878, 880, 893, 915, + 884, 886, 882, 888, 891, 7154, 898, 895, 939, 908, + 910, 926, 922, 900, 913, 912, 924, 929, 943, 757, - 926, 943, 961, 958, 942, 948, 945, 959, 967, 972, - 969, 971, 973, 974, 983, 883, 976, 975, 989, 978, - 979, 984, 990, 994, 997, 1003, 1007, 1008, 1009, 999, - 1001, 1013, 1014, 1017, 1025, 1048, 1021, 1019, 1030, 1020, - 1037, 1042, 1022, 1038, 1050, 1049, 1051, 1039, 1040, 1055, - 1058, 1067, 1060, 1063, 1076, 1071, 1074, 1077, 1078, 1079, - 1081, 1080, 1085, 1086, 1087, 1088, 1095, 1093, 1094, 1101, - 1103, 1096, 1109, 1107, 7129, 1111, 7129, 1113, 1114, 1115, - 1116, 1118, 1119, 1120, 1121, 7129, 1123, 1126, 1127, 1137, - 1128, 1138, 1145, 1152, 1130, 1148, 1149, 1150, 1151, 1155, + 930, 945, 962, 944, 940, 957, 946, 963, 964, 971, + 969, 972, 973, 974, 981, 976, 978, 982, 986, 980, + 989, 990, 993, 995, 991, 1008, 998, 999, 1012, 1004, + 1009, 1014, 1015, 1017, 1026, 1049, 1022, 1020, 1027, 1021, + 1036, 1043, 1019, 1038, 1047, 1039, 1050, 1041, 1052, 1056, + 1058, 1059, 1060, 1071, 1074, 1075, 1065, 1076, 1077, 1078, + 1084, 1086, 1081, 1087, 1088, 1089, 1090, 1091, 1099, 1094, + 1107, 1104, 1102, 1110, 1112, 7154, 1113, 7154, 1115, 1116, + 1117, 1118, 1119, 1120, 1121, 1130, 7154, 1126, 1129, 1128, + 1137, 1135, 1139, 1143, 1151, 1150, 1153, 1154, 1156, 1157, - 1158, 1169, 1156, 1161, 1172, 1159, 1174, 1171, 1168, 1177, - 1175, 1182, 1178, 1184, 1185, 1186, 1205, 7129, 1187, 1188, - 1195, 1192, 1198, 1203, 1202, 1212, 1223, 1214, 1215, 1222, - 1226, 1239, 1227, 1230, 1191, 1234, 1236, 1247, 1237, 1249, - 1243, 1251, 1245, 1252, 1254, 1255, 1259, 1261, 1265, 1266, - 1268, 7129, 1267, 1271, 1278, 1285, 1280, 1272, 1269, 1283, - 1286, 1289, 1290, 1291, 1293, 1296, 1298, 1300, 1308, 1303, - 1311, 1309, 1310, 1312, 1314, 1317, 1316, 1318, 1323, 1331, - 1328, 1333, 1336, 1344, 1343, 1346, 1353, 1355, 1340, 1348, - 1350, 1356, 1352, 1351, 1360, 1361, 1366, 1363, 1365, 1372, + 1158, 1160, 1170, 1161, 1163, 1174, 1172, 1175, 1176, 1178, + 1179, 1177, 1185, 1184, 1187, 1188, 1191, 1208, 7154, 1190, + 1194, 1196, 1193, 1201, 1212, 1202, 1219, 1221, 1225, 1231, + 1213, 1233, 1241, 1237, 1238, 1244, 1239, 1243, 1205, 1245, + 1248, 1250, 1255, 1251, 1257, 1253, 1259, 1264, 1268, 1260, + 1261, 1274, 7154, 1273, 1271, 1283, 1284, 1285, 1286, 1288, + 1289, 1290, 1291, 1292, 1293, 1298, 1294, 1302, 1312, 1314, + 1304, 1319, 1315, 1317, 1321, 1322, 1323, 1326, 1324, 1325, + 1345, 1334, 1331, 1349, 1338, 1351, 1353, 1342, 1360, 1346, + 1355, 1356, 1358, 1357, 1363, 1365, 1366, 1367, 1370, 1371, - 1373, 1374, 1375, 1377, 1378, 1382, 1380, 1385, 1387, 1388, - 1390, 1389, 1391, 1398, 1397, 1399, 1404, 1401, 1417, 1403, - 1406, 1420, 1423, 1410, 1414, 7129, 1432, 1427, 1430, 1431, - 1434, 1437, 1438, 1442, 1441, 1444, 1447, 1445, 1446, 1449, - 1452, 1453, 1454, 1455, 1456, 1462, 1469, 1464, 1473, 1480, - 1479, 1481, 1467, 1483, 1484, 1487, 1488, 1495, 1491, 1499, - 1500, 1490, 1501, 1494, 1514, 1504, 1505, 1511, 1525, 1502, - 1520, 1522, 1512, 1523, 1526, 1528, 1534, 1542, 1538, 1539, - 1546, 1547, 1541, 1549, 1543, 1553, 1556, 1557, 1558, 1559, - 1560, 1567, 1564, 1563, 1569, 1570, 1565, 1571, 1579, 1573, + 1295, 1380, 1375, 1377, 1378, 1379, 1383, 1385, 1387, 1388, + 1389, 1391, 1392, 1398, 1405, 1401, 1400, 1404, 1403, 1419, + 1411, 1417, 1422, 1423, 1424, 1425, 7154, 1432, 1430, 1431, + 1437, 1442, 1443, 1444, 1435, 1436, 1445, 1448, 1450, 1453, + 1457, 1458, 1459, 1460, 1462, 1464, 1465, 1470, 1472, 1469, + 1468, 1486, 1485, 1487, 1477, 1479, 1489, 1491, 1490, 1500, + 1497, 1504, 1505, 1499, 1501, 1507, 1516, 1512, 1513, 1514, + 1517, 1518, 1520, 1522, 1521, 1530, 1528, 1532, 1540, 1542, + 1538, 1544, 1552, 1547, 1545, 1553, 1554, 1560, 1556, 1557, + 1561, 1563, 1564, 1571, 1568, 1567, 1566, 1577, 1569, 1578, - 1587, 1577, 1586, 1589, 1592, 1593, 1594, 1595, 1598, 1596, - 1602, 1603, 1604, 1605, 1610, 1617, 1606, 1625, 1618, 1608, - 1619, 1626, 1628, 1634, 1635, 1636, 1637, 1638, 1639, 1641, - 1642, 1648, 1645, 1651, 1652, 1655, 1657, 1656, 1670, 1662, - 1671, 1672, 1659, 1675, 1677, 1679, 1660, 1683, 1685, 1688, - 1690, 1680, 7129, 1678, 1702, 1691, 1699, 1698, 1700, 1701, - 1712, 1705, 1707, 1704, 1708, 1709, 1734, 7129, 1715, 7129, - 7129, 1718, 7129, 7129, 1717, 1721, 7129, 1716, 1731, 1723, - 1724, 1741, 1747, 1749, 1744, 1742, 1751, 1752, 1763, 1773, - 1758, 1759, 1761, 1766, 1767, 1762, 1779, 1776, 1768, 1788, + 1583, 1585, 1594, 1589, 1590, 1591, 1580, 1593, 1596, 1598, + 1601, 1605, 1606, 1607, 1608, 1610, 1611, 1617, 1612, 1618, + 1620, 1623, 1628, 1630, 1632, 1633, 1635, 1638, 1636, 1640, + 1641, 1646, 1647, 1650, 1653, 1656, 1657, 1658, 1659, 1661, + 1675, 1660, 1664, 1674, 1662, 1677, 1679, 1681, 1680, 1683, + 1684, 1688, 1691, 1689, 7154, 1690, 1703, 1692, 1700, 1699, + 1702, 1705, 1713, 1706, 1708, 1710, 1716, 1717, 1742, 7154, + 1718, 7154, 7154, 1719, 7154, 7154, 1720, 1724, 7154, 1721, + 1725, 1726, 1722, 1745, 1739, 1752, 1746, 1732, 1734, 1755, + 1765, 1776, 1766, 1758, 1760, 1756, 1767, 1768, 1769, 1779, - 1789, 1769, 1795, 1802, 1790, 1805, 1800, 1803, 1809, 1807, - 1811, 1813, 1817, 1819, 1820, 1822, 1823, 1824, 1826, 1720, - 1828, 1825, 1833, 1830, 1834, 1836, 1835, 1843, 1846, 1839, - 1855, 7129, 1853, 1856, 1842, 1865, 1862, 1866, 1868, 1863, - 1864, 1874, 1876, 1870, 1877, 1879, 1881, 1880, 1882, 1883, - 1886, 1889, 1892, 1890, 1894, 1897, 1896, 1902, 7129, 1903, - 1904, 1906, 1910, 1907, 1908, 1917, 1909, 1918, 1919, 1920, - 1932, 1924, 1934, 1925, 1927, 1936, 1929, 1937, 1939, 7129, - 1947, 1952, 1941, 1954, 1944, 1948, 1956, 1957, 1958, 1960, - 1961, 1963, 1964, 1966, 1977, 1972, 1974, 1973, 1975, 1983, + 1772, 1782, 1770, 1790, 1793, 1803, 1798, 1799, 1801, 1804, + 1806, 1808, 1811, 1812, 1819, 1820, 1821, 1810, 1823, 1824, + 1826, 1828, 1830, 1825, 1832, 1834, 1837, 1838, 1839, 1847, + 1843, 1852, 1859, 7154, 1849, 1862, 1857, 1860, 1869, 1865, + 1872, 1864, 1868, 1871, 1878, 1882, 1875, 1873, 1884, 1886, + 1885, 1887, 1888, 1893, 1895, 1897, 1899, 1901, 1902, 1898, + 1903, 7154, 1908, 1909, 1910, 1914, 1911, 1921, 1923, 1913, + 1915, 1926, 1925, 1937, 1929, 1932, 1930, 1939, 1941, 1942, + 1944, 1946, 7154, 1951, 1948, 1952, 1954, 1955, 1960, 1961, + 1956, 1963, 1965, 1964, 1967, 1968, 1969, 1985, 1975, 1970, - 1987, 1980, 1990, 1991, 1999, 1992, 1995, 2000, 2001, 2002, - 2003, 2005, 2006, 2008, 2012, 2013, 2020, 2016, 2024, 2017, - 2019, 2035, 2040, 2022, 2033, 2036, 2037, 2038, 2043, 2047, - 2051, 2046, 2050, 2053, 2060, 2055, 2058, 2061, 2062, 2069, - 2071, 2063, 2073, 2080, 2064, 2074, 2083, 2076, 7129, 2082, - 2084, 7129, 2089, 2090, 2091, 2113, 2092, 2096, 2099, 2104, - 2101, 2105, 2108, 2097, 2115, 2107, 2131, 2119, 2127, 2132, - 2135, 2137, 2133, 2138, 2139, 2140, 2144, 2146, 2149, 2151, - 2159, 2162, 2166, 2168, 2170, 2169, 2171, 2172, 2174, 2194, - 2173, 2175, 2176, 2177, 2178, 2181, 2188, 2182, 2183, 2184, + 1977, 1972, 1989, 1990, 1992, 1994, 1997, 1999, 1995, 2001, + 2004, 2005, 2007, 2006, 2009, 2010, 2012, 2016, 2017, 2024, + 2019, 2028, 2020, 2023, 2041, 2044, 2042, 2030, 2027, 2040, + 2037, 2050, 2054, 2059, 2052, 2056, 2057, 2066, 2061, 2063, + 2064, 2067, 2068, 2079, 2065, 2083, 2075, 2069, 2077, 2085, + 2088, 7154, 2089, 2092, 7154, 2095, 2094, 2096, 2118, 2098, + 2100, 2101, 2103, 2105, 2111, 2109, 2112, 2120, 2119, 2137, + 2132, 2128, 2140, 2135, 2138, 2110, 2146, 2145, 2147, 2148, + 2149, 2152, 2154, 2161, 2169, 2170, 2172, 2178, 2180, 2155, + 2165, 2167, 2186, 2176, 2190, 2175, 2179, 2181, 2193, 2196, - 2187, 2199, 2207, 2204, 2205, 2210, 2211, 2212, 2216, 2219, - 2221, 2222, 7129, 2229, 2232, 2224, 2226, 2233, 2244, 2236, - 2237, 7129, 2239, 2240, 2245, 2253, 2250, 2251, 2252, 2254, - 2255, 2258, 2260, 2262, 2264, 2275, 2263, 2282, 7129, 2267, - 7129, 2265, 2266, 2284, 2268, 2277, 2285, 2290, 2288, 2292, - 7129, 7129, 2294, 2295, 2300, 2302, 2312, 2298, 2308, 2309, - 7129, 2310, 2317, 7129, 2314, 2313, 2321, 2319, 2320, 2325, - 2327, 2329, 2331, 2336, 2332, 2343, 2334, 2339, 2347, 7129, - 2350, 2335, 2348, 2353, 2354, 2355, 2356, 2357, 2363, 2360, - 7129, 2364, 2366, 2367, 2380, 2376, 2377, 2378, 2381, 2387, + 2183, 2197, 2201, 2202, 2203, 2213, 2209, 2210, 2208, 2215, + 2216, 2217, 2224, 2225, 2218, 7154, 2233, 2236, 2228, 2232, + 2230, 2246, 2244, 2241, 7154, 2242, 2245, 2248, 2256, 2252, + 2253, 2257, 2255, 2259, 2258, 2265, 2267, 2270, 2263, 2266, + 2274, 7154, 2271, 7154, 2280, 2281, 2284, 2288, 2285, 2286, + 2290, 2291, 2292, 2293, 7154, 7154, 2302, 2296, 2309, 2317, + 2318, 2313, 2299, 2303, 7154, 2315, 2325, 7154, 2326, 2320, + 2329, 2323, 2321, 2328, 2333, 2334, 2338, 2342, 2339, 2346, + 2343, 2345, 2348, 7154, 2354, 2349, 2356, 2360, 2361, 2357, + 2363, 2364, 2370, 2367, 7154, 2368, 2371, 2376, 2384, 2381, - 2379, 2383, 2385, 2389, 2390, 2399, 2400, 2401, 2404, 2406, - 2413, 2410, 2414, 7129, 2412, 2398, 2418, 2425, 2421, 2423, - 2420, 2424, 2427, 2428, 2430, 2431, 2436, 2437, 2435, 2441, - 2442, 2443, 2450, 2451, 2452, 2453, 2456, 2447, 2457, 2460, - 2461, 2468, 2463, 2465, 2469, 2470, 7129, 2473, 2476, 2477, - 2478, 2482, 2480, 171, 2484, 2486, 2490, 2489, 2496, 2504, - 2491, 2499, 2512, 2497, 2509, 2508, 2515, 2507, 2516, 2517, - 2518, 2519, 2524, 2525, 2523, 7129, 2527, 2529, 2528, 2532, - 2535, 2534, 2539, 7129, 2545, 2536, 2551, 2560, 2550, 2548, - 2561, 2552, 2563, 2565, 2567, 2566, 2568, 2575, 2573, 2570, + 2383, 2385, 2386, 2390, 2388, 2393, 2394, 2395, 2396, 2405, + 2407, 2408, 2410, 2411, 2419, 2417, 2424, 7154, 2420, 2421, + 2423, 2432, 2428, 2430, 2427, 2431, 2437, 2434, 2435, 2397, + 2438, 2444, 2445, 2446, 2447, 2448, 2457, 2462, 2453, 2458, + 2461, 2465, 2466, 2469, 2470, 2475, 2472, 2473, 2474, 2476, + 7154, 2477, 2479, 2483, 2487, 2489, 2485, 171, 2486, 2495, + 2497, 2498, 2499, 2507, 2502, 2517, 2518, 2504, 2514, 2513, + 2516, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2531, 7154, + 2533, 2534, 2536, 2540, 2539, 2542, 2547, 7154, 2549, 2556, + 2559, 2568, 2551, 2560, 2569, 2565, 2570, 2571, 2573, 2575, - 2576, 2577, 7129, 2583, 2586, 2588, 2579, 2589, 2597, 2595, - 2590, 2592, 2598, 2600, 2606, 2602, 2608, 2610, 2611, 2613, - 2616, 2615, 2624, 2614, 2619, 2626, 2623, 2625, 2628, 2627, - 2633, 2636, 2643, 2641, 7129, 2648, 2645, 2649, 2647, 2650, - 2652, 2654, 2653, 2672, 2656, 2662, 2664, 2673, 2678, 2667, - 2681, 2688, 2684, 2689, 2693, 2698, 2695, 2699, 2705, 2696, - 2707, 2709, 2703, 2710, 2719, 2711, 2715, 2716, 2718, 2722, - 2730, 2731, 2729, 2733, 2726, 2727, 2744, 2738, 2750, 2756, - 2746, 7129, 2755, 2748, 2742, 2758, 2760, 2767, 2764, 2765, - 2770, 2768, 2771, 2772, 2774, 2778, 2783, 2784, 2657, 2781, + 2577, 2582, 2581, 2579, 2585, 2583, 7154, 2591, 2587, 2595, + 2597, 2598, 2601, 2599, 2604, 2606, 2607, 2610, 2609, 2611, + 2615, 2612, 2614, 2616, 2623, 2625, 2636, 2628, 2632, 2633, + 2638, 2620, 2637, 2641, 2643, 2644, 2651, 2646, 7154, 2656, + 2647, 2655, 2657, 2654, 2661, 2658, 2664, 2673, 2670, 2671, + 2675, 2678, 2690, 2680, 2683, 2687, 2696, 2700, 2701, 2708, + 2706, 2707, 2714, 2704, 2716, 2718, 2719, 2720, 2728, 2724, + 2726, 2729, 2731, 2730, 2732, 2740, 2743, 2741, 2682, 2742, + 2745, 2747, 2748, 2756, 2769, 2753, 7154, 2768, 2758, 2751, + 2760, 2770, 2781, 2774, 2776, 2777, 2785, 2784, 2786, 2787, - 2786, 2790, 2788, 2794, 2797, 2796, 2798, 2801, 2808, 2805, - 2810, 2811, 7129, 2812, 2816, 2799, 2817, 2825, 2819, 2828, - 2829, 2831, 2822, 2832, 2833, 2835, 2837, 2838, 2841, 2840, - 2848, 2845, 2847, 2849, 2846, 7129, 2858, 2852, 2859, 2863, - 2862, 2865, 2866, 2873, 2877, 2879, 2881, 2883, 2869, 2885, - 2886, 2889, 7129, 2896, 2898, 2894, 2895, 2903, 2901, 2904, - 2905, 2907, 2908, 7129, 2909, 2911, 2912, 2915, 2913, 2917, - 2924, 2925, 2920, 7129, 2927, 2931, 2932, 2934, 2935, 2936, - 2937, 2938, 2941, 2942, 2944, 2943, 2957, 2946, 2953, 7129, - 2949, 2965, 2960, 2963, 2966, 2970, 2971, 2973, 2975, 2976, + 2788, 2795, 2790, 2792, 2800, 2796, 2807, 2797, 2794, 2809, + 2801, 2813, 2815, 2818, 2814, 2822, 2823, 7154, 2824, 2826, + 2828, 2830, 2833, 2834, 2836, 2840, 2837, 2843, 2844, 2845, + 2849, 2850, 2846, 2852, 2851, 2859, 2856, 2858, 2860, 2857, + 7154, 2869, 2868, 2873, 2874, 2876, 2877, 2880, 2884, 2878, + 2887, 2893, 2891, 2885, 2895, 2897, 2898, 7154, 2905, 2906, + 2902, 2908, 2915, 2910, 2912, 2914, 2917, 2918, 7154, 2921, + 2922, 1122, 2920, 2923, 2924, 2933, 2934, 2930, 7154, 2945, + 2932, 2929, 2937, 2941, 2942, 2944, 2950, 2948, 2954, 2955, + 2958, 2960, 2961, 2964, 7154, 2966, 2971, 2972, 2967, 2974, - 2977, 2981, 7129, 2993, 2871, 2989, 2998, 2982, 2990, 2994, - 2999, 3002, 3003, 2996, 3005, 3006, 3009, 7129, 3010, 3013, - 3015, 3017, 3019, 3020, 3021, 3028, 3027, 3026, 3030, 3032, - 3035, 3036, 3034, 3043, 3037, 3047, 3041, 3045, 3054, 3055, - 3057, 3058, 3060, 3061, 3070, 3071, 3068, 3073, 3076, 3077, - 3069, 3078, 3079, 3087, 3092, 3094, 3089, 3095, 7129, 3098, - 3100, 3093, 3091, 3101, 3105, 3103, 3107, 3110, 3106, 3108, - 3120, 3121, 3112, 3128, 3130, 3123, 3132, 3134, 3136, 3137, - 3139, 3138, 3140, 3141, 3148, 3145, 3147, 3149, 3158, 3151, - 3156, 3169, 3154, 3161, 3164, 3165, 3166, 3168, 3171, 3172, + 2975, 2977, 2978, 2983, 2986, 2997, 2980, 7154, 2987, 2998, + 3000, 3007, 3003, 3004, 3005, 3008, 3009, 3010, 3016, 3012, + 3019, 3017, 7154, 3021, 3018, 3020, 3025, 3027, 3028, 3029, + 3039, 3040, 3041, 3042, 3044, 3045, 3047, 3049, 3050, 3056, + 3054, 3051, 3043, 3065, 3066, 3070, 3071, 3053, 3075, 3078, + 3083, 3079, 3081, 3087, 3084, 3088, 3089, 3091, 3098, 3100, + 3101, 3102, 3105, 7154, 3108, 3109, 3111, 3097, 3112, 3114, + 3116, 3119, 3117, 3121, 3122, 3129, 3123, 3132, 3139, 3146, + 3135, 3142, 3144, 3147, 3148, 3149, 3150, 3136, 3152, 3159, + 3160, 3158, 3161, 3162, 3173, 3164, 3168, 3177, 3172, 3175, - 3176, 3178, 3174, 3179, 3188, 3190, 3195, 3186, 3197, 3196, - 3199, 3202, 3203, 3204, 7129, 3207, 3208, 3205, 3212, 3215, - 3218, 3219, 3227, 3222, 3226, 3234, 3230, 3229, 3236, 3238, - 3241, 3242, 3243, 3250, 3246, 7129, 3247, 7129, 3248, 3249, - 3252, 3261, 3256, 7129, 3267, 7129, 3257, 3271, 3262, 3264, - 3268, 7129, 3272, 3273, 3277, 3274, 3279, 3281, 3285, 3286, - 3287, 3288, 3289, 3296, 3291, 3295, 3298, 3302, 3301, 3305, - 3308, 3310, 3311, 3313, 3312, 3315, 3319, 3320, 3321, 3328, - 3330, 3331, 3332, 3333, 3334, 7129, 3338, 3341, 3335, 3346, - 3343, 3345, 3347, 3353, 3354, 3355, 3356, 3360, 3358, 3362, + 3179, 3180, 3181, 3182, 3184, 3186, 3189, 3192, 3185, 3187, + 3197, 3203, 3208, 3210, 3212, 3211, 3213, 3214, 3217, 3219, + 7154, 3218, 3222, 3220, 3226, 3229, 3232, 3234, 3243, 3233, + 3240, 3247, 3244, 3250, 3251, 3242, 3252, 3256, 3257, 3264, + 3260, 7154, 3261, 7154, 3263, 3266, 3267, 3275, 3272, 7154, + 3274, 7154, 3278, 3283, 3280, 3285, 3286, 7154, 3287, 3276, + 3288, 3289, 3291, 3293, 3295, 3299, 3300, 3304, 3303, 3312, + 3313, 3307, 3305, 3315, 3318, 3321, 3324, 3322, 3326, 3327, + 3331, 3329, 3333, 3334, 3338, 3335, 3340, 3342, 3345, 3347, + 3350, 7154, 3352, 3358, 3356, 3360, 3348, 3362, 3363, 3367, - 3367, 3370, 3364, 3371, 3374, 3381, 3383, 3375, 3390, 7129, - 3385, 3388, 3389, 3392, 7129, 3396, 3393, 3402, 3404, 3397, - 3394, 3400, 3406, 3413, 3407, 3410, 3416, 3420, 3424, 3427, - 3428, 7129, 3421, 3429, 3419, 3437, 3442, 3433, 3445, 3449, - 3446, 3452, 3454, 3456, 3458, 3435, 3459, 3460, 3461, 3462, - 3470, 3472, 3473, 3469, 3482, 3468, 3475, 3484, 3485, 3471, - 3478, 3486, 3487, 3488, 3492, 3494, 3493, 3495, 3496, 3497, - 3503, 3509, 7129, 3501, 3512, 3504, 3521, 3510, 3518, 3519, - 3514, 3523, 3531, 3527, 7129, 3538, 3525, 3535, 3529, 3542, - 3533, 3546, 3547, 3549, 3550, 3551, 3554, 3553, 3552, 7129, + 3368, 3370, 3371, 3373, 3374, 3376, 3384, 3379, 3385, 3381, + 3389, 3392, 3399, 3398, 3406, 7154, 3402, 3404, 3405, 3407, + 7154, 3409, 3408, 3410, 3419, 3412, 3415, 3421, 3422, 3427, + 3417, 3429, 3423, 3431, 3444, 3440, 3439, 7154, 3446, 3447, + 3448, 3450, 3457, 3430, 3465, 3466, 3462, 3463, 3468, 3476, + 3472, 3461, 3471, 3475, 3478, 3479, 3486, 3487, 3490, 3483, + 3491, 3492, 3495, 3497, 3499, 3493, 3501, 3503, 3505, 3502, + 3506, 3509, 3508, 3507, 3510, 3517, 3512, 3527, 7154, 3518, + 3524, 3528, 3535, 3513, 3537, 3538, 3540, 3539, 3543, 3546, + 7154, 3548, 3545, 3551, 3549, 3562, 3552, 3550, 3557, 3559, - 3555, 7129, 3556, 3569, 3558, 3564, 3573, 3574, 3576, 3578, - 3580, 3582, 3583, 3584, 3586, 3589, 3590, 3594, 3595, 3598, - 3596, 3615, 3600, 3597, 3602, 3611, 3612, 3613, 3616, 3626, - 3618, 3617, 7129, 7129, 3619, 3621, 3633, 3628, 3635, 3636, - 3637, 3640, 3647, 3643, 3646, 3649, 3650, 3658, 7129, 3653, - 3654, 3660, 3661, 3662, 3671, 3663, 3673, 3680, 3678, 3675, - 3685, 3684, 7129, 3677, 3686, 3693, 3688, 3695, 3702, 7129, - 3691, 7129, 3692, 3694, 3703, 3706, 3705, 3707, 3708, 3709, - 3712, 3715, 3717, 3720, 3730, 3732, 3733, 3727, 3735, 3723, - 3728, 3737, 3739, 3742, 3750, 3745, 3747, 3748, 7129, 3752, + 3566, 3568, 3569, 3570, 3571, 7154, 3573, 7154, 3572, 3586, + 3585, 3591, 3580, 3578, 3595, 3600, 3594, 3601, 3603, 3602, + 3604, 3606, 3609, 3610, 3612, 3613, 3615, 3614, 3622, 3618, + 3629, 3619, 3630, 3631, 3633, 3634, 3641, 3637, 3644, 7154, + 7154, 3638, 3646, 3651, 3645, 3653, 3657, 3654, 3660, 3658, + 3668, 3662, 3665, 3671, 3678, 7154, 3674, 3676, 3679, 3682, + 3681, 3690, 3685, 3693, 3700, 3697, 3696, 3704, 3699, 7154, + 3706, 3707, 3714, 3709, 3715, 3717, 7154, 3712, 7154, 3713, + 3716, 3719, 3723, 3725, 3727, 3728, 3733, 3734, 3729, 3737, + 3740, 3750, 3752, 3745, 3749, 3754, 3755, 3756, 3757, 3759, - 3749, 3753, 3754, 3758, 3760, 3768, 3761, 3762, 7129, 3764, - 3771, 3774, 3772, 3776, 3782, 3779, 3783, 3786, 3788, 3789, - 3790, 3792, 3794, 7129, 3793, 3796, 3807, 3799, 3800, 3802, - 3810, 3814, 3820, 7129, 3821, 3813, 3829, 3825, 3815, 3828, - 3831, 3832, 3833, 3835, 3836, 3837, 3838, 3839, 3844, 3845, - 3841, 3840, 3847, 3858, 3859, 3850, 3869, 3857, 3861, 7129, - 3871, 3866, 3872, 3873, 3874, 3875, 3876, 3878, 3881, 3884, - 3886, 3896, 3897, 3888, 3893, 3899, 3901, 3903, 3908, 3910, - 7129, 3911, 3904, 3918, 3916, 3915, 3923, 3925, 3917, 3927, - 3929, 3919, 3930, 3931, 3933, 3941, 3939, 3949, 3945, 3935, + 3760, 3769, 3764, 3765, 3766, 7154, 3768, 3770, 3778, 3772, + 3771, 3780, 3783, 3787, 3779, 7154, 3789, 3792, 3794, 3793, + 3795, 3799, 3803, 3804, 3806, 3808, 3809, 3811, 3812, 3814, + 7154, 3813, 3815, 3827, 3817, 3819, 3828, 3831, 3833, 3839, + 7154, 3840, 3841, 3848, 3844, 3846, 3847, 3851, 3852, 3853, + 3855, 3856, 3857, 3859, 3860, 3865, 3861, 3863, 3870, 3866, + 3878, 3880, 3867, 3888, 3895, 3881, 7154, 3884, 3891, 3893, + 3897, 3894, 3896, 3901, 3903, 3906, 3908, 3899, 3921, 3922, + 3909, 3911, 3916, 3925, 3927, 3934, 3926, 7154, 3939, 3918, + 3941, 3938, 3940, 3942, 3947, 3944, 3948, 3950, 3951, 3952, - 3947, 3946, 3954, 3950, 3952, 3953, 3956, 7129, 3968, 3963, - 3969, 3971, 3974, 3975, 3982, 3978, 3979, 3980, 3989, 3981, - 3991, 3983, 3986, 3993, 3996, 3997, 7129, 7129, 4005, 3998, - 4000, 7129, 4002, 4006, 4016, 4012, 4014, 4015, 4018, 4019, - 4020, 4021, 4024, 4022, 4030, 7129, 4037, 4034, 4038, 4035, - 4042, 4050, 4041, 7129, 4040, 4051, 4053, 4056, 4054, 4057, - 4058, 4060, 4062, 4064, 4066, 4067, 4068, 4070, 4080, 4081, - 4073, 4077, 4082, 7129, 4083, 4084, 4090, 4088, 4089, 4091, - 4096, 7129, 4097, 4100, 4098, 4101, 4105, 4109, 4115, 4112, - 4118, 4120, 4121, 4124, 4122, 4125, 4126, 4129, 4136, 4132, + 3954, 3955, 3956, 3958, 3967, 3962, 3968, 3969, 3970, 3977, + 3972, 3978, 3979, 3980, 7154, 3995, 3982, 3984, 3991, 3997, + 4000, 4007, 4002, 3983, 4004, 4006, 4009, 4012, 4010, 4014, + 4016, 4019, 4020, 7154, 7154, 4022, 4023, 4024, 7154, 4028, + 4026, 4038, 4027, 4031, 4042, 4029, 4034, 4039, 4044, 4051, + 4054, 4052, 4056, 7154, 4063, 4059, 4066, 4061, 4058, 4068, + 4067, 7154, 4070, 4079, 4075, 4071, 4082, 4080, 4083, 4085, + 4084, 4086, 4090, 4088, 4092, 4096, 4100, 4105, 4101, 4102, + 4107, 7154, 4108, 4109, 4110, 4113, 4114, 4116, 4119, 7154, + 4120, 4122, 4123, 4130, 4132, 4143, 4125, 4133, 4146, 4137, - 4133, 4134, 4131, 4138, 4151, 4153, 7129, 4147, 4154, 4140, - 4158, 4162, 7129, 4167, 4174, 4175, 7129, 4177, 4155, 4159, - 4172, 4182, 7129, 4178, 4179, 4180, 4185, 4187, 4194, 4189, - 4197, 4196, 4198, 4193, 4199, 4202, 7129, 4203, 4200, 4201, - 7129, 4205, 4209, 4221, 4223, 4207, 4224, 4225, 4228, 4226, - 4229, 7129, 4230, 7129, 4234, 4236, 4239, 7129, 4241, 4242, - 4244, 4246, 4243, 4250, 4251, 4257, 4259, 4247, 4261, 4262, - 4263, 4264, 4266, 4275, 4265, 4272, 4273, 4274, 7129, 4277, - 4276, 4284, 4286, 4279, 4296, 4292, 4290, 4285, 4298, 4287, - 7129, 7129, 4305, 7129, 4307, 4308, 4309, 4311, 7129, 4313, + 4140, 4147, 4148, 4150, 4151, 4152, 4161, 4156, 4160, 4157, + 4163, 4165, 4167, 4169, 7154, 4177, 4178, 4159, 4180, 4182, + 7154, 4184, 4193, 4196, 7154, 4197, 4188, 4195, 4198, 4205, + 7154, 4201, 4202, 4203, 4207, 4204, 4217, 4209, 4218, 4220, + 4216, 4221, 4222, 4224, 7154, 4225, 4223, 4228, 7154, 4240, + 4238, 4245, 4247, 4230, 4232, 4248, 4251, 4249, 4252, 7154, + 4253, 7154, 4257, 4259, 4262, 7154, 4264, 4265, 4267, 4269, + 4266, 4273, 4274, 4280, 4282, 4270, 4284, 4285, 4286, 4287, + 4289, 4298, 4288, 4295, 4296, 4297, 7154, 4300, 4299, 4307, + 4309, 4302, 4319, 4315, 4313, 4308, 4321, 4310, 7154, 7154, - 4312, 4320, 4315, 4316, 4319, 4318, 4323, 4329, 7129, 4331, - 4333, 7129, 4335, 4338, 4345, 4340, 4341, 4342, 4343, 4346, - 4350, 4349, 4353, 4355, 4356, 4357, 4352, 4366, 4361, 4374, - 4360, 4379, 7129, 4362, 4372, 4377, 4387, 4384, 4380, 4388, - 4392, 4390, 7129, 4394, 4401, 4393, 4404, 4405, 7129, 4406, - 7129, 4396, 4407, 4408, 4417, 4413, 4424, 7129, 4421, 4422, - 4426, 4427, 4428, 4429, 4430, 4434, 4437, 4438, 4440, 4447, - 4443, 4444, 4442, 4451, 4458, 7129, 4446, 4449, 4452, 4462, - 4467, 4459, 4469, 4471, 4478, 4474, 4473, 4476, 4477, 4481, - 4483, 4486, 4488, 4490, 4492, 4482, 7129, 4498, 4496, 4501, + 4328, 7154, 4330, 4331, 4332, 4334, 7154, 4336, 4335, 4343, + 4338, 4339, 4342, 4341, 4346, 4352, 7154, 4354, 4356, 7154, + 4358, 4361, 4368, 4363, 4364, 4365, 4366, 4369, 4373, 4372, + 4376, 4378, 4379, 4380, 4375, 4389, 4384, 4397, 4383, 4402, + 7154, 4385, 4395, 4400, 4410, 4407, 4403, 4411, 4415, 4413, + 7154, 4417, 4424, 4416, 4427, 4428, 7154, 4429, 7154, 4419, + 4430, 4431, 4440, 4436, 4447, 4444, 7154, 4446, 4445, 4450, + 4451, 4452, 4454, 4453, 4460, 4461, 4462, 4463, 4472, 4468, + 4469, 4474, 4476, 4481, 7154, 4471, 4478, 4484, 4488, 4493, + 4491, 4485, 4495, 4503, 4499, 4505, 4498, 4501, 4511, 4506, - 4504, 4512, 4507, 4509, 4510, 7129, 4514, 4515, 4516, 7129, - 4517, 4523, 4524, 4528, 4529, 4532, 4534, 4535, 4513, 4539, - 4540, 4536, 7129, 4537, 4542, 4544, 4556, 4557, 4558, 4545, - 7129, 7129, 4559, 7129, 4560, 4546, 4568, 4570, 4548, 4571, - 4575, 4572, 4577, 4579, 4582, 4585, 4586, 4587, 7129, 4584, - 4596, 4592, 4599, 4608, 4610, 4606, 4605, 4595, 7129, 7129, - 4612, 4616, 4618, 4620, 4621, 4623, 4607, 4630, 4628, 4636, - 4639, 4629, 4632, 7129, 4640, 4641, 4643, 4645, 7129, 4646, - 4648, 4649, 4651, 4650, 4652, 4657, 4654, 4658, 4656, 4660, - 4664, 4662, 4675, 4667, 4669, 4676, 4679, 4681, 4682, 4683, + 4512, 4519, 4514, 4521, 4522, 7154, 4524, 4525, 4527, 4530, + 4539, 4531, 4532, 4535, 7154, 4536, 4544, 4545, 7154, 4542, + 4546, 4552, 4557, 4553, 4558, 4559, 4562, 4560, 4565, 4567, + 4563, 7154, 4569, 4572, 4570, 4575, 4583, 4564, 4574, 7154, + 7154, 4587, 7154, 4589, 4586, 4596, 4594, 4591, 4598, 4600, + 4601, 4603, 4597, 4604, 4613, 4614, 4605, 7154, 4608, 4626, + 4621, 4630, 4628, 4631, 4632, 4633, 4634, 7154, 7154, 4637, + 4638, 4640, 4645, 4646, 4648, 4650, 4657, 4656, 4658, 4663, + 4665, 4672, 7154, 4667, 4655, 4669, 4674, 7154, 4652, 4676, + 4678, 4680, 4679, 4682, 4683, 4685, 4686, 4687, 4689, 4692, - 4684, 4689, 7129, 4690, 4686, 4692, 4693, 4697, 4699, 4703, - 4704, 4701, 4706, 4714, 7129, 4709, 7129, 4715, 4707, 4710, - 4717, 4718, 4730, 4726, 4732, 4733, 4734, 4736, 4739, 4740, - 4743, 4745, 4749, 4744, 4751, 4754, 4756, 7129, 4762, 4763, - 4768, 4765, 4771, 4773, 4775, 7129, 4776, 4778, 4779, 4782, - 4784, 4786, 4787, 4789, 4737, 4791, 4792, 4795, 4797, 4802, - 4803, 4804, 4793, 4805, 4808, 7129, 4809, 4812, 4815, 4821, - 4818, 4823, 4816, 4826, 4824, 4831, 4832, 4833, 4835, 7129, - 4838, 4839, 4842, 4849, 7129, 4844, 4845, 4846, 4847, 4850, - 4856, 4852, 4861, 4857, 4859, 7129, 4868, 4863, 4870, 4865, + 4693, 4697, 4698, 4703, 4704, 4706, 4707, 4710, 4711, 4712, + 4714, 7154, 4717, 4719, 4720, 4721, 4723, 4727, 4728, 4731, + 4732, 4733, 4741, 7154, 4734, 7154, 4737, 4742, 4753, 4743, + 4748, 4758, 4755, 4761, 4762, 4763, 4765, 4767, 4769, 4772, + 4774, 4778, 4766, 4773, 4782, 4785, 7154, 4784, 4790, 4792, + 4794, 4797, 4799, 4800, 7154, 4802, 4801, 4804, 4808, 4810, + 4812, 4813, 4815, 4816, 4818, 4822, 4823, 4826, 4830, 4819, + 4827, 4831, 4839, 4835, 4840, 7154, 4841, 4843, 4844, 4851, + 4847, 4852, 4854, 4853, 4861, 4867, 4845, 4855, 4869, 7154, + 4858, 4868, 4875, 4878, 7154, 4876, 4879, 4880, 4882, 4881, - 4873, 4875, 4880, 4876, 4881, 4878, 4884, 4885, 7129, 4896, - 4889, 4892, 4894, 4898, 4900, 4904, 4906, 4907, 4908, 7129, - 4909, 4911, 4917, 4918, 4926, 4927, 4910, 4924, 4935, 4932, - 4936, 4919, 4930, 4942, 4928, 4938, 4940, 4946, 4950, 4951, - 4958, 4960, 4953, 7129, 4956, 7129, 4961, 4962, 4963, 4972, - 4968, 4970, 4973, 4975, 4967, 7129, 4978, 4982, 4984, 4985, - 4986, 7129, 4990, 4988, 4991, 4993, 7129, 4996, 4992, 5001, - 5003, 5008, 5009, 7129, 5012, 5013, 5014, 5023, 5024, 5020, - 5026, 5022, 5027, 5030, 5031, 5032, 5033, 5041, 5038, 5039, - 7129, 5043, 5037, 5049, 5050, 5053, 5054, 5056, 5046, 5057, + 4884, 4886, 4888, 4889, 4891, 7154, 4899, 4890, 4895, 4900, + 4901, 4907, 4908, 4892, 4911, 4913, 4915, 4921, 7154, 4926, + 4916, 4927, 4929, 4930, 4931, 4933, 4936, 4935, 4937, 7154, + 4938, 4942, 4946, 4949, 4956, 4958, 4948, 4953, 4965, 4957, + 4961, 4960, 4967, 4970, 4971, 4972, 4974, 4975, 4977, 4976, + 4988, 4993, 4992, 7154, 4978, 7154, 4979, 4994, 5000, 4995, + 5004, 4997, 5007, 5009, 5002, 7154, 5010, 5011, 5016, 5017, + 5012, 7154, 5018, 5019, 5023, 5025, 7154, 5028, 5029, 5020, + 5033, 5042, 5043, 7154, 5047, 5036, 5048, 5055, 5056, 5051, + 5058, 5052, 5061, 5059, 5054, 5063, 5064, 5073, 5069, 5070, - 5060, 5062, 7129, 5064, 5067, 5068, 5070, 5071, 5072, 5073, - 5074, 5083, 5078, 5080, 5082, 5086, 5089, 5091, 5092, 5095, - 7129, 5097, 5098, 5099, 5107, 5112, 5102, 5115, 7129, 5111, - 7129, 5116, 5118, 5121, 5123, 5124, 7129, 5128, 5133, 5103, - 5134, 7129, 7129, 5137, 5144, 5127, 5143, 5140, 7129, 7129, - 5146, 7129, 5147, 7129, 5148, 5150, 7129, 7129, 5151, 5152, - 5153, 5154, 5155, 5158, 7129, 5164, 7129, 5167, 5168, 5169, - 5171, 5172, 5175, 7129, 5173, 5176, 5177, 5181, 5183, 7129, - 5184, 5186, 5185, 5196, 5197, 5198, 7129, 5202, 5203, 5199, - 5204, 7129, 5207, 5210, 5211, 5205, 5212, 5214, 5219, 5226, + 7154, 5072, 5074, 5079, 5080, 5081, 5084, 5087, 5088, 5090, + 5092, 5089, 7154, 5095, 5097, 5098, 5099, 5101, 5103, 5104, + 5105, 5112, 5114, 5121, 5109, 5111, 5113, 5123, 5116, 5126, + 7154, 5129, 5131, 5133, 5140, 5142, 5135, 5144, 7154, 5139, + 7154, 5145, 5149, 5150, 5152, 5153, 7154, 5157, 5158, 5156, + 5164, 7154, 7154, 5162, 5173, 5168, 5170, 5172, 7154, 7154, + 5175, 7154, 5171, 7154, 5176, 5177, 7154, 7154, 5178, 5179, + 5185, 7154, 5186, 5187, 5195, 7154, 5197, 7154, 5204, 5188, + 5199, 5201, 5202, 5207, 7154, 5184, 5210, 5209, 5211, 5215, + 7154, 5216, 5218, 5219, 5226, 5222, 5228, 7154, 5230, 5231, - 5217, 5220, 5225, 5230, 5229, 5232, 5233, 5240, 5242, 5244, - 5246, 5236, 5251, 5247, 5250, 5256, 5258, 5260, 5254, 5262, - 5263, 5264, 5267, 5269, 5271, 5268, 5273, 5277, 5278, 5280, - 5274, 5283, 5281, 5291, 5292, 5294, 5295, 5299, 5296, 5301, - 5302, 5303, 5304, 5306, 5307, 5309, 5308, 5312, 5318, 5313, - 5320, 5325, 7129, 5316, 5326, 5327, 5329, 5333, 5336, 5337, - 5339, 5344, 5345, 7129, 5351, 7129, 5353, 5349, 5355, 5356, - 5357, 7129, 5358, 5359, 5360, 5361, 5362, 5363, 5368, 5364, - 5369, 5373, 5379, 7129, 5385, 5393, 5374, 5376, 5386, 5397, - 7129, 5390, 5401, 5394, 5402, 5403, 5404, 5407, 5405, 5406, + 5233, 5235, 7154, 5236, 5239, 5241, 5242, 5245, 5244, 5250, + 5247, 5248, 5251, 5256, 5258, 5259, 5261, 5264, 5267, 5271, + 5273, 5275, 5276, 5278, 5277, 5282, 5283, 5285, 5289, 5291, + 5292, 5293, 5294, 5296, 5297, 5299, 5300, 5302, 5307, 5304, + 5309, 5310, 5311, 5316, 5320, 5321, 5323, 5324, 5330, 5325, + 5332, 5327, 5335, 5333, 5336, 5337, 5339, 5345, 5338, 5341, + 5348, 5349, 5352, 7154, 5354, 5356, 5358, 5359, 5363, 5365, + 5366, 5369, 5374, 5375, 7154, 5379, 7154, 5382, 5384, 5385, + 5386, 5388, 7154, 5387, 5390, 5389, 5392, 5391, 5393, 5395, + 5394, 5398, 5399, 5409, 7154, 5415, 5421, 5404, 5401, 5422, - 5409, 5408, 5410, 5414, 5416, 5418, 5419, 5426, 7129, 5429, - 5431, 5439, 5434, 5435, 5436, 5440, 5441, 5442, 5444, 5445, - 5446, 5448, 5449, 5450, 5456, 5462, 5458, 5467, 5472, 7129, - 5454, 7129, 5474, 5463, 5475, 5476, 5479, 5480, 5477, 5481, - 7129, 7129, 5478, 5486, 5488, 5490, 5492, 5493, 5495, 5499, - 5501, 5502, 7129, 5503, 5505, 5508, 5509, 5522, 5512, 7129, - 5515, 5517, 5519, 5524, 7129, 5526, 5527, 5528, 5533, 5541, - 5529, 5543, 5544, 5545, 5531, 5546, 5535, 5551, 7129, 7129, - 7129, 7129, 5552, 5556, 5557, 5560, 5561, 5562, 5563, 5564, - 5568, 5569, 5567, 5570, 5571, 7129, 5581, 7129, 7129, 5582, + 5425, 7154, 5426, 5428, 5429, 5430, 5432, 5433, 5434, 5436, + 5437, 5441, 5439, 5438, 5443, 5452, 5444, 5453, 5456, 7154, + 5460, 5466, 5467, 5463, 5468, 5469, 5470, 5473, 5472, 5475, + 5476, 5478, 5479, 5480, 5482, 5483, 5490, 5494, 5495, 5501, + 7154, 5485, 7154, 5503, 5505, 5506, 5507, 5508, 5509, 5510, + 5515, 7154, 7154, 5511, 5517, 5516, 5521, 5522, 5523, 5526, + 5528, 5529, 5532, 7154, 5533, 5538, 5540, 5543, 5550, 5542, + 7154, 5545, 5551, 5552, 5557, 7154, 5554, 5558, 5559, 5561, + 5565, 5568, 5570, 5573, 5574, 5575, 5576, 5577, 5580, 7154, + 7154, 7154, 7154, 5581, 5584, 5585, 5590, 5586, 5592, 5595, - 7129, 5583, 5584, 5589, 5585, 5572, 5592, 5595, 7129, 5596, - 7129, 5597, 5599, 5600, 5606, 5608, 5609, 5610, 5613, 5616, - 5617, 5618, 5619, 5626, 5625, 5627, 5624, 5633, 5632, 5635, - 7129, 7129, 5640, 5642, 5643, 5650, 5647, 5651, 5645, 5654, - 5657, 5655, 5658, 5662, 5663, 5664, 5672, 5674, 5665, 5669, - 5676, 7129, 5673, 5678, 5679, 7129, 5684, 7129, 5686, 5687, - 5688, 5689, 5690, 5695, 5697, 5698, 5700, 5705, 7129, 7129, - 5694, 5708, 5711, 7129, 7129, 5701, 5713, 5714, 5716, 5719, - 5715, 5721, 7129, 5723, 5727, 5724, 5726, 5728, 5730, 5731, - 7129, 5737, 7129, 5738, 5742, 5745, 5739, 5753, 5754, 5749, + 5594, 5600, 5601, 5612, 5596, 5598, 7154, 5615, 7154, 7154, + 5617, 7154, 5618, 5606, 5619, 5621, 5625, 5626, 5628, 7154, + 5627, 7154, 5632, 5633, 5630, 5640, 5647, 5643, 5631, 5652, + 5634, 5649, 5653, 5655, 5662, 5658, 5659, 5657, 5661, 5665, + 5668, 7154, 7154, 5669, 5675, 5676, 5684, 5680, 5681, 5677, + 5693, 5688, 5689, 5690, 5695, 5696, 5697, 5706, 5707, 5698, + 5702, 5709, 7154, 5705, 5711, 5717, 7154, 5713, 7154, 5719, + 5721, 5722, 5715, 5723, 5728, 5729, 5730, 5732, 5734, 7154, + 7154, 5735, 5746, 5742, 7154, 7154, 5743, 5744, 5745, 5747, + 5750, 5751, 5752, 7154, 5754, 5759, 5755, 5757, 5760, 5770, - 5757, 5756, 5760, 5759, 5761, 7129, 5762, 5763, 7129, 5775, - 5770, 5774, 5765, 5772, 5780, 5777, 7129, 5781, 5785, 5788, - 5790, 7129, 5794, 5791, 5796, 5797, 7129, 5799, 7129, 5800, - 5802, 5804, 5811, 5809, 7129, 5808, 5812, 5813, 7129, 5818, - 5823, 5825, 5826, 5827, 5830, 7129, 5834, 5819, 7129, 5815, - 5839, 5841, 5845, 5831, 5848, 5836, 5850, 5851, 5858, 5854, - 5855, 7129, 7129, 5862, 5861, 135, 5870, 5857, 5863, 5867, - 5871, 5878, 5860, 5875, 5874, 7129, 7129, 5876, 7129, 5882, - 5886, 7129, 5884, 5888, 5892, 5894, 5895, 5896, 5897, 5899, - 5902, 5904, 5905, 5906, 5903, 5907, 7129, 5925, 5927, 5910, + 5761, 7154, 5767, 7154, 5773, 5774, 5777, 5779, 5787, 5789, + 5784, 5791, 5795, 5788, 5786, 5792, 7154, 5790, 5800, 7154, + 5807, 5803, 5805, 5798, 5808, 5815, 5810, 7154, 5817, 5812, + 5820, 5824, 7154, 5827, 5828, 5829, 5831, 7154, 5836, 7154, + 5821, 5833, 5837, 5845, 5842, 7154, 5843, 5846, 5847, 7154, + 5851, 5853, 5856, 5857, 5858, 5859, 7154, 5862, 5864, 7154, + 5865, 5868, 5869, 5874, 5875, 5877, 5878, 5879, 5880, 5887, + 5884, 5888, 7154, 7154, 5895, 5893, 135, 5902, 5886, 5899, + 5900, 5904, 5911, 5903, 5908, 5907, 7154, 7154, 5913, 7154, + 5914, 5921, 7154, 5915, 5923, 5916, 5925, 5927, 5929, 5930, - 5931, 5932, 5934, 5936, 5938, 5940, 5928, 5942, 5923, 5945, - 5946, 5948, 5949, 5950, 5952, 5954, 5956, 5957, 7129, 5959, - 5963, 5964, 5951, 5970, 5972, 5965, 7129, 5980, 5975, 5985, - 5981, 7129, 5988, 5989, 5990, 5991, 5992, 7129, 5993, 5995, - 5997, 6002, 6003, 6004, 6005, 6007, 6008, 6015, 7129, 6013, - 6010, 6017, 7129, 7129, 7129, 6020, 6030, 6018, 7129, 6034, - 6024, 6027, 6031, 7129, 6036, 6037, 6045, 6041, 7129, 7129, - 7129, 6040, 6042, 6048, 7129, 6043, 6050, 7129, 6054, 7129, - 6051, 7129, 6055, 6056, 6058, 6062, 7129, 6064, 6067, 6068, - 6073, 7129, 6076, 6079, 6084, 6081, 6085, 6070, 6086, 7129, + 5931, 5934, 5935, 5941, 5937, 5936, 5938, 7154, 5954, 5962, + 5939, 5960, 5963, 5965, 5967, 5969, 5971, 5957, 5974, 5975, + 5976, 5977, 5978, 5980, 5981, 5984, 5985, 5987, 5988, 7154, + 5990, 5997, 5998, 5994, 6004, 6000, 5992, 7154, 6012, 6013, + 6015, 6016, 7154, 6018, 6019, 6022, 6023, 6024, 7154, 6025, + 6027, 6030, 6034, 6035, 6036, 6037, 6039, 6040, 6047, 7154, + 6045, 6042, 6049, 7154, 7154, 7154, 6052, 6062, 6050, 7154, + 6066, 6056, 6059, 6063, 7154, 6068, 6069, 6077, 6073, 7154, + 7154, 7154, 6072, 6074, 6080, 7154, 6075, 6082, 7154, 6086, + 7154, 6083, 7154, 6087, 6088, 6090, 6094, 7154, 6096, 6099, - 6093, 6092, 6094, 6096, 6088, 6098, 6100, 6102, 6101, 6109, - 6104, 6112, 7129, 6113, 6115, 6118, 6124, 6108, 6116, 6122, - 7129, 6114, 7129, 6133, 7129, 6126, 6128, 6130, 6136, 6135, - 6138, 6142, 6145, 6146, 6147, 6148, 6150, 6152, 6155, 6157, - 6163, 6158, 7129, 7129, 6166, 6164, 7129, 6168, 6172, 7129, - 6169, 7129, 6176, 7129, 6173, 6179, 6180, 6182, 6183, 7129, - 7129, 6187, 6184, 6191, 6199, 6192, 6197, 6194, 7129, 6201, - 6203, 6205, 6207, 7129, 6214, 7129, 6209, 6216, 6218, 7129, - 6211, 6212, 6220, 6222, 6225, 6226, 6228, 6230, 6234, 6231, - 6242, 6235, 6232, 6237, 6249, 6245, 6250, 6252, 6258, 7129, + 6100, 6105, 7154, 6108, 6111, 6116, 6113, 6117, 6102, 6118, + 7154, 6125, 6124, 6126, 6128, 6120, 6130, 6132, 6134, 6133, + 6141, 6136, 6144, 7154, 6145, 6147, 6150, 6156, 6140, 6148, + 6154, 7154, 6146, 7154, 6165, 7154, 6158, 6160, 6162, 6168, + 6167, 6170, 6174, 6177, 6178, 6179, 6180, 6182, 6184, 6187, + 6189, 6195, 6190, 7154, 7154, 6198, 6196, 7154, 6200, 6204, + 7154, 6201, 7154, 6208, 7154, 6205, 6211, 6212, 6214, 6215, + 7154, 7154, 6219, 6216, 6223, 6231, 6224, 6229, 6226, 7154, + 6233, 6235, 6237, 6239, 7154, 6246, 7154, 6241, 6248, 6250, + 7154, 6243, 6244, 6252, 6254, 6257, 6258, 6260, 6262, 6266, - 7129, 7129, 6256, 6261, 6269, 6265, 6267, 6272, 6262, 7129, - 6271, 6274, 6277, 6275, 6284, 6279, 6286, 7129, 6283, 6287, - 6288, 6289, 6291, 6292, 6293, 6298, 7129, 6300, 6304, 6315, - 6301, 6308, 6312, 6319, 6321, 6324, 6326, 6316, 6310, 6333, - 6330, 7129, 7129, 6332, 6328, 7129, 6338, 6340, 7129, 6334, - 7129, 6341, 6342, 6343, 6345, 6346, 7129, 6349, 6350, 6351, - 6352, 7129, 6354, 6356, 6358, 6360, 7129, 6355, 6375, 6361, - 6368, 6372, 6378, 7129, 7129, 6371, 6380, 7129, 6385, 6386, - 6382, 6394, 6389, 6390, 6400, 6397, 7129, 6403, 6404, 6393, - 6395, 6405, 6406, 6408, 7129, 6411, 6412, 6416, 6417, 7129, + 6263, 6274, 6267, 6264, 6269, 6281, 6277, 6282, 6284, 6290, + 7154, 7154, 7154, 6288, 6293, 6301, 6297, 6299, 6304, 6294, + 7154, 6303, 6306, 6309, 6307, 6316, 6311, 6318, 7154, 6315, + 6319, 6320, 6321, 6323, 6324, 6325, 6330, 7154, 6332, 6336, + 6347, 6333, 6340, 6344, 6351, 6353, 6356, 6358, 6348, 6342, + 6365, 6362, 7154, 7154, 6364, 6360, 7154, 6370, 6372, 7154, + 6366, 7154, 6373, 6374, 6375, 6377, 6378, 7154, 6381, 6382, + 6383, 6384, 7154, 6386, 6388, 6390, 6392, 7154, 6387, 6407, + 6393, 6400, 6404, 6410, 7154, 7154, 6403, 6412, 7154, 6417, + 6418, 6414, 6426, 6421, 6422, 6432, 6429, 7154, 6435, 6436, - 6420, 6423, 6424, 6422, 6421, 7129, 6425, 6427, 6434, 6435, - 7129, 6429, 6445, 6433, 7129, 7129, 7129, 6451, 6453, 6454, - 7129, 7129, 7129, 7129, 6456, 6457, 6444, 6460, 7129, 6461, - 7129, 7129, 6465, 6469, 6473, 6475, 6480, 6468, 7129, 6479, - 6481, 6483, 6485, 6486, 7129, 7129, 6487, 6489, 6491, 6492, - 6494, 6495, 6496, 7129, 7129, 6498, 6499, 6501, 6508, 6504, - 7129, 6502, 6507, 6515, 6518, 6521, 6525, 6529, 6526, 6530, - 6531, 6538, 6539, 6534, 6536, 6542, 6544, 6545, 6546, 6548, - 6558, 6554, 6556, 6562, 6553, 6564, 7129, 7129, 6567, 7129, - 6571, 6572, 7129, 6557, 7129, 6574, 6577, 6579, 6583, 7129, + 6425, 6427, 6437, 6438, 6440, 7154, 6443, 6444, 6448, 6449, + 7154, 6452, 6455, 6456, 6454, 6453, 7154, 6457, 6459, 6466, + 6467, 7154, 6461, 6477, 6465, 7154, 7154, 7154, 6483, 6485, + 6486, 7154, 7154, 7154, 7154, 6488, 6489, 6476, 6492, 7154, + 6493, 7154, 7154, 6497, 6501, 6505, 6507, 6512, 6500, 7154, + 6511, 6513, 6515, 6517, 6518, 7154, 7154, 6519, 6521, 6523, + 6524, 6526, 6527, 6528, 7154, 7154, 6530, 6531, 6533, 6540, + 6536, 7154, 6534, 6539, 6547, 6550, 6553, 6557, 6561, 6558, + 6562, 6563, 6570, 6571, 6566, 6568, 6574, 6576, 6577, 6578, + 6580, 6590, 6586, 6588, 6594, 6585, 6596, 7154, 7154, 6599, - 6585, 6587, 6589, 6591, 6580, 7129, 6592, 6594, 6596, 6598, - 6597, 6599, 7129, 6600, 6603, 6604, 6611, 6605, 6608, 6612, - 6613, 6617, 7129, 6618, 6626, 7129, 7129, 6622, 6627, 6628, - 6631, 6629, 7129, 6634, 6641, 6636, 6638, 6639, 6642, 6645, - 7129, 6646, 6644, 7129, 7129, 6651, 6648, 7129, 7129, 6649, - 6656, 7129, 7129, 7129, 7129, 7129, 7129, 7129, 7129, 6657, - 6664, 7129, 7129, 6659, 6666, 6669, 6671, 7129, 6674, 7129, - 6677, 6678, 6679, 6681, 7129, 6680, 7129, 6682, 6684, 6685, - 6686, 6689, 6691, 6693, 6696, 6698, 6697, 6699, 6702, 6703, - 6707, 6709, 6708, 6718, 6711, 6721, 6722, 6726, 7129, 7129, + 7154, 6603, 6604, 7154, 6589, 7154, 6606, 6609, 6611, 6615, + 7154, 6617, 6619, 6621, 6623, 6612, 7154, 6624, 6626, 6628, + 6630, 6629, 6631, 7154, 6632, 6635, 6636, 6643, 6637, 6640, + 6644, 6645, 6649, 7154, 6650, 6658, 7154, 7154, 6654, 6659, + 6660, 6663, 6661, 7154, 6666, 6673, 6668, 6670, 6671, 6674, + 6677, 7154, 6678, 6676, 7154, 7154, 6683, 6680, 7154, 7154, + 6681, 6688, 7154, 7154, 7154, 7154, 7154, 7154, 7154, 7154, + 6689, 6696, 7154, 7154, 6691, 6698, 6701, 6703, 7154, 6706, + 7154, 6709, 6710, 6711, 6713, 7154, 6712, 7154, 6714, 6716, + 6717, 5602, 6720, 6723, 6718, 6721, 6725, 6728, 6729, 6730, - 7129, 7129, 6725, 6727, 6733, 6728, 6735, 6740, 6744, 6746, - 6736, 6738, 6748, 6749, 6752, 6750, 6753, 6762, 6759, 6760, - 6761, 6764, 6765, 6770, 6777, 7129, 6779, 6767, 6771, 6781, - 7129, 6774, 7129, 6783, 7129, 7129, 6787, 6791, 6788, 6784, - 6799, 6800, 6795, 6797, 6798, 6802, 6805, 7129, 6812, 7129, - 7129, 7129, 6806, 6808, 7129, 6815, 6814, 7129, 6813, 6816, - 6819, 6822, 6823, 6820, 6825, 6826, 6841, 7129, 7129, 6824, - 6832, 6834, 6843, 6846, 6854, 6855, 6847, 6857, 6858, 6845, - 6865, 7129, 6861, 6866, 6868, 7129, 6869, 6870, 6872, 6874, - 6875, 6882, 6877, 6878, 7129, 6880, 7129, 6884, 6886, 6885, + 6738, 6734, 6736, 6739, 6748, 6742, 6750, 6751, 6752, 7154, + 7154, 7154, 7154, 6755, 6756, 6759, 6763, 6765, 6766, 6774, + 6778, 6762, 6768, 6779, 6770, 6780, 6783, 6784, 6792, 6787, + 6790, 6789, 6796, 6791, 6798, 6804, 7154, 6806, 6800, 6793, + 6810, 7154, 6807, 7154, 6813, 7154, 7154, 6817, 6818, 6820, + 6814, 6827, 6829, 6824, 6826, 6825, 6830, 6837, 7154, 6841, + 7154, 7154, 7154, 6832, 6834, 7154, 6842, 6843, 7154, 6845, + 6846, 6848, 6849, 6850, 6852, 6855, 6859, 6858, 7154, 7154, + 6861, 6866, 6868, 6870, 6872, 6879, 6874, 6878, 6880, 6886, + 6876, 6888, 7154, 6890, 6892, 6894, 7154, 6896, 6898, 6899, - 6887, 6888, 6892, 6899, 6897, 6901, 7129, 6903, 6908, 6904, - 6910, 6912, 6915, 6917, 6916, 6919, 6921, 6925, 6931, 6932, - 6933, 6922, 6937, 6928, 7129, 6944, 6934, 7129, 6945, 6946, - 6936, 6938, 6948, 7129, 6959, 6952, 6954, 6960, 6963, 6965, - 7129, 6967, 6969, 6970, 7129, 6974, 7129, 7129, 6975, 6964, - 6976, 6982, 6985, 7129, 7129, 7129, 7009, 7016, 7023, 7030, - 7037, 7044, 7051, 88, 7058, 7065, 7072, 7079, 7086, 7093, - 7100, 7107, 7114, 7121 + 6901, 6902, 6909, 6904, 6905, 7154, 6907, 7154, 6911, 6913, + 6914, 6912, 6915, 6916, 6926, 6928, 6924, 7154, 6930, 6935, + 6932, 6938, 6940, 6942, 6943, 6944, 6946, 6948, 6952, 6958, + 6955, 6959, 6949, 6960, 6961, 7154, 6970, 6964, 7154, 6967, + 6971, 6973, 6974, 6977, 7154, 6982, 6975, 6979, 6984, 6987, + 6988, 7154, 6990, 6997, 6999, 7154, 7000, 7154, 7154, 7002, + 6991, 7001, 7004, 7009, 7154, 7154, 7154, 7034, 7041, 7048, + 7055, 7062, 7069, 7076, 88, 7083, 7090, 7097, 7104, 7111, + 7118, 7125, 7132, 7139, 7146 } ; -static const flex_int16_t yy_def[3675] = +static const flex_int16_t yy_def[3686] = { 0, - 3656, 1, 3657, 3657, 3658, 3658, 3659, 3659, 3660, 3660, - 3661, 3661, 3662, 3662, 3663, 3663, 3656, 3664, 3656, 3656, - 3656, 3656, 3665, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3666, 3656, 3656, 3656, - 3666, 3667, 3656, 3656, 3656, 3667, 3668, 3656, 3656, 3656, - 3656, 3668, 3669, 3656, 3656, 3656, 3669, 3670, 3656, 3671, - 3656, 3670, 3670, 3672, 3656, 3656, 3656, 3656, 3672, 3673, - 3656, 3656, 3656, 3673, 3664, 3664, 3656, 3674, 3665, 3674, - 3665, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3667, 1, 3668, 3668, 3669, 3669, 3670, 3670, 3671, 3671, + 3672, 3672, 3673, 3673, 3674, 3674, 3667, 3675, 3667, 3667, + 3667, 3667, 3676, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3677, 3667, 3667, 3667, + 3677, 3678, 3667, 3667, 3667, 3678, 3679, 3667, 3667, 3667, + 3667, 3679, 3680, 3667, 3667, 3667, 3680, 3681, 3667, 3682, + 3667, 3681, 3681, 3683, 3667, 3667, 3667, 3667, 3683, 3684, + 3667, 3667, 3667, 3684, 3675, 3675, 3667, 3685, 3676, 3685, + 3676, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3666, - 3666, 3667, 3667, 3668, 3668, 3656, 3669, 3669, 3670, 3670, - 3671, 3671, 3670, 3672, 3672, 3656, 3673, 3673, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3677, + 3677, 3678, 3678, 3679, 3679, 3667, 3680, 3680, 3681, 3681, + 3682, 3682, 3681, 3683, 3683, 3667, 3684, 3684, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3681, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3670, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, - 3656, 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3667, 3667, 3675, 3667, 3667, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3670, 3670, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3681, 3681, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3670, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3681, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3681, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3670, 3664, 3656, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3681, 3675, 3667, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3670, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3681, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3670, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3681, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3656, - 3664, 3656, 3664, 3656, 3664, 3664, 3656, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3667, + 3675, 3667, 3675, 3667, 3675, 3675, 3667, 3667, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3670, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3681, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3656, 3664, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3670, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, - 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3667, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3681, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3667, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3656, 3664, 3664, 3670, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3656, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, + 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3667, 3675, 3675, 3681, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3667, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3656, 3656, 3656, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3656, - 3656, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, 3656, - 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3667, 3667, 3667, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, + 3667, 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3675, + 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3656, - 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3656, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3675, 3675, + 3667, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3656, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3656, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3675, 3675, 3667, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3656, 3656, 3656, 3664, 3664, 3664, - 3656, 3656, 3656, 3656, 3664, 3664, 3664, 3664, 3656, 3664, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, - 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, 3656, - 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, 3664, 3656, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3667, 3667, 3667, 3675, 3675, + 3675, 3667, 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3667, + 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3656, 3656, 3664, 3664, 3664, - 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3656, 3656, 3664, 3664, 3656, 3656, 3664, - 3664, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3664, - 3664, 3656, 3656, 3664, 3664, 3664, 3664, 3656, 3664, 3656, - 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, + 3667, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, + 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3667, 3675, 3675, + 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3667, + 3675, 3675, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3667, 3675, + 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3656, 3656, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3656, 3664, 3656, 3664, 3656, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3656, - 3656, 3656, 3664, 3664, 3656, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3656, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3656, 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3656, 3664, 3664, 3664, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, + 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3675, 3667, 3675, 3667, 3675, 3667, 3667, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, + 3667, 3667, 3667, 3675, 3675, 3667, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3664, 3664, 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, - 3664, 3664, 3664, 3664, 3656, 3664, 3664, 3656, 3664, 3664, - 3664, 3664, 3664, 3656, 3664, 3664, 3664, 3664, 3664, 3664, - 3656, 3664, 3664, 3664, 3656, 3664, 3656, 3656, 3664, 3664, - 3664, 3664, 3664, 3656, 3656, 0, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656 + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3675, + 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3667, 3667, 3675, + 3675, 3675, 3675, 3675, 3667, 3667, 0, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667 } ; -static const flex_int16_t yy_nxt[7170] = +static const flex_int16_t yy_nxt[7195] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1711,713 +1714,717 @@ static const flex_int16_t yy_nxt[7170] = 425, 427, 86, 431, 86, 433, 86, 435, 436, 438, 86, 434, 86, 86, 86, 86, 439, 86, 442, 86, 432, 86, 443, 86, 86, 441, 86, 445, 86, 448, - 168, 440, 86, 437, 446, 450, 86, 453, 86, 444, + 86, 440, 86, 437, 446, 450, 86, 453, 86, 444, 86, 454, 447, 86, 449, 86, 86, 86, 452, 462, - 86, 86, 451, 86, 465, 464, 466, 455, 86, 86, + 86, 86, 451, 86, 470, 464, 562, 455, 86, 86, - 470, 166, 469, 86, 463, 471, 476, 456, 86, 467, - 457, 86, 468, 472, 473, 458, 459, 460, 461, 474, - 477, 86, 86, 480, 475, 86, 86, 86, 86, 86, - 486, 86, 86, 488, 86, 86, 86, 484, 485, 478, - 487, 481, 479, 86, 482, 483, 86, 489, 492, 86, - 86, 491, 86, 86, 497, 86, 498, 86, 499, 490, - 86, 493, 86, 86, 516, 86, 86, 500, 496, 494, - 503, 505, 495, 504, 501, 86, 510, 502, 86, 86, - 506, 508, 86, 509, 86, 511, 507, 86, 517, 518, - 86, 86, 519, 515, 86, 86, 86, 86, 512, 86, + 471, 473, 474, 86, 463, 472, 465, 456, 466, 86, + 457, 86, 477, 168, 475, 458, 459, 460, 461, 476, + 86, 467, 468, 86, 469, 478, 86, 86, 479, 86, + 86, 480, 86, 487, 86, 86, 86, 489, 481, 485, + 488, 486, 482, 86, 490, 86, 483, 484, 86, 86, + 86, 86, 86, 86, 493, 498, 86, 499, 86, 500, + 86, 86, 494, 492, 86, 504, 497, 166, 501, 506, + 491, 495, 86, 496, 505, 502, 86, 507, 503, 509, + 86, 510, 86, 508, 86, 86, 518, 512, 86, 517, + 519, 86, 86, 86, 516, 86, 511, 86, 520, 86, - 533, 513, 86, 514, 86, 520, 86, 521, 86, 86, - 535, 532, 538, 522, 536, 86, 537, 523, 534, 170, - 540, 579, 524, 549, 550, 525, 86, 526, 539, 527, - 551, 86, 86, 86, 86, 552, 86, 553, 86, 86, - 555, 86, 528, 558, 554, 529, 165, 530, 557, 531, - 86, 556, 541, 542, 560, 86, 86, 559, 86, 562, - 86, 86, 543, 544, 545, 546, 547, 561, 564, 548, - 563, 86, 86, 570, 86, 568, 566, 571, 565, 573, - 86, 569, 86, 574, 86, 86, 86, 86, 86, 86, - 578, 86, 86, 581, 567, 572, 86, 86, 576, 582, + 513, 86, 534, 514, 86, 515, 86, 521, 86, 522, + 536, 86, 165, 170, 539, 523, 537, 533, 538, 524, + 535, 86, 541, 86, 525, 86, 86, 526, 86, 527, + 540, 528, 551, 552, 556, 86, 550, 86, 553, 86, + 558, 554, 86, 86, 529, 557, 559, 530, 555, 531, + 561, 532, 86, 86, 542, 543, 86, 86, 86, 86, + 163, 560, 567, 563, 544, 545, 546, 547, 548, 565, + 86, 549, 564, 569, 571, 86, 86, 86, 574, 566, + 568, 572, 86, 575, 86, 86, 86, 86, 579, 86, + 570, 86, 573, 86, 86, 86, 583, 584, 577, 86, - 583, 577, 86, 86, 575, 580, 163, 86, 585, 588, - 86, 584, 86, 586, 86, 589, 86, 587, 590, 591, - 86, 86, 86, 596, 593, 594, 86, 86, 612, 598, - 86, 597, 86, 86, 86, 86, 592, 615, 86, 161, - 595, 613, 599, 86, 601, 600, 602, 603, 614, 617, - 86, 86, 86, 86, 624, 86, 618, 619, 604, 616, - 605, 86, 86, 86, 86, 621, 606, 620, 86, 622, - 626, 86, 623, 86, 607, 608, 86, 629, 609, 610, - 86, 625, 611, 630, 86, 627, 628, 86, 631, 86, - 86, 86, 86, 86, 86, 636, 634, 635, 86, 86, + 582, 578, 86, 86, 86, 576, 86, 581, 86, 590, + 589, 86, 86, 585, 580, 594, 595, 86, 586, 587, + 588, 86, 86, 591, 592, 86, 597, 86, 86, 613, + 86, 596, 86, 86, 86, 86, 598, 599, 616, 86, + 86, 593, 614, 600, 602, 615, 601, 603, 604, 86, + 618, 86, 86, 619, 86, 622, 86, 620, 617, 605, + 86, 606, 86, 86, 621, 86, 625, 607, 623, 86, + 627, 86, 86, 86, 624, 608, 609, 628, 86, 610, + 611, 631, 626, 612, 86, 630, 629, 86, 86, 86, + 86, 86, 632, 633, 86, 635, 636, 86, 637, 86, - 86, 86, 632, 637, 642, 638, 86, 86, 86, 86, - 644, 633, 641, 643, 86, 646, 86, 640, 639, 645, - 86, 647, 86, 649, 86, 651, 86, 86, 86, 86, - 648, 86, 86, 86, 86, 653, 86, 657, 655, 86, - 86, 86, 650, 86, 664, 666, 659, 652, 669, 654, - 86, 86, 656, 658, 660, 665, 661, 662, 86, 668, - 663, 86, 86, 86, 86, 86, 673, 667, 86, 86, - 671, 86, 86, 672, 86, 670, 677, 679, 674, 680, - 676, 86, 86, 675, 86, 86, 682, 86, 86, 678, - 86, 86, 683, 687, 686, 86, 689, 86, 86, 86, + 86, 86, 86, 86, 86, 643, 638, 86, 644, 645, + 634, 639, 86, 642, 640, 86, 646, 86, 641, 647, + 86, 648, 649, 86, 651, 86, 86, 653, 86, 86, + 86, 86, 86, 86, 86, 86, 650, 655, 659, 86, + 657, 86, 86, 86, 666, 1596, 668, 652, 86, 654, + 86, 656, 86, 658, 660, 661, 86, 662, 670, 663, + 664, 665, 667, 86, 86, 669, 86, 86, 671, 86, + 86, 86, 675, 86, 86, 673, 86, 679, 674, 681, + 672, 682, 678, 86, 676, 86, 677, 86, 86, 86, + 86, 86, 86, 685, 680, 689, 688, 86, 86, 684, - 86, 86, 685, 681, 86, 86, 684, 721, 86, 704, - 688, 86, 692, 690, 86, 86, 86, 691, 86, 693, - 701, 706, 702, 703, 694, 86, 695, 86, 86, 708, - 705, 707, 696, 712, 697, 86, 86, 698, 699, 86, - 86, 709, 711, 86, 700, 710, 717, 86, 716, 86, - 86, 714, 86, 713, 715, 719, 86, 718, 86, 720, - 86, 724, 86, 726, 86, 86, 730, 86, 86, 723, - 722, 727, 86, 729, 86, 725, 728, 733, 86, 86, - 86, 86, 86, 734, 86, 86, 731, 737, 739, 738, - 732, 170, 741, 86, 736, 740, 86, 735, 86, 86, + 86, 86, 691, 86, 86, 683, 86, 86, 161, 86, + 706, 686, 687, 690, 86, 86, 692, 694, 86, 726, + 693, 86, 695, 703, 705, 86, 86, 696, 704, 697, + 708, 709, 86, 707, 86, 698, 710, 699, 86, 711, + 700, 701, 716, 712, 86, 717, 86, 702, 719, 714, + 86, 86, 86, 713, 86, 718, 86, 86, 86, 720, + 723, 86, 728, 86, 86, 721, 86, 722, 86, 715, + 86, 732, 86, 86, 86, 724, 725, 86, 729, 731, + 730, 86, 735, 727, 86, 733, 86, 86, 741, 738, + 736, 743, 737, 739, 734, 740, 170, 86, 86, 86, - 743, 744, 86, 86, 86, 742, 86, 748, 750, 86, - 745, 86, 753, 86, 746, 754, 86, 749, 756, 752, - 747, 86, 86, 86, 86, 86, 758, 86, 755, 86, - 86, 86, 762, 751, 757, 761, 86, 178, 767, 759, - 763, 86, 760, 768, 86, 770, 86, 764, 771, 86, - 765, 772, 766, 86, 769, 773, 86, 86, 774, 86, - 775, 86, 776, 86, 86, 86, 86, 777, 86, 86, - 782, 778, 781, 86, 86, 780, 86, 785, 86, 86, - 790, 784, 779, 783, 786, 86, 86, 86, 86, 789, - 86, 86, 792, 86, 796, 86, 794, 788, 86, 787, + 742, 86, 86, 86, 86, 86, 86, 86, 86, 750, + 744, 86, 791, 752, 745, 86, 747, 86, 748, 751, + 746, 756, 749, 754, 755, 86, 758, 86, 86, 757, + 86, 753, 86, 760, 86, 86, 86, 86, 86, 86, + 759, 763, 764, 772, 86, 774, 765, 86, 761, 777, + 762, 86, 769, 766, 768, 86, 767, 770, 86, 86, + 771, 773, 86, 775, 86, 776, 86, 778, 86, 86, + 86, 86, 779, 86, 783, 784, 86, 780, 86, 86, + 86, 782, 787, 86, 86, 788, 786, 792, 86, 781, + 86, 86, 86, 86, 794, 785, 86, 796, 86, 798, - 86, 86, 86, 86, 86, 803, 799, 791, 793, 795, - 86, 86, 86, 797, 86, 804, 86, 86, 801, 86, - 806, 798, 800, 86, 802, 807, 805, 86, 808, 809, - 86, 811, 810, 86, 812, 813, 86, 816, 814, 818, - 86, 815, 817, 86, 86, 86, 820, 86, 821, 819, - 86, 86, 823, 824, 86, 86, 825, 86, 86, 86, - 86, 832, 86, 830, 828, 86, 86, 86, 86, 86, - 822, 826, 827, 829, 833, 86, 839, 86, 837, 831, - 86, 176, 86, 840, 836, 834, 86, 838, 835, 841, - 842, 843, 86, 86, 86, 844, 86, 86, 846, 845, + 86, 86, 86, 790, 86, 86, 789, 801, 793, 795, + 797, 86, 805, 86, 86, 799, 86, 86, 86, 806, + 808, 803, 800, 802, 86, 809, 86, 807, 810, 811, + 86, 804, 86, 813, 812, 86, 86, 86, 86, 820, + 816, 817, 814, 86, 86, 86, 815, 822, 86, 86, + 86, 818, 821, 819, 823, 86, 86, 86, 86, 826, + 825, 86, 827, 86, 828, 830, 86, 829, 832, 834, + 86, 86, 86, 86, 831, 86, 824, 86, 86, 842, + 835, 86, 86, 86, 844, 86, 833, 840, 843, 838, + 86, 836, 86, 839, 837, 841, 845, 846, 86, 86, - 86, 86, 851, 86, 86, 849, 853, 86, 86, 852, - 847, 848, 86, 86, 86, 86, 854, 86, 86, 856, - 850, 858, 175, 857, 86, 86, 859, 86, 855, 862, - 860, 861, 865, 86, 866, 86, 86, 870, 86, 86, - 868, 86, 867, 863, 864, 869, 871, 86, 872, 875, - 873, 86, 86, 879, 86, 86, 86, 877, 880, 86, - 86, 881, 86, 876, 883, 874, 86, 878, 885, 86, - 86, 86, 86, 86, 891, 884, 86, 86, 86, 882, - 86, 892, 86, 86, 86, 893, 86, 886, 887, 888, - 86, 889, 86, 890, 901, 898, 896, 894, 895, 86, + 86, 847, 86, 86, 86, 848, 850, 854, 849, 852, + 86, 856, 86, 86, 86, 855, 851, 86, 86, 859, + 86, 857, 853, 861, 868, 86, 86, 86, 862, 86, + 86, 86, 865, 86, 86, 86, 860, 858, 863, 864, + 871, 86, 870, 86, 873, 86, 866, 867, 874, 878, + 869, 86, 875, 86, 872, 86, 876, 86, 86, 882, + 86, 884, 880, 879, 883, 86, 86, 86, 886, 86, + 86, 877, 881, 86, 86, 888, 86, 86, 894, 86, + 86, 86, 86, 885, 86, 895, 887, 889, 890, 896, + 86, 86, 891, 86, 897, 892, 86, 893, 86, 901, - 86, 900, 86, 897, 899, 86, 86, 86, 86, 86, - 902, 86, 908, 903, 904, 86, 86, 86, 86, 86, - 918, 86, 170, 86, 905, 910, 907, 906, 916, 909, - 86, 86, 86, 911, 912, 913, 914, 915, 86, 86, - 921, 86, 919, 922, 917, 920, 924, 86, 86, 86, - 86, 86, 86, 923, 86, 86, 929, 928, 86, 930, - 932, 86, 927, 925, 86, 86, 933, 926, 86, 86, - 86, 935, 86, 86, 936, 170, 934, 940, 931, 938, - 941, 939, 937, 86, 86, 86, 944, 942, 86, 943, - 86, 86, 86, 86, 948, 949, 86, 945, 86, 950, + 899, 904, 86, 86, 86, 898, 86, 86, 902, 86, + 900, 86, 908, 903, 86, 911, 907, 906, 86, 86, + 86, 86, 905, 86, 86, 86, 921, 909, 910, 919, + 86, 86, 912, 86, 913, 922, 86, 914, 915, 916, + 917, 86, 918, 86, 920, 86, 86, 923, 86, 86, + 927, 86, 925, 86, 86, 924, 931, 926, 932, 86, + 86, 933, 928, 86, 930, 935, 86, 929, 936, 86, + 86, 86, 86, 170, 86, 86, 938, 86, 944, 939, + 945, 941, 943, 934, 937, 940, 942, 86, 86, 947, + 86, 946, 86, 86, 86, 952, 86, 86, 953, 948, - 952, 86, 954, 86, 86, 946, 947, 951, 953, 956, - 955, 86, 86, 86, 86, 86, 958, 86, 86, 962, - 86, 86, 86, 959, 957, 86, 963, 964, 86, 86, - 86, 86, 961, 86, 86, 965, 86, 86, 960, 977, - 978, 1029, 967, 975, 86, 981, 966, 86, 976, 968, - 980, 979, 969, 982, 86, 86, 970, 86, 983, 971, - 86, 984, 86, 985, 86, 86, 972, 973, 986, 974, - 990, 86, 86, 987, 86, 86, 86, 999, 988, 86, - 86, 86, 86, 168, 1002, 989, 86, 991, 992, 86, - 993, 998, 86, 994, 1006, 1000, 1004, 1001, 995, 1003, + 955, 86, 86, 86, 86, 86, 954, 949, 950, 956, + 959, 957, 86, 86, 951, 86, 86, 961, 86, 86, + 965, 86, 958, 86, 962, 960, 86, 966, 967, 86, + 86, 86, 86, 86, 86, 86, 964, 86, 86, 86, + 963, 968, 980, 981, 983, 86, 978, 86, 984, 979, + 970, 985, 86, 987, 969, 86, 982, 971, 86, 86, + 972, 991, 986, 990, 973, 86, 988, 974, 86, 86, + 989, 86, 993, 86, 975, 976, 1002, 977, 86, 86, + 86, 86, 86, 86, 1005, 86, 1007, 1004, 992, 86, + 994, 995, 86, 996, 1003, 86, 997, 1009, 1012, 1001, - 1007, 86, 86, 86, 996, 997, 1008, 1010, 86, 1012, - 1014, 1011, 1005, 86, 1013, 86, 86, 1009, 86, 1015, - 86, 1017, 86, 1018, 86, 1019, 86, 1020, 1016, 1022, - 86, 1021, 86, 86, 1023, 86, 86, 86, 86, 86, - 1026, 86, 1030, 86, 1033, 1024, 86, 86, 86, 86, - 1037, 1039, 86, 1031, 1025, 86, 86, 1027, 1028, 86, - 1032, 1035, 1040, 1043, 1038, 1034, 86, 1041, 86, 86, - 1036, 1042, 1045, 1047, 1044, 86, 86, 86, 86, 86, - 1046, 86, 1049, 86, 1048, 1050, 1051, 86, 1052, 86, - 86, 1053, 86, 86, 86, 86, 86, 1055, 1056, 86, + 1011, 998, 1008, 86, 1010, 1006, 86, 999, 1000, 1014, + 1015, 86, 86, 1018, 86, 1016, 86, 86, 1017, 86, + 1021, 86, 1020, 86, 86, 86, 1022, 1023, 1013, 1019, + 1024, 1025, 86, 86, 86, 1026, 86, 86, 86, 86, + 1029, 86, 1028, 86, 1033, 86, 1027, 86, 1036, 1032, + 86, 86, 86, 1034, 1040, 178, 86, 1030, 1031, 1035, + 86, 1041, 86, 1038, 1042, 86, 1043, 1045, 1037, 1046, + 86, 1044, 86, 86, 1039, 86, 1049, 86, 86, 1051, + 1052, 86, 86, 1050, 86, 86, 86, 1053, 86, 1047, + 1055, 86, 1054, 1048, 1056, 86, 1057, 86, 86, 86, - 1057, 1061, 86, 86, 1065, 86, 1064, 86, 1054, 86, - 86, 1063, 1059, 1058, 1062, 86, 86, 86, 1060, 86, - 86, 86, 86, 86, 1073, 1068, 1069, 1066, 1071, 1072, - 86, 86, 86, 86, 1067, 1074, 1075, 86, 86, 1079, - 86, 1077, 86, 1070, 1080, 86, 1078, 86, 1082, 86, - 86, 1081, 86, 1083, 86, 1088, 1076, 86, 1085, 1084, - 86, 86, 1090, 1089, 1091, 86, 1086, 86, 1087, 86, - 86, 86, 1093, 86, 86, 1092, 86, 86, 1094, 86, - 1101, 1095, 1099, 166, 1104, 86, 86, 86, 86, 1096, - 86, 1098, 1097, 86, 1105, 1102, 86, 1100, 1103, 1106, + 86, 86, 1059, 1060, 1058, 1061, 86, 1065, 86, 1069, + 86, 86, 86, 1068, 86, 86, 86, 1063, 1062, 1066, + 1067, 86, 86, 86, 86, 1064, 86, 86, 86, 1070, + 1072, 1073, 1075, 1076, 86, 1071, 86, 1077, 86, 86, + 1079, 1078, 86, 86, 1083, 86, 1086, 1074, 1081, 1084, + 86, 1082, 86, 1080, 86, 86, 1085, 86, 1087, 86, + 1095, 86, 1092, 1089, 86, 86, 1094, 86, 86, 86, + 1093, 1088, 1097, 86, 86, 1091, 86, 86, 86, 1090, + 86, 86, 86, 86, 1105, 86, 1096, 1103, 86, 1098, + 86, 1101, 1108, 1099, 1100, 1110, 1102, 1109, 86, 1106, - 86, 1111, 1107, 86, 86, 86, 1110, 1108, 86, 1113, - 1109, 1114, 86, 86, 86, 86, 86, 1112, 86, 86, - 1125, 86, 1117, 1119, 1115, 86, 86, 1126, 1116, 86, - 86, 1128, 86, 86, 1118, 86, 1120, 86, 1122, 1133, - 1121, 1123, 1131, 1127, 1129, 1124, 86, 1132, 86, 86, - 86, 86, 1130, 86, 1140, 1137, 86, 1139, 1141, 86, - 86, 1135, 1142, 86, 86, 1134, 86, 1145, 86, 1136, - 1147, 86, 1138, 86, 86, 86, 86, 86, 1153, 1144, - 1149, 1143, 86, 1154, 170, 1150, 86, 86, 1146, 86, - 1156, 1155, 1148, 86, 1157, 86, 86, 86, 1151, 1158, + 1104, 1107, 86, 86, 1112, 86, 1111, 86, 86, 1114, + 86, 1118, 86, 1115, 86, 1117, 1113, 86, 86, 86, + 86, 1116, 86, 86, 1129, 86, 1121, 1119, 1123, 86, + 86, 1130, 86, 86, 1120, 1132, 86, 86, 1122, 1124, + 86, 86, 1126, 86, 1125, 1127, 1131, 1133, 1135, 1128, + 86, 1136, 1139, 86, 86, 86, 1134, 86, 1141, 1137, + 1140, 1144, 1138, 86, 1143, 86, 1145, 86, 1146, 86, + 86, 1142, 86, 1149, 86, 1151, 86, 86, 86, 86, + 86, 86, 86, 1148, 1154, 1153, 1157, 1147, 86, 1161, + 86, 1158, 170, 1159, 1150, 1152, 86, 1155, 86, 1156, - 1152, 1160, 86, 86, 86, 86, 1173, 1159, 1161, 86, - 86, 1163, 86, 1174, 86, 1164, 1176, 86, 86, 1162, - 86, 86, 1178, 1165, 1180, 1166, 86, 1175, 86, 1167, - 165, 1168, 86, 1181, 1182, 1169, 1179, 1170, 1183, 1177, - 86, 1185, 1171, 1184, 86, 86, 86, 1172, 86, 1187, - 86, 86, 86, 86, 1186, 1190, 1193, 86, 1192, 86, - 163, 1188, 86, 1189, 86, 1191, 1194, 1198, 1197, 1201, - 1199, 1196, 86, 1202, 1195, 86, 1205, 1200, 1204, 86, - 1203, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 1220, 1217, 86, 86, 86, 86, 1216, 1221, + 1160, 86, 86, 1164, 1162, 86, 176, 86, 86, 86, + 1163, 86, 1177, 86, 86, 1180, 86, 1178, 86, 1167, + 1165, 1168, 86, 86, 86, 86, 1166, 1169, 1182, 1179, + 1170, 86, 86, 86, 1171, 1196, 1172, 1183, 1185, 1184, + 1173, 86, 1174, 1181, 1187, 86, 1186, 1175, 86, 1188, + 86, 86, 1176, 86, 1189, 1190, 1194, 1191, 86, 86, + 86, 86, 86, 1193, 1197, 86, 1195, 86, 86, 1192, + 1202, 1201, 1198, 1203, 86, 1200, 1205, 1206, 86, 1204, + 86, 1199, 86, 86, 1207, 86, 1208, 1209, 86, 86, + 1210, 86, 86, 86, 86, 1224, 86, 1211, 1212, 86, - 86, 86, 1219, 1218, 1207, 1208, 1206, 86, 1209, 1222, - 1224, 1223, 86, 1210, 1228, 1211, 1225, 86, 86, 1226, - 86, 1212, 1229, 86, 86, 86, 1213, 1214, 1227, 86, - 1230, 1235, 86, 1215, 86, 86, 1238, 86, 1236, 86, - 1232, 1231, 86, 1233, 1241, 86, 86, 1234, 1239, 86, - 86, 1243, 86, 86, 1244, 1237, 1240, 86, 86, 1242, - 1249, 1246, 1247, 86, 86, 86, 86, 86, 86, 1245, - 1252, 86, 1250, 86, 1248, 86, 86, 86, 86, 86, - 86, 86, 1254, 1251, 1257, 1256, 1258, 1253, 86, 1261, - 86, 1255, 1263, 1260, 1259, 86, 1262, 86, 86, 1264, + 1213, 1220, 1222, 86, 1223, 1214, 86, 1215, 1221, 86, + 86, 1225, 1227, 1216, 86, 86, 86, 1226, 1217, 1218, + 1232, 86, 86, 86, 1228, 1219, 86, 1233, 86, 86, + 86, 86, 1231, 1229, 1230, 1234, 1239, 86, 86, 1235, + 1242, 86, 1240, 86, 1236, 86, 86, 1237, 1238, 86, + 1245, 1241, 1243, 1247, 86, 86, 1246, 86, 86, 86, + 1244, 86, 1248, 1253, 1250, 86, 86, 1251, 86, 86, + 86, 86, 86, 1249, 1254, 1256, 86, 1252, 86, 86, + 86, 1265, 1263, 86, 86, 1255, 1258, 86, 1257, 1261, + 1260, 1259, 1262, 86, 86, 1270, 1264, 86, 86, 86, - 1266, 86, 1265, 86, 1267, 86, 1270, 86, 86, 1275, - 1271, 86, 1272, 86, 1274, 86, 1268, 1273, 1269, 1276, - 1277, 86, 86, 86, 1281, 86, 86, 86, 1283, 1282, - 86, 1284, 86, 86, 86, 1279, 1278, 1286, 86, 1280, - 86, 1285, 86, 1293, 86, 86, 1287, 86, 86, 86, - 1295, 1300, 86, 1288, 1289, 1291, 86, 1297, 1290, 1292, - 86, 86, 1296, 86, 1299, 1294, 86, 86, 86, 86, - 86, 1302, 1303, 86, 1298, 1306, 86, 86, 1305, 86, - 86, 1307, 1301, 1309, 1304, 1308, 1311, 1312, 1313, 86, - 86, 86, 86, 86, 86, 1310, 86, 1316, 86, 1314, + 1266, 86, 1269, 86, 86, 86, 86, 1267, 175, 86, + 1275, 1276, 86, 1272, 1268, 86, 86, 1271, 1278, 1274, + 1277, 1273, 86, 1279, 1280, 1281, 86, 1283, 86, 1284, + 86, 86, 1286, 86, 86, 1282, 86, 1287, 86, 86, + 1288, 86, 86, 1289, 1285, 1291, 86, 86, 1290, 1298, + 1292, 86, 86, 1300, 1293, 86, 86, 1294, 86, 86, + 1296, 86, 86, 1302, 1295, 1305, 1297, 86, 1304, 86, + 86, 1301, 1299, 86, 86, 1303, 86, 86, 1307, 1308, + 86, 86, 1311, 86, 86, 1310, 1309, 1314, 1312, 86, + 1306, 1317, 1313, 1318, 86, 1316, 86, 86, 86, 86, - 86, 1317, 86, 86, 161, 1321, 1323, 1324, 1325, 1315, - 1318, 86, 86, 86, 86, 1319, 1322, 86, 1320, 86, - 1328, 1330, 1326, 86, 1327, 86, 86, 86, 1329, 1332, - 1331, 86, 1334, 86, 86, 1336, 86, 86, 86, 1335, - 86, 86, 1337, 86, 86, 1339, 1338, 1342, 86, 86, - 86, 1333, 1343, 1345, 86, 86, 86, 1349, 1350, 1340, - 86, 1344, 1341, 86, 86, 86, 86, 1347, 1353, 86, - 86, 1352, 1346, 86, 86, 1348, 86, 1358, 86, 1354, - 1351, 86, 86, 86, 1355, 1356, 86, 1360, 1364, 86, - 86, 86, 1357, 170, 1359, 86, 1366, 86, 1365, 86, + 1315, 86, 1321, 86, 1322, 1319, 86, 86, 86, 86, + 86, 1326, 1328, 1347, 1329, 1330, 1320, 170, 86, 1323, + 86, 86, 1327, 86, 86, 1324, 1333, 1325, 1331, 1332, + 86, 1335, 86, 86, 86, 1334, 86, 86, 1336, 1339, + 86, 86, 1341, 86, 86, 86, 1340, 86, 86, 1342, + 86, 86, 1337, 1343, 1348, 1344, 1338, 86, 86, 86, + 86, 86, 168, 1350, 1354, 1345, 86, 1346, 1349, 1355, + 86, 86, 1352, 1358, 86, 86, 1357, 1351, 86, 86, + 1353, 1356, 86, 86, 1363, 86, 86, 86, 86, 86, + 86, 1369, 86, 1360, 1361, 1365, 86, 1359, 170, 86, - 1367, 1361, 86, 86, 86, 1363, 1376, 1372, 1362, 86, - 86, 1369, 86, 1368, 1370, 1371, 1374, 86, 1373, 1377, - 86, 86, 86, 1380, 1375, 86, 1378, 1379, 86, 86, - 86, 86, 86, 1381, 1382, 1384, 86, 86, 86, 1390, - 86, 86, 86, 1383, 1387, 86, 1385, 86, 86, 86, - 1401, 1386, 86, 1388, 1394, 1389, 1391, 1396, 86, 1392, - 1393, 86, 1400, 86, 86, 86, 1397, 1395, 1398, 1402, - 1404, 1399, 1403, 86, 86, 1405, 86, 1406, 86, 86, - 86, 86, 1413, 86, 1407, 1410, 86, 1409, 86, 86, - 86, 1414, 86, 1412, 1408, 1418, 86, 1415, 1411, 86, + 86, 1362, 86, 1364, 1370, 1371, 1366, 1372, 86, 1368, + 86, 86, 86, 1374, 1367, 86, 1377, 86, 1373, 1379, + 86, 1378, 1376, 1375, 1381, 1382, 86, 86, 1385, 86, + 86, 86, 1384, 1383, 1386, 1380, 86, 86, 86, 86, + 86, 86, 86, 1389, 86, 1395, 86, 86, 1392, 86, + 1387, 1388, 86, 86, 1390, 86, 166, 1393, 1399, 1391, + 86, 1396, 86, 1394, 86, 1401, 1405, 1397, 1398, 86, + 1406, 1409, 86, 86, 1402, 1400, 1403, 1407, 86, 1404, + 1408, 86, 86, 86, 86, 1411, 86, 1410, 86, 1418, + 86, 1415, 86, 1414, 86, 86, 86, 1412, 86, 1419, - 1416, 86, 86, 86, 1419, 86, 1420, 1422, 86, 1417, - 86, 86, 1421, 86, 1423, 86, 1428, 1424, 1425, 86, - 1426, 86, 1431, 86, 86, 1429, 86, 86, 86, 86, - 1427, 1438, 86, 1432, 1430, 1436, 86, 86, 86, 86, - 86, 86, 1433, 1437, 1435, 1434, 86, 1439, 1441, 86, - 1448, 1442, 1440, 1444, 86, 1450, 86, 1443, 86, 1445, - 86, 86, 86, 86, 1447, 86, 86, 86, 1453, 86, - 86, 1446, 1456, 1451, 1449, 86, 1452, 86, 1457, 1458, - 86, 1455, 1526, 1454, 1459, 86, 86, 1463, 1460, 1461, - 1462, 86, 1464, 1471, 86, 1473, 1465, 86, 1474, 1466, + 86, 1413, 1417, 1423, 86, 1424, 1420, 1416, 86, 1421, + 86, 86, 86, 1425, 86, 1422, 1427, 86, 1428, 86, + 86, 1429, 86, 86, 86, 86, 1433, 86, 86, 86, + 1426, 1436, 1430, 86, 1431, 1434, 86, 1435, 86, 1432, + 1437, 86, 1441, 1443, 1438, 86, 86, 1440, 1439, 86, + 86, 86, 1448, 1442, 86, 1446, 86, 86, 1453, 86, + 86, 1444, 1449, 1455, 86, 1445, 1447, 86, 86, 86, + 86, 86, 1452, 1450, 86, 1456, 1461, 86, 1458, 1454, + 1463, 1451, 1457, 86, 86, 1464, 86, 1459, 86, 1462, + 1460, 86, 1468, 86, 1478, 86, 86, 165, 1466, 1502, - 1467, 86, 86, 1472, 1468, 1477, 86, 1475, 86, 86, - 1469, 86, 86, 1478, 1470, 1476, 86, 1479, 86, 1480, - 86, 1482, 86, 86, 86, 1483, 1487, 1484, 86, 86, - 1481, 86, 86, 1488, 1490, 86, 1485, 1493, 1494, 86, - 86, 1486, 86, 86, 86, 1491, 86, 1495, 1489, 1498, - 1496, 86, 1497, 1492, 1499, 86, 1500, 86, 1501, 86, - 1502, 86, 1503, 86, 1505, 1504, 1506, 1507, 86, 86, - 1508, 86, 1509, 86, 1514, 1511, 1510, 86, 86, 1515, - 86, 86, 1513, 86, 86, 86, 1516, 86, 1518, 1512, - 1524, 86, 86, 1520, 86, 1519, 86, 86, 1525, 86, + 86, 1467, 1465, 86, 1469, 1477, 1476, 163, 1470, 86, + 1479, 1471, 1472, 86, 86, 1482, 1473, 86, 1480, 86, + 86, 86, 1474, 1481, 1483, 1484, 1475, 86, 1485, 86, + 1487, 86, 86, 86, 1488, 1492, 1489, 86, 1486, 86, + 1493, 86, 86, 86, 86, 86, 161, 1499, 1494, 1496, + 1500, 1491, 1490, 86, 86, 86, 86, 1497, 86, 1501, + 86, 86, 1495, 1498, 86, 1509, 86, 1504, 1503, 86, + 1511, 86, 1505, 86, 1506, 1510, 1507, 1514, 1508, 1512, + 1513, 86, 86, 86, 1517, 1515, 1516, 86, 1520, 86, + 86, 1518, 1519, 1521, 86, 1524, 1522, 86, 86, 86, - 1517, 86, 1527, 86, 1521, 1523, 1522, 86, 1529, 86, - 86, 86, 86, 1528, 86, 1530, 1531, 1532, 86, 1535, - 1536, 86, 1538, 86, 86, 86, 1539, 1533, 1540, 86, - 86, 1542, 86, 1537, 1541, 86, 1534, 1544, 86, 1543, - 1546, 86, 86, 1547, 86, 86, 86, 1552, 86, 1548, - 86, 86, 1545, 86, 86, 1557, 1549, 1555, 86, 86, - 86, 86, 86, 1558, 1560, 86, 1550, 1551, 1554, 1559, - 1553, 86, 86, 1556, 1562, 86, 86, 1561, 86, 86, - 1563, 1565, 86, 1567, 86, 1564, 86, 1568, 1629, 1566, - 86, 1569, 86, 1570, 86, 1572, 86, 1571, 86, 86, + 86, 86, 1530, 86, 1531, 86, 1526, 86, 86, 86, + 86, 1523, 1525, 86, 86, 1529, 1537, 1532, 1527, 1528, + 86, 1533, 86, 1534, 1536, 1535, 86, 86, 86, 1538, + 1542, 86, 1539, 1541, 1544, 86, 86, 86, 1545, 86, + 1546, 86, 1543, 86, 1547, 1550, 86, 86, 1552, 86, + 86, 1540, 1549, 86, 1553, 1554, 86, 86, 86, 86, + 1548, 1558, 86, 86, 86, 86, 1563, 1551, 1561, 86, + 86, 86, 86, 86, 1564, 1566, 1560, 1555, 1556, 1557, + 1565, 86, 86, 1559, 1562, 1568, 86, 86, 1567, 86, + 86, 86, 1571, 86, 1576, 1573, 1569, 86, 86, 1570, - 1574, 1573, 86, 1578, 1575, 1579, 1576, 86, 86, 86, - 1582, 86, 1580, 1581, 86, 1577, 86, 86, 86, 1586, - 86, 86, 86, 1583, 86, 86, 86, 1588, 170, 1585, - 86, 1594, 1595, 86, 1597, 1590, 1584, 86, 86, 1596, - 86, 1587, 1589, 1591, 86, 86, 1592, 86, 86, 86, - 86, 86, 1605, 1593, 86, 86, 86, 86, 1598, 86, - 1602, 1609, 86, 1603, 1599, 1600, 86, 1601, 1604, 1610, - 86, 1612, 1614, 86, 1606, 1608, 86, 1615, 86, 86, - 1607, 1613, 1611, 86, 86, 1617, 86, 1618, 86, 86, - 86, 1616, 1626, 1623, 86, 86, 1624, 1619, 1625, 1620, + 86, 1574, 1575, 1572, 86, 1577, 86, 1578, 86, 1579, + 86, 86, 1584, 1585, 1581, 86, 1580, 1582, 86, 86, + 1586, 86, 1588, 86, 1583, 86, 1587, 86, 86, 1592, + 86, 86, 1589, 170, 86, 86, 86, 86, 1591, 1594, + 1600, 1601, 86, 86, 1590, 86, 86, 86, 1597, 1602, + 86, 1593, 1603, 1595, 86, 86, 1598, 86, 86, 1604, + 1599, 86, 1606, 86, 1611, 1605, 1608, 86, 86, 1609, + 1607, 86, 1616, 86, 86, 1610, 1615, 86, 1620, 86, + 86, 1612, 1618, 1621, 86, 86, 1614, 86, 86, 1623, + 86, 86, 1613, 86, 1634, 1624, 86, 1617, 1619, 86, - 1628, 1621, 86, 86, 1622, 1631, 86, 86, 1627, 86, - 1632, 86, 86, 1630, 1633, 86, 86, 1636, 86, 86, - 1637, 1638, 86, 86, 1641, 1635, 86, 1639, 86, 1634, - 86, 1646, 86, 86, 86, 1650, 1647, 1643, 1640, 86, - 86, 86, 1642, 86, 1644, 86, 1645, 86, 86, 86, - 86, 1648, 1651, 1649, 86, 1652, 86, 1659, 86, 1654, - 86, 1658, 1653, 1655, 1656, 1660, 1657, 86, 86, 1664, - 86, 86, 1661, 86, 86, 1668, 1663, 1669, 1670, 1662, - 1666, 86, 86, 86, 86, 1665, 86, 1672, 1673, 86, - 86, 86, 86, 1667, 1678, 1671, 1674, 1677, 1675, 1679, + 86, 1629, 1625, 1622, 1630, 1626, 1627, 1633, 1631, 1628, + 86, 86, 1632, 86, 1637, 1635, 86, 86, 86, 1638, + 86, 86, 86, 86, 1636, 86, 1642, 1643, 1644, 86, + 86, 86, 86, 86, 86, 1639, 1641, 1647, 86, 1652, + 86, 86, 86, 1640, 1653, 1646, 1656, 1645, 1649, 1650, + 1648, 1651, 86, 86, 86, 86, 86, 86, 86, 1654, + 86, 1655, 86, 86, 86, 1657, 86, 86, 1664, 86, + 1658, 1660, 1666, 1661, 1659, 1662, 1665, 1668, 86, 86, + 1670, 1663, 1667, 86, 86, 1675, 1673, 1669, 86, 1674, + 1676, 86, 86, 1672, 86, 1678, 86, 86, 1671, 1679, - 86, 1680, 86, 1681, 86, 86, 86, 86, 86, 1682, - 1685, 86, 1676, 86, 86, 1687, 86, 1686, 86, 86, - 86, 86, 1688, 86, 1693, 86, 1689, 1692, 1683, 1695, - 1684, 1691, 1690, 86, 86, 1699, 86, 1701, 1696, 1694, - 1700, 86, 1702, 86, 1698, 86, 1704, 86, 1697, 86, - 86, 86, 86, 86, 86, 1712, 1703, 1708, 86, 1707, - 86, 86, 86, 1713, 86, 1716, 1705, 86, 1706, 86, - 1709, 86, 1711, 1710, 86, 1718, 1719, 86, 86, 86, - 1714, 86, 86, 1717, 86, 86, 1720, 86, 1715, 86, - 1728, 86, 86, 1721, 1729, 1725, 1722, 1723, 1724, 86, + 86, 86, 86, 1680, 86, 1684, 1677, 1685, 1686, 1683, + 86, 86, 86, 86, 86, 86, 1687, 1681, 86, 1688, + 1691, 86, 86, 1682, 86, 86, 1692, 86, 1694, 86, + 86, 1699, 86, 1693, 86, 86, 86, 1695, 1689, 1698, + 1690, 1696, 86, 1701, 1697, 86, 1705, 1702, 86, 86, + 1703, 1706, 86, 1707, 1700, 86, 1710, 86, 1708, 86, + 86, 86, 86, 86, 1704, 86, 1718, 1714, 1709, 1716, + 1713, 86, 86, 86, 86, 86, 1711, 86, 1719, 1712, + 1723, 86, 1715, 1717, 1726, 86, 86, 1725, 86, 1721, + 86, 1720, 86, 86, 86, 86, 1724, 86, 86, 86, - 1727, 86, 1733, 86, 1735, 1726, 1730, 1734, 86, 86, - 86, 1731, 86, 1732, 1736, 86, 86, 86, 86, 1741, - 86, 86, 1737, 1742, 1739, 86, 1745, 1738, 86, 1740, - 1749, 86, 86, 1746, 1751, 86, 1743, 1750, 1744, 86, - 86, 1754, 86, 86, 1748, 1747, 1756, 86, 1755, 86, - 1752, 86, 1753, 1757, 86, 86, 86, 1762, 1763, 86, - 86, 86, 86, 86, 1760, 86, 1767, 1766, 1768, 86, - 86, 1758, 1759, 1771, 86, 86, 1761, 86, 1764, 1770, - 86, 86, 1765, 1772, 86, 86, 86, 86, 1776, 1769, - 86, 1773, 86, 1774, 86, 1781, 1779, 1775, 86, 86, + 86, 1722, 86, 1735, 1727, 86, 3667, 1728, 1736, 1732, + 86, 1729, 1730, 1731, 1734, 1740, 86, 1737, 1733, 1738, + 1741, 86, 1739, 86, 86, 86, 86, 86, 1742, 1743, + 86, 86, 86, 86, 1748, 86, 1746, 1744, 1749, 86, + 1752, 1745, 86, 1747, 1756, 86, 86, 86, 1753, 1751, + 1758, 1750, 1757, 86, 1761, 86, 86, 86, 1755, 1754, + 86, 1759, 1762, 86, 86, 86, 1760, 1763, 1764, 86, + 86, 1769, 1770, 86, 86, 1765, 86, 86, 1767, 86, + 86, 1774, 1775, 1766, 1773, 86, 1777, 86, 86, 86, + 1768, 86, 1771, 86, 1778, 1779, 86, 1772, 86, 86, - 86, 86, 86, 1787, 86, 1788, 1785, 1777, 86, 86, - 1778, 86, 1780, 1782, 86, 86, 1786, 1789, 86, 1784, - 1783, 86, 1794, 86, 86, 86, 86, 1799, 86, 1790, - 1791, 1797, 86, 86, 86, 1802, 1800, 1795, 1793, 1792, - 1798, 86, 1796, 86, 86, 86, 86, 86, 86, 1806, - 1809, 86, 1808, 1801, 86, 1805, 170, 1810, 86, 86, - 86, 1811, 1804, 1803, 1812, 1807, 86, 86, 86, 86, - 1820, 86, 1813, 86, 1815, 86, 1814, 86, 1821, 1824, - 86, 1818, 1826, 86, 86, 1816, 1817, 86, 86, 1828, - 1830, 1822, 1825, 1819, 86, 1823, 86, 1832, 86, 1829, + 86, 86, 86, 1783, 86, 1776, 86, 1788, 86, 1780, + 1784, 1786, 86, 86, 1781, 1782, 86, 86, 86, 1794, + 86, 1785, 1792, 1789, 1787, 86, 86, 1795, 86, 1796, + 1793, 86, 1791, 1790, 86, 86, 1797, 86, 1801, 86, + 86, 1806, 86, 1798, 86, 1804, 86, 86, 86, 1802, + 1807, 86, 1809, 86, 1800, 86, 1799, 1803, 86, 1805, + 86, 170, 1813, 86, 1816, 86, 1812, 1808, 1815, 86, + 1810, 86, 1811, 86, 1817, 86, 86, 1820, 1819, 1814, + 86, 86, 1818, 86, 86, 1827, 86, 86, 3667, 86, + 1822, 1828, 86, 1821, 86, 1825, 1831, 86, 86, 1823, - 1834, 86, 86, 86, 1827, 86, 86, 86, 1831, 86, - 86, 1836, 1833, 86, 1837, 86, 1839, 86, 1840, 86, - 86, 1835, 1844, 86, 1841, 1842, 86, 1845, 1843, 86, - 1838, 1852, 86, 86, 86, 1847, 1849, 86, 1846, 1850, - 86, 86, 86, 1856, 1854, 1853, 86, 1857, 86, 1848, - 86, 1851, 1862, 1859, 1860, 86, 1863, 1858, 86, 86, - 1855, 1869, 86, 1867, 1864, 86, 1865, 86, 1866, 86, - 1861, 86, 86, 86, 86, 86, 1868, 1874, 1873, 1875, - 1876, 86, 86, 86, 86, 86, 86, 1877, 86, 1878, - 1870, 86, 1871, 1880, 1872, 86, 1881, 86, 86, 86, + 1824, 1832, 86, 1833, 1835, 86, 1837, 1829, 1826, 1830, + 1836, 86, 86, 1839, 1834, 86, 1841, 86, 86, 86, + 86, 86, 86, 86, 1846, 86, 1843, 1844, 86, 1840, + 86, 1838, 86, 1847, 86, 86, 86, 1842, 1851, 1848, + 86, 1852, 86, 86, 86, 1845, 1849, 1856, 1853, 1850, + 1857, 1859, 86, 86, 1854, 1861, 1855, 86, 1860, 86, + 86, 86, 1858, 86, 3667, 1864, 1866, 1868, 1863, 1867, + 86, 1862, 1869, 1870, 86, 86, 86, 1872, 86, 86, + 1871, 86, 1873, 1874, 86, 86, 1865, 1876, 86, 86, + 1875, 86, 86, 1881, 1882, 1880, 86, 1883, 1885, 86, - 86, 86, 1883, 1882, 1879, 86, 86, 86, 86, 86, - 86, 1884, 1893, 1892, 86, 1887, 86, 86, 1885, 1888, - 1886, 1889, 86, 86, 1890, 86, 1896, 86, 1899, 1895, - 1898, 86, 86, 1891, 86, 1894, 86, 1897, 86, 1904, - 86, 1903, 86, 1900, 86, 1906, 86, 1901, 86, 1907, - 1908, 86, 1902, 1910, 1911, 86, 1912, 1905, 1909, 86, - 86, 1913, 86, 86, 86, 86, 86, 86, 86, 86, - 1927, 86, 1917, 1914, 1919, 1920, 1928, 86, 1921, 1918, - 1916, 1922, 86, 1923, 1915, 1926, 86, 86, 1924, 86, - 1932, 86, 1931, 86, 1925, 86, 86, 86, 1929, 86, + 86, 1884, 1877, 86, 86, 86, 86, 1878, 86, 1888, + 86, 1879, 86, 1887, 86, 86, 86, 1889, 86, 86, + 86, 86, 86, 86, 1890, 86, 86, 1899, 1886, 1894, + 86, 86, 1900, 1895, 1891, 1892, 1896, 86, 1893, 1897, + 86, 86, 1906, 1903, 1901, 1898, 1907, 1902, 86, 1904, + 86, 86, 86, 86, 1905, 1911, 86, 1913, 86, 86, + 1915, 86, 86, 86, 86, 86, 1908, 1910, 1914, 1917, + 86, 1909, 86, 1912, 1918, 86, 1919, 1921, 1916, 86, + 1920, 86, 86, 86, 86, 86, 86, 3667, 1924, 1926, + 1923, 86, 1927, 86, 1922, 1928, 1925, 1934, 86, 86, - 1936, 1935, 86, 86, 1937, 1930, 1933, 86, 86, 86, - 86, 86, 1946, 86, 1934, 86, 1940, 1947, 1944, 1939, - 1942, 1938, 1945, 1943, 86, 86, 86, 1941, 86, 86, - 86, 86, 86, 1953, 86, 1948, 1955, 1949, 1954, 86, - 1951, 86, 1956, 1950, 1960, 1952, 86, 1959, 86, 86, - 86, 1963, 1958, 86, 1965, 1964, 86, 1957, 1962, 86, - 86, 1969, 86, 86, 1961, 1973, 86, 86, 1966, 1967, - 1974, 86, 1968, 86, 86, 86, 86, 1970, 1980, 1978, - 1975, 1972, 1976, 1971, 86, 1982, 86, 1983, 86, 1979, - 86, 86, 1986, 86, 1981, 1977, 1984, 86, 86, 86, + 1929, 1930, 1933, 1935, 86, 1936, 1931, 86, 86, 1937, + 1932, 1938, 1939, 86, 86, 86, 86, 86, 1943, 86, + 1940, 1942, 86, 86, 1945, 86, 86, 86, 86, 1953, + 1954, 86, 86, 1941, 1948, 86, 1952, 1950, 1944, 1947, + 1951, 1946, 86, 86, 86, 1949, 86, 86, 1961, 1955, + 86, 86, 1956, 1962, 86, 1963, 1957, 86, 86, 86, + 1959, 1968, 1958, 1960, 86, 1967, 86, 86, 1971, 1964, + 86, 86, 1972, 86, 1973, 86, 1965, 1966, 86, 1970, + 1975, 86, 1969, 1976, 86, 1981, 1977, 86, 1974, 86, + 1982, 86, 86, 1978, 86, 86, 3667, 1988, 86, 1979, - 1990, 86, 1985, 1987, 86, 86, 86, 86, 86, 1994, - 1988, 1992, 1995, 1989, 1991, 86, 86, 1993, 86, 86, - 86, 86, 86, 2000, 1996, 86, 1997, 1999, 86, 2001, - 86, 2003, 2007, 86, 2002, 1998, 86, 2009, 2004, 2010, - 86, 86, 2005, 86, 2006, 86, 86, 2013, 86, 2011, - 86, 2017, 86, 2012, 2008, 86, 2014, 2019, 86, 2015, - 86, 86, 86, 86, 2023, 86, 86, 86, 2018, 2016, - 2025, 86, 2026, 86, 86, 86, 2021, 86, 2028, 2022, - 2020, 86, 2024, 2030, 86, 170, 2029, 86, 2032, 86, - 2034, 2027, 86, 2033, 2037, 86, 86, 2035, 2031, 86, + 1986, 1983, 1980, 86, 1984, 1990, 86, 1991, 1987, 86, + 86, 1994, 86, 86, 1985, 1992, 1989, 86, 1995, 86, + 86, 1998, 86, 1993, 2002, 86, 86, 86, 86, 86, + 86, 2000, 86, 2003, 1997, 1999, 86, 2001, 86, 1996, + 86, 86, 86, 2008, 2007, 2004, 86, 86, 2005, 2009, + 86, 2006, 2015, 86, 2010, 2011, 2013, 2017, 86, 2018, + 2012, 2019, 86, 86, 2014, 86, 2021, 86, 86, 86, + 86, 2025, 86, 86, 2016, 2020, 2027, 86, 86, 86, + 2031, 86, 86, 86, 86, 86, 2026, 2023, 2022, 2024, + 2034, 86, 86, 86, 2029, 2033, 86, 2030, 2036, 2028, - 2041, 86, 86, 86, 2036, 86, 86, 86, 2039, 86, - 2043, 2038, 86, 86, 2048, 86, 2042, 2044, 2040, 2045, - 86, 2051, 2052, 86, 2049, 2046, 86, 86, 86, 2047, - 2053, 2050, 2054, 86, 86, 2056, 2057, 2058, 86, 2055, - 2059, 86, 86, 2060, 86, 86, 86, 2061, 86, 86, - 86, 86, 86, 86, 86, 2066, 2067, 86, 86, 2071, - 86, 2068, 2072, 86, 2080, 2062, 2064, 2065, 2063, 2069, - 86, 86, 86, 2070, 86, 2073, 2075, 2077, 2078, 86, - 2074, 2079, 86, 2076, 86, 86, 86, 86, 86, 86, - 2087, 86, 2090, 2091, 86, 2081, 2092, 86, 2083, 86, + 86, 2037, 86, 2032, 2035, 86, 170, 86, 86, 2038, + 2042, 2045, 86, 2040, 2041, 2039, 86, 86, 2043, 86, + 2049, 86, 86, 2044, 86, 86, 86, 86, 86, 2047, + 86, 2051, 86, 3667, 2056, 2046, 2050, 2052, 2048, 2053, + 86, 86, 2057, 2060, 86, 2054, 86, 2059, 2055, 2061, + 2058, 2062, 86, 86, 86, 2065, 2066, 86, 2063, 86, + 86, 86, 2068, 2064, 86, 86, 86, 2069, 86, 86, + 86, 2067, 86, 86, 86, 2074, 86, 2075, 86, 86, + 86, 2079, 2076, 86, 3667, 2070, 2072, 2073, 2071, 2078, + 2077, 86, 2080, 86, 86, 2086, 2083, 86, 2085, 2082, - 2082, 86, 2085, 2088, 2084, 2089, 86, 2086, 2094, 86, - 86, 2095, 86, 2099, 86, 2101, 86, 86, 2103, 2093, - 2100, 86, 2096, 86, 86, 2105, 2102, 2097, 86, 86, - 86, 86, 86, 2098, 2106, 2104, 86, 2109, 86, 2108, - 86, 2112, 86, 86, 86, 2111, 86, 2113, 86, 2115, - 2110, 2116, 86, 2107, 86, 2117, 2119, 2118, 86, 86, - 86, 2127, 86, 86, 2114, 86, 86, 86, 2124, 86, - 2120, 2121, 2122, 2130, 2131, 2132, 86, 2123, 2125, 2126, - 2133, 86, 86, 2128, 86, 2129, 2136, 86, 86, 2139, - 2134, 86, 86, 86, 86, 86, 86, 2135, 2137, 86, + 2087, 86, 2088, 2084, 86, 2081, 86, 86, 86, 86, + 86, 2095, 86, 2090, 86, 2089, 86, 2098, 2099, 86, + 2100, 86, 86, 2091, 86, 2092, 2093, 2094, 2096, 86, + 2097, 86, 2101, 2102, 86, 86, 2103, 2107, 86, 86, + 86, 2109, 2110, 2104, 2108, 2105, 2111, 86, 2113, 2112, + 2106, 86, 86, 86, 86, 86, 2114, 86, 2116, 2117, + 86, 86, 2120, 86, 86, 86, 2119, 86, 86, 86, + 2125, 86, 2123, 2124, 2127, 86, 2126, 2118, 2115, 2121, + 86, 86, 86, 86, 2135, 86, 2122, 2128, 2129, 2130, + 86, 86, 86, 86, 2131, 86, 86, 86, 2139, 2138, - 2140, 2143, 86, 2138, 86, 2145, 86, 2148, 2149, 86, - 86, 86, 2141, 86, 2142, 86, 2146, 2151, 86, 86, - 2144, 2147, 2153, 2156, 2154, 86, 2158, 86, 86, 86, - 2150, 86, 86, 86, 86, 86, 2152, 86, 2164, 2161, - 2155, 2157, 2162, 86, 2167, 2169, 2160, 86, 86, 2159, - 86, 86, 2168, 86, 86, 86, 2173, 2172, 2175, 2166, - 2163, 2165, 2171, 86, 86, 2176, 86, 86, 2170, 86, - 86, 86, 2174, 86, 2177, 86, 2178, 86, 2182, 86, - 86, 86, 2184, 86, 2187, 2179, 86, 2188, 2189, 2183, - 86, 2180, 2181, 86, 86, 86, 86, 86, 2185, 2192, + 2133, 2132, 2140, 2134, 86, 2136, 2144, 2141, 86, 2142, + 86, 2137, 2143, 86, 2147, 86, 2149, 86, 2151, 86, + 86, 2145, 86, 86, 2148, 86, 2153, 86, 2146, 86, + 2156, 2157, 86, 86, 2159, 86, 86, 86, 2150, 86, + 86, 86, 86, 2154, 86, 2164, 2161, 86, 2152, 2155, + 2162, 86, 86, 2158, 2167, 86, 2165, 86, 2166, 2170, + 2163, 2160, 2169, 2168, 86, 86, 2171, 86, 2173, 86, + 2176, 86, 86, 2178, 86, 2181, 86, 2177, 2180, 86, + 86, 86, 2182, 86, 86, 2175, 2184, 2185, 86, 2186, + 2172, 2174, 86, 86, 2179, 86, 86, 86, 86, 86, - 2197, 86, 86, 86, 86, 2191, 2190, 2186, 2196, 86, - 86, 86, 2203, 86, 86, 2193, 2194, 2202, 86, 2195, - 2204, 2206, 86, 2199, 2200, 86, 2198, 2205, 86, 2201, - 2210, 86, 2207, 86, 86, 86, 2208, 86, 86, 86, - 2214, 2209, 86, 2218, 86, 86, 86, 86, 2212, 86, - 2223, 86, 2221, 86, 2211, 3656, 2213, 2222, 2215, 2216, - 86, 2220, 2217, 2219, 86, 2224, 86, 86, 86, 2226, - 2225, 86, 86, 2229, 2231, 86, 2230, 2238, 2227, 2232, - 86, 2233, 2235, 2228, 2236, 86, 2234, 86, 86, 2240, - 86, 86, 86, 86, 2237, 86, 2242, 2239, 86, 2244, + 2191, 86, 2183, 86, 2187, 86, 2193, 2197, 2188, 86, + 2196, 2192, 2198, 86, 86, 86, 2189, 2190, 86, 2194, + 86, 86, 86, 86, 2201, 2206, 86, 86, 2205, 86, + 2200, 2195, 86, 86, 2199, 86, 86, 2212, 86, 2211, + 2202, 2203, 2216, 86, 2204, 86, 86, 2209, 2208, 2213, + 86, 2207, 2210, 86, 2214, 2215, 86, 2217, 2219, 86, + 86, 86, 2218, 86, 86, 86, 2223, 2221, 2227, 86, + 86, 2220, 86, 86, 86, 2230, 86, 2232, 86, 2222, + 86, 2233, 86, 2224, 2225, 2226, 2234, 2228, 2229, 2231, + 86, 86, 2238, 86, 2240, 86, 2241, 86, 2239, 2235, - 86, 2246, 86, 2241, 2248, 2243, 86, 86, 2249, 86, - 86, 86, 170, 86, 86, 86, 86, 2252, 86, 2256, - 86, 2257, 86, 2258, 2247, 2245, 2251, 2253, 2254, 3656, - 2250, 2262, 2255, 2259, 86, 2260, 86, 86, 86, 86, - 2261, 86, 86, 86, 2263, 2265, 2264, 86, 2267, 86, - 2268, 2266, 86, 2270, 86, 86, 86, 86, 2274, 86, - 86, 2269, 2273, 86, 86, 2275, 2271, 2272, 2276, 2277, - 86, 2279, 86, 2278, 86, 86, 86, 86, 86, 86, - 2280, 2284, 2286, 2281, 2285, 86, 86, 86, 86, 86, - 86, 2291, 86, 2282, 2288, 2283, 2287, 86, 86, 86, + 2242, 86, 2236, 2244, 2245, 2243, 86, 2237, 86, 86, + 86, 86, 2249, 2247, 86, 86, 86, 86, 86, 2251, + 86, 2253, 86, 2248, 2255, 2257, 2250, 2246, 2252, 86, + 86, 86, 2258, 86, 86, 170, 86, 86, 86, 2271, + 2261, 86, 2254, 86, 2256, 86, 2265, 3667, 2259, 2262, + 2263, 86, 2267, 86, 2260, 2264, 2266, 2268, 86, 2269, + 86, 86, 86, 2270, 86, 86, 86, 2272, 2274, 2273, + 86, 2276, 86, 2277, 2275, 86, 2279, 86, 86, 86, + 86, 2283, 86, 86, 2278, 2282, 86, 86, 2284, 2280, + 2281, 2285, 2286, 86, 2288, 86, 2287, 86, 86, 86, - 86, 2290, 2292, 86, 2289, 86, 2294, 2293, 2295, 86, - 2297, 86, 2296, 2302, 2298, 2299, 2301, 2303, 86, 2300, - 86, 86, 86, 2304, 86, 86, 86, 2310, 86, 86, - 2312, 86, 86, 86, 2313, 2315, 86, 2305, 2306, 2309, - 2307, 2308, 86, 2317, 86, 2311, 86, 2318, 86, 2314, - 2316, 86, 2321, 86, 86, 86, 86, 2320, 86, 86, - 2326, 2323, 86, 86, 2327, 86, 86, 2322, 86, 86, - 86, 2319, 2328, 86, 86, 86, 2325, 2324, 2330, 86, - 2331, 2337, 2333, 2329, 2332, 86, 2338, 86, 2335, 2336, - 86, 2334, 86, 86, 2340, 2343, 2339, 86, 2341, 2346, + 86, 86, 86, 2289, 2293, 2295, 2290, 2294, 86, 86, + 86, 86, 86, 86, 2300, 86, 2291, 2297, 2292, 2296, + 86, 86, 86, 86, 2299, 2301, 86, 2298, 86, 2303, + 2302, 2304, 86, 2306, 86, 2305, 2311, 2307, 2308, 2310, + 2312, 86, 2309, 86, 86, 86, 2313, 86, 86, 86, + 2319, 86, 86, 2321, 86, 86, 86, 2322, 2324, 86, + 2314, 2315, 2318, 2316, 2317, 86, 2326, 86, 2320, 86, + 2327, 86, 2323, 2325, 86, 2330, 86, 86, 86, 86, + 2329, 86, 86, 2335, 2332, 86, 86, 2336, 86, 86, + 2331, 86, 86, 86, 2328, 2337, 86, 86, 86, 2334, - 86, 86, 2345, 86, 2349, 86, 86, 86, 2344, 86, - 2350, 2342, 2352, 2348, 86, 2347, 2353, 86, 86, 86, - 86, 86, 2355, 2351, 2354, 2356, 86, 2358, 2357, 2359, - 86, 2363, 2361, 2360, 86, 86, 2364, 86, 2366, 86, - 86, 86, 86, 86, 2369, 2362, 2368, 86, 2370, 2365, - 86, 86, 2371, 86, 2375, 86, 86, 86, 2379, 86, - 86, 2376, 86, 2380, 86, 86, 2367, 2378, 2372, 2373, - 2377, 86, 86, 2374, 2385, 86, 2383, 2384, 2382, 2381, - 86, 2386, 86, 2387, 86, 2390, 86, 86, 2392, 86, - 86, 86, 2391, 2396, 86, 86, 86, 2388, 2394, 86, + 2333, 2339, 86, 2340, 2346, 2342, 2338, 2341, 86, 2347, + 86, 2344, 2345, 86, 2343, 86, 86, 2349, 2352, 2348, + 86, 2350, 2355, 86, 86, 2354, 86, 2358, 86, 86, + 86, 2353, 86, 2359, 2351, 2361, 2357, 86, 2356, 2362, + 86, 86, 86, 86, 86, 2364, 2360, 2363, 2365, 86, + 2367, 2366, 2368, 86, 2372, 2370, 2369, 86, 86, 86, + 86, 2374, 2376, 86, 86, 86, 86, 86, 2371, 2379, + 2378, 2380, 2375, 86, 86, 86, 86, 2373, 2381, 2385, + 3667, 86, 86, 2389, 86, 86, 2386, 86, 2390, 86, + 2377, 86, 2382, 2383, 86, 2387, 2384, 86, 86, 2388, - 2398, 86, 2399, 86, 2389, 86, 2395, 2393, 2397, 86, - 2401, 86, 2400, 2402, 86, 2403, 2406, 86, 2404, 2408, - 86, 2405, 86, 86, 2409, 86, 86, 86, 86, 86, - 86, 2411, 2410, 2414, 2415, 2412, 86, 86, 2407, 2413, - 2420, 86, 86, 2416, 2417, 86, 2419, 86, 86, 86, - 86, 2425, 86, 86, 2428, 86, 2418, 86, 86, 86, - 2421, 86, 2429, 2422, 2424, 2423, 2426, 2430, 2427, 86, - 86, 86, 86, 86, 2432, 2433, 2435, 2431, 2436, 2438, - 2434, 86, 2439, 86, 86, 86, 2442, 2444, 86, 2446, - 86, 2437, 86, 2443, 2445, 86, 2440, 86, 86, 86, + 2395, 86, 2391, 2392, 86, 2393, 86, 2396, 86, 2394, + 2400, 86, 86, 2398, 86, 2397, 86, 2401, 86, 86, + 2402, 3667, 2404, 2406, 86, 86, 2408, 86, 2399, 2403, + 2405, 2407, 86, 2409, 86, 86, 2410, 86, 86, 2411, + 86, 2413, 2416, 86, 86, 86, 2418, 2414, 86, 86, + 2415, 2419, 86, 2412, 2421, 86, 2420, 86, 86, 86, + 2422, 2423, 2424, 2425, 2417, 86, 86, 2427, 2426, 2430, + 86, 86, 86, 86, 2429, 86, 86, 86, 86, 2428, + 86, 2438, 86, 86, 2431, 86, 2444, 86, 86, 2432, + 2433, 2434, 2436, 2442, 2439, 2437, 86, 2440, 2435, 86, - 86, 2441, 2449, 2453, 2450, 170, 2455, 3656, 86, 86, - 2447, 2456, 86, 2451, 2448, 2457, 2452, 2458, 86, 86, - 86, 86, 2459, 86, 2462, 86, 2460, 2454, 2461, 86, - 2463, 86, 2467, 86, 86, 2468, 86, 2471, 2470, 2476, - 2466, 86, 86, 86, 2464, 86, 2472, 2475, 2469, 86, - 2473, 2474, 86, 86, 86, 2465, 86, 2477, 86, 86, - 2479, 86, 86, 86, 86, 86, 2482, 86, 2485, 86, - 86, 86, 2491, 86, 2478, 86, 2489, 86, 2480, 2484, - 86, 2492, 86, 2486, 2481, 2483, 2487, 2488, 86, 86, - 2493, 2490, 86, 2494, 86, 86, 86, 86, 2495, 86, + 86, 2443, 86, 2441, 86, 2445, 2446, 86, 2448, 86, + 86, 86, 2454, 86, 86, 2456, 86, 86, 86, 2447, + 2453, 86, 2449, 2455, 2450, 2451, 86, 86, 2457, 2452, + 2459, 2461, 2460, 2463, 170, 2467, 2458, 2465, 2468, 86, + 2462, 86, 2466, 86, 86, 86, 86, 86, 2469, 2472, + 86, 86, 2473, 86, 2470, 3667, 2464, 2477, 86, 86, + 2478, 86, 2476, 86, 2481, 86, 2474, 2471, 86, 86, + 86, 86, 2483, 2479, 2482, 2484, 86, 2475, 86, 2486, + 86, 2480, 86, 2485, 2487, 86, 2489, 86, 2488, 86, + 2491, 86, 86, 86, 2492, 86, 86, 2495, 86, 86, - 2500, 2503, 86, 86, 2498, 86, 86, 2497, 2496, 2501, - 86, 2504, 86, 2499, 86, 2502, 86, 86, 2505, 86, - 86, 2514, 86, 86, 2506, 2507, 2512, 86, 86, 2518, - 86, 86, 2519, 2508, 2517, 2510, 2509, 2515, 2511, 86, - 2513, 2516, 2521, 86, 2522, 86, 86, 86, 2523, 86, - 86, 2520, 86, 86, 2528, 2529, 86, 86, 86, 2524, - 2530, 2531, 86, 2526, 86, 2527, 3656, 86, 2553, 86, - 2535, 2525, 2532, 2536, 2537, 86, 86, 2538, 86, 2533, - 2534, 86, 2539, 2542, 86, 2543, 86, 2540, 86, 86, - 2541, 86, 86, 2544, 2545, 86, 2549, 86, 2550, 86, + 86, 2501, 86, 3667, 2499, 86, 86, 2490, 2494, 2502, + 86, 86, 2497, 2496, 2493, 2504, 86, 86, 2498, 86, + 86, 2503, 2500, 86, 86, 86, 2513, 86, 2510, 2505, + 86, 2508, 86, 86, 86, 2507, 86, 2511, 2514, 2509, + 86, 86, 2506, 2512, 86, 86, 86, 86, 2524, 3667, + 86, 2515, 2516, 2517, 86, 86, 86, 2522, 2529, 2518, + 2520, 86, 2525, 2526, 2519, 2521, 86, 2523, 86, 2527, + 2531, 86, 2528, 2532, 86, 86, 86, 2533, 86, 86, + 86, 2530, 86, 2538, 2539, 86, 86, 86, 2534, 2540, + 2541, 86, 2536, 2537, 2542, 86, 2547, 86, 86, 2545, - 86, 2552, 86, 2554, 86, 86, 86, 2548, 86, 2557, - 86, 2546, 2547, 2556, 2558, 86, 86, 86, 86, 2551, - 2555, 86, 86, 2561, 2565, 86, 2560, 2564, 86, 86, - 2559, 86, 2562, 2567, 86, 2570, 86, 86, 2572, 86, - 2563, 2569, 2571, 2574, 86, 86, 86, 2566, 86, 2568, - 2577, 86, 86, 2573, 2580, 86, 2581, 86, 86, 86, - 86, 2576, 86, 86, 2575, 86, 2578, 2586, 2587, 86, - 86, 2579, 86, 2583, 86, 2585, 86, 2582, 86, 2589, - 2592, 86, 2584, 86, 2588, 2590, 86, 2591, 86, 86, - 2594, 86, 2595, 86, 86, 2600, 2593, 86, 86, 2602, + 2535, 2543, 2546, 86, 2548, 86, 2549, 86, 2544, 2552, + 86, 2553, 86, 86, 86, 86, 2550, 86, 2554, 2551, + 2555, 86, 2559, 86, 2560, 86, 86, 2562, 86, 86, + 2564, 86, 86, 2558, 2556, 86, 86, 2557, 2567, 86, + 86, 2566, 2568, 86, 86, 2561, 2569, 2563, 86, 2570, + 2565, 2572, 86, 86, 86, 2576, 86, 86, 86, 2575, + 86, 2571, 2573, 2578, 86, 86, 86, 86, 86, 2582, + 2580, 86, 2574, 2581, 86, 2583, 2577, 2586, 2579, 2585, + 86, 86, 86, 2587, 2588, 2592, 2589, 2591, 86, 86, + 2584, 86, 86, 86, 86, 86, 2598, 86, 2597, 86, - 2601, 2603, 86, 2606, 2596, 86, 2597, 86, 2598, 86, - 2608, 86, 2609, 86, 2607, 2599, 2604, 86, 2605, 86, - 86, 86, 86, 86, 86, 2614, 2611, 2616, 2613, 2617, - 86, 86, 86, 2620, 2621, 2618, 2610, 86, 2612, 86, - 86, 86, 2624, 86, 2622, 86, 2619, 2615, 86, 86, - 2625, 86, 2623, 86, 2626, 86, 2628, 2627, 2629, 86, - 2631, 2630, 2632, 86, 86, 2636, 86, 2637, 2633, 86, - 2638, 86, 2634, 86, 86, 86, 86, 2642, 2635, 2643, - 86, 86, 2644, 86, 2641, 86, 86, 2647, 170, 2639, - 2645, 86, 2646, 2648, 2640, 86, 2653, 86, 86, 86, + 2590, 86, 86, 86, 86, 86, 2600, 2594, 86, 2593, + 2596, 2603, 86, 86, 86, 2605, 2595, 2601, 2599, 2602, + 86, 86, 3667, 2604, 86, 2611, 86, 2606, 86, 86, + 2613, 2610, 2607, 2617, 86, 2612, 2609, 2614, 2608, 86, + 86, 2618, 86, 86, 86, 2619, 86, 2620, 86, 86, + 86, 86, 2615, 2625, 2616, 86, 2627, 2622, 2624, 86, + 2628, 86, 86, 2631, 2629, 2632, 86, 2623, 2621, 86, + 86, 86, 2635, 86, 86, 2636, 2626, 2630, 86, 2637, + 86, 2634, 2633, 86, 86, 86, 2640, 86, 86, 86, + 86, 86, 86, 2639, 2642, 2647, 2643, 2644, 2638, 2645, - 2649, 86, 2650, 86, 86, 86, 86, 2651, 2655, 86, - 2661, 2652, 2660, 2654, 86, 2656, 86, 2657, 2659, 2658, - 2664, 86, 86, 2665, 2666, 86, 86, 86, 2663, 2667, - 2669, 2670, 2668, 86, 2662, 86, 86, 86, 2672, 86, - 86, 2674, 2671, 86, 86, 86, 86, 2678, 2679, 2673, - 86, 86, 86, 2683, 86, 2675, 86, 2681, 2676, 86, - 2682, 2684, 86, 86, 2677, 2680, 86, 86, 2685, 86, - 86, 2686, 2691, 86, 2690, 86, 2687, 86, 2688, 2689, - 86, 86, 2693, 86, 86, 86, 86, 86, 2692, 2698, - 2701, 86, 2700, 86, 2703, 86, 86, 2702, 2697, 86, + 2648, 86, 2654, 2646, 2641, 86, 86, 86, 86, 2649, + 86, 2650, 2651, 86, 2653, 86, 2652, 86, 2655, 2657, + 86, 2658, 170, 86, 86, 86, 2656, 2659, 2664, 86, + 86, 86, 86, 86, 2666, 2660, 86, 2661, 86, 2662, + 2663, 86, 86, 2667, 2671, 2665, 86, 2672, 2668, 86, + 2670, 2669, 2678, 2673, 2675, 86, 86, 2676, 2674, 2677, + 86, 86, 2680, 2681, 86, 86, 2679, 86, 86, 86, + 2683, 86, 86, 2682, 86, 2685, 86, 86, 2689, 2684, + 2690, 2687, 86, 86, 2686, 86, 86, 86, 2692, 2693, + 2694, 2695, 86, 86, 86, 2688, 2691, 86, 2696, 2697, - 2694, 2695, 86, 2696, 86, 86, 2699, 2709, 86, 2707, - 86, 86, 86, 2704, 2713, 86, 86, 2712, 2705, 2714, - 86, 2706, 2710, 2715, 86, 86, 2708, 2711, 86, 86, - 2716, 86, 3656, 2717, 86, 2720, 86, 86, 2722, 2721, - 86, 86, 2725, 2718, 2723, 2719, 86, 86, 2726, 2724, - 86, 2728, 2729, 86, 2727, 2730, 86, 86, 2732, 86, - 86, 86, 2731, 86, 86, 86, 86, 86, 86, 2736, - 2741, 86, 2739, 2740, 2743, 2734, 2742, 86, 2733, 2735, - 86, 86, 86, 2745, 86, 86, 86, 2738, 86, 86, - 86, 2737, 2750, 2748, 86, 2753, 86, 86, 86, 86, + 86, 86, 86, 86, 2702, 86, 2698, 2701, 86, 2699, + 86, 86, 86, 2704, 86, 2703, 86, 86, 86, 2712, + 2709, 2700, 86, 2711, 86, 86, 86, 86, 2708, 86, + 2705, 2706, 2707, 2713, 86, 2714, 86, 2710, 2720, 86, + 2715, 2718, 86, 2716, 86, 2717, 86, 2724, 86, 2725, + 2719, 2723, 86, 86, 2721, 86, 2726, 86, 86, 2727, + 2722, 2728, 86, 86, 2731, 86, 86, 2733, 2732, 86, + 86, 86, 2729, 2734, 2735, 86, 2730, 86, 2737, 2738, + 2739, 86, 2741, 86, 86, 86, 86, 2743, 86, 86, + 86, 86, 86, 2740, 2742, 2736, 2747, 86, 86, 86, - 2746, 2744, 2751, 2757, 2756, 2749, 2752, 2747, 2755, 86, - 86, 86, 86, 2754, 2760, 86, 86, 86, 86, 2761, - 86, 2764, 2765, 86, 86, 86, 2759, 86, 2758, 2766, - 86, 2762, 86, 86, 2768, 2763, 2767, 2770, 86, 86, - 2769, 2771, 86, 86, 2772, 86, 86, 2773, 2775, 86, - 2774, 2778, 2779, 86, 2780, 86, 2781, 86, 2782, 86, - 86, 2783, 2776, 86, 86, 2777, 2784, 86, 2786, 86, - 2787, 86, 2788, 86, 2789, 86, 86, 86, 2785, 2790, - 86, 86, 86, 2796, 86, 2798, 86, 86, 2792, 2799, - 86, 86, 2801, 86, 86, 2791, 86, 2793, 2795, 2802, + 86, 86, 2744, 2745, 2750, 2751, 2746, 2752, 86, 2753, + 86, 2754, 86, 2756, 86, 86, 2760, 86, 2748, 2749, + 86, 2755, 86, 86, 86, 2759, 2761, 2764, 86, 86, + 2757, 86, 86, 2768, 2762, 86, 2763, 2758, 2767, 86, + 2766, 86, 2771, 86, 86, 2765, 86, 2772, 86, 86, + 2775, 2776, 86, 2769, 86, 86, 2770, 86, 86, 2777, + 86, 86, 2782, 86, 86, 2773, 2774, 2779, 2781, 86, + 2780, 86, 86, 2778, 86, 2783, 2786, 86, 2784, 2790, + 86, 2785, 2789, 2791, 86, 2792, 86, 2793, 86, 86, + 86, 86, 2787, 2795, 2788, 86, 86, 2798, 86, 2799, - 2797, 2794, 2800, 2803, 86, 86, 2804, 86, 86, 86, - 2806, 2809, 86, 2811, 86, 86, 86, 86, 2810, 86, - 86, 86, 86, 2818, 2805, 170, 86, 2807, 2808, 86, - 2814, 86, 2820, 86, 2816, 2821, 2813, 2819, 86, 86, - 86, 2812, 86, 2815, 2817, 2827, 86, 2824, 2822, 86, - 86, 2831, 86, 2823, 2829, 2830, 2832, 86, 86, 2833, - 2828, 2825, 86, 2826, 86, 2834, 86, 2835, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 3656, 2837, - 2836, 86, 86, 2846, 2844, 2839, 86, 86, 2838, 86, - 2841, 2840, 86, 2850, 2843, 2842, 2845, 2847, 86, 86, + 2797, 2794, 86, 2800, 86, 86, 86, 86, 2796, 86, + 86, 2807, 86, 86, 2809, 86, 2801, 86, 2803, 2810, + 86, 2812, 86, 86, 86, 2802, 2806, 2804, 2811, 86, + 2805, 2814, 2808, 86, 86, 2813, 86, 86, 86, 2817, + 86, 2815, 2820, 86, 2822, 86, 86, 2821, 86, 86, + 86, 170, 86, 2816, 86, 2831, 2818, 2819, 86, 2825, + 2829, 86, 86, 2830, 2827, 86, 2823, 86, 2824, 86, + 2832, 86, 86, 2826, 2828, 2838, 86, 2833, 86, 86, + 2834, 2842, 86, 2840, 2841, 2835, 2843, 86, 86, 2844, + 2839, 2836, 86, 2845, 2837, 86, 2846, 86, 86, 86, - 2848, 2853, 2851, 86, 2849, 2852, 86, 86, 2855, 2856, - 86, 2854, 2857, 2858, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2862, 2859, 2869, 86, 2870, 86, - 2868, 86, 86, 2860, 2861, 2863, 2864, 2865, 2866, 86, - 2867, 2874, 86, 2875, 86, 2873, 2876, 86, 86, 86, - 2872, 2871, 86, 86, 86, 86, 2883, 86, 86, 86, - 2882, 86, 86, 86, 2879, 2877, 2878, 86, 2881, 86, - 2891, 86, 2880, 2887, 2889, 86, 86, 2890, 2884, 2885, - 86, 2886, 2892, 2888, 2893, 86, 2894, 86, 86, 86, - 86, 86, 86, 86, 86, 2896, 2895, 2899, 2900, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 2848, + 2857, 86, 86, 2855, 86, 2847, 2850, 86, 2849, 3667, + 2851, 2852, 86, 2861, 2853, 2854, 2856, 2858, 86, 2859, + 2860, 2864, 2862, 2863, 86, 86, 2865, 2867, 86, 86, + 2869, 86, 86, 86, 2866, 86, 86, 86, 2868, 86, + 86, 86, 86, 2873, 86, 2880, 86, 86, 2879, 3667, + 2870, 2871, 2874, 2872, 2881, 86, 86, 2875, 2876, 86, + 2877, 2878, 2885, 86, 2887, 2884, 86, 2882, 2886, 86, + 86, 86, 86, 86, 2883, 86, 86, 2894, 86, 86, + 2893, 86, 86, 86, 2888, 86, 86, 2890, 86, 2889, - 2897, 86, 2906, 86, 2905, 86, 86, 2909, 86, 2898, - 2901, 2903, 86, 2902, 86, 86, 86, 2904, 86, 2912, - 2907, 86, 86, 2910, 2908, 86, 2916, 2915, 86, 2911, - 86, 2913, 86, 2914, 2917, 86, 2922, 86, 2918, 86, - 86, 86, 86, 2919, 86, 2925, 86, 2926, 86, 2924, - 2920, 2923, 2921, 2927, 86, 2929, 86, 86, 86, 86, - 2932, 2928, 2930, 2935, 86, 86, 2936, 2931, 2934, 86, - 86, 2933, 2939, 86, 86, 86, 86, 86, 2937, 2946, - 86, 86, 86, 86, 86, 86, 2943, 2940, 2941, 2942, - 2944, 2945, 2938, 2949, 86, 86, 86, 86, 86, 2948, + 2892, 2900, 2891, 86, 2898, 2901, 2902, 86, 86, 2895, + 2903, 2896, 2897, 2904, 86, 2899, 86, 2905, 86, 86, + 86, 86, 86, 86, 86, 2906, 2910, 2911, 86, 86, + 86, 2908, 2916, 2917, 86, 86, 86, 2907, 2920, 86, + 2909, 86, 86, 2912, 2914, 86, 86, 2913, 2915, 2923, + 2918, 86, 2921, 86, 2919, 86, 86, 2922, 86, 2926, + 2927, 2924, 2928, 86, 86, 86, 2925, 86, 2929, 2933, + 86, 86, 86, 2930, 86, 2937, 2936, 2938, 86, 2934, + 2935, 86, 2940, 86, 2931, 2932, 86, 86, 86, 86, + 86, 2941, 2946, 86, 86, 2947, 2942, 86, 86, 86, - 2950, 2951, 86, 2947, 2955, 86, 2954, 2953, 86, 86, - 86, 2952, 86, 86, 2956, 2959, 2957, 2960, 2962, 86, - 2963, 86, 86, 86, 2958, 2966, 170, 2964, 2961, 86, - 86, 86, 86, 2971, 3656, 2968, 2967, 86, 86, 86, - 86, 2973, 2965, 2972, 2976, 86, 86, 2977, 86, 2969, - 2970, 2975, 2974, 86, 2979, 86, 86, 2981, 86, 2980, - 86, 2986, 2982, 86, 86, 2983, 2978, 86, 86, 2984, - 86, 86, 2985, 2988, 2987, 86, 86, 86, 86, 2993, - 2989, 2994, 86, 2995, 2991, 86, 86, 86, 2997, 86, - 2990, 86, 86, 2998, 2996, 3000, 2999, 86, 2992, 86, + 2939, 2944, 2950, 86, 2943, 86, 2948, 86, 86, 86, + 2945, 86, 2951, 86, 86, 86, 2954, 3522, 2952, 86, + 2949, 2953, 2955, 2956, 2957, 86, 2959, 2960, 86, 2958, + 86, 86, 86, 2963, 86, 2961, 2962, 2964, 86, 86, + 86, 86, 2965, 86, 86, 86, 86, 86, 2967, 2968, + 2970, 2971, 2973, 86, 2978, 2969, 86, 2966, 2972, 2974, + 86, 2975, 86, 2976, 2977, 170, 86, 2979, 86, 2982, + 86, 86, 86, 2984, 86, 86, 2983, 2987, 86, 2986, + 2988, 86, 86, 3667, 2980, 2985, 2981, 2990, 86, 86, + 86, 2992, 2991, 86, 86, 2989, 2993, 86, 2994, 2995, - 86, 86, 86, 86, 3002, 3003, 3004, 86, 86, 3001, - 86, 86, 3009, 86, 86, 3013, 3006, 3007, 86, 3008, - 3005, 86, 3010, 3011, 86, 3012, 86, 86, 86, 86, - 3014, 3019, 86, 3015, 86, 3020, 86, 86, 3024, 86, - 86, 86, 3027, 86, 86, 3022, 3016, 3017, 3018, 3023, - 86, 86, 86, 3021, 3025, 86, 3026, 3032, 86, 3031, - 3034, 3035, 86, 3028, 3037, 3029, 86, 86, 3038, 86, - 86, 3030, 86, 86, 86, 86, 86, 3033, 86, 3041, - 3036, 3039, 3044, 86, 3042, 86, 3045, 86, 86, 3043, - 86, 3046, 3049, 86, 86, 3051, 3047, 3040, 86, 3048, + 2997, 86, 86, 86, 2996, 2998, 86, 2999, 86, 86, + 86, 86, 3000, 3004, 3005, 86, 3006, 3002, 86, 86, + 86, 3008, 86, 3001, 86, 3009, 86, 3007, 86, 3010, + 86, 3003, 86, 3011, 86, 86, 86, 3013, 3012, 3014, + 3015, 86, 86, 86, 3020, 86, 3016, 86, 86, 3017, + 3018, 3019, 3022, 3024, 3021, 86, 86, 86, 86, 86, + 86, 3025, 3030, 86, 86, 86, 3023, 86, 86, 3035, + 86, 3031, 86, 86, 86, 3026, 3033, 3027, 3028, 3029, + 86, 3034, 3038, 86, 3032, 3036, 86, 86, 3037, 3043, + 86, 3042, 86, 3039, 3045, 3040, 3046, 86, 3048, 86, - 3053, 86, 3054, 86, 86, 3050, 3055, 86, 3056, 86, - 86, 3059, 86, 86, 3057, 86, 3052, 86, 3063, 3058, - 3061, 86, 86, 3064, 86, 86, 86, 3068, 86, 3062, - 3069, 86, 86, 3060, 3065, 3070, 86, 3071, 86, 86, - 86, 3066, 3072, 86, 86, 3067, 3075, 86, 3077, 86, - 3076, 3078, 86, 3073, 86, 3079, 3074, 3080, 86, 3081, - 3082, 86, 3083, 86, 86, 3086, 3087, 86, 86, 3089, - 86, 86, 3088, 86, 86, 86, 86, 3091, 3085, 3090, - 86, 3084, 3092, 86, 86, 3097, 3100, 86, 86, 86, - 3096, 86, 3099, 3093, 3101, 86, 3094, 86, 3098, 86, + 86, 86, 86, 86, 86, 86, 3041, 3049, 86, 3050, + 3052, 86, 3053, 86, 3055, 3047, 86, 3044, 86, 3056, + 86, 86, 3057, 86, 3051, 86, 3054, 3060, 86, 3058, + 86, 3062, 3064, 86, 86, 3059, 3065, 86, 3061, 3066, + 86, 86, 86, 3063, 86, 3067, 86, 3068, 3070, 86, + 86, 3072, 3074, 3069, 3071, 86, 86, 3075, 86, 86, + 86, 3079, 3073, 3080, 86, 3081, 86, 3076, 3082, 86, + 86, 86, 86, 3083, 3086, 86, 3077, 86, 86, 3078, + 3089, 86, 86, 3090, 3084, 3085, 3091, 86, 86, 3093, + 86, 86, 86, 86, 3097, 3087, 3098, 86, 3088, 86, - 3095, 86, 3103, 3102, 3105, 86, 3106, 86, 86, 86, - 86, 3656, 86, 3109, 3113, 86, 86, 86, 86, 86, - 86, 3115, 3104, 86, 3107, 3108, 3112, 3110, 3119, 3116, - 3111, 3114, 3120, 3117, 3122, 3118, 86, 3121, 86, 3123, - 86, 86, 3124, 3125, 86, 86, 3126, 86, 3127, 86, - 3128, 86, 3129, 86, 3130, 86, 3133, 3131, 86, 86, - 3132, 86, 86, 86, 86, 86, 3136, 86, 3138, 86, - 86, 3143, 86, 3135, 3139, 3144, 86, 86, 86, 3146, - 3145, 3137, 3147, 86, 3134, 86, 3656, 3140, 86, 3141, - 3142, 3148, 3150, 86, 86, 3151, 3149, 3152, 86, 3153, + 86, 86, 3100, 3092, 3094, 3099, 86, 3096, 86, 3102, + 3095, 3101, 86, 86, 3103, 86, 86, 86, 3108, 3111, + 86, 86, 3104, 3107, 86, 3110, 86, 86, 86, 86, + 3117, 3112, 3105, 3106, 86, 3113, 86, 3114, 86, 3116, + 86, 3109, 86, 86, 86, 3120, 3124, 86, 86, 86, + 86, 86, 86, 3115, 86, 3118, 3119, 3126, 3123, 3130, + 3121, 3131, 3125, 3122, 3128, 3127, 3132, 86, 3129, 3133, + 86, 3135, 3136, 86, 3134, 86, 86, 3137, 86, 3138, + 86, 3139, 86, 3140, 86, 3141, 3142, 86, 86, 86, + 86, 86, 3143, 86, 86, 3667, 3147, 86, 86, 3149, - 3154, 86, 86, 86, 86, 86, 86, 3160, 86, 3161, - 86, 3155, 3156, 3157, 3158, 86, 86, 86, 86, 3162, - 86, 86, 3168, 86, 3159, 3163, 86, 3169, 86, 3165, - 86, 86, 3171, 86, 3172, 3166, 3164, 86, 3173, 3170, - 86, 3167, 3174, 86, 86, 3175, 3176, 86, 3180, 86, - 86, 3177, 3182, 86, 86, 86, 86, 3188, 86, 3181, - 3185, 86, 3179, 86, 86, 3178, 3183, 86, 86, 86, - 3186, 86, 3193, 3191, 3192, 86, 3187, 86, 3184, 3189, - 86, 86, 3195, 86, 3194, 3190, 86, 3198, 3200, 86, - 3199, 3201, 86, 3196, 86, 3197, 3202, 86, 86, 86, + 86, 86, 3154, 86, 3146, 86, 3150, 86, 3144, 3155, + 86, 86, 3148, 86, 3156, 3145, 3158, 86, 3151, 3159, + 3152, 3153, 3157, 3160, 3161, 86, 86, 3163, 86, 86, + 3165, 86, 86, 3162, 3164, 86, 86, 86, 86, 3171, + 86, 3166, 3172, 86, 3167, 3168, 3169, 86, 86, 86, + 86, 3173, 86, 86, 3179, 86, 3170, 3174, 86, 3180, + 86, 3176, 86, 86, 3182, 86, 3183, 3177, 3175, 86, + 3184, 3181, 86, 3178, 3185, 86, 86, 3186, 3187, 86, + 3191, 86, 86, 3188, 3193, 86, 86, 86, 86, 3199, + 86, 3192, 3196, 86, 3190, 86, 86, 3189, 3194, 86, - 3207, 86, 3205, 3203, 3206, 86, 86, 86, 3210, 86, - 3208, 86, 3209, 86, 86, 86, 3216, 86, 3204, 3211, - 3214, 86, 86, 3212, 3218, 86, 86, 86, 86, 86, - 3219, 86, 3215, 3220, 3213, 86, 3221, 86, 3222, 86, - 3223, 86, 3217, 86, 3224, 3227, 86, 3226, 86, 86, - 3225, 86, 3228, 3231, 3229, 86, 3230, 3232, 86, 86, - 86, 86, 3238, 86, 3236, 86, 3235, 3233, 86, 3242, - 86, 86, 3239, 3245, 3234, 3243, 86, 86, 3246, 86, - 3237, 86, 86, 3240, 3249, 86, 86, 3248, 3251, 86, - 3244, 3247, 86, 86, 3241, 86, 86, 86, 3254, 3257, + 86, 86, 3197, 86, 3204, 3202, 3203, 86, 3198, 86, + 3195, 3200, 86, 86, 3206, 86, 3205, 3201, 86, 3209, + 3211, 86, 3210, 3212, 86, 3207, 86, 3208, 3213, 86, + 86, 86, 3218, 86, 3216, 3214, 3217, 86, 86, 86, + 3221, 86, 3219, 86, 3220, 86, 86, 86, 3227, 86, + 3215, 3222, 3225, 86, 86, 3223, 3229, 86, 86, 86, + 86, 86, 3230, 86, 3226, 3231, 3224, 86, 3232, 86, + 3233, 86, 3234, 86, 3228, 86, 3235, 3238, 86, 3237, + 86, 86, 3236, 86, 3239, 3242, 3240, 86, 3241, 3243, + 86, 86, 86, 86, 3249, 86, 3247, 86, 3246, 3244, - 86, 3256, 3252, 3250, 86, 86, 3260, 86, 3253, 3262, - 86, 3255, 86, 3259, 86, 3264, 86, 3258, 86, 3267, - 86, 3268, 86, 3270, 86, 86, 3263, 86, 3261, 86, - 3265, 86, 3274, 86, 3275, 86, 3271, 3266, 86, 86, - 3278, 86, 3269, 86, 86, 86, 3272, 86, 86, 3283, - 86, 3273, 3656, 3276, 3280, 86, 3281, 3285, 86, 3277, - 3279, 3287, 86, 86, 3282, 86, 3289, 3284, 3290, 86, - 3286, 86, 3291, 3288, 86, 86, 3294, 3295, 86, 3297, - 86, 3292, 86, 3296, 86, 86, 3300, 86, 86, 3299, - 86, 3303, 86, 3298, 3293, 3301, 86, 86, 3306, 86, + 86, 3253, 86, 86, 3250, 3256, 3245, 3254, 86, 86, + 3257, 86, 3248, 86, 86, 3251, 3260, 86, 86, 3259, + 3262, 86, 3255, 3258, 86, 86, 3252, 86, 86, 86, + 3265, 3268, 86, 3267, 3263, 3261, 86, 86, 3271, 86, + 3264, 3273, 86, 3266, 86, 3270, 86, 3275, 86, 3269, + 86, 3278, 86, 3279, 86, 3281, 86, 86, 3274, 86, + 3272, 86, 3276, 86, 3285, 86, 3286, 86, 3282, 3277, + 86, 86, 3289, 86, 3280, 86, 86, 86, 3283, 86, + 86, 3294, 86, 3284, 3667, 3287, 3291, 86, 3292, 3296, + 86, 3288, 3290, 3298, 86, 86, 3293, 86, 3300, 3295, - 86, 86, 86, 3311, 86, 86, 86, 3302, 3307, 3304, - 3305, 86, 3315, 86, 86, 3310, 3316, 86, 3308, 3318, - 3314, 86, 3313, 86, 3312, 86, 3309, 3317, 86, 86, - 3320, 3321, 86, 3322, 86, 3319, 3323, 86, 3324, 86, - 3327, 86, 3325, 86, 3329, 86, 86, 86, 3328, 3326, - 3331, 86, 3332, 86, 86, 86, 86, 3330, 86, 86, - 3338, 3339, 86, 86, 86, 86, 3333, 86, 86, 86, - 3345, 86, 3346, 86, 86, 3336, 3334, 3335, 3344, 3342, - 3337, 86, 3348, 3341, 86, 86, 3347, 3343, 86, 3340, - 3351, 86, 3354, 86, 3349, 86, 3352, 3355, 86, 86, + 3301, 86, 3297, 86, 3302, 3299, 86, 86, 3305, 3306, + 86, 3308, 86, 3303, 86, 3307, 86, 86, 3311, 86, + 86, 3310, 86, 3314, 86, 3309, 3304, 3312, 86, 86, + 3317, 86, 86, 86, 86, 3322, 86, 86, 86, 3313, + 3318, 3315, 3316, 86, 3326, 86, 86, 3321, 3327, 86, + 3319, 3329, 3325, 86, 3324, 86, 3323, 86, 3320, 3328, + 86, 86, 3331, 3332, 86, 3333, 86, 3330, 3334, 86, + 3335, 86, 3338, 86, 3336, 86, 3340, 86, 86, 86, + 3339, 3337, 3342, 86, 3343, 86, 86, 86, 86, 3341, + 86, 86, 3349, 3350, 86, 86, 86, 86, 3344, 86, - 3350, 3358, 86, 86, 3356, 3353, 86, 86, 86, 3357, - 86, 3360, 3361, 86, 3359, 3362, 86, 86, 86, 86, - 3363, 86, 3364, 3367, 86, 86, 3365, 3369, 3366, 86, - 86, 3368, 3370, 86, 86, 86, 86, 86, 86, 3379, - 86, 3382, 86, 3380, 3371, 3656, 86, 86, 86, 3372, - 3373, 3374, 3375, 3383, 3376, 3377, 3378, 86, 86, 3386, - 3381, 3385, 3384, 3387, 86, 3388, 86, 86, 3390, 86, - 86, 3389, 3393, 86, 86, 3391, 3392, 3395, 86, 3396, - 3397, 86, 86, 3398, 3399, 3403, 86, 3400, 86, 3394, - 3401, 3402, 86, 86, 86, 3406, 86, 3404, 86, 86, + 86, 86, 3356, 86, 3357, 86, 86, 3347, 3345, 3346, + 3355, 3353, 3348, 86, 3359, 3352, 86, 86, 3358, 3354, + 86, 3351, 3362, 86, 3365, 86, 3360, 86, 3363, 3366, + 86, 86, 3361, 3369, 86, 86, 3367, 3364, 86, 86, + 86, 3368, 86, 3371, 3372, 86, 3370, 3373, 86, 86, + 86, 86, 3374, 86, 3375, 3378, 86, 86, 3376, 3380, + 3377, 86, 86, 3379, 3381, 86, 86, 86, 86, 86, + 86, 3390, 86, 3393, 86, 3391, 3382, 3667, 86, 86, + 86, 3383, 3384, 3385, 3386, 3394, 3387, 3388, 3389, 86, + 86, 3397, 3392, 3396, 3395, 3398, 86, 3399, 86, 86, - 86, 3409, 86, 3405, 86, 86, 3413, 86, 86, 86, - 3412, 86, 86, 3408, 86, 86, 3407, 86, 3418, 3417, - 86, 86, 3410, 3656, 3411, 3422, 3414, 3423, 86, 3415, - 3419, 86, 3420, 3421, 86, 3425, 3416, 3426, 86, 86, - 3424, 3427, 86, 86, 86, 3432, 3434, 86, 3429, 86, - 3433, 86, 86, 3430, 3428, 86, 3431, 86, 86, 86, - 3441, 86, 3438, 3439, 3436, 3442, 86, 86, 3444, 86, - 86, 86, 3435, 3443, 3445, 86, 3437, 86, 3440, 3448, - 86, 3446, 3447, 3449, 86, 86, 3452, 86, 3451, 3453, - 86, 3454, 86, 86, 3450, 3455, 86, 3456, 86, 3457, + 3401, 86, 86, 3400, 3404, 86, 86, 3402, 3403, 3406, + 86, 3407, 3408, 86, 86, 3409, 3410, 3414, 86, 3411, + 86, 3405, 3412, 3413, 86, 86, 86, 3417, 86, 3415, + 86, 86, 86, 3420, 86, 3416, 86, 86, 3424, 86, + 86, 86, 3423, 86, 86, 3419, 86, 86, 3418, 86, + 3429, 3428, 86, 86, 3421, 3667, 3422, 3433, 3425, 3434, + 86, 3426, 3430, 86, 3431, 3432, 86, 3436, 3427, 3437, + 86, 86, 3435, 3438, 86, 86, 86, 3443, 3445, 86, + 3440, 86, 3444, 86, 86, 3441, 3439, 86, 3442, 86, + 86, 86, 3452, 86, 3449, 3450, 3447, 3453, 86, 86, - 86, 3458, 86, 3459, 86, 86, 3462, 86, 3463, 86, - 86, 86, 86, 86, 3461, 3468, 86, 86, 86, 3460, - 3464, 86, 3465, 3470, 86, 86, 86, 3474, 3467, 3475, - 86, 86, 3466, 3471, 3472, 86, 3469, 3473, 3477, 86, - 86, 86, 86, 3479, 86, 3481, 3476, 86, 3484, 86, - 3483, 86, 86, 3478, 86, 86, 3486, 86, 86, 86, - 3482, 86, 86, 3485, 86, 3490, 3491, 3480, 3492, 86, - 86, 3487, 86, 3488, 3489, 3496, 3493, 86, 3499, 86, - 3497, 3500, 86, 3501, 86, 3498, 3502, 86, 3494, 3495, - 86, 86, 86, 86, 86, 86, 3505, 86, 86, 86, + 3455, 86, 86, 86, 3446, 3454, 3456, 86, 3448, 86, + 3451, 3459, 86, 3457, 3458, 3460, 86, 86, 3463, 86, + 3462, 3464, 86, 3465, 86, 86, 3461, 3466, 86, 3467, + 86, 3468, 86, 3469, 86, 3470, 86, 86, 3473, 86, + 3474, 86, 86, 86, 86, 86, 3472, 3479, 86, 86, + 86, 3471, 3475, 86, 3476, 3481, 86, 86, 86, 3485, + 3478, 3486, 86, 86, 3477, 3482, 3483, 86, 3480, 3484, + 3488, 86, 86, 86, 86, 3490, 86, 3492, 3487, 86, + 3495, 86, 3494, 86, 86, 3489, 86, 86, 3497, 86, + 86, 86, 3493, 86, 86, 3496, 86, 3501, 3502, 3491, - 3504, 3511, 86, 3510, 86, 3513, 86, 3507, 3509, 86, - 86, 86, 86, 3503, 3506, 86, 86, 3512, 3508, 3514, - 86, 86, 86, 3656, 86, 3520, 3517, 3522, 3515, 3516, - 3519, 86, 3521, 3526, 86, 86, 3524, 3518, 86, 86, - 86, 86, 3523, 3525, 3528, 3531, 86, 3533, 86, 86, - 3532, 86, 3529, 86, 3534, 3527, 3535, 86, 3536, 86, - 3530, 86, 86, 86, 3539, 86, 86, 3540, 3537, 3544, - 3541, 3538, 86, 86, 86, 86, 3548, 86, 86, 3547, - 86, 3543, 3550, 86, 86, 3546, 3545, 86, 3542, 3551, - 86, 3552, 86, 3555, 86, 3553, 86, 86, 3549, 3558, + 3503, 86, 86, 3498, 86, 3499, 3500, 3507, 3504, 86, + 3510, 86, 3508, 3511, 86, 3512, 86, 3509, 3513, 86, + 3505, 3506, 86, 86, 86, 86, 86, 86, 3516, 86, + 86, 86, 3515, 86, 86, 3521, 86, 3524, 86, 3518, + 3520, 86, 86, 86, 3525, 3514, 3517, 86, 3523, 86, + 3519, 86, 86, 3526, 3533, 86, 3527, 3528, 3530, 3532, + 3531, 86, 3537, 86, 86, 86, 3535, 3529, 86, 86, + 3539, 3542, 86, 3534, 3536, 86, 86, 3544, 86, 86, + 3545, 86, 3540, 86, 3538, 3543, 3546, 86, 3551, 3541, + 3547, 86, 86, 86, 3548, 3550, 86, 86, 3552, 3555, - 86, 86, 3556, 3554, 86, 3559, 3562, 3563, 86, 3560, - 86, 86, 86, 86, 3557, 86, 3561, 3568, 86, 86, - 3567, 86, 3564, 3565, 3569, 86, 86, 86, 86, 86, - 3566, 3573, 86, 86, 3575, 86, 86, 86, 86, 86, - 3570, 3571, 3572, 3580, 3581, 86, 3574, 86, 3577, 3578, - 3656, 3576, 3579, 3582, 86, 3586, 86, 3583, 86, 86, - 86, 3588, 3656, 3584, 3587, 3590, 3585, 86, 86, 3589, - 86, 86, 3594, 3595, 86, 3591, 3592, 3593, 86, 86, - 3597, 86, 86, 86, 3596, 86, 3598, 86, 86, 3603, - 86, 86, 3600, 86, 3606, 86, 3607, 86, 86, 86, + 86, 3549, 86, 86, 86, 86, 86, 3558, 3559, 86, + 3561, 86, 3554, 86, 3556, 3557, 3562, 86, 3563, 86, + 86, 3553, 3566, 86, 3560, 3565, 86, 86, 3564, 3569, + 86, 86, 3570, 86, 3573, 3567, 3574, 86, 86, 86, + 86, 3571, 86, 86, 3568, 86, 3572, 86, 3578, 3579, + 86, 3575, 3576, 3580, 86, 86, 86, 3577, 86, 86, + 3584, 86, 86, 86, 3586, 86, 3581, 3582, 86, 3583, + 3593, 86, 86, 3591, 86, 3588, 3589, 3592, 3585, 86, + 3587, 86, 3597, 86, 3590, 86, 3599, 86, 3600, 86, + 3598, 86, 86, 86, 3594, 3605, 3601, 3595, 3602, 86, - 86, 86, 3599, 3610, 3605, 86, 3601, 3602, 3608, 3604, - 86, 3609, 86, 3614, 86, 3615, 86, 86, 3613, 3611, - 3612, 86, 3618, 86, 3620, 86, 3621, 3616, 86, 86, - 86, 3625, 86, 3622, 86, 86, 3619, 3623, 86, 3626, - 3627, 86, 3617, 3628, 86, 86, 86, 86, 3624, 86, - 86, 86, 3629, 3630, 3631, 3632, 3634, 86, 86, 86, - 3633, 86, 3640, 3636, 3637, 86, 3635, 86, 3638, 3656, - 3639, 3641, 86, 86, 3644, 3645, 86, 86, 86, 3647, - 86, 3648, 86, 86, 3642, 3646, 3643, 86, 86, 86, - 3649, 3656, 3650, 3651, 3654, 86, 3652, 3655, 86, 3656, + 3596, 86, 3606, 86, 3603, 86, 3608, 86, 3604, 86, + 3607, 86, 86, 3609, 86, 86, 3614, 86, 86, 3611, + 86, 3617, 86, 3618, 86, 86, 86, 86, 86, 86, + 3610, 3616, 3621, 3612, 3613, 3619, 3615, 86, 3620, 86, + 3625, 86, 3624, 86, 3622, 86, 3626, 3623, 86, 3629, + 3627, 86, 3631, 86, 3632, 86, 86, 86, 3636, 86, + 3633, 86, 86, 3634, 3630, 86, 3637, 3638, 86, 3628, + 3639, 86, 86, 86, 86, 3640, 3635, 86, 3643, 3641, + 86, 3642, 3645, 86, 86, 3647, 86, 86, 86, 3648, + 86, 3651, 86, 3644, 3652, 86, 3646, 86, 3655, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3653, 47, - 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, - 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, - 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, - 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, - 74, 80, 80, 80, 80, 80, 80, 80, 89, 89, - 3656, 89, 89, 89, 89, 160, 160, 3656, 3656, 3656, - 160, 160, 162, 162, 3656, 3656, 162, 3656, 162, 164, - 3656, 3656, 3656, 3656, 3656, 164, 167, 167, 3656, 3656, - 3656, 167, 167, 169, 3656, 3656, 3656, 3656, 3656, 169, + 86, 86, 3658, 86, 86, 3649, 3650, 3653, 3657, 3659, + 86, 3654, 86, 86, 86, 86, 3665, 86, 3661, 3660, + 3662, 3666, 86, 3663, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3664, 47, 47, 47, 47, 47, 47, + 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, + 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, + 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3667, 89, 89, 89, 89, + 160, 160, 3667, 3667, 3667, 160, 160, 162, 162, 3667, + + 3667, 162, 3667, 162, 164, 3667, 3667, 3667, 3667, 3667, + 164, 167, 167, 3667, 3667, 3667, 167, 167, 169, 3667, + 3667, 3667, 3667, 3667, 169, 171, 171, 3667, 171, 171, + 171, 171, 174, 3667, 3667, 3667, 3667, 3667, 174, 177, + 177, 3667, 3667, 3667, 177, 177, 90, 90, 3667, 90, + 90, 90, 90, 17, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667 - 171, 171, 3656, 171, 171, 171, 171, 174, 3656, 3656, - 3656, 3656, 3656, 174, 177, 177, 3656, 3656, 3656, 177, - 177, 90, 90, 3656, 90, 90, 90, 90, 17, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656 } ; -static const flex_int16_t yy_chk[7170] = +static const flex_int16_t yy_chk[7195] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2427,18 +2434,18 @@ static const flex_int16_t yy_chk[7170] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3664, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3675, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2966, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2977, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1154, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1158, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2503,710 +2510,714 @@ static const flex_int16_t yy_chk[7170] = 305, 308, 311, 312, 313, 313, 314, 315, 316, 317, 319, 314, 320, 315, 316, 325, 318, 321, 321, 322, 312, 323, 322, 324, 326, 320, 328, 324, 327, 327, - 167, 319, 329, 316, 325, 329, 330, 331, 332, 323, + 400, 319, 329, 316, 325, 329, 330, 331, 332, 323, 335, 332, 326, 331, 328, 333, 336, 340, 330, 335, - 337, 338, 329, 341, 338, 337, 338, 333, 334, 339, + 337, 339, 329, 341, 339, 337, 400, 333, 334, 342, - 340, 166, 339, 344, 336, 341, 344, 334, 347, 338, - 334, 342, 338, 342, 342, 334, 334, 334, 334, 343, - 345, 345, 346, 347, 343, 343, 348, 349, 350, 351, - 352, 352, 354, 354, 356, 353, 357, 350, 351, 346, - 353, 348, 346, 358, 349, 349, 355, 355, 358, 359, - 360, 357, 361, 362, 363, 364, 364, 366, 364, 356, - 363, 359, 372, 375, 375, 367, 369, 364, 362, 360, - 367, 369, 361, 368, 364, 370, 372, 366, 371, 368, - 370, 371, 373, 371, 374, 373, 370, 378, 376, 377, - 377, 381, 378, 374, 376, 383, 416, 382, 373, 384, + 340, 342, 342, 338, 336, 341, 338, 334, 338, 344, + 334, 346, 344, 167, 343, 334, 334, 334, 334, 343, + 343, 338, 338, 347, 338, 345, 345, 348, 346, 349, + 350, 346, 351, 352, 352, 353, 354, 354, 347, 350, + 353, 351, 348, 355, 355, 356, 349, 349, 357, 358, + 359, 362, 360, 361, 358, 363, 364, 364, 366, 364, + 367, 363, 359, 357, 369, 367, 362, 166, 364, 369, + 356, 360, 370, 361, 368, 364, 371, 370, 366, 371, + 368, 371, 372, 370, 373, 374, 376, 373, 375, 375, + 377, 377, 376, 378, 374, 383, 372, 381, 378, 382, - 382, 373, 385, 373, 379, 379, 388, 379, 390, 387, - 383, 381, 387, 379, 384, 391, 385, 379, 382, 394, - 388, 416, 379, 390, 391, 379, 380, 380, 387, 380, - 392, 393, 395, 396, 397, 392, 392, 393, 398, 401, - 394, 400, 380, 397, 393, 380, 164, 380, 396, 380, - 389, 395, 389, 389, 399, 405, 402, 398, 407, 401, - 399, 406, 389, 389, 389, 389, 389, 400, 403, 389, - 402, 404, 408, 407, 403, 405, 404, 408, 403, 410, - 409, 406, 411, 411, 412, 410, 413, 414, 418, 417, - 415, 420, 421, 418, 404, 409, 415, 422, 413, 419, + 373, 384, 382, 373, 385, 373, 379, 379, 388, 379, + 383, 387, 164, 394, 387, 379, 384, 381, 385, 379, + 382, 390, 388, 391, 379, 396, 395, 379, 380, 380, + 387, 380, 391, 392, 394, 393, 390, 397, 392, 392, + 396, 393, 398, 401, 380, 395, 397, 380, 393, 380, + 399, 380, 389, 405, 389, 389, 399, 404, 402, 407, + 162, 398, 404, 401, 389, 389, 389, 389, 389, 403, + 406, 389, 402, 405, 407, 403, 408, 409, 410, 403, + 404, 408, 411, 411, 410, 412, 413, 414, 415, 416, + 406, 417, 409, 420, 415, 418, 419, 419, 413, 419, - 419, 414, 419, 423, 412, 417, 162, 424, 421, 424, - 425, 420, 430, 422, 431, 425, 426, 423, 426, 426, - 427, 428, 429, 429, 427, 428, 432, 433, 437, 431, - 434, 430, 438, 440, 437, 443, 426, 440, 435, 160, - 428, 438, 432, 439, 434, 433, 435, 435, 439, 442, - 441, 444, 448, 449, 449, 442, 443, 444, 435, 441, - 435, 436, 446, 445, 447, 446, 436, 445, 450, 447, - 451, 451, 448, 453, 436, 436, 454, 454, 436, 436, - 452, 450, 436, 455, 456, 452, 453, 457, 456, 455, - 458, 459, 460, 462, 461, 461, 459, 460, 463, 464, + 418, 414, 421, 422, 425, 412, 423, 417, 424, 425, + 424, 427, 428, 420, 416, 427, 428, 430, 421, 422, + 423, 426, 431, 426, 426, 429, 429, 432, 433, 437, + 434, 428, 443, 438, 440, 437, 430, 431, 440, 435, + 439, 426, 438, 432, 434, 439, 433, 435, 435, 441, + 442, 444, 446, 443, 448, 446, 442, 444, 441, 435, + 445, 435, 436, 447, 445, 449, 449, 436, 447, 450, + 451, 451, 452, 453, 448, 436, 436, 452, 457, 436, + 436, 455, 450, 436, 454, 454, 453, 455, 456, 458, + 459, 460, 456, 457, 463, 459, 460, 461, 461, 462, - 465, 466, 457, 461, 466, 462, 468, 469, 467, 472, - 468, 458, 465, 467, 470, 470, 471, 464, 463, 469, - 474, 471, 473, 473, 476, 476, 478, 479, 480, 481, - 472, 482, 483, 484, 485, 479, 487, 483, 481, 488, - 489, 491, 474, 495, 490, 492, 485, 478, 495, 480, - 490, 492, 482, 484, 487, 491, 487, 488, 493, 494, - 489, 496, 497, 498, 499, 494, 498, 493, 500, 503, - 497, 501, 506, 497, 504, 496, 502, 504, 499, 505, - 501, 509, 502, 500, 508, 505, 506, 507, 511, 503, - 510, 513, 507, 511, 510, 512, 513, 514, 515, 516, + 464, 465, 466, 467, 468, 466, 461, 470, 467, 468, + 458, 462, 469, 465, 463, 473, 469, 472, 464, 470, + 471, 471, 472, 474, 474, 475, 477, 477, 479, 480, + 481, 482, 483, 484, 485, 1372, 473, 480, 484, 488, + 482, 490, 489, 486, 491, 1372, 493, 475, 492, 479, + 491, 481, 493, 483, 485, 486, 494, 488, 495, 488, + 489, 490, 492, 496, 495, 494, 497, 498, 496, 499, + 500, 501, 499, 502, 504, 498, 505, 503, 498, 505, + 497, 506, 502, 503, 500, 507, 501, 506, 508, 509, + 512, 510, 511, 508, 504, 512, 511, 514, 513, 507, - 519, 520, 509, 505, 535, 522, 508, 535, 521, 522, - 512, 523, 516, 514, 85, 525, 524, 515, 517, 517, - 519, 524, 520, 521, 517, 526, 517, 528, 529, 526, - 523, 525, 517, 529, 517, 530, 527, 517, 517, 531, - 533, 527, 528, 534, 517, 527, 532, 536, 531, 537, - 539, 530, 532, 529, 530, 533, 541, 532, 543, 534, - 538, 538, 540, 540, 542, 544, 544, 545, 546, 537, - 536, 541, 547, 543, 548, 539, 542, 547, 549, 550, - 553, 551, 559, 548, 554, 558, 545, 551, 554, 553, - 546, 555, 556, 557, 550, 555, 560, 549, 556, 561, + 515, 516, 514, 520, 517, 506, 523, 521, 160, 522, + 523, 509, 510, 513, 524, 526, 515, 517, 539, 539, + 516, 518, 518, 520, 522, 525, 531, 518, 521, 518, + 525, 526, 527, 524, 528, 518, 527, 518, 529, 528, + 518, 518, 531, 528, 530, 531, 532, 518, 533, 530, + 534, 535, 537, 529, 533, 532, 538, 536, 540, 533, + 536, 541, 541, 542, 544, 534, 546, 535, 543, 530, + 545, 545, 547, 550, 551, 537, 538, 548, 542, 544, + 543, 549, 548, 540, 555, 546, 554, 552, 555, 551, + 549, 557, 550, 552, 547, 554, 556, 557, 558, 559, - 558, 559, 562, 563, 564, 557, 565, 563, 565, 566, - 560, 567, 568, 568, 561, 569, 570, 564, 571, 567, - 562, 569, 572, 573, 571, 574, 573, 575, 570, 577, - 576, 578, 577, 566, 572, 576, 579, 80, 580, 574, - 578, 581, 575, 580, 580, 582, 582, 578, 583, 583, - 578, 584, 579, 589, 581, 585, 585, 584, 586, 586, - 587, 590, 588, 591, 594, 593, 587, 588, 588, 592, - 593, 589, 592, 595, 596, 591, 598, 596, 599, 597, - 601, 595, 590, 594, 597, 600, 601, 602, 603, 600, - 604, 605, 603, 607, 607, 606, 605, 599, 608, 598, + 556, 560, 561, 562, 563, 564, 565, 567, 601, 564, + 558, 566, 601, 566, 559, 568, 561, 571, 562, 565, + 560, 570, 563, 568, 569, 569, 572, 570, 573, 571, + 574, 567, 572, 574, 575, 576, 577, 579, 580, 578, + 573, 577, 578, 583, 583, 585, 579, 582, 575, 588, + 576, 585, 581, 579, 580, 588, 579, 581, 581, 590, + 582, 584, 584, 586, 586, 587, 587, 589, 591, 592, + 594, 593, 589, 589, 593, 594, 595, 590, 596, 597, + 598, 592, 597, 599, 600, 598, 596, 602, 603, 591, + 604, 605, 606, 602, 604, 595, 607, 606, 608, 608, - 609, 610, 612, 611, 613, 614, 610, 602, 604, 606, - 615, 614, 616, 608, 618, 615, 620, 617, 612, 621, - 617, 609, 611, 624, 613, 617, 616, 625, 617, 617, - 619, 619, 618, 622, 620, 621, 623, 624, 622, 627, - 628, 623, 625, 629, 630, 627, 629, 631, 630, 628, - 632, 633, 631, 632, 635, 634, 633, 636, 638, 639, - 637, 640, 640, 638, 636, 641, 642, 643, 644, 645, - 630, 634, 635, 637, 641, 646, 647, 648, 645, 639, - 653, 75, 647, 648, 644, 642, 649, 646, 643, 649, - 650, 650, 651, 650, 652, 651, 654, 655, 653, 652, + 609, 610, 611, 600, 612, 613, 599, 611, 603, 605, + 607, 614, 615, 617, 616, 609, 619, 618, 615, 616, + 618, 613, 610, 612, 621, 618, 85, 617, 618, 618, + 622, 614, 620, 620, 619, 623, 624, 625, 626, 628, + 623, 624, 621, 629, 630, 628, 622, 630, 635, 636, + 631, 625, 629, 626, 631, 632, 633, 634, 637, 633, + 632, 638, 634, 639, 635, 637, 640, 636, 639, 641, + 641, 642, 643, 644, 638, 645, 631, 646, 647, 649, + 642, 651, 650, 648, 651, 649, 640, 647, 650, 645, + 655, 643, 656, 646, 644, 648, 652, 652, 653, 652, - 656, 657, 658, 662, 659, 656, 660, 664, 658, 659, - 654, 655, 660, 661, 663, 670, 661, 666, 667, 663, - 657, 665, 74, 664, 668, 673, 665, 665, 662, 668, - 666, 667, 669, 671, 670, 672, 674, 674, 669, 675, - 672, 676, 671, 668, 668, 673, 675, 677, 676, 678, - 677, 679, 680, 681, 683, 678, 685, 680, 681, 681, - 682, 682, 684, 679, 684, 677, 686, 680, 686, 687, - 688, 689, 690, 691, 692, 685, 694, 693, 697, 683, - 692, 693, 695, 696, 698, 694, 700, 687, 688, 689, - 702, 690, 699, 691, 701, 699, 697, 695, 696, 703, + 654, 653, 657, 659, 658, 654, 656, 660, 655, 658, + 661, 662, 664, 660, 665, 661, 657, 662, 663, 665, + 666, 663, 659, 667, 671, 668, 669, 670, 667, 667, + 671, 672, 670, 673, 675, 674, 666, 664, 668, 669, + 674, 677, 673, 676, 676, 678, 670, 670, 677, 680, + 672, 681, 678, 679, 675, 680, 679, 682, 685, 683, + 684, 684, 682, 681, 683, 683, 686, 687, 686, 689, + 690, 679, 682, 688, 691, 688, 692, 693, 694, 697, + 696, 695, 699, 685, 694, 695, 687, 689, 690, 696, + 698, 700, 691, 707, 697, 692, 701, 693, 702, 701, - 701, 700, 704, 698, 699, 705, 706, 707, 708, 710, - 702, 709, 708, 703, 704, 711, 712, 713, 714, 717, - 717, 720, 68, 715, 705, 710, 707, 706, 715, 709, - 716, 719, 721, 711, 712, 712, 713, 714, 718, 722, - 720, 723, 718, 721, 716, 719, 723, 724, 725, 726, - 727, 728, 729, 722, 730, 731, 728, 727, 733, 729, - 731, 732, 726, 724, 734, 735, 732, 725, 736, 738, - 737, 734, 743, 747, 735, 740, 733, 739, 730, 737, - 740, 738, 736, 739, 741, 742, 743, 741, 744, 742, - 745, 754, 746, 752, 747, 748, 748, 744, 749, 749, + 699, 703, 704, 705, 706, 698, 708, 703, 701, 709, + 700, 710, 707, 702, 711, 710, 706, 705, 712, 713, + 714, 715, 704, 716, 717, 719, 719, 708, 709, 717, + 718, 720, 711, 721, 712, 720, 722, 713, 714, 714, + 715, 723, 716, 724, 718, 725, 726, 721, 727, 729, + 725, 728, 723, 730, 731, 722, 729, 724, 730, 732, + 733, 731, 726, 734, 728, 733, 735, 727, 734, 736, + 737, 738, 739, 742, 740, 745, 736, 743, 742, 737, + 743, 739, 741, 732, 735, 738, 740, 744, 741, 745, + 746, 744, 747, 749, 748, 750, 750, 751, 751, 746, - 750, 750, 752, 751, 756, 745, 746, 749, 751, 755, - 754, 758, 757, 759, 760, 755, 757, 764, 762, 761, - 763, 765, 766, 758, 756, 761, 762, 763, 769, 778, - 775, 772, 760, 820, 776, 764, 780, 781, 759, 775, - 776, 820, 766, 769, 779, 780, 765, 767, 772, 767, - 779, 778, 767, 781, 782, 786, 767, 785, 782, 767, - 783, 783, 784, 784, 787, 788, 767, 767, 785, 767, - 789, 791, 792, 786, 793, 796, 789, 792, 787, 794, - 795, 799, 802, 63, 795, 788, 790, 790, 790, 798, - 790, 791, 797, 790, 798, 793, 797, 794, 790, 796, + 752, 752, 754, 756, 753, 758, 751, 747, 748, 753, + 757, 754, 760, 759, 749, 761, 757, 759, 762, 764, + 763, 765, 756, 766, 760, 758, 763, 764, 765, 767, + 768, 771, 774, 777, 780, 783, 762, 778, 781, 782, + 761, 766, 777, 778, 781, 788, 771, 789, 782, 774, + 768, 783, 785, 785, 767, 769, 780, 769, 784, 787, + 769, 789, 784, 788, 769, 786, 786, 769, 790, 796, + 787, 794, 791, 795, 769, 769, 794, 769, 791, 793, + 797, 798, 799, 803, 797, 801, 799, 796, 790, 792, + 792, 792, 800, 792, 795, 802, 792, 800, 803, 793, - 799, 800, 801, 805, 790, 790, 800, 802, 803, 804, - 805, 803, 797, 807, 804, 804, 808, 801, 806, 806, - 810, 808, 809, 809, 811, 810, 812, 811, 807, 813, - 813, 812, 814, 815, 814, 816, 817, 818, 822, 819, - 817, 821, 821, 824, 824, 815, 823, 825, 827, 826, - 828, 830, 830, 822, 816, 835, 828, 818, 819, 829, - 823, 826, 831, 834, 829, 825, 833, 831, 831, 834, - 827, 833, 836, 838, 835, 837, 840, 841, 836, 838, - 837, 839, 840, 844, 839, 841, 842, 842, 843, 843, - 845, 844, 846, 848, 847, 849, 850, 846, 847, 851, + 802, 792, 799, 804, 801, 798, 805, 792, 792, 805, + 806, 807, 808, 808, 809, 806, 806, 810, 807, 811, + 811, 812, 810, 818, 813, 814, 812, 813, 804, 809, + 814, 815, 815, 816, 817, 816, 819, 820, 824, 821, + 819, 822, 818, 823, 823, 825, 817, 826, 826, 822, + 827, 828, 829, 824, 830, 80, 831, 820, 821, 825, + 830, 831, 835, 828, 832, 832, 833, 835, 827, 836, + 837, 833, 833, 838, 829, 836, 839, 842, 840, 841, + 842, 843, 839, 840, 844, 841, 848, 843, 847, 837, + 845, 845, 844, 838, 846, 846, 847, 849, 851, 850, - 848, 852, 852, 854, 856, 853, 855, 855, 845, 857, - 856, 854, 850, 849, 853, 858, 860, 861, 851, 862, - 864, 865, 867, 863, 865, 860, 861, 857, 863, 864, - 866, 868, 869, 870, 858, 866, 867, 872, 874, 871, - 875, 869, 877, 862, 871, 871, 870, 873, 873, 876, - 878, 872, 879, 874, 883, 879, 868, 885, 876, 875, - 881, 886, 881, 879, 882, 882, 877, 884, 878, 887, - 888, 889, 884, 890, 891, 883, 892, 893, 885, 894, - 892, 886, 890, 58, 895, 896, 898, 897, 899, 887, - 895, 889, 888, 902, 896, 893, 900, 891, 894, 897, + 852, 853, 849, 850, 848, 851, 854, 855, 855, 859, + 856, 860, 857, 858, 858, 859, 861, 853, 852, 856, + 857, 863, 864, 865, 867, 854, 870, 866, 871, 860, + 863, 864, 866, 867, 868, 861, 869, 868, 873, 872, + 870, 869, 875, 877, 874, 876, 876, 865, 872, 874, + 874, 873, 878, 871, 879, 880, 875, 881, 877, 882, + 885, 885, 882, 879, 884, 886, 884, 887, 888, 891, + 882, 878, 887, 889, 890, 881, 892, 894, 893, 880, + 895, 896, 897, 900, 895, 902, 886, 893, 899, 888, + 901, 891, 898, 889, 890, 900, 892, 899, 898, 896, - 901, 902, 898, 903, 904, 906, 901, 899, 907, 904, - 900, 905, 905, 908, 909, 910, 911, 903, 912, 913, - 916, 914, 908, 910, 906, 915, 916, 917, 907, 918, - 920, 919, 921, 917, 909, 924, 911, 919, 913, 924, - 912, 914, 922, 918, 920, 915, 925, 923, 922, 926, - 927, 928, 921, 923, 930, 927, 929, 929, 931, 932, - 930, 926, 932, 933, 931, 925, 934, 935, 936, 926, - 937, 937, 928, 935, 938, 939, 942, 945, 941, 934, - 939, 933, 940, 941, 941, 940, 943, 946, 936, 948, - 943, 942, 938, 944, 944, 950, 947, 951, 940, 945, + 894, 897, 903, 904, 902, 905, 901, 906, 909, 904, + 907, 908, 908, 905, 910, 907, 903, 911, 912, 914, + 913, 906, 915, 916, 919, 917, 911, 909, 913, 918, + 919, 920, 921, 923, 910, 922, 924, 920, 912, 914, + 929, 922, 916, 928, 915, 917, 921, 923, 925, 918, + 931, 926, 929, 930, 925, 927, 924, 926, 930, 927, + 929, 933, 928, 932, 932, 935, 934, 933, 935, 936, + 937, 931, 934, 938, 939, 940, 940, 941, 945, 938, + 942, 943, 948, 937, 943, 942, 944, 936, 947, 947, + 949, 944, 944, 945, 939, 941, 946, 943, 950, 943, - 940, 947, 953, 954, 955, 957, 957, 946, 948, 958, - 964, 951, 959, 958, 961, 953, 960, 960, 962, 950, - 966, 963, 962, 954, 964, 955, 956, 959, 965, 956, - 57, 956, 968, 965, 966, 956, 963, 956, 967, 961, - 969, 968, 956, 967, 967, 970, 973, 956, 971, 970, - 972, 974, 975, 976, 969, 972, 974, 977, 973, 978, - 52, 970, 979, 971, 980, 972, 975, 979, 978, 982, - 980, 977, 981, 983, 976, 982, 986, 981, 985, 983, - 984, 984, 986, 985, 987, 988, 991, 989, 992, 993, - 994, 995, 995, 992, 996, 998, 999, 1000, 991, 996, + 946, 951, 953, 950, 948, 954, 75, 957, 956, 958, + 949, 960, 960, 961, 962, 963, 963, 961, 964, 954, + 951, 956, 966, 976, 965, 967, 953, 957, 965, 962, + 958, 959, 969, 968, 959, 976, 959, 966, 968, 967, + 959, 972, 959, 964, 970, 971, 969, 959, 974, 970, + 970, 975, 959, 973, 971, 972, 975, 973, 978, 977, + 979, 980, 981, 974, 977, 982, 975, 983, 990, 973, + 982, 981, 978, 983, 984, 980, 985, 986, 991, 984, + 992, 979, 985, 986, 987, 987, 988, 989, 996, 994, + 990, 988, 997, 989, 998, 998, 1001, 991, 992, 993, - 1001, 997, 994, 993, 988, 989, 987, 990, 990, 997, - 999, 998, 1002, 990, 1003, 990, 1000, 1004, 1005, 1001, - 1003, 990, 1004, 1006, 1007, 1008, 990, 990, 1002, 1009, - 1005, 1010, 1010, 990, 1011, 1012, 1014, 1016, 1011, 1017, - 1007, 1006, 1014, 1008, 1017, 1015, 1018, 1009, 1015, 1020, - 1021, 1019, 1023, 1024, 1020, 1012, 1016, 1019, 1025, 1018, - 1026, 1023, 1024, 1027, 1028, 1029, 1026, 1030, 1031, 1021, - 1029, 1032, 1027, 1033, 1025, 1034, 1037, 1035, 1042, 1043, - 1040, 1045, 1031, 1028, 1034, 1033, 1035, 1030, 1036, 1038, - 1046, 1032, 1042, 1037, 1036, 1038, 1040, 1044, 1047, 1043, + 993, 994, 996, 995, 997, 993, 999, 993, 995, 1000, + 1002, 999, 1001, 993, 1003, 1004, 1005, 1000, 993, 993, + 1006, 1009, 1007, 1008, 1002, 993, 1006, 1007, 1010, 1011, + 1012, 1015, 1005, 1003, 1004, 1008, 1013, 1013, 1014, 1009, + 1017, 1019, 1014, 1021, 1010, 1020, 1017, 1011, 1012, 1018, + 1020, 1015, 1018, 1022, 1024, 1026, 1021, 1023, 1027, 1022, + 1019, 1028, 1023, 1029, 1026, 1030, 1031, 1027, 1033, 1029, + 1032, 1035, 1034, 1024, 1030, 1032, 1039, 1028, 1036, 1040, + 1037, 1041, 1039, 1038, 1043, 1031, 1034, 1041, 1033, 1037, + 1036, 1035, 1038, 1045, 1046, 1048, 1040, 1047, 1049, 1050, - 1045, 1049, 1044, 1048, 1046, 1050, 1049, 1053, 1054, 1056, - 1050, 1058, 1053, 1055, 1055, 1056, 1047, 1054, 1048, 1057, - 1058, 1059, 1060, 1062, 1063, 1057, 1066, 1065, 1065, 1063, - 1063, 1065, 1068, 1069, 1067, 1060, 1059, 1067, 1070, 1062, - 1071, 1066, 1072, 1074, 1073, 1075, 1068, 1077, 1082, 1074, - 1076, 1082, 1078, 1069, 1070, 1072, 1076, 1078, 1071, 1073, - 1079, 1083, 1077, 1081, 1081, 1075, 1084, 1085, 1086, 1087, - 1088, 1084, 1085, 1090, 1079, 1088, 1089, 1092, 1087, 1093, - 1094, 1089, 1083, 1092, 1086, 1090, 1094, 1095, 1096, 1096, - 1097, 1098, 1101, 1095, 1099, 1093, 1102, 1099, 1103, 1097, + 1043, 1048, 1047, 1051, 1052, 1053, 1054, 1045, 74, 1058, + 1053, 1054, 1063, 1050, 1046, 1057, 1064, 1049, 1058, 1052, + 1057, 1051, 1059, 1059, 1060, 1061, 1062, 1063, 1066, 1064, + 1060, 1061, 1067, 1070, 1073, 1062, 1072, 1067, 1067, 1069, + 1069, 1074, 1071, 1069, 1066, 1071, 1075, 1076, 1070, 1078, + 1072, 1077, 1079, 1080, 1073, 1078, 1081, 1074, 1082, 1080, + 1076, 1083, 1086, 1082, 1075, 1086, 1077, 1085, 1085, 1087, + 1090, 1081, 1079, 1088, 1089, 1083, 1091, 1092, 1088, 1089, + 1094, 1096, 1092, 1093, 1097, 1091, 1090, 1096, 1093, 1098, + 1087, 1099, 1094, 1100, 1100, 1098, 1101, 1099, 1102, 1103, - 1100, 1100, 1104, 1105, 47, 1104, 1106, 1107, 1108, 1098, - 1101, 1116, 1106, 1107, 1108, 1102, 1105, 1109, 1103, 1110, - 1111, 1113, 1109, 1112, 1110, 1115, 1111, 1113, 1112, 1116, - 1115, 1117, 1118, 1121, 1119, 1120, 1120, 1122, 1118, 1119, - 1123, 1124, 1121, 1125, 1126, 1123, 1122, 1126, 1129, 1127, - 1128, 1117, 1127, 1129, 1130, 1131, 1132, 1133, 1134, 1124, - 1138, 1128, 1125, 1133, 1134, 1135, 1136, 1131, 1137, 1137, - 1139, 1136, 1130, 1140, 1141, 1132, 1143, 1142, 1144, 1138, - 1135, 1142, 1145, 1146, 1139, 1140, 1148, 1144, 1149, 1149, - 1150, 1151, 1141, 1153, 1143, 1152, 1151, 1155, 1150, 1156, + 1097, 1105, 1103, 1104, 1104, 1101, 1106, 1107, 1108, 1109, + 1130, 1108, 1110, 1130, 1111, 1112, 1102, 68, 1110, 1105, + 1111, 1112, 1109, 1113, 1114, 1106, 1115, 1107, 1113, 1114, + 1116, 1117, 1115, 1119, 1120, 1116, 1121, 1117, 1119, 1122, + 1125, 1123, 1124, 1124, 1126, 1122, 1123, 1128, 1129, 1125, + 1127, 1131, 1120, 1126, 1131, 1127, 1121, 1132, 1133, 1134, + 1135, 1136, 63, 1133, 1137, 1128, 1139, 1129, 1132, 1138, + 1137, 1140, 1135, 1141, 1141, 1138, 1140, 1134, 1142, 1143, + 1136, 1139, 1144, 1145, 1146, 1147, 1148, 1149, 1146, 1150, + 1152, 1153, 1153, 1143, 1144, 1148, 1154, 1142, 1157, 1159, - 1152, 1145, 1158, 1157, 1161, 1148, 1162, 1158, 1146, 1159, - 1164, 1155, 1162, 1153, 1156, 1157, 1160, 1160, 1159, 1163, - 1168, 1166, 1165, 1166, 1161, 1163, 1164, 1165, 1167, 1169, - 1170, 1171, 1172, 1167, 1168, 1170, 1175, 1173, 1174, 1177, - 1177, 1179, 1178, 1169, 1173, 1180, 1171, 1182, 1181, 1186, - 1186, 1172, 1183, 1174, 1181, 1175, 1178, 1183, 1185, 1179, - 1180, 1190, 1185, 1189, 1187, 1192, 1183, 1182, 1183, 1187, - 1189, 1183, 1188, 1188, 1191, 1190, 1193, 1191, 1194, 1196, - 1195, 1197, 1198, 1200, 1192, 1195, 1199, 1194, 1198, 1201, - 1202, 1199, 1207, 1197, 1193, 1204, 1204, 1200, 1196, 1205, + 1155, 1145, 1156, 1147, 1154, 1155, 1149, 1156, 1160, 1152, + 1161, 1162, 1163, 1159, 1150, 1165, 1162, 1168, 1157, 1164, + 1164, 1163, 1161, 1160, 1166, 1167, 1170, 1169, 1170, 1171, + 1166, 1167, 1169, 1168, 1171, 1165, 1172, 1173, 1174, 1175, + 1176, 1177, 1178, 1174, 1179, 1181, 1181, 1182, 1177, 1183, + 1172, 1173, 1185, 1184, 1175, 1186, 58, 1178, 1185, 1176, + 1187, 1182, 1189, 1179, 1193, 1187, 1189, 1183, 1184, 1190, + 1190, 1193, 1191, 1194, 1187, 1186, 1187, 1191, 1196, 1187, + 1192, 1192, 1195, 1197, 1198, 1195, 1199, 1194, 1200, 1202, + 1201, 1199, 1204, 1198, 1203, 1202, 1206, 1196, 1205, 1203, - 1201, 1206, 1208, 1211, 1205, 1212, 1206, 1208, 1210, 1202, - 1209, 1213, 1207, 1214, 1209, 1216, 1214, 1210, 1211, 1215, - 1212, 1217, 1216, 1218, 1219, 1214, 1220, 1224, 1222, 1221, - 1213, 1223, 1225, 1217, 1215, 1221, 1227, 1223, 1228, 1226, - 1230, 1229, 1218, 1222, 1220, 1219, 1231, 1224, 1226, 1232, - 1233, 1227, 1225, 1229, 1234, 1236, 1233, 1228, 1237, 1230, - 1239, 1236, 1238, 1240, 1232, 1241, 1243, 1242, 1239, 1245, - 1299, 1231, 1242, 1237, 1234, 1246, 1238, 1247, 1243, 1244, - 1250, 1241, 1299, 1240, 1244, 1244, 1248, 1248, 1245, 1246, - 1247, 1249, 1249, 1250, 1251, 1252, 1249, 1253, 1253, 1249, + 1209, 1197, 1201, 1208, 1208, 1209, 1204, 1200, 1210, 1205, + 1211, 1212, 1214, 1210, 1213, 1206, 1212, 1215, 1213, 1216, + 1217, 1214, 1219, 1218, 1220, 1222, 1218, 1223, 1221, 1224, + 1211, 1220, 1215, 1232, 1216, 1218, 1225, 1219, 1226, 1217, + 1221, 1228, 1225, 1227, 1222, 1229, 1230, 1224, 1223, 1227, + 1233, 1231, 1232, 1226, 1234, 1230, 1235, 1236, 1237, 1238, + 1241, 1228, 1233, 1240, 1237, 1229, 1231, 1244, 1242, 1240, + 1243, 1246, 1236, 1234, 1245, 1241, 1246, 1247, 1243, 1238, + 1248, 1235, 1242, 1249, 1250, 1248, 1248, 1244, 1251, 1247, + 1245, 1252, 1252, 1254, 1256, 1279, 1255, 57, 1250, 1279, - 1249, 1252, 1254, 1251, 1249, 1256, 1255, 1254, 1257, 1260, - 1249, 1256, 1258, 1257, 1249, 1255, 1263, 1258, 1259, 1259, - 1261, 1261, 1262, 1264, 1266, 1262, 1265, 1262, 1267, 1268, - 1260, 1269, 1265, 1266, 1268, 1270, 1263, 1271, 1272, 1275, - 1276, 1264, 1273, 1271, 1272, 1269, 1274, 1273, 1267, 1276, - 1274, 1278, 1275, 1270, 1276, 1285, 1276, 1277, 1276, 1281, - 1276, 1284, 1277, 1279, 1279, 1278, 1280, 1280, 1283, 1280, - 1281, 1286, 1283, 1287, 1288, 1285, 1284, 1289, 1290, 1288, - 1288, 1292, 1287, 1291, 1293, 1294, 1289, 1295, 1291, 1286, - 1297, 1296, 18, 1293, 1300, 1292, 1297, 1298, 1298, 1301, + 1256, 1251, 1249, 1253, 1253, 1255, 1254, 52, 1253, 1257, + 1257, 1253, 1253, 1258, 1259, 1260, 1253, 1264, 1258, 1261, + 1262, 1260, 1253, 1259, 1261, 1262, 1253, 1263, 1263, 1265, + 1265, 1266, 1267, 1268, 1266, 1269, 1266, 1270, 1264, 1271, + 1270, 1269, 1272, 1274, 1273, 1275, 47, 1276, 1271, 1273, + 1277, 1268, 1267, 1276, 1278, 1280, 1277, 1274, 1281, 1278, + 1282, 1283, 1272, 1275, 1290, 1282, 1286, 1281, 1280, 1284, + 1284, 1289, 1281, 1291, 1281, 1283, 1281, 1286, 1281, 1285, + 1285, 1288, 1285, 1292, 1290, 1288, 1289, 1294, 1293, 1295, + 1296, 1291, 1292, 1293, 1293, 1296, 1294, 1298, 1297, 1299, - 1290, 1303, 1300, 1302, 1294, 1296, 1295, 1304, 1302, 1306, - 1305, 1307, 1316, 1301, 1308, 1303, 1304, 1305, 1310, 1308, - 1309, 1309, 1311, 1311, 1312, 1314, 1312, 1306, 1314, 1315, - 1317, 1316, 1319, 1310, 1315, 1323, 1307, 1318, 1318, 1317, - 1320, 1320, 1321, 1321, 1322, 1324, 1325, 1326, 1326, 1322, - 1327, 1328, 1319, 1330, 1329, 1331, 1323, 1329, 1332, 1335, - 1333, 1331, 1334, 1332, 1334, 1338, 1324, 1325, 1328, 1333, - 1327, 1337, 1339, 1330, 1337, 1341, 1340, 1335, 1342, 1343, - 1338, 1340, 1349, 1342, 1405, 1339, 1344, 1343, 1405, 1341, - 1345, 1344, 1346, 1345, 1347, 1347, 1348, 1346, 1350, 1351, + 1300, 1301, 1302, 1303, 1303, 1304, 1298, 1309, 1302, 1306, + 1308, 1295, 1297, 1305, 1311, 1301, 1309, 1304, 1299, 1300, + 1307, 1305, 1310, 1306, 1308, 1307, 1312, 1315, 1313, 1310, + 1314, 1314, 1311, 1313, 1316, 1316, 1317, 1319, 1317, 1320, + 1319, 1321, 1315, 1322, 1320, 1323, 1323, 1324, 1325, 1325, + 1327, 1312, 1322, 1326, 1326, 1327, 1328, 1329, 1330, 1333, + 1321, 1331, 1331, 1332, 1335, 1334, 1336, 1324, 1334, 1337, + 1340, 1338, 1336, 1339, 1337, 1339, 1333, 1328, 1329, 1330, + 1338, 1343, 1342, 1332, 1335, 1342, 1344, 1345, 1340, 1346, + 1347, 1350, 1345, 1348, 1350, 1347, 1343, 1349, 1354, 1344, - 1349, 1348, 1352, 1354, 1350, 1355, 1351, 1356, 1357, 1354, - 1358, 1355, 1356, 1357, 1359, 1352, 1358, 1360, 1361, 1362, - 1362, 1363, 1365, 1359, 1366, 1367, 1369, 1365, 1368, 1361, - 1370, 1371, 1372, 1373, 1375, 1367, 1360, 1371, 1372, 1373, - 1375, 1363, 1366, 1368, 1376, 1377, 1369, 1378, 1379, 1380, - 1381, 1382, 1382, 1370, 1383, 1384, 1386, 1385, 1376, 1388, - 1379, 1386, 1391, 1380, 1376, 1377, 1389, 1378, 1381, 1387, - 1387, 1389, 1392, 1393, 1383, 1385, 1394, 1392, 1392, 1395, - 1384, 1391, 1388, 1396, 1397, 1394, 1398, 1395, 1399, 1400, - 1401, 1393, 1401, 1399, 1402, 1408, 1399, 1396, 1400, 1397, + 1351, 1348, 1349, 1346, 1353, 1351, 1352, 1352, 1355, 1353, + 1356, 1357, 1359, 1360, 1355, 1361, 1354, 1356, 1359, 1360, + 1361, 1362, 1363, 1364, 1357, 1365, 1362, 1366, 1363, 1367, + 1367, 1368, 1364, 1373, 1370, 1371, 1374, 1375, 1366, 1370, + 1376, 1377, 1382, 1378, 1365, 1381, 1376, 1377, 1373, 1378, + 1383, 1368, 1380, 1371, 1384, 1385, 1374, 1386, 1380, 1381, + 1375, 1388, 1382, 1387, 1387, 1381, 1384, 1389, 1390, 1385, + 1383, 1391, 1392, 1392, 1393, 1386, 1391, 1394, 1397, 1396, + 1399, 1388, 1394, 1397, 1397, 1398, 1390, 1400, 1401, 1399, + 1402, 1403, 1389, 1407, 1409, 1400, 1404, 1393, 1396, 1405, - 1404, 1398, 1406, 1409, 1398, 1407, 1404, 1410, 1402, 1414, - 1407, 1407, 1411, 1406, 1408, 1412, 1413, 1411, 1415, 1416, - 1412, 1413, 1417, 1419, 1416, 1410, 1420, 1414, 1421, 1409, - 1422, 1422, 1423, 1424, 1425, 1426, 1423, 1419, 1415, 1428, - 1427, 1426, 1417, 1429, 1420, 1430, 1421, 1433, 1431, 1432, - 1435, 1424, 1427, 1425, 1437, 1428, 1434, 1435, 1438, 1430, - 1436, 1434, 1429, 1431, 1432, 1436, 1433, 1439, 1440, 1440, - 1441, 1442, 1437, 1443, 1444, 1444, 1439, 1445, 1446, 1438, - 1442, 1447, 1451, 1445, 1446, 1441, 1448, 1448, 1449, 1449, - 1450, 1452, 1453, 1443, 1454, 1447, 1450, 1453, 1451, 1455, + 1409, 1404, 1401, 1398, 1404, 1402, 1403, 1407, 1405, 1403, + 1406, 1410, 1406, 1411, 1412, 1410, 1413, 1414, 1415, 1412, + 1412, 1416, 1417, 1418, 1411, 1420, 1416, 1417, 1418, 1419, + 1422, 1425, 1421, 1426, 1424, 1413, 1415, 1421, 1427, 1427, + 1428, 1429, 1430, 1414, 1428, 1420, 1431, 1419, 1424, 1425, + 1422, 1426, 1431, 1432, 1433, 1434, 1443, 1435, 1436, 1429, + 1437, 1430, 1438, 1439, 1442, 1432, 1448, 1441, 1439, 1440, + 1433, 1435, 1441, 1436, 1434, 1437, 1440, 1443, 1444, 1445, + 1445, 1438, 1442, 1446, 1447, 1450, 1448, 1444, 1449, 1449, + 1451, 1450, 1452, 1447, 1453, 1453, 1451, 1455, 1446, 1454, - 1454, 1456, 1457, 1457, 1463, 1455, 1462, 1456, 1458, 1458, - 1460, 1460, 1452, 1461, 1464, 1462, 1466, 1461, 1465, 1469, - 1467, 1470, 1463, 1468, 1468, 1473, 1464, 1467, 1458, 1470, - 1458, 1466, 1465, 1471, 1472, 1474, 1476, 1475, 1471, 1469, - 1474, 1474, 1475, 1475, 1473, 1477, 1477, 1478, 1472, 1479, - 1480, 1482, 1481, 1483, 1484, 1485, 1476, 1481, 1486, 1480, - 1487, 1485, 1488, 1486, 1490, 1489, 1478, 1493, 1479, 1491, - 1482, 1489, 1484, 1483, 1494, 1491, 1492, 1495, 1496, 1497, - 1487, 1498, 1492, 1490, 1499, 1500, 1493, 1503, 1488, 1501, - 1501, 1502, 1504, 1494, 1502, 1498, 1495, 1496, 1497, 1508, + 1454, 1456, 1457, 1455, 1458, 1459, 1452, 1460, 1461, 1458, + 1468, 1459, 18, 1460, 1461, 1462, 1462, 1456, 1463, 1463, + 1465, 1465, 1466, 1457, 1467, 1469, 1466, 1470, 1468, 1471, + 1473, 1473, 1472, 1467, 1474, 1475, 1477, 1469, 1463, 1472, + 1463, 1470, 1476, 1475, 1471, 1478, 1479, 1476, 1481, 1488, + 1477, 1479, 1479, 1480, 1474, 1482, 1482, 1483, 1480, 1480, + 1484, 1485, 1486, 1487, 1478, 1489, 1490, 1486, 1481, 1488, + 1485, 1492, 1490, 1491, 1493, 1494, 1483, 1496, 1491, 1484, + 1495, 1497, 1487, 1489, 1498, 1499, 1495, 1497, 1500, 1493, + 1498, 1492, 1501, 1502, 1503, 1504, 1496, 1505, 1509, 1506, - 1500, 1505, 1506, 1506, 1508, 1499, 1503, 1507, 1507, 1510, - 1509, 1504, 1511, 1505, 1509, 1512, 1513, 1514, 1518, 1514, - 1516, 1517, 1510, 1514, 1512, 1519, 1517, 1511, 1520, 1513, - 1521, 1521, 1522, 1518, 1523, 1524, 1514, 1522, 1516, 1525, - 1523, 1526, 1528, 1527, 1520, 1519, 1528, 1526, 1527, 1529, - 1524, 1530, 1525, 1529, 1531, 1532, 1533, 1534, 1535, 1535, - 1537, 1539, 1540, 1534, 1532, 1541, 1541, 1540, 1542, 1543, - 1547, 1530, 1531, 1547, 1542, 1549, 1533, 1550, 1537, 1545, - 1545, 1551, 1539, 1548, 1548, 1553, 1554, 1556, 1553, 1543, - 1555, 1549, 1557, 1550, 1558, 1558, 1556, 1551, 1559, 1560, + 1510, 1494, 1507, 1507, 1499, 1508, 17, 1500, 1508, 1504, + 1511, 1501, 1502, 1503, 1506, 1512, 1512, 1509, 1505, 1510, + 1513, 1513, 1511, 1514, 1516, 1515, 1517, 1518, 1514, 1515, + 1519, 1522, 1520, 1524, 1520, 1523, 1518, 1516, 1520, 1525, + 1523, 1517, 1526, 1519, 1527, 1527, 1530, 1528, 1524, 1522, + 1529, 1520, 1528, 1531, 1532, 1536, 1529, 1533, 1526, 1525, + 1532, 1530, 1533, 1534, 1535, 1537, 1531, 1534, 1535, 1538, + 1539, 1540, 1541, 1541, 1543, 1536, 1545, 1540, 1538, 1546, + 1547, 1547, 1548, 1537, 1546, 1549, 1551, 1551, 1548, 1560, + 1539, 1553, 1543, 1555, 1553, 1554, 1554, 1545, 1556, 1557, - 1561, 1562, 1563, 1564, 1565, 1565, 1562, 1554, 1566, 1564, - 1555, 1567, 1557, 1559, 1569, 1568, 1563, 1566, 1570, 1561, - 1560, 1571, 1571, 1572, 1573, 1575, 1574, 1576, 1576, 1567, - 1568, 1574, 1577, 1578, 1579, 1579, 1577, 1572, 1570, 1569, - 1575, 1580, 1573, 1581, 1582, 1583, 1584, 1585, 1589, 1583, - 1587, 1587, 1585, 1578, 1588, 1582, 1591, 1588, 1592, 1590, - 1593, 1589, 1581, 1580, 1590, 1584, 1594, 1595, 1596, 1597, - 1597, 1599, 1591, 1598, 1593, 1600, 1592, 1603, 1598, 1601, - 1601, 1595, 1603, 1602, 1604, 1594, 1594, 1605, 1608, 1605, - 1607, 1599, 1602, 1596, 1606, 1600, 1607, 1609, 1611, 1606, + 1559, 1561, 1562, 1559, 1563, 1549, 1564, 1564, 1565, 1555, + 1560, 1562, 1566, 1567, 1556, 1557, 1569, 1568, 1573, 1570, + 1572, 1561, 1568, 1565, 1563, 1570, 1571, 1571, 1574, 1572, + 1569, 1575, 1567, 1566, 1576, 1578, 1573, 1577, 1577, 1579, + 1580, 1582, 1582, 1574, 1581, 1580, 1583, 1584, 1586, 1578, + 1583, 1585, 1585, 1587, 1576, 1588, 1575, 1579, 1589, 1581, + 1590, 1597, 1589, 1591, 1593, 1593, 1588, 1584, 1591, 1595, + 1586, 1594, 1587, 1596, 1594, 1598, 1599, 1597, 1596, 1590, + 1600, 1601, 1595, 1602, 1603, 1603, 1604, 1605, 0, 1606, + 1599, 1604, 1608, 1598, 1610, 1601, 1607, 1607, 1609, 1600, - 1612, 1612, 1613, 1609, 1604, 1614, 1617, 1621, 1608, 1616, - 1620, 1614, 1611, 1622, 1616, 1618, 1618, 1619, 1619, 1623, - 1625, 1613, 1623, 1626, 1620, 1621, 1624, 1624, 1622, 1627, - 1617, 1629, 1635, 1628, 1633, 1626, 1628, 1629, 1625, 1628, - 1630, 1631, 1634, 1633, 1631, 1630, 1638, 1634, 1646, 1627, - 1636, 1628, 1639, 1636, 1637, 1637, 1640, 1635, 1639, 1641, - 1631, 1646, 1640, 1644, 1641, 1642, 1642, 1643, 1643, 1644, - 1638, 1645, 1647, 1648, 1649, 1650, 1645, 1651, 1650, 1652, - 1653, 1656, 1654, 1651, 1660, 1652, 1653, 1654, 1657, 1655, - 1647, 1661, 1648, 1657, 1649, 1655, 1658, 1658, 1659, 1662, + 1600, 1608, 1611, 1609, 1611, 1612, 1613, 1605, 1602, 1606, + 1612, 1614, 1613, 1615, 1610, 1617, 1618, 1618, 1619, 1615, + 1620, 1623, 1622, 1624, 1624, 1626, 1620, 1622, 1627, 1617, + 1631, 1614, 1625, 1625, 1628, 1629, 1633, 1619, 1629, 1626, + 1630, 1630, 1632, 1644, 1634, 1623, 1627, 1634, 1631, 1628, + 1634, 1635, 1637, 1636, 1632, 1637, 1633, 1635, 1636, 1639, + 1640, 1641, 1634, 1642, 0, 1640, 1642, 1644, 1639, 1643, + 1643, 1637, 1645, 1646, 1652, 1647, 1648, 1648, 1645, 1646, + 1647, 1649, 1649, 1650, 1653, 1651, 1641, 1652, 1654, 1650, + 1651, 1655, 1656, 1657, 1658, 1656, 1660, 1659, 1661, 1657, - 1663, 1664, 1660, 1659, 1656, 1665, 1667, 1666, 1668, 1669, - 1670, 1661, 1670, 1669, 1674, 1664, 1671, 1676, 1662, 1665, - 1663, 1666, 1672, 1678, 1667, 1675, 1674, 1681, 1677, 1672, - 1676, 1679, 1680, 1668, 1677, 1671, 1682, 1675, 1687, 1682, - 1684, 1681, 1689, 1678, 1683, 1683, 1691, 1679, 1688, 1684, - 1686, 1686, 1680, 1688, 1689, 1690, 1690, 1682, 1687, 1692, - 1693, 1691, 1694, 1695, 1696, 1699, 1698, 1697, 1701, 1703, - 1705, 1705, 1695, 1692, 1697, 1698, 1706, 1706, 1698, 1696, - 1694, 1699, 1704, 1701, 1693, 1704, 1707, 1708, 1701, 1709, - 1710, 1710, 1709, 1711, 1703, 1712, 1713, 1714, 1707, 1715, + 1658, 1660, 1653, 1659, 1661, 1662, 1666, 1654, 1663, 1664, + 1664, 1655, 1665, 1663, 1667, 1670, 1668, 1665, 1669, 1671, + 1674, 1673, 1672, 1675, 1666, 1677, 1684, 1675, 1662, 1670, + 1676, 1680, 1676, 1671, 1667, 1668, 1672, 1681, 1669, 1673, + 1678, 1682, 1683, 1680, 1677, 1674, 1684, 1678, 1683, 1681, + 1685, 1686, 1688, 1687, 1682, 1688, 1689, 1689, 1693, 1690, + 1692, 1692, 1695, 1698, 1694, 1697, 1685, 1687, 1690, 1694, + 1699, 1686, 1700, 1688, 1695, 1696, 1696, 1698, 1693, 1701, + 1697, 1702, 1703, 1704, 1705, 1709, 1707, 0, 1701, 1703, + 1700, 1714, 1704, 1713, 1699, 1704, 1702, 1711, 1711, 1710, - 1714, 1713, 1716, 1717, 1715, 1708, 1711, 1718, 1719, 1721, - 1724, 1720, 1723, 1723, 1712, 1725, 1718, 1724, 1721, 1717, - 1720, 1716, 1722, 1720, 1726, 1727, 1728, 1719, 1722, 1729, - 1732, 1731, 1735, 1730, 1736, 1725, 1731, 1726, 1730, 1730, - 1728, 1738, 1732, 1727, 1738, 1729, 1737, 1737, 1739, 1740, - 1741, 1741, 1736, 1742, 1742, 1741, 1744, 1735, 1740, 1745, - 1743, 1744, 1746, 1747, 1739, 1748, 1750, 1751, 1742, 1743, - 1748, 1748, 1743, 1752, 1753, 1754, 1756, 1745, 1755, 1753, - 1750, 1747, 1751, 1746, 1755, 1757, 1757, 1758, 1760, 1754, - 1764, 1759, 1761, 1758, 1756, 1752, 1759, 1762, 1761, 1765, + 1705, 1707, 1710, 1712, 1712, 1713, 1707, 1717, 1715, 1714, + 1709, 1715, 1716, 1716, 1718, 1720, 1719, 1721, 1720, 1722, + 1717, 1719, 1723, 1724, 1722, 1725, 1726, 1728, 1727, 1729, + 1730, 1730, 1732, 1718, 1725, 1729, 1728, 1727, 1721, 1724, + 1727, 1723, 1731, 1733, 1734, 1726, 1735, 1736, 1737, 1731, + 1738, 1742, 1732, 1737, 1737, 1738, 1733, 1739, 1745, 1743, + 1735, 1745, 1734, 1736, 1744, 1744, 1746, 1748, 1748, 1739, + 1747, 1750, 1748, 1749, 1749, 1752, 1742, 1743, 1753, 1747, + 1750, 1751, 1746, 1750, 1754, 1755, 1751, 1757, 1749, 1758, + 1755, 1755, 1759, 1752, 1761, 1760, 0, 1762, 1763, 1753, - 1766, 1767, 1760, 1762, 1771, 1773, 1766, 1774, 1768, 1769, - 1764, 1768, 1771, 1765, 1767, 1769, 1775, 1768, 1777, 1776, - 1778, 1779, 1780, 1777, 1773, 1781, 1774, 1776, 1782, 1778, - 1783, 1780, 1784, 1784, 1779, 1775, 1790, 1785, 1781, 1786, - 1788, 1791, 1782, 1785, 1783, 1786, 1787, 1789, 1789, 1787, - 1792, 1793, 1793, 1788, 1784, 1794, 1790, 1795, 1796, 1791, - 1797, 1798, 1801, 1795, 1800, 1800, 1802, 1803, 1794, 1792, - 1802, 1804, 1803, 1805, 1807, 1808, 1797, 1810, 1805, 1798, - 1796, 1806, 1801, 1807, 1811, 1813, 1806, 1812, 1810, 1814, - 1812, 1804, 1816, 1811, 1815, 1815, 1817, 1813, 1808, 1818, + 1760, 1757, 1754, 1762, 1758, 1764, 1764, 1765, 1761, 1767, + 1766, 1768, 1769, 1765, 1759, 1766, 1763, 1768, 1769, 1771, + 1772, 1773, 1774, 1767, 1776, 1778, 1780, 1773, 1775, 1781, + 1776, 1775, 1782, 1778, 1772, 1774, 1783, 1775, 1784, 1771, + 1785, 1786, 1789, 1784, 1783, 1780, 1787, 1788, 1781, 1785, + 1790, 1782, 1791, 1791, 1786, 1787, 1789, 1792, 1794, 1793, + 1788, 1794, 1795, 1792, 1790, 1793, 1796, 1796, 1797, 1798, + 1799, 1800, 1800, 1801, 1791, 1795, 1802, 1803, 1804, 1805, + 1807, 1807, 1802, 1808, 1811, 1810, 1801, 1798, 1797, 1799, + 1810, 1809, 1815, 1812, 1804, 1809, 1813, 1805, 1812, 1803, - 1819, 1819, 1820, 1821, 1814, 1822, 1825, 1823, 1817, 1826, - 1821, 1816, 1828, 1829, 1827, 1830, 1820, 1822, 1818, 1823, - 1827, 1830, 1831, 1831, 1828, 1825, 1836, 1832, 1839, 1826, - 1832, 1829, 1833, 1833, 1835, 1836, 1837, 1838, 1838, 1835, - 1839, 1840, 1837, 1840, 1841, 1842, 1843, 1841, 1844, 1845, - 1846, 1847, 1848, 1852, 1851, 1846, 1847, 1849, 1850, 1851, - 1853, 1848, 1852, 1856, 1858, 1842, 1844, 1845, 1843, 1849, - 1858, 1854, 1855, 1850, 1859, 1852, 1854, 1855, 1856, 1862, - 1853, 1857, 1857, 1854, 1861, 1863, 1864, 1865, 1866, 1867, - 1866, 1868, 1868, 1869, 1869, 1859, 1870, 1870, 1862, 1871, + 1814, 1813, 1817, 1808, 1811, 1818, 1820, 1819, 1821, 1814, + 1819, 1822, 1822, 1817, 1818, 1815, 1823, 1824, 1820, 1825, + 1826, 1826, 1827, 1821, 1828, 1829, 1832, 1830, 1833, 1824, + 1835, 1828, 1836, 0, 1834, 1823, 1827, 1829, 1825, 1830, + 1834, 1837, 1835, 1838, 1838, 1832, 1839, 1837, 1833, 1839, + 1836, 1840, 1840, 1842, 1843, 1844, 1845, 1845, 1842, 1846, + 1847, 1844, 1847, 1843, 1848, 1849, 1850, 1848, 1851, 1852, + 1853, 1846, 1854, 1855, 1857, 1853, 1858, 1854, 1856, 1860, + 1863, 1858, 1855, 1859, 0, 1849, 1851, 1852, 1850, 1857, + 1856, 1861, 1859, 1862, 1866, 1863, 1861, 1868, 1862, 1860, - 1861, 1874, 1864, 1867, 1863, 1867, 1875, 1865, 1872, 1872, - 1873, 1873, 1876, 1877, 1877, 1879, 1878, 1883, 1882, 1871, - 1878, 1879, 1874, 1880, 1882, 1884, 1880, 1875, 1886, 1885, - 1889, 1884, 1892, 1876, 1885, 1883, 1887, 1888, 1888, 1887, - 1890, 1891, 1891, 1893, 1894, 1890, 1895, 1892, 1900, 1894, - 1889, 1895, 1897, 1886, 1896, 1896, 1898, 1897, 1899, 1902, - 1901, 1903, 1898, 1904, 1893, 1905, 1906, 1903, 1900, 1907, - 1899, 1899, 1899, 1906, 1907, 1909, 1910, 1899, 1901, 1902, - 1909, 1909, 1911, 1904, 1912, 1905, 1912, 1913, 1914, 1915, - 1910, 1916, 1917, 1918, 1920, 1915, 1922, 1911, 1913, 1923, + 1864, 1864, 1865, 1861, 1869, 1859, 1870, 1872, 1865, 1873, + 1871, 1873, 1878, 1868, 1874, 1866, 1875, 1875, 1876, 1876, + 1877, 1877, 1881, 1869, 1882, 1870, 1871, 1872, 1874, 1883, + 1874, 1890, 1878, 1879, 1879, 1880, 1880, 1884, 1884, 1887, + 1885, 1886, 1887, 1881, 1885, 1882, 1889, 1886, 1891, 1890, + 1883, 1892, 1889, 1893, 1891, 1894, 1892, 1896, 1894, 1895, + 1895, 1897, 1898, 1898, 1899, 1900, 1897, 1901, 1902, 1903, + 1903, 1904, 1901, 1902, 1905, 1906, 1904, 1896, 1893, 1899, + 1905, 1907, 1908, 1909, 1910, 1911, 1900, 1906, 1906, 1906, + 1910, 1912, 1913, 1914, 1906, 1917, 1924, 1918, 1914, 1913, - 1916, 1919, 1919, 1914, 1921, 1921, 1924, 1924, 1925, 1925, - 1926, 1930, 1917, 1931, 1918, 1933, 1922, 1929, 1929, 1934, - 1920, 1923, 1931, 1935, 1933, 1936, 1937, 1937, 1938, 1935, - 1926, 1939, 1940, 1941, 1942, 1944, 1930, 1943, 1943, 1940, - 1934, 1936, 1941, 1945, 1947, 1949, 1939, 1948, 1950, 1938, - 1947, 1949, 1948, 1955, 1953, 1951, 1953, 1952, 1956, 1945, - 1942, 1944, 1951, 1952, 1956, 1957, 1957, 1959, 1950, 1958, - 1960, 1961, 1955, 1962, 1958, 1963, 1959, 1964, 1963, 1965, - 1966, 1967, 1965, 1968, 1968, 1960, 1971, 1969, 1970, 1964, - 1972, 1961, 1962, 1969, 1970, 1973, 1975, 1976, 1966, 1973, + 1908, 1907, 1916, 1909, 1919, 1911, 1919, 1916, 1916, 1917, + 1920, 1912, 1918, 1921, 1922, 1923, 1924, 1925, 1926, 1926, + 1922, 1920, 1927, 1929, 1923, 1928, 1928, 1930, 1921, 1931, + 1931, 1932, 1932, 1933, 1936, 1936, 1937, 1938, 1925, 1941, + 1943, 1940, 1946, 1929, 1944, 1942, 1938, 1947, 1927, 1930, + 1940, 1942, 1948, 1933, 1945, 1945, 1943, 1949, 1944, 1948, + 1941, 1937, 1947, 1946, 1950, 1952, 1949, 1951, 1951, 1953, + 1955, 1959, 1956, 1957, 1958, 1960, 1955, 1956, 1959, 1957, + 1961, 1960, 1961, 1963, 1966, 1953, 1964, 1965, 1965, 1966, + 1950, 1952, 1964, 1968, 1958, 1967, 1969, 1971, 1970, 1972, - 1978, 1978, 1979, 1977, 1980, 1972, 1971, 1967, 1977, 1981, - 1983, 1985, 1985, 1984, 1986, 1973, 1975, 1984, 1987, 1976, - 1986, 1988, 1988, 1980, 1981, 1990, 1979, 1987, 1989, 1983, - 1991, 1991, 1989, 1992, 1993, 1995, 1990, 1994, 1996, 1997, - 1995, 1990, 1998, 1999, 2003, 2000, 2001, 2002, 1993, 1999, - 2004, 2004, 2002, 2010, 1992, 17, 1994, 2003, 1996, 1997, - 2008, 2001, 1998, 2000, 2005, 2005, 2006, 2009, 2019, 2008, - 2006, 2011, 2020, 2010, 2012, 2012, 2011, 2020, 2009, 2014, - 2014, 2015, 2016, 2009, 2018, 2021, 2015, 2015, 2016, 2022, - 2018, 2024, 2025, 2026, 2019, 2022, 2025, 2021, 2027, 2027, + 1971, 1974, 1963, 1973, 1967, 1975, 1973, 1977, 1968, 1976, + 1976, 1972, 1978, 1977, 1979, 1980, 1969, 1970, 1978, 1974, + 1981, 1983, 1984, 1985, 1981, 1986, 1986, 1987, 1985, 1988, + 1980, 1975, 1989, 1991, 1979, 1992, 1993, 1993, 1997, 1992, + 1981, 1983, 1997, 1994, 1984, 1995, 1998, 1989, 1988, 1994, + 2000, 1987, 1991, 2001, 1995, 1996, 1996, 1998, 1999, 1999, + 2002, 2003, 1998, 2004, 2005, 2006, 2003, 2001, 2007, 2008, + 2010, 2000, 2018, 2009, 2007, 2010, 2011, 2012, 2012, 2002, + 2013, 2013, 2014, 2004, 2005, 2006, 2014, 2008, 2009, 2011, + 2016, 2017, 2018, 2019, 2020, 2020, 2022, 2022, 2019, 2016, - 2028, 2029, 2030, 2024, 2031, 2026, 2034, 2029, 2032, 2032, - 2031, 2033, 2035, 2039, 2040, 2036, 2038, 2035, 2042, 2040, - 2046, 2042, 2043, 2043, 2030, 2028, 2034, 2036, 2038, 0, - 2033, 2047, 2039, 2044, 2044, 2045, 2045, 2047, 2048, 2050, - 2046, 2049, 2051, 2053, 2048, 2050, 2049, 2055, 2053, 2056, - 2055, 2051, 2057, 2057, 2059, 2060, 2063, 2061, 2062, 2062, - 2068, 2056, 2061, 2064, 2065, 2063, 2059, 2060, 2064, 2065, - 2066, 2067, 2067, 2066, 2069, 2070, 2071, 2072, 2075, 2073, - 2068, 2072, 2074, 2069, 2073, 2076, 2077, 2078, 2074, 2081, - 2080, 2080, 2084, 2070, 2076, 2071, 2075, 2082, 2088, 2083, + 2023, 2027, 2017, 2024, 2026, 2023, 2023, 2017, 2028, 2024, + 2026, 2029, 2030, 2028, 2032, 2033, 2034, 2036, 2030, 2033, + 2035, 2035, 2038, 2029, 2037, 2039, 2032, 2027, 2034, 2041, + 2037, 2039, 2040, 2040, 2042, 2043, 2047, 2044, 2046, 2055, + 2043, 2048, 2036, 2054, 2038, 2055, 2048, 0, 2041, 2044, + 2046, 2051, 2051, 2050, 2042, 2047, 2050, 2052, 2052, 2053, + 2053, 2056, 2058, 2054, 2057, 2059, 2061, 2056, 2058, 2057, + 2063, 2061, 2064, 2063, 2059, 2065, 2065, 2067, 2068, 2071, + 2069, 2070, 2070, 2076, 2064, 2069, 2072, 2073, 2071, 2067, + 2068, 2072, 2073, 2074, 2075, 2075, 2074, 2077, 2078, 2079, - 2090, 2078, 2080, 2087, 2077, 2086, 2082, 2081, 2083, 2085, - 2085, 2089, 2084, 2090, 2086, 2087, 2089, 2093, 2093, 2088, - 2095, 2096, 2097, 2095, 2098, 2101, 2100, 2102, 2103, 2104, - 2104, 2106, 2105, 2102, 2105, 2107, 2107, 2096, 2097, 2101, - 2098, 2100, 2108, 2110, 2110, 2103, 2111, 2111, 2113, 2106, - 2108, 2114, 2115, 2116, 2117, 2118, 2119, 2114, 2115, 2120, - 2120, 2117, 2122, 2121, 2121, 2127, 2123, 2116, 2124, 2125, - 2126, 2113, 2121, 2131, 2129, 2134, 2119, 2118, 2123, 2128, - 2124, 2130, 2126, 2122, 2125, 2135, 2130, 2130, 2128, 2129, - 2136, 2127, 2132, 2139, 2132, 2134, 2131, 2138, 2132, 2137, + 2080, 2083, 2081, 2076, 2080, 2082, 2077, 2081, 2084, 2085, + 2086, 2082, 2089, 2088, 2088, 2092, 2078, 2084, 2079, 2083, + 2090, 2096, 2091, 2098, 2086, 2088, 2095, 2085, 2094, 2090, + 2089, 2091, 2093, 2093, 2097, 2092, 2098, 2094, 2095, 2097, + 2101, 2101, 2096, 2103, 2104, 2105, 2103, 2106, 2109, 2108, + 2110, 2111, 2112, 2112, 2114, 2113, 2110, 2113, 2115, 2115, + 2104, 2105, 2109, 2106, 2108, 2116, 2118, 2118, 2111, 2119, + 2119, 2121, 2114, 2116, 2122, 2123, 2124, 2125, 2126, 2127, + 2122, 2123, 2128, 2128, 2125, 2130, 2129, 2129, 2135, 2131, + 2124, 2132, 2133, 2134, 2121, 2129, 2139, 2137, 2142, 2127, - 2137, 2140, 2136, 2142, 2140, 2141, 2146, 2144, 2135, 2152, - 2141, 2132, 2144, 2139, 2145, 2138, 2145, 2147, 2148, 2150, - 2153, 2154, 2147, 2142, 2146, 2148, 2156, 2152, 2150, 2153, - 2155, 2157, 2155, 2154, 2159, 2160, 2159, 2157, 2161, 2161, - 2162, 2163, 2164, 2165, 2164, 2156, 2163, 2166, 2165, 2160, - 2167, 2168, 2166, 2169, 2170, 2173, 2171, 2172, 2174, 2177, - 2170, 2171, 2178, 2174, 2174, 2179, 2162, 2173, 2167, 2168, - 2172, 2175, 2182, 2169, 2180, 2180, 2178, 2179, 2177, 2175, - 2181, 2181, 2183, 2182, 2184, 2185, 2187, 2186, 2187, 2188, - 2189, 2185, 2186, 2190, 2190, 2196, 2191, 2183, 2189, 2192, + 2126, 2131, 2136, 2132, 2138, 2134, 2130, 2133, 2143, 2138, + 2138, 2136, 2137, 2144, 2135, 2140, 2147, 2140, 2142, 2139, + 2146, 2140, 2145, 2145, 2148, 2144, 2150, 2148, 2149, 2154, + 2152, 2143, 2160, 2149, 2140, 2152, 2147, 2153, 2146, 2153, + 2155, 2156, 2158, 2161, 2162, 2155, 2150, 2154, 2156, 2164, + 2160, 2158, 2161, 2163, 2165, 2163, 2162, 2166, 2169, 2168, + 2165, 2168, 2170, 2170, 2171, 2172, 2174, 2173, 2164, 2173, + 2172, 2174, 2169, 2175, 2176, 2177, 2178, 2166, 2175, 2179, + 0, 2180, 2181, 2183, 2186, 2179, 2180, 2182, 2183, 2183, + 2171, 2187, 2176, 2177, 2184, 2181, 2178, 2188, 2192, 2182, - 2192, 2193, 2193, 2194, 2184, 2195, 2189, 2188, 2191, 2199, - 2195, 2198, 2194, 2196, 2200, 2198, 2200, 2201, 2199, 2202, - 2203, 2199, 2204, 2205, 2202, 2202, 2219, 2207, 2208, 2209, - 2211, 2204, 2203, 2208, 2209, 2205, 2212, 2213, 2201, 2207, - 2214, 2214, 2215, 2211, 2212, 2216, 2213, 2217, 2218, 2222, - 2224, 2219, 2220, 2221, 2222, 2225, 2212, 2226, 2230, 2236, - 2215, 2239, 2224, 2216, 2218, 2217, 2220, 2225, 2221, 2227, - 2228, 2229, 2233, 2235, 2227, 2228, 2230, 2226, 2233, 2235, - 2229, 2237, 2236, 2238, 2240, 2242, 2239, 2241, 2241, 2243, - 2243, 2233, 2244, 2240, 2242, 2245, 2237, 2250, 2246, 2247, + 2189, 2189, 2184, 2186, 2191, 2187, 2190, 2190, 2193, 2188, + 2194, 2197, 2195, 2192, 2198, 2191, 2194, 2195, 2196, 2200, + 2196, 0, 2198, 2199, 2199, 2201, 2201, 2203, 2193, 2197, + 2198, 2200, 2202, 2202, 2204, 2205, 2203, 2207, 2208, 2204, + 2209, 2207, 2209, 2210, 2212, 2213, 2211, 2208, 2214, 2216, + 2208, 2211, 2211, 2205, 2213, 2220, 2212, 2217, 2218, 2221, + 2214, 2216, 2217, 2218, 2210, 2222, 2224, 2221, 2220, 2223, + 2223, 2225, 2226, 2228, 2222, 2227, 2231, 2238, 2229, 2221, + 2230, 2231, 2233, 2235, 2224, 2234, 2238, 2239, 2236, 2225, + 2226, 2227, 2229, 2236, 2233, 2230, 2237, 2234, 2228, 2245, - 2248, 2238, 2246, 2251, 2247, 2252, 2253, 0, 2258, 2251, - 2244, 2253, 2253, 2248, 2245, 2254, 2250, 2255, 2257, 2256, - 2267, 2254, 2256, 2255, 2261, 2261, 2257, 2252, 2258, 2262, - 2262, 2263, 2264, 2264, 2265, 2265, 2266, 2268, 2267, 2273, - 2263, 2269, 2272, 2268, 2262, 2273, 2269, 2272, 2266, 2270, - 2270, 2271, 2271, 2275, 2276, 2262, 2277, 2275, 2278, 2280, - 2277, 2281, 2282, 2284, 2283, 2285, 2281, 2287, 2284, 2289, - 2286, 2288, 2290, 2290, 2276, 2292, 2288, 2291, 2278, 2283, - 2294, 2291, 2295, 2285, 2280, 2282, 2286, 2287, 2293, 2296, - 2292, 2289, 2297, 2293, 2298, 2299, 2300, 2301, 2294, 2305, + 2242, 2237, 2244, 2235, 2248, 2239, 2242, 2247, 2244, 2246, + 2253, 2249, 2250, 2250, 2251, 2252, 2252, 2254, 2257, 2242, + 2249, 2259, 2245, 2251, 2246, 2247, 2255, 2256, 2253, 2248, + 2255, 2257, 2256, 2260, 2261, 2263, 2254, 2262, 2264, 2260, + 2259, 2263, 2262, 2262, 2264, 2265, 2266, 2267, 2265, 2270, + 2270, 2271, 2271, 2272, 2266, 0, 2261, 2273, 2273, 2274, + 2274, 2275, 2272, 2276, 2277, 2289, 2271, 2267, 2285, 2278, + 2277, 2279, 2279, 2275, 2278, 2280, 2280, 2271, 2281, 2282, + 2284, 2276, 2286, 2281, 2284, 2282, 2286, 2287, 2285, 2290, + 2289, 2291, 2293, 2292, 2290, 2294, 2295, 2293, 2296, 2297, - 2299, 2302, 2302, 2304, 2297, 2306, 2307, 2296, 2295, 2300, - 2308, 2304, 2309, 2298, 2312, 2301, 2310, 2311, 2305, 2313, - 2319, 2314, 2316, 2320, 2306, 2307, 2312, 2314, 2318, 2320, - 2321, 2322, 2321, 2308, 2319, 2310, 2309, 2316, 2311, 2324, - 2313, 2318, 2323, 2323, 2324, 2325, 2326, 2327, 2325, 2328, - 2355, 2322, 2329, 2330, 2330, 2331, 2331, 2334, 2332, 2326, - 2332, 2333, 2333, 2328, 2335, 2329, 0, 2336, 2355, 2337, - 2337, 2327, 2334, 2337, 2339, 2339, 2340, 2340, 2342, 2335, - 2336, 2341, 2341, 2343, 2343, 2344, 2344, 2342, 2345, 2347, - 2342, 2348, 2349, 2345, 2347, 2350, 2351, 2351, 2352, 2352, + 2298, 2299, 2299, 0, 2297, 2300, 2301, 2287, 2292, 2300, + 2302, 2303, 2295, 2294, 2291, 2302, 2304, 2305, 2296, 2306, + 2307, 2301, 2298, 2308, 2309, 2310, 2311, 2311, 2308, 2303, + 2313, 2306, 2314, 2315, 2316, 2305, 2317, 2309, 2313, 2307, + 2318, 2319, 2304, 2310, 2320, 2321, 2322, 2325, 2323, 0, + 2327, 2314, 2315, 2316, 2323, 2328, 2330, 2321, 2330, 2317, + 2319, 2331, 2325, 2327, 2318, 2320, 2329, 2322, 2333, 2328, + 2332, 2332, 2329, 2333, 2334, 2335, 2336, 2334, 2337, 2343, + 2338, 2331, 2339, 2339, 2340, 2340, 2344, 2341, 2335, 2341, + 2342, 2342, 2337, 2338, 2343, 2345, 2348, 2348, 2346, 2346, - 2353, 2354, 2354, 2356, 2356, 2357, 2363, 2350, 2358, 2359, - 2359, 2348, 2349, 2358, 2360, 2360, 2361, 2362, 2364, 2353, - 2357, 2365, 2367, 2363, 2368, 2368, 2362, 2367, 2369, 2373, - 2361, 2371, 2364, 2370, 2370, 2373, 2372, 2375, 2375, 2374, - 2365, 2372, 2374, 2376, 2376, 2377, 2378, 2369, 2379, 2371, - 2379, 2381, 2382, 2375, 2383, 2383, 2384, 2386, 2387, 2388, - 2389, 2378, 2384, 2390, 2377, 2392, 2381, 2390, 2391, 2391, - 2394, 2382, 2395, 2387, 2393, 2389, 2398, 2386, 2400, 2393, - 2397, 2397, 2388, 2399, 2392, 2394, 2401, 2395, 2402, 2404, - 2399, 2406, 2400, 2403, 2405, 2405, 2398, 2407, 2408, 2407, + 2336, 2344, 2346, 2349, 2349, 2350, 2350, 2351, 2345, 2352, + 2352, 2353, 2353, 2354, 2357, 2356, 2351, 2358, 2354, 2351, + 2356, 2359, 2360, 2360, 2361, 2361, 2362, 2363, 2363, 2364, + 2365, 2365, 2370, 2359, 2357, 2366, 2367, 2358, 2368, 2368, + 2371, 2367, 2369, 2369, 2372, 2362, 2370, 2364, 2374, 2371, + 2366, 2373, 2373, 2375, 2377, 2378, 2378, 2379, 2387, 2377, + 2381, 2372, 2374, 2380, 2380, 2382, 2384, 2383, 2388, 2384, + 2382, 2391, 2375, 2383, 2385, 2385, 2379, 2387, 2381, 2386, + 2386, 2392, 2389, 2388, 2389, 2394, 2391, 2393, 2393, 2396, + 2385, 2394, 2397, 2398, 2400, 2399, 2401, 2401, 2400, 2402, - 2406, 2408, 2411, 2410, 2401, 2412, 2402, 2413, 2403, 2410, - 2412, 2414, 2413, 2415, 2411, 2404, 2408, 2416, 2408, 2417, - 2418, 2419, 2421, 2427, 2422, 2418, 2415, 2421, 2417, 2422, - 2423, 2424, 2432, 2425, 2426, 2423, 2414, 2428, 2416, 2425, - 2426, 2435, 2429, 2433, 2427, 2430, 2424, 2419, 2429, 2431, - 2430, 2436, 2428, 2437, 2431, 2434, 2433, 2432, 2434, 2438, - 2436, 2435, 2437, 2439, 2440, 2441, 2443, 2442, 2438, 2445, - 2443, 2441, 2439, 2442, 2447, 2448, 2449, 2449, 2440, 2450, - 2455, 2451, 2451, 2452, 2448, 2450, 2453, 2453, 2454, 2445, - 2451, 2457, 2452, 2454, 2447, 2458, 2459, 2459, 2460, 2461, + 2392, 2403, 2404, 2408, 2405, 2414, 2403, 2397, 2409, 2396, + 2399, 2407, 2407, 2410, 2411, 2409, 2398, 2404, 2402, 2405, + 2412, 2413, 0, 2408, 2415, 2415, 2416, 2410, 2417, 2421, + 2417, 2414, 2411, 2420, 2418, 2416, 2413, 2418, 2412, 2420, + 2422, 2421, 2423, 2424, 2425, 2422, 2426, 2423, 2428, 2427, + 2429, 2431, 2418, 2428, 2418, 2432, 2431, 2425, 2427, 2433, + 2432, 2437, 2434, 2435, 2433, 2436, 2438, 2426, 2424, 2435, + 2440, 2436, 2439, 2442, 2441, 2440, 2429, 2434, 2439, 2441, + 2443, 2438, 2437, 2444, 2445, 2446, 2444, 2447, 2448, 2450, + 2449, 2455, 2457, 2443, 2446, 2451, 2447, 2448, 2442, 2449, - 2455, 2464, 2455, 2463, 2465, 2469, 2466, 2457, 2461, 2468, - 2469, 2458, 2468, 2460, 2470, 2463, 2471, 2464, 2466, 2465, - 2472, 2472, 2473, 2473, 2475, 2475, 2476, 2477, 2471, 2476, - 2478, 2479, 2477, 2480, 2470, 2482, 2478, 2479, 2481, 2481, - 2483, 2483, 2480, 2484, 2485, 2486, 2487, 2487, 2488, 2482, - 2493, 2489, 2490, 2493, 2488, 2484, 2492, 2490, 2485, 2499, - 2492, 2494, 2494, 2495, 2486, 2489, 2496, 2497, 2495, 2498, - 2500, 2496, 2501, 2501, 2500, 2502, 2497, 2504, 2498, 2499, - 2505, 2506, 2504, 2507, 2508, 2509, 2510, 2511, 2502, 2509, - 2512, 2513, 2511, 2514, 2514, 2515, 2512, 2513, 2508, 2516, + 2452, 2451, 2460, 2450, 2445, 2453, 2452, 2458, 2460, 2453, + 2462, 2455, 2457, 2459, 2459, 2465, 2458, 2461, 2461, 2462, + 2463, 2463, 2464, 2467, 2468, 2471, 2461, 2464, 2469, 2469, + 2470, 2473, 2474, 2480, 2471, 2465, 2475, 2465, 2476, 2467, + 2468, 2478, 2479, 2473, 2478, 2470, 2481, 2479, 2474, 2486, + 2476, 2475, 2486, 2480, 2482, 2482, 2483, 2483, 2481, 2485, + 2485, 2487, 2488, 2489, 2490, 2492, 2487, 2495, 2488, 2489, + 2491, 2491, 2494, 2490, 2493, 2493, 2496, 2497, 2497, 2492, + 2498, 2495, 2499, 2500, 2494, 2502, 2498, 2503, 2500, 2502, + 2503, 2504, 2504, 2505, 2506, 2496, 2499, 2507, 2505, 2506, - 2505, 2506, 2517, 2507, 2518, 2519, 2510, 2520, 2520, 2518, - 2522, 2523, 2524, 2515, 2525, 2527, 2540, 2524, 2516, 2526, - 2525, 2517, 2522, 2527, 2530, 2526, 2519, 2523, 2528, 2532, - 2528, 2533, 0, 2530, 2534, 2534, 2535, 2536, 2536, 2535, - 2546, 2538, 2540, 2532, 2538, 2533, 2539, 2541, 2541, 2539, - 2544, 2545, 2546, 2548, 2544, 2547, 2547, 2545, 2551, 2551, - 2553, 2555, 2548, 2556, 2559, 2560, 2561, 2562, 2563, 2559, - 2564, 2564, 2562, 2563, 2568, 2555, 2566, 2566, 2553, 2556, - 2568, 2569, 2570, 2570, 2571, 2572, 2575, 2561, 2573, 2576, - 2577, 2560, 2576, 2573, 2578, 2579, 2579, 2581, 2583, 2582, + 2508, 2509, 2512, 2510, 2511, 2511, 2507, 2510, 2514, 2508, + 2515, 2516, 2517, 2514, 2518, 2512, 2519, 2520, 2521, 2522, + 2519, 2509, 2525, 2521, 2526, 2522, 2527, 2523, 2518, 2529, + 2515, 2516, 2517, 2523, 2524, 2524, 2528, 2520, 2530, 2530, + 2525, 2528, 2532, 2526, 2533, 2527, 2534, 2535, 2537, 2536, + 2529, 2534, 2540, 2535, 2532, 2536, 2537, 2538, 2542, 2538, + 2533, 2540, 2543, 2544, 2544, 2545, 2546, 2546, 2545, 2550, + 2548, 2549, 2542, 2548, 2549, 2554, 2543, 2551, 2551, 2554, + 2555, 2556, 2557, 2557, 2563, 2558, 2555, 2561, 2561, 2565, + 2566, 2569, 2570, 2556, 2558, 2550, 2569, 2586, 2571, 2573, - 2571, 2569, 2577, 2584, 2583, 2575, 2578, 2572, 2582, 2584, - 2585, 2586, 2590, 2581, 2588, 2588, 2589, 2591, 2596, 2589, - 2593, 2593, 2594, 2594, 2595, 2597, 2586, 2598, 2585, 2595, - 2601, 2590, 2599, 2602, 2597, 2591, 2596, 2599, 2603, 2600, - 2598, 2600, 2605, 2604, 2601, 2606, 2607, 2602, 2604, 2612, - 2603, 2607, 2608, 2608, 2609, 2609, 2610, 2610, 2611, 2611, - 2614, 2612, 2605, 2615, 2613, 2606, 2613, 2619, 2615, 2616, - 2616, 2617, 2617, 2618, 2618, 2620, 2621, 2622, 2614, 2619, - 2623, 2626, 2624, 2625, 2625, 2627, 2627, 2631, 2621, 2628, - 2628, 2629, 2630, 2630, 2633, 2620, 2632, 2622, 2624, 2631, + 2574, 2580, 2563, 2565, 2573, 2574, 2566, 2575, 2575, 2577, + 2577, 2579, 2581, 2581, 2582, 2583, 2586, 2579, 2570, 2571, + 2584, 2580, 2588, 2587, 2589, 2584, 2587, 2590, 2590, 2592, + 2582, 2593, 2594, 2595, 2588, 2596, 2589, 2583, 2594, 2595, + 2593, 2597, 2599, 2599, 2600, 2592, 2601, 2600, 2602, 2604, + 2604, 2605, 2605, 2596, 2606, 2607, 2597, 2609, 2608, 2606, + 2611, 2612, 2611, 2610, 2613, 2601, 2602, 2608, 2610, 2614, + 2609, 2615, 2616, 2607, 2617, 2612, 2615, 2618, 2613, 2619, + 2619, 2614, 2618, 2620, 2620, 2621, 2621, 2622, 2622, 2623, + 2625, 2624, 2616, 2624, 2617, 2626, 2627, 2627, 2628, 2628, - 2626, 2623, 2629, 2632, 2634, 2635, 2633, 2636, 2637, 2639, - 2635, 2638, 2638, 2640, 2640, 2641, 2642, 2643, 2639, 2644, - 2645, 2647, 2646, 2647, 2634, 2648, 2650, 2636, 2637, 2654, - 2643, 2649, 2649, 2651, 2645, 2650, 2642, 2648, 2652, 2655, - 2656, 2641, 2657, 2644, 2646, 2657, 2658, 2654, 2651, 2659, - 2660, 2661, 2661, 2652, 2659, 2660, 2662, 2662, 2663, 2663, - 2658, 2655, 2668, 2656, 2665, 2665, 2667, 2667, 2669, 2670, - 2671, 2673, 2674, 2675, 2676, 2677, 2678, 2680, 0, 2669, - 2668, 2679, 2681, 2679, 2677, 2671, 2682, 2687, 2670, 2688, - 2674, 2673, 2683, 2683, 2676, 2675, 2678, 2680, 2685, 2689, + 2626, 2623, 2629, 2629, 2630, 2631, 2632, 2633, 2625, 2634, + 2635, 2636, 2636, 2637, 2638, 2638, 2630, 2640, 2632, 2639, + 2639, 2641, 2641, 2642, 2643, 2631, 2635, 2633, 2640, 2644, + 2634, 2643, 2637, 2645, 2646, 2642, 2647, 2648, 2650, 2646, + 2652, 2644, 2649, 2649, 2651, 2651, 2654, 2650, 2653, 2655, + 2656, 2659, 2657, 2645, 2660, 2660, 2647, 2648, 2658, 2654, + 2658, 2661, 2662, 2659, 2656, 2663, 2652, 2665, 2653, 2666, + 2661, 2667, 2668, 2655, 2657, 2668, 2669, 2662, 2670, 2671, + 2663, 2672, 2672, 2670, 2671, 2665, 2673, 2673, 2674, 2674, + 2669, 2666, 2676, 2676, 2667, 2678, 2678, 2679, 2680, 2681, - 2681, 2687, 2685, 2692, 2682, 2686, 2686, 2694, 2689, 2690, - 2690, 2688, 2692, 2693, 2693, 2695, 2696, 2697, 2699, 2700, - 2698, 2702, 2701, 2703, 2697, 2694, 2704, 2704, 2705, 2705, - 2703, 2706, 2707, 2695, 2696, 2698, 2699, 2700, 2701, 2708, - 2702, 2710, 2710, 2711, 2711, 2708, 2712, 2713, 2714, 2715, - 2707, 2706, 2712, 2716, 2717, 2718, 2719, 2719, 2720, 2721, - 2718, 2722, 2723, 2724, 2715, 2713, 2714, 2731, 2717, 2725, - 2727, 2727, 2716, 2723, 2725, 2726, 2734, 2726, 2720, 2721, - 2728, 2722, 2728, 2724, 2729, 2729, 2731, 2733, 2735, 2736, - 2739, 2743, 2737, 2738, 2740, 2734, 2733, 2737, 2738, 2744, + 2684, 2682, 2686, 2685, 2688, 2687, 2689, 2691, 2690, 2680, + 2690, 2692, 2693, 2688, 2699, 2679, 2682, 2698, 2681, 0, + 2684, 2685, 2694, 2694, 2686, 2687, 2689, 2691, 2696, 2692, + 2693, 2698, 2696, 2697, 2697, 2700, 2699, 2701, 2701, 2703, + 2704, 2704, 2705, 2706, 2700, 2707, 2708, 2709, 2703, 2710, + 2711, 2714, 2713, 2708, 2712, 2715, 2715, 2717, 2714, 0, + 2705, 2706, 2709, 2707, 2716, 2716, 2718, 2710, 2711, 2719, + 2712, 2713, 2721, 2721, 2723, 2719, 2724, 2717, 2722, 2722, + 2723, 2725, 2726, 2727, 2718, 2729, 2728, 2730, 2730, 2731, + 2729, 2732, 2733, 2734, 2724, 2735, 2736, 2726, 2742, 2725, - 2735, 2745, 2746, 2746, 2745, 2747, 2748, 2749, 2749, 2736, - 2739, 2743, 2750, 2740, 2751, 2752, 2754, 2744, 2755, 2752, - 2747, 2756, 2757, 2750, 2748, 2759, 2757, 2756, 2761, 2751, - 2762, 2754, 2763, 2755, 2758, 2758, 2764, 2764, 2759, 2766, - 2767, 2768, 2771, 2761, 2775, 2768, 2769, 2769, 2777, 2767, - 2762, 2766, 2763, 2770, 2770, 2772, 2772, 2773, 2774, 2776, - 2775, 2771, 2773, 2778, 2778, 2783, 2783, 2774, 2777, 2784, - 2785, 2776, 2786, 2786, 2787, 2788, 2789, 2790, 2784, 2793, - 2793, 2791, 2792, 2794, 2795, 2806, 2790, 2787, 2788, 2789, - 2791, 2792, 2785, 2797, 2797, 2800, 2802, 2803, 2805, 2795, + 2728, 2736, 2727, 2737, 2734, 2737, 2738, 2738, 2739, 2731, + 2739, 2732, 2733, 2740, 2740, 2735, 2744, 2742, 2745, 2746, + 2747, 2748, 2749, 2750, 2754, 2744, 2748, 2749, 2751, 2756, + 2755, 2746, 2756, 2757, 2757, 2758, 2759, 2745, 2760, 2760, + 2747, 2761, 2762, 2750, 2754, 2763, 2765, 2751, 2755, 2763, + 2758, 2766, 2761, 2767, 2759, 2770, 2768, 2762, 2772, 2767, + 2768, 2765, 2769, 2769, 2773, 2774, 2766, 2777, 2770, 2775, + 2775, 2778, 2779, 2772, 2780, 2780, 2779, 2781, 2781, 2777, + 2778, 2782, 2783, 2783, 2773, 2774, 2784, 2785, 2786, 2787, + 2788, 2784, 2789, 2789, 2794, 2794, 2785, 2795, 2796, 2798, - 2800, 2802, 2804, 2794, 2806, 2807, 2805, 2804, 2808, 2810, - 2812, 2803, 2813, 2814, 2807, 2812, 2808, 2813, 2815, 2815, - 2816, 2816, 2817, 2818, 2810, 2819, 2819, 2817, 2814, 2820, - 2821, 2822, 2823, 2824, 0, 2821, 2820, 2827, 2825, 2824, - 2826, 2826, 2818, 2825, 2829, 2829, 2828, 2830, 2830, 2822, - 2823, 2828, 2827, 2833, 2834, 2834, 2835, 2836, 2839, 2835, - 2837, 2840, 2836, 2836, 2838, 2837, 2833, 2840, 2842, 2838, - 2841, 2843, 2839, 2842, 2841, 2844, 2845, 2846, 2849, 2847, - 2843, 2848, 2850, 2849, 2845, 2847, 2853, 2848, 2851, 2851, - 2844, 2854, 2855, 2853, 2850, 2855, 2854, 2857, 2846, 2859, + 2782, 2787, 2797, 2797, 2786, 2799, 2795, 2801, 2800, 2805, + 2788, 2806, 2798, 2802, 2803, 3492, 2801, 3492, 2799, 2814, + 2796, 2800, 2802, 2803, 2804, 2804, 2806, 2808, 2808, 2805, + 2811, 2813, 2815, 2814, 2816, 2811, 2813, 2815, 2817, 2818, + 2821, 2819, 2816, 2825, 2829, 2823, 2824, 2831, 2818, 2819, + 2823, 2824, 2826, 2826, 2831, 2821, 2828, 2817, 2825, 2827, + 2827, 2828, 2832, 2829, 2830, 2830, 2833, 2832, 2834, 2835, + 2838, 2836, 2837, 2837, 2839, 2835, 2836, 2840, 2840, 2839, + 2841, 2841, 2844, 0, 2833, 2838, 2834, 2845, 2845, 2846, + 2850, 2847, 2846, 2848, 2849, 2844, 2847, 2847, 2848, 2849, - 2860, 2861, 2862, 2863, 2859, 2860, 2861, 2871, 2864, 2857, - 2865, 2866, 2866, 2867, 2876, 2872, 2863, 2864, 2868, 2865, - 2862, 2872, 2867, 2868, 2873, 2871, 2877, 2878, 2881, 2879, - 2873, 2880, 2880, 2876, 2882, 2881, 2884, 2886, 2886, 2887, - 2885, 2888, 2889, 2889, 2890, 2884, 2877, 2878, 2879, 2885, - 2892, 2894, 2897, 2882, 2887, 2895, 2888, 2896, 2896, 2895, - 2898, 2899, 2900, 2890, 2901, 2892, 2898, 2899, 2902, 2902, - 2901, 2894, 2904, 2903, 2905, 2907, 2908, 2897, 2913, 2905, - 2900, 2903, 2910, 2911, 2907, 2914, 2911, 2912, 2910, 2908, - 2916, 2912, 2915, 2915, 2918, 2918, 2913, 2904, 2919, 2914, + 2851, 2852, 2853, 2854, 2850, 2852, 2851, 2853, 2855, 2856, + 2857, 2860, 2854, 2858, 2859, 2861, 2860, 2856, 2864, 2858, + 2859, 2862, 2862, 2855, 2865, 2864, 2868, 2861, 2873, 2865, + 2866, 2857, 2870, 2866, 2871, 2872, 2874, 2870, 2868, 2871, + 2872, 2875, 2876, 2877, 2877, 2878, 2873, 2879, 2882, 2874, + 2875, 2876, 2879, 2883, 2878, 2884, 2887, 2888, 2889, 2883, + 2890, 2884, 2891, 2891, 2892, 2893, 2882, 2895, 2897, 2897, + 2898, 2892, 2896, 2899, 2901, 2887, 2895, 2888, 2889, 2890, + 2903, 2896, 2900, 2900, 2893, 2898, 2905, 2906, 2899, 2907, + 2907, 2906, 2908, 2901, 2909, 2903, 2910, 2911, 2912, 2915, - 2920, 2920, 2921, 2921, 2924, 2916, 2923, 2923, 2924, 2925, - 2926, 2928, 2928, 2930, 2925, 2931, 2919, 2932, 2933, 2926, - 2931, 2936, 2934, 2933, 2933, 2937, 2938, 2938, 2950, 2932, - 2940, 2940, 2948, 2930, 2934, 2941, 2941, 2942, 2942, 2943, - 2944, 2936, 2943, 2945, 2954, 2937, 2947, 2947, 2950, 2956, - 2948, 2951, 2951, 2944, 2952, 2952, 2945, 2953, 2953, 2954, - 2955, 2955, 2956, 2957, 2958, 2959, 2960, 2960, 2961, 2964, - 2968, 2959, 2961, 2973, 2965, 2964, 2969, 2967, 2958, 2965, - 2970, 2957, 2967, 2967, 2971, 2972, 2975, 2975, 2974, 2978, - 2971, 2972, 2974, 2968, 2978, 2980, 2969, 2983, 2973, 2981, + 2909, 2914, 2910, 2918, 2912, 2916, 2905, 2913, 2913, 2914, + 2916, 2924, 2918, 2919, 2921, 2911, 2922, 2908, 2923, 2922, + 2921, 2925, 2923, 2927, 2915, 2930, 2919, 2926, 2926, 2924, + 2929, 2929, 2931, 2931, 2941, 2925, 2932, 2932, 2927, 2934, + 2934, 2935, 2936, 2930, 2937, 2935, 2942, 2936, 2939, 2939, + 2943, 2942, 2944, 2937, 2941, 2945, 2947, 2944, 2944, 2948, + 2949, 2949, 2943, 2951, 2951, 2952, 2952, 2945, 2953, 2953, + 2954, 2955, 2956, 2954, 2958, 2958, 2947, 2959, 2961, 2948, + 2962, 2962, 2963, 2963, 2955, 2956, 2964, 2964, 2965, 2966, + 2966, 2967, 2968, 2969, 2970, 2959, 2971, 2971, 2961, 2979, - 2970, 2984, 2981, 2980, 2984, 2985, 2985, 2986, 2987, 2988, - 2989, 0, 2990, 2987, 2991, 2991, 2995, 2992, 2993, 2994, - 2996, 2993, 2983, 3000, 2986, 2986, 2990, 2988, 2996, 2993, - 2989, 2992, 2998, 2994, 2999, 2995, 3009, 2998, 2998, 2999, - 2999, 3007, 3000, 3001, 3001, 3002, 3002, 3003, 3003, 3004, - 3004, 3005, 3005, 3006, 3006, 3008, 3009, 3007, 3010, 3011, - 3008, 3012, 3013, 3014, 3023, 3015, 3012, 3016, 3014, 3017, - 3018, 3020, 3020, 3011, 3015, 3021, 3021, 3022, 3026, 3023, - 3022, 3013, 3024, 3024, 3010, 3025, 0, 3016, 3029, 3017, - 3018, 3025, 3028, 3028, 3031, 3029, 3026, 3030, 3030, 3031, + 2970, 2972, 2975, 2965, 2967, 2972, 2976, 2969, 2975, 2978, + 2968, 2976, 2980, 2981, 2978, 2978, 2984, 2982, 2983, 2986, + 2986, 2985, 2979, 2982, 2983, 2985, 2989, 2991, 2994, 2996, + 2996, 2989, 2980, 2981, 2992, 2991, 2995, 2992, 2997, 2995, + 2998, 2984, 2999, 3000, 3001, 2998, 3002, 3002, 3003, 3006, + 3005, 3007, 3011, 2994, 3004, 2997, 2997, 3004, 3001, 3007, + 2999, 3009, 3003, 3000, 3005, 3004, 3009, 3009, 3006, 3010, + 3018, 3011, 3012, 3012, 3010, 3010, 3013, 3013, 3014, 3014, + 3015, 3015, 3016, 3016, 3017, 3017, 3018, 3019, 3020, 3021, + 3022, 3023, 3019, 3024, 3025, 0, 3023, 3026, 3027, 3025, - 3033, 3033, 3034, 3035, 3036, 3037, 3039, 3040, 3040, 3041, - 3041, 3034, 3035, 3036, 3037, 3042, 3043, 3044, 3045, 3042, - 3046, 3047, 3048, 3051, 3039, 3043, 3050, 3048, 3048, 3045, - 3052, 3058, 3051, 3056, 3052, 3046, 3044, 3061, 3056, 3050, - 3062, 3047, 3057, 3057, 3063, 3058, 3060, 3060, 3065, 3065, - 3066, 3061, 3067, 3072, 3068, 3073, 3076, 3077, 3067, 3066, - 3073, 3074, 3063, 3077, 3081, 3062, 3068, 3079, 3083, 3084, - 3074, 3085, 3085, 3083, 3084, 3086, 3076, 3088, 3072, 3079, - 3089, 3090, 3088, 3098, 3086, 3081, 3091, 3091, 3093, 3093, - 3091, 3094, 3094, 3089, 3096, 3090, 3095, 3095, 3097, 3099, + 3028, 3029, 3031, 3031, 3022, 3037, 3026, 3034, 3020, 3032, + 3032, 3033, 3024, 3036, 3033, 3021, 3035, 3035, 3027, 3036, + 3028, 3029, 3034, 3037, 3039, 3039, 3040, 3041, 3041, 3042, + 3044, 3044, 3045, 3040, 3042, 3046, 3047, 3048, 3050, 3051, + 3051, 3045, 3052, 3052, 3046, 3047, 3048, 3053, 3054, 3055, + 3056, 3053, 3057, 3058, 3059, 3062, 3050, 3054, 3061, 3059, + 3059, 3056, 3063, 3069, 3062, 3067, 3063, 3057, 3055, 3072, + 3067, 3061, 3073, 3058, 3068, 3068, 3074, 3069, 3071, 3071, + 3076, 3076, 3077, 3072, 3078, 3083, 3079, 3084, 3087, 3088, + 3078, 3077, 3084, 3085, 3074, 3088, 3092, 3073, 3079, 3090, - 3101, 3105, 3098, 3096, 3099, 3102, 3101, 3103, 3104, 3104, - 3102, 3106, 3103, 3107, 3109, 3108, 3110, 3111, 3097, 3105, - 3108, 3118, 3110, 3106, 3112, 3112, 3114, 3122, 3115, 3119, - 3114, 3116, 3109, 3115, 3107, 3120, 3116, 3117, 3117, 3126, - 3118, 3127, 3111, 3128, 3119, 3124, 3124, 3122, 3130, 3129, - 3120, 3131, 3126, 3129, 3127, 3132, 3128, 3130, 3133, 3134, - 3135, 3136, 3136, 3137, 3134, 3138, 3133, 3131, 3139, 3140, - 3140, 3142, 3137, 3145, 3132, 3141, 3141, 3146, 3145, 3145, - 3135, 3148, 3151, 3138, 3149, 3149, 3155, 3148, 3153, 3153, - 3142, 3146, 3156, 3157, 3139, 3158, 3159, 3163, 3157, 3162, + 3094, 3095, 3085, 3096, 3096, 3094, 3095, 3097, 3087, 3099, + 3083, 3090, 3100, 3101, 3099, 3109, 3097, 3092, 3102, 3102, + 3104, 3104, 3102, 3105, 3105, 3100, 3107, 3101, 3106, 3106, + 3108, 3110, 3112, 3116, 3109, 3107, 3110, 3113, 3112, 3114, + 3115, 3115, 3113, 3117, 3114, 3118, 3120, 3119, 3121, 3122, + 3108, 3116, 3119, 3129, 3121, 3117, 3123, 3123, 3125, 3133, + 3126, 3130, 3125, 3127, 3120, 3126, 3118, 3131, 3127, 3128, + 3128, 3137, 3129, 3138, 3122, 3139, 3130, 3135, 3135, 3133, + 3141, 3140, 3131, 3142, 3137, 3140, 3138, 3143, 3139, 3141, + 3144, 3145, 3146, 3147, 3147, 3148, 3145, 3149, 3144, 3142, - 3162, 3159, 3155, 3151, 3164, 3166, 3165, 3168, 3156, 3167, - 3167, 3158, 3165, 3164, 3170, 3170, 3171, 3163, 3172, 3173, - 3173, 3175, 3177, 3178, 3181, 3182, 3168, 3175, 3166, 3178, - 3171, 3179, 3183, 3183, 3184, 3184, 3179, 3172, 3185, 3186, - 3187, 3187, 3177, 3188, 3190, 3193, 3181, 3189, 3192, 3191, - 3194, 3182, 0, 3185, 3188, 3191, 3189, 3193, 3196, 3186, - 3187, 3195, 3195, 3197, 3190, 3198, 3197, 3192, 3198, 3203, - 3194, 3199, 3199, 3196, 3204, 3209, 3205, 3206, 3206, 3208, - 3207, 3203, 3205, 3207, 3211, 3208, 3212, 3212, 3214, 3211, - 3213, 3215, 3216, 3209, 3204, 3213, 3219, 3215, 3217, 3217, + 3150, 3151, 3151, 3153, 3148, 3156, 3143, 3152, 3152, 3157, + 3156, 3156, 3146, 3159, 3162, 3149, 3160, 3160, 3166, 3159, + 3164, 3164, 3153, 3157, 3167, 3168, 3150, 3169, 3170, 3174, + 3168, 3173, 3173, 3170, 3166, 3162, 3175, 3177, 3176, 3179, + 3167, 3178, 3178, 3169, 3176, 3175, 3181, 3181, 3182, 3174, + 3183, 3184, 3184, 3186, 3188, 3189, 3192, 3193, 3179, 3186, + 3177, 3189, 3182, 3190, 3194, 3194, 3195, 3195, 3190, 3183, + 3196, 3197, 3198, 3198, 3188, 3199, 3201, 3204, 3192, 3200, + 3203, 3202, 3205, 3193, 0, 3196, 3199, 3202, 3200, 3204, + 3207, 3197, 3198, 3206, 3206, 3208, 3201, 3209, 3208, 3203, - 3220, 3221, 3222, 3223, 3223, 3224, 3225, 3214, 3219, 3216, - 3216, 3226, 3228, 3228, 3231, 3222, 3229, 3229, 3220, 3231, - 3226, 3232, 3225, 3239, 3224, 3233, 3221, 3230, 3230, 3238, - 3233, 3234, 3234, 3235, 3235, 3232, 3236, 3236, 3237, 3237, - 3240, 3245, 3238, 3241, 3244, 3244, 3240, 3250, 3241, 3239, - 3247, 3247, 3248, 3248, 3252, 3253, 3254, 3245, 3255, 3256, - 3256, 3258, 3258, 3259, 3260, 3261, 3250, 3263, 3268, 3264, - 3265, 3265, 3266, 3266, 3270, 3254, 3252, 3253, 3264, 3261, - 3255, 3271, 3269, 3260, 3276, 3272, 3268, 3263, 3269, 3259, - 3272, 3273, 3277, 3277, 3270, 3281, 3273, 3279, 3279, 3280, + 3209, 3214, 3205, 3210, 3210, 3207, 3215, 3220, 3216, 3217, + 3217, 3219, 3218, 3214, 3216, 3218, 3222, 3219, 3223, 3223, + 3225, 3222, 3224, 3226, 3227, 3220, 3215, 3224, 3230, 3226, + 3228, 3228, 3231, 3232, 3233, 3234, 3234, 3235, 3236, 3225, + 3230, 3227, 3227, 3237, 3239, 3239, 3242, 3233, 3240, 3240, + 3231, 3242, 3237, 3243, 3236, 3250, 3235, 3244, 3232, 3241, + 3241, 3249, 3244, 3245, 3245, 3246, 3246, 3243, 3247, 3247, + 3248, 3248, 3251, 3256, 3249, 3252, 3255, 3255, 3251, 3261, + 3252, 3250, 3258, 3258, 3259, 3259, 3263, 3264, 3265, 3256, + 3266, 3267, 3267, 3269, 3269, 3270, 3271, 3272, 3261, 3274, - 3271, 3282, 3283, 3284, 3280, 3276, 3290, 3282, 3291, 3281, - 3286, 3284, 3285, 3285, 3283, 3286, 3288, 3289, 3292, 3293, - 3288, 3294, 3289, 3292, 3296, 3297, 3290, 3294, 3291, 3298, - 3299, 3293, 3296, 3301, 3305, 3304, 3302, 3303, 3307, 3305, - 3308, 3309, 3312, 3307, 3297, 0, 3314, 3309, 3310, 3298, - 3299, 3301, 3302, 3310, 3303, 3303, 3304, 3327, 3313, 3314, - 3308, 3313, 3312, 3318, 3318, 3319, 3319, 3320, 3325, 3325, - 3326, 3320, 3328, 3328, 3330, 3326, 3327, 3333, 3333, 3334, - 3334, 3338, 3334, 3335, 3335, 3338, 3335, 3336, 3336, 3330, - 3337, 3337, 3340, 3337, 3341, 3342, 3342, 3340, 3343, 3344, + 3279, 3275, 3276, 3276, 3277, 3277, 3281, 3265, 3263, 3264, + 3275, 3272, 3266, 3282, 3280, 3271, 3287, 3283, 3279, 3274, + 3280, 3270, 3283, 3284, 3288, 3288, 3281, 3292, 3284, 3290, + 3290, 3291, 3282, 3293, 3294, 3295, 3291, 3287, 3301, 3293, + 3302, 3292, 3297, 3295, 3296, 3296, 3294, 3297, 3299, 3300, + 3303, 3304, 3299, 3305, 3300, 3303, 3307, 3308, 3301, 3305, + 3302, 3309, 3310, 3304, 3307, 3312, 3316, 3315, 3313, 3314, + 3318, 3316, 3319, 3320, 3323, 3318, 3308, 0, 3325, 3320, + 3321, 3309, 3310, 3312, 3313, 3321, 3314, 3314, 3315, 3338, + 3324, 3325, 3319, 3324, 3323, 3329, 3329, 3330, 3330, 3331, - 3347, 3347, 3348, 3341, 3349, 3350, 3351, 3351, 3352, 3353, - 3350, 3356, 3357, 3344, 3358, 3362, 3343, 3360, 3358, 3357, - 3363, 3359, 3348, 0, 3349, 3363, 3352, 3364, 3364, 3353, - 3359, 3365, 3360, 3362, 3366, 3366, 3356, 3367, 3367, 3369, - 3365, 3368, 3368, 3370, 3371, 3372, 3373, 3374, 3370, 3375, - 3372, 3372, 3373, 3371, 3369, 3376, 3371, 3377, 3378, 3379, - 3380, 3380, 3377, 3378, 3375, 3381, 3385, 3382, 3383, 3383, - 3394, 3381, 3374, 3382, 3384, 3384, 3376, 3386, 3379, 3389, - 3389, 3385, 3386, 3391, 3391, 3392, 3396, 3396, 3394, 3397, - 3397, 3398, 3398, 3405, 3392, 3399, 3399, 3401, 3401, 3402, + 3336, 3336, 3337, 3331, 3339, 3339, 3341, 3337, 3338, 3344, + 3344, 3345, 3345, 3349, 3345, 3346, 3346, 3349, 3346, 3347, + 3347, 3341, 3348, 3348, 3351, 3348, 3352, 3353, 3353, 3351, + 3354, 3355, 3358, 3358, 3359, 3352, 3360, 3361, 3362, 3362, + 3363, 3364, 3361, 3367, 3368, 3355, 3369, 3373, 3354, 3371, + 3369, 3368, 3374, 3370, 3359, 0, 3360, 3374, 3363, 3375, + 3375, 3364, 3370, 3376, 3371, 3373, 3377, 3377, 3367, 3378, + 3378, 3380, 3376, 3379, 3379, 3381, 3382, 3383, 3384, 3385, + 3381, 3386, 3383, 3383, 3384, 3382, 3380, 3387, 3382, 3388, + 3389, 3390, 3391, 3391, 3388, 3389, 3386, 3392, 3396, 3393, - 3402, 3403, 3403, 3404, 3404, 3407, 3408, 3408, 3409, 3409, - 3411, 3410, 3412, 3414, 3407, 3415, 3415, 3416, 3418, 3405, - 3410, 3419, 3411, 3417, 3417, 3420, 3421, 3421, 3414, 3422, - 3422, 3424, 3412, 3418, 3419, 3428, 3416, 3420, 3425, 3425, - 3429, 3430, 3432, 3429, 3431, 3431, 3424, 3434, 3435, 3436, - 3434, 3437, 3438, 3428, 3435, 3439, 3437, 3443, 3440, 3442, - 3432, 3447, 3450, 3436, 3446, 3442, 3443, 3430, 3446, 3451, - 3460, 3438, 3464, 3439, 3440, 3460, 3447, 3461, 3465, 3465, - 3461, 3466, 3466, 3467, 3467, 3464, 3469, 3469, 3450, 3451, - 3471, 3472, 3473, 3476, 3474, 3478, 3473, 3479, 3480, 3481, + 3394, 3394, 3405, 3392, 3385, 3393, 3395, 3395, 3387, 3397, + 3390, 3400, 3400, 3396, 3397, 3402, 3402, 3403, 3407, 3407, + 3405, 3408, 3408, 3409, 3409, 3416, 3403, 3410, 3410, 3412, + 3412, 3413, 3413, 3414, 3414, 3415, 3415, 3418, 3419, 3419, + 3420, 3420, 3422, 3421, 3423, 3425, 3418, 3426, 3426, 3427, + 3429, 3416, 3421, 3430, 3422, 3428, 3428, 3431, 3432, 3432, + 3425, 3433, 3433, 3435, 3423, 3429, 3430, 3439, 3427, 3431, + 3436, 3436, 3440, 3441, 3443, 3440, 3442, 3442, 3435, 3445, + 3446, 3447, 3445, 3448, 3449, 3439, 3446, 3450, 3448, 3454, + 3451, 3453, 3443, 3458, 3461, 3447, 3457, 3453, 3454, 3441, - 3472, 3481, 3482, 3480, 3483, 3483, 3484, 3476, 3479, 3485, - 3487, 3486, 3488, 3471, 3474, 3489, 3490, 3482, 3478, 3484, - 3491, 3493, 3492, 0, 3495, 3490, 3487, 3492, 3485, 3486, - 3489, 3494, 3491, 3496, 3496, 3497, 3494, 3488, 3503, 3498, - 3504, 3506, 3493, 3495, 3498, 3505, 3505, 3507, 3507, 3511, - 3506, 3512, 3503, 3508, 3508, 3497, 3509, 3509, 3510, 3510, - 3504, 3513, 3514, 3516, 3513, 3515, 3517, 3514, 3511, 3518, - 3515, 3512, 3519, 3520, 3521, 3518, 3522, 3522, 3523, 3521, - 3528, 3517, 3524, 3524, 3529, 3520, 3519, 3532, 3516, 3525, - 3525, 3527, 3527, 3530, 3530, 3528, 3534, 3540, 3523, 3537, + 3457, 3462, 3471, 3449, 3475, 3450, 3451, 3471, 3458, 3472, + 3476, 3476, 3472, 3477, 3477, 3478, 3478, 3475, 3480, 3480, + 3461, 3462, 3482, 3483, 3484, 3487, 3485, 3489, 3484, 3490, + 3491, 3495, 3483, 3493, 3496, 3491, 3494, 3494, 3497, 3487, + 3490, 3498, 3499, 3500, 3495, 3482, 3485, 3502, 3493, 3503, + 3489, 3501, 3504, 3496, 3503, 3506, 3497, 3498, 3500, 3502, + 3501, 3505, 3507, 3507, 3508, 3509, 3505, 3499, 3514, 3515, + 3509, 3516, 3516, 3504, 3506, 3522, 3517, 3518, 3518, 3519, + 3519, 3523, 3514, 3525, 3508, 3517, 3520, 3520, 3525, 3515, + 3521, 3521, 3524, 3526, 3522, 3524, 3527, 3528, 3526, 3529, - 3537, 3539, 3532, 3529, 3538, 3538, 3541, 3542, 3543, 3539, - 3544, 3545, 3541, 3542, 3534, 3546, 3540, 3547, 3547, 3553, - 3546, 3554, 3543, 3544, 3549, 3549, 3559, 3557, 3556, 3560, - 3545, 3557, 3561, 3564, 3560, 3562, 3563, 3570, 3565, 3566, - 3553, 3554, 3556, 3565, 3566, 3571, 3559, 3572, 3562, 3563, - 0, 3561, 3564, 3567, 3567, 3573, 3573, 3570, 3580, 3574, - 3577, 3575, 0, 3571, 3574, 3577, 3572, 3575, 3576, 3576, - 3578, 3579, 3581, 3583, 3583, 3578, 3579, 3580, 3581, 3584, - 3585, 3585, 3587, 3588, 3584, 3589, 3587, 3590, 3591, 3592, - 3593, 3594, 3589, 3596, 3596, 3592, 3598, 3598, 3600, 3599, + 3530, 3523, 3532, 3531, 3534, 3529, 3540, 3532, 3533, 3533, + 3535, 3535, 3528, 3539, 3530, 3531, 3536, 3536, 3538, 3538, + 3543, 3527, 3541, 3541, 3534, 3540, 3545, 3551, 3539, 3548, + 3548, 3549, 3549, 3550, 3552, 3543, 3553, 3554, 3556, 3555, + 3552, 3550, 3553, 3557, 3545, 3564, 3551, 3565, 3557, 3558, + 3558, 3554, 3555, 3560, 3560, 3567, 3568, 3556, 3570, 3571, + 3568, 3572, 3573, 3574, 3571, 3575, 3564, 3565, 3576, 3567, + 3578, 3578, 3577, 3576, 3581, 3573, 3574, 3577, 3570, 3582, + 3572, 3583, 3584, 3584, 3575, 3585, 3586, 3587, 3587, 3591, + 3585, 3588, 3586, 3589, 3581, 3592, 3588, 3582, 3589, 3590, - 3601, 3602, 3588, 3600, 3594, 3603, 3590, 3591, 3599, 3593, - 3605, 3599, 3604, 3604, 3606, 3605, 3608, 3610, 3603, 3601, - 3602, 3609, 3609, 3611, 3611, 3612, 3612, 3606, 3613, 3615, - 3614, 3616, 3616, 3613, 3617, 3622, 3610, 3614, 3618, 3617, - 3618, 3624, 3608, 3619, 3619, 3620, 3621, 3627, 3615, 3631, - 3623, 3632, 3620, 3621, 3622, 3623, 3626, 3626, 3629, 3630, - 3624, 3633, 3633, 3629, 3630, 3636, 3627, 3637, 3631, 0, - 3632, 3635, 3635, 3638, 3638, 3639, 3639, 3650, 3640, 3642, - 3642, 3643, 3643, 3644, 3636, 3640, 3637, 3646, 3649, 3651, - 3644, 0, 3646, 3649, 3652, 3652, 3650, 3653, 3653, 0, + 3583, 3592, 3594, 3594, 3590, 3595, 3596, 3596, 3591, 3598, + 3595, 3599, 3600, 3598, 3601, 3602, 3603, 3604, 3605, 3600, + 3607, 3607, 3603, 3609, 3609, 3612, 3610, 3611, 3613, 3614, + 3599, 3605, 3611, 3601, 3602, 3610, 3604, 3617, 3610, 3615, + 3615, 3616, 3614, 3619, 3612, 3621, 3616, 3613, 3620, 3620, + 3617, 3622, 3622, 3623, 3623, 3624, 3625, 3626, 3627, 3627, + 3624, 3628, 3633, 3625, 3621, 3629, 3628, 3629, 3631, 3619, + 3630, 3630, 3632, 3634, 3635, 3631, 3626, 3638, 3634, 3632, + 3640, 3633, 3637, 3637, 3641, 3640, 3642, 3643, 3647, 3641, + 3644, 3644, 3648, 3635, 3646, 3646, 3638, 3649, 3649, 3650, - 0, 0, 0, 0, 0, 0, 0, 0, 3651, 3657, - 3657, 3657, 3657, 3657, 3657, 3657, 3658, 3658, 3658, 3658, - 3658, 3658, 3658, 3659, 3659, 3659, 3659, 3659, 3659, 3659, - 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3661, 3661, 3661, - 3661, 3661, 3661, 3661, 3662, 3662, 3662, 3662, 3662, 3662, - 3662, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3665, 3665, - 0, 3665, 3665, 3665, 3665, 3666, 3666, 0, 0, 0, - 3666, 3666, 3667, 3667, 0, 0, 3667, 0, 3667, 3668, - 0, 0, 0, 0, 0, 3668, 3669, 3669, 0, 0, - 0, 3669, 3669, 3670, 0, 0, 0, 0, 0, 3670, + 3650, 3651, 3653, 3653, 3661, 3642, 3643, 3647, 3651, 3654, + 3654, 3648, 3655, 3657, 3662, 3660, 3663, 3663, 3657, 3655, + 3660, 3664, 3664, 3661, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3662, 3668, 3668, 3668, 3668, 3668, 3668, + 3668, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3671, 3671, 3671, 3671, 3671, + 3671, 3671, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3673, + 3673, 3673, 3673, 3673, 3673, 3673, 3674, 3674, 3674, 3674, + 3674, 3674, 3674, 3676, 3676, 0, 3676, 3676, 3676, 3676, + 3677, 3677, 0, 0, 0, 3677, 3677, 3678, 3678, 0, + + 0, 3678, 0, 3678, 3679, 0, 0, 0, 0, 0, + 3679, 3680, 3680, 0, 0, 0, 3680, 3680, 3681, 0, + 0, 0, 0, 0, 3681, 3682, 3682, 0, 3682, 3682, + 3682, 3682, 3683, 0, 0, 0, 0, 0, 3683, 3684, + 3684, 0, 0, 0, 3684, 3684, 3685, 3685, 0, 3685, + 3685, 3685, 3685, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667 - 3671, 3671, 0, 3671, 3671, 3671, 3671, 3672, 0, 0, - 0, 0, 0, 3672, 3673, 3673, 0, 0, 0, 3673, - 3673, 3674, 3674, 0, 3674, 3674, 3674, 3674, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656 } ; static yy_state_type yy_last_accepting_state; @@ -3412,7 +3423,7 @@ static void config_end_include(void) } #endif -#line 3413 "" +#line 3424 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3421,9 +3432,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3422 "" +#line 3433 "" -#line 3424 "" +#line 3435 "" #define INITIAL 0 #define quotedstring 1 @@ -3647,7 +3658,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3648 "" +#line 3659 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3680,13 +3691,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 >= 3657 ) + if ( yy_current_state >= 3668 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 7129 ); + while ( yy_base[yy_current_state] != 7154 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5195,17 +5206,17 @@ YY_RULE_SETUP case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_MAX_SENT_COUNT) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 298: YY_RULE_SETUP @@ -5220,119 +5231,119 @@ YY_RULE_SETUP case 300: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 301: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 302: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 303: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 304: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 305: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 306: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 307: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 308: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 309: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 310: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 311: YY_RULE_SETUP -#line 535 "./util/configlexer.lex" +#line 534 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 312: YY_RULE_SETUP -#line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 536 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 323: YY_RULE_SETUP @@ -5342,128 +5353,133 @@ YY_RULE_SETUP case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 330: YY_RULE_SETUP #line 555 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 331: YY_RULE_SETUP #line 556 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 332: YY_RULE_SETUP #line 557 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 333: YY_RULE_SETUP #line 558 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_NSID ) } YY_BREAK case 341: YY_RULE_SETUP #line 566 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDE ) } YY_BREAK case 342: -/* rule 342 can match eol */ YY_RULE_SETUP #line 567 "./util/configlexer.lex" +{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } + YY_BREAK +case 343: +/* rule 343 can match eol */ +YY_RULE_SETUP +#line 568 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 343: +case 344: YY_RULE_SETUP -#line 570 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 344: -YY_RULE_SETUP -#line 576 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 345: -/* rule 345 can match eol */ YY_RULE_SETUP #line 577 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 346: +/* rule 346 can match eol */ +YY_RULE_SETUP +#line 578 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 346: +case 347: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5476,34 +5492,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 347: +case 348: YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 592 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 592 "./util/configlexer.lex" +#line 593 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 348: -YY_RULE_SETUP -#line 597 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 349: -/* rule 349 can match eol */ YY_RULE_SETUP #line 598 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 350: +/* rule 350 can match eol */ +YY_RULE_SETUP +#line 599 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 350: +case 351: YY_RULE_SETUP -#line 600 "./util/configlexer.lex" +#line 601 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5516,38 +5532,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 351: +case 352: YY_RULE_SETUP -#line 612 "./util/configlexer.lex" +#line 613 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 614 "./util/configlexer.lex" +#line 615 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 352: -YY_RULE_SETUP -#line 618 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 353: -/* rule 353 can match eol */ YY_RULE_SETUP #line 619 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 354: +/* rule 354 can match eol */ YY_RULE_SETUP #line 620 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 355: YY_RULE_SETUP #line 621 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 356: +YY_RULE_SETUP +#line 622 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5555,27 +5571,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 626 "./util/configlexer.lex" +#line 627 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 356: -YY_RULE_SETUP -#line 630 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 357: -/* rule 357 can match eol */ YY_RULE_SETUP #line 631 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 358: +/* rule 358 can match eol */ +YY_RULE_SETUP +#line 632 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 358: +case 359: YY_RULE_SETUP -#line 633 "./util/configlexer.lex" +#line 634 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5585,7 +5601,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 639 "./util/configlexer.lex" +#line 640 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5600,39 +5616,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 359: +case 360: YY_RULE_SETUP -#line 653 "./util/configlexer.lex" +#line 654 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 656 "./util/configlexer.lex" +#line 657 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 360: -YY_RULE_SETUP -#line 660 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 361: -/* rule 361 can match eol */ YY_RULE_SETUP #line 661 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 362: +/* rule 362 can match eol */ YY_RULE_SETUP #line 662 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 363: YY_RULE_SETUP #line 663 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 364: +YY_RULE_SETUP +#line 664 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5641,29 +5657,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 669 "./util/configlexer.lex" +#line 670 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 364: -YY_RULE_SETUP -#line 673 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 365: -/* rule 365 can match eol */ YY_RULE_SETUP #line 674 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 366: +/* rule 366 can match eol */ +YY_RULE_SETUP +#line 675 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 366: +case 367: YY_RULE_SETUP -#line 678 "./util/configlexer.lex" +#line 679 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5672,33 +5688,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 367: +case 368: YY_RULE_SETUP -#line 686 "./util/configlexer.lex" +#line 687 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 368: +case 369: YY_RULE_SETUP -#line 690 "./util/configlexer.lex" +#line 691 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 369: +case 370: YY_RULE_SETUP -#line 694 "./util/configlexer.lex" +#line 695 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 370: +case 371: YY_RULE_SETUP -#line 698 "./util/configlexer.lex" +#line 699 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5699 "" +#line 5715 "" case YY_END_OF_BUFFER: { @@ -5993,7 +6009,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 >= 3657 ) + if ( yy_current_state >= 3668 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6021,11 +6037,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 >= 3657 ) + if ( yy_current_state >= 3668 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3656); + yy_is_jam = (yy_current_state == 3667); return yy_is_jam ? 0 : yy_current_state; } @@ -6664,6 +6680,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 698 "./util/configlexer.lex" +#line 699 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 9b7c27b5f..8bd565933 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -515,6 +515,7 @@ ratelimit-factor{COLON} { YDVAR(1, VAR_RATELIMIT_FACTOR) } ip-ratelimit-backoff{COLON} { YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } ratelimit-backoff{COLON} { YDVAR(1, VAR_RATELIMIT_BACKOFF) } outbound-msg-retry{COLON} { YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +max-sent-count{COLON} { YDVAR(1, VAR_MAX_SENT_COUNT) } low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) } fast-server-num{COLON} { YDVAR(1, VAR_FAST_SERVER_NUM) } low-rtt-pct{COLON} { YDVAR(1, VAR_FAST_SERVER_PERMIL) } diff --git a/util/configparser.c b/util/configparser.c index 65252cbb7..638beae35 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -328,498 +328,500 @@ enum yysymbol_kind_t YYSYMBOL_VAR_RATELIMIT_SLABS = 200, /* VAR_RATELIMIT_SLABS */ YYSYMBOL_VAR_RATELIMIT_SIZE = 201, /* VAR_RATELIMIT_SIZE */ YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 202, /* VAR_OUTBOUND_MSG_RETRY */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 203, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 204, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 205, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 206, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 207, /* VAR_IP_RATELIMIT_BACKOFF */ - YYSYMBOL_VAR_RATELIMIT_BACKOFF = 208, /* VAR_RATELIMIT_BACKOFF */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 209, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 210, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 211, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 212, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 213, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 214, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 215, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 216, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 217, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 218, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 219, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 220, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 221, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 222, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 223, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 224, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 225, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 226, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 227, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 228, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 229, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 230, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 231, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 232, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 233, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 234, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 235, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 236, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 237, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 238, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 239, /* VAR_EDE_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 240, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 241, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 242, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 243, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 244, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 245, /* VAR_HIDE_HTTP_USER_AGENT */ - YYSYMBOL_VAR_HTTP_USER_AGENT = 246, /* VAR_HTTP_USER_AGENT */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 247, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 248, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 249, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 250, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 251, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 252, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 253, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 254, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 255, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 256, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 257, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 258, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 259, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 260, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 261, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 262, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 263, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 264, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 265, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 266, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 267, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 268, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 269, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 270, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 271, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 272, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 273, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 274, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 275, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 276, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 277, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 278, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 279, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 280, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 281, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 282, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 283, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 284, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 285, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 286, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 287, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 288, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 289, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 290, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 291, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 292, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 293, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 294, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 295, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 296, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 297, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 298, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 299, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 300, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 301, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 302, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 303, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 304, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 305, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 306, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 307, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 308, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 309, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 310, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 311, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 312, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 313, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 314, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 315, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 316, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 317, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 318, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 319, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 320, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 321, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 322, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 323, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 324, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 325, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 326, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - YYSYMBOL_VAR_EDE = 327, /* VAR_EDE */ - YYSYMBOL_VAR_INTERFACE_ACTION = 328, /* VAR_INTERFACE_ACTION */ - YYSYMBOL_VAR_INTERFACE_VIEW = 329, /* VAR_INTERFACE_VIEW */ - YYSYMBOL_VAR_INTERFACE_TAG = 330, /* VAR_INTERFACE_TAG */ - YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 331, /* VAR_INTERFACE_TAG_ACTION */ - YYSYMBOL_VAR_INTERFACE_TAG_DATA = 332, /* VAR_INTERFACE_TAG_DATA */ - YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 333, /* VAR_PROXY_PROTOCOL_PORT */ - YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 334, /* VAR_STATISTICS_INHIBIT_ZERO */ - YYSYMBOL_YYACCEPT = 335, /* $accept */ - YYSYMBOL_toplevelvars = 336, /* toplevelvars */ - YYSYMBOL_toplevelvar = 337, /* toplevelvar */ - YYSYMBOL_force_toplevel = 338, /* force_toplevel */ - YYSYMBOL_serverstart = 339, /* serverstart */ - YYSYMBOL_contents_server = 340, /* contents_server */ - YYSYMBOL_content_server = 341, /* content_server */ - YYSYMBOL_stubstart = 342, /* stubstart */ - YYSYMBOL_contents_stub = 343, /* contents_stub */ - YYSYMBOL_content_stub = 344, /* content_stub */ - YYSYMBOL_forwardstart = 345, /* forwardstart */ - YYSYMBOL_contents_forward = 346, /* contents_forward */ - YYSYMBOL_content_forward = 347, /* content_forward */ - YYSYMBOL_viewstart = 348, /* viewstart */ - YYSYMBOL_contents_view = 349, /* contents_view */ - YYSYMBOL_content_view = 350, /* content_view */ - YYSYMBOL_authstart = 351, /* authstart */ - YYSYMBOL_contents_auth = 352, /* contents_auth */ - YYSYMBOL_content_auth = 353, /* content_auth */ - YYSYMBOL_rpz_tag = 354, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 355, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 356, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 357, /* rpz_log */ - YYSYMBOL_rpz_log_name = 358, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 359, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 360, /* rpzstart */ - YYSYMBOL_contents_rpz = 361, /* contents_rpz */ - YYSYMBOL_content_rpz = 362, /* content_rpz */ - YYSYMBOL_server_num_threads = 363, /* server_num_threads */ - YYSYMBOL_server_verbosity = 364, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 365, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 366, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 367, /* server_extended_statistics */ - YYSYMBOL_server_statistics_inhibit_zero = 368, /* server_statistics_inhibit_zero */ - YYSYMBOL_server_shm_enable = 369, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 370, /* server_shm_key */ - YYSYMBOL_server_port = 371, /* server_port */ - YYSYMBOL_server_send_client_subnet = 372, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 373, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 374, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 375, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 376, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 377, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 378, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 379, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 380, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 381, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 382, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 383, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 384, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 385, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 386, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 387, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 388, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 389, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 390, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 391, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 392, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 393, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 394, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 395, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 396, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 397, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 398, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 399, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 400, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 401, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 402, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 403, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 404, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 405, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 406, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 407, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 408, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 409, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 410, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 411, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 412, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 413, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 414, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 415, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 416, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 417, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 418, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 419, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 420, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 421, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 422, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 423, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 424, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 425, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 426, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 427, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 428, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 429, /* server_log_queries */ - YYSYMBOL_server_log_replies = 430, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 431, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 432, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 433, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 434, /* server_chroot */ - YYSYMBOL_server_username = 435, /* server_username */ - YYSYMBOL_server_directory = 436, /* server_directory */ - YYSYMBOL_server_logfile = 437, /* server_logfile */ - YYSYMBOL_server_pidfile = 438, /* server_pidfile */ - YYSYMBOL_server_root_hints = 439, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 440, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 441, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 442, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 443, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 444, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 445, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 446, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 447, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 448, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 449, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 450, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 451, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 452, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 453, /* server_identity */ - YYSYMBOL_server_version = 454, /* server_version */ - YYSYMBOL_server_http_user_agent = 455, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 456, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 457, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 458, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 459, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 460, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 461, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 462, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 463, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 464, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 465, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 466, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 467, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 468, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 469, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 470, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 471, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 472, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 473, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 474, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 475, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 476, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 477, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 478, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 479, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 480, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 481, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 482, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 483, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 484, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 485, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 486, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 487, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 488, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 489, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 490, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 491, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 492, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 493, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 494, /* server_private_address */ - YYSYMBOL_server_private_domain = 495, /* server_private_domain */ - YYSYMBOL_server_prefetch = 496, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 497, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 498, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 499, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 500, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 501, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 502, /* server_access_control */ - YYSYMBOL_server_interface_action = 503, /* server_interface_action */ - YYSYMBOL_server_module_conf = 504, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 505, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 506, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 507, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 508, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 509, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 510, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 511, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 512, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 513, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 514, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 515, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 516, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 517, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 518, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 519, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 520, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 521, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 522, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 523, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 524, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 525, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 526, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 527, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 528, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 529, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 530, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 531, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 532, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 533, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 534, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 535, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 536, /* server_local_zone */ - YYSYMBOL_server_local_data = 537, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 538, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 539, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 540, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 541, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 542, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 543, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 544, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 545, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 546, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 547, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 548, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 549, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 550, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 551, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 552, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 553, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 554, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 555, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 556, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 557, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 558, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 559, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 560, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 561, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 562, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 563, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 564, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 565, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 566, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 567, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 568, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 569, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 570, /* server_outbound_msg_retry */ - YYSYMBOL_server_low_rtt = 571, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 572, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 573, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 574, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 575, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 576, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 577, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 578, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 579, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 580, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 581, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 582, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 583, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 584, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 585, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 586, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 587, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 588, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 589, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 590, /* stub_name */ - YYSYMBOL_stub_host = 591, /* stub_host */ - YYSYMBOL_stub_addr = 592, /* stub_addr */ - YYSYMBOL_stub_first = 593, /* stub_first */ - YYSYMBOL_stub_no_cache = 594, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 595, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 596, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 597, /* stub_prime */ - YYSYMBOL_forward_name = 598, /* forward_name */ - YYSYMBOL_forward_host = 599, /* forward_host */ - YYSYMBOL_forward_addr = 600, /* forward_addr */ - YYSYMBOL_forward_first = 601, /* forward_first */ - YYSYMBOL_forward_no_cache = 602, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 603, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 604, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 605, /* auth_name */ - YYSYMBOL_auth_zonefile = 606, /* auth_zonefile */ - YYSYMBOL_auth_master = 607, /* auth_master */ - YYSYMBOL_auth_url = 608, /* auth_url */ - YYSYMBOL_auth_allow_notify = 609, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 610, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 611, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 612, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 613, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 614, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 615, /* view_name */ - YYSYMBOL_view_local_zone = 616, /* view_local_zone */ - YYSYMBOL_view_response_ip = 617, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 618, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 619, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 620, /* view_local_data_ptr */ - YYSYMBOL_view_first = 621, /* view_first */ - YYSYMBOL_rcstart = 622, /* rcstart */ - YYSYMBOL_contents_rc = 623, /* contents_rc */ - YYSYMBOL_content_rc = 624, /* content_rc */ - YYSYMBOL_rc_control_enable = 625, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 626, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 627, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 628, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 629, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 630, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 631, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 632, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 633, /* dtstart */ - YYSYMBOL_contents_dt = 634, /* contents_dt */ - YYSYMBOL_content_dt = 635, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 636, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 637, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 638, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 639, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 640, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 641, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 642, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 643, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 644, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 645, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 646, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 647, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 648, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 649, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 650, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 651, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 652, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 653, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 654, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 655, /* pythonstart */ - YYSYMBOL_contents_py = 656, /* contents_py */ - YYSYMBOL_content_py = 657, /* content_py */ - YYSYMBOL_py_script = 658, /* py_script */ - YYSYMBOL_dynlibstart = 659, /* dynlibstart */ - YYSYMBOL_contents_dl = 660, /* contents_dl */ - YYSYMBOL_content_dl = 661, /* content_dl */ - YYSYMBOL_dl_file = 662, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 663, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 664, /* server_log_identity */ - YYSYMBOL_server_response_ip = 665, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 666, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 667, /* dnscstart */ - YYSYMBOL_contents_dnsc = 668, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 669, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 670, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 671, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 672, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 673, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 674, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 675, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 676, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 677, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 678, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 679, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 680, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 681, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 682, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 683, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 684, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 685, /* redis_server_host */ - YYSYMBOL_redis_server_port = 686, /* redis_server_port */ - YYSYMBOL_redis_timeout = 687, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 688, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 689, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 690, /* ipsetstart */ - YYSYMBOL_contents_ipset = 691, /* contents_ipset */ - YYSYMBOL_content_ipset = 692, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 693, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 694 /* ipset_name_v6 */ + YYSYMBOL_VAR_MAX_SENT_COUNT = 203, /* VAR_MAX_SENT_COUNT */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 204, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 205, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 206, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 207, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 208, /* VAR_IP_RATELIMIT_BACKOFF */ + YYSYMBOL_VAR_RATELIMIT_BACKOFF = 209, /* VAR_RATELIMIT_BACKOFF */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 210, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 211, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 212, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 213, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 214, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 215, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 216, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 217, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 218, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 219, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 220, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 221, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 222, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 223, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 224, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 225, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 226, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 227, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 228, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 229, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 230, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 231, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 232, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 233, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 234, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 235, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 236, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 237, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 238, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 239, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 240, /* VAR_EDE_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 241, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 242, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 243, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 244, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 245, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 246, /* VAR_HIDE_HTTP_USER_AGENT */ + YYSYMBOL_VAR_HTTP_USER_AGENT = 247, /* VAR_HTTP_USER_AGENT */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 248, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 249, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 250, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 251, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 252, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 253, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 254, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 255, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 256, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 257, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 258, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 259, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 260, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 261, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 262, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 263, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 264, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 265, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 266, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 267, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 268, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 269, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 270, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 271, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 272, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 273, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 274, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 275, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 276, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 277, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 278, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 279, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 280, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 281, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 282, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 283, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 284, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 285, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 286, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 287, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 288, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 289, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 290, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 291, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 292, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 293, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 294, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 295, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 296, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 297, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 298, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 299, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 300, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 301, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 302, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 303, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 304, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 305, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 306, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 307, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 308, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 309, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 310, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 311, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 312, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 313, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 314, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 315, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 316, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 317, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 318, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 319, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 320, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 321, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 322, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 323, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 324, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 325, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 326, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 327, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + YYSYMBOL_VAR_EDE = 328, /* VAR_EDE */ + YYSYMBOL_VAR_INTERFACE_ACTION = 329, /* VAR_INTERFACE_ACTION */ + YYSYMBOL_VAR_INTERFACE_VIEW = 330, /* VAR_INTERFACE_VIEW */ + YYSYMBOL_VAR_INTERFACE_TAG = 331, /* VAR_INTERFACE_TAG */ + YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 332, /* VAR_INTERFACE_TAG_ACTION */ + YYSYMBOL_VAR_INTERFACE_TAG_DATA = 333, /* VAR_INTERFACE_TAG_DATA */ + YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 334, /* VAR_PROXY_PROTOCOL_PORT */ + YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 335, /* VAR_STATISTICS_INHIBIT_ZERO */ + YYSYMBOL_YYACCEPT = 336, /* $accept */ + YYSYMBOL_toplevelvars = 337, /* toplevelvars */ + YYSYMBOL_toplevelvar = 338, /* toplevelvar */ + YYSYMBOL_force_toplevel = 339, /* force_toplevel */ + YYSYMBOL_serverstart = 340, /* serverstart */ + YYSYMBOL_contents_server = 341, /* contents_server */ + YYSYMBOL_content_server = 342, /* content_server */ + YYSYMBOL_stubstart = 343, /* stubstart */ + YYSYMBOL_contents_stub = 344, /* contents_stub */ + YYSYMBOL_content_stub = 345, /* content_stub */ + YYSYMBOL_forwardstart = 346, /* forwardstart */ + YYSYMBOL_contents_forward = 347, /* contents_forward */ + YYSYMBOL_content_forward = 348, /* content_forward */ + YYSYMBOL_viewstart = 349, /* viewstart */ + YYSYMBOL_contents_view = 350, /* contents_view */ + YYSYMBOL_content_view = 351, /* content_view */ + YYSYMBOL_authstart = 352, /* authstart */ + YYSYMBOL_contents_auth = 353, /* contents_auth */ + YYSYMBOL_content_auth = 354, /* content_auth */ + YYSYMBOL_rpz_tag = 355, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 356, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 357, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 358, /* rpz_log */ + YYSYMBOL_rpz_log_name = 359, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 360, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 361, /* rpzstart */ + YYSYMBOL_contents_rpz = 362, /* contents_rpz */ + YYSYMBOL_content_rpz = 363, /* content_rpz */ + YYSYMBOL_server_num_threads = 364, /* server_num_threads */ + YYSYMBOL_server_verbosity = 365, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 366, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 367, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 368, /* server_extended_statistics */ + YYSYMBOL_server_statistics_inhibit_zero = 369, /* server_statistics_inhibit_zero */ + YYSYMBOL_server_shm_enable = 370, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 371, /* server_shm_key */ + YYSYMBOL_server_port = 372, /* server_port */ + YYSYMBOL_server_send_client_subnet = 373, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 374, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 375, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 376, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 377, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 378, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 379, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 380, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 381, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 382, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 383, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 384, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 385, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 386, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 387, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 388, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 389, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 390, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 391, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 392, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 393, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 394, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 395, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 396, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 397, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 398, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 399, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 400, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 401, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 402, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 403, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 404, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 405, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 406, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 407, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 408, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 409, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 410, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 411, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 412, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 413, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 414, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 415, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 416, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 417, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 418, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 419, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 420, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 421, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 422, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 423, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 424, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 425, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 426, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 427, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 428, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 429, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 430, /* server_log_queries */ + YYSYMBOL_server_log_replies = 431, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 432, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 433, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 434, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 435, /* server_chroot */ + YYSYMBOL_server_username = 436, /* server_username */ + YYSYMBOL_server_directory = 437, /* server_directory */ + YYSYMBOL_server_logfile = 438, /* server_logfile */ + YYSYMBOL_server_pidfile = 439, /* server_pidfile */ + YYSYMBOL_server_root_hints = 440, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 441, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 442, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 443, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 444, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 445, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 446, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 447, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 448, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 449, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 450, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 451, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 452, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 453, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 454, /* server_identity */ + YYSYMBOL_server_version = 455, /* server_version */ + YYSYMBOL_server_http_user_agent = 456, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 457, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 458, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 459, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 460, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 461, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 462, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 463, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 464, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 465, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 466, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 467, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 468, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 469, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 470, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 471, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 472, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 473, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 474, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 475, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 476, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 477, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 478, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 479, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 480, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 481, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 482, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 483, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 484, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 485, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 486, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 487, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 488, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 489, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 490, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 491, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 492, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 493, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 494, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 495, /* server_private_address */ + YYSYMBOL_server_private_domain = 496, /* server_private_domain */ + YYSYMBOL_server_prefetch = 497, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 498, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 499, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 500, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 501, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 502, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 503, /* server_access_control */ + YYSYMBOL_server_interface_action = 504, /* server_interface_action */ + YYSYMBOL_server_module_conf = 505, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 506, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 507, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 508, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 509, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 510, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 511, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 512, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 513, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 514, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 515, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 516, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 517, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 518, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 519, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 520, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 521, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 522, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 523, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 524, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 525, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 526, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 527, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 528, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 529, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 530, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 531, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 532, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 533, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 534, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 535, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 536, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 537, /* server_local_zone */ + YYSYMBOL_server_local_data = 538, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 539, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 540, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 541, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 542, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 543, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 544, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 545, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 546, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 547, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 548, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 549, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 550, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 551, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 552, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 553, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 554, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 555, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 556, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 557, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 558, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 559, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 560, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 561, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 562, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 563, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 564, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 565, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 566, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 567, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 568, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 569, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 570, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 571, /* server_outbound_msg_retry */ + YYSYMBOL_server_max_sent_count = 572, /* server_max_sent_count */ + YYSYMBOL_server_low_rtt = 573, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 574, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 575, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 576, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 577, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 578, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 579, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 580, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 581, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 582, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 583, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 584, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 585, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 586, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 587, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 588, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 589, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 590, /* server_ede */ + YYSYMBOL_server_proxy_protocol_port = 591, /* server_proxy_protocol_port */ + YYSYMBOL_stub_name = 592, /* stub_name */ + YYSYMBOL_stub_host = 593, /* stub_host */ + YYSYMBOL_stub_addr = 594, /* stub_addr */ + YYSYMBOL_stub_first = 595, /* stub_first */ + YYSYMBOL_stub_no_cache = 596, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 597, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 598, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 599, /* stub_prime */ + YYSYMBOL_forward_name = 600, /* forward_name */ + YYSYMBOL_forward_host = 601, /* forward_host */ + YYSYMBOL_forward_addr = 602, /* forward_addr */ + YYSYMBOL_forward_first = 603, /* forward_first */ + YYSYMBOL_forward_no_cache = 604, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 605, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 606, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 607, /* auth_name */ + YYSYMBOL_auth_zonefile = 608, /* auth_zonefile */ + YYSYMBOL_auth_master = 609, /* auth_master */ + YYSYMBOL_auth_url = 610, /* auth_url */ + YYSYMBOL_auth_allow_notify = 611, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 612, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 613, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 614, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 615, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 616, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 617, /* view_name */ + YYSYMBOL_view_local_zone = 618, /* view_local_zone */ + YYSYMBOL_view_response_ip = 619, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 620, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 621, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 622, /* view_local_data_ptr */ + YYSYMBOL_view_first = 623, /* view_first */ + YYSYMBOL_rcstart = 624, /* rcstart */ + YYSYMBOL_contents_rc = 625, /* contents_rc */ + YYSYMBOL_content_rc = 626, /* content_rc */ + YYSYMBOL_rc_control_enable = 627, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 628, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 629, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 630, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 631, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 632, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 633, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 634, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 635, /* dtstart */ + YYSYMBOL_contents_dt = 636, /* contents_dt */ + YYSYMBOL_content_dt = 637, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 638, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 639, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 640, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 641, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 642, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 643, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 644, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 645, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 646, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 647, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 648, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 649, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 650, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 651, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 652, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 653, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 654, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 655, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 656, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 657, /* pythonstart */ + YYSYMBOL_contents_py = 658, /* contents_py */ + YYSYMBOL_content_py = 659, /* content_py */ + YYSYMBOL_py_script = 660, /* py_script */ + YYSYMBOL_dynlibstart = 661, /* dynlibstart */ + YYSYMBOL_contents_dl = 662, /* contents_dl */ + YYSYMBOL_content_dl = 663, /* content_dl */ + YYSYMBOL_dl_file = 664, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 665, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 666, /* server_log_identity */ + YYSYMBOL_server_response_ip = 667, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 668, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 669, /* dnscstart */ + YYSYMBOL_contents_dnsc = 670, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 671, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 672, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 673, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 674, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 675, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 676, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 677, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 678, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 679, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 680, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 681, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 682, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 683, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 684, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 685, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 686, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 687, /* redis_server_host */ + YYSYMBOL_redis_server_port = 688, /* redis_server_port */ + YYSYMBOL_redis_timeout = 689, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 690, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 691, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 692, /* ipsetstart */ + YYSYMBOL_contents_ipset = 693, /* contents_ipset */ + YYSYMBOL_content_ipset = 694, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 695, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 696 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1147,19 +1149,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 715 +#define YYLAST 717 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 335 +#define YYNTOKENS 336 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 360 +#define YYNNTS 361 /* YYNRULES -- Number of rules. */ -#define YYNRULES 697 +#define YYNRULES 699 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1043 +#define YYNSTATES 1046 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 589 +#define YYMAXUTOK 590 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1231,7 +1233,8 @@ static const yytype_int16 yytranslate[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334 + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335 }; #if YYDEBUG @@ -1254,60 +1257,60 @@ static const yytype_int16 yyrline[] = 269, 269, 269, 270, 270, 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, 275, 275, 275, 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, 280, 280, - 281, 282, 282, 283, 283, 284, 284, 285, 285, 286, - 286, 287, 287, 288, 288, 289, 289, 290, 290, 291, - 291, 292, 292, 292, 293, 293, 294, 294, 295, 295, - 296, 296, 296, 297, 297, 298, 299, 299, 300, 300, - 301, 302, 302, 303, 303, 304, 304, 304, 305, 305, - 306, 306, 306, 307, 307, 307, 308, 308, 309, 310, - 310, 311, 311, 312, 312, 313, 313, 314, 314, 314, - 315, 315, 315, 316, 316, 316, 317, 317, 318, 318, - 319, 319, 320, 320, 321, 321, 322, 322, 323, 323, - 324, 324, 325, 325, 327, 341, 342, 343, 343, 343, - 343, 343, 344, 344, 344, 346, 360, 361, 362, 362, - 362, 362, 363, 363, 363, 365, 381, 382, 383, 383, - 383, 383, 384, 384, 384, 386, 407, 408, 409, 409, - 409, 409, 410, 410, 410, 411, 411, 411, 414, 433, - 450, 458, 468, 475, 485, 504, 505, 506, 506, 506, - 506, 506, 507, 507, 507, 508, 508, 508, 508, 510, - 519, 528, 539, 548, 557, 566, 575, 586, 595, 607, - 621, 636, 647, 664, 681, 698, 715, 730, 745, 758, - 773, 782, 791, 800, 809, 818, 827, 834, 843, 852, - 861, 870, 879, 888, 897, 906, 919, 930, 941, 952, - 961, 974, 983, 992, 1001, 1008, 1015, 1024, 1031, 1040, - 1048, 1055, 1062, 1070, 1079, 1087, 1103, 1111, 1119, 1127, - 1135, 1143, 1152, 1161, 1175, 1184, 1193, 1202, 1211, 1220, - 1229, 1236, 1243, 1269, 1277, 1284, 1291, 1298, 1305, 1313, - 1321, 1329, 1336, 1347, 1358, 1365, 1374, 1383, 1392, 1401, - 1408, 1415, 1422, 1438, 1446, 1454, 1464, 1474, 1484, 1498, - 1506, 1519, 1530, 1538, 1551, 1560, 1569, 1578, 1587, 1597, - 1607, 1615, 1628, 1637, 1645, 1654, 1662, 1675, 1684, 1693, - 1703, 1710, 1720, 1730, 1740, 1750, 1760, 1770, 1780, 1790, - 1797, 1804, 1811, 1820, 1829, 1838, 1847, 1854, 1864, 1872, - 1881, 1888, 1906, 1919, 1932, 1945, 1954, 1963, 1972, 1981, - 1991, 2001, 2012, 2021, 2030, 2039, 2048, 2057, 2066, 2075, - 2084, 2097, 2110, 2119, 2126, 2135, 2144, 2153, 2162, 2171, - 2179, 2192, 2200, 2255, 2262, 2277, 2287, 2297, 2304, 2311, - 2318, 2327, 2335, 2349, 2370, 2391, 2403, 2415, 2427, 2436, - 2457, 2469, 2481, 2490, 2511, 2520, 2529, 2537, 2545, 2558, - 2571, 2586, 2601, 2610, 2619, 2629, 2639, 2648, 2654, 2663, - 2672, 2682, 2692, 2702, 2711, 2721, 2730, 2743, 2756, 2768, - 2782, 2794, 2808, 2817, 2828, 2837, 2844, 2854, 2861, 2868, - 2877, 2886, 2896, 2906, 2916, 2926, 2933, 2940, 2949, 2958, - 2968, 2978, 2988, 2995, 3002, 3009, 3017, 3027, 3037, 3047, - 3057, 3067, 3077, 3133, 3143, 3151, 3159, 3174, 3183, 3189, - 3190, 3191, 3191, 3191, 3192, 3192, 3192, 3193, 3193, 3195, - 3205, 3214, 3221, 3228, 3235, 3242, 3249, 3256, 3262, 3263, - 3264, 3264, 3264, 3265, 3265, 3265, 3266, 3267, 3267, 3268, - 3268, 3269, 3269, 3270, 3271, 3272, 3273, 3274, 3275, 3277, - 3286, 3296, 3303, 3310, 3319, 3326, 3333, 3340, 3347, 3356, - 3365, 3372, 3379, 3389, 3399, 3409, 3419, 3429, 3439, 3445, - 3446, 3447, 3449, 3455, 3461, 3462, 3463, 3465, 3471, 3481, - 3488, 3497, 3505, 3511, 3512, 3514, 3514, 3514, 3515, 3515, - 3516, 3517, 3518, 3519, 3520, 3522, 3532, 3541, 3548, 3557, - 3564, 3573, 3581, 3594, 3602, 3615, 3621, 3622, 3623, 3623, - 3624, 3624, 3624, 3625, 3627, 3639, 3651, 3663, 3678, 3691, - 3704, 3715, 3721, 3722, 3723, 3723, 3725, 3740 + 281, 282, 282, 283, 283, 284, 284, 284, 285, 285, + 286, 286, 287, 287, 288, 288, 289, 289, 290, 290, + 291, 291, 292, 292, 292, 293, 293, 294, 294, 295, + 295, 296, 296, 296, 297, 297, 298, 299, 299, 300, + 300, 301, 302, 302, 303, 303, 304, 304, 304, 305, + 305, 306, 306, 306, 307, 307, 307, 308, 308, 309, + 310, 310, 311, 311, 312, 312, 313, 313, 314, 314, + 314, 315, 315, 315, 316, 316, 316, 317, 317, 318, + 318, 319, 319, 320, 320, 321, 321, 322, 322, 323, + 323, 324, 324, 325, 325, 327, 341, 342, 343, 343, + 343, 343, 343, 344, 344, 344, 346, 360, 361, 362, + 362, 362, 362, 363, 363, 363, 365, 381, 382, 383, + 383, 383, 383, 384, 384, 384, 386, 407, 408, 409, + 409, 409, 409, 410, 410, 410, 411, 411, 411, 414, + 433, 450, 458, 468, 475, 485, 504, 505, 506, 506, + 506, 506, 506, 507, 507, 507, 508, 508, 508, 508, + 510, 519, 528, 539, 548, 557, 566, 575, 586, 595, + 607, 621, 636, 647, 664, 681, 698, 715, 730, 745, + 758, 773, 782, 791, 800, 809, 818, 827, 834, 843, + 852, 861, 870, 879, 888, 897, 906, 919, 930, 941, + 952, 961, 974, 983, 992, 1001, 1008, 1015, 1024, 1031, + 1040, 1048, 1055, 1062, 1070, 1079, 1087, 1103, 1111, 1119, + 1127, 1135, 1143, 1152, 1161, 1175, 1184, 1193, 1202, 1211, + 1220, 1229, 1236, 1243, 1269, 1277, 1284, 1291, 1298, 1305, + 1313, 1321, 1329, 1336, 1347, 1358, 1365, 1374, 1383, 1392, + 1401, 1408, 1415, 1422, 1438, 1446, 1454, 1464, 1474, 1484, + 1498, 1506, 1519, 1530, 1538, 1551, 1560, 1569, 1578, 1587, + 1597, 1607, 1615, 1628, 1637, 1645, 1654, 1662, 1675, 1684, + 1693, 1703, 1710, 1720, 1730, 1740, 1750, 1760, 1770, 1780, + 1790, 1797, 1804, 1811, 1820, 1829, 1838, 1847, 1854, 1864, + 1872, 1881, 1888, 1906, 1919, 1932, 1945, 1954, 1963, 1972, + 1981, 1991, 2001, 2012, 2021, 2030, 2039, 2048, 2057, 2066, + 2075, 2084, 2097, 2110, 2119, 2126, 2135, 2144, 2153, 2162, + 2171, 2179, 2192, 2200, 2255, 2262, 2277, 2287, 2297, 2304, + 2311, 2318, 2327, 2335, 2349, 2370, 2391, 2403, 2415, 2427, + 2436, 2457, 2469, 2481, 2490, 2511, 2520, 2529, 2537, 2545, + 2558, 2571, 2586, 2601, 2610, 2619, 2629, 2639, 2648, 2657, + 2663, 2672, 2681, 2691, 2701, 2711, 2720, 2730, 2739, 2752, + 2765, 2777, 2791, 2803, 2817, 2826, 2837, 2846, 2853, 2863, + 2870, 2877, 2886, 2895, 2905, 2915, 2925, 2935, 2942, 2949, + 2958, 2967, 2977, 2987, 2997, 3004, 3011, 3018, 3026, 3036, + 3046, 3056, 3066, 3076, 3086, 3142, 3152, 3160, 3168, 3183, + 3192, 3198, 3199, 3200, 3200, 3200, 3201, 3201, 3201, 3202, + 3202, 3204, 3214, 3223, 3230, 3237, 3244, 3251, 3258, 3265, + 3271, 3272, 3273, 3273, 3273, 3274, 3274, 3274, 3275, 3276, + 3276, 3277, 3277, 3278, 3278, 3279, 3280, 3281, 3282, 3283, + 3284, 3286, 3295, 3305, 3312, 3319, 3328, 3335, 3342, 3349, + 3356, 3365, 3374, 3381, 3388, 3398, 3408, 3418, 3428, 3438, + 3448, 3454, 3455, 3456, 3458, 3464, 3470, 3471, 3472, 3474, + 3480, 3490, 3497, 3506, 3514, 3520, 3521, 3523, 3523, 3523, + 3524, 3524, 3525, 3526, 3527, 3528, 3529, 3531, 3541, 3550, + 3557, 3566, 3573, 3582, 3590, 3603, 3611, 3624, 3630, 3631, + 3632, 3632, 3633, 3633, 3633, 3634, 3636, 3648, 3660, 3672, + 3687, 3700, 3713, 3724, 3730, 3731, 3732, 3732, 3734, 3749 }; #endif @@ -1396,22 +1399,22 @@ static const char *const yytname[] = "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", - "VAR_OUTBOUND_MSG_RETRY", "VAR_RATELIMIT_FOR_DOMAIN", - "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_IP_RATELIMIT_FACTOR", - "VAR_RATELIMIT_FACTOR", "VAR_IP_RATELIMIT_BACKOFF", - "VAR_RATELIMIT_BACKOFF", "VAR_SEND_CLIENT_SUBNET", - "VAR_CLIENT_SUBNET_ZONE", "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", - "VAR_CLIENT_SUBNET_OPCODE", "VAR_MAX_CLIENT_SUBNET_IPV4", - "VAR_MAX_CLIENT_SUBNET_IPV6", "VAR_MIN_CLIENT_SUBNET_IPV4", - "VAR_MIN_CLIENT_SUBNET_IPV6", "VAR_MAX_ECS_TREE_SIZE_IPV4", - "VAR_MAX_ECS_TREE_SIZE_IPV6", "VAR_CAPS_WHITELIST", - "VAR_CACHE_MAX_NEGATIVE_TTL", "VAR_PERMIT_SMALL_HOLDDOWN", - "VAR_QNAME_MINIMISATION", "VAR_QNAME_MINIMISATION_STRICT", - "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG", - "VAR_ACCESS_CONTROL_TAG", "VAR_LOCAL_ZONE_OVERRIDE", - "VAR_ACCESS_CONTROL_TAG_ACTION", "VAR_ACCESS_CONTROL_TAG_DATA", - "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST", - "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", + "VAR_OUTBOUND_MSG_RETRY", "VAR_MAX_SENT_COUNT", + "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", + "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR", + "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF", + "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE", + "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE", + "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6", + "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6", + "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6", + "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", + "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", + "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", + "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", + "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", + "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", + "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED", "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", @@ -1546,26 +1549,26 @@ static const char *const yytname[] = "server_ratelimit_for_domain", "server_ratelimit_below_domain", "server_ip_ratelimit_factor", "server_ratelimit_factor", "server_ip_ratelimit_backoff", "server_ratelimit_backoff", - "server_outbound_msg_retry", "server_low_rtt", "server_fast_server_num", - "server_fast_server_permil", "server_qname_minimisation", - "server_qname_minimisation_strict", "server_pad_responses", - "server_pad_responses_block_size", "server_pad_queries", - "server_pad_queries_block_size", "server_ipsecmod_enabled", - "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", - "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "server_edns_client_string", - "server_edns_client_string_opcode", "server_ede", - "server_proxy_protocol_port", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream", - "stub_prime", "forward_name", "forward_host", "forward_addr", - "forward_first", "forward_no_cache", "forward_ssl_upstream", - "forward_tcp_upstream", "auth_name", "auth_zonefile", "auth_master", - "auth_url", "auth_allow_notify", "auth_zonemd_check", - "auth_zonemd_reject_absence", "auth_for_downstream", "auth_for_upstream", - "auth_fallback_enabled", "view_name", "view_local_zone", - "view_response_ip", "view_response_ip_data", "view_local_data", - "view_local_data_ptr", "view_first", "rcstart", "contents_rc", - "content_rc", "rc_control_enable", "rc_control_port", + "server_outbound_msg_retry", "server_max_sent_count", "server_low_rtt", + "server_fast_server_num", "server_fast_server_permil", + "server_qname_minimisation", "server_qname_minimisation_strict", + "server_pad_responses", "server_pad_responses_block_size", + "server_pad_queries", "server_pad_queries_block_size", + "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", + "server_ipsecmod_hook", "server_ipsecmod_max_ttl", + "server_ipsecmod_whitelist", "server_ipsecmod_strict", + "server_edns_client_string", "server_edns_client_string_opcode", + "server_ede", "server_proxy_protocol_port", "stub_name", "stub_host", + "stub_addr", "stub_first", "stub_no_cache", "stub_ssl_upstream", + "stub_tcp_upstream", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "forward_no_cache", + "forward_ssl_upstream", "forward_tcp_upstream", "auth_name", + "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify", + "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream", + "auth_for_upstream", "auth_fallback_enabled", "view_name", + "view_local_zone", "view_response_ip", "view_response_ip_data", + "view_local_data", "view_local_data_ptr", "view_first", "rcstart", + "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", @@ -1603,7 +1606,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-284) +#define YYPACT_NINF (-285) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1617,111 +1620,111 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -284, 250, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -13, 201, 218, 52, 84, 38, 236, 209, - -81, -283, -93, -191, -276, 29, 30, 31, 80, 81, + -285, 251, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -13, 202, 219, 52, 84, 38, 237, 210, + -81, -284, -94, -192, -277, 29, 30, 31, 80, 81, 91, 92, 120, 121, 132, 146, 147, 148, 149, 161, - 162, 163, 164, 165, 208, 210, 230, 231, 234, 235, - 237, 254, 255, 256, 257, 259, 260, 263, 264, 265, - 268, 271, 274, 284, 285, 288, 289, 290, 291, 293, - 294, 295, 300, 302, 316, 317, 318, 319, 320, 321, - 331, 332, 333, 335, 338, 339, 345, 347, 348, 349, - 351, 357, 363, 364, 365, 366, 367, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 490, 491, 492, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 506, 507, - 508, 509, 510, 511, 512, 513, 515, 516, 517, 518, - 519, 520, 521, 522, 524, 525, 526, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 548, 549, 550, - 552, 553, 554, 555, 556, 558, 559, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - 560, 561, 562, 563, 564, 565, 566, 567, -284, -284, - -284, -284, -284, -284, -284, -284, -284, 568, 569, 570, - 571, 572, 573, 574, -284, -284, -284, -284, -284, -284, - -284, -284, 575, 576, 577, 578, 579, 580, 581, -284, - -284, -284, -284, -284, -284, -284, -284, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, 592, 593, - 594, 595, 596, 597, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, 598, 599, 600, - 601, 602, 603, 604, 605, -284, -284, -284, -284, -284, - -284, -284, -284, -284, 606, 607, 608, 609, 610, 611, + 162, 163, 164, 165, 209, 211, 231, 234, 235, 236, + 238, 255, 256, 257, 258, 260, 261, 264, 265, 266, + 269, 272, 275, 285, 286, 289, 290, 291, 292, 294, + 295, 296, 301, 303, 317, 318, 319, 320, 321, 322, + 332, 333, 334, 336, 339, 340, 346, 348, 349, 350, + 352, 358, 364, 365, 366, 367, 368, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 490, 492, 493, 494, 496, 497, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 508, + 509, 510, 511, 512, 513, 514, 515, 517, 518, 519, + 520, 521, 522, 523, 524, 526, 527, 528, 529, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 548, 550, 551, + 552, 554, 555, 556, 557, 558, 560, 561, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, 562, 563, 564, 565, 566, 567, 568, 569, + -285, -285, -285, -285, -285, -285, -285, -285, -285, 570, + 571, 572, 573, 574, 575, 576, -285, -285, -285, -285, + -285, -285, -285, -285, 577, 578, 579, 580, 581, 582, + 583, -285, -285, -285, -285, -285, -285, -285, -285, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 594, 595, 596, 597, 598, 599, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, 600, + 601, 602, 603, 604, 605, 606, 607, -285, -285, -285, + -285, -285, -285, -285, -285, -285, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, 625, -284, -284, 626, -284, -284, 627, - 628, 629, 630, 631, 632, 633, 634, 635, 636, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - 637, 638, 639, 640, 641, 642, -284, -284, -284, -284, - -284, -284, -284, 643, 644, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, 645, 646, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, 647, - 648, 649, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, 650, 651, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, 652, 653, 654, 655, - 656, 657, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, 658, -284, -284, - -284, -284, -284, -284, -284, -284, -284, 659, -284, -284, - -284, -284, -284, 660, 661, 662, 663, 664, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, 665, -284, -284, 666, - 667, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, 668, 669, 670, -284, -284, -284, - -284, -284, -284, 671, 672, -284, -284, -284, -284, -284, - -284, -284, -284 + 622, 623, 624, 625, 626, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, 627, -285, -285, 628, -285, + -285, 629, 630, 631, 632, 633, 634, 635, 636, 637, + 638, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, 639, 640, 641, 642, 643, 644, -285, -285, + -285, -285, -285, -285, -285, 645, 646, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 647, 648, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, 649, 650, 651, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, 652, 653, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, 654, + 655, 656, 657, 658, 659, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 660, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 661, -285, -285, -285, -285, -285, 662, 663, 664, 665, + 666, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, 667, + -285, -285, 668, 669, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, 670, 671, 672, + -285, -285, -285, -285, -285, -285, 673, 674, -285, -285, + -285, -285, -285, -285, -285, -285 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1729,10 +1732,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 254, 265, 578, 638, 597, - 275, 652, 675, 285, 691, 304, 643, 3, 17, 21, - 256, 267, 277, 287, 306, 580, 599, 640, 645, 654, - 677, 693, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 255, 266, 580, 640, 599, + 276, 654, 677, 286, 693, 305, 645, 3, 17, 21, + 257, 268, 278, 288, 307, 582, 601, 642, 647, 656, + 679, 695, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1756,166 +1759,168 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, - 88, 91, 100, 253, 213, 214, 24, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 37, 79, 25, - 92, 93, 48, 72, 87, 250, 26, 27, 30, 31, - 28, 29, 32, 33, 34, 247, 248, 249, 35, 36, - 124, 225, 125, 127, 128, 129, 227, 232, 228, 239, - 240, 241, 242, 130, 131, 132, 133, 134, 135, 136, - 209, 89, 78, 104, 122, 123, 237, 234, 126, 38, - 39, 40, 41, 42, 80, 94, 95, 111, 66, 76, - 67, 217, 218, 105, 58, 59, 216, 62, 60, 61, - 63, 245, 115, 119, 140, 151, 181, 154, 238, 116, - 73, 43, 44, 45, 102, 141, 142, 143, 144, 46, - 47, 49, 50, 52, 53, 51, 148, 149, 155, 54, - 55, 56, 64, 83, 120, 97, 150, 90, 177, 98, - 99, 117, 118, 235, 103, 57, 81, 84, 190, 65, - 68, 106, 107, 108, 82, 178, 109, 69, 70, 71, - 226, 121, 200, 201, 202, 203, 204, 205, 206, 207, - 215, 110, 77, 246, 112, 113, 114, 179, 74, 75, - 96, 85, 86, 101, 137, 138, 236, 139, 145, 146, - 147, 182, 183, 185, 187, 188, 186, 189, 192, 193, - 194, 191, 210, 152, 153, 158, 159, 156, 157, 160, - 161, 163, 162, 165, 164, 166, 229, 231, 230, 180, - 195, 196, 197, 198, 199, 219, 221, 220, 222, 223, - 224, 243, 244, 251, 252, 184, 208, 211, 212, 233, - 0, 0, 0, 0, 0, 0, 0, 0, 255, 257, - 258, 259, 261, 262, 263, 264, 260, 0, 0, 0, - 0, 0, 0, 0, 266, 268, 269, 270, 271, 272, - 273, 274, 0, 0, 0, 0, 0, 0, 0, 276, - 278, 279, 282, 283, 280, 284, 281, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 286, 288, 289, - 290, 291, 295, 296, 297, 292, 293, 294, 0, 0, - 0, 0, 0, 0, 309, 313, 314, 315, 316, 317, - 305, 307, 308, 310, 311, 312, 318, 0, 0, 0, - 0, 0, 0, 0, 0, 579, 581, 583, 582, 588, - 584, 585, 586, 587, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 22, + 23, 88, 91, 100, 254, 214, 215, 24, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 37, 79, + 25, 92, 93, 48, 72, 87, 251, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 248, 249, 250, 35, + 36, 124, 226, 125, 127, 128, 129, 228, 233, 229, + 240, 241, 242, 243, 130, 131, 132, 133, 134, 135, + 136, 210, 89, 78, 104, 122, 123, 238, 235, 126, + 38, 39, 40, 41, 42, 80, 94, 95, 111, 66, + 76, 67, 218, 219, 105, 58, 59, 217, 62, 60, + 61, 63, 246, 115, 119, 140, 151, 182, 154, 239, + 116, 73, 43, 44, 45, 102, 141, 142, 143, 144, + 46, 47, 49, 50, 52, 53, 51, 148, 149, 155, + 54, 55, 56, 64, 83, 120, 97, 150, 90, 178, + 98, 99, 117, 118, 236, 103, 57, 81, 84, 191, + 65, 68, 106, 107, 108, 82, 179, 109, 69, 70, + 71, 227, 121, 201, 202, 203, 204, 205, 206, 207, + 208, 216, 110, 77, 247, 112, 113, 114, 180, 74, + 75, 96, 85, 86, 101, 137, 138, 237, 139, 145, + 146, 147, 183, 184, 186, 188, 189, 187, 190, 193, + 194, 195, 192, 211, 152, 153, 158, 159, 156, 157, + 160, 161, 163, 162, 165, 164, 166, 167, 230, 232, + 231, 181, 196, 197, 198, 199, 200, 220, 222, 221, + 223, 224, 225, 244, 245, 252, 253, 185, 209, 212, + 213, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 256, 258, 259, 260, 262, 263, 264, 265, 261, 0, + 0, 0, 0, 0, 0, 0, 267, 269, 270, 271, + 272, 273, 274, 275, 0, 0, 0, 0, 0, 0, + 0, 277, 279, 280, 283, 284, 281, 285, 282, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, + 289, 290, 291, 292, 296, 297, 298, 293, 294, 295, + 0, 0, 0, 0, 0, 0, 310, 314, 315, 316, + 317, 318, 306, 308, 309, 311, 312, 313, 319, 0, + 0, 0, 0, 0, 0, 0, 0, 581, 583, 585, + 584, 590, 586, 587, 588, 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 598, 600, 602, 601, 603, 604, 605, + 0, 0, 0, 0, 0, 600, 602, 604, 603, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 0, 639, 641, 0, 644, 646, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 653, - 655, 656, 657, 659, 660, 658, 661, 662, 663, 664, - 0, 0, 0, 0, 0, 0, 676, 678, 679, 680, - 681, 682, 683, 0, 0, 692, 694, 695, 320, 319, - 327, 340, 338, 351, 347, 348, 352, 349, 350, 353, - 354, 355, 359, 360, 390, 391, 392, 393, 394, 422, - 423, 424, 430, 431, 343, 432, 433, 436, 434, 435, - 440, 441, 442, 456, 405, 406, 409, 410, 443, 460, - 399, 401, 461, 468, 469, 470, 344, 421, 489, 490, - 400, 483, 383, 339, 395, 457, 465, 444, 0, 0, - 493, 345, 321, 382, 448, 322, 341, 342, 396, 397, - 491, 446, 450, 451, 357, 356, 323, 494, 425, 455, - 384, 404, 462, 463, 464, 467, 482, 398, 487, 485, - 486, 413, 420, 452, 453, 414, 415, 445, 472, 385, - 386, 389, 361, 363, 358, 364, 365, 366, 367, 374, - 375, 376, 377, 378, 379, 380, 495, 496, 498, 426, - 427, 428, 429, 437, 438, 439, 499, 500, 501, 0, - 0, 0, 447, 416, 418, 648, 514, 518, 516, 515, - 519, 517, 526, 0, 0, 522, 523, 524, 525, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 449, - 466, 488, 530, 531, 417, 502, 0, 0, 0, 0, - 0, 0, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 649, 407, 408, 411, 402, 471, 381, 325, 326, - 403, 532, 533, 534, 535, 536, 538, 537, 539, 540, - 541, 362, 369, 527, 529, 528, 368, 0, 388, 454, - 497, 387, 419, 370, 371, 373, 372, 0, 543, 412, - 484, 346, 544, 0, 0, 0, 0, 0, 545, 324, - 546, 547, 548, 553, 551, 552, 549, 550, 554, 555, - 556, 557, 559, 560, 558, 571, 0, 575, 576, 0, - 0, 577, 561, 569, 562, 563, 564, 568, 570, 565, - 566, 567, 298, 299, 300, 301, 302, 303, 589, 591, - 590, 593, 594, 595, 596, 592, 619, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 620, 630, 631, 632, - 633, 634, 635, 636, 637, 642, 647, 665, 666, 667, - 670, 668, 669, 671, 672, 673, 674, 684, 685, 686, - 687, 688, 689, 696, 697, 458, 492, 513, 650, 651, - 520, 521, 503, 504, 0, 0, 0, 508, 690, 542, - 459, 512, 509, 0, 0, 572, 573, 574, 507, 505, - 506, 510, 511 + 616, 617, 618, 619, 620, 0, 641, 643, 0, 646, + 648, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 655, 657, 658, 659, 661, 662, 660, 663, 664, + 665, 666, 0, 0, 0, 0, 0, 0, 678, 680, + 681, 682, 683, 684, 685, 0, 0, 694, 696, 697, + 321, 320, 328, 341, 339, 352, 348, 349, 353, 350, + 351, 354, 355, 356, 360, 361, 391, 392, 393, 394, + 395, 423, 424, 425, 431, 432, 344, 433, 434, 437, + 435, 436, 441, 442, 443, 457, 406, 407, 410, 411, + 444, 461, 400, 402, 462, 469, 470, 471, 345, 422, + 490, 491, 401, 484, 384, 340, 396, 458, 466, 445, + 0, 0, 494, 346, 322, 383, 449, 323, 342, 343, + 397, 398, 492, 447, 451, 452, 358, 357, 324, 495, + 426, 456, 385, 405, 463, 464, 465, 468, 483, 399, + 488, 486, 487, 414, 421, 453, 454, 415, 416, 446, + 473, 386, 387, 390, 362, 364, 359, 365, 366, 367, + 368, 375, 376, 377, 378, 379, 380, 381, 496, 497, + 499, 427, 428, 429, 430, 438, 439, 440, 500, 501, + 502, 0, 0, 0, 448, 417, 419, 650, 515, 519, + 517, 516, 520, 518, 527, 528, 0, 0, 523, 524, + 525, 526, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 450, 467, 489, 532, 533, 418, 503, 0, + 0, 0, 0, 0, 0, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 651, 408, 409, 412, 403, 472, + 382, 326, 327, 404, 534, 535, 536, 537, 538, 540, + 539, 541, 542, 543, 363, 370, 529, 531, 530, 369, + 0, 389, 455, 498, 388, 420, 371, 372, 374, 373, + 0, 545, 413, 485, 347, 546, 0, 0, 0, 0, + 0, 547, 325, 548, 549, 550, 555, 553, 554, 551, + 552, 556, 557, 558, 559, 561, 562, 560, 573, 0, + 577, 578, 0, 0, 579, 563, 571, 564, 565, 566, + 570, 572, 567, 568, 569, 299, 300, 301, 302, 303, + 304, 591, 593, 592, 595, 596, 597, 598, 594, 621, + 623, 624, 625, 626, 627, 628, 629, 630, 631, 622, + 632, 633, 634, 635, 636, 637, 638, 639, 644, 649, + 667, 668, 669, 672, 670, 671, 673, 674, 675, 676, + 686, 687, 688, 689, 690, 691, 698, 699, 459, 493, + 514, 652, 653, 521, 522, 504, 505, 0, 0, 0, + 509, 692, 544, 460, 513, 510, 0, 0, 574, 575, + 576, 508, 506, 507, 511, 512 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - 673, 674, 675, 676, 677, -284, -284, 678, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284 + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, 675, 676, 677, 678, 679, -285, -285, 680, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 277, 20, 33, 518, - 21, 34, 534, 22, 35, 549, 23, 36, 567, 584, - 585, 586, 587, 588, 589, 24, 37, 590, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 519, 520, 521, 522, 523, - 524, 525, 526, 535, 536, 537, 538, 539, 540, 541, - 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 550, 551, 552, 553, 554, 555, 556, 25, 38, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 26, 39, - 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 27, 40, 654, 655, 28, 41, 657, 658, 505, 506, - 507, 508, 29, 42, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 30, 43, 686, 687, 688, - 689, 690, 691, 692, 509, 31, 44, 695, 696, 697 + 0, 1, 17, 18, 19, 32, 278, 20, 33, 520, + 21, 34, 536, 22, 35, 551, 23, 36, 569, 586, + 587, 588, 589, 590, 591, 24, 37, 592, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 521, 522, 523, 524, + 525, 526, 527, 528, 537, 538, 539, 540, 541, 542, + 543, 570, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 552, 553, 554, 555, 556, 557, 558, 25, 38, + 607, 608, 609, 610, 611, 612, 613, 614, 615, 26, + 39, 635, 636, 637, 638, 639, 640, 641, 642, 643, + 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, + 654, 27, 40, 656, 657, 28, 41, 659, 660, 507, + 508, 509, 510, 29, 42, 671, 672, 673, 674, 675, + 676, 677, 678, 679, 680, 681, 30, 43, 688, 689, + 690, 691, 692, 693, 694, 511, 31, 44, 697, 698, + 699 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1926,75 +1931,75 @@ static const yytype_int16 yytable[] = 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, 693, 694, 653, 656, 77, 78, 79, 698, - 699, 700, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 695, 696, 655, 658, 77, 78, 79, 700, + 701, 702, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 557, 680, 681, 682, 683, 684, 685, - 701, 702, 121, 122, 123, 124, 125, 542, 126, 127, - 128, 703, 704, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 559, 682, 683, 684, 685, 686, 687, + 703, 704, 121, 122, 123, 124, 125, 544, 126, 127, + 128, 705, 706, 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, 557, - 705, 706, 155, 543, 544, 156, 157, 158, 159, 160, - 161, 162, 707, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 708, 709, 710, 711, - 545, 659, 660, 661, 662, 663, 664, 665, 666, 667, - 668, 712, 713, 714, 715, 716, 176, 177, 178, 179, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 559, + 707, 708, 155, 545, 546, 156, 157, 158, 159, 160, + 161, 162, 709, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 710, 711, 712, 713, + 547, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 714, 715, 716, 717, 718, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 717, 218, - 718, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 719, + 219, 720, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 719, 720, 546, 547, 721, 722, 510, 723, 511, 512, - 2, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 3, 4, 527, 724, 725, 726, 727, 248, 728, - 729, 528, 529, 730, 731, 732, 249, 250, 733, 251, - 252, 734, 253, 254, 735, 548, 255, 256, 257, 258, - 259, 260, 261, 262, 736, 737, 5, 263, 738, 739, - 740, 741, 6, 742, 743, 744, 264, 265, 266, 267, - 745, 513, 746, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 559, 560, 561, 562, 747, 748, 749, 750, - 751, 752, 564, 597, 598, 599, 600, 601, 602, 603, - 604, 753, 754, 755, 514, 756, 7, 515, 757, 758, - 578, 579, 580, 581, 582, 759, 516, 760, 761, 762, - 530, 763, 531, 583, 8, 532, 558, 764, 559, 560, - 561, 562, 563, 765, 766, 767, 768, 769, 564, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 631, 632, 770, 771, - 772, 773, 774, 775, 776, 777, 778, 565, 566, 779, - 780, 781, 782, 783, 784, 785, 786, 787, 788, 9, - 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, - 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, - 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, - 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, - 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, - 849, 10, 850, 851, 852, 853, 854, 855, 856, 857, - 858, 859, 860, 861, 862, 863, 864, 865, 866, 517, - 867, 868, 869, 11, 870, 871, 872, 873, 874, 875, - 876, 877, 878, 879, 880, 533, 881, 882, 883, 884, - 885, 886, 887, 888, 12, 889, 890, 891, 892, 893, - 894, 895, 896, 13, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 14, 920, 921, - 922, 15, 923, 924, 925, 926, 927, 16, 928, 929, - 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, - 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, - 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, - 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, - 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, - 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, - 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, - 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, - 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, - 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 1040, 1041, 1042, 0, 0, 0, 0, 0, 0, 0, + 238, 721, 548, 549, 722, 723, 724, 512, 725, 513, + 514, 2, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 3, 4, 529, 726, 727, 728, 729, 249, + 730, 731, 530, 531, 732, 733, 734, 250, 251, 735, + 252, 253, 736, 254, 255, 737, 550, 256, 257, 258, + 259, 260, 261, 262, 263, 738, 739, 5, 264, 740, + 741, 742, 743, 6, 744, 745, 746, 265, 266, 267, + 268, 747, 515, 748, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 561, 562, 563, 564, 749, 750, 751, + 752, 753, 754, 566, 599, 600, 601, 602, 603, 604, + 605, 606, 755, 756, 757, 516, 758, 7, 517, 759, + 760, 580, 581, 582, 583, 584, 761, 518, 762, 763, + 764, 532, 765, 533, 585, 8, 534, 560, 766, 561, + 562, 563, 564, 565, 767, 768, 769, 770, 771, 566, + 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 772, + 773, 774, 775, 776, 777, 778, 779, 780, 567, 568, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + 9, 791, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, + 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, + 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 10, 853, 854, 855, 856, 857, 858, + 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, + 869, 519, 870, 871, 872, 11, 873, 874, 875, 876, + 877, 878, 879, 880, 881, 882, 883, 535, 884, 885, + 886, 887, 888, 889, 890, 891, 12, 892, 893, 894, + 895, 896, 897, 898, 899, 13, 900, 901, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, 922, 14, + 923, 924, 925, 15, 926, 927, 928, 929, 930, 16, + 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, + 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, + 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, + 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, + 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 1045, 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, - 591, 592, 593, 594, 595, 596 + 0, 0, 593, 594, 595, 596, 597, 598 }; static const yytype_int16 yycheck[] = @@ -2002,12 +2007,12 @@ static const yytype_int16 yycheck[] = 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 308, 309, 115, 318, 49, 50, 51, 10, + 43, 44, 309, 310, 115, 319, 49, 50, 51, 10, 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 45, 275, 276, 277, 278, 279, 280, + 93, 94, 95, 45, 276, 277, 278, 279, 280, 281, 10, 10, 105, 106, 107, 108, 109, 45, 111, 112, 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, @@ -2015,47 +2020,47 @@ static const yytype_int16 yycheck[] = 10, 10, 145, 81, 82, 148, 149, 150, 151, 152, 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 10, 10, 10, 10, - 108, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 10, 10, 10, 10, 10, 189, 190, 191, 192, + 108, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 10, 10, 10, 10, 10, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 10, 232, - 10, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 10, + 233, 10, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 10, 10, 190, 191, 10, 10, 45, 10, 47, 48, - 0, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 11, 12, 45, 10, 10, 10, 10, 281, 10, - 10, 53, 54, 10, 10, 10, 289, 290, 10, 292, - 293, 10, 295, 296, 10, 233, 299, 300, 301, 302, - 303, 304, 305, 306, 10, 10, 46, 310, 10, 10, - 10, 10, 52, 10, 10, 10, 319, 320, 321, 322, - 10, 110, 10, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 284, 285, 286, 287, 10, 10, 10, 10, - 10, 10, 294, 97, 98, 99, 100, 101, 102, 103, - 104, 10, 10, 10, 143, 10, 96, 146, 10, 10, - 312, 313, 314, 315, 316, 10, 155, 10, 10, 10, - 142, 10, 144, 325, 114, 147, 282, 10, 284, 285, - 286, 287, 288, 10, 10, 10, 10, 10, 294, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 323, 324, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 169, + 253, 10, 190, 191, 10, 10, 10, 45, 10, 47, + 48, 0, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 11, 12, 45, 10, 10, 10, 10, 282, + 10, 10, 53, 54, 10, 10, 10, 290, 291, 10, + 293, 294, 10, 296, 297, 10, 234, 300, 301, 302, + 303, 304, 305, 306, 307, 10, 10, 46, 311, 10, + 10, 10, 10, 52, 10, 10, 10, 320, 321, 322, + 323, 10, 110, 10, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 285, 286, 287, 288, 10, 10, 10, + 10, 10, 10, 295, 97, 98, 99, 100, 101, 102, + 103, 104, 10, 10, 10, 143, 10, 96, 146, 10, + 10, 313, 314, 315, 316, 317, 10, 155, 10, 10, + 10, 142, 10, 144, 326, 114, 147, 283, 10, 285, + 286, 287, 288, 289, 10, 10, 10, 10, 10, 295, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 324, 325, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 169, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 232, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 231, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 298, - 10, 10, 10, 253, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 297, 10, 10, 10, 10, - 10, 10, 10, 10, 274, 10, 10, 10, 10, 10, - 10, 10, 10, 283, 10, 10, 10, 10, 10, 10, + 10, 299, 10, 10, 10, 254, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 298, 10, 10, + 10, 10, 10, 10, 10, 10, 275, 10, 10, 10, + 10, 10, 10, 10, 10, 284, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 307, 10, 10, - 10, 311, 10, 10, 10, 10, 10, 317, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 308, + 10, 10, 10, 312, 10, 10, 10, 10, 10, 318, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2067,21 +2072,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 37, 37, 37, 37, 37 + -1, -1, 37, 37, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 336, 0, 11, 12, 46, 52, 96, 114, 169, - 231, 253, 274, 283, 307, 311, 317, 337, 338, 339, - 342, 345, 348, 351, 360, 622, 633, 655, 659, 667, - 680, 690, 340, 343, 346, 349, 352, 361, 623, 634, - 656, 660, 668, 681, 691, 13, 14, 15, 16, 17, + 0, 337, 0, 11, 12, 46, 52, 96, 114, 169, + 232, 254, 275, 284, 308, 312, 318, 338, 339, 340, + 343, 346, 349, 352, 361, 624, 635, 657, 661, 669, + 682, 692, 341, 344, 347, 350, 353, 362, 625, 636, + 658, 662, 670, 683, 693, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2098,13 +2103,13 @@ static const yytype_int16 yystos[] = 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 232, 234, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 281, 289, - 290, 292, 293, 295, 296, 299, 300, 301, 302, 303, - 304, 305, 306, 310, 319, 320, 321, 322, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 341, 363, 364, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 282, + 290, 291, 293, 294, 296, 297, 300, 301, 302, 303, + 304, 305, 306, 307, 311, 320, 321, 322, 323, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 342, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, @@ -2127,26 +2132,26 @@ static const yytype_int16 yystos[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 663, 664, 665, 666, 689, - 45, 47, 48, 110, 143, 146, 155, 298, 344, 590, - 591, 592, 593, 594, 595, 596, 597, 45, 53, 54, - 142, 144, 147, 297, 347, 598, 599, 600, 601, 602, - 603, 604, 45, 81, 82, 108, 190, 191, 233, 350, - 615, 616, 617, 618, 619, 620, 621, 45, 282, 284, - 285, 286, 287, 288, 294, 323, 324, 353, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 312, 313, - 314, 315, 316, 325, 354, 355, 356, 357, 358, 359, - 362, 605, 606, 607, 608, 609, 612, 97, 98, 99, - 100, 101, 102, 103, 104, 624, 625, 626, 627, 628, - 629, 630, 631, 632, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 635, 636, 637, 638, 639, 640, 641, + 585, 586, 587, 588, 589, 590, 591, 665, 666, 667, + 668, 691, 45, 47, 48, 110, 143, 146, 155, 299, + 345, 592, 593, 594, 595, 596, 597, 598, 599, 45, + 53, 54, 142, 144, 147, 298, 348, 600, 601, 602, + 603, 604, 605, 606, 45, 81, 82, 108, 190, 191, + 234, 351, 617, 618, 619, 620, 621, 622, 623, 45, + 283, 285, 286, 287, 288, 289, 295, 324, 325, 354, + 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 313, 314, 315, 316, 317, 326, 355, 356, 357, 358, + 359, 360, 363, 607, 608, 609, 610, 611, 614, 97, + 98, 99, 100, 101, 102, 103, 104, 626, 627, 628, + 629, 630, 631, 632, 633, 634, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 115, 657, 658, 318, 661, 662, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 275, 276, 277, 278, 279, 280, 682, 683, 684, 685, - 686, 687, 688, 308, 309, 692, 693, 694, 10, 10, + 652, 653, 654, 655, 656, 115, 659, 660, 319, 663, + 664, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 276, 277, 278, 279, 280, 281, 684, 685, + 686, 687, 688, 689, 690, 309, 310, 694, 695, 696, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2181,44 +2186,44 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10 + 10, 10, 10, 10, 10, 10 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 335, 336, 336, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 338, 339, - 340, 340, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 342, 343, 343, 344, 344, 344, - 344, 344, 344, 344, 344, 345, 346, 346, 347, 347, - 347, 347, 347, 347, 347, 348, 349, 349, 350, 350, - 350, 350, 350, 350, 350, 351, 352, 352, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 361, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 362, 363, + 0, 336, 337, 337, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 339, 340, + 341, 341, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 343, 344, 344, 345, 345, + 345, 345, 345, 345, 345, 345, 346, 347, 347, 348, + 348, 348, 348, 348, 348, 348, 349, 350, 350, 351, + 351, 351, 351, 351, 351, 351, 352, 353, 353, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 362, 363, 363, + 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, @@ -2245,18 +2250,18 @@ static const yytype_int16 yyr1[] = 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 623, 624, 624, 624, 624, 624, 624, 624, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 634, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 636, + 624, 625, 625, 626, 626, 626, 626, 626, 626, 626, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 636, 637, 637, 637, 637, 637, 637, 637, 637, + 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 656, 657, 658, 659, 660, 660, 661, 662, 663, 664, - 665, 666, 667, 668, 668, 669, 669, 669, 669, 669, - 669, 669, 669, 669, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 680, 681, 681, 682, 682, - 682, 682, 682, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 691, 692, 692, 693, 694 + 657, 658, 658, 659, 660, 661, 662, 662, 663, 664, + 665, 666, 667, 668, 669, 670, 670, 671, 671, 671, + 671, 671, 671, 671, 671, 671, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 683, + 684, 684, 684, 684, 684, 684, 685, 686, 687, 688, + 689, 690, 691, 692, 693, 693, 694, 694, 695, 696 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -2287,51 +2292,51 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, - 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, - 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 2, 1, 2, 0, 1, 2, 2, 2, - 3, 3, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 3, 1, 2, 0, 1, 1, 2, 2 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 3, 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, 3, 4, 4, 4, 3, + 3, 4, 4, 3, 3, 2, 2, 2, 2, 2, + 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 2, 1, 2, 0, 1, 2, + 2, 2, 3, 3, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2800,7 +2805,7 @@ yyreduce: OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2804 "util/configparser.c" +#line 2809 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ @@ -2809,10 +2814,10 @@ yyreduce: OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2813 "util/configparser.c" +#line 2818 "util/configparser.c" break; - case 254: /* stubstart: VAR_STUB_ZONE */ + case 255: /* stubstart: VAR_STUB_ZONE */ #line 328 "./util/configparser.y" { struct config_stub* s; @@ -2826,10 +2831,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2830 "util/configparser.c" +#line 2835 "util/configparser.c" break; - case 265: /* forwardstart: VAR_FORWARD_ZONE */ + case 266: /* forwardstart: VAR_FORWARD_ZONE */ #line 347 "./util/configparser.y" { struct config_stub* s; @@ -2843,10 +2848,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2847 "util/configparser.c" +#line 2852 "util/configparser.c" break; - case 275: /* viewstart: VAR_VIEW */ + case 276: /* viewstart: VAR_VIEW */ #line 366 "./util/configparser.y" { struct config_view* s; @@ -2862,10 +2867,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2866 "util/configparser.c" +#line 2871 "util/configparser.c" break; - case 285: /* authstart: VAR_AUTH_ZONE */ + case 286: /* authstart: VAR_AUTH_ZONE */ #line 387 "./util/configparser.y" { struct config_auth* s; @@ -2886,10 +2891,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2890 "util/configparser.c" +#line 2895 "util/configparser.c" break; - case 298: /* rpz_tag: VAR_TAGS STRING_ARG */ + case 299: /* rpz_tag: VAR_TAGS STRING_ARG */ #line 415 "./util/configparser.y" { uint8_t* bitlist; @@ -2907,10 +2912,10 @@ yyreduce: } } -#line 2911 "util/configparser.c" +#line 2916 "util/configparser.c" break; - case 299: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ + case 300: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ #line 434 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2926,20 +2931,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2930 "util/configparser.c" +#line 2935 "util/configparser.c" break; - case 300: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ + case 301: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ #line 451 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2940 "util/configparser.c" +#line 2945 "util/configparser.c" break; - case 301: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ + case 302: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ #line 459 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2948,20 +2953,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2952 "util/configparser.c" +#line 2957 "util/configparser.c" break; - case 302: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ + case 303: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ #line 469 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2962 "util/configparser.c" +#line 2967 "util/configparser.c" break; - case 303: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ + case 304: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ #line 476 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); @@ -2970,10 +2975,10 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2974 "util/configparser.c" +#line 2979 "util/configparser.c" break; - case 304: /* rpzstart: VAR_RPZ */ + case 305: /* rpzstart: VAR_RPZ */ #line 486 "./util/configparser.y" { struct config_auth* s; @@ -2992,10 +2997,10 @@ yyreduce: yyerror("out of memory"); } } -#line 2996 "util/configparser.c" +#line 3001 "util/configparser.c" break; - case 319: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ + case 320: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ #line 511 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -3004,10 +3009,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3008 "util/configparser.c" +#line 3013 "util/configparser.c" break; - case 320: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ + case 321: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ #line 520 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -3016,10 +3021,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3020 "util/configparser.c" +#line 3025 "util/configparser.c" break; - case 321: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ + case 322: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ #line 529 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -3030,10 +3035,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" +#line 3039 "util/configparser.c" break; - case 322: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ + case 323: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ #line 540 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3042,10 +3047,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 3051 "util/configparser.c" break; - case 323: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ + case 324: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ #line 549 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3054,10 +3059,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 3063 "util/configparser.c" break; - case 324: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ + case 325: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ #line 558 "./util/configparser.y" { OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str))); @@ -3066,10 +3071,10 @@ yyreduce: else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" +#line 3075 "util/configparser.c" break; - case 325: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ + case 326: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ #line 567 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3078,10 +3083,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3082 "util/configparser.c" +#line 3087 "util/configparser.c" break; - case 326: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ + case 327: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ #line 576 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3092,10 +3097,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3101 "util/configparser.c" break; - case 327: /* server_port: VAR_PORT STRING_ARG */ + case 328: /* server_port: VAR_PORT STRING_ARG */ #line 587 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3104,10 +3109,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3108 "util/configparser.c" +#line 3113 "util/configparser.c" break; - case 328: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ + case 329: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ #line 596 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3119,10 +3124,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3123 "util/configparser.c" +#line 3128 "util/configparser.c" break; - case 329: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ + case 330: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ #line 608 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3135,10 +3140,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3139 "util/configparser.c" +#line 3144 "util/configparser.c" break; - case 330: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ + case 331: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ #line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3153,10 +3158,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3157 "util/configparser.c" +#line 3162 "util/configparser.c" break; - case 331: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ + case 332: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ #line 637 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3167,10 +3172,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3171 "util/configparser.c" +#line 3176 "util/configparser.c" break; - case 332: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ + case 333: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ #line 648 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3187,10 +3192,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3191 "util/configparser.c" +#line 3196 "util/configparser.c" break; - case 333: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ + case 334: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ #line 665 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3207,10 +3212,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3211 "util/configparser.c" +#line 3216 "util/configparser.c" break; - case 334: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ + case 335: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ #line 682 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3227,10 +3232,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3231 "util/configparser.c" +#line 3236 "util/configparser.c" break; - case 335: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ + case 336: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ #line 699 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3247,10 +3252,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3251 "util/configparser.c" +#line 3256 "util/configparser.c" break; - case 336: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ + case 337: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ #line 716 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3265,10 +3270,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3274 "util/configparser.c" break; - case 337: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ + case 338: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ #line 731 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3283,10 +3288,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3287 "util/configparser.c" +#line 3292 "util/configparser.c" break; - case 338: /* server_interface: VAR_INTERFACE STRING_ARG */ + case 339: /* server_interface: VAR_INTERFACE STRING_ARG */ #line 746 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3299,10 +3304,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3303 "util/configparser.c" +#line 3308 "util/configparser.c" break; - case 339: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ + case 340: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ #line 759 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3317,10 +3322,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3321 "util/configparser.c" +#line 3326 "util/configparser.c" break; - case 340: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ + case 341: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ #line 774 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3329,10 +3334,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3333 "util/configparser.c" +#line 3338 "util/configparser.c" break; - case 341: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ + case 342: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ #line 783 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3341,10 +3346,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3345 "util/configparser.c" +#line 3350 "util/configparser.c" break; - case 342: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ + case 343: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ #line 792 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3353,10 +3358,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3357 "util/configparser.c" +#line 3362 "util/configparser.c" break; - case 343: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ + case 344: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ #line 801 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3365,10 +3370,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3369 "util/configparser.c" +#line 3374 "util/configparser.c" break; - case 344: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ + case 345: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ #line 810 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3377,10 +3382,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3386 "util/configparser.c" break; - case 345: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ + case 346: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ #line 819 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3389,20 +3394,20 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3398 "util/configparser.c" break; - case 346: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ + case 347: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ #line 828 "./util/configparser.y" { OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3403 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 347: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ + case 348: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ #line 835 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3411,10 +3416,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3415 "util/configparser.c" +#line 3420 "util/configparser.c" break; - case 348: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ + case 349: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ #line 844 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3423,10 +3428,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3427 "util/configparser.c" +#line 3432 "util/configparser.c" break; - case 349: /* server_do_udp: VAR_DO_UDP STRING_ARG */ + case 350: /* server_do_udp: VAR_DO_UDP STRING_ARG */ #line 853 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3435,10 +3440,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3439 "util/configparser.c" +#line 3444 "util/configparser.c" break; - case 350: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ + case 351: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ #line 862 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3447,10 +3452,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3451 "util/configparser.c" +#line 3456 "util/configparser.c" break; - case 351: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ + case 352: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ #line 871 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3459,10 +3464,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3463 "util/configparser.c" +#line 3468 "util/configparser.c" break; - case 352: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ + case 353: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ #line 880 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3471,10 +3476,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3475 "util/configparser.c" +#line 3480 "util/configparser.c" break; - case 353: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ + case 354: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ #line 889 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3483,10 +3488,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3487 "util/configparser.c" +#line 3492 "util/configparser.c" break; - case 354: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ + case 355: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ #line 898 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3495,10 +3500,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3504 "util/configparser.c" break; - case 355: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ + case 356: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ #line 907 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3511,10 +3516,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3515 "util/configparser.c" +#line 3520 "util/configparser.c" break; - case 356: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ + case 357: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ #line 920 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); @@ -3525,10 +3530,10 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3529 "util/configparser.c" +#line 3534 "util/configparser.c" break; - case 357: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ + case 358: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ #line 931 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); @@ -3539,10 +3544,10 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3543 "util/configparser.c" +#line 3548 "util/configparser.c" break; - case 358: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ + case 359: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ #line 942 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); @@ -3553,10 +3558,10 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3557 "util/configparser.c" +#line 3562 "util/configparser.c" break; - case 359: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ + case 360: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ #line 953 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3565,10 +3570,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3569 "util/configparser.c" +#line 3574 "util/configparser.c" break; - case 360: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ + case 361: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ #line 962 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3581,10 +3586,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3585 "util/configparser.c" +#line 3590 "util/configparser.c" break; - case 361: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ + case 362: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ #line 975 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3593,10 +3598,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3597 "util/configparser.c" +#line 3602 "util/configparser.c" break; - case 362: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ + case 363: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ #line 984 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3605,10 +3610,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3609 "util/configparser.c" +#line 3614 "util/configparser.c" break; - case 363: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ + case 364: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ #line 993 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3617,30 +3622,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3621 "util/configparser.c" +#line 3626 "util/configparser.c" break; - case 364: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ + case 365: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ #line 1002 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3631 "util/configparser.c" +#line 3636 "util/configparser.c" break; - case 365: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ + case 366: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ #line 1009 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3641 "util/configparser.c" +#line 3646 "util/configparser.c" break; - case 366: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ + case 367: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ #line 1016 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3649,20 +3654,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3653 "util/configparser.c" +#line 3658 "util/configparser.c" break; - case 367: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ + case 368: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ #line 1025 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3663 "util/configparser.c" +#line 3668 "util/configparser.c" break; - case 368: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ + case 369: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ #line 1032 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3671,10 +3676,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3675 "util/configparser.c" +#line 3680 "util/configparser.c" break; - case 369: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ + case 370: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ #line 1041 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3682,30 +3687,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3686 "util/configparser.c" +#line 3691 "util/configparser.c" break; - case 370: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ + case 371: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ #line 1049 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3696 "util/configparser.c" +#line 3701 "util/configparser.c" break; - case 371: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ + case 372: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ #line 1056 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3706 "util/configparser.c" +#line 3711 "util/configparser.c" break; - case 372: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ + case 373: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ #line 1063 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3713,10 +3718,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3717 "util/configparser.c" +#line 3722 "util/configparser.c" break; - case 373: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ + case 374: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ #line 1071 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3725,10 +3730,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3729 "util/configparser.c" +#line 3734 "util/configparser.c" break; - case 374: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ + case 375: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ #line 1080 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); @@ -3737,10 +3742,10 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3741 "util/configparser.c" +#line 3746 "util/configparser.c" break; - case 375: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ + case 376: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ #line 1088 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); @@ -3757,10 +3762,10 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3761 "util/configparser.c" +#line 3766 "util/configparser.c" break; - case 376: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ + case 377: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ #line 1104 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); @@ -3769,10 +3774,10 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3773 "util/configparser.c" +#line 3778 "util/configparser.c" break; - case 377: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ + case 378: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ #line 1112 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3781,10 +3786,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3785 "util/configparser.c" +#line 3790 "util/configparser.c" break; - case 378: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ + case 379: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ #line 1120 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3793,10 +3798,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3797 "util/configparser.c" +#line 3802 "util/configparser.c" break; - case 379: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ + case 380: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ #line 1128 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); @@ -3805,10 +3810,10 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3809 "util/configparser.c" +#line 3814 "util/configparser.c" break; - case 380: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ + case 381: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ #line 1136 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); @@ -3817,10 +3822,10 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3821 "util/configparser.c" +#line 3826 "util/configparser.c" break; - case 381: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ + case 382: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ #line 1144 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -3829,10 +3834,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3833 "util/configparser.c" +#line 3838 "util/configparser.c" break; - case 382: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ + case 383: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ #line 1153 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -3841,10 +3846,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3845 "util/configparser.c" +#line 3850 "util/configparser.c" break; - case 383: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ + case 384: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ #line 1162 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -3858,10 +3863,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3862 "util/configparser.c" +#line 3867 "util/configparser.c" break; - case 384: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ + case 385: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ #line 1176 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -3870,10 +3875,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3874 "util/configparser.c" +#line 3879 "util/configparser.c" break; - case 385: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ + case 386: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ #line 1185 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -3882,10 +3887,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3886 "util/configparser.c" +#line 3891 "util/configparser.c" break; - case 386: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ + case 387: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ #line 1194 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -3894,10 +3899,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3898 "util/configparser.c" +#line 3903 "util/configparser.c" break; - case 387: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ + case 388: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ #line 1203 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -3906,10 +3911,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3910 "util/configparser.c" +#line 3915 "util/configparser.c" break; - case 388: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ + case 389: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ #line 1212 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -3918,10 +3923,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3922 "util/configparser.c" +#line 3927 "util/configparser.c" break; - case 389: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ + case 390: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ #line 1221 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -3930,30 +3935,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3934 "util/configparser.c" +#line 3939 "util/configparser.c" break; - case 390: /* server_chroot: VAR_CHROOT STRING_ARG */ + case 391: /* server_chroot: VAR_CHROOT STRING_ARG */ #line 1230 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3944 "util/configparser.c" +#line 3949 "util/configparser.c" break; - case 391: /* server_username: VAR_USERNAME STRING_ARG */ + case 392: /* server_username: VAR_USERNAME STRING_ARG */ #line 1237 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3954 "util/configparser.c" +#line 3959 "util/configparser.c" break; - case 392: /* server_directory: VAR_DIRECTORY STRING_ARG */ + case 393: /* server_directory: VAR_DIRECTORY STRING_ARG */ #line 1244 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -3979,10 +3984,10 @@ yyreduce: } } } -#line 3983 "util/configparser.c" +#line 3988 "util/configparser.c" break; - case 393: /* server_logfile: VAR_LOGFILE STRING_ARG */ + case 394: /* server_logfile: VAR_LOGFILE STRING_ARG */ #line 1270 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -3990,50 +3995,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3994 "util/configparser.c" +#line 3999 "util/configparser.c" break; - case 394: /* server_pidfile: VAR_PIDFILE STRING_ARG */ + case 395: /* server_pidfile: VAR_PIDFILE STRING_ARG */ #line 1278 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4004 "util/configparser.c" +#line 4009 "util/configparser.c" break; - case 395: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ + case 396: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ #line 1285 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4014 "util/configparser.c" +#line 4019 "util/configparser.c" break; - case 396: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ + case 397: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ #line 1292 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4024 "util/configparser.c" +#line 4029 "util/configparser.c" break; - case 397: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ + case 398: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ #line 1299 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4034 "util/configparser.c" +#line 4039 "util/configparser.c" break; - case 398: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ + case 399: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ #line 1306 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4041,10 +4046,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4045 "util/configparser.c" +#line 4050 "util/configparser.c" break; - case 399: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ + case 400: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ #line 1314 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4052,10 +4057,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4056 "util/configparser.c" +#line 4061 "util/configparser.c" break; - case 400: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ + case 401: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ #line 1322 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -4063,20 +4068,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4067 "util/configparser.c" +#line 4072 "util/configparser.c" break; - case 401: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ + case 402: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ #line 1330 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4077 "util/configparser.c" +#line 4082 "util/configparser.c" break; - case 402: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ + case 403: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ #line 1337 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -4087,10 +4092,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4096 "util/configparser.c" break; - case 403: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ + case 404: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ #line 1348 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -4101,20 +4106,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4105 "util/configparser.c" +#line 4110 "util/configparser.c" break; - case 404: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ + case 405: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ #line 1359 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4115 "util/configparser.c" +#line 4120 "util/configparser.c" break; - case 405: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ + case 406: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ #line 1366 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -4123,10 +4128,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4127 "util/configparser.c" +#line 4132 "util/configparser.c" break; - case 406: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ + case 407: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ #line 1375 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -4135,10 +4140,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4139 "util/configparser.c" +#line 4144 "util/configparser.c" break; - case 407: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ + case 408: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ #line 1384 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -4147,10 +4152,10 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4151 "util/configparser.c" +#line 4156 "util/configparser.c" break; - case 408: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ + case 409: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ #line 1393 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); @@ -4159,40 +4164,40 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4163 "util/configparser.c" +#line 4168 "util/configparser.c" break; - case 409: /* server_identity: VAR_IDENTITY STRING_ARG */ + case 410: /* server_identity: VAR_IDENTITY STRING_ARG */ #line 1402 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4173 "util/configparser.c" +#line 4178 "util/configparser.c" break; - case 410: /* server_version: VAR_VERSION STRING_ARG */ + case 411: /* server_version: VAR_VERSION STRING_ARG */ #line 1409 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4183 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 411: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ + case 412: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ #line 1416 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4193 "util/configparser.c" +#line 4198 "util/configparser.c" break; - case 412: /* server_nsid: VAR_NSID STRING_ARG */ + case 413: /* server_nsid: VAR_NSID STRING_ARG */ #line 1423 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); @@ -4208,10 +4213,10 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4212 "util/configparser.c" +#line 4217 "util/configparser.c" break; - case 413: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ + case 414: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ #line 1439 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -4219,10 +4224,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4223 "util/configparser.c" +#line 4228 "util/configparser.c" break; - case 414: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ + case 415: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ #line 1447 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -4230,10 +4235,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4234 "util/configparser.c" +#line 4239 "util/configparser.c" break; - case 415: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ + case 416: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ #line 1455 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -4243,10 +4248,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4247 "util/configparser.c" +#line 4252 "util/configparser.c" break; - case 416: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ + case 417: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ #line 1465 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -4256,10 +4261,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4260 "util/configparser.c" +#line 4265 "util/configparser.c" break; - case 417: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ + case 418: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ #line 1475 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -4269,10 +4274,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4273 "util/configparser.c" +#line 4278 "util/configparser.c" break; - case 418: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ + case 419: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ #line 1485 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -4286,10 +4291,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4295 "util/configparser.c" break; - case 419: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ + case 420: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ #line 1499 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -4297,10 +4302,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4301 "util/configparser.c" +#line 4306 "util/configparser.c" break; - case 420: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ + case 421: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ #line 1507 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4313,10 +4318,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4317 "util/configparser.c" +#line 4322 "util/configparser.c" break; - case 421: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ + case 422: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ #line 1520 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4327,10 +4332,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4331 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 422: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ + case 423: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ #line 1531 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4338,10 +4343,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4342 "util/configparser.c" +#line 4347 "util/configparser.c" break; - case 423: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ + case 424: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ #line 1539 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4354,10 +4359,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4358 "util/configparser.c" +#line 4363 "util/configparser.c" break; - case 424: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ + case 425: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ #line 1552 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -4366,10 +4371,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4370 "util/configparser.c" +#line 4375 "util/configparser.c" break; - case 425: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ + case 426: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ #line 1561 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -4378,10 +4383,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4382 "util/configparser.c" +#line 4387 "util/configparser.c" break; - case 426: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ + case 427: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ #line 1570 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -4390,10 +4395,10 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4394 "util/configparser.c" +#line 4399 "util/configparser.c" break; - case 427: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ + case 428: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ #line 1579 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); @@ -4402,10 +4407,10 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4406 "util/configparser.c" +#line 4411 "util/configparser.c" break; - case 428: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ + case 429: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ #line 1588 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4415,10 +4420,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4419 "util/configparser.c" +#line 4424 "util/configparser.c" break; - case 429: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ + case 430: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ #line 1598 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4428,10 +4433,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4432 "util/configparser.c" +#line 4437 "util/configparser.c" break; - case 430: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ + case 431: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ #line 1608 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -4439,10 +4444,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4443 "util/configparser.c" +#line 4448 "util/configparser.c" break; - case 431: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ + case 432: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ #line 1616 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4455,10 +4460,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4459 "util/configparser.c" +#line 4464 "util/configparser.c" break; - case 432: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ + case 433: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ #line 1629 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -4467,10 +4472,10 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4471 "util/configparser.c" +#line 4476 "util/configparser.c" break; - case 433: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ + case 434: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ #line 1638 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -4478,10 +4483,10 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 4487 "util/configparser.c" break; - case 434: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ + case 435: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ #line 1646 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -4490,10 +4495,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4494 "util/configparser.c" +#line 4499 "util/configparser.c" break; - case 435: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ + case 436: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ #line 1655 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -4501,10 +4506,10 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4505 "util/configparser.c" +#line 4510 "util/configparser.c" break; - case 436: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ + case 437: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ #line 1663 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4517,10 +4522,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4521 "util/configparser.c" +#line 4526 "util/configparser.c" break; - case 437: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ + case 438: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ #line 1676 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -4529,10 +4534,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4533 "util/configparser.c" +#line 4538 "util/configparser.c" break; - case 438: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ + case 439: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ #line 1685 "./util/configparser.y" { OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str))); @@ -4541,10 +4546,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4545 "util/configparser.c" +#line 4550 "util/configparser.c" break; - case 439: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ + case 440: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ #line 1694 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); @@ -4554,20 +4559,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4558 "util/configparser.c" +#line 4563 "util/configparser.c" break; - case 440: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ + case 441: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ #line 1704 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4568 "util/configparser.c" +#line 4573 "util/configparser.c" break; - case 441: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ + case 442: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ #line 1711 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); @@ -4577,10 +4582,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4581 "util/configparser.c" +#line 4586 "util/configparser.c" break; - case 442: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ + case 443: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ #line 1721 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); @@ -4590,10 +4595,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4599 "util/configparser.c" break; - case 443: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ + case 444: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ #line 1731 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); @@ -4603,10 +4608,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4607 "util/configparser.c" +#line 4612 "util/configparser.c" break; - case 444: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ + case 445: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ #line 1741 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); @@ -4616,10 +4621,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4620 "util/configparser.c" +#line 4625 "util/configparser.c" break; - case 445: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ + case 446: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ #line 1751 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); @@ -4629,10 +4634,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4638 "util/configparser.c" break; - case 446: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ + case 447: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ #line 1761 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); @@ -4642,10 +4647,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4646 "util/configparser.c" +#line 4651 "util/configparser.c" break; - case 447: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ + case 448: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ #line 1771 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); @@ -4655,10 +4660,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4659 "util/configparser.c" +#line 4664 "util/configparser.c" break; - case 448: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ + case 449: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ #line 1781 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); @@ -4668,40 +4673,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4672 "util/configparser.c" +#line 4677 "util/configparser.c" break; - case 449: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ + case 450: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ #line 1791 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4682 "util/configparser.c" +#line 4687 "util/configparser.c" break; - case 450: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ + case 451: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ #line 1798 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4692 "util/configparser.c" +#line 4697 "util/configparser.c" break; - case 451: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ + case 452: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ #line 1805 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4702 "util/configparser.c" +#line 4707 "util/configparser.c" break; - case 452: /* server_prefetch: VAR_PREFETCH STRING_ARG */ + case 453: /* server_prefetch: VAR_PREFETCH STRING_ARG */ #line 1812 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); @@ -4710,10 +4715,10 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4714 "util/configparser.c" +#line 4719 "util/configparser.c" break; - case 453: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ + case 454: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ #line 1821 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); @@ -4722,10 +4727,10 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4726 "util/configparser.c" +#line 4731 "util/configparser.c" break; - case 454: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ + case 455: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ #line 1830 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); @@ -4734,10 +4739,10 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4738 "util/configparser.c" +#line 4743 "util/configparser.c" break; - case 455: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ + case 456: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ #line 1839 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); @@ -4746,20 +4751,20 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4750 "util/configparser.c" +#line 4755 "util/configparser.c" break; - case 456: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ + case 457: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ #line 1848 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4760 "util/configparser.c" +#line 4765 "util/configparser.c" break; - case 457: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ + case 458: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ #line 1855 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); @@ -4769,10 +4774,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4773 "util/configparser.c" +#line 4778 "util/configparser.c" break; - case 458: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ + case 459: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ #line 1865 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -4780,10 +4785,10 @@ yyreduce: if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4784 "util/configparser.c" +#line 4789 "util/configparser.c" break; - case 459: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ + case 460: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ #line 1873 "./util/configparser.y" { OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -4792,20 +4797,20 @@ yyreduce: &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4796 "util/configparser.c" +#line 4801 "util/configparser.c" break; - case 460: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ + case 461: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ #line 1882 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4806 "util/configparser.c" +#line 4811 "util/configparser.c" break; - case 461: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ + case 462: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ #line 1889 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); @@ -4823,10 +4828,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4827 "util/configparser.c" +#line 4832 "util/configparser.c" break; - case 462: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ + case 463: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ #line 1907 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); @@ -4839,10 +4844,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4843 "util/configparser.c" +#line 4848 "util/configparser.c" break; - case 463: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ + case 464: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ #line 1920 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); @@ -4855,10 +4860,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4859 "util/configparser.c" +#line 4864 "util/configparser.c" break; - case 464: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ + case 465: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ #line 1933 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); @@ -4871,10 +4876,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4875 "util/configparser.c" +#line 4880 "util/configparser.c" break; - case 465: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ + case 466: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ #line 1946 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); @@ -4883,10 +4888,10 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4887 "util/configparser.c" +#line 4892 "util/configparser.c" break; - case 466: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ + case 467: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ #line 1955 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); @@ -4895,10 +4900,10 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4904 "util/configparser.c" break; - case 467: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ + case 468: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ #line 1964 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); @@ -4907,10 +4912,10 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4911 "util/configparser.c" +#line 4916 "util/configparser.c" break; - case 468: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ + case 469: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ #line 1973 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); @@ -4919,10 +4924,10 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4923 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 469: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ + case 470: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ #line 1982 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); @@ -4932,10 +4937,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" +#line 4941 "util/configparser.c" break; - case 470: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ + case 471: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ #line 1992 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -4945,10 +4950,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4949 "util/configparser.c" +#line 4954 "util/configparser.c" break; - case 471: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ + case 472: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ #line 2002 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); @@ -4959,10 +4964,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4963 "util/configparser.c" +#line 4968 "util/configparser.c" break; - case 472: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ + case 473: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ #line 2013 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); @@ -4971,10 +4976,10 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4980 "util/configparser.c" break; - case 473: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ + case 474: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ #line 2022 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); @@ -4983,10 +4988,10 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4987 "util/configparser.c" +#line 4992 "util/configparser.c" break; - case 474: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ + case 475: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ #line 2031 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); @@ -4995,10 +5000,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4999 "util/configparser.c" +#line 5004 "util/configparser.c" break; - case 475: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ + case 476: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ #line 2040 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); @@ -5007,10 +5012,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 476: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ + case 477: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ #line 2049 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); @@ -5019,10 +5024,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5023 "util/configparser.c" +#line 5028 "util/configparser.c" break; - case 477: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ + case 478: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ #line 2058 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); @@ -5031,10 +5036,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5035 "util/configparser.c" +#line 5040 "util/configparser.c" break; - case 478: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ + case 479: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ #line 2067 "./util/configparser.y" { OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str))); @@ -5043,10 +5048,10 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5047 "util/configparser.c" +#line 5052 "util/configparser.c" break; - case 479: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ + case 480: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ #line 2076 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); @@ -5055,10 +5060,10 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5059 "util/configparser.c" +#line 5064 "util/configparser.c" break; - case 480: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ + case 481: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ #line 2085 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); @@ -5071,10 +5076,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5075 "util/configparser.c" +#line 5080 "util/configparser.c" break; - case 481: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ + case 482: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ #line 2098 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); @@ -5087,10 +5092,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5091 "util/configparser.c" +#line 5096 "util/configparser.c" break; - case 482: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ + case 483: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ #line 2111 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); @@ -5099,20 +5104,20 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5103 "util/configparser.c" +#line 5108 "util/configparser.c" break; - case 483: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ + case 484: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ #line 2120 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5113 "util/configparser.c" +#line 5118 "util/configparser.c" break; - case 484: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ + case 485: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ #line 2127 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -5121,10 +5126,10 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5125 "util/configparser.c" +#line 5130 "util/configparser.c" break; - case 485: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ + case 486: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ #line 2136 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); @@ -5133,10 +5138,10 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5137 "util/configparser.c" +#line 5142 "util/configparser.c" break; - case 486: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ + case 487: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ #line 2145 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); @@ -5145,10 +5150,10 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5149 "util/configparser.c" +#line 5154 "util/configparser.c" break; - case 487: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ + case 488: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ #line 2154 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); @@ -5157,10 +5162,10 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5161 "util/configparser.c" +#line 5166 "util/configparser.c" break; - case 488: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ + case 489: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ #line 2163 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); @@ -5170,10 +5175,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5174 "util/configparser.c" +#line 5179 "util/configparser.c" break; - case 489: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ + case 490: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ #line 2172 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); @@ -5181,10 +5186,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5185 "util/configparser.c" +#line 5190 "util/configparser.c" break; - case 490: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ + case 491: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ #line 2180 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5197,10 +5202,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5201 "util/configparser.c" +#line 5206 "util/configparser.c" break; - case 491: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ + case 492: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ #line 2193 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); @@ -5208,10 +5213,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5212 "util/configparser.c" +#line 5217 "util/configparser.c" break; - case 492: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ + case 493: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ #line 2201 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5266,20 +5271,20 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5270 "util/configparser.c" +#line 5275 "util/configparser.c" break; - case 493: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ + case 494: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ #line 2256 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5280 "util/configparser.c" +#line 5285 "util/configparser.c" break; - case 494: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ + case 495: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ #line 2263 "./util/configparser.y" { char* ptr; @@ -5294,10 +5299,10 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5298 "util/configparser.c" +#line 5303 "util/configparser.c" break; - case 495: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ + case 496: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ #line 2278 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); @@ -5307,10 +5312,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5311 "util/configparser.c" +#line 5316 "util/configparser.c" break; - case 496: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ + case 497: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ #line 2288 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); @@ -5320,40 +5325,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 5329 "util/configparser.c" break; - case 497: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ + case 498: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ #line 2298 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5334 "util/configparser.c" +#line 5339 "util/configparser.c" break; - case 498: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ + case 499: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ #line 2305 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5344 "util/configparser.c" +#line 5349 "util/configparser.c" break; - case 499: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ + case 500: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ #line 2312 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5354 "util/configparser.c" +#line 5359 "util/configparser.c" break; - case 500: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ + case 501: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ #line 2319 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); @@ -5362,10 +5367,10 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5366 "util/configparser.c" +#line 5371 "util/configparser.c" break; - case 501: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ + case 502: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ #line 2328 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); @@ -5373,10 +5378,10 @@ yyreduce: (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5377 "util/configparser.c" +#line 5382 "util/configparser.c" break; - case 502: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ + case 503: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ #line 2336 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); @@ -5390,10 +5395,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5394 "util/configparser.c" +#line 5399 "util/configparser.c" break; - case 503: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ + case 504: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ #line 2350 "./util/configparser.y" { size_t len = 0; @@ -5414,10 +5419,10 @@ yyreduce: } } } -#line 5418 "util/configparser.c" +#line 5423 "util/configparser.c" break; - case 504: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ + case 505: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ #line 2371 "./util/configparser.y" { size_t len = 0; @@ -5438,10 +5443,10 @@ yyreduce: } } } -#line 5442 "util/configparser.c" +#line 5447 "util/configparser.c" break; - case 505: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ + case 506: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ #line 2392 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5453,10 +5458,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5457 "util/configparser.c" +#line 5462 "util/configparser.c" break; - case 506: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ + case 507: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ #line 2404 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5468,10 +5473,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5472 "util/configparser.c" +#line 5477 "util/configparser.c" break; - case 507: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ + case 508: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ #line 2416 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5483,10 +5488,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5487 "util/configparser.c" +#line 5492 "util/configparser.c" break; - case 508: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ + case 509: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ #line 2428 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5495,10 +5500,10 @@ yyreduce: yyerror("out of memory"); } } -#line 5499 "util/configparser.c" +#line 5504 "util/configparser.c" break; - case 509: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ + case 510: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ #line 2437 "./util/configparser.y" { size_t len = 0; @@ -5519,10 +5524,10 @@ yyreduce: } } } -#line 5523 "util/configparser.c" +#line 5528 "util/configparser.c" break; - case 510: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ + case 511: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ #line 2458 "./util/configparser.y" { OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5534,10 +5539,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5538 "util/configparser.c" +#line 5543 "util/configparser.c" break; - case 511: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ + case 512: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ #line 2470 "./util/configparser.y" { OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5549,10 +5554,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5553 "util/configparser.c" +#line 5558 "util/configparser.c" break; - case 512: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ + case 513: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ #line 2482 "./util/configparser.y" { OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5561,10 +5566,10 @@ yyreduce: yyerror("out of memory"); } } -#line 5565 "util/configparser.c" +#line 5570 "util/configparser.c" break; - case 513: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ + case 514: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ #line 2491 "./util/configparser.y" { size_t len = 0; @@ -5585,10 +5590,10 @@ yyreduce: } } } -#line 5589 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 514: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ + case 515: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ #line 2512 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); @@ -5597,10 +5602,10 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5601 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 515: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ + case 516: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ #line 2521 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); @@ -5609,10 +5614,10 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5613 "util/configparser.c" +#line 5618 "util/configparser.c" break; - case 516: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ + case 517: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ #line 2530 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -5620,10 +5625,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5629 "util/configparser.c" break; - case 517: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ + case 518: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ #line 2538 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -5631,10 +5636,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5635 "util/configparser.c" +#line 5640 "util/configparser.c" break; - case 518: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ + case 519: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ #line 2546 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -5647,10 +5652,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5651 "util/configparser.c" +#line 5656 "util/configparser.c" break; - case 519: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ + case 520: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ #line 2559 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -5663,10 +5668,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5667 "util/configparser.c" +#line 5672 "util/configparser.c" break; - case 520: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ + case 521: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ #line 2572 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5681,10 +5686,10 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5685 "util/configparser.c" +#line 5690 "util/configparser.c" break; - case 521: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ + case 522: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ #line 2587 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5699,10 +5704,10 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5703 "util/configparser.c" +#line 5708 "util/configparser.c" break; - case 522: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ + case 523: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ #line 2602 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -5711,10 +5716,10 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5715 "util/configparser.c" +#line 5720 "util/configparser.c" break; - case 523: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ + case 524: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ #line 2611 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -5723,10 +5728,10 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5727 "util/configparser.c" +#line 5732 "util/configparser.c" break; - case 524: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ + case 525: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ #line 2620 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); @@ -5736,10 +5741,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5740 "util/configparser.c" +#line 5745 "util/configparser.c" break; - case 525: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ + case 526: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ #line 2630 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); @@ -5749,10 +5754,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5753 "util/configparser.c" +#line 5758 "util/configparser.c" break; - case 526: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ + case 527: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ #line 2640 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); @@ -5761,20 +5766,32 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5765 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 527: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ + case 528: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ #line 2649 "./util/configparser.y" + { + OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 5782 "util/configparser.c" + break; + + case 529: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2658 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5774 "util/configparser.c" +#line 5791 "util/configparser.c" break; - case 528: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2655 "./util/configparser.y" + case 530: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2664 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5782,11 +5799,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5786 "util/configparser.c" +#line 5803 "util/configparser.c" break; - case 529: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2664 "./util/configparser.y" + case 531: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2673 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5794,11 +5811,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5798 "util/configparser.c" +#line 5815 "util/configparser.c" break; - case 530: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2673 "./util/configparser.y" + case 532: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2682 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5807,11 +5824,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5811 "util/configparser.c" +#line 5828 "util/configparser.c" break; - case 531: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2683 "./util/configparser.y" + case 533: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2692 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5820,11 +5837,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5824 "util/configparser.c" +#line 5841 "util/configparser.c" break; - case 532: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2693 "./util/configparser.y" + case 534: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2702 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5833,11 +5850,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5837 "util/configparser.c" +#line 5854 "util/configparser.c" break; - case 533: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2703 "./util/configparser.y" + case 535: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2712 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5845,11 +5862,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5849 "util/configparser.c" +#line 5866 "util/configparser.c" break; - case 534: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2712 "./util/configparser.y" + case 536: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2721 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5858,11 +5875,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5862 "util/configparser.c" +#line 5879 "util/configparser.c" break; - case 535: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2722 "./util/configparser.y" + case 537: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2731 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5870,11 +5887,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5874 "util/configparser.c" +#line 5891 "util/configparser.c" break; - case 536: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2731 "./util/configparser.y" + case 538: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2740 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5886,11 +5903,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5890 "util/configparser.c" +#line 5907 "util/configparser.c" break; - case 537: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2744 "./util/configparser.y" + case 539: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2753 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5902,11 +5919,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5906 "util/configparser.c" +#line 5923 "util/configparser.c" break; - case 538: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2757 "./util/configparser.y" + case 540: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2766 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5917,11 +5934,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5921 "util/configparser.c" +#line 5938 "util/configparser.c" break; - case 539: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2769 "./util/configparser.y" + case 541: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2778 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5934,11 +5951,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5938 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 540: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2783 "./util/configparser.y" + case 542: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2792 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5949,11 +5966,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5953 "util/configparser.c" +#line 5970 "util/configparser.c" break; - case 541: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2795 "./util/configparser.y" + case 543: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2804 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5966,11 +5983,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5970 "util/configparser.c" +#line 5987 "util/configparser.c" break; - case 542: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2809 "./util/configparser.y" + case 544: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2818 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5978,11 +5995,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5982 "util/configparser.c" +#line 5999 "util/configparser.c" break; - case 543: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2818 "./util/configparser.y" + case 545: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2827 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5992,11 +6009,11 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5996 "util/configparser.c" +#line 6013 "util/configparser.c" break; - case 544: /* server_ede: VAR_EDE STRING_ARG */ -#line 2829 "./util/configparser.y" + case 546: /* server_ede: VAR_EDE STRING_ARG */ +#line 2838 "./util/configparser.y" { OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6004,21 +6021,21 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6008 "util/configparser.c" +#line 6025 "util/configparser.c" break; - case 545: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2838 "./util/configparser.y" + case 547: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ +#line 2847 "./util/configparser.y" { OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6018 "util/configparser.c" +#line 6035 "util/configparser.c" break; - case 546: /* stub_name: VAR_NAME STRING_ARG */ -#line 2845 "./util/configparser.y" + case 548: /* stub_name: VAR_NAME STRING_ARG */ +#line 2854 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6027,31 +6044,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6031 "util/configparser.c" +#line 6048 "util/configparser.c" break; - case 547: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2855 "./util/configparser.y" + case 549: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2864 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6041 "util/configparser.c" +#line 6058 "util/configparser.c" break; - case 548: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2862 "./util/configparser.y" + case 550: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2871 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6051 "util/configparser.c" +#line 6068 "util/configparser.c" break; - case 549: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2869 "./util/configparser.y" + case 551: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2878 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6059,11 +6076,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6063 "util/configparser.c" +#line 6080 "util/configparser.c" break; - case 550: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2878 "./util/configparser.y" + case 552: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2887 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6071,11 +6088,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6075 "util/configparser.c" +#line 6092 "util/configparser.c" break; - case 551: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2887 "./util/configparser.y" + case 553: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2896 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6084,11 +6101,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6088 "util/configparser.c" +#line 6105 "util/configparser.c" break; - case 552: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2897 "./util/configparser.y" + case 554: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2906 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6097,11 +6114,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6101 "util/configparser.c" +#line 6118 "util/configparser.c" break; - case 553: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2907 "./util/configparser.y" + case 555: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2916 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6110,11 +6127,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6114 "util/configparser.c" +#line 6131 "util/configparser.c" break; - case 554: /* forward_name: VAR_NAME STRING_ARG */ -#line 2917 "./util/configparser.y" + case 556: /* forward_name: VAR_NAME STRING_ARG */ +#line 2926 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6123,31 +6140,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6127 "util/configparser.c" +#line 6144 "util/configparser.c" break; - case 555: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2927 "./util/configparser.y" + case 557: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2936 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6137 "util/configparser.c" +#line 6154 "util/configparser.c" break; - case 556: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2934 "./util/configparser.y" + case 558: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2943 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6147 "util/configparser.c" +#line 6164 "util/configparser.c" break; - case 557: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2941 "./util/configparser.y" + case 559: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2950 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6155,11 +6172,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6159 "util/configparser.c" +#line 6176 "util/configparser.c" break; - case 558: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2950 "./util/configparser.y" + case 560: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2959 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6167,11 +6184,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6171 "util/configparser.c" +#line 6188 "util/configparser.c" break; - case 559: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2959 "./util/configparser.y" + case 561: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2968 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6180,11 +6197,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6184 "util/configparser.c" +#line 6201 "util/configparser.c" break; - case 560: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2969 "./util/configparser.y" + case 562: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 2978 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6193,11 +6210,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6197 "util/configparser.c" +#line 6214 "util/configparser.c" break; - case 561: /* auth_name: VAR_NAME STRING_ARG */ -#line 2979 "./util/configparser.y" + case 563: /* auth_name: VAR_NAME STRING_ARG */ +#line 2988 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6206,52 +6223,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6210 "util/configparser.c" +#line 6227 "util/configparser.c" break; - case 562: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2989 "./util/configparser.y" + case 564: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2998 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6220 "util/configparser.c" +#line 6237 "util/configparser.c" break; - case 563: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2996 "./util/configparser.y" + case 565: /* auth_master: VAR_MASTER STRING_ARG */ +#line 3005 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6230 "util/configparser.c" +#line 6247 "util/configparser.c" break; - case 564: /* auth_url: VAR_URL STRING_ARG */ -#line 3003 "./util/configparser.y" + case 566: /* auth_url: VAR_URL STRING_ARG */ +#line 3012 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6240 "util/configparser.c" +#line 6257 "util/configparser.c" break; - case 565: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3010 "./util/configparser.y" + case 567: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 3019 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6251 "util/configparser.c" +#line 6268 "util/configparser.c" break; - case 566: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3018 "./util/configparser.y" + case 568: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 3027 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6260,11 +6277,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6281 "util/configparser.c" break; - case 567: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3028 "./util/configparser.y" + case 569: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 3037 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6273,11 +6290,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6277 "util/configparser.c" +#line 6294 "util/configparser.c" break; - case 568: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3038 "./util/configparser.y" + case 570: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 3047 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6286,11 +6303,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6290 "util/configparser.c" +#line 6307 "util/configparser.c" break; - case 569: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3048 "./util/configparser.y" + case 571: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 3057 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6299,11 +6316,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6303 "util/configparser.c" +#line 6320 "util/configparser.c" break; - case 570: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3058 "./util/configparser.y" + case 572: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 3067 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6312,11 +6329,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 6333 "util/configparser.c" break; - case 571: /* view_name: VAR_NAME STRING_ARG */ -#line 3068 "./util/configparser.y" + case 573: /* view_name: VAR_NAME STRING_ARG */ +#line 3077 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6325,11 +6342,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6329 "util/configparser.c" +#line 6346 "util/configparser.c" break; - case 572: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3078 "./util/configparser.y" + case 574: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 3087 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -6384,11 +6401,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6388 "util/configparser.c" +#line 6405 "util/configparser.c" break; - case 573: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3134 "./util/configparser.y" + case 575: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3143 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6397,33 +6414,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6401 "util/configparser.c" +#line 6418 "util/configparser.c" break; - case 574: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3144 "./util/configparser.y" + case 576: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3153 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6412 "util/configparser.c" +#line 6429 "util/configparser.c" break; - case 575: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3152 "./util/configparser.y" + case 577: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3161 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6423 "util/configparser.c" +#line 6440 "util/configparser.c" break; - case 576: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3160 "./util/configparser.y" + case 578: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3169 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6437,11 +6454,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6441 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 577: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3175 "./util/configparser.y" + case 579: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3184 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6449,20 +6466,20 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6453 "util/configparser.c" +#line 6470 "util/configparser.c" break; - case 578: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3184 "./util/configparser.y" + case 580: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3193 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6462 "util/configparser.c" +#line 6479 "util/configparser.c" break; - case 589: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3196 "./util/configparser.y" + case 591: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3205 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6471,11 +6488,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6475 "util/configparser.c" +#line 6492 "util/configparser.c" break; - case 590: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3206 "./util/configparser.y" + case 592: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3215 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6483,80 +6500,80 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6487 "util/configparser.c" +#line 6504 "util/configparser.c" break; - case 591: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3215 "./util/configparser.y" + case 593: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3224 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6497 "util/configparser.c" +#line 6514 "util/configparser.c" break; - case 592: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3222 "./util/configparser.y" + case 594: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3231 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6507 "util/configparser.c" +#line 6524 "util/configparser.c" break; - case 593: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3229 "./util/configparser.y" + case 595: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3238 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6517 "util/configparser.c" +#line 6534 "util/configparser.c" break; - case 594: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3236 "./util/configparser.y" + case 596: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3245 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6527 "util/configparser.c" +#line 6544 "util/configparser.c" break; - case 595: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3243 "./util/configparser.y" + case 597: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3252 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6537 "util/configparser.c" +#line 6554 "util/configparser.c" break; - case 596: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3250 "./util/configparser.y" + case 598: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3259 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6547 "util/configparser.c" +#line 6564 "util/configparser.c" break; - case 597: /* dtstart: VAR_DNSTAP */ -#line 3257 "./util/configparser.y" + case 599: /* dtstart: VAR_DNSTAP */ +#line 3266 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6556 "util/configparser.c" +#line 6573 "util/configparser.c" break; - case 619: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3278 "./util/configparser.y" + case 621: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3287 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6564,11 +6581,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6568 "util/configparser.c" +#line 6585 "util/configparser.c" break; - case 620: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3287 "./util/configparser.y" + case 622: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3296 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6577,31 +6594,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6581 "util/configparser.c" +#line 6598 "util/configparser.c" break; - case 621: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3297 "./util/configparser.y" + case 623: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3306 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6591 "util/configparser.c" +#line 6608 "util/configparser.c" break; - case 622: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3304 "./util/configparser.y" + case 624: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3313 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6601 "util/configparser.c" +#line 6618 "util/configparser.c" break; - case 623: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3311 "./util/configparser.y" + case 625: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3320 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6609,51 +6626,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6613 "util/configparser.c" +#line 6630 "util/configparser.c" break; - case 624: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3320 "./util/configparser.y" + case 626: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3329 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6623 "util/configparser.c" +#line 6640 "util/configparser.c" break; - case 625: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3327 "./util/configparser.y" + case 627: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3336 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6633 "util/configparser.c" +#line 6650 "util/configparser.c" break; - case 626: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3334 "./util/configparser.y" + case 628: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3343 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6643 "util/configparser.c" +#line 6660 "util/configparser.c" break; - case 627: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3341 "./util/configparser.y" + case 629: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3350 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6653 "util/configparser.c" +#line 6670 "util/configparser.c" break; - case 628: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3348 "./util/configparser.y" + case 630: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3357 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6661,11 +6678,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6665 "util/configparser.c" +#line 6682 "util/configparser.c" break; - case 629: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3357 "./util/configparser.y" + case 631: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3366 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6673,31 +6690,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6677 "util/configparser.c" +#line 6694 "util/configparser.c" break; - case 630: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3366 "./util/configparser.y" + case 632: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3375 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6687 "util/configparser.c" +#line 6704 "util/configparser.c" break; - case 631: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3373 "./util/configparser.y" + case 633: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3382 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6697 "util/configparser.c" +#line 6714 "util/configparser.c" break; - case 632: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3380 "./util/configparser.y" + case 634: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3389 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6706,11 +6723,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6710 "util/configparser.c" +#line 6727 "util/configparser.c" break; - case 633: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3390 "./util/configparser.y" + case 635: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3399 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6719,11 +6736,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6723 "util/configparser.c" +#line 6740 "util/configparser.c" break; - case 634: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3400 "./util/configparser.y" + case 636: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3409 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6732,11 +6749,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6736 "util/configparser.c" +#line 6753 "util/configparser.c" break; - case 635: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3410 "./util/configparser.y" + case 637: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3419 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6745,11 +6762,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6749 "util/configparser.c" +#line 6766 "util/configparser.c" break; - case 636: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3420 "./util/configparser.y" + case 638: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3429 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6758,11 +6775,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6762 "util/configparser.c" +#line 6779 "util/configparser.c" break; - case 637: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3430 "./util/configparser.y" + case 639: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3439 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6771,49 +6788,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6775 "util/configparser.c" +#line 6792 "util/configparser.c" break; - case 638: /* pythonstart: VAR_PYTHON */ -#line 3440 "./util/configparser.y" + case 640: /* pythonstart: VAR_PYTHON */ +#line 3449 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6784 "util/configparser.c" +#line 6801 "util/configparser.c" break; - case 642: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3450 "./util/configparser.y" + case 644: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3459 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6794 "util/configparser.c" +#line 6811 "util/configparser.c" break; - case 643: /* dynlibstart: VAR_DYNLIB */ -#line 3456 "./util/configparser.y" + case 645: /* dynlibstart: VAR_DYNLIB */ +#line 3465 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6803 "util/configparser.c" +#line 6820 "util/configparser.c" break; - case 647: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3466 "./util/configparser.y" + case 649: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3475 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6813 "util/configparser.c" +#line 6830 "util/configparser.c" break; - case 648: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3472 "./util/configparser.y" + case 650: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3481 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6822,21 +6839,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6826 "util/configparser.c" +#line 6843 "util/configparser.c" break; - case 649: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3482 "./util/configparser.y" + case 651: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3491 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6836 "util/configparser.c" +#line 6853 "util/configparser.c" break; - case 650: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3489 "./util/configparser.y" + case 652: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3498 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6844,31 +6861,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6848 "util/configparser.c" +#line 6865 "util/configparser.c" break; - case 651: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3498 "./util/configparser.y" + case 653: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3507 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6859 "util/configparser.c" +#line 6876 "util/configparser.c" break; - case 652: /* dnscstart: VAR_DNSCRYPT */ -#line 3506 "./util/configparser.y" + case 654: /* dnscstart: VAR_DNSCRYPT */ +#line 3515 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6868 "util/configparser.c" +#line 6885 "util/configparser.c" break; - case 665: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3523 "./util/configparser.y" + case 667: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3532 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6876,11 +6893,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6880 "util/configparser.c" +#line 6897 "util/configparser.c" break; - case 666: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3533 "./util/configparser.y" + case 668: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3542 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6888,21 +6905,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6892 "util/configparser.c" +#line 6909 "util/configparser.c" break; - case 667: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3542 "./util/configparser.y" + case 669: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3551 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6902 "util/configparser.c" +#line 6919 "util/configparser.c" break; - case 668: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3549 "./util/configparser.y" + case 670: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3558 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6910,21 +6927,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6914 "util/configparser.c" +#line 6931 "util/configparser.c" break; - case 669: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3558 "./util/configparser.y" + case 671: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3567 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6924 "util/configparser.c" +#line 6941 "util/configparser.c" break; - case 670: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3565 "./util/configparser.y" + case 672: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3574 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6932,22 +6949,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6936 "util/configparser.c" +#line 6953 "util/configparser.c" break; - case 671: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3574 "./util/configparser.y" + case 673: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3583 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6947 "util/configparser.c" +#line 6964 "util/configparser.c" break; - case 672: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3582 "./util/configparser.y" + case 674: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3591 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6959,22 +6976,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6963 "util/configparser.c" +#line 6980 "util/configparser.c" break; - case 673: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3595 "./util/configparser.y" + case 675: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3604 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6974 "util/configparser.c" +#line 6991 "util/configparser.c" break; - case 674: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3603 "./util/configparser.y" + case 676: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3612 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6986,20 +7003,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6990 "util/configparser.c" +#line 7007 "util/configparser.c" break; - case 675: /* cachedbstart: VAR_CACHEDB */ -#line 3616 "./util/configparser.y" + case 677: /* cachedbstart: VAR_CACHEDB */ +#line 3625 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 6999 "util/configparser.c" +#line 7016 "util/configparser.c" break; - case 684: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3628 "./util/configparser.y" + case 686: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3637 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7010,11 +7027,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7014 "util/configparser.c" +#line 7031 "util/configparser.c" break; - case 685: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3640 "./util/configparser.y" + case 687: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3649 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7025,11 +7042,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7029 "util/configparser.c" +#line 7046 "util/configparser.c" break; - case 686: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3652 "./util/configparser.y" + case 688: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3661 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7040,11 +7057,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7044 "util/configparser.c" +#line 7061 "util/configparser.c" break; - case 687: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3664 "./util/configparser.y" + case 689: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3673 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7058,11 +7075,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7062 "util/configparser.c" +#line 7079 "util/configparser.c" break; - case 688: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3679 "./util/configparser.y" + case 690: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3688 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7074,11 +7091,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7078 "util/configparser.c" +#line 7095 "util/configparser.c" break; - case 689: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3692 "./util/configparser.y" + case 691: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3701 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7090,11 +7107,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7094 "util/configparser.c" +#line 7111 "util/configparser.c" break; - case 690: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3705 "./util/configparser.y" + case 692: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3714 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7104,20 +7121,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7108 "util/configparser.c" +#line 7125 "util/configparser.c" break; - case 691: /* ipsetstart: VAR_IPSET */ -#line 3716 "./util/configparser.y" + case 693: /* ipsetstart: VAR_IPSET */ +#line 3725 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7117 "util/configparser.c" +#line 7134 "util/configparser.c" break; - case 696: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3726 "./util/configparser.y" + case 698: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3735 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7131,11 +7148,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7135 "util/configparser.c" +#line 7152 "util/configparser.c" break; - case 697: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3741 "./util/configparser.y" + case 699: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3750 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7149,11 +7166,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7153 "util/configparser.c" +#line 7170 "util/configparser.c" break; -#line 7157 "util/configparser.c" +#line 7174 "util/configparser.c" default: break; } @@ -7346,7 +7363,7 @@ yyreturnlab: return yyresult; } -#line 3755 "./util/configparser.y" +#line 3764 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index dba009dc3..f01b4e811 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -254,138 +254,139 @@ extern int yydebug; VAR_RATELIMIT_SLABS = 455, /* VAR_RATELIMIT_SLABS */ VAR_RATELIMIT_SIZE = 456, /* VAR_RATELIMIT_SIZE */ VAR_OUTBOUND_MSG_RETRY = 457, /* VAR_OUTBOUND_MSG_RETRY */ - VAR_RATELIMIT_FOR_DOMAIN = 458, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 459, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 460, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 461, /* VAR_RATELIMIT_FACTOR */ - VAR_IP_RATELIMIT_BACKOFF = 462, /* VAR_IP_RATELIMIT_BACKOFF */ - VAR_RATELIMIT_BACKOFF = 463, /* VAR_RATELIMIT_BACKOFF */ - VAR_SEND_CLIENT_SUBNET = 464, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 465, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 466, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 467, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 469, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 471, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 473, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 474, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 475, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 476, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 477, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 478, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 479, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 480, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 481, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 482, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 483, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 484, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 485, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 486, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 487, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 488, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 489, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 490, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 491, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 492, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 493, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_EDE_SERVE_EXPIRED = 494, /* VAR_EDE_SERVE_EXPIRED */ - VAR_SERVE_ORIGINAL_TTL = 495, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 496, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 497, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 498, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 499, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 500, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 501, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 502, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 503, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 504, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 505, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 506, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 507, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 508, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 509, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 510, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 511, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 512, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 513, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 514, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 515, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 516, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 517, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 518, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 519, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 520, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 521, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 522, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 523, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 524, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 525, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 526, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 527, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 528, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 529, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 530, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 531, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 532, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 533, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 534, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 535, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 536, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 537, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 538, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 539, /* VAR_ZONEFILE */ - VAR_MASTER = 540, /* VAR_MASTER */ - VAR_URL = 541, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 542, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 543, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 544, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 545, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 546, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 547, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 548, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 549, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 550, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 551, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 552, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 553, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 554, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 555, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 556, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 557, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 558, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 559, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 560, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 561, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 562, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 563, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 564, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 565, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 566, /* VAR_RPZ */ - VAR_TAGS = 567, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 568, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 569, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 570, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 571, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 572, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 573, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 574, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 575, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 576, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 577, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 578, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 579, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 580, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - VAR_INTERFACE_AUTOMATIC_PORTS = 581, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - VAR_EDE = 582, /* VAR_EDE */ - VAR_INTERFACE_ACTION = 583, /* VAR_INTERFACE_ACTION */ - VAR_INTERFACE_VIEW = 584, /* VAR_INTERFACE_VIEW */ - VAR_INTERFACE_TAG = 585, /* VAR_INTERFACE_TAG */ - VAR_INTERFACE_TAG_ACTION = 586, /* VAR_INTERFACE_TAG_ACTION */ - VAR_INTERFACE_TAG_DATA = 587, /* VAR_INTERFACE_TAG_DATA */ - VAR_PROXY_PROTOCOL_PORT = 588, /* VAR_PROXY_PROTOCOL_PORT */ - VAR_STATISTICS_INHIBIT_ZERO = 589 /* VAR_STATISTICS_INHIBIT_ZERO */ + VAR_MAX_SENT_COUNT = 458, /* VAR_MAX_SENT_COUNT */ + VAR_RATELIMIT_FOR_DOMAIN = 459, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 460, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 461, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 462, /* VAR_RATELIMIT_FACTOR */ + VAR_IP_RATELIMIT_BACKOFF = 463, /* VAR_IP_RATELIMIT_BACKOFF */ + VAR_RATELIMIT_BACKOFF = 464, /* VAR_RATELIMIT_BACKOFF */ + VAR_SEND_CLIENT_SUBNET = 465, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 466, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 467, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 468, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 469, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 470, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 471, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 472, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 473, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 474, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 475, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 476, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 477, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 478, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 479, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 480, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 481, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 482, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 483, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 484, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 485, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 486, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 487, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 488, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 489, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 490, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 491, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 492, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 493, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 494, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_EDE_SERVE_EXPIRED = 495, /* VAR_EDE_SERVE_EXPIRED */ + VAR_SERVE_ORIGINAL_TTL = 496, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 497, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 498, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 499, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 500, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 501, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 502, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 503, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 504, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 505, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 506, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 507, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 508, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 509, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 510, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 511, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 512, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 513, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 514, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 515, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 516, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 517, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 518, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 519, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 520, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 521, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 522, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 523, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 524, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 525, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 526, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 527, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 528, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 529, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 530, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 531, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 532, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 533, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 534, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 535, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 536, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 537, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 538, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 539, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 540, /* VAR_ZONEFILE */ + VAR_MASTER = 541, /* VAR_MASTER */ + VAR_URL = 542, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 543, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 544, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 545, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 546, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 547, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 548, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 549, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 550, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 551, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 552, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 553, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 554, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 555, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 556, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 557, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 558, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 559, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 560, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 561, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 562, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 563, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 564, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 565, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 566, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 567, /* VAR_RPZ */ + VAR_TAGS = 568, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 569, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 570, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 571, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 572, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 573, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 574, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 575, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 576, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 577, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 578, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 579, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 580, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 581, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_INTERFACE_AUTOMATIC_PORTS = 582, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + VAR_EDE = 583, /* VAR_EDE */ + VAR_INTERFACE_ACTION = 584, /* VAR_INTERFACE_ACTION */ + VAR_INTERFACE_VIEW = 585, /* VAR_INTERFACE_VIEW */ + VAR_INTERFACE_TAG = 586, /* VAR_INTERFACE_TAG */ + VAR_INTERFACE_TAG_ACTION = 587, /* VAR_INTERFACE_TAG_ACTION */ + VAR_INTERFACE_TAG_DATA = 588, /* VAR_INTERFACE_TAG_DATA */ + VAR_PROXY_PROTOCOL_PORT = 589, /* VAR_PROXY_PROTOCOL_PORT */ + VAR_STATISTICS_INHIBIT_ZERO = 590 /* VAR_STATISTICS_INHIBIT_ZERO */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -594,138 +595,139 @@ extern int yydebug; #define VAR_RATELIMIT_SLABS 455 #define VAR_RATELIMIT_SIZE 456 #define VAR_OUTBOUND_MSG_RETRY 457 -#define VAR_RATELIMIT_FOR_DOMAIN 458 -#define VAR_RATELIMIT_BELOW_DOMAIN 459 -#define VAR_IP_RATELIMIT_FACTOR 460 -#define VAR_RATELIMIT_FACTOR 461 -#define VAR_IP_RATELIMIT_BACKOFF 462 -#define VAR_RATELIMIT_BACKOFF 463 -#define VAR_SEND_CLIENT_SUBNET 464 -#define VAR_CLIENT_SUBNET_ZONE 465 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 466 -#define VAR_CLIENT_SUBNET_OPCODE 467 -#define VAR_MAX_CLIENT_SUBNET_IPV4 468 -#define VAR_MAX_CLIENT_SUBNET_IPV6 469 -#define VAR_MIN_CLIENT_SUBNET_IPV4 470 -#define VAR_MIN_CLIENT_SUBNET_IPV6 471 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 472 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 473 -#define VAR_CAPS_WHITELIST 474 -#define VAR_CACHE_MAX_NEGATIVE_TTL 475 -#define VAR_PERMIT_SMALL_HOLDDOWN 476 -#define VAR_QNAME_MINIMISATION 477 -#define VAR_QNAME_MINIMISATION_STRICT 478 -#define VAR_IP_FREEBIND 479 -#define VAR_DEFINE_TAG 480 -#define VAR_LOCAL_ZONE_TAG 481 -#define VAR_ACCESS_CONTROL_TAG 482 -#define VAR_LOCAL_ZONE_OVERRIDE 483 -#define VAR_ACCESS_CONTROL_TAG_ACTION 484 -#define VAR_ACCESS_CONTROL_TAG_DATA 485 -#define VAR_VIEW 486 -#define VAR_ACCESS_CONTROL_VIEW 487 -#define VAR_VIEW_FIRST 488 -#define VAR_SERVE_EXPIRED 489 -#define VAR_SERVE_EXPIRED_TTL 490 -#define VAR_SERVE_EXPIRED_TTL_RESET 491 -#define VAR_SERVE_EXPIRED_REPLY_TTL 492 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 493 -#define VAR_EDE_SERVE_EXPIRED 494 -#define VAR_SERVE_ORIGINAL_TTL 495 -#define VAR_FAKE_DSA 496 -#define VAR_FAKE_SHA1 497 -#define VAR_LOG_IDENTITY 498 -#define VAR_HIDE_TRUSTANCHOR 499 -#define VAR_HIDE_HTTP_USER_AGENT 500 -#define VAR_HTTP_USER_AGENT 501 -#define VAR_TRUST_ANCHOR_SIGNALING 502 -#define VAR_AGGRESSIVE_NSEC 503 -#define VAR_USE_SYSTEMD 504 -#define VAR_SHM_ENABLE 505 -#define VAR_SHM_KEY 506 -#define VAR_ROOT_KEY_SENTINEL 507 -#define VAR_DNSCRYPT 508 -#define VAR_DNSCRYPT_ENABLE 509 -#define VAR_DNSCRYPT_PORT 510 -#define VAR_DNSCRYPT_PROVIDER 511 -#define VAR_DNSCRYPT_SECRET_KEY 512 -#define VAR_DNSCRYPT_PROVIDER_CERT 513 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 514 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 515 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 516 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 517 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 518 -#define VAR_PAD_RESPONSES 519 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 520 -#define VAR_PAD_QUERIES 521 -#define VAR_PAD_QUERIES_BLOCK_SIZE 522 -#define VAR_IPSECMOD_ENABLED 523 -#define VAR_IPSECMOD_HOOK 524 -#define VAR_IPSECMOD_IGNORE_BOGUS 525 -#define VAR_IPSECMOD_MAX_TTL 526 -#define VAR_IPSECMOD_WHITELIST 527 -#define VAR_IPSECMOD_STRICT 528 -#define VAR_CACHEDB 529 -#define VAR_CACHEDB_BACKEND 530 -#define VAR_CACHEDB_SECRETSEED 531 -#define VAR_CACHEDB_REDISHOST 532 -#define VAR_CACHEDB_REDISPORT 533 -#define VAR_CACHEDB_REDISTIMEOUT 534 -#define VAR_CACHEDB_REDISEXPIRERECORDS 535 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 536 -#define VAR_FOR_UPSTREAM 537 -#define VAR_AUTH_ZONE 538 -#define VAR_ZONEFILE 539 -#define VAR_MASTER 540 -#define VAR_URL 541 -#define VAR_FOR_DOWNSTREAM 542 -#define VAR_FALLBACK_ENABLED 543 -#define VAR_TLS_ADDITIONAL_PORT 544 -#define VAR_LOW_RTT 545 -#define VAR_LOW_RTT_PERMIL 546 -#define VAR_FAST_SERVER_PERMIL 547 -#define VAR_FAST_SERVER_NUM 548 -#define VAR_ALLOW_NOTIFY 549 -#define VAR_TLS_WIN_CERT 550 -#define VAR_TCP_CONNECTION_LIMIT 551 -#define VAR_FORWARD_NO_CACHE 552 -#define VAR_STUB_NO_CACHE 553 -#define VAR_LOG_SERVFAIL 554 -#define VAR_DENY_ANY 555 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 556 -#define VAR_LOG_TAG_QUERYREPLY 557 -#define VAR_STREAM_WAIT_SIZE 558 -#define VAR_TLS_CIPHERS 559 -#define VAR_TLS_CIPHERSUITES 560 -#define VAR_TLS_USE_SNI 561 -#define VAR_IPSET 562 -#define VAR_IPSET_NAME_V4 563 -#define VAR_IPSET_NAME_V6 564 -#define VAR_TLS_SESSION_TICKET_KEYS 565 -#define VAR_RPZ 566 -#define VAR_TAGS 567 -#define VAR_RPZ_ACTION_OVERRIDE 568 -#define VAR_RPZ_CNAME_OVERRIDE 569 -#define VAR_RPZ_LOG 570 -#define VAR_RPZ_LOG_NAME 571 -#define VAR_DYNLIB 572 -#define VAR_DYNLIB_FILE 573 -#define VAR_EDNS_CLIENT_STRING 574 -#define VAR_EDNS_CLIENT_STRING_OPCODE 575 -#define VAR_NSID 576 -#define VAR_ZONEMD_PERMISSIVE_MODE 577 -#define VAR_ZONEMD_CHECK 578 -#define VAR_ZONEMD_REJECT_ABSENCE 579 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 580 -#define VAR_INTERFACE_AUTOMATIC_PORTS 581 -#define VAR_EDE 582 -#define VAR_INTERFACE_ACTION 583 -#define VAR_INTERFACE_VIEW 584 -#define VAR_INTERFACE_TAG 585 -#define VAR_INTERFACE_TAG_ACTION 586 -#define VAR_INTERFACE_TAG_DATA 587 -#define VAR_PROXY_PROTOCOL_PORT 588 -#define VAR_STATISTICS_INHIBIT_ZERO 589 +#define VAR_MAX_SENT_COUNT 458 +#define VAR_RATELIMIT_FOR_DOMAIN 459 +#define VAR_RATELIMIT_BELOW_DOMAIN 460 +#define VAR_IP_RATELIMIT_FACTOR 461 +#define VAR_RATELIMIT_FACTOR 462 +#define VAR_IP_RATELIMIT_BACKOFF 463 +#define VAR_RATELIMIT_BACKOFF 464 +#define VAR_SEND_CLIENT_SUBNET 465 +#define VAR_CLIENT_SUBNET_ZONE 466 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 467 +#define VAR_CLIENT_SUBNET_OPCODE 468 +#define VAR_MAX_CLIENT_SUBNET_IPV4 469 +#define VAR_MAX_CLIENT_SUBNET_IPV6 470 +#define VAR_MIN_CLIENT_SUBNET_IPV4 471 +#define VAR_MIN_CLIENT_SUBNET_IPV6 472 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 473 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 474 +#define VAR_CAPS_WHITELIST 475 +#define VAR_CACHE_MAX_NEGATIVE_TTL 476 +#define VAR_PERMIT_SMALL_HOLDDOWN 477 +#define VAR_QNAME_MINIMISATION 478 +#define VAR_QNAME_MINIMISATION_STRICT 479 +#define VAR_IP_FREEBIND 480 +#define VAR_DEFINE_TAG 481 +#define VAR_LOCAL_ZONE_TAG 482 +#define VAR_ACCESS_CONTROL_TAG 483 +#define VAR_LOCAL_ZONE_OVERRIDE 484 +#define VAR_ACCESS_CONTROL_TAG_ACTION 485 +#define VAR_ACCESS_CONTROL_TAG_DATA 486 +#define VAR_VIEW 487 +#define VAR_ACCESS_CONTROL_VIEW 488 +#define VAR_VIEW_FIRST 489 +#define VAR_SERVE_EXPIRED 490 +#define VAR_SERVE_EXPIRED_TTL 491 +#define VAR_SERVE_EXPIRED_TTL_RESET 492 +#define VAR_SERVE_EXPIRED_REPLY_TTL 493 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 494 +#define VAR_EDE_SERVE_EXPIRED 495 +#define VAR_SERVE_ORIGINAL_TTL 496 +#define VAR_FAKE_DSA 497 +#define VAR_FAKE_SHA1 498 +#define VAR_LOG_IDENTITY 499 +#define VAR_HIDE_TRUSTANCHOR 500 +#define VAR_HIDE_HTTP_USER_AGENT 501 +#define VAR_HTTP_USER_AGENT 502 +#define VAR_TRUST_ANCHOR_SIGNALING 503 +#define VAR_AGGRESSIVE_NSEC 504 +#define VAR_USE_SYSTEMD 505 +#define VAR_SHM_ENABLE 506 +#define VAR_SHM_KEY 507 +#define VAR_ROOT_KEY_SENTINEL 508 +#define VAR_DNSCRYPT 509 +#define VAR_DNSCRYPT_ENABLE 510 +#define VAR_DNSCRYPT_PORT 511 +#define VAR_DNSCRYPT_PROVIDER 512 +#define VAR_DNSCRYPT_SECRET_KEY 513 +#define VAR_DNSCRYPT_PROVIDER_CERT 514 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 515 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 516 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 517 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 518 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 519 +#define VAR_PAD_RESPONSES 520 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 521 +#define VAR_PAD_QUERIES 522 +#define VAR_PAD_QUERIES_BLOCK_SIZE 523 +#define VAR_IPSECMOD_ENABLED 524 +#define VAR_IPSECMOD_HOOK 525 +#define VAR_IPSECMOD_IGNORE_BOGUS 526 +#define VAR_IPSECMOD_MAX_TTL 527 +#define VAR_IPSECMOD_WHITELIST 528 +#define VAR_IPSECMOD_STRICT 529 +#define VAR_CACHEDB 530 +#define VAR_CACHEDB_BACKEND 531 +#define VAR_CACHEDB_SECRETSEED 532 +#define VAR_CACHEDB_REDISHOST 533 +#define VAR_CACHEDB_REDISPORT 534 +#define VAR_CACHEDB_REDISTIMEOUT 535 +#define VAR_CACHEDB_REDISEXPIRERECORDS 536 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 537 +#define VAR_FOR_UPSTREAM 538 +#define VAR_AUTH_ZONE 539 +#define VAR_ZONEFILE 540 +#define VAR_MASTER 541 +#define VAR_URL 542 +#define VAR_FOR_DOWNSTREAM 543 +#define VAR_FALLBACK_ENABLED 544 +#define VAR_TLS_ADDITIONAL_PORT 545 +#define VAR_LOW_RTT 546 +#define VAR_LOW_RTT_PERMIL 547 +#define VAR_FAST_SERVER_PERMIL 548 +#define VAR_FAST_SERVER_NUM 549 +#define VAR_ALLOW_NOTIFY 550 +#define VAR_TLS_WIN_CERT 551 +#define VAR_TCP_CONNECTION_LIMIT 552 +#define VAR_FORWARD_NO_CACHE 553 +#define VAR_STUB_NO_CACHE 554 +#define VAR_LOG_SERVFAIL 555 +#define VAR_DENY_ANY 556 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 557 +#define VAR_LOG_TAG_QUERYREPLY 558 +#define VAR_STREAM_WAIT_SIZE 559 +#define VAR_TLS_CIPHERS 560 +#define VAR_TLS_CIPHERSUITES 561 +#define VAR_TLS_USE_SNI 562 +#define VAR_IPSET 563 +#define VAR_IPSET_NAME_V4 564 +#define VAR_IPSET_NAME_V6 565 +#define VAR_TLS_SESSION_TICKET_KEYS 566 +#define VAR_RPZ 567 +#define VAR_TAGS 568 +#define VAR_RPZ_ACTION_OVERRIDE 569 +#define VAR_RPZ_CNAME_OVERRIDE 570 +#define VAR_RPZ_LOG 571 +#define VAR_RPZ_LOG_NAME 572 +#define VAR_DYNLIB 573 +#define VAR_DYNLIB_FILE 574 +#define VAR_EDNS_CLIENT_STRING 575 +#define VAR_EDNS_CLIENT_STRING_OPCODE 576 +#define VAR_NSID 577 +#define VAR_ZONEMD_PERMISSIVE_MODE 578 +#define VAR_ZONEMD_CHECK 579 +#define VAR_ZONEMD_REJECT_ABSENCE 580 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 581 +#define VAR_INTERFACE_AUTOMATIC_PORTS 582 +#define VAR_EDE 583 +#define VAR_INTERFACE_ACTION 584 +#define VAR_INTERFACE_VIEW 585 +#define VAR_INTERFACE_TAG 586 +#define VAR_INTERFACE_TAG_ACTION 587 +#define VAR_INTERFACE_TAG_DATA 588 +#define VAR_PROXY_PROTOCOL_PORT 589 +#define VAR_STATISTICS_INHIBIT_ZERO 590 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -735,7 +737,7 @@ union YYSTYPE char* str; -#line 739 "util/configparser.h" +#line 741 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index b449d7def..a982bdd40 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -140,7 +140,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DISABLE_DNSSEC_LAME_CHECK %token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE -%token VAR_OUTBOUND_MSG_RETRY +%token VAR_OUTBOUND_MSG_RETRY VAR_MAX_SENT_COUNT %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR %token VAR_IP_RATELIMIT_BACKOFF VAR_RATELIMIT_BACKOFF @@ -281,7 +281,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_ratelimit_for_domain | server_ratelimit_below_domain | server_ratelimit_factor | server_ip_ratelimit_factor | server_ratelimit_backoff | - server_ip_ratelimit_backoff | server_outbound_msg_retry | + server_ip_ratelimit_backoff | server_outbound_msg_retry | server_max_sent_count | server_send_client_subnet | server_client_subnet_zone | server_client_subnet_always_forward | server_client_subnet_opcode | server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 | @@ -2645,6 +2645,15 @@ server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG free($2); } ; +server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG + { + OUTYY(("P(server_max_sent_count:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_sent_count = atoi($2); + free($2); + } + ; server_low_rtt: VAR_LOW_RTT STRING_ARG { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); From df411b3f2833ecf668fb750623c9fccebc58c827 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 13 Dec 2022 15:08:11 +0100 Subject: [PATCH 033/177] - Updates for #461 (Add max-query-restarts option). --- doc/example.conf.in | 4 + doc/unbound.conf.5.in | 10 +- iterator/iterator.h | 7 +- util/config_file.c | 8 +- util/config_file.h | 7 +- util/configlexer.c | 5151 +++++++++++++++++++++-------------------- util/configlexer.lex | 2 +- util/configparser.c | 4094 ++++++++++++++++---------------- util/configparser.h | 532 ++--- util/configparser.y | 25 +- 10 files changed, 4939 insertions(+), 4901 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 0fdf3d0b1..47c3c4891 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -183,6 +183,10 @@ server: # It resets on query restarts (e.g., CNAME) and referrals. # max-sent-count: 32 + # Hard limit on the number of times Unbound is allowed to restart a + # query upon encountering a CNAME record. + # max-query-restarts: 11 + # msec for waiting for an unknown server to reply. Increase if you # are behind a slow satellite link, to eg. 1128. # unknown-server-time-limit: 376 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 2dd855c51..572ebc34f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1831,14 +1831,16 @@ Default is 5. .B max\-sent\-count: \fI Hard limit on the number of outgoing queries Unbound will make while resolving a name, making sure large NS sets do not loop. +Results in SERVFAIL when reached. It resets on query restarts (e.g., CNAME) and referrals. Default is 32. .TP 5 .B max\-query\-restarts: \fI -Set the maximum number of times a query is allowed to restart upon encountering -a CNAME record. -If a query encounters more than the specified number of CNAME -records before resolving, Unbound will reply with SERVFAIL. +Hard limit on the number of times Unbound is allowed to restart a query upon +encountering a CNAME record. +Results in SERVFAIL when reached. +Changing this value needs caution as it can allow long CNAME chains to be +accepted, where Unbound needs to verify (resolve) each link individually. Default is 11. .TP 5 .B fast\-server\-permil: \fI diff --git a/iterator/iterator.h b/iterator/iterator.h index 3118e65b4..89038dc8a 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -63,8 +63,6 @@ struct rbtree_type; /** max number of nxdomains allowed for target lookups for a query and * its subqueries when fallback has kicked in */ #define MAX_TARGET_NX_FALLBACK (MAX_TARGET_NX*2) -/** max number of query restarts. Determines max number of CNAME chain. */ -#define MAX_RESTART_COUNT 11 /** max number of referrals. Makes sure resolver does not run away */ #define MAX_REFERRAL_COUNT 130 /** max number of queries for which to perform dnsseclameness detection, @@ -141,13 +139,14 @@ struct iter_env { /** number of queries that have been ratelimited */ size_t num_queries_ratelimited; - /** max number of query restarts to limit length of CNAME chain */ - size_t max_query_restarts; /** number of retries on outgoing queries */ int outbound_msg_retry; /** number of queries_sent */ int max_sent_count; + + /** max number of query restarts to limit length of CNAME chain */ + int max_query_restarts; }; /** diff --git a/util/config_file.c b/util/config_file.c index b6f16a587..e3a770537 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -338,6 +338,7 @@ config_create(void) cfg->ratelimit_backoff = 0; cfg->outbound_msg_retry = 5; cfg->max_sent_count = 32; + cfg->max_query_restarts = 11; cfg->qname_minimisation = 1; cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; @@ -358,7 +359,6 @@ config_create(void) cfg->pad_responses_block_size = 468; /* from RFC8467 */ cfg->pad_queries = 1; cfg->pad_queries_block_size = 128; /* from RFC8467 */ - cfg->max_query_restarts = MAX_RESTART_COUNT; #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; cfg->ipsecmod_ignore_bogus = 0; @@ -782,8 +782,8 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("ip-ratelimit-backoff:", ip_ratelimit_backoff) else S_YNO("ratelimit-backoff:", ratelimit_backoff) else S_NUMBER_NONZERO("outbound-msg-retry:", outbound_msg_retry) - else S_NUMBER_NONZERO("max-sent-count", max_sent_count) - else S_SIZET_NONZERO("max-query-restarts:", max_query_restarts) + else S_NUMBER_NONZERO("max-sent-count:", max_sent_count) + else S_NUMBER_NONZERO("max-query-restarts:", max_query_restarts) else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) @@ -1246,7 +1246,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "ratelimit-backoff", ratelimit_backoff) else O_UNS(opt, "outbound-msg-retry", outbound_msg_retry) else O_UNS(opt, "max-sent-count", max_sent_count) - else O_DEC(opt, "max-query-restarts", max_query_restarts) + else O_UNS(opt, "max-query-restarts", max_query_restarts) else O_DEC(opt, "fast-server-num", fast_server_num) else O_DEC(opt, "fast-server-permil", fast_server_permil) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) diff --git a/util/config_file.h b/util/config_file.h index 15592ef7d..87cb92cf0 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -611,8 +611,10 @@ struct config_file { /** number of retries on outgoing queries */ int outbound_msg_retry; /** max sent queries per qstate; resets on query restarts (e.g., - * CNAMES) and referrals. */ + * CNAMES) and referrals */ int max_sent_count; + /** max number of query restarts; determines max length of CNAME chain */ + int max_query_restarts; /** minimise outgoing QNAME and hide original QTYPE if possible */ int qname_minimisation; /** minimise QNAME in strict mode, minimise according to RFC. @@ -662,9 +664,6 @@ struct config_file { /** block size with which to pad encrypted queries (default: 128) */ size_t pad_queries_block_size; - /** max number of query restarts. Determines max number of CNAME chain (default: 8) */ - size_t max_query_restarts; - /** IPsec module */ #ifdef USE_IPSECMOD /** false to bypass the IPsec module */ diff --git a/util/configlexer.c b/util/configlexer.c index 50d22f9d8..09115716e 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 371 -#define YY_END_OF_BUFFER 372 +#define YY_NUM_RULES 372 +#define YY_END_OF_BUFFER 373 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,411 +363,413 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3668] = +static const flex_int16_t yy_accept[3683] = { 0, - 1, 1, 345, 345, 349, 349, 353, 353, 357, 357, - 1, 1, 361, 361, 365, 365, 372, 369, 1, 343, - 343, 370, 2, 370, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 345, 346, 346, 347, - 370, 349, 350, 350, 351, 370, 356, 353, 354, 354, - 355, 370, 357, 358, 358, 359, 370, 368, 344, 2, - 348, 370, 368, 364, 361, 362, 362, 363, 370, 365, - 366, 366, 367, 370, 369, 0, 1, 2, 2, 2, - 2, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 1, 1, 346, 346, 350, 350, 354, 354, 358, 358, + 1, 1, 362, 362, 366, 366, 373, 370, 1, 344, + 344, 371, 2, 371, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 346, 347, 347, 348, + 371, 350, 351, 351, 352, 371, 357, 354, 355, 355, + 356, 371, 358, 359, 359, 360, 371, 369, 345, 2, + 349, 371, 369, 365, 362, 363, 363, 364, 371, 366, + 367, 367, 368, 371, 370, 0, 1, 2, 2, 2, + 2, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 345, - 0, 349, 0, 356, 0, 353, 357, 0, 368, 0, - 2, 2, 368, 364, 0, 361, 365, 0, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 346, + 0, 350, 0, 357, 0, 354, 358, 0, 369, 0, + 2, 2, 369, 365, 0, 362, 366, 0, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 368, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 369, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 341, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 133, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 143, 369, 369, 369, 369, - 369, 369, 369, 368, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 342, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 133, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 143, 370, 370, 370, 370, + 370, 370, 370, 369, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 115, 369, 340, 369, 369, - 369, 369, 369, 369, 369, 369, 8, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 115, 370, 341, 370, + 370, 370, 370, 370, 370, 370, 370, 8, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 134, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 148, 369, 369, 368, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 134, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 148, 370, 370, 369, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 333, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 334, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 368, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 69, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 261, - 369, 14, 15, 369, 19, 18, 369, 369, 241, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 369, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 69, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 261, 370, 14, 15, 370, 19, 18, 370, 370, + 241, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 141, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 239, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 3, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 141, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 239, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 3, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 368, 369, 369, 369, 369, 369, 369, - 369, 327, 369, 369, 326, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 369, 370, 370, 370, + 370, 370, 370, 370, 328, 370, 370, 327, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 352, 369, 369, 369, 369, - 369, 369, 369, 369, 68, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 72, 369, 296, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 334, 335, 369, 369, 369, 369, - 369, 369, 369, 369, 73, 369, 369, 142, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 137, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 228, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 353, 370, + 370, 370, 370, 370, 370, 370, 370, 68, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 72, 370, 297, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 335, 336, + 370, 370, 370, 370, 370, 370, 370, 370, 73, 370, + 370, 142, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 137, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 228, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 21, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 169, 369, 369, 369, 369, 369, 368, 352, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 113, - 369, 369, 369, 369, 369, 369, 369, 304, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 21, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 169, 370, 370, 370, 370, 370, + 369, 353, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 113, 370, 370, 370, 370, 370, 370, + 370, 305, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 196, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 168, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 112, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 196, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 168, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 112, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 35, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 36, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 70, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 140, 369, - 369, 369, 368, 369, 369, 369, 369, 369, 132, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 71, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 35, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 36, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 70, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 140, 370, 370, 370, 369, 370, 370, + 370, 370, 370, 132, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 71, - 369, 369, 369, 369, 369, 369, 369, 265, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 197, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 58, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 265, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 197, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 58, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 283, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 63, 369, 64, 369, 369, 369, 369, 369, 116, - 369, 117, 369, 369, 369, 369, 369, 114, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 7, 369, 369, 369, 369, 368, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 283, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 63, 370, 64, + 370, 370, 370, 370, 370, 116, 370, 117, 370, 370, + 370, 370, 370, 114, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 7, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 250, 369, 369, 369, 369, - 172, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 266, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 49, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 59, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 369, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 250, 370, 370, 370, 370, 172, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 266, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 49, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 59, 370, 370, 370, - 369, 369, 369, 369, 369, 219, 369, 218, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 16, - 17, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 74, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 227, - 369, 369, 369, 369, 369, 369, 119, 369, 118, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 219, 370, 218, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 16, 17, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 74, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 227, 370, 370, 370, + 370, 370, 370, 119, 370, 118, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 210, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 149, 369, 369, 369, 368, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 107, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 95, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 240, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 100, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 210, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 149, 370, 370, 370, 369, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 107, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 95, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 240, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 100, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 67, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 213, 214, 369, 369, 369, 298, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 6, 369, 369, 369, 369, 369, 369, - 369, 317, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 302, 369, 369, 369, 369, 369, 369, 369, 328, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 67, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 213, 214, 370, 370, 370, 299, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 6, 370, 370, 370, 370, 370, 370, 370, 318, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 303, + 370, 370, 370, 370, 370, 370, 370, 329, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 46, 369, 369, 369, 369, 369, - 48, 369, 369, 369, 96, 369, 369, 369, 369, 369, - 56, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 368, 369, 206, 369, 369, 369, 144, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 232, - 369, 207, 369, 369, 369, 247, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 57, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 146, 125, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 46, 370, 370, 370, 370, 370, 48, 370, + 370, 370, 96, 370, 370, 370, 370, 370, 56, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 369, 370, 206, 370, 370, 370, 144, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 232, 370, 207, + 370, 370, 370, 247, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 57, 370, 370, 370, 370, 370, - 369, 126, 369, 369, 369, 369, 124, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 165, 369, 369, 54, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 282, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 208, 369, 369, 369, 369, 369, 211, 369, 217, 369, - 369, 369, 369, 369, 369, 369, 246, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 111, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 146, 125, 370, 126, + 370, 370, 370, 370, 124, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 165, 370, 370, 54, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 282, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 208, 370, + 370, 370, 370, 370, 211, 370, 217, 370, 370, 370, + 370, 370, 370, 370, 370, 246, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 111, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 138, 369, 369, 369, 369, - 369, 369, 369, 369, 65, 369, 369, 369, 29, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 20, 369, 369, 369, 369, 369, 369, 369, 30, - 39, 369, 177, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 204, 369, 369, - 368, 369, 369, 369, 369, 369, 369, 82, 84, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 306, 369, 369, 369, 369, 262, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 138, 370, 370, 370, 370, 370, + 370, 370, 370, 65, 370, 370, 370, 29, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 20, 370, 370, 370, 370, 370, 370, 370, 30, 39, + 370, 177, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 204, 370, 370, 369, + 370, 370, 370, 370, 370, 370, 82, 84, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 307, 370, 370, 370, 370, 262, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 127, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 164, 369, 50, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 256, 369, 369, 369, - 369, 369, 369, 369, 321, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 171, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 315, - 369, 369, 369, 369, 238, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 127, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 164, 370, 50, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 256, 370, 370, 370, 370, + 370, 370, 370, 322, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 171, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 316, - 369, 369, 369, 369, 369, 331, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 189, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 120, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 184, 369, 198, 369, 369, 369, 369, - 369, 369, 369, 368, 369, 152, 369, 369, 369, 369, - 369, 106, 369, 369, 369, 369, 230, 369, 369, 369, - 369, 369, 369, 248, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 238, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 332, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 189, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 120, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 184, 370, 198, 370, 370, 370, 370, + 370, 370, 370, 369, 370, 152, 370, 370, 370, 370, + 370, 106, 370, 370, 370, 370, 230, 370, 370, 370, + 370, 370, 370, 248, 370, 370, 370, 370, 370, 370, - 274, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 145, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 188, 369, 369, 369, 369, 369, 369, 369, 85, 369, - 86, 369, 369, 369, 369, 369, 259, 369, 369, 369, - 369, 66, 324, 369, 369, 369, 369, 369, 94, 199, - 369, 220, 369, 251, 369, 369, 212, 299, 369, 369, - 369, 295, 369, 369, 369, 78, 369, 201, 369, 369, - 369, 369, 369, 369, 9, 369, 369, 369, 369, 369, - 110, 369, 369, 369, 369, 369, 369, 287, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 274, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 145, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 188, 370, 370, 370, 370, 370, 370, 370, 85, 370, + 86, 370, 370, 370, 370, 370, 259, 370, 370, 370, + 370, 66, 325, 370, 370, 370, 370, 370, 94, 199, + 370, 220, 370, 251, 370, 370, 212, 300, 370, 370, + 370, 370, 295, 370, 370, 370, 78, 370, 201, 370, + 370, 370, 370, 370, 370, 9, 370, 370, 370, 370, - 369, 369, 229, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 368, 369, - 369, 369, 369, 187, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 173, 369, 305, 369, 369, 369, - 369, 369, 273, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 242, 369, 369, 369, 369, 369, + 370, 110, 370, 370, 370, 370, 370, 370, 287, 370, + 370, 370, 370, 229, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 369, + 370, 370, 370, 370, 187, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 173, 370, 306, 370, 370, + 370, 370, 370, 273, 370, 370, 370, 370, 370, 370, - 369, 297, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 170, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 325, 369, 200, 369, 369, 369, 369, 369, 369, 369, - 369, 77, 79, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 109, 369, 369, 369, 369, 369, 369, - 285, 369, 369, 369, 369, 301, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 234, - 37, 31, 33, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 242, 370, 370, 370, 370, + 370, 370, 298, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 170, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 326, 370, 200, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 77, 79, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 109, 370, 370, 370, 370, + 370, 370, 285, 370, 370, 370, 370, 302, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 38, 369, 32, 34, - 369, 40, 369, 369, 369, 369, 369, 369, 369, 105, - 369, 183, 369, 369, 369, 369, 369, 369, 369, 368, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 236, 233, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 76, 369, 369, 369, 147, 369, 128, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 166, - 51, 369, 369, 369, 360, 13, 369, 369, 369, 369, - 369, 369, 369, 153, 369, 369, 369, 369, 369, 369, + 370, 234, 37, 31, 33, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 38, 370, + 32, 34, 370, 40, 370, 370, 370, 370, 370, 370, + 370, 105, 370, 183, 370, 370, 370, 370, 370, 370, + 370, 369, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 236, 233, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 76, 370, 370, 370, 147, 370, + 128, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 166, 51, 370, 370, 370, 361, 13, 370, 370, - 369, 319, 369, 322, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 12, 369, 369, 22, - 369, 369, 369, 369, 369, 369, 369, 291, 369, 369, - 369, 369, 303, 369, 369, 369, 369, 80, 369, 244, - 369, 369, 369, 369, 369, 235, 369, 369, 369, 75, - 369, 369, 369, 369, 369, 369, 23, 369, 369, 47, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 182, 181, 369, 369, 360, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 237, 231, 369, 249, - 369, 369, 307, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 153, 370, 370, 370, 370, + 370, 370, 370, 320, 370, 323, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 12, + 370, 370, 22, 370, 370, 370, 370, 370, 370, 370, + 291, 370, 370, 370, 370, 304, 370, 370, 370, 370, + 80, 370, 244, 370, 370, 370, 370, 370, 235, 370, + 370, 370, 75, 370, 370, 370, 370, 370, 370, 23, + 370, 370, 47, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 182, 181, 370, 370, 361, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 237, - 369, 369, 369, 369, 369, 369, 369, 194, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 87, - 369, 369, 369, 369, 369, 369, 369, 286, 369, 369, - 369, 369, 216, 369, 369, 369, 369, 369, 243, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 293, - 369, 369, 369, 329, 330, 179, 369, 369, 369, 81, - 369, 369, 369, 369, 190, 369, 369, 369, 369, 121, - 123, 122, 369, 369, 369, 25, 369, 369, 174, 369, - 176, 369, 221, 369, 369, 369, 369, 180, 369, 369, + 231, 370, 249, 370, 370, 308, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 194, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 87, 370, 370, 370, 370, 370, 370, 370, + 286, 370, 370, 370, 370, 216, 370, 370, 370, 370, + 370, 370, 243, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 293, 370, 370, 370, 330, 331, 179, + 370, 370, 370, 81, 370, 370, 370, 370, 190, 370, + 370, 370, 370, 121, 123, 122, 370, 370, 370, 25, - 369, 369, 252, 369, 369, 369, 369, 369, 369, 369, - 155, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 264, 369, 369, 369, 369, 369, 369, - 369, 338, 369, 27, 369, 300, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 92, 222, 369, 369, 258, 369, 369, - 284, 369, 323, 369, 215, 369, 369, 369, 369, 369, - 294, 60, 369, 369, 369, 369, 369, 369, 369, 4, - 369, 369, 369, 369, 136, 369, 154, 369, 369, 369, - 195, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 174, 370, 176, 370, 221, 370, 370, 370, + 370, 180, 370, 370, 370, 370, 252, 370, 370, 370, + 370, 370, 370, 370, 155, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 264, 370, 370, + 370, 370, 370, 370, 370, 339, 370, 27, 370, 301, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 92, 222, 370, + 370, 258, 370, 370, 284, 370, 324, 370, 215, 370, + 370, 296, 370, 370, 370, 294, 60, 370, 370, 370, + 370, 370, 370, 370, 4, 370, 370, 370, 370, 136, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 255, 41, 42, 369, 369, 369, 369, 369, 369, 369, - 308, 369, 369, 369, 369, 369, 369, 369, 272, 369, - 369, 369, 369, 369, 369, 369, 369, 225, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 91, 90, 369, 369, 61, 369, 369, 290, - 369, 260, 369, 369, 369, 369, 369, 11, 369, 369, - 369, 369, 342, 369, 369, 369, 369, 135, 369, 369, - 369, 369, 369, 369, 223, 97, 369, 369, 44, 369, - 369, 369, 369, 369, 369, 369, 369, 186, 369, 369, + 370, 154, 370, 370, 370, 195, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 255, 41, 42, 370, 370, + 370, 370, 370, 370, 370, 309, 370, 370, 370, 370, + 370, 370, 370, 272, 370, 370, 370, 370, 370, 370, + 370, 370, 225, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 91, 90, 370, + 370, 61, 370, 370, 290, 370, 260, 370, 370, 370, + 370, 370, 11, 370, 370, 370, 370, 343, 370, 370, + 370, 370, 135, 370, 370, 370, 370, 370, 370, 223, - 369, 369, 369, 369, 369, 157, 369, 369, 369, 369, - 263, 369, 369, 369, 369, 369, 271, 369, 369, 369, - 369, 150, 369, 369, 369, 129, 131, 130, 369, 369, - 369, 99, 103, 98, 167, 369, 369, 369, 369, 88, - 369, 257, 292, 369, 369, 369, 369, 369, 369, 10, - 369, 369, 369, 369, 369, 288, 332, 369, 369, 369, - 369, 369, 369, 369, 337, 43, 369, 369, 369, 369, - 369, 185, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 104, 102, 369, + 97, 370, 370, 44, 370, 370, 370, 370, 370, 370, + 370, 370, 186, 370, 370, 370, 370, 370, 370, 370, + 157, 370, 370, 370, 370, 263, 370, 370, 370, 370, + 370, 271, 370, 370, 370, 370, 150, 370, 370, 370, + 129, 131, 130, 370, 370, 370, 99, 103, 98, 167, + 370, 370, 370, 370, 88, 370, 257, 292, 370, 370, + 370, 370, 370, 370, 10, 370, 370, 370, 370, 370, + 288, 333, 370, 370, 370, 370, 370, 370, 370, 338, + 43, 370, 370, 370, 370, 370, 185, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 55, 369, 369, 89, 369, 320, 369, 369, 369, 369, - 24, 369, 369, 369, 369, 369, 209, 369, 369, 369, - 369, 369, 369, 224, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 205, 369, 369, 175, 83, 369, 369, - 369, 369, 369, 309, 369, 369, 369, 369, 369, 369, - 369, 268, 369, 369, 267, 151, 369, 369, 101, 52, - 369, 369, 158, 159, 162, 163, 160, 161, 93, 318, - 369, 369, 289, 139, 369, 369, 369, 369, 26, 369, - 178, 369, 369, 369, 369, 203, 369, 254, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 104, 102, 370, 55, 370, 370, 89, 370, + 321, 370, 370, 370, 370, 24, 370, 370, 370, 370, + 370, 209, 370, 370, 370, 370, 370, 370, 224, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 205, 370, + 370, 175, 83, 370, 370, 370, 370, 370, 310, 370, + 370, 370, 370, 370, 370, 370, 268, 370, 370, 267, + 151, 370, 370, 101, 52, 370, 370, 158, 159, 162, + 163, 160, 161, 93, 319, 370, 370, 289, 139, 370, + 370, 370, 370, 26, 370, 178, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 192, - 191, 226, 45, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 316, 369, 369, 369, - 369, 108, 369, 253, 369, 281, 313, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 339, 369, - 53, 62, 5, 369, 369, 245, 369, 369, 314, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 269, 28, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 270, 369, 369, 369, 156, 369, 369, 369, + 203, 370, 254, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 192, 191, 226, 45, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 317, 370, 370, 370, 370, 108, 370, 253, 370, + 281, 314, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 340, 370, 53, 62, 5, 370, 370, + 245, 370, 370, 315, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 269, 28, 370, 370, 370, 370, 370, - 369, 369, 369, 369, 369, 193, 369, 202, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 310, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 336, 369, 369, 277, 369, - 369, 369, 369, 369, 311, 369, 369, 369, 369, 369, - 369, 312, 369, 369, 369, 275, 369, 278, 279, 369, - 369, 369, 369, 369, 276, 280, 0 + 370, 370, 370, 370, 370, 370, 370, 270, 370, 370, + 370, 156, 370, 370, 370, 370, 370, 370, 370, 370, + 193, 370, 202, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 311, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 337, 370, 370, 277, 370, 370, 370, 370, 370, 312, + 370, 370, 370, 370, 370, 370, 313, 370, 370, 370, + 275, 370, 278, 279, 370, 370, 370, 370, 370, 276, + 280, 0 } ; static const YY_CHAR yy_ec[256] = @@ -810,17 +812,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3686] = +static const flex_int16_t yy_base[3701] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3207, 3099, 81, 7154, - 7154, 7154, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 4146, 4062, 81, 7179, + 7179, 7179, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2733, 7154, 7154, 7154, - 107, 2694, 7154, 7154, 7154, 154, 2684, 2555, 7154, 7154, - 7154, 245, 2449, 7154, 7154, 7154, 163, 2404, 7154, 249, - 7154, 253, 148, 2295, 2105, 7154, 7154, 7154, 257, 1842, - 7154, 7154, 7154, 233, 1413, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 3586, 7179, 7179, 7179, + 107, 3439, 7179, 7179, 7179, 154, 3204, 3115, 7179, 7179, + 7179, 245, 3060, 7179, 7179, 7179, 163, 2498, 7179, 249, + 7179, 253, 148, 2411, 2317, 7179, 7179, 7179, 257, 1800, + 7179, 7179, 7179, 233, 1739, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -828,8 +830,8 @@ static const flex_int16_t yy_base[3686] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1195, - 419, 947, 422, 899, 429, 866, 800, 433, 713, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1474, + 419, 1334, 422, 1196, 429, 1065, 933, 433, 713, 437, 441, 0, 433, 515, 447, 479, 364, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 493, @@ -845,790 +847,794 @@ static const flex_int16_t yy_base[3686] = 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - 704, 705, 710, 711, 708, 7154, 718, 714, 721, 722, + 704, 705, 710, 711, 708, 7179, 718, 714, 721, 722, 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, - 770, 765, 772, 785, 767, 773, 777, 790, 778, 774, - 780, 786, 807, 796, 813, 798, 810, 814, 816, 817, - 819, 821, 822, 823, 830, 832, 835, 836, 837, 839, - 840, 838, 848, 843, 7154, 845, 847, 867, 851, 859, - 863, 869, 871, 872, 875, 879, 878, 880, 893, 915, - 884, 886, 882, 888, 891, 7154, 898, 895, 939, 908, - 910, 926, 922, 900, 913, 912, 924, 929, 943, 757, + 770, 765, 772, 785, 767, 773, 777, 806, 778, 774, + 780, 786, 796, 798, 800, 793, 807, 814, 815, 808, + 812, 819, 826, 834, 836, 816, 828, 839, 830, 838, + 820, 845, 852, 847, 7179, 849, 851, 861, 853, 862, + 865, 863, 871, 872, 875, 884, 880, 883, 893, 915, + 885, 886, 882, 895, 898, 7179, 900, 899, 939, 908, + 917, 928, 924, 904, 901, 929, 940, 943, 956, 757, - 930, 945, 962, 944, 940, 957, 946, 963, 964, 971, - 969, 972, 973, 974, 981, 976, 978, 982, 986, 980, - 989, 990, 993, 995, 991, 1008, 998, 999, 1012, 1004, - 1009, 1014, 1015, 1017, 1026, 1049, 1022, 1020, 1027, 1021, - 1036, 1043, 1019, 1038, 1047, 1039, 1050, 1041, 1052, 1056, - 1058, 1059, 1060, 1071, 1074, 1075, 1065, 1076, 1077, 1078, - 1084, 1086, 1081, 1087, 1088, 1089, 1090, 1091, 1099, 1094, - 1107, 1104, 1102, 1110, 1112, 7154, 1113, 7154, 1115, 1116, - 1117, 1118, 1119, 1120, 1121, 1130, 7154, 1126, 1129, 1128, - 1137, 1135, 1139, 1143, 1151, 1150, 1153, 1154, 1156, 1157, + 945, 921, 963, 959, 946, 948, 932, 969, 960, 976, + 971, 961, 973, 977, 984, 979, 980, 983, 989, 990, + 992, 993, 997, 998, 994, 1003, 1012, 1013, 1001, 995, + 1007, 1015, 891, 1019, 1018, 1041, 1030, 1020, 1034, 1021, + 1028, 1042, 1035, 1043, 1044, 1047, 1052, 1045, 1060, 1051, + 1067, 1063, 1069, 1070, 1078, 1073, 1074, 1075, 1076, 1079, + 1085, 1080, 1083, 1087, 1088, 1090, 1091, 1097, 1099, 1106, + 1095, 1108, 1111, 1098, 1113, 1101, 7179, 1117, 7179, 1115, + 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7179, 1129, 1132, + 1133, 1140, 1137, 1141, 1143, 1144, 1154, 1148, 1155, 1157, - 1158, 1160, 1170, 1161, 1163, 1174, 1172, 1175, 1176, 1178, - 1179, 1177, 1185, 1184, 1187, 1188, 1191, 1208, 7154, 1190, - 1194, 1196, 1193, 1201, 1212, 1202, 1219, 1221, 1225, 1231, - 1213, 1233, 1241, 1237, 1238, 1244, 1239, 1243, 1205, 1245, - 1248, 1250, 1255, 1251, 1257, 1253, 1259, 1264, 1268, 1260, - 1261, 1274, 7154, 1273, 1271, 1283, 1284, 1285, 1286, 1288, - 1289, 1290, 1291, 1292, 1293, 1298, 1294, 1302, 1312, 1314, - 1304, 1319, 1315, 1317, 1321, 1322, 1323, 1326, 1324, 1325, - 1345, 1334, 1331, 1349, 1338, 1351, 1353, 1342, 1360, 1346, - 1355, 1356, 1358, 1357, 1363, 1365, 1366, 1367, 1370, 1371, + 1156, 1158, 1165, 1167, 1164, 1168, 1175, 1172, 1176, 1177, + 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7179, + 1191, 1195, 1197, 1201, 1194, 1202, 1206, 1214, 1221, 1219, + 1227, 1220, 1224, 1237, 1238, 1240, 1241, 1243, 1245, 1246, + 1248, 1249, 1254, 1251, 1255, 1257, 1259, 1260, 1262, 1268, + 1261, 1264, 1275, 7179, 1274, 1272, 1284, 1291, 1286, 1287, + 1271, 1289, 1292, 1293, 1295, 1296, 1304, 1294, 1297, 1301, + 1314, 1310, 1319, 1312, 1317, 1315, 1316, 1321, 1325, 1323, + 1327, 1336, 1333, 1338, 1341, 1350, 1348, 1352, 1355, 1359, + 1345, 1354, 1356, 1357, 1361, 1362, 1364, 1367, 1369, 1365, - 1295, 1380, 1375, 1377, 1378, 1379, 1383, 1385, 1387, 1388, - 1389, 1391, 1392, 1398, 1405, 1401, 1400, 1404, 1403, 1419, - 1411, 1417, 1422, 1423, 1424, 1425, 7154, 1432, 1430, 1431, - 1437, 1442, 1443, 1444, 1435, 1436, 1445, 1448, 1450, 1453, - 1457, 1458, 1459, 1460, 1462, 1464, 1465, 1470, 1472, 1469, - 1468, 1486, 1485, 1487, 1477, 1479, 1489, 1491, 1490, 1500, - 1497, 1504, 1505, 1499, 1501, 1507, 1516, 1512, 1513, 1514, - 1517, 1518, 1520, 1522, 1521, 1530, 1528, 1532, 1540, 1542, - 1538, 1544, 1552, 1547, 1545, 1553, 1554, 1560, 1556, 1557, - 1561, 1563, 1564, 1571, 1568, 1567, 1566, 1577, 1569, 1578, + 1371, 1373, 1382, 1378, 1379, 1384, 1380, 1386, 1391, 1389, + 1387, 1394, 1393, 1395, 1396, 1403, 1401, 1405, 1410, 1407, + 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7179, 1436, 1431, + 1432, 1438, 1439, 1443, 1445, 1437, 1447, 1448, 1449, 1451, + 1452, 1458, 1454, 1459, 1461, 1460, 1468, 1467, 1470, 1473, + 1475, 1471, 1484, 1491, 1490, 1492, 1476, 1486, 1495, 1496, + 1480, 1504, 1502, 1511, 1503, 1508, 1510, 1512, 1519, 1514, + 1516, 1517, 1526, 1521, 1523, 1525, 1524, 1534, 1531, 1539, + 1542, 1547, 1543, 1548, 1557, 1549, 1552, 1559, 1554, 1562, + 1558, 1565, 1566, 1567, 1568, 1575, 1570, 1571, 1572, 1578, - 1583, 1585, 1594, 1589, 1590, 1591, 1580, 1593, 1596, 1598, - 1601, 1605, 1606, 1607, 1608, 1610, 1611, 1617, 1612, 1618, - 1620, 1623, 1628, 1630, 1632, 1633, 1635, 1638, 1636, 1640, - 1641, 1646, 1647, 1650, 1653, 1656, 1657, 1658, 1659, 1661, - 1675, 1660, 1664, 1674, 1662, 1677, 1679, 1681, 1680, 1683, - 1684, 1688, 1691, 1689, 7154, 1690, 1703, 1692, 1700, 1699, - 1702, 1705, 1713, 1706, 1708, 1710, 1716, 1717, 1742, 7154, - 1718, 7154, 7154, 1719, 7154, 7154, 1720, 1724, 7154, 1721, - 1725, 1726, 1722, 1745, 1739, 1752, 1746, 1732, 1734, 1755, - 1765, 1776, 1766, 1758, 1760, 1756, 1767, 1768, 1769, 1779, + 1579, 1581, 1582, 1589, 1596, 1591, 1592, 1595, 1598, 1599, + 1602, 1601, 1608, 1603, 1609, 1610, 1612, 1613, 1618, 1616, + 1614, 1633, 1622, 1624, 1634, 1625, 1635, 1638, 1641, 1642, + 1644, 1647, 1646, 1648, 1656, 1657, 1649, 1658, 1650, 1663, + 1664, 1666, 1674, 1670, 1676, 1680, 1669, 1681, 1671, 1682, + 1685, 1688, 1691, 1694, 1697, 1689, 7179, 1695, 1705, 1701, + 1703, 1704, 1708, 1709, 1717, 1710, 1712, 1713, 1715, 1722, + 1743, 7179, 1720, 7179, 7179, 1724, 7179, 7179, 1723, 1728, + 7179, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, + 1754, 1751, 1767, 1772, 1766, 1764, 1775, 1770, 1777, 1778, - 1772, 1782, 1770, 1790, 1793, 1803, 1798, 1799, 1801, 1804, - 1806, 1808, 1811, 1812, 1819, 1820, 1821, 1810, 1823, 1824, - 1826, 1828, 1830, 1825, 1832, 1834, 1837, 1838, 1839, 1847, - 1843, 1852, 1859, 7154, 1849, 1862, 1857, 1860, 1869, 1865, - 1872, 1864, 1868, 1871, 1878, 1882, 1875, 1873, 1884, 1886, - 1885, 1887, 1888, 1893, 1895, 1897, 1899, 1901, 1902, 1898, - 1903, 7154, 1908, 1909, 1910, 1914, 1911, 1921, 1923, 1913, - 1915, 1926, 1925, 1937, 1929, 1932, 1930, 1939, 1941, 1942, - 1944, 1946, 7154, 1951, 1948, 1952, 1954, 1955, 1960, 1961, - 1956, 1963, 1965, 1964, 1967, 1968, 1969, 1985, 1975, 1970, + 1783, 1780, 1782, 1789, 1792, 1793, 1795, 1805, 1806, 1808, + 1797, 1810, 1816, 1814, 1820, 1821, 1825, 1827, 1822, 1811, + 1828, 1831, 1833, 1835, 1836, 1838, 1840, 1841, 1839, 1844, + 1845, 1855, 1858, 1847, 1865, 7179, 1861, 1868, 1860, 1850, + 1870, 1877, 1874, 1881, 1873, 1880, 1883, 1885, 1888, 1889, + 1882, 1893, 1892, 1894, 1895, 1899, 1902, 1904, 1905, 1908, + 1907, 1917, 1909, 1910, 7179, 1919, 1922, 1848, 1918, 1924, + 1932, 1920, 1912, 1930, 1934, 1936, 1945, 1937, 1940, 1938, + 1942, 1947, 1946, 1948, 1954, 7179, 1950, 1959, 1960, 1962, + 1963, 1968, 1969, 1964, 1971, 1973, 1972, 1974, 1975, 1977, - 1977, 1972, 1989, 1990, 1992, 1994, 1997, 1999, 1995, 2001, - 2004, 2005, 2007, 2006, 2009, 2010, 2012, 2016, 2017, 2024, - 2019, 2028, 2020, 2023, 2041, 2044, 2042, 2030, 2027, 2040, - 2037, 2050, 2054, 2059, 2052, 2056, 2057, 2066, 2061, 2063, - 2064, 2067, 2068, 2079, 2065, 2083, 2075, 2069, 2077, 2085, - 2088, 7154, 2089, 2092, 7154, 2095, 2094, 2096, 2118, 2098, - 2100, 2101, 2103, 2105, 2111, 2109, 2112, 2120, 2119, 2137, - 2132, 2128, 2140, 2135, 2138, 2110, 2146, 2145, 2147, 2148, - 2149, 2152, 2154, 2161, 2169, 2170, 2172, 2178, 2180, 2155, - 2165, 2167, 2186, 2176, 2190, 2175, 2179, 2181, 2193, 2196, + 1985, 1983, 1987, 1990, 1994, 1997, 1998, 2000, 2001, 2002, + 2010, 2003, 2005, 2012, 2014, 2016, 2017, 2018, 2019, 2023, + 2026, 2033, 2035, 2028, 2036, 2031, 2032, 2047, 2050, 1976, + 2020, 2048, 2049, 2051, 2055, 2059, 2063, 2058, 2062, 2064, + 2071, 2066, 2070, 2067, 2073, 2076, 2088, 2074, 2091, 2083, + 2075, 2081, 2093, 2090, 7179, 2096, 2099, 7179, 2102, 2103, + 2100, 2124, 2104, 2106, 2107, 2112, 2114, 2126, 2116, 2118, + 2136, 2128, 2144, 2108, 2134, 2146, 2137, 2149, 2147, 2151, + 2153, 2155, 2157, 2160, 2158, 2119, 2161, 2174, 2178, 2180, + 2170, 2181, 2173, 2177, 2182, 2201, 2185, 2183, 2184, 2187, - 2183, 2197, 2201, 2202, 2203, 2213, 2209, 2210, 2208, 2215, - 2216, 2217, 2224, 2225, 2218, 7154, 2233, 2236, 2228, 2232, - 2230, 2246, 2244, 2241, 7154, 2242, 2245, 2248, 2256, 2252, - 2253, 2257, 2255, 2259, 2258, 2265, 2267, 2270, 2263, 2266, - 2274, 7154, 2271, 7154, 2280, 2281, 2284, 2288, 2285, 2286, - 2290, 2291, 2292, 2293, 7154, 7154, 2302, 2296, 2309, 2317, - 2318, 2313, 2299, 2303, 7154, 2315, 2325, 7154, 2326, 2320, - 2329, 2323, 2321, 2328, 2333, 2334, 2338, 2342, 2339, 2346, - 2343, 2345, 2348, 7154, 2354, 2349, 2356, 2360, 2361, 2357, - 2363, 2364, 2370, 2367, 7154, 2368, 2371, 2376, 2384, 2381, + 2189, 2186, 2203, 2192, 2204, 2193, 2194, 2206, 2216, 2214, + 2205, 2223, 2224, 2225, 2226, 2229, 2230, 2231, 7179, 2238, + 2233, 2235, 2237, 2239, 2253, 2245, 2246, 7179, 2248, 2249, + 2255, 2262, 2259, 2260, 2261, 2263, 2264, 2267, 2269, 2273, + 2275, 2270, 2272, 2280, 7179, 2277, 7179, 2285, 2286, 2288, + 2290, 2297, 2292, 2294, 2296, 2300, 2298, 2302, 7179, 7179, + 2304, 2301, 2316, 2318, 2325, 2320, 2321, 2322, 7179, 2323, + 2332, 7179, 2333, 2327, 2338, 2330, 2328, 2324, 2343, 2345, + 2347, 2352, 2349, 2356, 2351, 2354, 2353, 7179, 2363, 2357, + 2355, 2365, 2368, 2371, 2372, 2374, 2375, 2377, 7179, 2378, - 2383, 2385, 2386, 2390, 2388, 2393, 2394, 2395, 2396, 2405, - 2407, 2408, 2410, 2411, 2419, 2417, 2424, 7154, 2420, 2421, - 2423, 2432, 2428, 2430, 2427, 2431, 2437, 2434, 2435, 2397, - 2438, 2444, 2445, 2446, 2447, 2448, 2457, 2462, 2453, 2458, - 2461, 2465, 2466, 2469, 2470, 2475, 2472, 2473, 2474, 2476, - 7154, 2477, 2479, 2483, 2487, 2489, 2485, 171, 2486, 2495, - 2497, 2498, 2499, 2507, 2502, 2517, 2518, 2504, 2514, 2513, - 2516, 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2531, 7154, - 2533, 2534, 2536, 2540, 2539, 2542, 2547, 7154, 2549, 2556, - 2559, 2568, 2551, 2560, 2569, 2565, 2570, 2571, 2573, 2575, + 2382, 2385, 2392, 2394, 2388, 2383, 2396, 2402, 2390, 2395, + 2400, 2404, 2405, 2412, 2415, 2416, 2417, 2419, 2427, 2423, + 2431, 7179, 2429, 2426, 2413, 2436, 2432, 2439, 2440, 2441, + 2442, 2435, 2443, 2445, 2451, 2446, 2455, 2452, 2456, 2458, + 2465, 2467, 2463, 2464, 2472, 2466, 2473, 2474, 2475, 2480, + 2479, 2481, 2482, 2483, 7179, 2484, 2489, 2491, 2495, 2502, + 2492, 171, 2496, 2494, 2504, 2506, 2505, 2518, 2513, 2521, + 2525, 2520, 2522, 2524, 2523, 2529, 2530, 2532, 2531, 2534, + 2535, 2539, 2538, 7179, 2541, 2545, 2547, 2548, 2549, 2550, + 2561, 7179, 2552, 2567, 2564, 2572, 2551, 2560, 2573, 2562, - 2577, 2582, 2581, 2579, 2585, 2583, 7154, 2591, 2587, 2595, - 2597, 2598, 2601, 2599, 2604, 2606, 2607, 2610, 2609, 2611, - 2615, 2612, 2614, 2616, 2623, 2625, 2636, 2628, 2632, 2633, - 2638, 2620, 2637, 2641, 2643, 2644, 2651, 2646, 7154, 2656, - 2647, 2655, 2657, 2654, 2661, 2658, 2664, 2673, 2670, 2671, - 2675, 2678, 2690, 2680, 2683, 2687, 2696, 2700, 2701, 2708, - 2706, 2707, 2714, 2704, 2716, 2718, 2719, 2720, 2728, 2724, - 2726, 2729, 2731, 2730, 2732, 2740, 2743, 2741, 2682, 2742, - 2745, 2747, 2748, 2756, 2769, 2753, 7154, 2768, 2758, 2751, - 2760, 2770, 2781, 2774, 2776, 2777, 2785, 2784, 2786, 2787, + 2578, 2579, 2582, 2583, 2585, 2590, 2586, 2589, 2593, 2592, + 7179, 2595, 2600, 2601, 2598, 2607, 2609, 2599, 2610, 2614, + 2615, 2616, 2617, 2620, 2621, 2622, 2623, 2624, 2630, 2631, + 2643, 2635, 2638, 2639, 2645, 2640, 2649, 2647, 2626, 2650, + 2662, 2652, 7179, 2663, 2653, 2664, 2667, 2654, 2669, 2671, + 2670, 2687, 2673, 2677, 2680, 2683, 2694, 2688, 2689, 2696, + 2704, 2706, 2700, 2714, 2710, 2716, 2718, 2712, 2722, 2724, + 2720, 2679, 2731, 2732, 2734, 2730, 2728, 2736, 2735, 2738, + 2750, 2751, 2742, 2753, 2746, 2752, 2755, 2762, 2763, 2777, + 2743, 7179, 2765, 2758, 2767, 2771, 2779, 2784, 2781, 2780, - 2788, 2795, 2790, 2792, 2800, 2796, 2807, 2797, 2794, 2809, - 2801, 2813, 2815, 2818, 2814, 2822, 2823, 7154, 2824, 2826, - 2828, 2830, 2833, 2834, 2836, 2840, 2837, 2843, 2844, 2845, - 2849, 2850, 2846, 2852, 2851, 2859, 2856, 2858, 2860, 2857, - 7154, 2869, 2868, 2873, 2874, 2876, 2877, 2880, 2884, 2878, - 2887, 2893, 2891, 2885, 2895, 2897, 2898, 7154, 2905, 2906, - 2902, 2908, 2915, 2910, 2912, 2914, 2917, 2918, 7154, 2921, - 2922, 1122, 2920, 2923, 2924, 2933, 2934, 2930, 7154, 2945, - 2932, 2929, 2937, 2941, 2942, 2944, 2950, 2948, 2954, 2955, - 2958, 2960, 2961, 2964, 7154, 2966, 2971, 2972, 2967, 2974, + 2786, 2782, 2785, 2792, 2793, 2795, 2803, 2798, 2801, 2800, + 2804, 2805, 2806, 2807, 2814, 2815, 2817, 2819, 2823, 2825, + 2827, 2828, 7179, 2829, 2831, 2834, 2835, 2838, 2839, 2846, + 2847, 2849, 2841, 2843, 2850, 2852, 2855, 2856, 2857, 2858, + 2867, 2863, 2865, 2870, 2866, 7179, 2876, 2877, 2869, 2880, + 2881, 2883, 2886, 2891, 2887, 2893, 2899, 2897, 2889, 2903, + 2901, 2904, 7179, 2911, 2912, 2910, 2913, 2920, 2916, 2919, + 2921, 2923, 2924, 7179, 2926, 2927, 854, 2928, 2929, 2930, + 2939, 2940, 2935, 7179, 2942, 2937, 2946, 2947, 2948, 2950, + 2952, 2954, 2956, 2958, 2959, 2963, 2962, 2965, 2969, 7179, - 2975, 2977, 2978, 2983, 2986, 2997, 2980, 7154, 2987, 2998, - 3000, 3007, 3003, 3004, 3005, 3008, 3009, 3010, 3016, 3012, - 3019, 3017, 7154, 3021, 3018, 3020, 3025, 3027, 3028, 3029, - 3039, 3040, 3041, 3042, 3044, 3045, 3047, 3049, 3050, 3056, - 3054, 3051, 3043, 3065, 3066, 3070, 3071, 3053, 3075, 3078, - 3083, 3079, 3081, 3087, 3084, 3088, 3089, 3091, 3098, 3100, - 3101, 3102, 3105, 7154, 3108, 3109, 3111, 3097, 3112, 3114, - 3116, 3119, 3117, 3121, 3122, 3129, 3123, 3132, 3139, 3146, - 3135, 3142, 3144, 3147, 3148, 3149, 3150, 3136, 3152, 3159, - 3160, 3158, 3161, 3162, 3173, 3164, 3168, 3177, 3172, 3175, + 2971, 2979, 2975, 2972, 2984, 2980, 2982, 2985, 2991, 2986, + 2987, 2998, 7179, 3007, 3002, 3004, 3011, 3008, 3009, 3013, + 3014, 3016, 3017, 3018, 3020, 3023, 3024, 7179, 3025, 3029, + 3030, 3032, 3034, 3037, 3026, 3049, 3041, 3042, 3046, 3050, + 3051, 3052, 3054, 3056, 3062, 3063, 3057, 3059, 3070, 3071, + 3074, 3076, 3077, 3081, 3084, 3092, 3087, 3090, 3094, 3096, + 3083, 3088, 3095, 3104, 3111, 3112, 3107, 3113, 7179, 3116, + 3117, 3110, 3118, 3120, 3123, 3124, 3122, 3125, 3127, 3130, + 3140, 3128, 3131, 3149, 3152, 3134, 3155, 3141, 3144, 3153, + 3159, 3157, 3158, 3161, 3171, 3167, 3166, 3168, 3170, 3169, - 3179, 3180, 3181, 3182, 3184, 3186, 3189, 3192, 3185, 3187, - 3197, 3203, 3208, 3210, 3212, 3211, 3213, 3214, 3217, 3219, - 7154, 3218, 3222, 3220, 3226, 3229, 3232, 3234, 3243, 3233, - 3240, 3247, 3244, 3250, 3251, 3242, 3252, 3256, 3257, 3264, - 3260, 7154, 3261, 7154, 3263, 3266, 3267, 3275, 3272, 7154, - 3274, 7154, 3278, 3283, 3280, 3285, 3286, 7154, 3287, 3276, - 3288, 3289, 3291, 3293, 3295, 3299, 3300, 3304, 3303, 3312, - 3313, 3307, 3305, 3315, 3318, 3321, 3324, 3322, 3326, 3327, - 3331, 3329, 3333, 3334, 3338, 3335, 3340, 3342, 3345, 3347, - 3350, 7154, 3352, 3358, 3356, 3360, 3348, 3362, 3363, 3367, + 3180, 3173, 3175, 3183, 3182, 3186, 3187, 3189, 3190, 3193, + 3191, 3196, 3197, 3199, 3194, 3200, 3203, 3217, 3221, 3218, + 3210, 3222, 3224, 3225, 3227, 3226, 7179, 3229, 3231, 3233, + 3230, 3237, 3242, 3238, 3252, 3244, 3249, 3257, 3255, 3254, + 3261, 3256, 3263, 3264, 3266, 3274, 3270, 7179, 3267, 7179, + 3271, 3272, 3278, 3288, 3275, 7179, 3284, 7179, 3287, 3294, + 3280, 3289, 3291, 7179, 3297, 3298, 3301, 3299, 3302, 3303, + 3309, 3306, 3310, 3311, 3312, 3320, 3317, 3323, 3313, 3315, + 3325, 3328, 3333, 3335, 3336, 3337, 3338, 3340, 3341, 3343, + 3346, 3344, 3351, 3356, 3355, 3352, 3357, 7179, 3361, 3365, - 3368, 3370, 3371, 3373, 3374, 3376, 3384, 3379, 3385, 3381, - 3389, 3392, 3399, 3398, 3406, 7154, 3402, 3404, 3405, 3407, - 7154, 3409, 3408, 3410, 3419, 3412, 3415, 3421, 3422, 3427, - 3417, 3429, 3423, 3431, 3444, 3440, 3439, 7154, 3446, 3447, - 3448, 3450, 3457, 3430, 3465, 3466, 3462, 3463, 3468, 3476, - 3472, 3461, 3471, 3475, 3478, 3479, 3486, 3487, 3490, 3483, - 3491, 3492, 3495, 3497, 3499, 3493, 3501, 3503, 3505, 3502, - 3506, 3509, 3508, 3507, 3510, 3517, 3512, 3527, 7154, 3518, - 3524, 3528, 3535, 3513, 3537, 3538, 3540, 3539, 3543, 3546, - 7154, 3548, 3545, 3551, 3549, 3562, 3552, 3550, 3557, 3559, + 3364, 3369, 3372, 3358, 3373, 3375, 3378, 3379, 3380, 3384, + 3382, 3383, 3386, 3390, 3391, 3393, 3398, 3401, 3411, 3397, + 3414, 7179, 3407, 3410, 3412, 3416, 7179, 3415, 3418, 3423, + 3425, 3419, 3427, 3428, 3429, 3434, 3430, 3437, 3436, 3441, + 3446, 3450, 3451, 7179, 3452, 3453, 3438, 3457, 3465, 3462, + 3472, 3473, 3469, 3475, 3477, 3485, 3482, 3468, 3471, 3480, + 3483, 3488, 3490, 3498, 3500, 3496, 3508, 3493, 3504, 3506, + 3507, 3495, 3497, 3510, 3511, 3514, 3518, 3519, 3520, 3515, + 3521, 3522, 3523, 3527, 7179, 3535, 3536, 3526, 3543, 3530, + 3541, 3544, 3545, 3546, 3551, 3553, 7179, 3555, 3556, 3558, - 3566, 3568, 3569, 3570, 3571, 7154, 3573, 7154, 3572, 3586, - 3585, 3591, 3580, 3578, 3595, 3600, 3594, 3601, 3603, 3602, - 3604, 3606, 3609, 3610, 3612, 3613, 3615, 3614, 3622, 3618, - 3629, 3619, 3630, 3631, 3633, 3634, 3641, 3637, 3644, 7154, - 7154, 3638, 3646, 3651, 3645, 3653, 3657, 3654, 3660, 3658, - 3668, 3662, 3665, 3671, 3678, 7154, 3674, 3676, 3679, 3682, - 3681, 3690, 3685, 3693, 3700, 3697, 3696, 3704, 3699, 7154, - 3706, 3707, 3714, 3709, 3715, 3717, 7154, 3712, 7154, 3713, - 3716, 3719, 3723, 3725, 3727, 3728, 3733, 3734, 3729, 3737, - 3740, 3750, 3752, 3745, 3749, 3754, 3755, 3756, 3757, 3759, + 3560, 3565, 3568, 3561, 3569, 3570, 3571, 3574, 3577, 3573, + 3578, 7179, 3581, 7179, 3579, 3587, 3592, 3598, 3595, 3599, + 3600, 3606, 3602, 3608, 3609, 3611, 3610, 3612, 3618, 3619, + 3620, 3621, 3622, 3625, 3626, 3645, 3629, 3624, 3632, 3640, + 3642, 3643, 3646, 3650, 3651, 3647, 7179, 7179, 3648, 3654, + 3663, 3655, 3661, 3665, 3666, 3668, 3670, 3675, 3676, 3678, + 3684, 3687, 7179, 3689, 3685, 3688, 3690, 3691, 3698, 3693, + 3697, 3707, 3704, 3706, 3714, 3712, 7179, 3713, 3715, 3722, + 3717, 3723, 3725, 7179, 3727, 7179, 3721, 3724, 3728, 3731, + 3736, 3737, 3738, 3744, 3742, 3734, 3745, 3750, 3758, 3760, - 3760, 3769, 3764, 3765, 3766, 7154, 3768, 3770, 3778, 3772, - 3771, 3780, 3783, 3787, 3779, 7154, 3789, 3792, 3794, 3793, - 3795, 3799, 3803, 3804, 3806, 3808, 3809, 3811, 3812, 3814, - 7154, 3813, 3815, 3827, 3817, 3819, 3828, 3831, 3833, 3839, - 7154, 3840, 3841, 3848, 3844, 3846, 3847, 3851, 3852, 3853, - 3855, 3856, 3857, 3859, 3860, 3865, 3861, 3863, 3870, 3866, - 3878, 3880, 3867, 3888, 3895, 3881, 7154, 3884, 3891, 3893, - 3897, 3894, 3896, 3901, 3903, 3906, 3908, 3899, 3921, 3922, - 3909, 3911, 3916, 3925, 3927, 3934, 3926, 7154, 3939, 3918, - 3941, 3938, 3940, 3942, 3947, 3944, 3948, 3950, 3951, 3952, + 3761, 3756, 3763, 3757, 3765, 3766, 3768, 3773, 3776, 3772, + 3774, 3775, 7179, 3779, 3780, 3784, 3782, 3781, 3791, 3792, + 3789, 3795, 7179, 3799, 3802, 3803, 3804, 3805, 3808, 3809, + 3812, 3813, 3815, 3817, 3819, 3821, 3822, 7179, 3823, 3825, + 3835, 3827, 3830, 3837, 3841, 3844, 3850, 7179, 3846, 3852, + 3859, 3855, 3856, 3836, 3857, 3858, 3862, 3863, 3864, 3865, + 3866, 3867, 3873, 3872, 3869, 3877, 3875, 3888, 3889, 3883, + 3880, 3896, 3891, 7179, 3892, 3897, 3901, 3902, 3903, 3904, + 3905, 3909, 3914, 3925, 3907, 3929, 3930, 3911, 3915, 3917, + 3934, 3922, 3941, 3937, 7179, 3945, 3942, 3949, 3946, 3944, - 3954, 3955, 3956, 3958, 3967, 3962, 3968, 3969, 3970, 3977, - 3972, 3978, 3979, 3980, 7154, 3995, 3982, 3984, 3991, 3997, - 4000, 4007, 4002, 3983, 4004, 4006, 4009, 4012, 4010, 4014, - 4016, 4019, 4020, 7154, 7154, 4022, 4023, 4024, 7154, 4028, - 4026, 4038, 4027, 4031, 4042, 4029, 4034, 4039, 4044, 4051, - 4054, 4052, 4056, 7154, 4063, 4059, 4066, 4061, 4058, 4068, - 4067, 7154, 4070, 4079, 4075, 4071, 4082, 4080, 4083, 4085, - 4084, 4086, 4090, 4088, 4092, 4096, 4100, 4105, 4101, 4102, - 4107, 7154, 4108, 4109, 4110, 4113, 4114, 4116, 4119, 7154, - 4120, 4122, 4123, 4130, 4132, 4143, 4125, 4133, 4146, 4137, + 3947, 3953, 3948, 3954, 3956, 3957, 3958, 3961, 3962, 3963, + 3965, 3977, 3973, 3974, 3975, 3976, 3984, 3980, 3981, 3982, + 3983, 7179, 4003, 3990, 3991, 4005, 3998, 3995, 4014, 4011, + 3999, 4012, 4016, 4013, 4017, 4021, 4022, 4023, 4026, 4027, + 7179, 7179, 4029, 4030, 4031, 7179, 4034, 4032, 4042, 4035, + 4045, 4037, 4049, 4038, 4050, 4056, 4057, 4046, 4067, 4052, + 4058, 7179, 4070, 4071, 4075, 4060, 4077, 4079, 4081, 7179, + 4082, 4091, 4087, 4088, 4089, 4090, 4092, 4094, 4096, 4095, + 4097, 4102, 4103, 4108, 4110, 4117, 4106, 4115, 4114, 7179, + 4116, 4119, 4122, 4124, 4121, 4125, 4128, 7179, 4131, 4133, - 4140, 4147, 4148, 4150, 4151, 4152, 4161, 4156, 4160, 4157, - 4163, 4165, 4167, 4169, 7154, 4177, 4178, 4159, 4180, 4182, - 7154, 4184, 4193, 4196, 7154, 4197, 4188, 4195, 4198, 4205, - 7154, 4201, 4202, 4203, 4207, 4204, 4217, 4209, 4218, 4220, - 4216, 4221, 4222, 4224, 7154, 4225, 4223, 4228, 7154, 4240, - 4238, 4245, 4247, 4230, 4232, 4248, 4251, 4249, 4252, 7154, - 4253, 7154, 4257, 4259, 4262, 7154, 4264, 4265, 4267, 4269, - 4266, 4273, 4274, 4280, 4282, 4270, 4284, 4285, 4286, 4287, - 4289, 4298, 4288, 4295, 4296, 4297, 7154, 4300, 4299, 4307, - 4309, 4302, 4319, 4315, 4313, 4308, 4321, 4310, 7154, 7154, + 4138, 4140, 4142, 4148, 4149, 4152, 4155, 4135, 4157, 4158, + 4159, 4160, 4161, 4162, 4172, 4165, 4169, 4170, 4173, 4179, + 4187, 4185, 7179, 4167, 4190, 4174, 4191, 4193, 7179, 4198, + 4205, 4208, 7179, 4209, 4195, 4207, 4210, 4217, 7179, 4213, + 4214, 4215, 4219, 4216, 4229, 4224, 4232, 4231, 4228, 4233, + 4234, 4236, 7179, 4237, 4235, 4238, 7179, 4242, 4250, 4256, + 4258, 4240, 4265, 4261, 4263, 4264, 4262, 7179, 4269, 7179, + 4272, 4266, 4276, 7179, 4273, 4279, 4281, 4283, 4280, 4287, + 4288, 4294, 4296, 4284, 4290, 4298, 4300, 4301, 4302, 4309, + 4306, 4308, 4310, 4311, 7179, 4314, 4312, 4313, 4318, 4320, - 4328, 7154, 4330, 4331, 4332, 4334, 7154, 4336, 4335, 4343, - 4338, 4339, 4342, 4341, 4346, 4352, 7154, 4354, 4356, 7154, - 4358, 4361, 4368, 4363, 4364, 4365, 4366, 4369, 4373, 4372, - 4376, 4378, 4379, 4380, 4375, 4389, 4384, 4397, 4383, 4402, - 7154, 4385, 4395, 4400, 4410, 4407, 4403, 4411, 4415, 4413, - 7154, 4417, 4424, 4416, 4427, 4428, 7154, 4429, 7154, 4419, - 4430, 4431, 4440, 4436, 4447, 4444, 7154, 4446, 4445, 4450, - 4451, 4452, 4454, 4453, 4460, 4461, 4462, 4463, 4472, 4468, - 4469, 4474, 4476, 4481, 7154, 4471, 4478, 4484, 4488, 4493, - 4491, 4485, 4495, 4503, 4499, 4505, 4498, 4501, 4511, 4506, + 4331, 4329, 4321, 4323, 4334, 4335, 7179, 7179, 4337, 7179, + 4342, 4341, 4343, 4346, 7179, 4349, 4347, 4356, 4351, 4352, + 4358, 4354, 4366, 4244, 7179, 4370, 4373, 7179, 4355, 4371, + 4381, 4376, 4379, 4363, 4367, 4382, 4388, 4380, 4384, 4391, + 4392, 4393, 4394, 4395, 4398, 4412, 4399, 4408, 7179, 4409, + 4400, 4416, 4418, 4415, 4419, 4421, 4425, 4426, 7179, 4431, + 4432, 4435, 4437, 4438, 7179, 4440, 7179, 4441, 4443, 4444, + 4448, 4447, 4451, 4460, 4455, 7179, 4461, 4458, 4465, 4457, + 4462, 4468, 4469, 4473, 4476, 4477, 4479, 4486, 4482, 4484, + 4481, 4491, 4488, 7179, 4489, 4492, 4498, 4501, 4502, 4504, - 4512, 4519, 4514, 4521, 4522, 7154, 4524, 4525, 4527, 4530, - 4539, 4531, 4532, 4535, 7154, 4536, 4544, 4545, 7154, 4542, - 4546, 4552, 4557, 4553, 4558, 4559, 4562, 4560, 4565, 4567, - 4563, 7154, 4569, 4572, 4570, 4575, 4583, 4564, 4574, 7154, - 7154, 4587, 7154, 4589, 4586, 4596, 4594, 4591, 4598, 4600, - 4601, 4603, 4597, 4604, 4613, 4614, 4605, 7154, 4608, 4626, - 4621, 4630, 4628, 4631, 4632, 4633, 4634, 7154, 7154, 4637, - 4638, 4640, 4645, 4646, 4648, 4650, 4657, 4656, 4658, 4663, - 4665, 4672, 7154, 4667, 4655, 4669, 4674, 7154, 4652, 4676, - 4678, 4680, 4679, 4682, 4683, 4685, 4686, 4687, 4689, 4692, + 4505, 4507, 4517, 4509, 4516, 4512, 4513, 4523, 4519, 4524, + 4532, 4526, 4534, 4528, 7179, 4536, 4538, 4541, 4537, 4554, + 4544, 4542, 4545, 7179, 4549, 4555, 4559, 7179, 4552, 4562, + 4563, 4567, 4568, 4569, 4571, 4574, 4573, 4577, 4578, 4575, + 7179, 4576, 4583, 4579, 4592, 4596, 4585, 4584, 7179, 7179, + 4600, 7179, 4603, 4581, 4605, 4607, 4608, 4612, 4611, 4613, + 4615, 4616, 4617, 4623, 4624, 4618, 7179, 4626, 4638, 4628, + 4641, 4643, 4648, 4644, 4646, 4639, 7179, 7179, 4652, 4655, + 4649, 4661, 4662, 4653, 4657, 4672, 4664, 4667, 4674, 4671, + 4683, 7179, 4678, 4679, 4680, 4685, 7179, 4686, 4687, 4689, - 4693, 4697, 4698, 4703, 4704, 4706, 4707, 4710, 4711, 4712, - 4714, 7154, 4717, 4719, 4720, 4721, 4723, 4727, 4728, 4731, - 4732, 4733, 4741, 7154, 4734, 7154, 4737, 4742, 4753, 4743, - 4748, 4758, 4755, 4761, 4762, 4763, 4765, 4767, 4769, 4772, - 4774, 4778, 4766, 4773, 4782, 4785, 7154, 4784, 4790, 4792, - 4794, 4797, 4799, 4800, 7154, 4802, 4801, 4804, 4808, 4810, - 4812, 4813, 4815, 4816, 4818, 4822, 4823, 4826, 4830, 4819, - 4827, 4831, 4839, 4835, 4840, 7154, 4841, 4843, 4844, 4851, - 4847, 4852, 4854, 4853, 4861, 4867, 4845, 4855, 4869, 7154, - 4858, 4868, 4875, 4878, 7154, 4876, 4879, 4880, 4882, 4881, + 4688, 4690, 4691, 4694, 4693, 4696, 4697, 4707, 4698, 4700, + 4716, 4704, 4708, 4714, 4717, 4718, 4720, 4723, 4724, 4727, + 7179, 4730, 4728, 4731, 4733, 4735, 4739, 4740, 4741, 4743, + 4744, 4751, 7179, 4746, 7179, 4753, 4754, 4764, 4767, 4756, + 4749, 4772, 4757, 4771, 4773, 4774, 4778, 4779, 4782, 4783, + 4787, 4775, 4789, 4792, 4794, 7179, 4800, 4801, 4806, 4803, + 4809, 4811, 4813, 7179, 4814, 4796, 4817, 4820, 4822, 4824, + 4825, 4827, 4828, 4830, 4833, 4831, 4835, 4839, 4840, 4841, + 4842, 4845, 4852, 4847, 4849, 7179, 4853, 4856, 4857, 4860, + 4863, 4864, 4865, 4867, 4872, 4875, 4866, 4877, 4878, 7179, - 4884, 4886, 4888, 4889, 4891, 7154, 4899, 4890, 4895, 4900, - 4901, 4907, 4908, 4892, 4911, 4913, 4915, 4921, 7154, 4926, - 4916, 4927, 4929, 4930, 4931, 4933, 4936, 4935, 4937, 7154, - 4938, 4942, 4946, 4949, 4956, 4958, 4948, 4953, 4965, 4957, - 4961, 4960, 4967, 4970, 4971, 4972, 4974, 4975, 4977, 4976, - 4988, 4993, 4992, 7154, 4978, 7154, 4979, 4994, 5000, 4995, - 5004, 4997, 5007, 5009, 5002, 7154, 5010, 5011, 5016, 5017, - 5012, 7154, 5018, 5019, 5023, 5025, 7154, 5028, 5029, 5020, - 5033, 5042, 5043, 7154, 5047, 5036, 5048, 5055, 5056, 5051, - 5058, 5052, 5061, 5059, 5054, 5063, 5064, 5073, 5069, 5070, + 4879, 4882, 4884, 4893, 7179, 4886, 4889, 4890, 4895, 4896, + 4898, 4899, 4902, 4905, 4908, 7179, 4912, 4909, 4914, 4903, + 4915, 4916, 4922, 4919, 4924, 4926, 4928, 4936, 7179, 4938, + 4931, 4941, 4942, 4927, 4940, 4944, 4948, 4950, 4949, 7179, + 4958, 4959, 4961, 4962, 4973, 4974, 4951, 4969, 4976, 4978, + 4980, 4971, 4979, 4986, 4981, 4982, 4988, 4990, 4993, 4994, + 5004, 5006, 5003, 7179, 4995, 7179, 5005, 5009, 5010, 5019, + 5020, 5014, 5016, 5022, 5012, 7179, 5024, 5026, 5031, 5028, + 5035, 7179, 5033, 5036, 5038, 5037, 7179, 5047, 5041, 5039, + 5048, 5055, 5056, 7179, 5062, 5063, 5064, 5071, 5073, 5068, - 7154, 5072, 5074, 5079, 5080, 5081, 5084, 5087, 5088, 5090, - 5092, 5089, 7154, 5095, 5097, 5098, 5099, 5101, 5103, 5104, - 5105, 5112, 5114, 5121, 5109, 5111, 5113, 5123, 5116, 5126, - 7154, 5129, 5131, 5133, 5140, 5142, 5135, 5144, 7154, 5139, - 7154, 5145, 5149, 5150, 5152, 5153, 7154, 5157, 5158, 5156, - 5164, 7154, 7154, 5162, 5173, 5168, 5170, 5172, 7154, 7154, - 5175, 7154, 5171, 7154, 5176, 5177, 7154, 7154, 5178, 5179, - 5185, 7154, 5186, 5187, 5195, 7154, 5197, 7154, 5204, 5188, - 5199, 5201, 5202, 5207, 7154, 5184, 5210, 5209, 5211, 5215, - 7154, 5216, 5218, 5219, 5226, 5222, 5228, 7154, 5230, 5231, + 5075, 5058, 5078, 5070, 5076, 5080, 5083, 5087, 5086, 5088, + 7179, 5085, 5091, 5096, 5092, 5098, 5101, 5102, 5104, 5105, + 5107, 5108, 7179, 5112, 5113, 5114, 5115, 5116, 5118, 5119, + 5120, 5129, 5126, 5127, 5131, 5136, 5137, 5138, 5140, 5142, + 7179, 5145, 5144, 5146, 5153, 5154, 5150, 5162, 7179, 5159, + 7179, 5152, 5163, 5169, 5171, 5172, 7179, 5175, 5176, 5165, + 5180, 7179, 7179, 5182, 5189, 5184, 5188, 5185, 7179, 7179, + 5193, 7179, 5190, 7179, 5195, 5197, 7179, 7179, 5198, 5199, + 5200, 5201, 7179, 5202, 5205, 5212, 7179, 5215, 7179, 5223, + 5204, 5219, 5216, 5206, 5221, 7179, 5227, 5230, 5229, 5231, - 5233, 5235, 7154, 5236, 5239, 5241, 5242, 5245, 5244, 5250, - 5247, 5248, 5251, 5256, 5258, 5259, 5261, 5264, 5267, 5271, - 5273, 5275, 5276, 5278, 5277, 5282, 5283, 5285, 5289, 5291, - 5292, 5293, 5294, 5296, 5297, 5299, 5300, 5302, 5307, 5304, - 5309, 5310, 5311, 5316, 5320, 5321, 5323, 5324, 5330, 5325, - 5332, 5327, 5335, 5333, 5336, 5337, 5339, 5345, 5338, 5341, - 5348, 5349, 5352, 7154, 5354, 5356, 5358, 5359, 5363, 5365, - 5366, 5369, 5374, 5375, 7154, 5379, 7154, 5382, 5384, 5385, - 5386, 5388, 7154, 5387, 5390, 5389, 5392, 5391, 5393, 5395, - 5394, 5398, 5399, 5409, 7154, 5415, 5421, 5404, 5401, 5422, + 5235, 7179, 5236, 5238, 5239, 5248, 5237, 5244, 7179, 5250, + 5251, 5253, 5240, 7179, 5256, 5261, 5262, 5263, 5264, 5265, + 5266, 5268, 5269, 5274, 5275, 5277, 5276, 5279, 5280, 5290, + 5292, 5294, 5298, 5295, 5284, 5300, 5301, 5302, 5304, 5308, + 5310, 5311, 5312, 5313, 5314, 5316, 5320, 5315, 5326, 5328, + 5329, 5337, 5330, 5338, 5339, 5321, 5343, 5344, 5346, 5350, + 5347, 5353, 5354, 5355, 5357, 5358, 5359, 5361, 5360, 5365, + 5367, 5363, 5369, 5371, 7179, 5374, 5376, 5378, 5385, 5379, + 5389, 5390, 5397, 5400, 5402, 7179, 5404, 7179, 5406, 5391, + 5408, 5410, 5411, 7179, 5412, 5413, 5414, 5415, 5416, 5417, - 5425, 7154, 5426, 5428, 5429, 5430, 5432, 5433, 5434, 5436, - 5437, 5441, 5439, 5438, 5443, 5452, 5444, 5453, 5456, 7154, - 5460, 5466, 5467, 5463, 5468, 5469, 5470, 5473, 5472, 5475, - 5476, 5478, 5479, 5480, 5482, 5483, 5490, 5494, 5495, 5501, - 7154, 5485, 7154, 5503, 5505, 5506, 5507, 5508, 5509, 5510, - 5515, 7154, 7154, 5511, 5517, 5516, 5521, 5522, 5523, 5526, - 5528, 5529, 5532, 7154, 5533, 5538, 5540, 5543, 5550, 5542, - 7154, 5545, 5551, 5552, 5557, 7154, 5554, 5558, 5559, 5561, - 5565, 5568, 5570, 5573, 5574, 5575, 5576, 5577, 5580, 7154, - 7154, 7154, 7154, 5581, 5584, 5585, 5590, 5586, 5592, 5595, + 5418, 5421, 5422, 5424, 5427, 7179, 5430, 5439, 5433, 5423, + 5443, 5449, 7179, 5444, 5451, 5446, 5454, 5455, 5456, 5459, + 5457, 5458, 5461, 5460, 5462, 5466, 5468, 5470, 5471, 5317, + 7179, 5481, 5483, 5387, 5478, 5484, 5485, 5486, 5487, 5488, + 5492, 5494, 5495, 5497, 5498, 5499, 5503, 5504, 5511, 5516, + 5513, 7179, 5507, 7179, 5520, 5521, 5522, 5523, 5525, 5524, + 5527, 5528, 5531, 7179, 7179, 5533, 5536, 5535, 5542, 5537, + 5539, 5546, 5547, 5549, 5551, 7179, 5556, 5559, 5560, 5561, + 5563, 5567, 7179, 5568, 5569, 5570, 5573, 7179, 5575, 5576, + 5577, 5578, 5592, 5582, 5594, 5595, 5588, 5586, 5584, 5598, - 5594, 5600, 5601, 5612, 5596, 5598, 7154, 5615, 7154, 7154, - 5617, 7154, 5618, 5606, 5619, 5621, 5625, 5626, 5628, 7154, - 5627, 7154, 5632, 5633, 5630, 5640, 5647, 5643, 5631, 5652, - 5634, 5649, 5653, 5655, 5662, 5658, 5659, 5657, 5661, 5665, - 5668, 7154, 7154, 5669, 5675, 5676, 5684, 5680, 5681, 5677, - 5693, 5688, 5689, 5690, 5695, 5696, 5697, 5706, 5707, 5698, - 5702, 5709, 7154, 5705, 5711, 5717, 7154, 5713, 7154, 5719, - 5721, 5722, 5715, 5723, 5728, 5729, 5730, 5732, 5734, 7154, - 7154, 5735, 5746, 5742, 7154, 7154, 5743, 5744, 5745, 5747, - 5750, 5751, 5752, 7154, 5754, 5759, 5755, 5757, 5760, 5770, + 5604, 7179, 7179, 7179, 7179, 5605, 5599, 5607, 5610, 5611, + 5612, 5613, 5614, 5619, 5621, 5616, 5617, 5620, 7179, 5632, + 7179, 7179, 5622, 7179, 5633, 5634, 5636, 5639, 5640, 5642, + 5644, 7179, 5643, 7179, 5645, 5649, 5646, 5656, 5663, 5660, + 5653, 5667, 5657, 5668, 5669, 5670, 5677, 5674, 5675, 5678, + 5680, 5682, 5684, 7179, 7179, 5686, 5690, 5691, 5698, 5695, + 5696, 5702, 5709, 5704, 5705, 5706, 5707, 5711, 5712, 5720, + 5723, 5713, 5724, 5726, 7179, 5721, 5727, 5731, 7179, 5729, + 7179, 5730, 5737, 5738, 5739, 5740, 5745, 5746, 5747, 5749, + 5751, 7179, 7179, 5744, 5765, 5760, 7179, 7179, 5750, 5752, - 5761, 7154, 5767, 7154, 5773, 5774, 5777, 5779, 5787, 5789, - 5784, 5791, 5795, 5788, 5786, 5792, 7154, 5790, 5800, 7154, - 5807, 5803, 5805, 5798, 5808, 5815, 5810, 7154, 5817, 5812, - 5820, 5824, 7154, 5827, 5828, 5829, 5831, 7154, 5836, 7154, - 5821, 5833, 5837, 5845, 5842, 7154, 5843, 5846, 5847, 7154, - 5851, 5853, 5856, 5857, 5858, 5859, 7154, 5862, 5864, 7154, - 5865, 5868, 5869, 5874, 5875, 5877, 5878, 5879, 5880, 5887, - 5884, 5888, 7154, 7154, 5895, 5893, 135, 5902, 5886, 5899, - 5900, 5904, 5911, 5903, 5908, 5907, 7154, 7154, 5913, 7154, - 5914, 5921, 7154, 5915, 5923, 5916, 5925, 5927, 5929, 5930, + 5761, 5763, 5768, 5764, 5770, 7179, 5774, 5775, 5776, 5773, + 5778, 5780, 5785, 7179, 5786, 7179, 5787, 5790, 5792, 5795, + 5802, 5803, 5798, 5800, 5805, 5809, 5806, 5810, 5811, 7179, + 5812, 5813, 7179, 5825, 5824, 5828, 5815, 5822, 5830, 5823, + 7179, 5839, 5831, 5842, 5844, 7179, 5846, 5847, 5848, 5850, + 7179, 5855, 7179, 5837, 5856, 5852, 5866, 5858, 7179, 5862, + 5863, 5867, 7179, 5872, 5874, 5876, 5877, 5878, 5879, 7179, + 5885, 5869, 7179, 5881, 5889, 5893, 5896, 5890, 5898, 5886, + 5900, 5902, 5909, 5907, 5904, 7179, 7179, 5917, 5910, 135, + 5920, 5912, 5913, 5921, 5922, 5929, 5924, 5926, 5932, 7179, - 5931, 5934, 5935, 5941, 5937, 5936, 5938, 7154, 5954, 5962, - 5939, 5960, 5963, 5965, 5967, 5969, 5971, 5957, 5974, 5975, - 5976, 5977, 5978, 5980, 5981, 5984, 5985, 5987, 5988, 7154, - 5990, 5997, 5998, 5994, 6004, 6000, 5992, 7154, 6012, 6013, - 6015, 6016, 7154, 6018, 6019, 6022, 6023, 6024, 7154, 6025, - 6027, 6030, 6034, 6035, 6036, 6037, 6039, 6040, 6047, 7154, - 6045, 6042, 6049, 7154, 7154, 7154, 6052, 6062, 6050, 7154, - 6066, 6056, 6059, 6063, 7154, 6068, 6069, 6077, 6073, 7154, - 7154, 7154, 6072, 6074, 6080, 7154, 6075, 6082, 7154, 6086, - 7154, 6083, 7154, 6087, 6088, 6090, 6094, 7154, 6096, 6099, + 7179, 5934, 7179, 5936, 5937, 7179, 5925, 5942, 5946, 5938, + 5943, 5951, 5952, 5953, 5958, 5954, 5959, 5960, 5961, 5963, + 7179, 5979, 5982, 5964, 5966, 5984, 5986, 5988, 5990, 5992, + 5994, 5995, 5977, 5975, 5998, 5999, 5996, 6002, 6005, 6003, + 6006, 6008, 7179, 6017, 6019, 6021, 6020, 6030, 6025, 6009, + 7179, 6033, 6034, 6037, 6038, 7179, 6040, 6013, 6042, 6045, + 6046, 6047, 7179, 6048, 6050, 6053, 6054, 6059, 6057, 6060, + 6062, 6061, 6070, 7179, 6065, 6063, 6075, 7179, 7179, 7179, + 6080, 6074, 6082, 7179, 6084, 6086, 6067, 6087, 7179, 6089, + 6090, 6097, 6094, 7179, 7179, 7179, 6093, 6098, 6095, 7179, - 6100, 6105, 7154, 6108, 6111, 6116, 6113, 6117, 6102, 6118, - 7154, 6125, 6124, 6126, 6128, 6120, 6130, 6132, 6134, 6133, - 6141, 6136, 6144, 7154, 6145, 6147, 6150, 6156, 6140, 6148, - 6154, 7154, 6146, 7154, 6165, 7154, 6158, 6160, 6162, 6168, - 6167, 6170, 6174, 6177, 6178, 6179, 6180, 6182, 6184, 6187, - 6189, 6195, 6190, 7154, 7154, 6198, 6196, 7154, 6200, 6204, - 7154, 6201, 7154, 6208, 7154, 6205, 6211, 6212, 6214, 6215, - 7154, 7154, 6219, 6216, 6223, 6231, 6224, 6229, 6226, 7154, - 6233, 6235, 6237, 6239, 7154, 6246, 7154, 6241, 6248, 6250, - 7154, 6243, 6244, 6252, 6254, 6257, 6258, 6260, 6262, 6266, + 6101, 6108, 7179, 6107, 7179, 6109, 7179, 6110, 6111, 6112, + 6114, 7179, 6117, 6120, 6124, 6125, 7179, 6128, 6132, 6135, + 6136, 6137, 6139, 6141, 7179, 6148, 6144, 6147, 6151, 6143, + 6153, 6154, 6155, 6156, 6168, 6159, 6164, 7179, 6166, 6167, + 6171, 6177, 6169, 6179, 6180, 7179, 6173, 7179, 6182, 7179, + 6183, 6185, 6186, 6187, 6192, 6189, 6190, 6200, 6197, 6203, + 6206, 6204, 6210, 6211, 6215, 6217, 6212, 7179, 7179, 6225, + 6218, 7179, 6220, 6222, 7179, 6227, 7179, 6230, 7179, 6233, + 6234, 7179, 6235, 6236, 6238, 7179, 7179, 6242, 6239, 6244, + 6251, 6246, 6255, 6247, 7179, 6256, 6258, 6260, 6262, 7179, - 6263, 6274, 6267, 6264, 6269, 6281, 6277, 6282, 6284, 6290, - 7154, 7154, 7154, 6288, 6293, 6301, 6297, 6299, 6304, 6294, - 7154, 6303, 6306, 6309, 6307, 6316, 6311, 6318, 7154, 6315, - 6319, 6320, 6321, 6323, 6324, 6325, 6330, 7154, 6332, 6336, - 6347, 6333, 6340, 6344, 6351, 6353, 6356, 6358, 6348, 6342, - 6365, 6362, 7154, 7154, 6364, 6360, 7154, 6370, 6372, 7154, - 6366, 7154, 6373, 6374, 6375, 6377, 6378, 7154, 6381, 6382, - 6383, 6384, 7154, 6386, 6388, 6390, 6392, 7154, 6387, 6407, - 6393, 6400, 6404, 6410, 7154, 7154, 6403, 6412, 7154, 6417, - 6418, 6414, 6426, 6421, 6422, 6432, 6429, 7154, 6435, 6436, + 6270, 7179, 6263, 6271, 6268, 7179, 6267, 6274, 6276, 6278, + 6280, 6281, 6285, 6282, 6287, 6286, 6294, 6290, 6291, 6292, + 6298, 6299, 6302, 6307, 6315, 7179, 7179, 7179, 6308, 6311, + 6319, 6318, 6321, 6328, 6323, 7179, 6325, 6327, 6329, 6332, + 6339, 6335, 6337, 7179, 6338, 6340, 6342, 6343, 6345, 6346, + 6347, 6348, 7179, 6355, 6360, 6362, 6364, 6366, 6368, 6371, + 6375, 6377, 6379, 6372, 6381, 6388, 6384, 7179, 7179, 6387, + 6383, 7179, 6391, 6393, 7179, 6394, 7179, 6395, 6396, 6397, + 6398, 6400, 7179, 6403, 6404, 6405, 6408, 7179, 6406, 6410, + 6412, 6415, 7179, 6409, 6429, 6421, 6425, 6428, 6431, 7179, - 6425, 6427, 6437, 6438, 6440, 7154, 6443, 6444, 6448, 6449, - 7154, 6452, 6455, 6456, 6454, 6453, 7154, 6457, 6459, 6466, - 6467, 7154, 6461, 6477, 6465, 7154, 7154, 7154, 6483, 6485, - 6486, 7154, 7154, 7154, 7154, 6488, 6489, 6476, 6492, 7154, - 6493, 7154, 7154, 6497, 6501, 6505, 6507, 6512, 6500, 7154, - 6511, 6513, 6515, 6517, 6518, 7154, 7154, 6519, 6521, 6523, - 6524, 6526, 6527, 6528, 7154, 7154, 6530, 6531, 6533, 6540, - 6536, 7154, 6534, 6539, 6547, 6550, 6553, 6557, 6561, 6558, - 6562, 6563, 6570, 6571, 6566, 6568, 6574, 6576, 6577, 6578, - 6580, 6590, 6586, 6588, 6594, 6585, 6596, 7154, 7154, 6599, + 7179, 6432, 6435, 7179, 6438, 6440, 6442, 6449, 6439, 6446, + 6448, 6450, 7179, 6457, 6458, 6452, 6459, 6460, 6462, 6464, + 7179, 6467, 6466, 6468, 6469, 7179, 6473, 6471, 6476, 6477, + 6478, 7179, 6481, 6480, 6490, 6492, 7179, 6482, 6496, 6495, + 7179, 7179, 7179, 6504, 6506, 6507, 7179, 7179, 7179, 7179, + 6510, 6512, 6501, 6514, 7179, 6515, 7179, 7179, 6519, 6524, + 6528, 6532, 6536, 6523, 7179, 6535, 6529, 6542, 6537, 6539, + 7179, 7179, 6543, 6545, 6546, 6547, 6549, 6550, 6551, 7179, + 7179, 6554, 6556, 6557, 6558, 6559, 7179, 6560, 6564, 6573, + 6575, 6576, 6581, 6583, 6570, 6586, 6587, 6594, 6595, 6590, - 7154, 6603, 6604, 7154, 6589, 7154, 6606, 6609, 6611, 6615, - 7154, 6617, 6619, 6621, 6623, 6612, 7154, 6624, 6626, 6628, - 6630, 6629, 6631, 7154, 6632, 6635, 6636, 6643, 6637, 6640, - 6644, 6645, 6649, 7154, 6650, 6658, 7154, 7154, 6654, 6659, - 6660, 6663, 6661, 7154, 6666, 6673, 6668, 6670, 6671, 6674, - 6677, 7154, 6678, 6676, 7154, 7154, 6683, 6680, 7154, 7154, - 6681, 6688, 7154, 7154, 7154, 7154, 7154, 7154, 7154, 7154, - 6689, 6696, 7154, 7154, 6691, 6698, 6701, 6703, 7154, 6706, - 7154, 6709, 6710, 6711, 6713, 7154, 6712, 7154, 6714, 6716, - 6717, 5602, 6720, 6723, 6718, 6721, 6725, 6728, 6729, 6730, + 6592, 6597, 6598, 6600, 6601, 6609, 6610, 6606, 6614, 6617, + 6611, 6619, 7179, 7179, 6622, 7179, 6628, 6623, 7179, 6625, + 7179, 6630, 6634, 6636, 6638, 7179, 6640, 6642, 6645, 6647, + 6631, 7179, 6649, 6651, 6653, 6654, 6648, 6655, 7179, 6656, + 6662, 6659, 6665, 6666, 6667, 6670, 6668, 6673, 7179, 6674, + 6677, 7179, 7179, 6679, 6683, 6684, 6687, 6685, 7179, 6690, + 6698, 6691, 6694, 6695, 6700, 6696, 7179, 6701, 6702, 7179, + 7179, 6704, 6706, 7179, 7179, 6709, 6713, 7179, 7179, 7179, + 7179, 7179, 7179, 7179, 7179, 6715, 6716, 7179, 7179, 6717, + 6723, 6725, 6727, 7179, 6729, 7179, 6731, 6732, 6734, 6736, - 6738, 6734, 6736, 6739, 6748, 6742, 6750, 6751, 6752, 7154, - 7154, 7154, 7154, 6755, 6756, 6759, 6763, 6765, 6766, 6774, - 6778, 6762, 6768, 6779, 6770, 6780, 6783, 6784, 6792, 6787, - 6790, 6789, 6796, 6791, 6798, 6804, 7154, 6806, 6800, 6793, - 6810, 7154, 6807, 7154, 6813, 7154, 7154, 6817, 6818, 6820, - 6814, 6827, 6829, 6824, 6826, 6825, 6830, 6837, 7154, 6841, - 7154, 7154, 7154, 6832, 6834, 7154, 6842, 6843, 7154, 6845, - 6846, 6848, 6849, 6850, 6852, 6855, 6859, 6858, 7154, 7154, - 6861, 6866, 6868, 6870, 6872, 6879, 6874, 6878, 6880, 6886, - 6876, 6888, 7154, 6890, 6892, 6894, 7154, 6896, 6898, 6899, + 7179, 6737, 7179, 6739, 6742, 6740, 6744, 6743, 6747, 6750, + 6749, 6752, 6755, 6757, 6759, 6760, 6761, 6767, 6764, 6775, + 6765, 6777, 6766, 6778, 7179, 7179, 7179, 7179, 6779, 6781, + 6788, 6789, 6791, 6794, 6797, 6800, 6792, 6802, 6803, 6804, + 6805, 6807, 6808, 6818, 6813, 6814, 6815, 6817, 6819, 6825, + 6829, 7179, 6831, 6821, 6833, 6835, 7179, 6838, 7179, 6837, + 7179, 7179, 6841, 6842, 6846, 6844, 6851, 6856, 6847, 6849, + 6848, 6859, 6858, 7179, 6866, 7179, 7179, 7179, 6860, 6868, + 7179, 6869, 6870, 7179, 6871, 6872, 6873, 6876, 6880, 6875, + 6879, 6882, 6886, 7179, 7179, 6878, 6890, 6895, 6897, 6899, + + 6906, 6901, 6905, 6907, 6911, 6903, 6915, 7179, 6918, 6919, + 6921, 7179, 6923, 6913, 6926, 6925, 6928, 6935, 6930, 6937, + 7179, 6938, 7179, 6941, 6934, 6931, 6942, 6945, 6952, 6953, + 6951, 6955, 7179, 6948, 6957, 6959, 6962, 6966, 6970, 6969, + 6960, 6972, 6977, 6981, 6985, 6973, 6986, 6987, 6989, 6988, + 7179, 6991, 6992, 7179, 6995, 6996, 6997, 6998, 7002, 7179, + 7005, 6999, 7008, 7009, 7013, 7014, 7179, 7020, 7023, 7024, + 7179, 7025, 7179, 7179, 7028, 7015, 7026, 7036, 7038, 7179, + 7179, 7179, 7059, 7066, 7073, 7080, 7087, 7094, 7101, 88, + 7108, 7115, 7122, 7129, 7136, 7143, 7150, 7157, 7164, 7171 - 6901, 6902, 6909, 6904, 6905, 7154, 6907, 7154, 6911, 6913, - 6914, 6912, 6915, 6916, 6926, 6928, 6924, 7154, 6930, 6935, - 6932, 6938, 6940, 6942, 6943, 6944, 6946, 6948, 6952, 6958, - 6955, 6959, 6949, 6960, 6961, 7154, 6970, 6964, 7154, 6967, - 6971, 6973, 6974, 6977, 7154, 6982, 6975, 6979, 6984, 6987, - 6988, 7154, 6990, 6997, 6999, 7154, 7000, 7154, 7154, 7002, - 6991, 7001, 7004, 7009, 7154, 7154, 7154, 7034, 7041, 7048, - 7055, 7062, 7069, 7076, 88, 7083, 7090, 7097, 7104, 7111, - 7118, 7125, 7132, 7139, 7146 } ; -static const flex_int16_t yy_def[3686] = +static const flex_int16_t yy_def[3701] = { 0, - 3667, 1, 3668, 3668, 3669, 3669, 3670, 3670, 3671, 3671, - 3672, 3672, 3673, 3673, 3674, 3674, 3667, 3675, 3667, 3667, - 3667, 3667, 3676, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3677, 3667, 3667, 3667, - 3677, 3678, 3667, 3667, 3667, 3678, 3679, 3667, 3667, 3667, - 3667, 3679, 3680, 3667, 3667, 3667, 3680, 3681, 3667, 3682, - 3667, 3681, 3681, 3683, 3667, 3667, 3667, 3667, 3683, 3684, - 3667, 3667, 3667, 3684, 3675, 3675, 3667, 3685, 3676, 3685, - 3676, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3682, 1, 3683, 3683, 3684, 3684, 3685, 3685, 3686, 3686, + 3687, 3687, 3688, 3688, 3689, 3689, 3682, 3690, 3682, 3682, + 3682, 3682, 3691, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3692, 3682, 3682, 3682, + 3692, 3693, 3682, 3682, 3682, 3693, 3694, 3682, 3682, 3682, + 3682, 3694, 3695, 3682, 3682, 3682, 3695, 3696, 3682, 3697, + 3682, 3696, 3696, 3698, 3682, 3682, 3682, 3682, 3698, 3699, + 3682, 3682, 3682, 3699, 3690, 3690, 3682, 3700, 3691, 3700, + 3691, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3677, - 3677, 3678, 3678, 3679, 3679, 3667, 3680, 3680, 3681, 3681, - 3682, 3682, 3681, 3683, 3683, 3667, 3684, 3684, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3692, + 3692, 3693, 3693, 3694, 3694, 3682, 3695, 3695, 3696, 3696, + 3697, 3697, 3696, 3698, 3698, 3682, 3699, 3699, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3681, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3696, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3667, 3667, 3675, 3667, 3667, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3682, 3682, 3690, 3682, 3682, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3696, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3681, 3681, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3696, 3696, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3681, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3696, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3681, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3681, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3696, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3682, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3681, 3675, 3667, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3696, 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3682, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3681, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3696, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3681, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3696, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3667, - 3675, 3667, 3675, 3667, 3675, 3675, 3667, 3667, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3682, + 3690, 3682, 3690, 3682, 3690, 3690, 3682, 3682, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3681, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3696, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3667, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3681, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3667, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3682, 3682, 3682, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3682, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3682, 3690, 3690, 3690, 3682, 3682, 3690, 3690, - 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3667, 3675, 3675, 3681, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3667, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3696, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3667, 3667, 3667, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, - 3667, 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3675, - 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3682, 3690, 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3682, 3682, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3682, 3682, 3682, 3690, 3690, 3690, 3682, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3675, 3675, - 3667, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3682, 3690, 3682, 3690, 3682, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, + 3690, 3682, 3690, 3690, 3682, 3690, 3682, 3690, 3682, 3690, + 3690, 3682, 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3675, 3675, 3667, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, + 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, + 3690, 3682, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3667, 3667, 3667, 3675, 3675, - 3675, 3667, 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3667, - 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, 3675, + 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3682, 3682, 3682, 3690, 3690, 3690, 3682, 3682, 3682, 3682, + 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3667, 3675, 3675, 3667, 3675, 3667, 3675, 3675, 3675, 3675, - 3667, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3667, 3675, 3675, - 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3667, 3667, 3675, 3675, 3667, 3667, - 3675, 3675, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3675, 3675, 3667, 3667, 3675, 3675, 3675, 3675, 3667, 3675, - 3667, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3682, 3690, 3682, 3690, 3690, 3682, 3690, + 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3682, + 3682, 3690, 3690, 3682, 3682, 3690, 3690, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3690, 3690, 3682, 3682, 3690, + 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, - 3667, 3667, 3667, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, - 3675, 3667, 3675, 3667, 3675, 3667, 3667, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, - 3667, 3667, 3667, 3675, 3675, 3667, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3667, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3675, 3675, + 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3682, 3682, 3682, 3682, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, + 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3690, 3682, 3682, 3682, 3690, 3690, + 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, + 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3682, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3682, + 3682, 0, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682 - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3667, 3675, - 3675, 3675, 3675, 3675, 3667, 3675, 3675, 3675, 3675, 3675, - 3675, 3667, 3675, 3675, 3675, 3667, 3675, 3667, 3667, 3675, - 3675, 3675, 3675, 3675, 3667, 3667, 0, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667 } ; -static const flex_int16_t yy_nxt[7195] = +static const flex_int16_t yy_nxt[7220] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1716,715 +1722,717 @@ static const flex_int16_t yy_nxt[7195] = 432, 86, 443, 86, 86, 441, 86, 445, 86, 448, 86, 440, 86, 437, 446, 450, 86, 453, 86, 444, 86, 454, 447, 86, 449, 86, 86, 86, 452, 462, - 86, 86, 451, 86, 470, 464, 562, 455, 86, 86, - - 471, 473, 474, 86, 463, 472, 465, 456, 466, 86, - 457, 86, 477, 168, 475, 458, 459, 460, 461, 476, - 86, 467, 468, 86, 469, 478, 86, 86, 479, 86, - 86, 480, 86, 487, 86, 86, 86, 489, 481, 485, - 488, 486, 482, 86, 490, 86, 483, 484, 86, 86, - 86, 86, 86, 86, 493, 498, 86, 499, 86, 500, - 86, 86, 494, 492, 86, 504, 497, 166, 501, 506, - 491, 495, 86, 496, 505, 502, 86, 507, 503, 509, - 86, 510, 86, 508, 86, 86, 518, 512, 86, 517, - 519, 86, 86, 86, 516, 86, 511, 86, 520, 86, - - 513, 86, 534, 514, 86, 515, 86, 521, 86, 522, - 536, 86, 165, 170, 539, 523, 537, 533, 538, 524, - 535, 86, 541, 86, 525, 86, 86, 526, 86, 527, - 540, 528, 551, 552, 556, 86, 550, 86, 553, 86, - 558, 554, 86, 86, 529, 557, 559, 530, 555, 531, - 561, 532, 86, 86, 542, 543, 86, 86, 86, 86, - 163, 560, 567, 563, 544, 545, 546, 547, 548, 565, - 86, 549, 564, 569, 571, 86, 86, 86, 574, 566, - 568, 572, 86, 575, 86, 86, 86, 86, 579, 86, - 570, 86, 573, 86, 86, 86, 583, 584, 577, 86, - - 582, 578, 86, 86, 86, 576, 86, 581, 86, 590, - 589, 86, 86, 585, 580, 594, 595, 86, 586, 587, - 588, 86, 86, 591, 592, 86, 597, 86, 86, 613, - 86, 596, 86, 86, 86, 86, 598, 599, 616, 86, - 86, 593, 614, 600, 602, 615, 601, 603, 604, 86, - 618, 86, 86, 619, 86, 622, 86, 620, 617, 605, - 86, 606, 86, 86, 621, 86, 625, 607, 623, 86, - 627, 86, 86, 86, 624, 608, 609, 628, 86, 610, - 611, 631, 626, 612, 86, 630, 629, 86, 86, 86, - 86, 86, 632, 633, 86, 635, 636, 86, 637, 86, - - 86, 86, 86, 86, 86, 643, 638, 86, 644, 645, - 634, 639, 86, 642, 640, 86, 646, 86, 641, 647, - 86, 648, 649, 86, 651, 86, 86, 653, 86, 86, - 86, 86, 86, 86, 86, 86, 650, 655, 659, 86, - 657, 86, 86, 86, 666, 1596, 668, 652, 86, 654, - 86, 656, 86, 658, 660, 661, 86, 662, 670, 663, - 664, 665, 667, 86, 86, 669, 86, 86, 671, 86, - 86, 86, 675, 86, 86, 673, 86, 679, 674, 681, - 672, 682, 678, 86, 676, 86, 677, 86, 86, 86, - 86, 86, 86, 685, 680, 689, 688, 86, 86, 684, - - 86, 86, 691, 86, 86, 683, 86, 86, 161, 86, - 706, 686, 687, 690, 86, 86, 692, 694, 86, 726, - 693, 86, 695, 703, 705, 86, 86, 696, 704, 697, - 708, 709, 86, 707, 86, 698, 710, 699, 86, 711, - 700, 701, 716, 712, 86, 717, 86, 702, 719, 714, - 86, 86, 86, 713, 86, 718, 86, 86, 86, 720, - 723, 86, 728, 86, 86, 721, 86, 722, 86, 715, - 86, 732, 86, 86, 86, 724, 725, 86, 729, 731, - 730, 86, 735, 727, 86, 733, 86, 86, 741, 738, - 736, 743, 737, 739, 734, 740, 170, 86, 86, 86, - - 742, 86, 86, 86, 86, 86, 86, 86, 86, 750, - 744, 86, 791, 752, 745, 86, 747, 86, 748, 751, - 746, 756, 749, 754, 755, 86, 758, 86, 86, 757, - 86, 753, 86, 760, 86, 86, 86, 86, 86, 86, - 759, 763, 764, 772, 86, 774, 765, 86, 761, 777, - 762, 86, 769, 766, 768, 86, 767, 770, 86, 86, - 771, 773, 86, 775, 86, 776, 86, 778, 86, 86, - 86, 86, 779, 86, 783, 784, 86, 780, 86, 86, - 86, 782, 787, 86, 86, 788, 786, 792, 86, 781, - 86, 86, 86, 86, 794, 785, 86, 796, 86, 798, - - 86, 86, 86, 790, 86, 86, 789, 801, 793, 795, - 797, 86, 805, 86, 86, 799, 86, 86, 86, 806, - 808, 803, 800, 802, 86, 809, 86, 807, 810, 811, - 86, 804, 86, 813, 812, 86, 86, 86, 86, 820, - 816, 817, 814, 86, 86, 86, 815, 822, 86, 86, - 86, 818, 821, 819, 823, 86, 86, 86, 86, 826, - 825, 86, 827, 86, 828, 830, 86, 829, 832, 834, - 86, 86, 86, 86, 831, 86, 824, 86, 86, 842, - 835, 86, 86, 86, 844, 86, 833, 840, 843, 838, - 86, 836, 86, 839, 837, 841, 845, 846, 86, 86, - - 86, 847, 86, 86, 86, 848, 850, 854, 849, 852, - 86, 856, 86, 86, 86, 855, 851, 86, 86, 859, - 86, 857, 853, 861, 868, 86, 86, 86, 862, 86, - 86, 86, 865, 86, 86, 86, 860, 858, 863, 864, - 871, 86, 870, 86, 873, 86, 866, 867, 874, 878, - 869, 86, 875, 86, 872, 86, 876, 86, 86, 882, - 86, 884, 880, 879, 883, 86, 86, 86, 886, 86, - 86, 877, 881, 86, 86, 888, 86, 86, 894, 86, - 86, 86, 86, 885, 86, 895, 887, 889, 890, 896, - 86, 86, 891, 86, 897, 892, 86, 893, 86, 901, - - 899, 904, 86, 86, 86, 898, 86, 86, 902, 86, - 900, 86, 908, 903, 86, 911, 907, 906, 86, 86, - 86, 86, 905, 86, 86, 86, 921, 909, 910, 919, - 86, 86, 912, 86, 913, 922, 86, 914, 915, 916, - 917, 86, 918, 86, 920, 86, 86, 923, 86, 86, - 927, 86, 925, 86, 86, 924, 931, 926, 932, 86, - 86, 933, 928, 86, 930, 935, 86, 929, 936, 86, - 86, 86, 86, 170, 86, 86, 938, 86, 944, 939, - 945, 941, 943, 934, 937, 940, 942, 86, 86, 947, - 86, 946, 86, 86, 86, 952, 86, 86, 953, 948, - - 955, 86, 86, 86, 86, 86, 954, 949, 950, 956, - 959, 957, 86, 86, 951, 86, 86, 961, 86, 86, - 965, 86, 958, 86, 962, 960, 86, 966, 967, 86, - 86, 86, 86, 86, 86, 86, 964, 86, 86, 86, - 963, 968, 980, 981, 983, 86, 978, 86, 984, 979, - 970, 985, 86, 987, 969, 86, 982, 971, 86, 86, - 972, 991, 986, 990, 973, 86, 988, 974, 86, 86, - 989, 86, 993, 86, 975, 976, 1002, 977, 86, 86, - 86, 86, 86, 86, 1005, 86, 1007, 1004, 992, 86, - 994, 995, 86, 996, 1003, 86, 997, 1009, 1012, 1001, - - 1011, 998, 1008, 86, 1010, 1006, 86, 999, 1000, 1014, - 1015, 86, 86, 1018, 86, 1016, 86, 86, 1017, 86, - 1021, 86, 1020, 86, 86, 86, 1022, 1023, 1013, 1019, - 1024, 1025, 86, 86, 86, 1026, 86, 86, 86, 86, - 1029, 86, 1028, 86, 1033, 86, 1027, 86, 1036, 1032, - 86, 86, 86, 1034, 1040, 178, 86, 1030, 1031, 1035, - 86, 1041, 86, 1038, 1042, 86, 1043, 1045, 1037, 1046, - 86, 1044, 86, 86, 1039, 86, 1049, 86, 86, 1051, - 1052, 86, 86, 1050, 86, 86, 86, 1053, 86, 1047, - 1055, 86, 1054, 1048, 1056, 86, 1057, 86, 86, 86, - - 86, 86, 1059, 1060, 1058, 1061, 86, 1065, 86, 1069, - 86, 86, 86, 1068, 86, 86, 86, 1063, 1062, 1066, - 1067, 86, 86, 86, 86, 1064, 86, 86, 86, 1070, - 1072, 1073, 1075, 1076, 86, 1071, 86, 1077, 86, 86, - 1079, 1078, 86, 86, 1083, 86, 1086, 1074, 1081, 1084, - 86, 1082, 86, 1080, 86, 86, 1085, 86, 1087, 86, - 1095, 86, 1092, 1089, 86, 86, 1094, 86, 86, 86, - 1093, 1088, 1097, 86, 86, 1091, 86, 86, 86, 1090, - 86, 86, 86, 86, 1105, 86, 1096, 1103, 86, 1098, - 86, 1101, 1108, 1099, 1100, 1110, 1102, 1109, 86, 1106, - - 1104, 1107, 86, 86, 1112, 86, 1111, 86, 86, 1114, - 86, 1118, 86, 1115, 86, 1117, 1113, 86, 86, 86, - 86, 1116, 86, 86, 1129, 86, 1121, 1119, 1123, 86, - 86, 1130, 86, 86, 1120, 1132, 86, 86, 1122, 1124, - 86, 86, 1126, 86, 1125, 1127, 1131, 1133, 1135, 1128, - 86, 1136, 1139, 86, 86, 86, 1134, 86, 1141, 1137, - 1140, 1144, 1138, 86, 1143, 86, 1145, 86, 1146, 86, - 86, 1142, 86, 1149, 86, 1151, 86, 86, 86, 86, - 86, 86, 86, 1148, 1154, 1153, 1157, 1147, 86, 1161, - 86, 1158, 170, 1159, 1150, 1152, 86, 1155, 86, 1156, - - 1160, 86, 86, 1164, 1162, 86, 176, 86, 86, 86, - 1163, 86, 1177, 86, 86, 1180, 86, 1178, 86, 1167, - 1165, 1168, 86, 86, 86, 86, 1166, 1169, 1182, 1179, - 1170, 86, 86, 86, 1171, 1196, 1172, 1183, 1185, 1184, - 1173, 86, 1174, 1181, 1187, 86, 1186, 1175, 86, 1188, - 86, 86, 1176, 86, 1189, 1190, 1194, 1191, 86, 86, - 86, 86, 86, 1193, 1197, 86, 1195, 86, 86, 1192, - 1202, 1201, 1198, 1203, 86, 1200, 1205, 1206, 86, 1204, - 86, 1199, 86, 86, 1207, 86, 1208, 1209, 86, 86, - 1210, 86, 86, 86, 86, 1224, 86, 1211, 1212, 86, - - 1213, 1220, 1222, 86, 1223, 1214, 86, 1215, 1221, 86, - 86, 1225, 1227, 1216, 86, 86, 86, 1226, 1217, 1218, - 1232, 86, 86, 86, 1228, 1219, 86, 1233, 86, 86, - 86, 86, 1231, 1229, 1230, 1234, 1239, 86, 86, 1235, - 1242, 86, 1240, 86, 1236, 86, 86, 1237, 1238, 86, - 1245, 1241, 1243, 1247, 86, 86, 1246, 86, 86, 86, - 1244, 86, 1248, 1253, 1250, 86, 86, 1251, 86, 86, - 86, 86, 86, 1249, 1254, 1256, 86, 1252, 86, 86, - 86, 1265, 1263, 86, 86, 1255, 1258, 86, 1257, 1261, - 1260, 1259, 1262, 86, 86, 1270, 1264, 86, 86, 86, - - 1266, 86, 1269, 86, 86, 86, 86, 1267, 175, 86, - 1275, 1276, 86, 1272, 1268, 86, 86, 1271, 1278, 1274, - 1277, 1273, 86, 1279, 1280, 1281, 86, 1283, 86, 1284, - 86, 86, 1286, 86, 86, 1282, 86, 1287, 86, 86, - 1288, 86, 86, 1289, 1285, 1291, 86, 86, 1290, 1298, - 1292, 86, 86, 1300, 1293, 86, 86, 1294, 86, 86, - 1296, 86, 86, 1302, 1295, 1305, 1297, 86, 1304, 86, - 86, 1301, 1299, 86, 86, 1303, 86, 86, 1307, 1308, - 86, 86, 1311, 86, 86, 1310, 1309, 1314, 1312, 86, - 1306, 1317, 1313, 1318, 86, 1316, 86, 86, 86, 86, - - 1315, 86, 1321, 86, 1322, 1319, 86, 86, 86, 86, - 86, 1326, 1328, 1347, 1329, 1330, 1320, 170, 86, 1323, - 86, 86, 1327, 86, 86, 1324, 1333, 1325, 1331, 1332, - 86, 1335, 86, 86, 86, 1334, 86, 86, 1336, 1339, - 86, 86, 1341, 86, 86, 86, 1340, 86, 86, 1342, - 86, 86, 1337, 1343, 1348, 1344, 1338, 86, 86, 86, - 86, 86, 168, 1350, 1354, 1345, 86, 1346, 1349, 1355, - 86, 86, 1352, 1358, 86, 86, 1357, 1351, 86, 86, - 1353, 1356, 86, 86, 1363, 86, 86, 86, 86, 86, - 86, 1369, 86, 1360, 1361, 1365, 86, 1359, 170, 86, - - 86, 1362, 86, 1364, 1370, 1371, 1366, 1372, 86, 1368, - 86, 86, 86, 1374, 1367, 86, 1377, 86, 1373, 1379, - 86, 1378, 1376, 1375, 1381, 1382, 86, 86, 1385, 86, - 86, 86, 1384, 1383, 1386, 1380, 86, 86, 86, 86, - 86, 86, 86, 1389, 86, 1395, 86, 86, 1392, 86, - 1387, 1388, 86, 86, 1390, 86, 166, 1393, 1399, 1391, - 86, 1396, 86, 1394, 86, 1401, 1405, 1397, 1398, 86, - 1406, 1409, 86, 86, 1402, 1400, 1403, 1407, 86, 1404, - 1408, 86, 86, 86, 86, 1411, 86, 1410, 86, 1418, - 86, 1415, 86, 1414, 86, 86, 86, 1412, 86, 1419, - - 86, 1413, 1417, 1423, 86, 1424, 1420, 1416, 86, 1421, - 86, 86, 86, 1425, 86, 1422, 1427, 86, 1428, 86, - 86, 1429, 86, 86, 86, 86, 1433, 86, 86, 86, - 1426, 1436, 1430, 86, 1431, 1434, 86, 1435, 86, 1432, - 1437, 86, 1441, 1443, 1438, 86, 86, 1440, 1439, 86, - 86, 86, 1448, 1442, 86, 1446, 86, 86, 1453, 86, - 86, 1444, 1449, 1455, 86, 1445, 1447, 86, 86, 86, - 86, 86, 1452, 1450, 86, 1456, 1461, 86, 1458, 1454, - 1463, 1451, 1457, 86, 86, 1464, 86, 1459, 86, 1462, - 1460, 86, 1468, 86, 1478, 86, 86, 165, 1466, 1502, - - 86, 1467, 1465, 86, 1469, 1477, 1476, 163, 1470, 86, - 1479, 1471, 1472, 86, 86, 1482, 1473, 86, 1480, 86, - 86, 86, 1474, 1481, 1483, 1484, 1475, 86, 1485, 86, - 1487, 86, 86, 86, 1488, 1492, 1489, 86, 1486, 86, - 1493, 86, 86, 86, 86, 86, 161, 1499, 1494, 1496, - 1500, 1491, 1490, 86, 86, 86, 86, 1497, 86, 1501, - 86, 86, 1495, 1498, 86, 1509, 86, 1504, 1503, 86, - 1511, 86, 1505, 86, 1506, 1510, 1507, 1514, 1508, 1512, - 1513, 86, 86, 86, 1517, 1515, 1516, 86, 1520, 86, - 86, 1518, 1519, 1521, 86, 1524, 1522, 86, 86, 86, - - 86, 86, 1530, 86, 1531, 86, 1526, 86, 86, 86, - 86, 1523, 1525, 86, 86, 1529, 1537, 1532, 1527, 1528, - 86, 1533, 86, 1534, 1536, 1535, 86, 86, 86, 1538, - 1542, 86, 1539, 1541, 1544, 86, 86, 86, 1545, 86, - 1546, 86, 1543, 86, 1547, 1550, 86, 86, 1552, 86, - 86, 1540, 1549, 86, 1553, 1554, 86, 86, 86, 86, - 1548, 1558, 86, 86, 86, 86, 1563, 1551, 1561, 86, - 86, 86, 86, 86, 1564, 1566, 1560, 1555, 1556, 1557, - 1565, 86, 86, 1559, 1562, 1568, 86, 86, 1567, 86, - 86, 86, 1571, 86, 1576, 1573, 1569, 86, 86, 1570, - - 86, 1574, 1575, 1572, 86, 1577, 86, 1578, 86, 1579, - 86, 86, 1584, 1585, 1581, 86, 1580, 1582, 86, 86, - 1586, 86, 1588, 86, 1583, 86, 1587, 86, 86, 1592, - 86, 86, 1589, 170, 86, 86, 86, 86, 1591, 1594, - 1600, 1601, 86, 86, 1590, 86, 86, 86, 1597, 1602, - 86, 1593, 1603, 1595, 86, 86, 1598, 86, 86, 1604, - 1599, 86, 1606, 86, 1611, 1605, 1608, 86, 86, 1609, - 1607, 86, 1616, 86, 86, 1610, 1615, 86, 1620, 86, - 86, 1612, 1618, 1621, 86, 86, 1614, 86, 86, 1623, - 86, 86, 1613, 86, 1634, 1624, 86, 1617, 1619, 86, - - 86, 1629, 1625, 1622, 1630, 1626, 1627, 1633, 1631, 1628, - 86, 86, 1632, 86, 1637, 1635, 86, 86, 86, 1638, - 86, 86, 86, 86, 1636, 86, 1642, 1643, 1644, 86, - 86, 86, 86, 86, 86, 1639, 1641, 1647, 86, 1652, - 86, 86, 86, 1640, 1653, 1646, 1656, 1645, 1649, 1650, - 1648, 1651, 86, 86, 86, 86, 86, 86, 86, 1654, - 86, 1655, 86, 86, 86, 1657, 86, 86, 1664, 86, - 1658, 1660, 1666, 1661, 1659, 1662, 1665, 1668, 86, 86, - 1670, 1663, 1667, 86, 86, 1675, 1673, 1669, 86, 1674, - 1676, 86, 86, 1672, 86, 1678, 86, 86, 1671, 1679, - - 86, 86, 86, 1680, 86, 1684, 1677, 1685, 1686, 1683, - 86, 86, 86, 86, 86, 86, 1687, 1681, 86, 1688, - 1691, 86, 86, 1682, 86, 86, 1692, 86, 1694, 86, - 86, 1699, 86, 1693, 86, 86, 86, 1695, 1689, 1698, - 1690, 1696, 86, 1701, 1697, 86, 1705, 1702, 86, 86, - 1703, 1706, 86, 1707, 1700, 86, 1710, 86, 1708, 86, - 86, 86, 86, 86, 1704, 86, 1718, 1714, 1709, 1716, - 1713, 86, 86, 86, 86, 86, 1711, 86, 1719, 1712, - 1723, 86, 1715, 1717, 1726, 86, 86, 1725, 86, 1721, - 86, 1720, 86, 86, 86, 86, 1724, 86, 86, 86, - - 86, 1722, 86, 1735, 1727, 86, 3667, 1728, 1736, 1732, - 86, 1729, 1730, 1731, 1734, 1740, 86, 1737, 1733, 1738, - 1741, 86, 1739, 86, 86, 86, 86, 86, 1742, 1743, - 86, 86, 86, 86, 1748, 86, 1746, 1744, 1749, 86, - 1752, 1745, 86, 1747, 1756, 86, 86, 86, 1753, 1751, - 1758, 1750, 1757, 86, 1761, 86, 86, 86, 1755, 1754, - 86, 1759, 1762, 86, 86, 86, 1760, 1763, 1764, 86, - 86, 1769, 1770, 86, 86, 1765, 86, 86, 1767, 86, - 86, 1774, 1775, 1766, 1773, 86, 1777, 86, 86, 86, - 1768, 86, 1771, 86, 1778, 1779, 86, 1772, 86, 86, - - 86, 86, 86, 1783, 86, 1776, 86, 1788, 86, 1780, - 1784, 1786, 86, 86, 1781, 1782, 86, 86, 86, 1794, - 86, 1785, 1792, 1789, 1787, 86, 86, 1795, 86, 1796, - 1793, 86, 1791, 1790, 86, 86, 1797, 86, 1801, 86, - 86, 1806, 86, 1798, 86, 1804, 86, 86, 86, 1802, - 1807, 86, 1809, 86, 1800, 86, 1799, 1803, 86, 1805, - 86, 170, 1813, 86, 1816, 86, 1812, 1808, 1815, 86, - 1810, 86, 1811, 86, 1817, 86, 86, 1820, 1819, 1814, - 86, 86, 1818, 86, 86, 1827, 86, 86, 3667, 86, - 1822, 1828, 86, 1821, 86, 1825, 1831, 86, 86, 1823, - - 1824, 1832, 86, 1833, 1835, 86, 1837, 1829, 1826, 1830, - 1836, 86, 86, 1839, 1834, 86, 1841, 86, 86, 86, - 86, 86, 86, 86, 1846, 86, 1843, 1844, 86, 1840, - 86, 1838, 86, 1847, 86, 86, 86, 1842, 1851, 1848, - 86, 1852, 86, 86, 86, 1845, 1849, 1856, 1853, 1850, - 1857, 1859, 86, 86, 1854, 1861, 1855, 86, 1860, 86, - 86, 86, 1858, 86, 3667, 1864, 1866, 1868, 1863, 1867, - 86, 1862, 1869, 1870, 86, 86, 86, 1872, 86, 86, - 1871, 86, 1873, 1874, 86, 86, 1865, 1876, 86, 86, - 1875, 86, 86, 1881, 1882, 1880, 86, 1883, 1885, 86, - - 86, 1884, 1877, 86, 86, 86, 86, 1878, 86, 1888, - 86, 1879, 86, 1887, 86, 86, 86, 1889, 86, 86, - 86, 86, 86, 86, 1890, 86, 86, 1899, 1886, 1894, - 86, 86, 1900, 1895, 1891, 1892, 1896, 86, 1893, 1897, - 86, 86, 1906, 1903, 1901, 1898, 1907, 1902, 86, 1904, - 86, 86, 86, 86, 1905, 1911, 86, 1913, 86, 86, - 1915, 86, 86, 86, 86, 86, 1908, 1910, 1914, 1917, - 86, 1909, 86, 1912, 1918, 86, 1919, 1921, 1916, 86, - 1920, 86, 86, 86, 86, 86, 86, 3667, 1924, 1926, - 1923, 86, 1927, 86, 1922, 1928, 1925, 1934, 86, 86, - - 1929, 1930, 1933, 1935, 86, 1936, 1931, 86, 86, 1937, - 1932, 1938, 1939, 86, 86, 86, 86, 86, 1943, 86, - 1940, 1942, 86, 86, 1945, 86, 86, 86, 86, 1953, - 1954, 86, 86, 1941, 1948, 86, 1952, 1950, 1944, 1947, - 1951, 1946, 86, 86, 86, 1949, 86, 86, 1961, 1955, - 86, 86, 1956, 1962, 86, 1963, 1957, 86, 86, 86, - 1959, 1968, 1958, 1960, 86, 1967, 86, 86, 1971, 1964, - 86, 86, 1972, 86, 1973, 86, 1965, 1966, 86, 1970, - 1975, 86, 1969, 1976, 86, 1981, 1977, 86, 1974, 86, - 1982, 86, 86, 1978, 86, 86, 3667, 1988, 86, 1979, - - 1986, 1983, 1980, 86, 1984, 1990, 86, 1991, 1987, 86, - 86, 1994, 86, 86, 1985, 1992, 1989, 86, 1995, 86, - 86, 1998, 86, 1993, 2002, 86, 86, 86, 86, 86, - 86, 2000, 86, 2003, 1997, 1999, 86, 2001, 86, 1996, - 86, 86, 86, 2008, 2007, 2004, 86, 86, 2005, 2009, - 86, 2006, 2015, 86, 2010, 2011, 2013, 2017, 86, 2018, - 2012, 2019, 86, 86, 2014, 86, 2021, 86, 86, 86, - 86, 2025, 86, 86, 2016, 2020, 2027, 86, 86, 86, - 2031, 86, 86, 86, 86, 86, 2026, 2023, 2022, 2024, - 2034, 86, 86, 86, 2029, 2033, 86, 2030, 2036, 2028, - - 86, 2037, 86, 2032, 2035, 86, 170, 86, 86, 2038, - 2042, 2045, 86, 2040, 2041, 2039, 86, 86, 2043, 86, - 2049, 86, 86, 2044, 86, 86, 86, 86, 86, 2047, - 86, 2051, 86, 3667, 2056, 2046, 2050, 2052, 2048, 2053, - 86, 86, 2057, 2060, 86, 2054, 86, 2059, 2055, 2061, - 2058, 2062, 86, 86, 86, 2065, 2066, 86, 2063, 86, - 86, 86, 2068, 2064, 86, 86, 86, 2069, 86, 86, - 86, 2067, 86, 86, 86, 2074, 86, 2075, 86, 86, - 86, 2079, 2076, 86, 3667, 2070, 2072, 2073, 2071, 2078, - 2077, 86, 2080, 86, 86, 2086, 2083, 86, 2085, 2082, - - 2087, 86, 2088, 2084, 86, 2081, 86, 86, 86, 86, - 86, 2095, 86, 2090, 86, 2089, 86, 2098, 2099, 86, - 2100, 86, 86, 2091, 86, 2092, 2093, 2094, 2096, 86, - 2097, 86, 2101, 2102, 86, 86, 2103, 2107, 86, 86, - 86, 2109, 2110, 2104, 2108, 2105, 2111, 86, 2113, 2112, - 2106, 86, 86, 86, 86, 86, 2114, 86, 2116, 2117, - 86, 86, 2120, 86, 86, 86, 2119, 86, 86, 86, - 2125, 86, 2123, 2124, 2127, 86, 2126, 2118, 2115, 2121, - 86, 86, 86, 86, 2135, 86, 2122, 2128, 2129, 2130, - 86, 86, 86, 86, 2131, 86, 86, 86, 2139, 2138, - - 2133, 2132, 2140, 2134, 86, 2136, 2144, 2141, 86, 2142, - 86, 2137, 2143, 86, 2147, 86, 2149, 86, 2151, 86, - 86, 2145, 86, 86, 2148, 86, 2153, 86, 2146, 86, - 2156, 2157, 86, 86, 2159, 86, 86, 86, 2150, 86, - 86, 86, 86, 2154, 86, 2164, 2161, 86, 2152, 2155, - 2162, 86, 86, 2158, 2167, 86, 2165, 86, 2166, 2170, - 2163, 2160, 2169, 2168, 86, 86, 2171, 86, 2173, 86, - 2176, 86, 86, 2178, 86, 2181, 86, 2177, 2180, 86, - 86, 86, 2182, 86, 86, 2175, 2184, 2185, 86, 2186, - 2172, 2174, 86, 86, 2179, 86, 86, 86, 86, 86, - - 2191, 86, 2183, 86, 2187, 86, 2193, 2197, 2188, 86, - 2196, 2192, 2198, 86, 86, 86, 2189, 2190, 86, 2194, - 86, 86, 86, 86, 2201, 2206, 86, 86, 2205, 86, - 2200, 2195, 86, 86, 2199, 86, 86, 2212, 86, 2211, - 2202, 2203, 2216, 86, 2204, 86, 86, 2209, 2208, 2213, - 86, 2207, 2210, 86, 2214, 2215, 86, 2217, 2219, 86, - 86, 86, 2218, 86, 86, 86, 2223, 2221, 2227, 86, - 86, 2220, 86, 86, 86, 2230, 86, 2232, 86, 2222, - 86, 2233, 86, 2224, 2225, 2226, 2234, 2228, 2229, 2231, - 86, 86, 2238, 86, 2240, 86, 2241, 86, 2239, 2235, - - 2242, 86, 2236, 2244, 2245, 2243, 86, 2237, 86, 86, - 86, 86, 2249, 2247, 86, 86, 86, 86, 86, 2251, - 86, 2253, 86, 2248, 2255, 2257, 2250, 2246, 2252, 86, - 86, 86, 2258, 86, 86, 170, 86, 86, 86, 2271, - 2261, 86, 2254, 86, 2256, 86, 2265, 3667, 2259, 2262, - 2263, 86, 2267, 86, 2260, 2264, 2266, 2268, 86, 2269, - 86, 86, 86, 2270, 86, 86, 86, 2272, 2274, 2273, - 86, 2276, 86, 2277, 2275, 86, 2279, 86, 86, 86, - 86, 2283, 86, 86, 2278, 2282, 86, 86, 2284, 2280, - 2281, 2285, 2286, 86, 2288, 86, 2287, 86, 86, 86, - - 86, 86, 86, 2289, 2293, 2295, 2290, 2294, 86, 86, - 86, 86, 86, 86, 2300, 86, 2291, 2297, 2292, 2296, - 86, 86, 86, 86, 2299, 2301, 86, 2298, 86, 2303, - 2302, 2304, 86, 2306, 86, 2305, 2311, 2307, 2308, 2310, - 2312, 86, 2309, 86, 86, 86, 2313, 86, 86, 86, - 2319, 86, 86, 2321, 86, 86, 86, 2322, 2324, 86, - 2314, 2315, 2318, 2316, 2317, 86, 2326, 86, 2320, 86, - 2327, 86, 2323, 2325, 86, 2330, 86, 86, 86, 86, - 2329, 86, 86, 2335, 2332, 86, 86, 2336, 86, 86, - 2331, 86, 86, 86, 2328, 2337, 86, 86, 86, 2334, - - 2333, 2339, 86, 2340, 2346, 2342, 2338, 2341, 86, 2347, - 86, 2344, 2345, 86, 2343, 86, 86, 2349, 2352, 2348, - 86, 2350, 2355, 86, 86, 2354, 86, 2358, 86, 86, - 86, 2353, 86, 2359, 2351, 2361, 2357, 86, 2356, 2362, - 86, 86, 86, 86, 86, 2364, 2360, 2363, 2365, 86, - 2367, 2366, 2368, 86, 2372, 2370, 2369, 86, 86, 86, - 86, 2374, 2376, 86, 86, 86, 86, 86, 2371, 2379, - 2378, 2380, 2375, 86, 86, 86, 86, 2373, 2381, 2385, - 3667, 86, 86, 2389, 86, 86, 2386, 86, 2390, 86, - 2377, 86, 2382, 2383, 86, 2387, 2384, 86, 86, 2388, - - 2395, 86, 2391, 2392, 86, 2393, 86, 2396, 86, 2394, - 2400, 86, 86, 2398, 86, 2397, 86, 2401, 86, 86, - 2402, 3667, 2404, 2406, 86, 86, 2408, 86, 2399, 2403, - 2405, 2407, 86, 2409, 86, 86, 2410, 86, 86, 2411, - 86, 2413, 2416, 86, 86, 86, 2418, 2414, 86, 86, - 2415, 2419, 86, 2412, 2421, 86, 2420, 86, 86, 86, - 2422, 2423, 2424, 2425, 2417, 86, 86, 2427, 2426, 2430, - 86, 86, 86, 86, 2429, 86, 86, 86, 86, 2428, - 86, 2438, 86, 86, 2431, 86, 2444, 86, 86, 2432, - 2433, 2434, 2436, 2442, 2439, 2437, 86, 2440, 2435, 86, - - 86, 2443, 86, 2441, 86, 2445, 2446, 86, 2448, 86, - 86, 86, 2454, 86, 86, 2456, 86, 86, 86, 2447, - 2453, 86, 2449, 2455, 2450, 2451, 86, 86, 2457, 2452, - 2459, 2461, 2460, 2463, 170, 2467, 2458, 2465, 2468, 86, - 2462, 86, 2466, 86, 86, 86, 86, 86, 2469, 2472, - 86, 86, 2473, 86, 2470, 3667, 2464, 2477, 86, 86, - 2478, 86, 2476, 86, 2481, 86, 2474, 2471, 86, 86, - 86, 86, 2483, 2479, 2482, 2484, 86, 2475, 86, 2486, - 86, 2480, 86, 2485, 2487, 86, 2489, 86, 2488, 86, - 2491, 86, 86, 86, 2492, 86, 86, 2495, 86, 86, - - 86, 2501, 86, 3667, 2499, 86, 86, 2490, 2494, 2502, - 86, 86, 2497, 2496, 2493, 2504, 86, 86, 2498, 86, - 86, 2503, 2500, 86, 86, 86, 2513, 86, 2510, 2505, - 86, 2508, 86, 86, 86, 2507, 86, 2511, 2514, 2509, - 86, 86, 2506, 2512, 86, 86, 86, 86, 2524, 3667, - 86, 2515, 2516, 2517, 86, 86, 86, 2522, 2529, 2518, - 2520, 86, 2525, 2526, 2519, 2521, 86, 2523, 86, 2527, - 2531, 86, 2528, 2532, 86, 86, 86, 2533, 86, 86, - 86, 2530, 86, 2538, 2539, 86, 86, 86, 2534, 2540, - 2541, 86, 2536, 2537, 2542, 86, 2547, 86, 86, 2545, - - 2535, 2543, 2546, 86, 2548, 86, 2549, 86, 2544, 2552, - 86, 2553, 86, 86, 86, 86, 2550, 86, 2554, 2551, - 2555, 86, 2559, 86, 2560, 86, 86, 2562, 86, 86, - 2564, 86, 86, 2558, 2556, 86, 86, 2557, 2567, 86, - 86, 2566, 2568, 86, 86, 2561, 2569, 2563, 86, 2570, - 2565, 2572, 86, 86, 86, 2576, 86, 86, 86, 2575, - 86, 2571, 2573, 2578, 86, 86, 86, 86, 86, 2582, - 2580, 86, 2574, 2581, 86, 2583, 2577, 2586, 2579, 2585, - 86, 86, 86, 2587, 2588, 2592, 2589, 2591, 86, 86, - 2584, 86, 86, 86, 86, 86, 2598, 86, 2597, 86, - - 2590, 86, 86, 86, 86, 86, 2600, 2594, 86, 2593, - 2596, 2603, 86, 86, 86, 2605, 2595, 2601, 2599, 2602, - 86, 86, 3667, 2604, 86, 2611, 86, 2606, 86, 86, - 2613, 2610, 2607, 2617, 86, 2612, 2609, 2614, 2608, 86, - 86, 2618, 86, 86, 86, 2619, 86, 2620, 86, 86, - 86, 86, 2615, 2625, 2616, 86, 2627, 2622, 2624, 86, - 2628, 86, 86, 2631, 2629, 2632, 86, 2623, 2621, 86, - 86, 86, 2635, 86, 86, 2636, 2626, 2630, 86, 2637, - 86, 2634, 2633, 86, 86, 86, 2640, 86, 86, 86, - 86, 86, 86, 2639, 2642, 2647, 2643, 2644, 2638, 2645, - - 2648, 86, 2654, 2646, 2641, 86, 86, 86, 86, 2649, - 86, 2650, 2651, 86, 2653, 86, 2652, 86, 2655, 2657, - 86, 2658, 170, 86, 86, 86, 2656, 2659, 2664, 86, - 86, 86, 86, 86, 2666, 2660, 86, 2661, 86, 2662, - 2663, 86, 86, 2667, 2671, 2665, 86, 2672, 2668, 86, - 2670, 2669, 2678, 2673, 2675, 86, 86, 2676, 2674, 2677, - 86, 86, 2680, 2681, 86, 86, 2679, 86, 86, 86, - 2683, 86, 86, 2682, 86, 2685, 86, 86, 2689, 2684, - 2690, 2687, 86, 86, 2686, 86, 86, 86, 2692, 2693, - 2694, 2695, 86, 86, 86, 2688, 2691, 86, 2696, 2697, - - 86, 86, 86, 86, 2702, 86, 2698, 2701, 86, 2699, - 86, 86, 86, 2704, 86, 2703, 86, 86, 86, 2712, - 2709, 2700, 86, 2711, 86, 86, 86, 86, 2708, 86, - 2705, 2706, 2707, 2713, 86, 2714, 86, 2710, 2720, 86, - 2715, 2718, 86, 2716, 86, 2717, 86, 2724, 86, 2725, - 2719, 2723, 86, 86, 2721, 86, 2726, 86, 86, 2727, - 2722, 2728, 86, 86, 2731, 86, 86, 2733, 2732, 86, - 86, 86, 2729, 2734, 2735, 86, 2730, 86, 2737, 2738, - 2739, 86, 2741, 86, 86, 86, 86, 2743, 86, 86, - 86, 86, 86, 2740, 2742, 2736, 2747, 86, 86, 86, - - 86, 86, 2744, 2745, 2750, 2751, 2746, 2752, 86, 2753, - 86, 2754, 86, 2756, 86, 86, 2760, 86, 2748, 2749, - 86, 2755, 86, 86, 86, 2759, 2761, 2764, 86, 86, - 2757, 86, 86, 2768, 2762, 86, 2763, 2758, 2767, 86, - 2766, 86, 2771, 86, 86, 2765, 86, 2772, 86, 86, - 2775, 2776, 86, 2769, 86, 86, 2770, 86, 86, 2777, - 86, 86, 2782, 86, 86, 2773, 2774, 2779, 2781, 86, - 2780, 86, 86, 2778, 86, 2783, 2786, 86, 2784, 2790, - 86, 2785, 2789, 2791, 86, 2792, 86, 2793, 86, 86, - 86, 86, 2787, 2795, 2788, 86, 86, 2798, 86, 2799, - - 2797, 2794, 86, 2800, 86, 86, 86, 86, 2796, 86, - 86, 2807, 86, 86, 2809, 86, 2801, 86, 2803, 2810, - 86, 2812, 86, 86, 86, 2802, 2806, 2804, 2811, 86, - 2805, 2814, 2808, 86, 86, 2813, 86, 86, 86, 2817, - 86, 2815, 2820, 86, 2822, 86, 86, 2821, 86, 86, - 86, 170, 86, 2816, 86, 2831, 2818, 2819, 86, 2825, - 2829, 86, 86, 2830, 2827, 86, 2823, 86, 2824, 86, - 2832, 86, 86, 2826, 2828, 2838, 86, 2833, 86, 86, - 2834, 2842, 86, 2840, 2841, 2835, 2843, 86, 86, 2844, - 2839, 2836, 86, 2845, 2837, 86, 2846, 86, 86, 86, - - 86, 86, 86, 86, 86, 86, 86, 86, 86, 2848, - 2857, 86, 86, 2855, 86, 2847, 2850, 86, 2849, 3667, - 2851, 2852, 86, 2861, 2853, 2854, 2856, 2858, 86, 2859, - 2860, 2864, 2862, 2863, 86, 86, 2865, 2867, 86, 86, - 2869, 86, 86, 86, 2866, 86, 86, 86, 2868, 86, - 86, 86, 86, 2873, 86, 2880, 86, 86, 2879, 3667, - 2870, 2871, 2874, 2872, 2881, 86, 86, 2875, 2876, 86, - 2877, 2878, 2885, 86, 2887, 2884, 86, 2882, 2886, 86, - 86, 86, 86, 86, 2883, 86, 86, 2894, 86, 86, - 2893, 86, 86, 86, 2888, 86, 86, 2890, 86, 2889, - - 2892, 2900, 2891, 86, 2898, 2901, 2902, 86, 86, 2895, - 2903, 2896, 2897, 2904, 86, 2899, 86, 2905, 86, 86, - 86, 86, 86, 86, 86, 2906, 2910, 2911, 86, 86, - 86, 2908, 2916, 2917, 86, 86, 86, 2907, 2920, 86, - 2909, 86, 86, 2912, 2914, 86, 86, 2913, 2915, 2923, - 2918, 86, 2921, 86, 2919, 86, 86, 2922, 86, 2926, - 2927, 2924, 2928, 86, 86, 86, 2925, 86, 2929, 2933, - 86, 86, 86, 2930, 86, 2937, 2936, 2938, 86, 2934, - 2935, 86, 2940, 86, 2931, 2932, 86, 86, 86, 86, - 86, 2941, 2946, 86, 86, 2947, 2942, 86, 86, 86, - - 2939, 2944, 2950, 86, 2943, 86, 2948, 86, 86, 86, - 2945, 86, 2951, 86, 86, 86, 2954, 3522, 2952, 86, - 2949, 2953, 2955, 2956, 2957, 86, 2959, 2960, 86, 2958, - 86, 86, 86, 2963, 86, 2961, 2962, 2964, 86, 86, - 86, 86, 2965, 86, 86, 86, 86, 86, 2967, 2968, - 2970, 2971, 2973, 86, 2978, 2969, 86, 2966, 2972, 2974, - 86, 2975, 86, 2976, 2977, 170, 86, 2979, 86, 2982, - 86, 86, 86, 2984, 86, 86, 2983, 2987, 86, 2986, - 2988, 86, 86, 3667, 2980, 2985, 2981, 2990, 86, 86, - 86, 2992, 2991, 86, 86, 2989, 2993, 86, 2994, 2995, - - 2997, 86, 86, 86, 2996, 2998, 86, 2999, 86, 86, - 86, 86, 3000, 3004, 3005, 86, 3006, 3002, 86, 86, - 86, 3008, 86, 3001, 86, 3009, 86, 3007, 86, 3010, - 86, 3003, 86, 3011, 86, 86, 86, 3013, 3012, 3014, - 3015, 86, 86, 86, 3020, 86, 3016, 86, 86, 3017, - 3018, 3019, 3022, 3024, 3021, 86, 86, 86, 86, 86, - 86, 3025, 3030, 86, 86, 86, 3023, 86, 86, 3035, - 86, 3031, 86, 86, 86, 3026, 3033, 3027, 3028, 3029, - 86, 3034, 3038, 86, 3032, 3036, 86, 86, 3037, 3043, - 86, 3042, 86, 3039, 3045, 3040, 3046, 86, 3048, 86, - - 86, 86, 86, 86, 86, 86, 3041, 3049, 86, 3050, - 3052, 86, 3053, 86, 3055, 3047, 86, 3044, 86, 3056, - 86, 86, 3057, 86, 3051, 86, 3054, 3060, 86, 3058, - 86, 3062, 3064, 86, 86, 3059, 3065, 86, 3061, 3066, - 86, 86, 86, 3063, 86, 3067, 86, 3068, 3070, 86, - 86, 3072, 3074, 3069, 3071, 86, 86, 3075, 86, 86, - 86, 3079, 3073, 3080, 86, 3081, 86, 3076, 3082, 86, - 86, 86, 86, 3083, 3086, 86, 3077, 86, 86, 3078, - 3089, 86, 86, 3090, 3084, 3085, 3091, 86, 86, 3093, - 86, 86, 86, 86, 3097, 3087, 3098, 86, 3088, 86, - - 86, 86, 3100, 3092, 3094, 3099, 86, 3096, 86, 3102, - 3095, 3101, 86, 86, 3103, 86, 86, 86, 3108, 3111, - 86, 86, 3104, 3107, 86, 3110, 86, 86, 86, 86, - 3117, 3112, 3105, 3106, 86, 3113, 86, 3114, 86, 3116, - 86, 3109, 86, 86, 86, 3120, 3124, 86, 86, 86, - 86, 86, 86, 3115, 86, 3118, 3119, 3126, 3123, 3130, - 3121, 3131, 3125, 3122, 3128, 3127, 3132, 86, 3129, 3133, - 86, 3135, 3136, 86, 3134, 86, 86, 3137, 86, 3138, - 86, 3139, 86, 3140, 86, 3141, 3142, 86, 86, 86, - 86, 86, 3143, 86, 86, 3667, 3147, 86, 86, 3149, - - 86, 86, 3154, 86, 3146, 86, 3150, 86, 3144, 3155, - 86, 86, 3148, 86, 3156, 3145, 3158, 86, 3151, 3159, - 3152, 3153, 3157, 3160, 3161, 86, 86, 3163, 86, 86, - 3165, 86, 86, 3162, 3164, 86, 86, 86, 86, 3171, - 86, 3166, 3172, 86, 3167, 3168, 3169, 86, 86, 86, - 86, 3173, 86, 86, 3179, 86, 3170, 3174, 86, 3180, - 86, 3176, 86, 86, 3182, 86, 3183, 3177, 3175, 86, - 3184, 3181, 86, 3178, 3185, 86, 86, 3186, 3187, 86, - 3191, 86, 86, 3188, 3193, 86, 86, 86, 86, 3199, - 86, 3192, 3196, 86, 3190, 86, 86, 3189, 3194, 86, - - 86, 86, 3197, 86, 3204, 3202, 3203, 86, 3198, 86, - 3195, 3200, 86, 86, 3206, 86, 3205, 3201, 86, 3209, - 3211, 86, 3210, 3212, 86, 3207, 86, 3208, 3213, 86, - 86, 86, 3218, 86, 3216, 3214, 3217, 86, 86, 86, - 3221, 86, 3219, 86, 3220, 86, 86, 86, 3227, 86, - 3215, 3222, 3225, 86, 86, 3223, 3229, 86, 86, 86, - 86, 86, 3230, 86, 3226, 3231, 3224, 86, 3232, 86, - 3233, 86, 3234, 86, 3228, 86, 3235, 3238, 86, 3237, - 86, 86, 3236, 86, 3239, 3242, 3240, 86, 3241, 3243, - 86, 86, 86, 86, 3249, 86, 3247, 86, 3246, 3244, - - 86, 3253, 86, 86, 3250, 3256, 3245, 3254, 86, 86, - 3257, 86, 3248, 86, 86, 3251, 3260, 86, 86, 3259, - 3262, 86, 3255, 3258, 86, 86, 3252, 86, 86, 86, - 3265, 3268, 86, 3267, 3263, 3261, 86, 86, 3271, 86, - 3264, 3273, 86, 3266, 86, 3270, 86, 3275, 86, 3269, - 86, 3278, 86, 3279, 86, 3281, 86, 86, 3274, 86, - 3272, 86, 3276, 86, 3285, 86, 3286, 86, 3282, 3277, - 86, 86, 3289, 86, 3280, 86, 86, 86, 3283, 86, - 86, 3294, 86, 3284, 3667, 3287, 3291, 86, 3292, 3296, - 86, 3288, 3290, 3298, 86, 86, 3293, 86, 3300, 3295, - - 3301, 86, 3297, 86, 3302, 3299, 86, 86, 3305, 3306, - 86, 3308, 86, 3303, 86, 3307, 86, 86, 3311, 86, - 86, 3310, 86, 3314, 86, 3309, 3304, 3312, 86, 86, - 3317, 86, 86, 86, 86, 3322, 86, 86, 86, 3313, - 3318, 3315, 3316, 86, 3326, 86, 86, 3321, 3327, 86, - 3319, 3329, 3325, 86, 3324, 86, 3323, 86, 3320, 3328, - 86, 86, 3331, 3332, 86, 3333, 86, 3330, 3334, 86, - 3335, 86, 3338, 86, 3336, 86, 3340, 86, 86, 86, - 3339, 3337, 3342, 86, 3343, 86, 86, 86, 86, 3341, - 86, 86, 3349, 3350, 86, 86, 86, 86, 3344, 86, - - 86, 86, 3356, 86, 3357, 86, 86, 3347, 3345, 3346, - 3355, 3353, 3348, 86, 3359, 3352, 86, 86, 3358, 3354, - 86, 3351, 3362, 86, 3365, 86, 3360, 86, 3363, 3366, - 86, 86, 3361, 3369, 86, 86, 3367, 3364, 86, 86, - 86, 3368, 86, 3371, 3372, 86, 3370, 3373, 86, 86, - 86, 86, 3374, 86, 3375, 3378, 86, 86, 3376, 3380, - 3377, 86, 86, 3379, 3381, 86, 86, 86, 86, 86, - 86, 3390, 86, 3393, 86, 3391, 3382, 3667, 86, 86, - 86, 3383, 3384, 3385, 3386, 3394, 3387, 3388, 3389, 86, - 86, 3397, 3392, 3396, 3395, 3398, 86, 3399, 86, 86, - - 3401, 86, 86, 3400, 3404, 86, 86, 3402, 3403, 3406, - 86, 3407, 3408, 86, 86, 3409, 3410, 3414, 86, 3411, - 86, 3405, 3412, 3413, 86, 86, 86, 3417, 86, 3415, - 86, 86, 86, 3420, 86, 3416, 86, 86, 3424, 86, - 86, 86, 3423, 86, 86, 3419, 86, 86, 3418, 86, - 3429, 3428, 86, 86, 3421, 3667, 3422, 3433, 3425, 3434, - 86, 3426, 3430, 86, 3431, 3432, 86, 3436, 3427, 3437, - 86, 86, 3435, 3438, 86, 86, 86, 3443, 3445, 86, - 3440, 86, 3444, 86, 86, 3441, 3439, 86, 3442, 86, - 86, 86, 3452, 86, 3449, 3450, 3447, 3453, 86, 86, - - 3455, 86, 86, 86, 3446, 3454, 3456, 86, 3448, 86, - 3451, 3459, 86, 3457, 3458, 3460, 86, 86, 3463, 86, - 3462, 3464, 86, 3465, 86, 86, 3461, 3466, 86, 3467, - 86, 3468, 86, 3469, 86, 3470, 86, 86, 3473, 86, - 3474, 86, 86, 86, 86, 86, 3472, 3479, 86, 86, - 86, 3471, 3475, 86, 3476, 3481, 86, 86, 86, 3485, - 3478, 3486, 86, 86, 3477, 3482, 3483, 86, 3480, 3484, - 3488, 86, 86, 86, 86, 3490, 86, 3492, 3487, 86, - 3495, 86, 3494, 86, 86, 3489, 86, 86, 3497, 86, - 86, 86, 3493, 86, 86, 3496, 86, 3501, 3502, 3491, - - 3503, 86, 86, 3498, 86, 3499, 3500, 3507, 3504, 86, - 3510, 86, 3508, 3511, 86, 3512, 86, 3509, 3513, 86, - 3505, 3506, 86, 86, 86, 86, 86, 86, 3516, 86, - 86, 86, 3515, 86, 86, 3521, 86, 3524, 86, 3518, - 3520, 86, 86, 86, 3525, 3514, 3517, 86, 3523, 86, - 3519, 86, 86, 3526, 3533, 86, 3527, 3528, 3530, 3532, - 3531, 86, 3537, 86, 86, 86, 3535, 3529, 86, 86, - 3539, 3542, 86, 3534, 3536, 86, 86, 3544, 86, 86, - 3545, 86, 3540, 86, 3538, 3543, 3546, 86, 3551, 3541, - 3547, 86, 86, 86, 3548, 3550, 86, 86, 3552, 3555, - - 86, 3549, 86, 86, 86, 86, 86, 3558, 3559, 86, - 3561, 86, 3554, 86, 3556, 3557, 3562, 86, 3563, 86, - 86, 3553, 3566, 86, 3560, 3565, 86, 86, 3564, 3569, - 86, 86, 3570, 86, 3573, 3567, 3574, 86, 86, 86, - 86, 3571, 86, 86, 3568, 86, 3572, 86, 3578, 3579, - 86, 3575, 3576, 3580, 86, 86, 86, 3577, 86, 86, - 3584, 86, 86, 86, 3586, 86, 3581, 3582, 86, 3583, - 3593, 86, 86, 3591, 86, 3588, 3589, 3592, 3585, 86, - 3587, 86, 3597, 86, 3590, 86, 3599, 86, 3600, 86, - 3598, 86, 86, 86, 3594, 3605, 3601, 3595, 3602, 86, - - 3596, 86, 3606, 86, 3603, 86, 3608, 86, 3604, 86, - 3607, 86, 86, 3609, 86, 86, 3614, 86, 86, 3611, - 86, 3617, 86, 3618, 86, 86, 86, 86, 86, 86, - 3610, 3616, 3621, 3612, 3613, 3619, 3615, 86, 3620, 86, - 3625, 86, 3624, 86, 3622, 86, 3626, 3623, 86, 3629, - 3627, 86, 3631, 86, 3632, 86, 86, 86, 3636, 86, - 3633, 86, 86, 3634, 3630, 86, 3637, 3638, 86, 3628, - 3639, 86, 86, 86, 86, 3640, 3635, 86, 3643, 3641, - 86, 3642, 3645, 86, 86, 3647, 86, 86, 86, 3648, - 86, 3651, 86, 3644, 3652, 86, 3646, 86, 3655, 3656, - - 86, 86, 3658, 86, 86, 3649, 3650, 3653, 3657, 3659, - 86, 3654, 86, 86, 86, 86, 3665, 86, 3661, 3660, - 3662, 3666, 86, 3663, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3664, 47, 47, 47, 47, 47, 47, - 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, - 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, - 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, - 80, 80, 80, 89, 89, 3667, 89, 89, 89, 89, - 160, 160, 3667, 3667, 3667, 160, 160, 162, 162, 3667, - - 3667, 162, 3667, 162, 164, 3667, 3667, 3667, 3667, 3667, - 164, 167, 167, 3667, 3667, 3667, 167, 167, 169, 3667, - 3667, 3667, 3667, 3667, 169, 171, 171, 3667, 171, 171, - 171, 171, 174, 3667, 3667, 3667, 3667, 3667, 174, 177, - 177, 3667, 3667, 3667, 177, 177, 90, 90, 3667, 90, - 90, 90, 90, 17, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667 - + 86, 86, 451, 86, 471, 464, 563, 455, 86, 86, + + 472, 474, 475, 476, 463, 473, 86, 456, 477, 86, + 457, 86, 479, 86, 478, 458, 459, 460, 461, 86, + 86, 86, 465, 480, 466, 86, 481, 86, 86, 86, + 486, 488, 86, 86, 487, 482, 467, 468, 469, 86, + 470, 86, 483, 86, 489, 484, 485, 86, 490, 86, + 491, 86, 86, 497, 492, 495, 493, 494, 86, 499, + 86, 500, 86, 501, 86, 86, 86, 86, 506, 505, + 496, 507, 502, 498, 86, 86, 86, 1602, 86, 503, + 508, 510, 504, 511, 86, 86, 509, 513, 86, 518, + 512, 519, 520, 86, 517, 86, 86, 86, 86, 86, + + 514, 521, 535, 515, 86, 516, 86, 522, 86, 523, + 537, 86, 86, 86, 86, 524, 540, 170, 534, 525, + 536, 86, 602, 538, 526, 539, 542, 527, 86, 528, + 86, 529, 541, 558, 86, 553, 551, 86, 557, 552, + 554, 86, 86, 555, 530, 86, 168, 531, 565, 532, + 556, 533, 86, 86, 543, 544, 86, 559, 86, 86, + 572, 86, 560, 562, 545, 546, 547, 548, 549, 86, + 566, 550, 86, 86, 86, 561, 86, 568, 564, 570, + 567, 571, 86, 575, 86, 576, 86, 573, 574, 86, + 86, 580, 86, 86, 577, 569, 86, 86, 578, 584, + + 585, 583, 86, 86, 579, 86, 86, 86, 86, 582, + 86, 86, 591, 590, 86, 598, 86, 581, 592, 593, + 86, 587, 588, 586, 589, 86, 86, 599, 86, 595, + 596, 86, 86, 86, 86, 600, 594, 614, 617, 604, + 605, 86, 615, 86, 601, 597, 603, 86, 86, 619, + 618, 606, 616, 607, 86, 86, 86, 86, 86, 608, + 86, 622, 621, 623, 86, 86, 166, 609, 610, 620, + 624, 611, 612, 86, 626, 613, 86, 627, 625, 628, + 86, 629, 86, 86, 631, 632, 86, 86, 86, 86, + 633, 86, 86, 86, 636, 630, 86, 637, 86, 638, + + 86, 86, 634, 86, 86, 640, 644, 639, 86, 635, + 86, 86, 86, 643, 86, 646, 641, 647, 642, 86, + 649, 86, 650, 648, 86, 645, 86, 653, 86, 651, + 86, 655, 652, 86, 86, 86, 654, 86, 86, 86, + 86, 657, 86, 661, 659, 86, 86, 668, 670, 656, + 86, 672, 663, 86, 86, 658, 86, 86, 660, 662, + 664, 86, 665, 666, 669, 671, 667, 86, 86, 86, + 86, 86, 673, 677, 681, 674, 675, 86, 86, 676, + 86, 86, 684, 678, 683, 86, 679, 680, 86, 86, + 86, 86, 86, 86, 687, 690, 86, 682, 691, 686, + + 86, 86, 86, 86, 86, 693, 685, 86, 86, 165, + 86, 692, 688, 689, 86, 86, 696, 694, 708, 86, + 710, 695, 86, 697, 705, 707, 709, 86, 698, 706, + 699, 712, 86, 86, 86, 711, 700, 86, 701, 713, + 86, 702, 703, 714, 721, 716, 720, 715, 704, 718, + 86, 86, 719, 86, 86, 722, 86, 725, 86, 86, + 728, 86, 86, 730, 86, 717, 723, 86, 86, 724, + 86, 734, 86, 86, 86, 86, 732, 86, 727, 726, + 737, 86, 731, 733, 86, 86, 729, 86, 86, 743, + 738, 735, 740, 739, 741, 736, 742, 170, 745, 86, + + 86, 744, 86, 748, 86, 86, 86, 86, 86, 86, + 86, 746, 752, 757, 86, 747, 749, 86, 756, 754, + 750, 758, 753, 86, 751, 86, 760, 86, 86, 86, + 86, 755, 86, 762, 86, 759, 86, 761, 86, 765, + 86, 766, 763, 771, 764, 767, 86, 163, 772, 86, + 774, 86, 768, 775, 86, 769, 770, 776, 86, 773, + 777, 86, 779, 86, 778, 86, 780, 86, 86, 86, + 86, 781, 86, 785, 86, 86, 782, 86, 86, 786, + 86, 784, 86, 789, 86, 788, 86, 790, 783, 794, + 793, 86, 86, 86, 787, 86, 796, 86, 798, 86, + + 86, 791, 86, 792, 86, 800, 86, 86, 86, 86, + 807, 795, 803, 799, 86, 797, 86, 801, 86, 808, + 86, 802, 86, 86, 805, 804, 810, 86, 815, 806, + 86, 811, 809, 86, 812, 813, 86, 86, 814, 86, + 816, 818, 819, 822, 86, 86, 817, 820, 824, 86, + 86, 86, 86, 823, 821, 825, 86, 827, 86, 828, + 86, 86, 86, 829, 86, 86, 830, 86, 832, 834, + 836, 86, 86, 86, 86, 833, 837, 826, 831, 839, + 86, 86, 845, 86, 86, 835, 86, 161, 86, 86, + 846, 838, 843, 86, 840, 841, 842, 86, 844, 86, + + 847, 848, 849, 86, 86, 86, 850, 852, 86, 86, + 851, 857, 856, 853, 855, 86, 86, 86, 859, 860, + 858, 86, 854, 86, 86, 86, 864, 86, 862, 86, + 86, 865, 86, 871, 86, 868, 86, 86, 86, 86, + 866, 863, 867, 874, 86, 873, 861, 86, 876, 869, + 870, 877, 86, 872, 881, 86, 86, 875, 879, 878, + 86, 86, 86, 887, 885, 86, 883, 86, 882, 886, + 86, 86, 86, 880, 889, 86, 884, 891, 86, 86, + 86, 86, 897, 86, 86, 86, 890, 898, 86, 892, + 888, 86, 86, 899, 86, 86, 893, 894, 904, 895, + + 900, 896, 86, 907, 86, 86, 901, 905, 86, 86, + 902, 86, 86, 903, 86, 86, 86, 906, 914, 909, + 910, 86, 86, 86, 908, 86, 86, 86, 924, 86, + 911, 86, 916, 912, 913, 86, 922, 86, 86, 915, + 917, 918, 919, 923, 920, 921, 86, 86, 86, 926, + 925, 86, 929, 930, 86, 86, 927, 86, 928, 86, + 86, 86, 86, 86, 934, 935, 936, 931, 933, 86, + 86, 86, 942, 932, 938, 939, 86, 86, 941, 86, + 940, 946, 86, 170, 86, 937, 944, 86, 947, 86, + 943, 945, 948, 86, 86, 86, 950, 949, 86, 952, + + 955, 86, 86, 951, 86, 956, 958, 86, 86, 953, + 86, 960, 962, 957, 86, 959, 86, 86, 86, 954, + 964, 86, 86, 86, 968, 86, 86, 961, 86, 965, + 86, 969, 970, 86, 963, 86, 86, 86, 86, 86, + 967, 86, 86, 86, 971, 983, 966, 984, 981, 986, + 86, 987, 86, 972, 982, 973, 86, 993, 974, 86, + 985, 975, 86, 989, 86, 976, 988, 86, 977, 86, + 990, 86, 991, 992, 996, 978, 979, 86, 980, 86, + 86, 994, 1005, 86, 995, 86, 997, 998, 86, 999, + 86, 86, 1000, 86, 1008, 86, 86, 1001, 1012, 1004, + + 1010, 1007, 86, 1002, 1003, 86, 86, 1014, 86, 1006, + 86, 1017, 1018, 178, 1013, 1009, 1011, 1019, 86, 86, + 1015, 86, 1021, 86, 86, 1022, 1020, 86, 1023, 86, + 1024, 1016, 1025, 86, 86, 86, 1026, 1028, 86, 1027, + 86, 86, 1029, 1031, 86, 1032, 86, 1030, 86, 86, + 1036, 86, 86, 86, 86, 1039, 1035, 86, 86, 1045, + 86, 86, 1043, 86, 1033, 1034, 1037, 1038, 86, 1041, + 1040, 86, 1046, 86, 86, 1049, 1044, 1047, 86, 1048, + 1042, 86, 1051, 86, 1053, 1078, 86, 86, 1055, 1056, + 86, 1050, 1054, 86, 86, 86, 86, 1059, 86, 1057, + + 1060, 86, 86, 1052, 1058, 86, 86, 86, 86, 1064, + 1061, 1063, 86, 1062, 1065, 86, 1069, 86, 86, 1072, + 86, 86, 86, 86, 1073, 86, 1066, 1070, 1067, 1071, + 86, 86, 86, 86, 1068, 86, 1079, 86, 1082, 1083, + 1074, 1076, 1075, 86, 1077, 86, 1080, 86, 1081, 86, + 86, 86, 1087, 86, 1090, 86, 1085, 1088, 86, 86, + 86, 86, 1086, 86, 1089, 1098, 1091, 86, 1084, 1093, + 1096, 1099, 86, 86, 1092, 86, 86, 86, 1097, 1095, + 1101, 86, 86, 1094, 86, 86, 86, 86, 86, 86, + 86, 1109, 1112, 1141, 1100, 1107, 86, 1102, 86, 1105, + + 86, 1103, 1104, 86, 1106, 1113, 1110, 86, 1108, 1111, + 86, 86, 1114, 86, 86, 86, 86, 1118, 86, 1115, + 1121, 1119, 1122, 86, 1117, 86, 1116, 86, 1120, 86, + 86, 86, 86, 86, 1125, 1123, 86, 1127, 1124, 86, + 1133, 86, 1134, 1136, 86, 86, 86, 1126, 86, 86, + 1128, 1130, 1142, 1129, 1139, 1135, 1131, 1140, 1137, 1132, + 86, 86, 86, 86, 86, 1138, 1148, 1145, 86, 1147, + 1149, 86, 86, 1143, 1150, 86, 86, 86, 1153, 86, + 86, 1144, 1155, 86, 86, 1146, 86, 86, 86, 86, + 1152, 1157, 1158, 1151, 86, 1161, 86, 1165, 1156, 1154, + + 1162, 170, 1163, 86, 86, 1159, 86, 1160, 1164, 86, + 1166, 1168, 86, 86, 1167, 86, 86, 86, 1181, 86, + 86, 86, 1169, 1182, 1184, 86, 1171, 86, 1172, 86, + 1193, 86, 86, 1170, 1174, 1183, 1173, 86, 1207, 86, + 1175, 86, 1176, 1186, 1187, 1188, 1177, 86, 1178, 86, + 86, 1191, 1185, 1179, 1189, 1190, 1192, 86, 1180, 86, + 86, 1194, 86, 1195, 86, 1197, 86, 1198, 86, 1201, + 86, 86, 1200, 86, 86, 1196, 1206, 1199, 1212, 1208, + 1202, 1209, 1205, 86, 1204, 1210, 86, 86, 1213, 1203, + 86, 86, 1211, 86, 86, 86, 86, 86, 86, 86, + + 86, 1225, 86, 1228, 1229, 86, 86, 86, 1214, 1215, + 1224, 1226, 1227, 1216, 86, 1217, 86, 86, 86, 86, + 1218, 1231, 1219, 1236, 1230, 1233, 1234, 86, 1220, 86, + 1238, 1232, 1237, 1221, 1222, 1235, 86, 86, 86, 86, + 1223, 1243, 86, 86, 86, 1246, 86, 1244, 86, 1247, + 86, 86, 86, 1240, 1239, 1249, 1241, 1242, 86, 86, + 1251, 86, 86, 1252, 1245, 1250, 86, 1248, 86, 1257, + 1254, 1255, 86, 86, 86, 86, 86, 86, 1253, 1260, + 86, 1258, 86, 86, 1256, 86, 86, 1269, 86, 1267, + 86, 1262, 1259, 86, 1264, 1265, 1261, 1266, 86, 86, + + 1263, 86, 1268, 86, 1275, 86, 1270, 86, 1274, 86, + 86, 86, 1271, 86, 86, 86, 1280, 86, 176, 1272, + 1281, 1277, 1282, 1283, 1276, 1285, 1273, 1278, 1279, 86, + 1284, 86, 1286, 86, 86, 86, 86, 86, 86, 1291, + 86, 86, 1287, 86, 1292, 86, 86, 1293, 1289, 1288, + 1294, 86, 1290, 1299, 1296, 1295, 86, 1297, 86, 1303, + 86, 1298, 86, 1305, 86, 86, 86, 86, 86, 86, + 86, 1301, 1307, 1310, 1300, 1302, 86, 1309, 86, 1306, + 1308, 86, 1304, 1312, 86, 86, 1313, 86, 86, 1311, + 86, 86, 1316, 1317, 1315, 86, 86, 1319, 86, 1322, + + 1314, 86, 1318, 86, 1321, 86, 1323, 86, 86, 86, + 1324, 1320, 1326, 86, 1325, 86, 1327, 86, 86, 1333, + 1331, 1328, 1334, 1335, 175, 86, 86, 1329, 86, 86, + 86, 1332, 86, 1330, 1338, 1336, 86, 1337, 1340, 86, + 86, 1339, 86, 1344, 86, 86, 1343, 1341, 86, 86, + 1345, 1346, 86, 86, 86, 86, 86, 1342, 86, 86, + 1349, 1352, 1347, 1348, 86, 86, 1350, 1353, 86, 86, + 1354, 86, 1359, 1355, 1360, 1351, 86, 86, 86, 86, + 86, 1357, 1362, 1356, 1363, 86, 86, 86, 86, 1368, + 1358, 1361, 86, 86, 86, 86, 86, 86, 1364, 1366, + + 1365, 1374, 86, 1370, 86, 170, 1367, 86, 86, 86, + 1369, 170, 1375, 1376, 1371, 86, 1373, 86, 86, 86, + 1377, 1372, 1380, 1379, 1382, 1378, 86, 1383, 1386, 1381, + 1384, 86, 1387, 86, 86, 86, 86, 86, 86, 1390, + 1389, 1391, 86, 86, 86, 86, 1385, 86, 86, 1388, + 1394, 86, 86, 1400, 86, 1397, 1392, 1393, 86, 1395, + 86, 86, 86, 86, 86, 86, 1396, 1398, 1404, 1410, + 1399, 1414, 1401, 86, 86, 86, 1403, 86, 1402, 1406, + 86, 1411, 1412, 1405, 1413, 86, 86, 1415, 1407, 1416, + 1408, 86, 86, 1409, 1417, 86, 86, 1423, 86, 86, + + 1420, 1419, 86, 86, 1424, 86, 86, 1428, 86, 1418, + 1422, 86, 86, 86, 86, 1421, 1425, 1426, 1429, 1430, + 86, 1434, 86, 86, 1427, 1432, 1433, 86, 86, 86, + 86, 1431, 1438, 86, 86, 86, 86, 86, 1435, 86, + 1441, 1439, 1436, 86, 86, 1440, 1442, 1437, 86, 1446, + 1448, 86, 86, 86, 1443, 1445, 86, 1444, 86, 1447, + 86, 1451, 86, 86, 1456, 86, 86, 86, 1449, 1458, + 1460, 1450, 1453, 1452, 1454, 86, 86, 86, 1457, 1455, + 86, 1461, 86, 86, 86, 1459, 86, 1464, 1463, 1466, + 86, 1462, 86, 86, 1468, 1467, 86, 1473, 1465, 1469, + + 86, 86, 86, 1483, 1471, 1470, 1472, 86, 1474, 86, + 1496, 1482, 1475, 86, 1481, 1476, 1477, 86, 1484, 86, + 1478, 1487, 1486, 86, 1485, 86, 1479, 86, 1488, 86, + 1480, 86, 1490, 86, 1489, 86, 1492, 86, 1497, 1498, + 1493, 86, 1494, 86, 86, 86, 1491, 86, 86, 86, + 1499, 86, 1500, 1495, 1502, 86, 86, 1505, 1506, 86, + 1507, 1501, 1503, 86, 86, 86, 86, 1520, 86, 1504, + 1508, 86, 1509, 1515, 1510, 86, 86, 1517, 86, 1511, + 86, 1512, 1521, 1513, 86, 1514, 1522, 1518, 1519, 1516, + 86, 1526, 86, 86, 86, 86, 1527, 86, 86, 86, + + 1523, 1525, 1524, 1528, 1530, 86, 86, 1532, 86, 1531, + 1536, 86, 1537, 86, 86, 1529, 86, 86, 86, 86, + 86, 1539, 1535, 1541, 1533, 1534, 1538, 86, 86, 1543, + 86, 1540, 86, 1542, 1544, 1548, 86, 1547, 86, 1550, + 86, 86, 86, 1551, 86, 1552, 1545, 86, 86, 1553, + 1556, 86, 86, 1549, 86, 1546, 86, 1555, 1558, 86, + 86, 1559, 86, 86, 1564, 86, 1554, 1560, 86, 86, + 86, 86, 1557, 1567, 1569, 1561, 86, 1562, 86, 86, + 86, 1570, 86, 86, 1563, 1572, 1566, 1571, 1565, 86, + 86, 1568, 1574, 86, 86, 1576, 86, 1573, 1577, 86, + + 86, 1579, 86, 1582, 86, 1575, 86, 1580, 1578, 1581, + 86, 1583, 86, 1584, 86, 1585, 86, 86, 1590, 1591, + 1586, 1588, 1587, 86, 86, 86, 86, 1594, 1592, 86, + 1589, 1593, 86, 86, 86, 1598, 86, 86, 1595, 86, + 86, 170, 86, 86, 1600, 1597, 1606, 1607, 86, 1609, + 86, 1596, 86, 86, 1608, 86, 1603, 1599, 1601, 86, + 86, 86, 1604, 86, 1610, 86, 1605, 86, 1617, 86, + 1611, 86, 86, 1614, 1622, 86, 86, 1615, 86, 1612, + 1613, 1621, 86, 1616, 86, 86, 1626, 1624, 86, 1618, + 1620, 1627, 86, 86, 1629, 86, 1619, 86, 86, 86, + + 86, 1623, 1638, 1625, 86, 1630, 1628, 1631, 1637, 1635, + 1632, 86, 1636, 1633, 1640, 86, 1634, 86, 1643, 1641, + 86, 86, 86, 1644, 86, 1639, 86, 86, 1642, 86, + 86, 86, 1648, 86, 1649, 1650, 86, 86, 86, 86, + 1645, 1653, 86, 86, 1647, 86, 1658, 86, 1646, 1651, + 86, 1659, 1655, 1652, 86, 86, 1662, 1654, 1661, 86, + 1656, 1657, 86, 86, 86, 86, 1663, 86, 1660, 86, + 86, 1664, 86, 168, 1670, 86, 86, 1666, 1665, 1667, + 1668, 1672, 1671, 86, 86, 1676, 1669, 86, 1673, 86, + 86, 1681, 1675, 1674, 86, 1680, 86, 86, 1678, 1682, + + 86, 86, 1677, 86, 1684, 86, 1685, 86, 86, 86, + 1679, 1690, 1687, 1689, 1683, 1686, 166, 86, 1691, 1692, + 86, 1693, 1688, 86, 86, 86, 86, 1694, 1697, 86, + 86, 86, 1699, 86, 1698, 86, 86, 86, 86, 1705, + 86, 86, 1704, 86, 86, 1701, 1695, 86, 1696, 1700, + 1702, 1707, 1703, 86, 86, 1709, 1711, 86, 1708, 1713, + 1706, 1712, 86, 1710, 1714, 86, 86, 1715, 86, 1716, + 86, 86, 86, 1717, 86, 1719, 1718, 1720, 1724, 86, + 86, 86, 86, 86, 86, 1725, 86, 1730, 86, 1721, + 1733, 1722, 1723, 86, 1732, 86, 86, 1726, 1728, 86, + + 86, 1727, 86, 86, 86, 1731, 86, 86, 1729, 86, + 86, 1742, 86, 86, 1734, 1743, 86, 165, 1735, 1736, + 1739, 1737, 1738, 86, 1741, 1740, 1744, 1750, 1746, 1747, + 86, 86, 1745, 1748, 86, 86, 1749, 86, 86, 86, + 86, 1755, 86, 86, 86, 1756, 86, 1753, 1751, 1759, + 86, 86, 1752, 1754, 1763, 86, 1764, 86, 1757, 1765, + 1758, 1760, 86, 1761, 1768, 86, 1762, 86, 86, 86, + 86, 1770, 1766, 1769, 86, 1767, 86, 86, 1771, 86, + 86, 1776, 1777, 86, 86, 86, 1774, 86, 86, 1772, + 1780, 86, 1781, 86, 1773, 1782, 1784, 86, 1778, 1775, + + 86, 86, 86, 1785, 86, 1779, 1786, 86, 1783, 1787, + 86, 86, 86, 1790, 86, 86, 86, 1795, 1788, 86, + 1789, 1793, 86, 86, 86, 86, 86, 1801, 86, 1799, + 86, 1802, 1791, 86, 1792, 1794, 86, 1796, 86, 1800, + 1797, 86, 1798, 1805, 1804, 1803, 86, 1808, 86, 86, + 86, 86, 1813, 86, 86, 1811, 86, 86, 1814, 86, + 1816, 1807, 1809, 1806, 86, 86, 1812, 1810, 86, 86, + 86, 86, 1820, 1823, 86, 1822, 1815, 86, 86, 1817, + 1819, 1824, 86, 1818, 1821, 170, 86, 1826, 86, 1828, + 1825, 86, 86, 86, 1834, 86, 86, 86, 1838, 86, + + 1829, 1827, 1835, 86, 86, 1832, 86, 1830, 1831, 1840, + 86, 86, 1839, 1842, 86, 1836, 1837, 1833, 1844, 1843, + 86, 1846, 1848, 86, 86, 86, 1841, 86, 86, 86, + 1845, 86, 86, 1851, 1847, 1850, 86, 1853, 86, 1854, + 86, 86, 86, 86, 1849, 1858, 1855, 86, 1859, 86, + 86, 86, 163, 1866, 86, 1852, 1857, 1863, 1856, 86, + 1864, 1860, 1861, 86, 86, 86, 86, 1868, 1867, 1862, + 86, 1871, 1865, 1873, 1870, 86, 1872, 1874, 86, 1876, + 1877, 86, 86, 1869, 86, 86, 86, 1878, 86, 1879, + 86, 1880, 1881, 86, 1883, 86, 86, 1888, 86, 1875, + + 1882, 86, 1884, 86, 1887, 1889, 86, 1890, 86, 86, + 86, 86, 1885, 86, 1891, 1892, 1886, 86, 1895, 86, + 86, 86, 1894, 86, 86, 1896, 1897, 86, 86, 1893, + 1898, 86, 86, 86, 86, 86, 86, 1907, 1906, 86, + 86, 1901, 1899, 86, 1900, 1902, 1903, 1909, 86, 86, + 1913, 1904, 1912, 1905, 86, 1908, 86, 86, 86, 86, + 1910, 1911, 1918, 1914, 86, 1920, 86, 1922, 86, 86, + 1915, 86, 1917, 86, 86, 1921, 1924, 1916, 86, 1926, + 1919, 86, 86, 86, 86, 1925, 86, 86, 1928, 1923, + 86, 86, 86, 1931, 86, 1934, 1927, 1933, 1935, 161, + + 86, 1930, 1932, 1940, 1941, 86, 1929, 1936, 86, 1937, + 1942, 86, 86, 86, 1938, 86, 1945, 1939, 1946, 86, + 1943, 86, 86, 86, 86, 86, 1951, 1949, 1947, 1950, + 1944, 86, 86, 86, 86, 86, 1953, 86, 86, 86, + 1948, 1962, 86, 1956, 1963, 86, 1952, 1958, 1960, 1955, + 1959, 1954, 1961, 86, 1957, 86, 86, 1969, 86, 86, + 86, 86, 1970, 86, 86, 1964, 1965, 86, 86, 1971, + 1967, 1976, 1972, 1966, 86, 1968, 86, 1975, 86, 86, + 1979, 86, 1981, 86, 1980, 1974, 1973, 1978, 86, 86, + 1977, 86, 1983, 1985, 1989, 1984, 1982, 86, 86, 1990, + + 86, 86, 86, 86, 86, 1996, 86, 1986, 1994, 1998, + 86, 86, 1987, 1992, 1999, 1988, 1991, 86, 1995, 86, + 86, 2002, 2000, 1993, 1997, 86, 86, 86, 86, 2006, + 86, 2003, 2010, 2001, 86, 86, 86, 86, 86, 2008, + 86, 86, 2005, 2007, 86, 2009, 2004, 86, 2011, 86, + 86, 86, 2015, 2012, 2016, 86, 2013, 86, 86, 2017, + 2014, 2021, 2023, 86, 2018, 2025, 2019, 2026, 2020, 86, + 86, 86, 2022, 86, 86, 2029, 86, 2027, 86, 86, + 2033, 86, 2028, 2035, 2024, 86, 86, 86, 86, 86, + 2030, 2039, 86, 86, 86, 86, 2031, 86, 2032, 2034, + + 2042, 2041, 86, 2037, 86, 86, 2038, 2036, 86, 2044, + 2045, 2046, 86, 2040, 2043, 86, 86, 170, 86, 2050, + 2053, 86, 86, 2048, 2049, 86, 86, 2057, 86, 2051, + 86, 2047, 86, 2052, 86, 86, 86, 2055, 86, 2059, + 86, 2054, 2064, 86, 2058, 2056, 2060, 2061, 86, 86, + 86, 2076, 2065, 2068, 86, 2062, 2067, 86, 2063, 86, + 2069, 2066, 2070, 86, 2071, 86, 2073, 2074, 86, 86, + 86, 86, 86, 2077, 2072, 86, 86, 86, 86, 86, + 86, 2075, 86, 2082, 2083, 86, 86, 2087, 86, 2084, + 86, 2078, 2095, 86, 2080, 2081, 86, 2079, 2085, 2088, + + 2086, 86, 86, 2096, 86, 86, 2091, 2093, 2090, 86, + 86, 2094, 2089, 2092, 86, 86, 86, 86, 86, 2103, + 86, 2098, 86, 2106, 86, 2097, 2107, 86, 86, 2099, + 86, 2101, 2104, 2100, 2105, 86, 2102, 2108, 86, 2116, + 2109, 2110, 86, 86, 2111, 2112, 2115, 86, 2117, 2113, + 86, 2114, 2119, 2118, 86, 86, 2121, 86, 86, 86, + 86, 86, 86, 2124, 2122, 2125, 86, 86, 2128, 86, + 86, 86, 2127, 2120, 86, 86, 86, 2133, 86, 2131, + 2132, 2126, 2123, 2134, 2135, 2129, 86, 86, 86, 86, + 86, 2143, 2130, 86, 86, 86, 86, 86, 2136, 2137, + + 2138, 2147, 2146, 86, 86, 2139, 2141, 2140, 86, 2142, + 2148, 86, 86, 2144, 2145, 2149, 86, 2150, 86, 2151, + 2152, 2155, 2153, 2154, 86, 86, 86, 86, 2159, 86, + 86, 2161, 2157, 2156, 86, 86, 86, 2164, 2165, 86, + 86, 2167, 86, 86, 86, 86, 2158, 86, 86, 2172, + 86, 86, 2160, 2169, 2162, 86, 2170, 2163, 86, 86, + 2166, 2176, 86, 86, 2175, 86, 2171, 2173, 2168, 86, + 86, 86, 2177, 86, 2174, 86, 2179, 2185, 2178, 2180, + 86, 2182, 2187, 86, 86, 2181, 2190, 2184, 86, 2186, + 86, 2183, 86, 2188, 86, 86, 2191, 2189, 2193, 2194, + + 86, 86, 86, 86, 86, 86, 2195, 86, 86, 86, + 86, 2196, 2200, 2202, 2192, 86, 86, 2206, 2197, 86, + 2201, 86, 2205, 86, 2207, 2198, 2199, 86, 86, 86, + 86, 2210, 86, 2203, 86, 86, 2215, 86, 86, 2208, + 2214, 86, 2204, 2209, 86, 3682, 86, 2211, 86, 2212, + 2220, 86, 2221, 86, 2213, 86, 2218, 2217, 2216, 2222, + 2224, 86, 86, 2219, 2223, 86, 2225, 2228, 86, 2229, + 86, 86, 86, 86, 86, 86, 2226, 2232, 86, 2236, + 86, 2227, 86, 86, 2230, 86, 86, 86, 2239, 2244, + 2231, 2241, 86, 2233, 2234, 2235, 2237, 2238, 86, 2240, + + 86, 2242, 2243, 86, 86, 2249, 86, 2247, 86, 2248, + 2250, 86, 2251, 3682, 2245, 2253, 2254, 2252, 86, 2246, + 86, 86, 86, 86, 2258, 2256, 86, 86, 86, 86, + 86, 2260, 86, 2262, 2255, 2257, 2264, 86, 2259, 2266, + 2261, 86, 86, 2267, 86, 86, 86, 170, 86, 86, + 86, 86, 2270, 86, 2263, 86, 2274, 86, 2275, 2265, + 2268, 2271, 2272, 86, 2276, 2334, 2269, 2273, 2277, 86, + 2278, 86, 2280, 2279, 86, 86, 86, 86, 86, 86, + 2281, 2282, 86, 2283, 2284, 86, 86, 2285, 2286, 86, + 2288, 2287, 86, 86, 86, 2292, 86, 86, 2289, 2291, + + 86, 86, 2293, 86, 2290, 2294, 2295, 86, 2297, 86, + 2296, 86, 2299, 86, 86, 86, 2304, 2298, 2302, 86, + 2303, 86, 86, 86, 86, 86, 86, 86, 2309, 2300, + 2306, 86, 2301, 86, 86, 2312, 86, 2305, 2308, 2310, + 2313, 2307, 86, 2311, 86, 2315, 2317, 86, 86, 2321, + 86, 2316, 2319, 2314, 86, 86, 86, 2318, 2322, 86, + 86, 2320, 86, 2328, 86, 86, 2330, 86, 86, 86, + 2323, 86, 2324, 2331, 2327, 2325, 86, 2326, 2333, 86, + 86, 2329, 2335, 86, 86, 2332, 86, 2336, 2339, 86, + 2338, 2337, 86, 86, 86, 86, 2344, 86, 2342, 2341, + + 2343, 86, 2345, 2340, 86, 86, 86, 86, 86, 2348, + 2346, 86, 86, 86, 2347, 3682, 2349, 2353, 2351, 2355, + 2350, 86, 86, 2358, 2356, 86, 2354, 2359, 86, 86, + 2364, 86, 86, 2352, 86, 2357, 2362, 2367, 86, 86, + 2360, 2363, 2361, 2368, 86, 86, 2365, 2371, 86, 2370, + 86, 86, 2366, 86, 86, 2373, 86, 86, 2374, 2369, + 86, 86, 2375, 2379, 86, 2377, 2372, 2382, 86, 2378, + 86, 86, 2376, 86, 86, 86, 2384, 2386, 86, 2380, + 2388, 86, 86, 2389, 2381, 2385, 86, 2390, 2383, 86, + 86, 2391, 86, 2395, 86, 86, 2387, 86, 2399, 86, + + 2396, 86, 86, 2400, 86, 86, 2398, 2392, 2393, 2401, + 2397, 86, 2394, 2405, 86, 86, 2406, 86, 86, 2403, + 86, 2402, 86, 2404, 2410, 86, 86, 2411, 2407, 86, + 86, 2412, 86, 2408, 2414, 2416, 86, 86, 2418, 86, + 2409, 86, 2415, 2413, 2417, 86, 2419, 86, 2420, 86, + 86, 86, 2421, 2423, 86, 86, 2426, 86, 86, 2422, + 2424, 2428, 86, 2425, 2431, 86, 2429, 86, 86, 2430, + 2432, 2427, 86, 2434, 2433, 86, 86, 2435, 2436, 2440, + 86, 86, 86, 2437, 86, 2439, 86, 86, 86, 86, + 86, 86, 86, 2448, 86, 2438, 86, 86, 86, 2441, + + 2442, 2449, 2443, 2444, 2446, 86, 2447, 2454, 2450, 86, + 2452, 2445, 2451, 86, 2453, 2455, 86, 2459, 86, 2456, + 86, 86, 2458, 2464, 86, 86, 86, 2466, 86, 86, + 86, 86, 2457, 2460, 2463, 2465, 86, 86, 2461, 86, + 2469, 170, 2470, 3682, 2471, 2473, 2462, 2467, 2475, 2468, + 2477, 86, 86, 2476, 86, 2478, 86, 86, 2472, 86, + 2479, 86, 86, 2474, 2482, 86, 86, 2480, 86, 2483, + 86, 2486, 2481, 2487, 86, 86, 2488, 86, 2489, 2491, + 86, 2493, 2492, 2484, 86, 86, 2494, 86, 2490, 2495, + 2496, 86, 86, 86, 2485, 2497, 86, 2499, 86, 86, + + 86, 86, 86, 86, 86, 2502, 86, 86, 2505, 86, + 86, 86, 2498, 86, 2509, 2512, 2504, 86, 2500, 2511, + 86, 86, 2506, 2507, 2501, 2503, 2508, 86, 2513, 86, + 86, 86, 2510, 86, 2514, 2515, 86, 86, 2520, 2523, + 86, 86, 2518, 86, 86, 2517, 86, 2516, 86, 2521, + 2519, 2524, 86, 86, 86, 2522, 86, 86, 2534, 86, + 2525, 2541, 86, 2526, 86, 2527, 86, 86, 2532, 86, + 86, 2528, 2530, 2543, 2535, 2531, 2529, 86, 2533, 2536, + 86, 2537, 2539, 2538, 86, 86, 86, 86, 86, 2540, + 2542, 86, 86, 2548, 2549, 86, 86, 2544, 2550, 2551, + + 86, 2546, 86, 2552, 2547, 86, 3682, 86, 2555, 86, + 2545, 2556, 2557, 86, 86, 2558, 86, 2553, 2554, 86, + 2559, 2562, 86, 2563, 86, 2560, 86, 86, 2561, 2566, + 86, 2564, 2565, 86, 2569, 86, 2570, 86, 86, 2572, + 86, 86, 2574, 86, 86, 2568, 86, 2577, 86, 2576, + 2567, 2578, 86, 86, 86, 86, 2581, 2571, 86, 2573, + 86, 2575, 86, 2580, 2583, 86, 86, 2579, 2587, 86, + 86, 2586, 2589, 86, 2584, 2582, 86, 86, 86, 86, + 86, 2585, 2591, 2593, 2592, 86, 2594, 2596, 86, 2588, + 86, 86, 86, 2599, 2590, 86, 2602, 86, 2597, 86, + + 2603, 2595, 86, 86, 3682, 2598, 86, 2600, 86, 86, + 2609, 86, 86, 2608, 2601, 86, 86, 2605, 86, 2604, + 2611, 86, 86, 2607, 2614, 86, 2606, 86, 86, 86, + 2617, 2610, 86, 2612, 2616, 86, 2613, 86, 2622, 86, + 86, 86, 2615, 2624, 86, 2628, 2618, 2619, 2623, 86, + 2620, 86, 2625, 86, 86, 86, 2629, 86, 2621, 2630, + 2631, 86, 86, 86, 86, 2632, 2633, 2626, 2636, 2627, + 2635, 86, 86, 3682, 86, 86, 2638, 2639, 2634, 2640, + 2642, 2643, 86, 2646, 86, 2644, 86, 86, 2637, 86, + 2641, 86, 86, 86, 86, 86, 2647, 2645, 2648, 86, + + 3682, 86, 2651, 86, 2653, 2650, 86, 86, 86, 2649, + 2654, 2658, 2655, 2659, 2652, 2656, 86, 86, 86, 86, + 2660, 2657, 86, 86, 2664, 86, 2665, 86, 2661, 86, + 2669, 2663, 86, 86, 2666, 170, 2668, 86, 2662, 86, + 2670, 86, 2667, 2675, 86, 2671, 86, 2672, 86, 86, + 86, 86, 86, 2673, 86, 2674, 2676, 2677, 2678, 2683, + 86, 86, 2681, 2682, 3682, 2679, 2680, 2686, 86, 86, + 2687, 86, 2684, 2685, 2688, 86, 86, 86, 2691, 2689, + 2692, 86, 2690, 86, 86, 2695, 86, 2694, 86, 86, + 2693, 86, 2696, 86, 2701, 2697, 86, 2700, 86, 86, + + 86, 86, 2704, 2698, 86, 86, 2703, 2705, 2706, 86, + 2707, 86, 2699, 2702, 86, 86, 2708, 86, 86, 2713, + 86, 86, 2712, 2709, 2710, 86, 86, 86, 86, 86, + 2715, 86, 86, 86, 2714, 2720, 2723, 2711, 2722, 86, + 86, 2725, 86, 2719, 86, 2724, 2716, 2717, 2718, 86, + 86, 86, 2721, 86, 2731, 86, 2729, 86, 86, 86, + 2735, 2736, 2726, 86, 2734, 86, 86, 86, 2727, 2728, + 2732, 2737, 86, 2733, 2730, 86, 86, 2738, 86, 2740, + 3682, 2739, 86, 2742, 86, 86, 2744, 2743, 86, 86, + 2741, 2745, 2746, 86, 2748, 86, 2750, 86, 86, 2749, + + 2752, 86, 86, 86, 2747, 2754, 86, 2753, 86, 2751, + 86, 86, 86, 86, 86, 86, 2758, 86, 86, 86, + 2762, 2755, 2756, 2763, 2764, 86, 2757, 2765, 86, 86, + 2766, 2760, 86, 2768, 86, 2761, 86, 2767, 2759, 2771, + 86, 2770, 86, 86, 86, 2769, 2773, 2776, 86, 86, + 86, 86, 86, 86, 2774, 2780, 2775, 86, 2779, 2772, + 2778, 86, 2783, 86, 86, 2777, 86, 2784, 2781, 86, + 2787, 2786, 2782, 2788, 86, 86, 86, 86, 86, 86, + 2789, 86, 86, 2794, 2793, 2785, 2791, 86, 86, 86, + 86, 2792, 86, 86, 2790, 2798, 2795, 86, 2801, 2807, + + 2797, 2796, 2802, 86, 2803, 86, 2804, 86, 86, 2799, + 2805, 86, 2800, 86, 86, 86, 2810, 86, 2811, 2809, + 2806, 86, 2812, 86, 86, 86, 86, 86, 86, 86, + 86, 2808, 2819, 86, 86, 2813, 2896, 2815, 2821, 86, + 2822, 86, 86, 86, 2814, 2818, 2816, 2820, 2817, 2824, + 86, 86, 86, 2823, 2828, 2825, 86, 86, 2826, 86, + 86, 2829, 2832, 86, 2827, 2834, 86, 86, 86, 2833, + 86, 86, 86, 86, 86, 2841, 86, 2830, 170, 2831, + 86, 2843, 86, 2837, 86, 2844, 2839, 86, 2836, 86, + 2842, 86, 86, 2835, 2899, 2838, 2840, 2845, 86, 2846, + + 86, 2850, 86, 86, 86, 2847, 2851, 2852, 2853, 2854, + 86, 2848, 2855, 86, 2849, 86, 2856, 86, 2857, 86, + 2858, 86, 2859, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 2860, 2869, 86, 86, 86, 86, 2867, 2862, + 86, 2873, 2861, 86, 2864, 2863, 86, 2874, 2866, 2865, + 2868, 2875, 86, 2871, 2870, 2872, 86, 86, 2877, 86, + 2876, 2879, 86, 2881, 86, 2878, 2880, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 2885, 2882, 2892, 86, + 2893, 86, 2891, 86, 86, 2883, 2884, 2886, 2887, 2888, + 2889, 86, 2890, 2897, 86, 2898, 86, 86, 86, 86, + + 86, 86, 2895, 2894, 2906, 86, 2905, 86, 86, 2900, + 86, 86, 86, 2902, 2904, 2901, 86, 86, 2903, 2913, + 86, 2912, 2910, 2914, 86, 2916, 86, 2907, 2908, 86, + 2909, 2915, 2911, 86, 86, 86, 86, 86, 86, 2917, + 86, 86, 2918, 2922, 86, 2924, 86, 2920, 86, 86, + 86, 2929, 86, 2919, 2930, 86, 2921, 2923, 2933, 86, + 86, 2925, 86, 2926, 86, 2931, 2927, 2928, 2936, 86, + 2932, 2934, 86, 86, 86, 2941, 86, 2935, 2940, 2939, + 86, 86, 86, 86, 2937, 2946, 86, 2938, 86, 86, + 86, 86, 2950, 2942, 2949, 86, 2943, 86, 2948, 86, + + 2947, 86, 2944, 2945, 2951, 86, 2953, 86, 86, 2957, + 2955, 86, 86, 2954, 2952, 2956, 2959, 86, 86, 2960, + 86, 2961, 2963, 86, 86, 86, 86, 86, 2970, 86, + 86, 2958, 86, 86, 86, 86, 2967, 2964, 2965, 2966, + 2974, 2968, 2962, 2969, 2973, 86, 86, 86, 2972, 86, + 2971, 2975, 86, 86, 2977, 86, 86, 86, 86, 86, + 2978, 2976, 86, 2983, 2980, 2981, 86, 2984, 2986, 86, + 86, 2982, 2979, 86, 2985, 2987, 86, 2991, 2988, 2990, + 170, 86, 86, 86, 2995, 2989, 2992, 86, 86, 2997, + 86, 86, 2996, 86, 3000, 86, 3001, 86, 2999, 86, + + 2993, 2994, 3003, 86, 86, 3005, 2998, 3004, 86, 86, + 3006, 86, 3002, 3007, 3008, 86, 3010, 86, 86, 86, + 86, 3011, 86, 3012, 86, 86, 86, 3017, 3013, 3009, + 3018, 3019, 3015, 86, 86, 3014, 86, 86, 3021, 86, + 86, 3022, 86, 86, 86, 3023, 3016, 3024, 3026, 3020, + 86, 86, 86, 86, 3025, 3027, 3028, 86, 86, 86, + 86, 3033, 86, 86, 86, 86, 3030, 3031, 3032, 3035, + 3029, 3034, 3037, 86, 86, 3036, 86, 86, 86, 3038, + 3043, 86, 3039, 86, 3044, 3040, 86, 86, 86, 86, + 3048, 86, 3051, 86, 3041, 3042, 3046, 3047, 86, 86, + + 86, 3049, 3045, 86, 3056, 86, 3050, 3055, 86, 3058, + 3059, 86, 3062, 86, 3053, 86, 86, 3052, 86, 86, + 3054, 3063, 86, 86, 86, 86, 86, 3064, 86, 3066, + 3060, 3061, 3069, 3057, 3067, 86, 86, 86, 86, 3068, + 3070, 86, 3074, 86, 86, 3071, 3072, 3682, 3065, 3073, + 86, 3075, 86, 3076, 3078, 86, 3079, 86, 3080, 86, + 86, 86, 3077, 86, 3081, 86, 3082, 3084, 86, 86, + 3085, 86, 3083, 3088, 3086, 86, 86, 3087, 3089, 86, + 86, 3093, 86, 3090, 3094, 86, 3095, 86, 3096, 86, + 86, 86, 86, 3097, 86, 3091, 3092, 3100, 86, 86, + + 3101, 3103, 86, 86, 3098, 3099, 86, 3104, 3105, 86, + 3107, 86, 3108, 86, 3102, 86, 3111, 86, 3106, 3112, + 86, 3113, 86, 86, 3114, 86, 86, 3116, 3115, 3110, + 86, 3109, 3117, 86, 86, 86, 3122, 86, 86, 86, + 3682, 3121, 86, 3124, 3125, 86, 3119, 86, 3118, 86, + 86, 86, 3126, 3128, 3120, 86, 86, 3127, 3130, 86, + 3131, 3134, 3123, 3129, 86, 86, 86, 86, 3132, 3133, + 3138, 86, 86, 86, 86, 3140, 86, 86, 3150, 86, + 3137, 3139, 3135, 3141, 3144, 3136, 3145, 3142, 86, 3147, + 86, 3146, 86, 3143, 3148, 86, 3149, 86, 3151, 86, + + 3152, 86, 3153, 86, 3154, 86, 3155, 86, 86, 86, + 3158, 86, 86, 3157, 3159, 86, 86, 3161, 86, 86, + 3163, 86, 86, 3156, 3682, 3160, 86, 3164, 3162, 3168, + 86, 3169, 86, 86, 86, 3180, 3165, 3170, 86, 3166, + 3174, 3167, 3172, 86, 3173, 3175, 86, 86, 3171, 3177, + 86, 86, 3179, 86, 3176, 86, 3178, 3182, 86, 86, + 86, 86, 3186, 86, 3181, 3187, 86, 86, 3183, 3184, + 86, 3188, 86, 86, 86, 86, 86, 3194, 86, 3185, + 86, 3189, 3195, 86, 3191, 3197, 3200, 86, 86, 3190, + 3192, 3196, 3198, 86, 3193, 86, 3202, 86, 3199, 86, + + 86, 3206, 86, 86, 3208, 3204, 86, 86, 86, 3201, + 86, 86, 3207, 3203, 86, 3214, 3211, 3212, 3205, 3209, + 86, 86, 86, 86, 86, 86, 3219, 86, 3217, 3218, + 86, 3210, 3215, 86, 3213, 3221, 3220, 86, 86, 3224, + 3226, 86, 3225, 3216, 3227, 86, 3222, 3228, 86, 86, + 86, 3223, 86, 3682, 86, 3233, 86, 86, 3229, 3232, + 86, 86, 3234, 3236, 86, 3235, 86, 86, 86, 86, + 3230, 3231, 86, 3240, 3237, 3242, 3244, 86, 3238, 86, + 86, 86, 86, 3245, 86, 3246, 86, 3241, 3239, 3247, + 86, 3248, 86, 86, 3253, 86, 86, 3243, 86, 86, + + 86, 3249, 86, 86, 3257, 86, 3252, 3250, 3251, 3254, + 86, 3255, 3256, 86, 3258, 3262, 86, 86, 3259, 86, + 3264, 3261, 3260, 86, 86, 86, 3265, 3268, 86, 3269, + 86, 86, 3271, 86, 3275, 86, 3263, 3272, 86, 3274, + 86, 3266, 3277, 86, 3270, 3273, 86, 86, 86, 86, + 3267, 86, 86, 3280, 3283, 86, 3282, 86, 3286, 86, + 86, 3276, 3278, 3279, 86, 3281, 3285, 3288, 86, 86, + 3290, 86, 3284, 86, 3293, 86, 86, 3294, 3296, 3289, + 86, 86, 3287, 86, 86, 3291, 3297, 86, 3300, 86, + 3301, 86, 3292, 86, 86, 86, 3295, 3304, 86, 86, + + 86, 3309, 3298, 86, 86, 86, 3306, 86, 3302, 3307, + 3313, 86, 86, 3299, 3303, 86, 3311, 3305, 3315, 3308, + 86, 86, 3310, 3316, 86, 3312, 3320, 3314, 86, 3317, + 3321, 86, 86, 3318, 86, 3323, 86, 3322, 86, 3326, + 86, 86, 86, 3325, 3319, 86, 3329, 3327, 86, 3332, + 86, 86, 86, 86, 3324, 86, 86, 3337, 86, 86, + 86, 86, 3682, 3333, 3328, 3330, 3331, 3341, 86, 3336, + 3340, 3334, 3342, 86, 3343, 86, 3339, 86, 3338, 86, + 3335, 86, 3344, 3347, 86, 86, 3346, 3348, 86, 3349, + 86, 3350, 86, 3345, 86, 3353, 86, 86, 3351, 3355, + + 86, 86, 3354, 3357, 86, 3358, 86, 86, 86, 86, + 86, 86, 3356, 86, 3364, 3365, 86, 86, 86, 86, + 3352, 86, 86, 86, 3371, 86, 3359, 3372, 86, 3362, + 3360, 3361, 3370, 3363, 86, 3368, 3374, 3367, 86, 3369, + 3373, 86, 86, 3366, 86, 86, 3377, 3380, 86, 3378, + 3381, 86, 86, 86, 3375, 86, 3384, 3376, 3382, 86, + 3387, 86, 86, 86, 3385, 86, 3379, 3386, 3388, 3383, + 86, 86, 86, 86, 3389, 86, 3390, 86, 3393, 86, + 86, 86, 86, 3395, 86, 3391, 86, 3394, 3396, 86, + 86, 86, 3392, 86, 86, 86, 3405, 3408, 3397, 3406, + + 3401, 3398, 3399, 86, 3400, 86, 3402, 3403, 86, 86, + 3409, 3404, 3411, 3407, 86, 3410, 3413, 86, 3414, 86, + 86, 3412, 3416, 86, 3415, 86, 3419, 86, 86, 3682, + 3417, 3421, 86, 3418, 3422, 3423, 86, 86, 3424, 3425, + 3429, 86, 86, 3420, 3426, 86, 3427, 3428, 86, 86, + 86, 3431, 86, 3430, 3432, 86, 86, 3435, 86, 86, + 86, 3439, 86, 86, 86, 3438, 3434, 86, 3433, 86, + 86, 86, 86, 86, 3444, 3682, 3443, 86, 3436, 3437, + 3445, 3440, 3448, 86, 3441, 3449, 86, 3446, 86, 86, + 3451, 3447, 3442, 3452, 86, 3453, 86, 3450, 3454, 86, + + 86, 3458, 3460, 86, 3455, 86, 3459, 86, 86, 3456, + 86, 86, 3457, 86, 86, 3682, 3464, 3468, 3465, 86, + 3462, 3467, 86, 86, 86, 3469, 3470, 86, 3461, 3471, + 86, 3463, 86, 3466, 3474, 86, 86, 3473, 86, 3472, + 3475, 86, 3478, 86, 86, 3476, 3479, 86, 3480, 86, + 3481, 86, 3482, 86, 3483, 86, 3477, 3484, 86, 3485, + 86, 86, 86, 3488, 86, 3489, 86, 86, 86, 86, + 3486, 3487, 86, 3491, 3494, 86, 3490, 3496, 86, 86, + 86, 86, 3500, 86, 3493, 3501, 86, 86, 3492, 3503, + 86, 3495, 86, 3498, 3497, 3499, 86, 86, 86, 3505, + + 86, 3507, 3502, 86, 86, 3510, 3509, 86, 86, 86, + 3504, 86, 3512, 86, 86, 86, 3508, 86, 3511, 86, + 3516, 3518, 86, 3506, 3517, 3515, 86, 3513, 86, 86, + 86, 3514, 3523, 3522, 3519, 3525, 86, 3526, 86, 3527, + 86, 3528, 86, 3524, 86, 86, 3521, 86, 3520, 86, + 86, 3531, 86, 86, 3530, 86, 86, 86, 3536, 3537, + 86, 3539, 86, 86, 3533, 86, 3535, 3529, 86, 3532, + 86, 3538, 86, 86, 86, 3534, 3540, 86, 86, 86, + 86, 3541, 3546, 3542, 3543, 3548, 3547, 3545, 86, 3552, + 86, 86, 86, 3550, 86, 3544, 3554, 3551, 3549, 3553, + + 3557, 86, 86, 3559, 86, 86, 3555, 86, 3560, 3561, + 86, 3558, 3562, 86, 3556, 86, 86, 86, 86, 3565, + 86, 86, 3566, 3567, 3563, 3570, 86, 86, 86, 3574, + 86, 86, 86, 3573, 86, 3564, 3569, 3576, 86, 3572, + 3571, 3577, 86, 3578, 86, 3568, 86, 3581, 86, 3579, + 86, 86, 3575, 3584, 86, 86, 3585, 86, 3588, 86, + 86, 86, 86, 3589, 86, 3580, 3582, 3586, 3583, 86, + 3594, 86, 86, 86, 3590, 3591, 3587, 3593, 3595, 86, + 3592, 86, 86, 86, 86, 86, 86, 3599, 86, 86, + 3601, 86, 86, 86, 3596, 86, 3598, 3606, 3608, 86, + + 3607, 3597, 3603, 86, 3600, 3602, 3604, 3605, 86, 3612, + 86, 3609, 86, 3614, 86, 3615, 86, 3613, 86, 86, + 86, 3610, 3620, 3616, 86, 3617, 86, 3611, 86, 3618, + 3621, 86, 86, 3623, 86, 3619, 86, 3622, 86, 86, + 3624, 86, 3629, 86, 86, 3625, 3626, 86, 86, 3636, + 86, 86, 3632, 3633, 86, 86, 3634, 3627, 86, 3635, + 3628, 86, 3630, 3631, 86, 86, 86, 3640, 86, 3641, + 86, 3644, 86, 86, 3637, 86, 3646, 3638, 3639, 86, + 3647, 3642, 86, 86, 3651, 86, 86, 3643, 3648, 3649, + 86, 3645, 3650, 3655, 86, 3652, 3653, 3654, 86, 86, + + 86, 86, 86, 3660, 86, 86, 3656, 3658, 86, 86, + 86, 86, 86, 3662, 3663, 86, 3666, 3667, 86, 3657, + 3659, 86, 86, 3670, 3661, 3671, 86, 86, 86, 3664, + 3665, 3668, 3673, 86, 3672, 3674, 86, 86, 86, 86, + 3669, 86, 3682, 3676, 3675, 3682, 3677, 3678, 3680, 86, + 3681, 86, 3682, 3682, 3682, 3682, 3682, 3682, 3679, 47, + 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, + 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, + 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, + + 74, 80, 80, 80, 80, 80, 80, 80, 89, 89, + 3682, 89, 89, 89, 89, 160, 160, 3682, 3682, 3682, + 160, 160, 162, 162, 3682, 3682, 162, 3682, 162, 164, + 3682, 3682, 3682, 3682, 3682, 164, 167, 167, 3682, 3682, + 3682, 167, 167, 169, 3682, 3682, 3682, 3682, 3682, 169, + 171, 171, 3682, 171, 171, 171, 171, 174, 3682, 3682, + 3682, 3682, 3682, 174, 177, 177, 3682, 3682, 3682, 177, + 177, 90, 90, 3682, 90, 90, 90, 90, 17, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682 } ; -static const flex_int16_t yy_chk[7195] = +static const flex_int16_t yy_chk[7220] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2434,18 +2442,18 @@ static const flex_int16_t yy_chk[7195] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3675, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3690, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2977, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2990, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1158, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1162, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2514,710 +2522,712 @@ static const flex_int16_t yy_chk[7195] = 335, 332, 326, 331, 328, 333, 336, 340, 330, 335, 337, 339, 329, 341, 339, 337, 400, 333, 334, 342, - 340, 342, 342, 338, 336, 341, 338, 334, 338, 344, - 334, 346, 344, 167, 343, 334, 334, 334, 334, 343, - 343, 338, 338, 347, 338, 345, 345, 348, 346, 349, - 350, 346, 351, 352, 352, 353, 354, 354, 347, 350, - 353, 351, 348, 355, 355, 356, 349, 349, 357, 358, - 359, 362, 360, 361, 358, 363, 364, 364, 366, 364, - 367, 363, 359, 357, 369, 367, 362, 166, 364, 369, - 356, 360, 370, 361, 368, 364, 371, 370, 366, 371, - 368, 371, 372, 370, 373, 374, 376, 373, 375, 375, - 377, 377, 376, 378, 374, 383, 372, 381, 378, 382, + 340, 342, 342, 343, 336, 341, 346, 334, 343, 343, + 334, 344, 345, 345, 344, 334, 334, 334, 334, 338, + 347, 350, 338, 346, 338, 351, 346, 348, 349, 356, + 350, 352, 352, 361, 351, 347, 338, 338, 338, 353, + 338, 357, 348, 359, 353, 349, 349, 354, 354, 355, + 355, 360, 358, 361, 356, 359, 357, 358, 362, 363, + 364, 364, 366, 364, 367, 363, 369, 1377, 368, 367, + 360, 369, 364, 362, 368, 370, 372, 1377, 371, 364, + 370, 371, 366, 371, 373, 374, 370, 373, 375, 375, + 372, 376, 377, 377, 374, 383, 378, 376, 381, 382, - 373, 384, 382, 373, 385, 373, 379, 379, 388, 379, - 383, 387, 164, 394, 387, 379, 384, 381, 385, 379, - 382, 390, 388, 391, 379, 396, 395, 379, 380, 380, - 387, 380, 391, 392, 394, 393, 390, 397, 392, 392, - 396, 393, 398, 401, 380, 395, 397, 380, 393, 380, - 399, 380, 389, 405, 389, 389, 399, 404, 402, 407, - 162, 398, 404, 401, 389, 389, 389, 389, 389, 403, - 406, 389, 402, 405, 407, 403, 408, 409, 410, 403, - 404, 408, 411, 411, 410, 412, 413, 414, 415, 416, - 406, 417, 409, 420, 415, 418, 419, 419, 413, 419, + 373, 378, 382, 373, 433, 373, 379, 379, 384, 379, + 383, 385, 388, 387, 395, 379, 387, 394, 381, 379, + 382, 390, 433, 384, 379, 385, 388, 379, 380, 380, + 391, 380, 387, 395, 402, 392, 390, 393, 394, 391, + 392, 392, 396, 393, 380, 407, 167, 380, 402, 380, + 393, 380, 389, 397, 389, 389, 398, 396, 401, 405, + 407, 406, 397, 399, 389, 389, 389, 389, 389, 399, + 403, 389, 404, 409, 412, 398, 403, 404, 401, 405, + 403, 406, 408, 410, 411, 411, 413, 408, 409, 410, + 414, 415, 416, 417, 412, 404, 418, 415, 413, 419, - 418, 414, 421, 422, 425, 412, 423, 417, 424, 425, - 424, 427, 428, 420, 416, 427, 428, 430, 421, 422, - 423, 426, 431, 426, 426, 429, 429, 432, 433, 437, - 434, 428, 443, 438, 440, 437, 430, 431, 440, 435, - 439, 426, 438, 432, 434, 439, 433, 435, 435, 441, - 442, 444, 446, 443, 448, 446, 442, 444, 441, 435, - 445, 435, 436, 447, 445, 449, 449, 436, 447, 450, - 451, 451, 452, 453, 448, 436, 436, 452, 457, 436, - 436, 455, 450, 436, 454, 454, 453, 455, 456, 458, - 459, 460, 456, 457, 463, 459, 460, 461, 461, 462, + 419, 418, 419, 420, 414, 421, 422, 425, 430, 417, + 423, 424, 425, 424, 429, 429, 426, 416, 426, 426, + 431, 421, 422, 420, 423, 427, 428, 430, 432, 427, + 428, 435, 434, 438, 440, 431, 426, 437, 440, 435, + 435, 441, 438, 437, 432, 428, 434, 439, 443, 442, + 441, 435, 439, 435, 436, 442, 444, 445, 448, 436, + 446, 445, 444, 446, 450, 447, 166, 436, 436, 443, + 447, 436, 436, 449, 449, 436, 452, 450, 448, 451, + 451, 452, 453, 454, 454, 455, 456, 457, 458, 459, + 456, 455, 460, 462, 459, 453, 463, 460, 461, 461, - 464, 465, 466, 467, 468, 466, 461, 470, 467, 468, - 458, 462, 469, 465, 463, 473, 469, 472, 464, 470, - 471, 471, 472, 474, 474, 475, 477, 477, 479, 480, - 481, 482, 483, 484, 485, 1372, 473, 480, 484, 488, - 482, 490, 489, 486, 491, 1372, 493, 475, 492, 479, - 491, 481, 493, 483, 485, 486, 494, 488, 495, 488, - 489, 490, 492, 496, 495, 494, 497, 498, 496, 499, - 500, 501, 499, 502, 504, 498, 505, 503, 498, 505, - 497, 506, 502, 503, 500, 507, 501, 506, 508, 509, - 512, 510, 511, 508, 504, 512, 511, 514, 513, 507, + 464, 465, 457, 466, 467, 462, 466, 461, 471, 458, + 468, 474, 469, 465, 476, 468, 463, 469, 464, 470, + 471, 472, 472, 470, 473, 467, 475, 475, 480, 473, + 478, 478, 474, 481, 482, 483, 476, 484, 485, 486, + 487, 481, 489, 485, 483, 490, 491, 492, 494, 480, + 493, 496, 487, 492, 494, 482, 495, 496, 484, 486, + 489, 498, 489, 490, 493, 495, 491, 497, 499, 501, + 500, 502, 497, 500, 504, 498, 499, 505, 503, 499, + 504, 506, 507, 501, 506, 508, 502, 503, 507, 509, + 510, 512, 511, 513, 509, 512, 514, 505, 513, 508, - 515, 516, 514, 520, 517, 506, 523, 521, 160, 522, - 523, 509, 510, 513, 524, 526, 515, 517, 539, 539, - 516, 518, 518, 520, 522, 525, 531, 518, 521, 518, - 525, 526, 527, 524, 528, 518, 527, 518, 529, 528, - 518, 518, 531, 528, 530, 531, 532, 518, 533, 530, - 534, 535, 537, 529, 533, 532, 538, 536, 540, 533, - 536, 541, 541, 542, 544, 534, 546, 535, 543, 530, - 545, 545, 547, 550, 551, 537, 538, 548, 542, 544, - 543, 549, 548, 540, 555, 546, 554, 552, 555, 551, - 549, 557, 550, 552, 547, 554, 556, 557, 558, 559, + 515, 516, 517, 518, 521, 515, 507, 525, 522, 164, + 523, 514, 510, 511, 524, 526, 518, 516, 524, 527, + 526, 517, 519, 519, 521, 523, 525, 528, 519, 522, + 519, 528, 530, 532, 529, 527, 519, 533, 519, 529, + 531, 519, 519, 529, 534, 531, 533, 530, 519, 532, + 534, 535, 532, 536, 537, 534, 538, 537, 539, 540, + 540, 541, 542, 542, 544, 531, 535, 543, 545, 536, + 546, 546, 547, 548, 551, 549, 544, 552, 539, 538, + 549, 550, 543, 545, 561, 556, 541, 555, 553, 556, + 550, 547, 552, 551, 553, 548, 555, 557, 558, 559, - 556, 560, 561, 562, 563, 564, 565, 567, 601, 564, - 558, 566, 601, 566, 559, 568, 561, 571, 562, 565, - 560, 570, 563, 568, 569, 569, 572, 570, 573, 571, - 574, 567, 572, 574, 575, 576, 577, 579, 580, 578, - 573, 577, 578, 583, 583, 585, 579, 582, 575, 588, - 576, 585, 581, 579, 580, 588, 579, 581, 581, 590, - 582, 584, 584, 586, 586, 587, 587, 589, 591, 592, - 594, 593, 589, 589, 593, 594, 595, 590, 596, 597, - 598, 592, 597, 599, 600, 598, 596, 602, 603, 591, - 604, 605, 606, 602, 604, 595, 607, 606, 608, 608, + 560, 557, 562, 561, 558, 563, 564, 568, 565, 566, + 569, 559, 565, 570, 570, 560, 562, 567, 569, 567, + 563, 571, 566, 572, 564, 574, 573, 571, 576, 577, + 575, 568, 573, 575, 578, 572, 580, 574, 579, 578, + 581, 579, 576, 582, 577, 580, 583, 162, 582, 582, + 584, 584, 580, 585, 585, 580, 581, 586, 591, 583, + 587, 587, 589, 586, 588, 588, 590, 592, 589, 593, + 594, 590, 590, 594, 595, 596, 591, 597, 600, 595, + 598, 593, 599, 598, 601, 597, 602, 599, 592, 603, + 602, 604, 605, 607, 596, 603, 605, 606, 607, 608, - 609, 610, 611, 600, 612, 613, 599, 611, 603, 605, - 607, 614, 615, 617, 616, 609, 619, 618, 615, 616, - 618, 613, 610, 612, 621, 618, 85, 617, 618, 618, - 622, 614, 620, 620, 619, 623, 624, 625, 626, 628, - 623, 624, 621, 629, 630, 628, 622, 630, 635, 636, - 631, 625, 629, 626, 631, 632, 633, 634, 637, 633, - 632, 638, 634, 639, 635, 637, 640, 636, 639, 641, - 641, 642, 643, 644, 638, 645, 631, 646, 647, 649, - 642, 651, 650, 648, 651, 649, 640, 647, 650, 645, - 655, 643, 656, 646, 644, 648, 652, 652, 653, 652, + 611, 600, 610, 601, 609, 609, 613, 612, 614, 615, + 616, 604, 612, 608, 617, 606, 616, 610, 618, 617, + 620, 611, 622, 619, 614, 613, 619, 621, 621, 615, + 623, 619, 618, 626, 619, 619, 624, 625, 620, 627, + 622, 624, 625, 629, 630, 631, 623, 626, 631, 629, + 636, 632, 633, 630, 627, 632, 634, 633, 635, 634, + 637, 638, 639, 635, 640, 641, 636, 643, 638, 640, + 642, 642, 644, 646, 645, 639, 643, 632, 637, 645, + 648, 647, 651, 649, 652, 641, 650, 160, 651, 657, + 652, 644, 649, 661, 646, 647, 648, 653, 650, 658, - 654, 653, 657, 659, 658, 654, 656, 660, 655, 658, - 661, 662, 664, 660, 665, 661, 657, 662, 663, 665, - 666, 663, 659, 667, 671, 668, 669, 670, 667, 667, - 671, 672, 670, 673, 675, 674, 666, 664, 668, 669, - 674, 677, 673, 676, 676, 678, 670, 670, 677, 680, - 672, 681, 678, 679, 675, 680, 679, 682, 685, 683, - 684, 684, 682, 681, 683, 683, 686, 687, 686, 689, - 690, 679, 682, 688, 691, 688, 692, 693, 694, 697, - 696, 695, 699, 685, 694, 695, 687, 689, 690, 696, - 698, 700, 691, 707, 697, 692, 701, 693, 702, 701, + 653, 654, 654, 655, 654, 656, 655, 657, 659, 660, + 656, 662, 661, 658, 660, 663, 665, 662, 664, 665, + 663, 666, 659, 667, 664, 668, 669, 670, 667, 671, + 672, 669, 669, 673, 674, 672, 675, 677, 676, 673, + 670, 668, 671, 676, 679, 675, 666, 678, 678, 672, + 672, 679, 680, 674, 682, 681, 683, 677, 681, 680, + 682, 684, 686, 686, 685, 687, 684, 689, 683, 685, + 685, 691, 688, 681, 688, 690, 684, 690, 692, 693, + 694, 695, 696, 697, 698, 699, 689, 697, 696, 691, + 687, 700, 701, 698, 702, 703, 692, 693, 703, 694, - 699, 703, 704, 705, 706, 698, 708, 703, 701, 709, - 700, 710, 707, 702, 711, 710, 706, 705, 712, 713, - 714, 715, 704, 716, 717, 719, 719, 708, 709, 717, - 718, 720, 711, 721, 712, 720, 722, 713, 714, 714, - 715, 723, 716, 724, 718, 725, 726, 721, 727, 729, - 725, 728, 723, 730, 731, 722, 729, 724, 730, 732, - 733, 731, 726, 734, 728, 733, 735, 727, 734, 736, - 737, 738, 739, 742, 740, 745, 736, 743, 742, 737, - 743, 739, 741, 732, 735, 738, 740, 744, 741, 745, - 746, 744, 747, 749, 748, 750, 750, 751, 751, 746, + 699, 695, 704, 705, 706, 707, 700, 703, 708, 705, + 701, 709, 710, 702, 712, 711, 714, 704, 712, 707, + 708, 713, 715, 716, 706, 717, 718, 721, 721, 720, + 709, 719, 714, 710, 711, 723, 719, 724, 726, 713, + 715, 716, 716, 720, 717, 718, 722, 725, 727, 723, + 722, 728, 726, 727, 729, 730, 724, 731, 725, 733, + 732, 734, 737, 739, 731, 732, 733, 728, 730, 735, + 736, 738, 739, 729, 735, 736, 740, 741, 738, 742, + 737, 743, 747, 744, 749, 734, 741, 743, 744, 745, + 740, 742, 745, 746, 748, 750, 747, 746, 751, 749, - 752, 752, 754, 756, 753, 758, 751, 747, 748, 753, - 757, 754, 760, 759, 749, 761, 757, 759, 762, 764, - 763, 765, 756, 766, 760, 758, 763, 764, 765, 767, - 768, 771, 774, 777, 780, 783, 762, 778, 781, 782, - 761, 766, 777, 778, 781, 788, 771, 789, 782, 774, - 768, 783, 785, 785, 767, 769, 780, 769, 784, 787, - 769, 789, 784, 788, 769, 786, 786, 769, 790, 796, - 787, 794, 791, 795, 769, 769, 794, 769, 791, 793, - 797, 798, 799, 803, 797, 801, 799, 796, 790, 792, - 792, 792, 800, 792, 795, 802, 792, 800, 803, 793, + 752, 752, 756, 748, 753, 753, 754, 754, 758, 750, + 755, 756, 759, 753, 760, 755, 761, 762, 759, 751, + 761, 763, 764, 766, 765, 767, 768, 758, 769, 762, + 765, 766, 767, 773, 760, 770, 779, 776, 782, 790, + 764, 780, 784, 783, 768, 779, 763, 780, 773, 783, + 785, 784, 85, 769, 776, 770, 771, 790, 771, 786, + 782, 771, 789, 786, 792, 771, 785, 791, 771, 787, + 787, 788, 788, 789, 793, 771, 771, 796, 771, 795, + 793, 791, 796, 798, 792, 794, 794, 794, 797, 794, + 799, 800, 794, 802, 799, 803, 801, 794, 802, 795, - 802, 792, 799, 804, 801, 798, 805, 792, 792, 805, - 806, 807, 808, 808, 809, 806, 806, 810, 807, 811, - 811, 812, 810, 818, 813, 814, 812, 813, 804, 809, - 814, 815, 815, 816, 817, 816, 819, 820, 824, 821, - 819, 822, 818, 823, 823, 825, 817, 826, 826, 822, - 827, 828, 829, 824, 830, 80, 831, 820, 821, 825, - 830, 831, 835, 828, 832, 832, 833, 835, 827, 836, - 837, 833, 833, 838, 829, 836, 839, 842, 840, 841, - 842, 843, 839, 840, 844, 841, 848, 843, 847, 837, - 845, 845, 844, 838, 846, 846, 847, 849, 851, 850, + 801, 798, 804, 794, 794, 805, 806, 804, 807, 797, + 811, 807, 808, 80, 803, 800, 801, 808, 808, 809, + 805, 810, 810, 812, 820, 811, 809, 814, 812, 813, + 813, 806, 814, 815, 816, 819, 815, 817, 817, 816, + 818, 821, 818, 820, 822, 821, 823, 819, 824, 825, + 825, 826, 829, 827, 828, 828, 824, 830, 831, 834, + 834, 868, 832, 840, 822, 823, 826, 827, 832, 830, + 829, 833, 835, 839, 837, 838, 833, 835, 835, 837, + 831, 838, 840, 841, 842, 868, 845, 843, 844, 845, + 842, 839, 843, 846, 844, 851, 847, 848, 848, 846, - 852, 853, 849, 850, 848, 851, 854, 855, 855, 859, - 856, 860, 857, 858, 858, 859, 861, 853, 852, 856, - 857, 863, 864, 865, 867, 854, 870, 866, 871, 860, - 863, 864, 866, 867, 868, 861, 869, 868, 873, 872, - 870, 869, 875, 877, 874, 876, 876, 865, 872, 874, - 874, 873, 878, 871, 879, 880, 875, 881, 877, 882, - 885, 885, 882, 879, 884, 886, 884, 887, 888, 891, - 882, 878, 887, 889, 890, 881, 892, 894, 893, 880, - 895, 896, 897, 900, 895, 902, 886, 893, 899, 888, - 901, 891, 898, 889, 890, 900, 892, 899, 898, 896, + 849, 849, 850, 841, 847, 853, 852, 854, 855, 853, + 850, 852, 856, 851, 854, 857, 858, 858, 859, 861, + 861, 860, 863, 864, 862, 873, 855, 859, 856, 860, + 862, 869, 866, 872, 857, 867, 869, 870, 872, 873, + 863, 866, 864, 874, 867, 871, 870, 875, 871, 876, + 878, 880, 877, 879, 879, 881, 875, 877, 877, 883, + 882, 884, 876, 887, 878, 887, 880, 885, 874, 882, + 885, 888, 888, 889, 881, 890, 891, 894, 885, 884, + 890, 892, 893, 883, 895, 897, 896, 898, 899, 930, + 900, 898, 901, 930, 889, 896, 902, 891, 901, 894, - 894, 897, 903, 904, 902, 905, 901, 906, 909, 904, - 907, 908, 908, 905, 910, 907, 903, 911, 912, 914, - 913, 906, 915, 916, 919, 917, 911, 909, 913, 918, - 919, 920, 921, 923, 910, 922, 924, 920, 912, 914, - 929, 922, 916, 928, 915, 917, 921, 923, 925, 918, - 931, 926, 929, 930, 925, 927, 924, 926, 930, 927, - 929, 933, 928, 932, 932, 935, 934, 933, 935, 936, - 937, 931, 934, 938, 939, 940, 940, 941, 945, 938, - 942, 943, 948, 937, 943, 942, 944, 936, 947, 947, - 949, 944, 944, 945, 939, 941, 946, 943, 950, 943, + 903, 892, 893, 904, 895, 902, 899, 905, 897, 900, + 906, 907, 903, 908, 909, 910, 912, 907, 913, 904, + 910, 908, 911, 911, 906, 914, 905, 915, 909, 916, + 917, 918, 919, 931, 914, 912, 920, 916, 913, 921, + 922, 924, 923, 925, 926, 927, 922, 915, 923, 925, + 917, 919, 931, 918, 928, 924, 920, 929, 926, 921, + 928, 932, 933, 929, 934, 927, 936, 933, 935, 935, + 937, 938, 936, 932, 938, 939, 937, 940, 941, 942, + 944, 932, 943, 943, 941, 934, 945, 948, 951, 946, + 940, 945, 946, 939, 952, 947, 950, 950, 944, 942, - 946, 951, 953, 950, 948, 954, 75, 957, 956, 958, - 949, 960, 960, 961, 962, 963, 963, 961, 964, 954, - 951, 956, 966, 976, 965, 967, 953, 957, 965, 962, - 958, 959, 969, 968, 959, 976, 959, 966, 968, 967, - 959, 972, 959, 964, 970, 971, 969, 959, 974, 970, - 970, 975, 959, 973, 971, 972, 975, 973, 978, 977, - 979, 980, 981, 974, 977, 982, 975, 983, 990, 973, - 982, 981, 978, 983, 984, 980, 985, 986, 991, 984, - 992, 979, 985, 986, 987, 987, 988, 989, 996, 994, - 990, 988, 997, 989, 998, 998, 1001, 991, 992, 993, + 947, 947, 948, 954, 949, 946, 953, 946, 949, 956, + 951, 953, 957, 961, 952, 959, 960, 963, 963, 964, + 965, 974, 954, 964, 966, 966, 957, 967, 959, 969, + 974, 970, 986, 956, 961, 965, 960, 962, 986, 968, + 962, 972, 962, 968, 969, 970, 962, 975, 962, 971, + 977, 973, 967, 962, 971, 972, 973, 973, 962, 976, + 979, 975, 978, 976, 980, 977, 981, 978, 982, 980, + 983, 985, 979, 984, 987, 976, 985, 978, 991, 987, + 981, 988, 984, 991, 983, 989, 993, 988, 992, 982, + 994, 989, 990, 990, 992, 995, 998, 999, 997, 1002, - 993, 994, 996, 995, 997, 993, 999, 993, 995, 1000, - 1002, 999, 1001, 993, 1003, 1004, 1005, 1000, 993, 993, - 1006, 1009, 1007, 1008, 1002, 993, 1006, 1007, 1010, 1011, - 1012, 1015, 1005, 1003, 1004, 1008, 1013, 1013, 1014, 1009, - 1017, 1019, 1014, 1021, 1010, 1020, 1017, 1011, 1012, 1018, - 1020, 1015, 1018, 1022, 1024, 1026, 1021, 1023, 1027, 1022, - 1019, 1028, 1023, 1029, 1026, 1030, 1031, 1027, 1033, 1029, - 1032, 1035, 1034, 1024, 1030, 1032, 1039, 1028, 1036, 1040, - 1037, 1041, 1039, 1038, 1043, 1031, 1034, 1041, 1033, 1037, - 1036, 1035, 1038, 1045, 1046, 1048, 1040, 1047, 1049, 1050, + 1000, 998, 1001, 1001, 1002, 1004, 1006, 1007, 993, 994, + 997, 999, 1000, 995, 996, 996, 1003, 1005, 1011, 1008, + 996, 1004, 996, 1009, 1003, 1006, 1007, 1010, 996, 1009, + 1011, 1005, 1010, 996, 996, 1008, 1012, 1013, 1014, 1015, + 996, 1016, 1016, 1017, 1018, 1020, 1021, 1017, 1022, 1021, + 1023, 1020, 1024, 1013, 1012, 1023, 1014, 1015, 1026, 1027, + 1025, 1029, 1030, 1026, 1018, 1024, 1025, 1022, 1031, 1032, + 1029, 1030, 1033, 1034, 1035, 1032, 1036, 1037, 1027, 1035, + 1038, 1033, 1039, 1042, 1031, 1043, 1040, 1044, 1041, 1042, + 1046, 1037, 1034, 1044, 1039, 1040, 1036, 1041, 1048, 1049, - 1043, 1048, 1047, 1051, 1052, 1053, 1054, 1045, 74, 1058, - 1053, 1054, 1063, 1050, 1046, 1057, 1064, 1049, 1058, 1052, - 1057, 1051, 1059, 1059, 1060, 1061, 1062, 1063, 1066, 1064, - 1060, 1061, 1067, 1070, 1073, 1062, 1072, 1067, 1067, 1069, - 1069, 1074, 1071, 1069, 1066, 1071, 1075, 1076, 1070, 1078, - 1072, 1077, 1079, 1080, 1073, 1078, 1081, 1074, 1082, 1080, - 1076, 1083, 1086, 1082, 1075, 1086, 1077, 1085, 1085, 1087, - 1090, 1081, 1079, 1088, 1089, 1083, 1091, 1092, 1088, 1089, - 1094, 1096, 1092, 1093, 1097, 1091, 1090, 1096, 1093, 1098, - 1087, 1099, 1094, 1100, 1100, 1098, 1101, 1099, 1102, 1103, + 1038, 1050, 1043, 1051, 1052, 1053, 1046, 1054, 1051, 1055, + 1052, 1057, 1048, 1056, 1062, 1058, 1057, 1061, 75, 1049, + 1058, 1054, 1061, 1062, 1053, 1064, 1050, 1055, 1056, 1063, + 1063, 1064, 1065, 1066, 1067, 1068, 1070, 1078, 1065, 1071, + 1074, 1077, 1066, 1076, 1071, 1071, 1073, 1073, 1068, 1067, + 1073, 1075, 1070, 1078, 1075, 1074, 1079, 1076, 1080, 1082, + 1081, 1077, 1083, 1084, 1085, 1082, 1087, 1086, 1091, 1084, + 1090, 1080, 1086, 1090, 1079, 1081, 1089, 1089, 1092, 1085, + 1087, 1093, 1083, 1092, 1094, 1095, 1093, 1096, 1097, 1091, + 1098, 1100, 1096, 1097, 1095, 1101, 1106, 1100, 1102, 1103, - 1097, 1105, 1103, 1104, 1104, 1101, 1106, 1107, 1108, 1109, - 1130, 1108, 1110, 1130, 1111, 1112, 1102, 68, 1110, 1105, - 1111, 1112, 1109, 1113, 1114, 1106, 1115, 1107, 1113, 1114, - 1116, 1117, 1115, 1119, 1120, 1116, 1121, 1117, 1119, 1122, - 1125, 1123, 1124, 1124, 1126, 1122, 1123, 1128, 1129, 1125, - 1127, 1131, 1120, 1126, 1131, 1127, 1121, 1132, 1133, 1134, - 1135, 1136, 63, 1133, 1137, 1128, 1139, 1129, 1132, 1138, - 1137, 1140, 1135, 1141, 1141, 1138, 1140, 1134, 1142, 1143, - 1136, 1139, 1144, 1145, 1146, 1147, 1148, 1149, 1146, 1150, - 1152, 1153, 1153, 1143, 1144, 1148, 1154, 1142, 1157, 1159, + 1094, 1105, 1098, 1109, 1102, 1103, 1104, 1104, 1110, 1107, + 1105, 1101, 1107, 1111, 1106, 1108, 1108, 1112, 1113, 1114, + 1112, 1109, 1115, 1116, 74, 1114, 1125, 1110, 1115, 1116, + 1117, 1113, 1118, 1111, 1119, 1117, 1120, 1118, 1121, 1124, + 1119, 1120, 1123, 1126, 1121, 1127, 1125, 1123, 1132, 1126, + 1127, 1128, 1128, 1129, 1130, 1131, 1133, 1124, 1134, 1136, + 1131, 1134, 1129, 1130, 1135, 1138, 1132, 1135, 1137, 1139, + 1136, 1140, 1141, 1137, 1142, 1133, 1143, 1144, 1141, 1146, + 1142, 1139, 1144, 1138, 1145, 1145, 1147, 1148, 1149, 1150, + 1140, 1143, 1151, 1150, 1152, 1153, 1154, 1156, 1146, 1148, - 1155, 1145, 1156, 1147, 1154, 1155, 1149, 1156, 1160, 1152, - 1161, 1162, 1163, 1159, 1150, 1165, 1162, 1168, 1157, 1164, - 1164, 1163, 1161, 1160, 1166, 1167, 1170, 1169, 1170, 1171, - 1166, 1167, 1169, 1168, 1171, 1165, 1172, 1173, 1174, 1175, - 1176, 1177, 1178, 1174, 1179, 1181, 1181, 1182, 1177, 1183, - 1172, 1173, 1185, 1184, 1175, 1186, 58, 1178, 1185, 1176, - 1187, 1182, 1189, 1179, 1193, 1187, 1189, 1183, 1184, 1190, - 1190, 1193, 1191, 1194, 1187, 1186, 1187, 1191, 1196, 1187, - 1192, 1192, 1195, 1197, 1198, 1195, 1199, 1194, 1200, 1202, - 1201, 1199, 1204, 1198, 1203, 1202, 1206, 1196, 1205, 1203, + 1147, 1157, 1157, 1152, 1158, 1161, 1149, 1164, 1159, 1163, + 1151, 68, 1158, 1159, 1153, 1160, 1156, 1165, 1167, 1166, + 1160, 1154, 1164, 1163, 1166, 1161, 1169, 1167, 1170, 1165, + 1168, 1168, 1171, 1172, 1170, 1173, 1175, 1174, 1171, 1174, + 1173, 1175, 1176, 1177, 1179, 1178, 1169, 1180, 1181, 1172, + 1178, 1183, 1182, 1185, 1185, 1181, 1176, 1177, 1186, 1179, + 1187, 1188, 1189, 1190, 1197, 1193, 1180, 1182, 1189, 1193, + 1183, 1197, 1186, 1198, 1191, 1200, 1188, 1195, 1187, 1191, + 1194, 1194, 1195, 1190, 1196, 1196, 1199, 1198, 1191, 1199, + 1191, 1201, 1202, 1191, 1200, 1203, 1204, 1206, 1205, 1207, - 1209, 1197, 1201, 1208, 1208, 1209, 1204, 1200, 1210, 1205, - 1211, 1212, 1214, 1210, 1213, 1206, 1212, 1215, 1213, 1216, - 1217, 1214, 1219, 1218, 1220, 1222, 1218, 1223, 1221, 1224, - 1211, 1220, 1215, 1232, 1216, 1218, 1225, 1219, 1226, 1217, - 1221, 1228, 1225, 1227, 1222, 1229, 1230, 1224, 1223, 1227, - 1233, 1231, 1232, 1226, 1234, 1230, 1235, 1236, 1237, 1238, - 1241, 1228, 1233, 1240, 1237, 1229, 1231, 1244, 1242, 1240, - 1243, 1246, 1236, 1234, 1245, 1241, 1246, 1247, 1243, 1238, - 1248, 1235, 1242, 1249, 1250, 1248, 1248, 1244, 1251, 1247, - 1245, 1252, 1252, 1254, 1256, 1279, 1255, 57, 1250, 1279, + 1203, 1202, 1208, 1206, 1207, 1210, 1209, 1212, 1212, 1201, + 1205, 1215, 1218, 1213, 1214, 1204, 1208, 1209, 1213, 1214, + 1216, 1218, 1217, 1219, 1210, 1216, 1217, 1220, 1221, 1222, + 1223, 1215, 1222, 1224, 1225, 1226, 1227, 1228, 1219, 1239, + 1224, 1222, 1220, 1229, 1230, 1223, 1225, 1221, 1232, 1229, + 1231, 1233, 1234, 1236, 1226, 1228, 1231, 1227, 1235, 1230, + 1238, 1234, 1237, 1240, 1239, 1242, 1245, 1248, 1232, 1241, + 1244, 1233, 1236, 1235, 1237, 1241, 1244, 1246, 1240, 1238, + 1247, 1245, 1249, 1251, 1250, 1242, 1253, 1248, 1247, 1250, + 1254, 1246, 1272, 1255, 1252, 1251, 1256, 1256, 1249, 1252, - 1256, 1251, 1249, 1253, 1253, 1255, 1254, 52, 1253, 1257, - 1257, 1253, 1253, 1258, 1259, 1260, 1253, 1264, 1258, 1261, - 1262, 1260, 1253, 1259, 1261, 1262, 1253, 1263, 1263, 1265, - 1265, 1266, 1267, 1268, 1266, 1269, 1266, 1270, 1264, 1271, - 1270, 1269, 1272, 1274, 1273, 1275, 47, 1276, 1271, 1273, - 1277, 1268, 1267, 1276, 1278, 1280, 1277, 1274, 1281, 1278, - 1282, 1283, 1272, 1275, 1290, 1282, 1286, 1281, 1280, 1284, - 1284, 1289, 1281, 1291, 1281, 1283, 1281, 1286, 1281, 1285, - 1285, 1288, 1285, 1292, 1290, 1288, 1289, 1294, 1293, 1295, - 1296, 1291, 1292, 1293, 1293, 1296, 1294, 1298, 1297, 1299, + 1252, 1258, 1259, 1260, 1254, 1253, 1255, 1257, 1257, 1260, + 1272, 1259, 1257, 1263, 1258, 1257, 1257, 1261, 1261, 1262, + 1257, 1264, 1263, 1265, 1262, 1268, 1257, 1264, 1265, 1266, + 1257, 1267, 1267, 1271, 1266, 1269, 1269, 1270, 1273, 1274, + 1270, 1277, 1270, 1276, 1273, 1274, 1268, 1275, 1279, 1278, + 1275, 1280, 1276, 1271, 1278, 1283, 1291, 1281, 1282, 1285, + 1283, 1277, 1279, 1281, 1282, 1286, 1284, 1291, 1287, 1280, + 1284, 1294, 1285, 1287, 1286, 1288, 1289, 1289, 1293, 1286, + 1295, 1286, 1293, 1286, 1296, 1286, 1294, 1290, 1290, 1288, + 1290, 1298, 1297, 1300, 1299, 1302, 1298, 1298, 1303, 1301, - 1300, 1301, 1302, 1303, 1303, 1304, 1298, 1309, 1302, 1306, - 1308, 1295, 1297, 1305, 1311, 1301, 1309, 1304, 1299, 1300, - 1307, 1305, 1310, 1306, 1308, 1307, 1312, 1315, 1313, 1310, - 1314, 1314, 1311, 1313, 1316, 1316, 1317, 1319, 1317, 1320, - 1319, 1321, 1315, 1322, 1320, 1323, 1323, 1324, 1325, 1325, - 1327, 1312, 1322, 1326, 1326, 1327, 1328, 1329, 1330, 1333, - 1321, 1331, 1331, 1332, 1335, 1334, 1336, 1324, 1334, 1337, - 1340, 1338, 1336, 1339, 1337, 1339, 1333, 1328, 1329, 1330, - 1338, 1343, 1342, 1332, 1335, 1342, 1344, 1345, 1340, 1346, - 1347, 1350, 1345, 1348, 1350, 1347, 1343, 1349, 1354, 1344, + 1295, 1297, 1296, 1299, 1301, 1304, 1305, 1303, 1306, 1302, + 1307, 1308, 1308, 1310, 1309, 1300, 1307, 1311, 1312, 1313, + 1314, 1310, 1306, 1312, 1304, 1305, 1309, 1315, 1316, 1314, + 1317, 1311, 1318, 1313, 1315, 1319, 1319, 1318, 1320, 1321, + 1321, 1322, 1324, 1322, 1325, 1324, 1316, 1326, 1327, 1325, + 1328, 1328, 1329, 1320, 1333, 1317, 1334, 1327, 1330, 1330, + 1331, 1331, 1332, 1335, 1336, 1336, 1326, 1332, 1337, 1338, + 1339, 1340, 1329, 1339, 1341, 1333, 1342, 1334, 1343, 1345, + 1341, 1342, 1349, 1344, 1335, 1344, 1338, 1343, 1337, 1347, + 1348, 1340, 1347, 1350, 1351, 1349, 1352, 1345, 1350, 1353, - 1351, 1348, 1349, 1346, 1353, 1351, 1352, 1352, 1355, 1353, - 1356, 1357, 1359, 1360, 1355, 1361, 1354, 1356, 1359, 1360, - 1361, 1362, 1363, 1364, 1357, 1365, 1362, 1366, 1363, 1367, - 1367, 1368, 1364, 1373, 1370, 1371, 1374, 1375, 1366, 1370, - 1376, 1377, 1382, 1378, 1365, 1381, 1376, 1377, 1373, 1378, - 1383, 1368, 1380, 1371, 1384, 1385, 1374, 1386, 1380, 1381, - 1375, 1388, 1382, 1387, 1387, 1381, 1384, 1389, 1390, 1385, - 1383, 1391, 1392, 1392, 1393, 1386, 1391, 1394, 1397, 1396, - 1399, 1388, 1394, 1397, 1397, 1398, 1390, 1400, 1401, 1399, - 1402, 1403, 1389, 1407, 1409, 1400, 1404, 1393, 1396, 1405, + 1355, 1352, 1359, 1355, 1354, 1348, 1356, 1353, 1351, 1354, + 1358, 1356, 1357, 1357, 1361, 1358, 1360, 1362, 1364, 1365, + 1359, 1361, 1360, 1366, 1364, 1365, 1367, 1368, 1366, 1369, + 1362, 1367, 1370, 1368, 1371, 1372, 1372, 1373, 1369, 1375, + 1376, 1378, 1379, 1380, 1375, 1371, 1381, 1382, 1383, 1385, + 1386, 1370, 1381, 1382, 1383, 1385, 1378, 1373, 1376, 1387, + 1388, 1389, 1379, 1390, 1386, 1391, 1380, 1392, 1392, 1393, + 1386, 1394, 1395, 1389, 1397, 1397, 1396, 1390, 1398, 1387, + 1388, 1396, 1399, 1391, 1401, 1404, 1402, 1399, 1403, 1393, + 1395, 1402, 1402, 1406, 1404, 1407, 1394, 1405, 1408, 1410, - 1409, 1404, 1401, 1398, 1404, 1402, 1403, 1407, 1405, 1403, - 1406, 1410, 1406, 1411, 1412, 1410, 1413, 1414, 1415, 1412, - 1412, 1416, 1417, 1418, 1411, 1420, 1416, 1417, 1418, 1419, - 1422, 1425, 1421, 1426, 1424, 1413, 1415, 1421, 1427, 1427, - 1428, 1429, 1430, 1414, 1428, 1420, 1431, 1419, 1424, 1425, - 1422, 1426, 1431, 1432, 1433, 1434, 1443, 1435, 1436, 1429, - 1437, 1430, 1438, 1439, 1442, 1432, 1448, 1441, 1439, 1440, - 1433, 1435, 1441, 1436, 1434, 1437, 1440, 1443, 1444, 1445, - 1445, 1438, 1442, 1446, 1447, 1450, 1448, 1444, 1449, 1449, - 1451, 1450, 1452, 1447, 1453, 1453, 1451, 1455, 1446, 1454, + 1411, 1398, 1411, 1401, 1409, 1405, 1403, 1406, 1410, 1409, + 1407, 1412, 1409, 1408, 1414, 1415, 1408, 1416, 1417, 1415, + 1414, 1418, 1419, 1417, 1417, 1412, 1420, 1421, 1416, 1422, + 1423, 1424, 1421, 1425, 1422, 1423, 1426, 1427, 1429, 1435, + 1418, 1426, 1430, 1431, 1420, 1432, 1432, 1433, 1419, 1424, + 1434, 1433, 1429, 1425, 1437, 1438, 1436, 1427, 1435, 1439, + 1430, 1431, 1436, 1440, 1441, 1442, 1437, 1443, 1434, 1444, + 1447, 1438, 1448, 63, 1444, 1445, 1446, 1440, 1439, 1441, + 1442, 1446, 1445, 1449, 1450, 1450, 1443, 1451, 1447, 1452, + 1453, 1455, 1449, 1448, 1454, 1454, 1461, 1455, 1452, 1456, - 1454, 1456, 1457, 1455, 1458, 1459, 1452, 1460, 1461, 1458, - 1468, 1459, 18, 1460, 1461, 1462, 1462, 1456, 1463, 1463, - 1465, 1465, 1466, 1457, 1467, 1469, 1466, 1470, 1468, 1471, - 1473, 1473, 1472, 1467, 1474, 1475, 1477, 1469, 1463, 1472, - 1463, 1470, 1476, 1475, 1471, 1478, 1479, 1476, 1481, 1488, - 1477, 1479, 1479, 1480, 1474, 1482, 1482, 1483, 1480, 1480, - 1484, 1485, 1486, 1487, 1478, 1489, 1490, 1486, 1481, 1488, - 1485, 1492, 1490, 1491, 1493, 1494, 1483, 1496, 1491, 1484, - 1495, 1497, 1487, 1489, 1498, 1499, 1495, 1497, 1500, 1493, - 1498, 1492, 1501, 1502, 1503, 1504, 1496, 1505, 1509, 1506, + 1457, 1462, 1451, 1458, 1458, 1456, 1459, 1459, 1463, 1460, + 1453, 1464, 1461, 1463, 1457, 1460, 58, 1464, 1465, 1466, + 1467, 1467, 1462, 1472, 1465, 1466, 1468, 1468, 1470, 1470, + 1471, 1473, 1472, 1474, 1471, 1477, 1475, 1476, 1478, 1478, + 1479, 1482, 1477, 1480, 1483, 1474, 1468, 1486, 1468, 1473, + 1475, 1480, 1476, 1481, 1488, 1482, 1484, 1489, 1481, 1485, + 1479, 1484, 1484, 1483, 1485, 1485, 1490, 1486, 1487, 1487, + 1492, 1493, 1491, 1488, 1494, 1490, 1489, 1491, 1495, 1497, + 1496, 1498, 1500, 1499, 1495, 1496, 1502, 1501, 1503, 1492, + 1504, 1493, 1494, 1501, 1503, 1505, 1504, 1497, 1499, 1506, - 1510, 1494, 1507, 1507, 1499, 1508, 17, 1500, 1508, 1504, - 1511, 1501, 1502, 1503, 1506, 1512, 1512, 1509, 1505, 1510, - 1513, 1513, 1511, 1514, 1516, 1515, 1517, 1518, 1514, 1515, - 1519, 1522, 1520, 1524, 1520, 1523, 1518, 1516, 1520, 1525, - 1523, 1517, 1526, 1519, 1527, 1527, 1530, 1528, 1524, 1522, - 1529, 1520, 1528, 1531, 1532, 1536, 1529, 1533, 1526, 1525, - 1532, 1530, 1533, 1534, 1535, 1537, 1531, 1534, 1535, 1538, - 1539, 1540, 1541, 1541, 1543, 1536, 1545, 1540, 1538, 1546, - 1547, 1547, 1548, 1537, 1546, 1549, 1551, 1551, 1548, 1560, - 1539, 1553, 1543, 1555, 1553, 1554, 1554, 1545, 1556, 1557, + 1507, 1498, 1508, 1509, 1511, 1502, 1510, 1515, 1500, 1512, + 1513, 1513, 1514, 1516, 1505, 1514, 1517, 57, 1506, 1507, + 1510, 1508, 1509, 1521, 1512, 1511, 1515, 1521, 1517, 1518, + 1518, 1520, 1516, 1519, 1519, 1522, 1520, 1523, 1524, 1526, + 1525, 1526, 1528, 1531, 1529, 1526, 1530, 1524, 1522, 1529, + 1532, 1534, 1523, 1525, 1533, 1533, 1534, 1536, 1526, 1535, + 1528, 1530, 1537, 1531, 1538, 1535, 1532, 1540, 1539, 1542, + 1538, 1540, 1536, 1539, 1541, 1537, 1543, 1544, 1541, 1545, + 1549, 1546, 1547, 1547, 1551, 1552, 1544, 1546, 1555, 1542, + 1552, 1553, 1553, 1561, 1543, 1554, 1557, 1557, 1549, 1545, - 1559, 1561, 1562, 1559, 1563, 1549, 1564, 1564, 1565, 1555, - 1560, 1562, 1566, 1567, 1556, 1557, 1569, 1568, 1573, 1570, - 1572, 1561, 1568, 1565, 1563, 1570, 1571, 1571, 1574, 1572, - 1569, 1575, 1567, 1566, 1576, 1578, 1573, 1577, 1577, 1579, - 1580, 1582, 1582, 1574, 1581, 1580, 1583, 1584, 1586, 1578, - 1583, 1585, 1585, 1587, 1576, 1588, 1575, 1579, 1589, 1581, - 1590, 1597, 1589, 1591, 1593, 1593, 1588, 1584, 1591, 1595, - 1586, 1594, 1587, 1596, 1594, 1598, 1599, 1597, 1596, 1590, - 1600, 1601, 1595, 1602, 1603, 1603, 1604, 1605, 0, 1606, - 1599, 1604, 1608, 1598, 1610, 1601, 1607, 1607, 1609, 1600, + 1559, 1554, 1562, 1559, 1563, 1551, 1560, 1560, 1555, 1561, + 1565, 1566, 1568, 1565, 1567, 1569, 1570, 1570, 1562, 1572, + 1563, 1568, 1571, 1573, 1574, 1575, 1579, 1576, 1580, 1574, + 1577, 1577, 1566, 1576, 1567, 1569, 1578, 1571, 1581, 1575, + 1572, 1582, 1573, 1580, 1579, 1578, 1583, 1583, 1584, 1585, + 1586, 1587, 1588, 1588, 1589, 1586, 1590, 1592, 1589, 1591, + 1591, 1582, 1584, 1581, 1593, 1596, 1587, 1585, 1595, 1594, + 1597, 1604, 1595, 1599, 1599, 1597, 1590, 1601, 1600, 1592, + 1594, 1600, 1602, 1593, 1596, 1603, 1605, 1602, 1606, 1604, + 1601, 1607, 1608, 1609, 1609, 1611, 1612, 1610, 1613, 1613, - 1600, 1608, 1611, 1609, 1611, 1612, 1613, 1605, 1602, 1606, - 1612, 1614, 1613, 1615, 1610, 1617, 1618, 1618, 1619, 1615, - 1620, 1623, 1622, 1624, 1624, 1626, 1620, 1622, 1627, 1617, - 1631, 1614, 1625, 1625, 1628, 1629, 1633, 1619, 1629, 1626, - 1630, 1630, 1632, 1644, 1634, 1623, 1627, 1634, 1631, 1628, - 1634, 1635, 1637, 1636, 1632, 1637, 1633, 1635, 1636, 1639, - 1640, 1641, 1634, 1642, 0, 1640, 1642, 1644, 1639, 1643, - 1643, 1637, 1645, 1646, 1652, 1647, 1648, 1648, 1645, 1646, - 1647, 1649, 1649, 1650, 1653, 1651, 1641, 1652, 1654, 1650, - 1651, 1655, 1656, 1657, 1658, 1656, 1660, 1659, 1661, 1657, + 1605, 1603, 1610, 1614, 1615, 1607, 1616, 1606, 1606, 1615, + 1620, 1617, 1614, 1617, 1618, 1611, 1612, 1608, 1619, 1618, + 1623, 1621, 1624, 1624, 1619, 1625, 1616, 1621, 1628, 1626, + 1620, 1629, 1632, 1628, 1623, 1626, 1630, 1630, 1631, 1631, + 1633, 1634, 1635, 1637, 1625, 1635, 1632, 1636, 1636, 1639, + 1638, 1647, 52, 1641, 1640, 1629, 1634, 1640, 1633, 1641, + 1640, 1637, 1638, 1642, 1643, 1645, 1646, 1643, 1642, 1639, + 1648, 1646, 1640, 1648, 1645, 1650, 1647, 1649, 1649, 1651, + 1652, 1658, 1653, 1643, 1659, 1651, 1652, 1653, 1654, 1654, + 1655, 1655, 1656, 1660, 1658, 1657, 1661, 1663, 1656, 1650, - 1658, 1660, 1653, 1659, 1661, 1662, 1666, 1654, 1663, 1664, - 1664, 1655, 1665, 1663, 1667, 1670, 1668, 1665, 1669, 1671, - 1674, 1673, 1672, 1675, 1666, 1677, 1684, 1675, 1662, 1670, - 1676, 1680, 1676, 1671, 1667, 1668, 1672, 1681, 1669, 1673, - 1678, 1682, 1683, 1680, 1677, 1674, 1684, 1678, 1683, 1681, - 1685, 1686, 1688, 1687, 1682, 1688, 1689, 1689, 1693, 1690, - 1692, 1692, 1695, 1698, 1694, 1697, 1685, 1687, 1690, 1694, - 1699, 1686, 1700, 1688, 1695, 1696, 1696, 1698, 1693, 1701, - 1697, 1702, 1703, 1704, 1705, 1709, 1707, 0, 1701, 1703, - 1700, 1714, 1704, 1713, 1699, 1704, 1702, 1711, 1711, 1710, + 1657, 1662, 1659, 1663, 1662, 1664, 1668, 1665, 1672, 1666, + 1673, 1664, 1660, 1665, 1666, 1667, 1661, 1669, 1670, 1670, + 1671, 1667, 1669, 1674, 1675, 1671, 1672, 1676, 1680, 1668, + 1673, 1677, 1678, 1679, 1681, 1682, 1683, 1682, 1681, 1688, + 1684, 1676, 1674, 1690, 1675, 1677, 1678, 1684, 1686, 1687, + 1689, 1679, 1688, 1680, 1691, 1683, 1689, 1692, 1693, 1694, + 1686, 1687, 1694, 1690, 1695, 1695, 1696, 1698, 1698, 1699, + 1691, 1700, 1693, 1701, 1704, 1696, 1700, 1692, 1702, 1702, + 1694, 1703, 1705, 1706, 1707, 1701, 1710, 1708, 1704, 1699, + 1709, 1711, 1715, 1707, 1713, 1710, 1703, 1709, 1710, 47, - 1705, 1707, 1710, 1712, 1712, 1713, 1707, 1717, 1715, 1714, - 1709, 1715, 1716, 1716, 1718, 1720, 1719, 1721, 1720, 1722, - 1717, 1719, 1723, 1724, 1722, 1725, 1726, 1728, 1727, 1729, - 1730, 1730, 1732, 1718, 1725, 1729, 1728, 1727, 1721, 1724, - 1727, 1723, 1731, 1733, 1734, 1726, 1735, 1736, 1737, 1731, - 1738, 1742, 1732, 1737, 1737, 1738, 1733, 1739, 1745, 1743, - 1735, 1745, 1734, 1736, 1744, 1744, 1746, 1748, 1748, 1739, - 1747, 1750, 1748, 1749, 1749, 1752, 1742, 1743, 1753, 1747, - 1750, 1751, 1746, 1750, 1754, 1755, 1751, 1757, 1749, 1758, - 1755, 1755, 1759, 1752, 1761, 1760, 0, 1762, 1763, 1753, + 1716, 1706, 1708, 1716, 1717, 1717, 1705, 1711, 1719, 1713, + 1718, 1718, 1720, 1721, 1713, 1723, 1721, 1715, 1722, 1722, + 1719, 1724, 1725, 1727, 1726, 1728, 1727, 1725, 1723, 1726, + 1720, 1729, 1730, 1731, 1732, 1733, 1729, 1738, 1734, 1735, + 1724, 1737, 1737, 1732, 1738, 1739, 1728, 1734, 1735, 1731, + 1734, 1730, 1736, 1740, 1733, 1741, 1742, 1744, 1736, 1743, + 1746, 1749, 1744, 1744, 1745, 1739, 1740, 1750, 1752, 1745, + 1742, 1752, 1746, 1741, 1753, 1743, 1751, 1751, 1754, 1755, + 1755, 1756, 1756, 1757, 1755, 1750, 1749, 1754, 1758, 1759, + 1753, 1760, 1757, 1758, 1762, 1757, 1756, 1761, 1765, 1762, - 1760, 1757, 1754, 1762, 1758, 1764, 1764, 1765, 1761, 1767, - 1766, 1768, 1769, 1765, 1759, 1766, 1763, 1768, 1769, 1771, - 1772, 1773, 1774, 1767, 1776, 1778, 1780, 1773, 1775, 1781, - 1776, 1775, 1782, 1778, 1772, 1774, 1783, 1775, 1784, 1771, - 1785, 1786, 1789, 1784, 1783, 1780, 1787, 1788, 1781, 1785, - 1790, 1782, 1791, 1791, 1786, 1787, 1789, 1792, 1794, 1793, - 1788, 1794, 1795, 1792, 1790, 1793, 1796, 1796, 1797, 1798, - 1799, 1800, 1800, 1801, 1791, 1795, 1802, 1803, 1804, 1805, - 1807, 1807, 1802, 1808, 1811, 1810, 1801, 1798, 1797, 1799, - 1810, 1809, 1815, 1812, 1804, 1809, 1813, 1805, 1812, 1803, + 1762, 1766, 1764, 1767, 1768, 1769, 1770, 1759, 1767, 1771, + 1771, 1769, 1760, 1765, 1772, 1761, 1764, 1773, 1768, 1774, + 1772, 1775, 1773, 1766, 1770, 1776, 1778, 1775, 1779, 1780, + 1781, 1776, 1783, 1774, 1787, 1780, 1782, 1788, 1783, 1782, + 1785, 1789, 1779, 1781, 1790, 1782, 1778, 1796, 1785, 1791, + 1792, 1793, 1790, 1787, 1791, 1795, 1788, 1794, 1797, 1792, + 1789, 1796, 1798, 1798, 1793, 1799, 1794, 1800, 1795, 1802, + 1804, 1799, 1797, 1800, 1801, 1803, 1803, 1801, 1805, 1806, + 1807, 1807, 1802, 1809, 1798, 1810, 1808, 1811, 1812, 1809, + 1804, 1814, 1814, 1815, 1818, 1817, 1805, 1816, 1806, 1808, - 1814, 1813, 1817, 1808, 1811, 1818, 1820, 1819, 1821, 1814, - 1819, 1822, 1822, 1817, 1818, 1815, 1823, 1824, 1820, 1825, - 1826, 1826, 1827, 1821, 1828, 1829, 1832, 1830, 1833, 1824, - 1835, 1828, 1836, 0, 1834, 1823, 1827, 1829, 1825, 1830, - 1834, 1837, 1835, 1838, 1838, 1832, 1839, 1837, 1833, 1839, - 1836, 1840, 1840, 1842, 1843, 1844, 1845, 1845, 1842, 1846, - 1847, 1844, 1847, 1843, 1848, 1849, 1850, 1848, 1851, 1852, - 1853, 1846, 1854, 1855, 1857, 1853, 1858, 1854, 1856, 1860, - 1863, 1858, 1855, 1859, 0, 1849, 1851, 1852, 1850, 1857, - 1856, 1861, 1859, 1862, 1866, 1863, 1861, 1868, 1862, 1860, + 1817, 1816, 1821, 1811, 1819, 1820, 1812, 1810, 1822, 1819, + 1820, 1821, 1824, 1815, 1818, 1825, 1826, 1827, 1828, 1826, + 1829, 1829, 1830, 1824, 1825, 1831, 1832, 1833, 1833, 1827, + 1834, 1822, 1835, 1828, 1836, 1837, 1839, 1831, 1840, 1835, + 1842, 1830, 1841, 1843, 1834, 1832, 1836, 1837, 1841, 1854, + 1844, 1854, 1842, 1845, 1845, 1839, 1844, 1846, 1840, 1849, + 1846, 1843, 1847, 1847, 1849, 1850, 1851, 1852, 1852, 1853, + 1855, 1856, 1851, 1855, 1850, 1857, 1858, 1859, 1860, 1861, + 1862, 1853, 1865, 1860, 1861, 1864, 1863, 1865, 1867, 1862, + 1866, 1856, 1871, 1871, 1858, 1859, 1870, 1857, 1863, 1866, - 1864, 1864, 1865, 1861, 1869, 1859, 1870, 1872, 1865, 1873, - 1871, 1873, 1878, 1868, 1874, 1866, 1875, 1875, 1876, 1876, - 1877, 1877, 1881, 1869, 1882, 1870, 1871, 1872, 1874, 1883, - 1874, 1890, 1878, 1879, 1879, 1880, 1880, 1884, 1884, 1887, - 1885, 1886, 1887, 1881, 1885, 1882, 1889, 1886, 1891, 1890, - 1883, 1892, 1889, 1893, 1891, 1894, 1892, 1896, 1894, 1895, - 1895, 1897, 1898, 1898, 1899, 1900, 1897, 1901, 1902, 1903, - 1903, 1904, 1901, 1902, 1905, 1906, 1904, 1896, 1893, 1899, - 1905, 1907, 1908, 1909, 1910, 1911, 1900, 1906, 1906, 1906, - 1910, 1912, 1913, 1914, 1906, 1917, 1924, 1918, 1914, 1913, + 1864, 1868, 1869, 1872, 1873, 1875, 1868, 1869, 1867, 1872, + 1876, 1870, 1866, 1868, 1877, 1878, 1879, 1880, 1881, 1880, + 1885, 1875, 1882, 1882, 1888, 1873, 1883, 1883, 1889, 1876, + 1890, 1878, 1881, 1877, 1881, 1892, 1879, 1884, 1884, 1892, + 1885, 1886, 1886, 1887, 1887, 1888, 1891, 1891, 1893, 1889, + 1894, 1890, 1896, 1894, 1893, 1897, 1898, 1900, 1896, 1899, + 1901, 1903, 1898, 1901, 1899, 1902, 1902, 1904, 1905, 1905, + 1906, 1907, 1904, 1897, 1908, 1909, 1910, 1910, 1911, 1908, + 1909, 1903, 1900, 1911, 1912, 1906, 1913, 1914, 1915, 1916, + 1912, 1917, 1907, 1918, 1919, 1920, 1921, 1917, 1913, 1913, - 1908, 1907, 1916, 1909, 1919, 1911, 1919, 1916, 1916, 1917, - 1920, 1912, 1918, 1921, 1922, 1923, 1924, 1925, 1926, 1926, - 1922, 1920, 1927, 1929, 1923, 1928, 1928, 1930, 1921, 1931, - 1931, 1932, 1932, 1933, 1936, 1936, 1937, 1938, 1925, 1941, - 1943, 1940, 1946, 1929, 1944, 1942, 1938, 1947, 1927, 1930, - 1940, 1942, 1948, 1933, 1945, 1945, 1943, 1949, 1944, 1948, - 1941, 1937, 1947, 1946, 1950, 1952, 1949, 1951, 1951, 1953, - 1955, 1959, 1956, 1957, 1958, 1960, 1955, 1956, 1959, 1957, - 1961, 1960, 1961, 1963, 1966, 1953, 1964, 1965, 1965, 1966, - 1950, 1952, 1964, 1968, 1958, 1967, 1969, 1971, 1970, 1972, + 1913, 1921, 1920, 1924, 1925, 1913, 1915, 1914, 1928, 1916, + 1923, 1927, 1931, 1918, 1919, 1923, 1923, 1924, 1926, 1925, + 1926, 1929, 1927, 1928, 1930, 1932, 1934, 1929, 1933, 1933, + 1935, 1935, 1931, 1930, 1936, 1937, 1938, 1938, 1939, 1939, + 1940, 1943, 1943, 1944, 1945, 1948, 1932, 1947, 1950, 1949, + 1952, 1954, 1934, 1945, 1936, 1949, 1947, 1937, 1951, 1958, + 1940, 1953, 1953, 1955, 1952, 1960, 1948, 1950, 1944, 1956, + 1957, 1961, 1954, 1966, 1951, 18, 1956, 1963, 1955, 1957, + 1959, 1959, 1965, 1963, 1964, 1958, 1968, 1961, 1965, 1964, + 1967, 1960, 1968, 1966, 1969, 1971, 1969, 1967, 1972, 1973, - 1971, 1974, 1963, 1973, 1967, 1975, 1973, 1977, 1968, 1976, - 1976, 1972, 1978, 1977, 1979, 1980, 1969, 1970, 1978, 1974, - 1981, 1983, 1984, 1985, 1981, 1986, 1986, 1987, 1985, 1988, - 1980, 1975, 1989, 1991, 1979, 1992, 1993, 1993, 1997, 1992, - 1981, 1983, 1997, 1994, 1984, 1995, 1998, 1989, 1988, 1994, - 2000, 1987, 1991, 2001, 1995, 1996, 1996, 1998, 1999, 1999, - 2002, 2003, 1998, 2004, 2005, 2006, 2003, 2001, 2007, 2008, - 2010, 2000, 2018, 2009, 2007, 2010, 2011, 2012, 2012, 2002, - 2013, 2013, 2014, 2004, 2005, 2006, 2014, 2008, 2009, 2011, - 2016, 2017, 2018, 2019, 2020, 2020, 2022, 2022, 2019, 2016, + 1973, 1974, 1975, 1976, 1972, 1977, 1974, 1978, 1980, 1979, + 1981, 1975, 1979, 1981, 1971, 1982, 1983, 1985, 1976, 1987, + 1980, 1984, 1984, 1985, 1986, 1977, 1978, 1989, 1988, 1991, + 1986, 1989, 1992, 1982, 1995, 1993, 1994, 1994, 1996, 1987, + 1993, 1997, 1983, 1988, 1999, 17, 2000, 1989, 2008, 1991, + 2000, 2001, 2001, 2002, 1992, 2003, 1997, 1996, 1995, 2002, + 2004, 2004, 2005, 1999, 2003, 2006, 2005, 2007, 2007, 2008, + 2009, 2010, 2011, 2012, 2013, 2014, 2006, 2011, 2016, 2015, + 2024, 2006, 2017, 2018, 2009, 2015, 2019, 2026, 2018, 2024, + 2010, 2020, 2020, 2012, 2013, 2014, 2016, 2017, 2022, 2019, - 2023, 2027, 2017, 2024, 2026, 2023, 2023, 2017, 2028, 2024, - 2026, 2029, 2030, 2028, 2032, 2033, 2034, 2036, 2030, 2033, - 2035, 2035, 2038, 2029, 2037, 2039, 2032, 2027, 2034, 2041, - 2037, 2039, 2040, 2040, 2042, 2043, 2047, 2044, 2046, 2055, - 2043, 2048, 2036, 2054, 2038, 2055, 2048, 0, 2041, 2044, - 2046, 2051, 2051, 2050, 2042, 2047, 2050, 2052, 2052, 2053, - 2053, 2056, 2058, 2054, 2057, 2059, 2061, 2056, 2058, 2057, - 2063, 2061, 2064, 2063, 2059, 2065, 2065, 2067, 2068, 2071, - 2069, 2070, 2070, 2076, 2064, 2069, 2072, 2073, 2071, 2067, - 2068, 2072, 2073, 2074, 2075, 2075, 2074, 2077, 2078, 2079, + 2021, 2021, 2022, 2025, 2027, 2028, 2028, 2026, 2035, 2027, + 2030, 2030, 2031, 0, 2025, 2032, 2034, 2031, 2031, 2025, + 2036, 2032, 2034, 2037, 2038, 2036, 2040, 2041, 2042, 2044, + 2038, 2041, 2043, 2043, 2035, 2037, 2045, 2046, 2040, 2047, + 2042, 2049, 2045, 2048, 2048, 2047, 2050, 2051, 2055, 2052, + 2054, 2056, 2051, 2062, 2044, 2058, 2056, 2124, 2058, 2046, + 2049, 2052, 2054, 2059, 2059, 2124, 2050, 2055, 2060, 2060, + 2061, 2061, 2063, 2062, 2064, 2067, 2065, 2066, 2063, 2072, + 2064, 2065, 2069, 2066, 2067, 2071, 2075, 2069, 2071, 2073, + 2073, 2072, 2076, 2079, 2077, 2078, 2078, 2084, 2075, 2077, - 2080, 2083, 2081, 2076, 2080, 2082, 2077, 2081, 2084, 2085, - 2086, 2082, 2089, 2088, 2088, 2092, 2078, 2084, 2079, 2083, - 2090, 2096, 2091, 2098, 2086, 2088, 2095, 2085, 2094, 2090, - 2089, 2091, 2093, 2093, 2097, 2092, 2098, 2094, 2095, 2097, - 2101, 2101, 2096, 2103, 2104, 2105, 2103, 2106, 2109, 2108, - 2110, 2111, 2112, 2112, 2114, 2113, 2110, 2113, 2115, 2115, - 2104, 2105, 2109, 2106, 2108, 2116, 2118, 2118, 2111, 2119, - 2119, 2121, 2114, 2116, 2122, 2123, 2124, 2125, 2126, 2127, - 2122, 2123, 2128, 2128, 2125, 2130, 2129, 2129, 2135, 2131, - 2124, 2132, 2133, 2134, 2121, 2129, 2139, 2137, 2142, 2127, + 2080, 2081, 2079, 2085, 2076, 2080, 2081, 2082, 2083, 2083, + 2082, 2086, 2085, 2087, 2088, 2089, 2090, 2084, 2088, 2091, + 2089, 2092, 2090, 2093, 2094, 2097, 2098, 2096, 2096, 2086, + 2092, 2099, 2087, 2100, 2103, 2098, 2104, 2091, 2094, 2096, + 2099, 2093, 2102, 2097, 2101, 2101, 2103, 2105, 2106, 2109, + 2109, 2102, 2105, 2100, 2112, 2111, 2113, 2104, 2111, 2114, + 2117, 2106, 2116, 2118, 2119, 2120, 2120, 2122, 2129, 2118, + 2112, 2121, 2113, 2121, 2117, 2114, 2134, 2116, 2123, 2123, + 2135, 2119, 2126, 2126, 2130, 2122, 2127, 2127, 2131, 2132, + 2130, 2129, 2133, 2138, 2131, 2136, 2136, 2139, 2134, 2133, - 2126, 2131, 2136, 2132, 2138, 2134, 2130, 2133, 2143, 2138, - 2138, 2136, 2137, 2144, 2135, 2140, 2147, 2140, 2142, 2139, - 2146, 2140, 2145, 2145, 2148, 2144, 2150, 2148, 2149, 2154, - 2152, 2143, 2160, 2149, 2140, 2152, 2147, 2153, 2146, 2153, - 2155, 2156, 2158, 2161, 2162, 2155, 2150, 2154, 2156, 2164, - 2160, 2158, 2161, 2163, 2165, 2163, 2162, 2166, 2169, 2168, - 2165, 2168, 2170, 2170, 2171, 2172, 2174, 2173, 2164, 2173, - 2172, 2174, 2169, 2175, 2176, 2177, 2178, 2166, 2175, 2179, - 0, 2180, 2181, 2183, 2186, 2179, 2180, 2182, 2183, 2183, - 2171, 2187, 2176, 2177, 2184, 2181, 2178, 2188, 2192, 2182, + 2135, 2137, 2137, 2132, 2140, 2141, 2142, 2143, 2144, 2139, + 2137, 2145, 2147, 2151, 2138, 0, 2140, 2144, 2142, 2146, + 2141, 2148, 2150, 2148, 2146, 2146, 2145, 2148, 2154, 2152, + 2153, 2153, 2155, 2143, 2156, 2147, 2151, 2156, 2157, 2158, + 2148, 2152, 2150, 2157, 2160, 2161, 2154, 2161, 2162, 2160, + 2163, 2164, 2155, 2166, 2168, 2163, 2169, 2170, 2164, 2158, + 2172, 2171, 2166, 2171, 2173, 2169, 2162, 2174, 2175, 2170, + 2180, 2178, 2168, 2174, 2177, 2181, 2177, 2179, 2179, 2172, + 2181, 2182, 2183, 2182, 2173, 2178, 2184, 2183, 2175, 2185, + 2186, 2184, 2187, 2188, 2191, 2189, 2180, 2190, 2192, 2188, - 2189, 2189, 2184, 2186, 2191, 2187, 2190, 2190, 2193, 2188, - 2194, 2197, 2195, 2192, 2198, 2191, 2194, 2195, 2196, 2200, - 2196, 0, 2198, 2199, 2199, 2201, 2201, 2203, 2193, 2197, - 2198, 2200, 2202, 2202, 2204, 2205, 2203, 2207, 2208, 2204, - 2209, 2207, 2209, 2210, 2212, 2213, 2211, 2208, 2214, 2216, - 2208, 2211, 2211, 2205, 2213, 2220, 2212, 2217, 2218, 2221, - 2214, 2216, 2217, 2218, 2210, 2222, 2224, 2221, 2220, 2223, - 2223, 2225, 2226, 2228, 2222, 2227, 2231, 2238, 2229, 2221, - 2230, 2231, 2233, 2235, 2224, 2234, 2238, 2239, 2236, 2225, - 2226, 2227, 2229, 2236, 2233, 2230, 2237, 2234, 2228, 2245, + 2189, 2193, 2195, 2192, 2192, 2196, 2191, 2185, 2186, 2193, + 2190, 2197, 2187, 2198, 2198, 2199, 2199, 2200, 2201, 2196, + 2202, 2195, 2204, 2197, 2203, 2206, 2207, 2204, 2200, 2205, + 2203, 2205, 2209, 2201, 2207, 2208, 2208, 2210, 2210, 2212, + 2202, 2214, 2207, 2206, 2209, 2211, 2211, 2213, 2212, 2216, + 2219, 2217, 2213, 2216, 2218, 2222, 2218, 2221, 2223, 2214, + 2217, 2220, 2225, 2217, 2222, 2229, 2220, 2220, 2226, 2221, + 2223, 2219, 2227, 2226, 2225, 2230, 2231, 2227, 2229, 2232, + 2232, 2233, 2234, 2230, 2235, 2231, 2237, 2236, 2240, 2242, + 2238, 2239, 2244, 2240, 2254, 2230, 2243, 2248, 2247, 2233, - 2242, 2237, 2244, 2235, 2248, 2239, 2242, 2247, 2244, 2246, - 2253, 2249, 2250, 2250, 2251, 2252, 2252, 2254, 2257, 2242, - 2249, 2259, 2245, 2251, 2246, 2247, 2255, 2256, 2253, 2248, - 2255, 2257, 2256, 2260, 2261, 2263, 2254, 2262, 2264, 2260, - 2259, 2263, 2262, 2262, 2264, 2265, 2266, 2267, 2265, 2270, - 2270, 2271, 2271, 2272, 2266, 0, 2261, 2273, 2273, 2274, - 2274, 2275, 2272, 2276, 2277, 2289, 2271, 2267, 2285, 2278, - 2277, 2279, 2279, 2275, 2278, 2280, 2280, 2271, 2281, 2282, - 2284, 2276, 2286, 2281, 2284, 2282, 2286, 2287, 2285, 2290, - 2289, 2291, 2293, 2292, 2290, 2294, 2295, 2293, 2296, 2297, + 2234, 2242, 2235, 2236, 2238, 2245, 2239, 2247, 2243, 2246, + 2245, 2237, 2244, 2251, 2246, 2248, 2253, 2254, 2255, 2251, + 2256, 2257, 2253, 2259, 2259, 2258, 2260, 2261, 2261, 2262, + 2263, 2266, 2251, 2255, 2258, 2260, 2264, 2265, 2256, 2268, + 2264, 2270, 2265, 0, 2266, 2269, 2257, 2262, 2271, 2263, + 2272, 2269, 2276, 2271, 2271, 2273, 2272, 2274, 2268, 2275, + 2274, 2273, 2281, 2270, 2279, 2279, 2284, 2275, 2280, 2280, + 2285, 2281, 2276, 2282, 2282, 2283, 2283, 2287, 2284, 2286, + 2288, 2288, 2287, 2280, 2290, 2286, 2289, 2289, 2285, 2290, + 2291, 2293, 2294, 2295, 2280, 2293, 2291, 2295, 2296, 2298, - 2298, 2299, 2299, 0, 2297, 2300, 2301, 2287, 2292, 2300, - 2302, 2303, 2295, 2294, 2291, 2302, 2304, 2305, 2296, 2306, - 2307, 2301, 2298, 2308, 2309, 2310, 2311, 2311, 2308, 2303, - 2313, 2306, 2314, 2315, 2316, 2305, 2317, 2309, 2313, 2307, - 2318, 2319, 2304, 2310, 2320, 2321, 2322, 2325, 2323, 0, - 2327, 2314, 2315, 2316, 2323, 2328, 2330, 2321, 2330, 2317, - 2319, 2331, 2325, 2327, 2318, 2320, 2329, 2322, 2333, 2328, - 2332, 2332, 2329, 2333, 2334, 2335, 2336, 2334, 2337, 2343, - 2338, 2331, 2339, 2339, 2340, 2340, 2344, 2341, 2335, 2341, - 2342, 2342, 2337, 2338, 2343, 2345, 2348, 2348, 2346, 2346, + 2299, 2301, 2300, 2302, 2303, 2299, 2305, 2304, 2302, 2306, + 2307, 2309, 2294, 2310, 2306, 2309, 2301, 2312, 2296, 2308, + 2308, 2313, 2303, 2304, 2298, 2300, 2305, 2314, 2310, 2311, + 2315, 2316, 2307, 2317, 2311, 2312, 2318, 2319, 2317, 2320, + 2320, 2323, 2315, 2322, 2324, 2314, 2325, 2313, 2326, 2318, + 2316, 2322, 2327, 2328, 2329, 2319, 2330, 2331, 2332, 2334, + 2323, 2341, 2341, 2324, 2332, 2325, 2336, 2337, 2330, 2340, + 2343, 2326, 2328, 2343, 2334, 2329, 2327, 2338, 2331, 2336, + 2339, 2337, 2339, 2338, 2344, 2342, 2345, 2346, 2352, 2340, + 2342, 2347, 2348, 2348, 2349, 2349, 2350, 2344, 2350, 2351, - 2336, 2344, 2346, 2349, 2349, 2350, 2350, 2351, 2345, 2352, - 2352, 2353, 2353, 2354, 2357, 2356, 2351, 2358, 2354, 2351, - 2356, 2359, 2360, 2360, 2361, 2361, 2362, 2363, 2363, 2364, - 2365, 2365, 2370, 2359, 2357, 2366, 2367, 2358, 2368, 2368, - 2371, 2367, 2369, 2369, 2372, 2362, 2370, 2364, 2374, 2371, - 2366, 2373, 2373, 2375, 2377, 2378, 2378, 2379, 2387, 2377, - 2381, 2372, 2374, 2380, 2380, 2382, 2384, 2383, 2388, 2384, - 2382, 2391, 2375, 2383, 2385, 2385, 2379, 2387, 2381, 2386, - 2386, 2392, 2389, 2388, 2389, 2394, 2391, 2393, 2393, 2396, - 2385, 2394, 2397, 2398, 2400, 2399, 2401, 2401, 2400, 2402, + 2351, 2346, 2353, 2352, 2347, 2354, 0, 2355, 2355, 2366, + 2345, 2355, 2357, 2357, 2358, 2358, 2360, 2353, 2354, 2359, + 2359, 2361, 2361, 2362, 2362, 2360, 2363, 2365, 2360, 2366, + 2367, 2363, 2365, 2368, 2369, 2369, 2370, 2370, 2371, 2372, + 2372, 2373, 2374, 2374, 2376, 2368, 2375, 2377, 2377, 2376, + 2367, 2378, 2378, 2379, 2380, 2381, 2381, 2371, 2382, 2373, + 2384, 2375, 2385, 2380, 2383, 2383, 2387, 2379, 2388, 2388, + 2389, 2387, 2390, 2390, 2384, 2382, 2391, 2392, 2393, 2397, + 2394, 2385, 2392, 2394, 2393, 2395, 2395, 2396, 2396, 2389, + 2398, 2399, 2401, 2399, 2391, 2402, 2403, 2403, 2397, 2406, - 2392, 2403, 2404, 2408, 2405, 2414, 2403, 2397, 2409, 2396, - 2399, 2407, 2407, 2410, 2411, 2409, 2398, 2404, 2402, 2405, - 2412, 2413, 0, 2408, 2415, 2415, 2416, 2410, 2417, 2421, - 2417, 2414, 2411, 2420, 2418, 2416, 2413, 2418, 2412, 2420, - 2422, 2421, 2423, 2424, 2425, 2422, 2426, 2423, 2428, 2427, - 2429, 2431, 2418, 2428, 2418, 2432, 2431, 2425, 2427, 2433, - 2432, 2437, 2434, 2435, 2433, 2436, 2438, 2426, 2424, 2435, - 2440, 2436, 2439, 2442, 2441, 2440, 2429, 2434, 2439, 2441, - 2443, 2438, 2437, 2444, 2445, 2446, 2444, 2447, 2448, 2450, - 2449, 2455, 2457, 2443, 2446, 2451, 2447, 2448, 2442, 2449, + 2404, 2395, 2407, 2408, 0, 2398, 2404, 2401, 2409, 2410, + 2411, 2411, 2412, 2410, 2402, 2413, 2420, 2407, 2414, 2406, + 2413, 2415, 2418, 2409, 2417, 2417, 2408, 2419, 2421, 2422, + 2420, 2412, 2424, 2414, 2419, 2423, 2415, 2425, 2425, 2426, + 2434, 2427, 2418, 2427, 2431, 2430, 2421, 2422, 2426, 2428, + 2423, 2430, 2428, 2435, 2432, 2433, 2431, 2436, 2424, 2432, + 2433, 2437, 2439, 2438, 2447, 2434, 2435, 2428, 2438, 2428, + 2437, 2441, 2442, 0, 2443, 2444, 2441, 2442, 2436, 2443, + 2445, 2446, 2448, 2449, 2452, 2447, 2445, 2446, 2439, 2449, + 2444, 2450, 2453, 2451, 2455, 2456, 2450, 2448, 2451, 2454, - 2452, 2451, 2460, 2450, 2445, 2453, 2452, 2458, 2460, 2453, - 2462, 2455, 2457, 2459, 2459, 2465, 2458, 2461, 2461, 2462, - 2463, 2463, 2464, 2467, 2468, 2471, 2461, 2464, 2469, 2469, - 2470, 2473, 2474, 2480, 2471, 2465, 2475, 2465, 2476, 2467, - 2468, 2478, 2479, 2473, 2478, 2470, 2481, 2479, 2474, 2486, - 2476, 2475, 2486, 2480, 2482, 2482, 2483, 2483, 2481, 2485, - 2485, 2487, 2488, 2489, 2490, 2492, 2487, 2495, 2488, 2489, - 2491, 2491, 2494, 2490, 2493, 2493, 2496, 2497, 2497, 2492, - 2498, 2495, 2499, 2500, 2494, 2502, 2498, 2503, 2500, 2502, - 2503, 2504, 2504, 2505, 2506, 2496, 2499, 2507, 2505, 2506, + 0, 2457, 2454, 2458, 2456, 2453, 2459, 2460, 2465, 2452, + 2457, 2461, 2458, 2462, 2455, 2459, 2463, 2461, 2467, 2462, + 2463, 2460, 2468, 2469, 2469, 2475, 2470, 2472, 2465, 2473, + 2473, 2468, 2470, 2471, 2471, 2474, 2472, 2477, 2467, 2478, + 2474, 2480, 2471, 2479, 2479, 2475, 2483, 2475, 2481, 2484, + 2486, 2485, 2490, 2477, 2489, 2478, 2480, 2481, 2483, 2489, + 2488, 2491, 2486, 2488, 0, 2484, 2485, 2492, 2492, 2493, + 2493, 2502, 2490, 2491, 2495, 2495, 2496, 2497, 2498, 2496, + 2499, 2500, 2497, 2504, 2498, 2502, 2499, 2501, 2501, 2505, + 2500, 2503, 2503, 2506, 2508, 2504, 2507, 2507, 2512, 2509, - 2508, 2509, 2512, 2510, 2511, 2511, 2507, 2510, 2514, 2508, - 2515, 2516, 2517, 2514, 2518, 2512, 2519, 2520, 2521, 2522, - 2519, 2509, 2525, 2521, 2526, 2522, 2527, 2523, 2518, 2529, - 2515, 2516, 2517, 2523, 2524, 2524, 2528, 2520, 2530, 2530, - 2525, 2528, 2532, 2526, 2533, 2527, 2534, 2535, 2537, 2536, - 2529, 2534, 2540, 2535, 2532, 2536, 2537, 2538, 2542, 2538, - 2533, 2540, 2543, 2544, 2544, 2545, 2546, 2546, 2545, 2550, - 2548, 2549, 2542, 2548, 2549, 2554, 2543, 2551, 2551, 2554, - 2555, 2556, 2557, 2557, 2563, 2558, 2555, 2561, 2561, 2565, - 2566, 2569, 2570, 2556, 2558, 2550, 2569, 2586, 2571, 2573, + 2508, 2510, 2512, 2505, 2513, 2515, 2510, 2513, 2514, 2514, + 2515, 2516, 2506, 2509, 2517, 2518, 2516, 2519, 2520, 2521, + 2521, 2522, 2520, 2517, 2518, 2524, 2525, 2526, 2527, 2528, + 2524, 2529, 2530, 2531, 2522, 2529, 2532, 2519, 2531, 2533, + 2534, 2534, 2532, 2528, 2535, 2533, 2525, 2526, 2527, 2536, + 2537, 2538, 2530, 2539, 2540, 2540, 2538, 2543, 2542, 2544, + 2545, 2546, 2535, 2547, 2544, 2552, 2545, 2546, 2536, 2537, + 2542, 2547, 2550, 2543, 2539, 2548, 2553, 2548, 2560, 2552, + 0, 2550, 2554, 2554, 2555, 2556, 2556, 2555, 2558, 2559, + 2553, 2558, 2559, 2561, 2561, 2564, 2565, 2566, 2568, 2564, - 2574, 2580, 2563, 2565, 2573, 2574, 2566, 2575, 2575, 2577, - 2577, 2579, 2581, 2581, 2582, 2583, 2586, 2579, 2570, 2571, - 2584, 2580, 2588, 2587, 2589, 2584, 2587, 2590, 2590, 2592, - 2582, 2593, 2594, 2595, 2588, 2596, 2589, 2583, 2594, 2595, - 2593, 2597, 2599, 2599, 2600, 2592, 2601, 2600, 2602, 2604, - 2604, 2605, 2605, 2596, 2606, 2607, 2597, 2609, 2608, 2606, - 2611, 2612, 2611, 2610, 2613, 2601, 2602, 2608, 2610, 2614, - 2609, 2615, 2616, 2607, 2617, 2612, 2615, 2618, 2613, 2619, - 2619, 2614, 2618, 2620, 2620, 2621, 2621, 2622, 2622, 2623, - 2625, 2624, 2616, 2624, 2617, 2626, 2627, 2627, 2628, 2628, + 2567, 2567, 2565, 2573, 2560, 2571, 2571, 2568, 2575, 2566, + 2576, 2579, 2580, 2581, 2582, 2584, 2579, 2591, 2585, 2594, + 2584, 2573, 2575, 2585, 2586, 2586, 2576, 2588, 2588, 2593, + 2590, 2581, 2592, 2592, 2595, 2582, 2590, 2591, 2580, 2595, + 2597, 2594, 2599, 2598, 2600, 2593, 2598, 2601, 2601, 2603, + 2607, 2604, 2605, 2613, 2599, 2606, 2600, 2608, 2605, 2597, + 2604, 2606, 2610, 2610, 2611, 2603, 2612, 2611, 2607, 2615, + 2615, 2613, 2608, 2616, 2616, 2617, 2618, 2619, 2620, 2621, + 2617, 2622, 2623, 2622, 2621, 2612, 2619, 2624, 2625, 2627, + 2626, 2620, 2628, 2629, 2618, 2626, 2623, 2635, 2629, 2635, - 2626, 2623, 2629, 2629, 2630, 2631, 2632, 2633, 2625, 2634, - 2635, 2636, 2636, 2637, 2638, 2638, 2630, 2640, 2632, 2639, - 2639, 2641, 2641, 2642, 2643, 2631, 2635, 2633, 2640, 2644, - 2634, 2643, 2637, 2645, 2646, 2642, 2647, 2648, 2650, 2646, - 2652, 2644, 2649, 2649, 2651, 2651, 2654, 2650, 2653, 2655, - 2656, 2659, 2657, 2645, 2660, 2660, 2647, 2648, 2658, 2654, - 2658, 2661, 2662, 2659, 2656, 2663, 2652, 2665, 2653, 2666, - 2661, 2667, 2668, 2655, 2657, 2668, 2669, 2662, 2670, 2671, - 2663, 2672, 2672, 2670, 2671, 2665, 2673, 2673, 2674, 2674, - 2669, 2666, 2676, 2676, 2667, 2678, 2678, 2679, 2680, 2681, + 2625, 2624, 2630, 2630, 2631, 2631, 2632, 2632, 2634, 2627, + 2633, 2633, 2628, 2636, 2637, 2638, 2638, 2639, 2639, 2637, + 2634, 2640, 2640, 2641, 2642, 2643, 2644, 2645, 2648, 2646, + 2730, 2636, 2647, 2647, 2656, 2641, 2730, 2643, 2649, 2649, + 2650, 2650, 2651, 2653, 2642, 2646, 2644, 2648, 2645, 2652, + 2652, 2654, 2655, 2651, 2656, 2653, 2657, 2658, 2654, 2659, + 2661, 2657, 2660, 2660, 2655, 2662, 2662, 2663, 2664, 2661, + 2665, 2666, 2667, 2669, 2668, 2669, 2672, 2658, 2670, 2659, + 2671, 2671, 2673, 2665, 2674, 2672, 2667, 2676, 2664, 2677, + 2670, 2678, 2680, 2663, 2734, 2666, 2668, 2673, 2679, 2674, - 2684, 2682, 2686, 2685, 2688, 2687, 2689, 2691, 2690, 2680, - 2690, 2692, 2693, 2688, 2699, 2679, 2682, 2698, 2681, 0, - 2684, 2685, 2694, 2694, 2686, 2687, 2689, 2691, 2696, 2692, - 2693, 2698, 2696, 2697, 2697, 2700, 2699, 2701, 2701, 2703, - 2704, 2704, 2705, 2706, 2700, 2707, 2708, 2709, 2703, 2710, - 2711, 2714, 2713, 2708, 2712, 2715, 2715, 2717, 2714, 0, - 2705, 2706, 2709, 2707, 2716, 2716, 2718, 2710, 2711, 2719, - 2712, 2713, 2721, 2721, 2723, 2719, 2724, 2717, 2722, 2722, - 2723, 2725, 2726, 2727, 2718, 2729, 2728, 2730, 2730, 2731, - 2729, 2732, 2733, 2734, 2724, 2735, 2736, 2726, 2742, 2725, + 2734, 2679, 2681, 2682, 2690, 2676, 2680, 2681, 2682, 2683, + 2683, 2677, 2684, 2684, 2678, 2685, 2685, 2687, 2687, 2689, + 2689, 2691, 2690, 2692, 2693, 2695, 2696, 2697, 2698, 2699, + 2700, 2701, 2691, 2701, 2702, 2703, 2710, 2704, 2699, 2693, + 2705, 2705, 2692, 2707, 2696, 2695, 2709, 2707, 2698, 2697, + 2700, 2708, 2708, 2703, 2702, 2704, 2711, 2714, 2710, 2716, + 2709, 2712, 2712, 2715, 2715, 2711, 2714, 2717, 2718, 2719, + 2721, 2722, 2720, 2724, 2723, 2725, 2719, 2716, 2726, 2726, + 2727, 2727, 2725, 2728, 2729, 2717, 2718, 2720, 2721, 2722, + 2723, 2735, 2724, 2732, 2732, 2733, 2733, 2736, 2737, 2738, - 2728, 2736, 2727, 2737, 2734, 2737, 2738, 2738, 2739, 2731, - 2739, 2732, 2733, 2740, 2740, 2735, 2744, 2742, 2745, 2746, - 2747, 2748, 2749, 2750, 2754, 2744, 2748, 2749, 2751, 2756, - 2755, 2746, 2756, 2757, 2757, 2758, 2759, 2745, 2760, 2760, - 2747, 2761, 2762, 2750, 2754, 2763, 2765, 2751, 2755, 2763, - 2758, 2766, 2761, 2767, 2759, 2770, 2768, 2762, 2772, 2767, - 2768, 2765, 2769, 2769, 2773, 2774, 2766, 2777, 2770, 2775, - 2775, 2778, 2779, 2772, 2780, 2780, 2779, 2781, 2781, 2777, - 2778, 2782, 2783, 2783, 2773, 2774, 2784, 2785, 2786, 2787, - 2788, 2784, 2789, 2789, 2794, 2794, 2785, 2795, 2796, 2798, + 2739, 2740, 2729, 2728, 2741, 2741, 2740, 2742, 2743, 2735, + 2744, 2745, 2746, 2737, 2739, 2736, 2747, 2748, 2738, 2748, + 2753, 2747, 2745, 2749, 2749, 2751, 2751, 2742, 2743, 2750, + 2744, 2750, 2746, 2755, 2756, 2757, 2758, 2760, 2759, 2753, + 2761, 2762, 2755, 2759, 2763, 2761, 2766, 2757, 2768, 2767, + 2770, 2768, 2771, 2756, 2769, 2769, 2758, 2760, 2772, 2772, + 2773, 2762, 2774, 2763, 2775, 2770, 2766, 2767, 2775, 2777, + 2771, 2773, 2778, 2779, 2780, 2781, 2781, 2774, 2780, 2779, + 2782, 2784, 2785, 2786, 2777, 2787, 2787, 2778, 2789, 2790, + 2791, 2792, 2792, 2782, 2791, 2794, 2784, 2799, 2790, 2798, - 2782, 2787, 2797, 2797, 2786, 2799, 2795, 2801, 2800, 2805, - 2788, 2806, 2798, 2802, 2803, 3492, 2801, 3492, 2799, 2814, - 2796, 2800, 2802, 2803, 2804, 2804, 2806, 2808, 2808, 2805, - 2811, 2813, 2815, 2814, 2816, 2811, 2813, 2815, 2817, 2818, - 2821, 2819, 2816, 2825, 2829, 2823, 2824, 2831, 2818, 2819, - 2823, 2824, 2826, 2826, 2831, 2821, 2828, 2817, 2825, 2827, - 2827, 2828, 2832, 2829, 2830, 2830, 2833, 2832, 2834, 2835, - 2838, 2836, 2837, 2837, 2839, 2835, 2836, 2840, 2840, 2839, - 2841, 2841, 2844, 0, 2833, 2838, 2834, 2845, 2845, 2846, - 2850, 2847, 2846, 2848, 2849, 2844, 2847, 2847, 2848, 2849, + 2789, 2797, 2785, 2786, 2793, 2793, 2795, 2795, 2796, 2799, + 2797, 2800, 2807, 2796, 2794, 2798, 2801, 2801, 2806, 2806, + 2808, 2807, 2809, 2809, 2810, 2811, 2812, 2813, 2816, 2816, + 2817, 2800, 2814, 2818, 2815, 2823, 2813, 2810, 2811, 2812, + 2823, 2814, 2808, 2815, 2820, 2820, 2825, 2826, 2818, 2827, + 2817, 2825, 2828, 2829, 2827, 2830, 2833, 2831, 2835, 2837, + 2828, 2826, 2836, 2835, 2830, 2831, 2841, 2836, 2838, 2838, + 2843, 2833, 2829, 2840, 2837, 2839, 2839, 2843, 2840, 2842, + 2842, 2844, 2845, 2846, 2847, 2841, 2844, 2848, 2849, 2849, + 2847, 2850, 2848, 2851, 2852, 2852, 2853, 2853, 2851, 2856, - 2851, 2852, 2853, 2854, 2850, 2852, 2851, 2853, 2855, 2856, - 2857, 2860, 2854, 2858, 2859, 2861, 2860, 2856, 2864, 2858, - 2859, 2862, 2862, 2855, 2865, 2864, 2868, 2861, 2873, 2865, - 2866, 2857, 2870, 2866, 2871, 2872, 2874, 2870, 2868, 2871, - 2872, 2875, 2876, 2877, 2877, 2878, 2873, 2879, 2882, 2874, - 2875, 2876, 2879, 2883, 2878, 2884, 2887, 2888, 2889, 2883, - 2890, 2884, 2891, 2891, 2892, 2893, 2882, 2895, 2897, 2897, - 2898, 2892, 2896, 2899, 2901, 2887, 2895, 2888, 2889, 2890, - 2903, 2896, 2900, 2900, 2893, 2898, 2905, 2906, 2899, 2907, - 2907, 2906, 2908, 2901, 2909, 2903, 2910, 2911, 2912, 2915, + 2845, 2846, 2857, 2857, 2858, 2859, 2850, 2858, 2860, 2861, + 2859, 2859, 2856, 2860, 2861, 2862, 2863, 2864, 2865, 2866, + 2867, 2864, 2863, 2865, 2868, 2869, 2872, 2870, 2866, 2862, + 2871, 2872, 2868, 2870, 2876, 2867, 2871, 2873, 2874, 2874, + 2877, 2876, 2880, 2882, 2878, 2877, 2869, 2878, 2882, 2873, + 2883, 2884, 2885, 2886, 2880, 2883, 2884, 2894, 2887, 2888, + 2889, 2889, 2890, 2899, 2891, 2900, 2886, 2887, 2888, 2891, + 2885, 2890, 2895, 2896, 2901, 2894, 2902, 2904, 2895, 2896, + 2903, 2903, 2899, 2905, 2904, 2900, 2910, 2907, 2908, 2909, + 2909, 2911, 2912, 2912, 2901, 2902, 2907, 2908, 2913, 2915, - 2909, 2914, 2910, 2918, 2912, 2916, 2905, 2913, 2913, 2914, - 2916, 2924, 2918, 2919, 2921, 2911, 2922, 2908, 2923, 2922, - 2921, 2925, 2923, 2927, 2915, 2930, 2919, 2926, 2926, 2924, - 2929, 2929, 2931, 2931, 2941, 2925, 2932, 2932, 2927, 2934, - 2934, 2935, 2936, 2930, 2937, 2935, 2942, 2936, 2939, 2939, - 2943, 2942, 2944, 2937, 2941, 2945, 2947, 2944, 2944, 2948, - 2949, 2949, 2943, 2951, 2951, 2952, 2952, 2945, 2953, 2953, - 2954, 2955, 2956, 2954, 2958, 2958, 2947, 2959, 2961, 2948, - 2962, 2962, 2963, 2963, 2955, 2956, 2964, 2964, 2965, 2966, - 2966, 2967, 2968, 2969, 2970, 2959, 2971, 2971, 2961, 2979, + 2917, 2910, 2905, 2918, 2919, 2919, 2911, 2918, 2920, 2921, + 2922, 2923, 2925, 2924, 2915, 2921, 2922, 2913, 2925, 2927, + 2917, 2926, 2926, 2928, 2929, 2931, 2932, 2927, 2937, 2929, + 2923, 2924, 2934, 2920, 2931, 2938, 2940, 2935, 2934, 2932, + 2935, 2936, 2939, 2939, 2943, 2936, 2937, 0, 2928, 2938, + 2954, 2940, 2942, 2942, 2944, 2944, 2945, 2945, 2947, 2947, + 2948, 2949, 2943, 2950, 2948, 2956, 2949, 2952, 2952, 2955, + 2954, 2958, 2950, 2957, 2955, 2960, 2961, 2956, 2957, 2957, + 2962, 2962, 2972, 2958, 2964, 2964, 2965, 2965, 2966, 2966, + 2967, 2968, 2969, 2967, 2974, 2960, 2961, 2971, 2971, 2980, - 2970, 2972, 2975, 2965, 2967, 2972, 2976, 2969, 2975, 2978, - 2968, 2976, 2980, 2981, 2978, 2978, 2984, 2982, 2983, 2986, - 2986, 2985, 2979, 2982, 2983, 2985, 2989, 2991, 2994, 2996, - 2996, 2989, 2980, 2981, 2992, 2991, 2995, 2992, 2997, 2995, - 2998, 2984, 2999, 3000, 3001, 2998, 3002, 3002, 3003, 3006, - 3005, 3007, 3011, 2994, 3004, 2997, 2997, 3004, 3001, 3007, - 2999, 3009, 3003, 3000, 3005, 3004, 3009, 3009, 3006, 3010, - 3018, 3011, 3012, 3012, 3010, 3010, 3013, 3013, 3014, 3014, - 3015, 3015, 3016, 3016, 3017, 3017, 3018, 3019, 3020, 3021, - 3022, 3023, 3019, 3024, 3025, 0, 3023, 3026, 3027, 3025, + 2972, 2975, 2975, 2978, 2968, 2969, 2976, 2976, 2977, 2977, + 2979, 2979, 2980, 2981, 2974, 2982, 2983, 2985, 2978, 2984, + 2984, 2985, 2983, 2989, 2988, 2992, 2993, 2991, 2989, 2982, + 2988, 2981, 2991, 2991, 2994, 2995, 2996, 2997, 3007, 2998, + 0, 2995, 2996, 2998, 2999, 2999, 2993, 3002, 2992, 3004, + 3005, 3010, 3002, 3005, 2994, 3008, 3011, 3004, 3008, 3009, + 3009, 3011, 2997, 3007, 3012, 3013, 3014, 3016, 3010, 3010, + 3015, 3015, 3017, 3018, 3019, 3017, 3020, 3024, 3025, 3025, + 3014, 3016, 3012, 3017, 3020, 3013, 3022, 3018, 3034, 3023, + 3033, 3022, 3022, 3019, 3023, 3023, 3024, 3026, 3026, 3027, - 3028, 3029, 3031, 3031, 3022, 3037, 3026, 3034, 3020, 3032, - 3032, 3033, 3024, 3036, 3033, 3021, 3035, 3035, 3027, 3036, - 3028, 3029, 3034, 3037, 3039, 3039, 3040, 3041, 3041, 3042, - 3044, 3044, 3045, 3040, 3042, 3046, 3047, 3048, 3050, 3051, - 3051, 3045, 3052, 3052, 3046, 3047, 3048, 3053, 3054, 3055, - 3056, 3053, 3057, 3058, 3059, 3062, 3050, 3054, 3061, 3059, - 3059, 3056, 3063, 3069, 3062, 3067, 3063, 3057, 3055, 3072, - 3067, 3061, 3073, 3058, 3068, 3068, 3074, 3069, 3071, 3071, - 3076, 3076, 3077, 3072, 3078, 3083, 3079, 3084, 3087, 3088, - 3078, 3077, 3084, 3085, 3074, 3088, 3092, 3073, 3079, 3090, + 3027, 3028, 3028, 3029, 3029, 3030, 3030, 3031, 3032, 3037, + 3033, 3035, 3036, 3032, 3034, 3038, 3040, 3036, 3039, 3041, + 3038, 3042, 3050, 3031, 0, 3035, 3058, 3039, 3037, 3044, + 3044, 3045, 3045, 3047, 3046, 3058, 3040, 3046, 3049, 3041, + 3050, 3042, 3048, 3048, 3049, 3052, 3052, 3053, 3047, 3054, + 3054, 3055, 3057, 3057, 3053, 3059, 3055, 3060, 3060, 3061, + 3062, 3064, 3065, 3065, 3059, 3066, 3066, 3067, 3061, 3062, + 3069, 3067, 3068, 3070, 3072, 3071, 3076, 3073, 3075, 3064, + 3087, 3068, 3073, 3073, 3070, 3076, 3082, 3082, 3077, 3069, + 3071, 3075, 3077, 3081, 3072, 3083, 3085, 3085, 3081, 3086, - 3094, 3095, 3085, 3096, 3096, 3094, 3095, 3097, 3087, 3099, - 3083, 3090, 3100, 3101, 3099, 3109, 3097, 3092, 3102, 3102, - 3104, 3104, 3102, 3105, 3105, 3100, 3107, 3101, 3106, 3106, - 3108, 3110, 3112, 3116, 3109, 3107, 3110, 3113, 3112, 3114, - 3115, 3115, 3113, 3117, 3114, 3118, 3120, 3119, 3121, 3122, - 3108, 3116, 3119, 3129, 3121, 3117, 3123, 3123, 3125, 3133, - 3126, 3130, 3125, 3127, 3120, 3126, 3118, 3131, 3127, 3128, - 3128, 3137, 3129, 3138, 3122, 3139, 3130, 3135, 3135, 3133, - 3141, 3140, 3131, 3142, 3137, 3140, 3138, 3143, 3139, 3141, - 3144, 3145, 3146, 3147, 3147, 3148, 3145, 3149, 3144, 3142, + 3088, 3090, 3090, 3091, 3092, 3087, 3097, 3093, 3099, 3083, + 3092, 3098, 3091, 3086, 3101, 3102, 3098, 3099, 3088, 3093, + 3104, 3102, 3106, 3108, 3109, 3110, 3110, 3111, 3108, 3109, + 3113, 3097, 3104, 3114, 3101, 3113, 3111, 3115, 3116, 3116, + 3118, 3118, 3116, 3106, 3119, 3119, 3114, 3120, 3120, 3121, + 3122, 3115, 3123, 0, 3124, 3126, 3130, 3127, 3121, 3124, + 3128, 3126, 3127, 3129, 3129, 3128, 3131, 3132, 3133, 3134, + 3122, 3123, 3136, 3133, 3130, 3135, 3137, 3137, 3131, 3139, + 3140, 3135, 3143, 3139, 3141, 3140, 3147, 3134, 3132, 3141, + 3142, 3142, 3144, 3145, 3149, 3149, 3151, 3136, 3152, 3153, - 3150, 3151, 3151, 3153, 3148, 3156, 3143, 3152, 3152, 3157, - 3156, 3156, 3146, 3159, 3162, 3149, 3160, 3160, 3166, 3159, - 3164, 3164, 3153, 3157, 3167, 3168, 3150, 3169, 3170, 3174, - 3168, 3173, 3173, 3170, 3166, 3162, 3175, 3177, 3176, 3179, - 3167, 3178, 3178, 3169, 3176, 3175, 3181, 3181, 3182, 3174, - 3183, 3184, 3184, 3186, 3188, 3189, 3192, 3193, 3179, 3186, - 3177, 3189, 3182, 3190, 3194, 3194, 3195, 3195, 3190, 3183, - 3196, 3197, 3198, 3198, 3188, 3199, 3201, 3204, 3192, 3200, - 3203, 3202, 3205, 3193, 0, 3196, 3199, 3202, 3200, 3204, - 3207, 3197, 3198, 3206, 3206, 3208, 3201, 3209, 3208, 3203, + 3154, 3143, 3156, 3157, 3154, 3155, 3147, 3144, 3145, 3151, + 3159, 3152, 3153, 3158, 3155, 3159, 3160, 3162, 3156, 3161, + 3161, 3158, 3157, 3163, 3164, 3167, 3162, 3165, 3165, 3166, + 3166, 3171, 3170, 3173, 3174, 3174, 3160, 3170, 3170, 3173, + 3176, 3163, 3178, 3178, 3167, 3171, 3180, 3181, 3183, 3184, + 3164, 3185, 3189, 3183, 3188, 3188, 3185, 3190, 3191, 3192, + 3194, 3176, 3180, 3181, 3191, 3184, 3190, 3193, 3193, 3196, + 3196, 3197, 3189, 3198, 3199, 3199, 3203, 3201, 3204, 3194, + 3207, 3205, 3192, 3201, 3204, 3197, 3205, 3208, 3209, 3209, + 3210, 3210, 3198, 3211, 3212, 3214, 3203, 3213, 3213, 3216, - 3209, 3214, 3205, 3210, 3210, 3207, 3215, 3220, 3216, 3217, - 3217, 3219, 3218, 3214, 3216, 3218, 3222, 3219, 3223, 3223, - 3225, 3222, 3224, 3226, 3227, 3220, 3215, 3224, 3230, 3226, - 3228, 3228, 3231, 3232, 3233, 3234, 3234, 3235, 3236, 3225, - 3230, 3227, 3227, 3237, 3239, 3239, 3242, 3233, 3240, 3240, - 3231, 3242, 3237, 3243, 3236, 3250, 3235, 3244, 3232, 3241, - 3241, 3249, 3244, 3245, 3245, 3246, 3246, 3243, 3247, 3247, - 3248, 3248, 3251, 3256, 3249, 3252, 3255, 3255, 3251, 3261, - 3252, 3250, 3258, 3258, 3259, 3259, 3263, 3264, 3265, 3256, - 3266, 3267, 3267, 3269, 3269, 3270, 3271, 3272, 3261, 3274, + 3215, 3217, 3207, 3218, 3219, 3220, 3214, 3217, 3211, 3215, + 3221, 3221, 3222, 3208, 3212, 3223, 3219, 3213, 3223, 3216, + 3224, 3229, 3218, 3224, 3230, 3220, 3231, 3222, 3225, 3225, + 3232, 3232, 3231, 3229, 3233, 3234, 3235, 3233, 3237, 3238, + 3238, 3234, 3239, 3237, 3230, 3240, 3241, 3239, 3242, 3243, + 3243, 3245, 3241, 3246, 3235, 3247, 3248, 3249, 3249, 3250, + 3251, 3252, 0, 3245, 3240, 3242, 3242, 3254, 3254, 3248, + 3252, 3246, 3255, 3255, 3256, 3256, 3251, 3257, 3250, 3258, + 3247, 3259, 3257, 3260, 3260, 3264, 3259, 3261, 3261, 3262, + 3262, 3263, 3263, 3258, 3265, 3266, 3271, 3267, 3264, 3270, - 3279, 3275, 3276, 3276, 3277, 3277, 3281, 3265, 3263, 3264, - 3275, 3272, 3266, 3282, 3280, 3271, 3287, 3283, 3279, 3274, - 3280, 3270, 3283, 3284, 3288, 3288, 3281, 3292, 3284, 3290, - 3290, 3291, 3282, 3293, 3294, 3295, 3291, 3287, 3301, 3293, - 3302, 3292, 3297, 3295, 3296, 3296, 3294, 3297, 3299, 3300, - 3303, 3304, 3299, 3305, 3300, 3303, 3307, 3308, 3301, 3305, - 3302, 3309, 3310, 3304, 3307, 3312, 3316, 3315, 3313, 3314, - 3318, 3316, 3319, 3320, 3323, 3318, 3308, 0, 3325, 3320, - 3321, 3309, 3310, 3312, 3313, 3321, 3314, 3314, 3315, 3338, - 3324, 3325, 3319, 3324, 3323, 3329, 3329, 3330, 3330, 3331, + 3270, 3266, 3267, 3273, 3273, 3274, 3274, 3276, 3278, 3279, + 3280, 3281, 3271, 3282, 3282, 3284, 3284, 3285, 3286, 3289, + 3265, 3287, 3294, 3290, 3291, 3291, 3276, 3292, 3292, 3280, + 3278, 3279, 3290, 3281, 3296, 3287, 3295, 3286, 3297, 3289, + 3294, 3298, 3295, 3285, 3299, 3302, 3298, 3303, 3303, 3299, + 3305, 3305, 3309, 3306, 3296, 3307, 3308, 3297, 3306, 3310, + 3311, 3311, 3308, 3312, 3309, 3316, 3302, 3310, 3312, 3307, + 3314, 3315, 3317, 3318, 3314, 3319, 3315, 3320, 3318, 3323, + 3322, 3324, 3325, 3320, 3328, 3316, 3327, 3319, 3322, 3329, + 3330, 3331, 3317, 3334, 3333, 3338, 3331, 3335, 3323, 3333, - 3336, 3336, 3337, 3331, 3339, 3339, 3341, 3337, 3338, 3344, - 3344, 3345, 3345, 3349, 3345, 3346, 3346, 3349, 3346, 3347, - 3347, 3341, 3348, 3348, 3351, 3348, 3352, 3353, 3353, 3351, - 3354, 3355, 3358, 3358, 3359, 3352, 3360, 3361, 3362, 3362, - 3363, 3364, 3361, 3367, 3368, 3355, 3369, 3373, 3354, 3371, - 3369, 3368, 3374, 3370, 3359, 0, 3360, 3374, 3363, 3375, - 3375, 3364, 3370, 3376, 3371, 3373, 3377, 3377, 3367, 3378, - 3378, 3380, 3376, 3379, 3379, 3381, 3382, 3383, 3384, 3385, - 3381, 3386, 3383, 3383, 3384, 3382, 3380, 3387, 3382, 3388, - 3389, 3390, 3391, 3391, 3388, 3389, 3386, 3392, 3396, 3393, + 3328, 3324, 3325, 3335, 3327, 3336, 3329, 3329, 3340, 3339, + 3336, 3330, 3339, 3334, 3353, 3338, 3344, 3344, 3345, 3345, + 3346, 3340, 3351, 3351, 3346, 3352, 3354, 3354, 3356, 0, + 3352, 3359, 3359, 3353, 3360, 3360, 3364, 3360, 3361, 3361, + 3364, 3361, 3367, 3356, 3362, 3362, 3363, 3363, 3366, 3363, + 3369, 3367, 3370, 3366, 3368, 3368, 3373, 3373, 3374, 3375, + 3376, 3377, 3377, 3378, 3379, 3376, 3370, 3382, 3369, 3383, + 3384, 3385, 3386, 3388, 3384, 0, 3383, 3389, 3374, 3375, + 3385, 3378, 3389, 3395, 3379, 3390, 3390, 3386, 3391, 3392, + 3392, 3388, 3382, 3393, 3393, 3394, 3394, 3391, 3395, 3396, - 3394, 3394, 3405, 3392, 3385, 3393, 3395, 3395, 3387, 3397, - 3390, 3400, 3400, 3396, 3397, 3402, 3402, 3403, 3407, 3407, - 3405, 3408, 3408, 3409, 3409, 3416, 3403, 3410, 3410, 3412, - 3412, 3413, 3413, 3414, 3414, 3415, 3415, 3418, 3419, 3419, - 3420, 3420, 3422, 3421, 3423, 3425, 3418, 3426, 3426, 3427, - 3429, 3416, 3421, 3430, 3422, 3428, 3428, 3431, 3432, 3432, - 3425, 3433, 3433, 3435, 3423, 3429, 3430, 3439, 3427, 3431, - 3436, 3436, 3440, 3441, 3443, 3440, 3442, 3442, 3435, 3445, - 3446, 3447, 3445, 3448, 3449, 3439, 3446, 3450, 3448, 3454, - 3451, 3453, 3443, 3458, 3461, 3447, 3457, 3453, 3454, 3441, + 3397, 3398, 3399, 3400, 3396, 3401, 3398, 3398, 3399, 3397, + 3402, 3403, 3397, 3404, 3405, 0, 3403, 3407, 3404, 3408, + 3401, 3406, 3406, 3407, 3411, 3408, 3409, 3409, 3400, 3410, + 3410, 3402, 3412, 3405, 3415, 3415, 3418, 3412, 3420, 3411, + 3417, 3417, 3422, 3422, 3431, 3418, 3423, 3423, 3424, 3424, + 3425, 3425, 3427, 3427, 3428, 3428, 3420, 3429, 3429, 3430, + 3430, 3437, 3433, 3434, 3434, 3435, 3435, 3436, 3438, 3440, + 3431, 3433, 3442, 3437, 3441, 3441, 3436, 3443, 3443, 3444, + 3445, 3447, 3447, 3446, 3440, 3448, 3448, 3450, 3438, 3451, + 3451, 3442, 3454, 3445, 3444, 3446, 3455, 3456, 3458, 3455, - 3457, 3462, 3471, 3449, 3475, 3450, 3451, 3471, 3458, 3472, - 3476, 3476, 3472, 3477, 3477, 3478, 3478, 3475, 3480, 3480, - 3461, 3462, 3482, 3483, 3484, 3487, 3485, 3489, 3484, 3490, - 3491, 3495, 3483, 3493, 3496, 3491, 3494, 3494, 3497, 3487, - 3490, 3498, 3499, 3500, 3495, 3482, 3485, 3502, 3493, 3503, - 3489, 3501, 3504, 3496, 3503, 3506, 3497, 3498, 3500, 3502, - 3501, 3505, 3507, 3507, 3508, 3509, 3505, 3499, 3514, 3515, - 3509, 3516, 3516, 3504, 3506, 3522, 3517, 3518, 3518, 3519, - 3519, 3523, 3514, 3525, 3508, 3517, 3520, 3520, 3525, 3515, - 3521, 3521, 3524, 3526, 3522, 3524, 3527, 3528, 3526, 3529, + 3457, 3457, 3450, 3460, 3462, 3461, 3460, 3463, 3464, 3466, + 3454, 3461, 3463, 3465, 3468, 3469, 3458, 3472, 3462, 3473, + 3468, 3472, 3476, 3456, 3469, 3466, 3477, 3464, 3486, 3487, + 3490, 3465, 3487, 3486, 3473, 3491, 3491, 3492, 3492, 3493, + 3493, 3495, 3495, 3490, 3497, 3498, 3477, 3499, 3476, 3500, + 3502, 3499, 3504, 3506, 3498, 3505, 3508, 3507, 3506, 3507, + 3509, 3509, 3511, 3510, 3502, 3512, 3505, 3497, 3513, 3500, + 3514, 3508, 3515, 3516, 3517, 3504, 3510, 3519, 3521, 3523, + 3518, 3511, 3516, 3512, 3513, 3518, 3517, 3515, 3520, 3522, + 3522, 3524, 3529, 3520, 3530, 3514, 3524, 3521, 3519, 3523, - 3530, 3523, 3532, 3531, 3534, 3529, 3540, 3532, 3533, 3533, - 3535, 3535, 3528, 3539, 3530, 3531, 3536, 3536, 3538, 3538, - 3543, 3527, 3541, 3541, 3534, 3540, 3545, 3551, 3539, 3548, - 3548, 3549, 3549, 3550, 3552, 3543, 3553, 3554, 3556, 3555, - 3552, 3550, 3553, 3557, 3545, 3564, 3551, 3565, 3557, 3558, - 3558, 3554, 3555, 3560, 3560, 3567, 3568, 3556, 3570, 3571, - 3568, 3572, 3573, 3574, 3571, 3575, 3564, 3565, 3576, 3567, - 3578, 3578, 3577, 3576, 3581, 3573, 3574, 3577, 3570, 3582, - 3572, 3583, 3584, 3584, 3575, 3585, 3586, 3587, 3587, 3591, - 3585, 3588, 3586, 3589, 3581, 3592, 3588, 3582, 3589, 3590, + 3531, 3531, 3532, 3533, 3533, 3537, 3529, 3534, 3534, 3535, + 3535, 3532, 3536, 3536, 3530, 3538, 3539, 3540, 3541, 3539, + 3542, 3543, 3540, 3541, 3537, 3544, 3545, 3546, 3547, 3548, + 3548, 3544, 3549, 3547, 3554, 3538, 3543, 3550, 3550, 3546, + 3545, 3551, 3551, 3553, 3553, 3542, 3555, 3556, 3556, 3554, + 3560, 3558, 3549, 3563, 3563, 3564, 3564, 3566, 3567, 3565, + 3569, 3571, 3570, 3568, 3567, 3555, 3558, 3565, 3560, 3568, + 3573, 3573, 3572, 3579, 3569, 3570, 3566, 3572, 3575, 3575, + 3571, 3580, 3582, 3583, 3585, 3586, 3587, 3583, 3590, 3588, + 3586, 3596, 3591, 3589, 3579, 3592, 3582, 3591, 3593, 3593, - 3583, 3592, 3594, 3594, 3590, 3595, 3596, 3596, 3591, 3598, - 3595, 3599, 3600, 3598, 3601, 3602, 3603, 3604, 3605, 3600, - 3607, 3607, 3603, 3609, 3609, 3612, 3610, 3611, 3613, 3614, - 3599, 3605, 3611, 3601, 3602, 3610, 3604, 3617, 3610, 3615, - 3615, 3616, 3614, 3619, 3612, 3621, 3616, 3613, 3620, 3620, - 3617, 3622, 3622, 3623, 3623, 3624, 3625, 3626, 3627, 3627, - 3624, 3628, 3633, 3625, 3621, 3629, 3628, 3629, 3631, 3619, - 3630, 3630, 3632, 3634, 3635, 3631, 3626, 3638, 3634, 3632, - 3640, 3633, 3637, 3637, 3641, 3640, 3642, 3643, 3647, 3641, - 3644, 3644, 3648, 3635, 3646, 3646, 3638, 3649, 3649, 3650, + 3592, 3580, 3588, 3597, 3585, 3587, 3589, 3590, 3598, 3599, + 3599, 3596, 3600, 3601, 3602, 3602, 3606, 3600, 3603, 3601, + 3604, 3597, 3607, 3603, 3605, 3604, 3614, 3598, 3607, 3605, + 3609, 3609, 3610, 3611, 3611, 3606, 3613, 3610, 3616, 3615, + 3613, 3617, 3618, 3619, 3626, 3614, 3615, 3625, 3618, 3626, + 3620, 3622, 3622, 3624, 3624, 3627, 3625, 3616, 3628, 3625, + 3617, 3634, 3619, 3620, 3631, 3629, 3630, 3630, 3632, 3631, + 3635, 3635, 3636, 3641, 3627, 3637, 3637, 3628, 3629, 3638, + 3638, 3632, 3640, 3639, 3642, 3642, 3646, 3634, 3639, 3640, + 3643, 3636, 3641, 3646, 3644, 3643, 3644, 3645, 3645, 3647, - 3650, 3651, 3653, 3653, 3661, 3642, 3643, 3647, 3651, 3654, - 3654, 3648, 3655, 3657, 3662, 3660, 3663, 3663, 3657, 3655, - 3660, 3664, 3664, 3661, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3662, 3668, 3668, 3668, 3668, 3668, 3668, - 3668, 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3670, 3670, - 3670, 3670, 3670, 3670, 3670, 3671, 3671, 3671, 3671, 3671, - 3671, 3671, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3673, - 3673, 3673, 3673, 3673, 3673, 3673, 3674, 3674, 3674, 3674, - 3674, 3674, 3674, 3676, 3676, 0, 3676, 3676, 3676, 3676, - 3677, 3677, 0, 0, 0, 3677, 3677, 3678, 3678, 0, + 3648, 3650, 3649, 3652, 3652, 3653, 3647, 3649, 3655, 3656, + 3657, 3658, 3662, 3655, 3656, 3659, 3659, 3661, 3661, 3648, + 3650, 3663, 3664, 3664, 3653, 3665, 3665, 3666, 3676, 3657, + 3658, 3662, 3668, 3668, 3666, 3669, 3669, 3670, 3672, 3677, + 3663, 3675, 0, 3672, 3670, 0, 3675, 3676, 3678, 3678, + 3679, 3679, 0, 0, 0, 0, 0, 0, 3677, 3683, + 3683, 3683, 3683, 3683, 3683, 3683, 3684, 3684, 3684, 3684, + 3684, 3684, 3684, 3685, 3685, 3685, 3685, 3685, 3685, 3685, + 3686, 3686, 3686, 3686, 3686, 3686, 3686, 3687, 3687, 3687, + 3687, 3687, 3687, 3687, 3688, 3688, 3688, 3688, 3688, 3688, - 0, 3678, 0, 3678, 3679, 0, 0, 0, 0, 0, - 3679, 3680, 3680, 0, 0, 0, 3680, 3680, 3681, 0, - 0, 0, 0, 0, 3681, 3682, 3682, 0, 3682, 3682, - 3682, 3682, 3683, 0, 0, 0, 0, 0, 3683, 3684, - 3684, 0, 0, 0, 3684, 3684, 3685, 3685, 0, 3685, - 3685, 3685, 3685, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, - 3667, 3667, 3667, 3667 + 3688, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3691, 3691, + 0, 3691, 3691, 3691, 3691, 3692, 3692, 0, 0, 0, + 3692, 3692, 3693, 3693, 0, 0, 3693, 0, 3693, 3694, + 0, 0, 0, 0, 0, 3694, 3695, 3695, 0, 0, + 0, 3695, 3695, 3696, 0, 0, 0, 0, 0, 3696, + 3697, 3697, 0, 3697, 3697, 3697, 3697, 3698, 0, 0, + 0, 0, 0, 3698, 3699, 3699, 0, 0, 0, 3699, + 3699, 3700, 3700, 0, 3700, 3700, 3700, 3700, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682 } ; static yy_state_type yy_last_accepting_state; @@ -3423,7 +3433,7 @@ static void config_end_include(void) } #endif -#line 3424 "" +#line 3434 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3432,9 +3442,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3433 "" +#line 3443 "" -#line 3435 "" +#line 3445 "" #define INITIAL 0 #define quotedstring 1 @@ -3658,7 +3668,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3659 "" +#line 3669 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3691,13 +3701,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 >= 3668 ) + if ( yy_current_state >= 3683 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 7154 ); + while ( yy_base[yy_current_state] != 7179 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5211,17 +5221,17 @@ YY_RULE_SETUP case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 298: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 299: YY_RULE_SETUP @@ -5236,119 +5246,119 @@ YY_RULE_SETUP case 301: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 302: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 303: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 304: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 305: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 306: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 307: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 308: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 309: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 310: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 311: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 312: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" +#line 535 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 313: YY_RULE_SETUP -#line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 537 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 324: YY_RULE_SETUP @@ -5358,128 +5368,133 @@ YY_RULE_SETUP case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 330: YY_RULE_SETUP #line 555 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 331: YY_RULE_SETUP #line 556 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 332: YY_RULE_SETUP #line 557 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 333: YY_RULE_SETUP #line 558 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 341: YY_RULE_SETUP #line 566 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_NSID ) } YY_BREAK case 342: YY_RULE_SETUP #line 567 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDE ) } YY_BREAK case 343: -/* rule 343 can match eol */ YY_RULE_SETUP #line 568 "./util/configlexer.lex" +{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } + YY_BREAK +case 344: +/* rule 344 can match eol */ +YY_RULE_SETUP +#line 569 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 344: +case 345: YY_RULE_SETUP -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 572 "./util/configlexer.lex" +#line 573 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 345: -YY_RULE_SETUP -#line 577 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 346: -/* rule 346 can match eol */ YY_RULE_SETUP #line 578 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 347: +/* rule 347 can match eol */ +YY_RULE_SETUP +#line 579 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 347: +case 348: YY_RULE_SETUP -#line 580 "./util/configlexer.lex" +#line 581 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5492,34 +5507,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 348: +case 349: YY_RULE_SETUP -#line 592 "./util/configlexer.lex" +#line 593 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 349: -YY_RULE_SETUP -#line 598 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 350: -/* rule 350 can match eol */ YY_RULE_SETUP #line 599 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 351: +/* rule 351 can match eol */ +YY_RULE_SETUP +#line 600 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 351: +case 352: YY_RULE_SETUP -#line 601 "./util/configlexer.lex" +#line 602 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5532,38 +5547,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 352: +case 353: YY_RULE_SETUP -#line 613 "./util/configlexer.lex" +#line 614 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 615 "./util/configlexer.lex" +#line 616 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 353: -YY_RULE_SETUP -#line 619 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 354: -/* rule 354 can match eol */ YY_RULE_SETUP #line 620 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 355: +/* rule 355 can match eol */ YY_RULE_SETUP #line 621 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 356: YY_RULE_SETUP #line 622 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 357: +YY_RULE_SETUP +#line 623 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5571,27 +5586,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 627 "./util/configlexer.lex" +#line 628 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 357: -YY_RULE_SETUP -#line 631 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 358: -/* rule 358 can match eol */ YY_RULE_SETUP #line 632 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 359: +/* rule 359 can match eol */ +YY_RULE_SETUP +#line 633 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 359: +case 360: YY_RULE_SETUP -#line 634 "./util/configlexer.lex" +#line 635 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5601,7 +5616,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 640 "./util/configlexer.lex" +#line 641 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5616,39 +5631,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 360: +case 361: YY_RULE_SETUP -#line 654 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 657 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 361: -YY_RULE_SETUP -#line 661 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 362: -/* rule 362 can match eol */ YY_RULE_SETUP #line 662 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 363: +/* rule 363 can match eol */ YY_RULE_SETUP #line 663 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 364: YY_RULE_SETUP #line 664 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 365: +YY_RULE_SETUP +#line 665 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5657,29 +5672,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 670 "./util/configlexer.lex" +#line 671 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 365: -YY_RULE_SETUP -#line 674 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 366: -/* rule 366 can match eol */ YY_RULE_SETUP #line 675 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 367: +/* rule 367 can match eol */ +YY_RULE_SETUP +#line 676 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 367: +case 368: YY_RULE_SETUP -#line 679 "./util/configlexer.lex" +#line 680 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5688,33 +5703,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 368: +case 369: YY_RULE_SETUP -#line 687 "./util/configlexer.lex" +#line 688 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 369: +case 370: YY_RULE_SETUP -#line 691 "./util/configlexer.lex" +#line 692 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 370: +case 371: YY_RULE_SETUP -#line 695 "./util/configlexer.lex" +#line 696 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 371: +case 372: YY_RULE_SETUP -#line 699 "./util/configlexer.lex" +#line 700 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5715 "" +#line 5730 "" case YY_END_OF_BUFFER: { @@ -6009,7 +6024,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 >= 3668 ) + if ( yy_current_state >= 3683 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6037,11 +6052,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 >= 3668 ) + if ( yy_current_state >= 3683 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3667); + yy_is_jam = (yy_current_state == 3682); return yy_is_jam ? 0 : yy_current_state; } @@ -6680,6 +6695,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 699 "./util/configlexer.lex" +#line 700 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index cd07dbc7b..4e4a96535 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -516,6 +516,7 @@ ip-ratelimit-backoff{COLON} { YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } ratelimit-backoff{COLON} { YDVAR(1, VAR_RATELIMIT_BACKOFF) } outbound-msg-retry{COLON} { YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } max-sent-count{COLON} { YDVAR(1, VAR_MAX_SENT_COUNT) } +max-query-restarts{COLON} { YDVAR(1, VAR_MAX_QUERY_RESTARTS) } low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) } fast-server-num{COLON} { YDVAR(1, VAR_FAST_SERVER_NUM) } low-rtt-pct{COLON} { YDVAR(1, VAR_FAST_SERVER_PERMIL) } @@ -541,7 +542,6 @@ pad-responses{COLON} { YDVAR(1, VAR_PAD_RESPONSES) } pad-responses-block-size{COLON} { YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } pad-queries{COLON} { YDVAR(1, VAR_PAD_QUERIES) } pad-queries-block-size{COLON} { YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } -max-query-restarts{COLON} { YDVAR(1, VAR_MAX_QUERY_RESTARTS) } ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } diff --git a/util/configparser.c b/util/configparser.c index 638beae35..9a20bfb67 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -329,499 +329,501 @@ enum yysymbol_kind_t YYSYMBOL_VAR_RATELIMIT_SIZE = 201, /* VAR_RATELIMIT_SIZE */ YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 202, /* VAR_OUTBOUND_MSG_RETRY */ YYSYMBOL_VAR_MAX_SENT_COUNT = 203, /* VAR_MAX_SENT_COUNT */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 204, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 205, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 206, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 207, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 208, /* VAR_IP_RATELIMIT_BACKOFF */ - YYSYMBOL_VAR_RATELIMIT_BACKOFF = 209, /* VAR_RATELIMIT_BACKOFF */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 210, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 211, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 212, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 213, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 214, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 215, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 216, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 217, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 218, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 219, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 220, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 221, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 222, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 223, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 224, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 225, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 226, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 227, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 228, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 229, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 230, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 231, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 232, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 233, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 234, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 235, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 236, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 237, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 238, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 239, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 240, /* VAR_EDE_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 241, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 242, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 243, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 244, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 245, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 246, /* VAR_HIDE_HTTP_USER_AGENT */ - YYSYMBOL_VAR_HTTP_USER_AGENT = 247, /* VAR_HTTP_USER_AGENT */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 248, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 249, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 250, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 251, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 252, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 253, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 254, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 255, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 256, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 257, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 258, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 259, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 260, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 261, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 262, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 263, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 264, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 265, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 266, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 267, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 268, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 269, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 270, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 271, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 272, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 273, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 274, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 275, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 276, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 277, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 278, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 279, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 280, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 281, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 282, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 283, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 284, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 285, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 286, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 287, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 288, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 289, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 290, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 291, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 292, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 293, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 294, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 295, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 296, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 297, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 298, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 299, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 300, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 301, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 302, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 303, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 304, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 305, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 306, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 307, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 308, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 309, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 310, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 311, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 312, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 313, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 314, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 315, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 316, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 317, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 318, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 319, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 320, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 321, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 322, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 323, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 324, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 325, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 326, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 327, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - YYSYMBOL_VAR_EDE = 328, /* VAR_EDE */ - YYSYMBOL_VAR_INTERFACE_ACTION = 329, /* VAR_INTERFACE_ACTION */ - YYSYMBOL_VAR_INTERFACE_VIEW = 330, /* VAR_INTERFACE_VIEW */ - YYSYMBOL_VAR_INTERFACE_TAG = 331, /* VAR_INTERFACE_TAG */ - YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 332, /* VAR_INTERFACE_TAG_ACTION */ - YYSYMBOL_VAR_INTERFACE_TAG_DATA = 333, /* VAR_INTERFACE_TAG_DATA */ - YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 334, /* VAR_PROXY_PROTOCOL_PORT */ - YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 335, /* VAR_STATISTICS_INHIBIT_ZERO */ - YYSYMBOL_YYACCEPT = 336, /* $accept */ - YYSYMBOL_toplevelvars = 337, /* toplevelvars */ - YYSYMBOL_toplevelvar = 338, /* toplevelvar */ - YYSYMBOL_force_toplevel = 339, /* force_toplevel */ - YYSYMBOL_serverstart = 340, /* serverstart */ - YYSYMBOL_contents_server = 341, /* contents_server */ - YYSYMBOL_content_server = 342, /* content_server */ - YYSYMBOL_stubstart = 343, /* stubstart */ - YYSYMBOL_contents_stub = 344, /* contents_stub */ - YYSYMBOL_content_stub = 345, /* content_stub */ - YYSYMBOL_forwardstart = 346, /* forwardstart */ - YYSYMBOL_contents_forward = 347, /* contents_forward */ - YYSYMBOL_content_forward = 348, /* content_forward */ - YYSYMBOL_viewstart = 349, /* viewstart */ - YYSYMBOL_contents_view = 350, /* contents_view */ - YYSYMBOL_content_view = 351, /* content_view */ - YYSYMBOL_authstart = 352, /* authstart */ - YYSYMBOL_contents_auth = 353, /* contents_auth */ - YYSYMBOL_content_auth = 354, /* content_auth */ - YYSYMBOL_rpz_tag = 355, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 356, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 357, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 358, /* rpz_log */ - YYSYMBOL_rpz_log_name = 359, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 360, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 361, /* rpzstart */ - YYSYMBOL_contents_rpz = 362, /* contents_rpz */ - YYSYMBOL_content_rpz = 363, /* content_rpz */ - YYSYMBOL_server_num_threads = 364, /* server_num_threads */ - YYSYMBOL_server_verbosity = 365, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 366, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 367, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 368, /* server_extended_statistics */ - YYSYMBOL_server_statistics_inhibit_zero = 369, /* server_statistics_inhibit_zero */ - YYSYMBOL_server_shm_enable = 370, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 371, /* server_shm_key */ - YYSYMBOL_server_port = 372, /* server_port */ - YYSYMBOL_server_send_client_subnet = 373, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 374, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 375, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 376, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 377, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 378, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 379, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 380, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 381, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 382, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 383, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 384, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 385, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 386, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 387, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 388, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 389, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 390, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 391, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 392, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 393, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 394, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 395, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 396, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 397, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 398, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 399, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 400, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 401, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 402, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 403, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 404, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 405, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 406, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 407, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 408, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 409, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 410, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 411, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 412, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 413, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 414, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 415, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 416, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 417, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 418, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 419, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 420, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 421, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 422, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 423, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 424, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 425, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 426, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 427, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 428, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 429, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 430, /* server_log_queries */ - YYSYMBOL_server_log_replies = 431, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 432, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 433, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 434, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 435, /* server_chroot */ - YYSYMBOL_server_username = 436, /* server_username */ - YYSYMBOL_server_directory = 437, /* server_directory */ - YYSYMBOL_server_logfile = 438, /* server_logfile */ - YYSYMBOL_server_pidfile = 439, /* server_pidfile */ - YYSYMBOL_server_root_hints = 440, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 441, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 442, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 443, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 444, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 445, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 446, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 447, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 448, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 449, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 450, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 451, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 452, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 453, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 454, /* server_identity */ - YYSYMBOL_server_version = 455, /* server_version */ - YYSYMBOL_server_http_user_agent = 456, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 457, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 458, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 459, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 460, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 461, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 462, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 463, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 464, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 465, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 466, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 467, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 468, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 469, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 470, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 471, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 472, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 473, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 474, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 475, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 476, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 477, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 478, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 479, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 480, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 481, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 482, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 483, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 484, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 485, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 486, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 487, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 488, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 489, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 490, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 491, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 492, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 493, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 494, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 495, /* server_private_address */ - YYSYMBOL_server_private_domain = 496, /* server_private_domain */ - YYSYMBOL_server_prefetch = 497, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 498, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 499, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 500, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 501, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 502, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 503, /* server_access_control */ - YYSYMBOL_server_interface_action = 504, /* server_interface_action */ - YYSYMBOL_server_module_conf = 505, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 506, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 507, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 508, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 509, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 510, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 511, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 512, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 513, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 514, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 515, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 516, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 517, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 518, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 519, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 520, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 521, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 522, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 523, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 524, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 525, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 526, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 527, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 528, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 529, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 530, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 531, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 532, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 533, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 534, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 535, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 536, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 537, /* server_local_zone */ - YYSYMBOL_server_local_data = 538, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 539, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 540, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 541, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 542, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 543, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 544, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 545, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 546, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 547, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 548, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 549, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 550, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 551, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 552, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 553, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 554, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 555, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 556, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 557, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 558, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 559, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 560, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 561, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 562, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 563, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 564, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 565, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 566, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 567, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 568, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 569, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 570, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 571, /* server_outbound_msg_retry */ - YYSYMBOL_server_max_sent_count = 572, /* server_max_sent_count */ - YYSYMBOL_server_low_rtt = 573, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 574, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 575, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 576, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 577, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 578, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 579, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 580, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 581, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 582, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 583, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 584, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 585, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 586, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 587, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 588, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 589, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 590, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 591, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 592, /* stub_name */ - YYSYMBOL_stub_host = 593, /* stub_host */ - YYSYMBOL_stub_addr = 594, /* stub_addr */ - YYSYMBOL_stub_first = 595, /* stub_first */ - YYSYMBOL_stub_no_cache = 596, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 597, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 598, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 599, /* stub_prime */ - YYSYMBOL_forward_name = 600, /* forward_name */ - YYSYMBOL_forward_host = 601, /* forward_host */ - YYSYMBOL_forward_addr = 602, /* forward_addr */ - YYSYMBOL_forward_first = 603, /* forward_first */ - YYSYMBOL_forward_no_cache = 604, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 605, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 606, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 607, /* auth_name */ - YYSYMBOL_auth_zonefile = 608, /* auth_zonefile */ - YYSYMBOL_auth_master = 609, /* auth_master */ - YYSYMBOL_auth_url = 610, /* auth_url */ - YYSYMBOL_auth_allow_notify = 611, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 612, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 613, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 614, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 615, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 616, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 617, /* view_name */ - YYSYMBOL_view_local_zone = 618, /* view_local_zone */ - YYSYMBOL_view_response_ip = 619, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 620, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 621, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 622, /* view_local_data_ptr */ - YYSYMBOL_view_first = 623, /* view_first */ - YYSYMBOL_rcstart = 624, /* rcstart */ - YYSYMBOL_contents_rc = 625, /* contents_rc */ - YYSYMBOL_content_rc = 626, /* content_rc */ - YYSYMBOL_rc_control_enable = 627, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 628, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 629, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 630, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 631, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 632, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 633, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 634, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 635, /* dtstart */ - YYSYMBOL_contents_dt = 636, /* contents_dt */ - YYSYMBOL_content_dt = 637, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 638, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 639, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 640, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 641, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 642, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 643, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 644, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 645, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 646, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 647, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 648, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 649, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 650, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 651, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 652, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 653, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 654, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 655, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 656, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 657, /* pythonstart */ - YYSYMBOL_contents_py = 658, /* contents_py */ - YYSYMBOL_content_py = 659, /* content_py */ - YYSYMBOL_py_script = 660, /* py_script */ - YYSYMBOL_dynlibstart = 661, /* dynlibstart */ - YYSYMBOL_contents_dl = 662, /* contents_dl */ - YYSYMBOL_content_dl = 663, /* content_dl */ - YYSYMBOL_dl_file = 664, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 665, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 666, /* server_log_identity */ - YYSYMBOL_server_response_ip = 667, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 668, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 669, /* dnscstart */ - YYSYMBOL_contents_dnsc = 670, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 671, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 672, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 673, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 674, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 675, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 676, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 677, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 678, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 679, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 680, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 681, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 682, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 683, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 684, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 685, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 686, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 687, /* redis_server_host */ - YYSYMBOL_redis_server_port = 688, /* redis_server_port */ - YYSYMBOL_redis_timeout = 689, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 690, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 691, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 692, /* ipsetstart */ - YYSYMBOL_contents_ipset = 693, /* contents_ipset */ - YYSYMBOL_content_ipset = 694, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 695, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 696 /* ipset_name_v6 */ + YYSYMBOL_VAR_MAX_QUERY_RESTARTS = 204, /* VAR_MAX_QUERY_RESTARTS */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 205, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 206, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 207, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 208, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 209, /* VAR_IP_RATELIMIT_BACKOFF */ + YYSYMBOL_VAR_RATELIMIT_BACKOFF = 210, /* VAR_RATELIMIT_BACKOFF */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 211, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 212, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 213, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 214, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 215, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 216, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 217, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 218, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 219, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 220, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 221, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 222, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 223, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 224, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 225, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 226, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 227, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 228, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 229, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 230, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 231, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 232, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 233, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 234, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 235, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 236, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 237, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 238, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 239, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 240, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 241, /* VAR_EDE_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 242, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 243, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 244, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 245, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 246, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 247, /* VAR_HIDE_HTTP_USER_AGENT */ + YYSYMBOL_VAR_HTTP_USER_AGENT = 248, /* VAR_HTTP_USER_AGENT */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 249, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 250, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 251, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 252, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 253, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 254, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 255, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 256, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 257, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 258, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 259, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 260, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 261, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 262, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 263, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 264, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 265, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 266, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 267, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 268, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 269, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 270, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 271, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 272, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 273, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 274, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 275, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 276, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 277, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 278, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 279, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 280, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 281, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 282, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 283, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 284, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 285, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 286, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 287, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 288, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 289, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 290, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 291, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 292, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 293, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 294, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 295, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 296, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 297, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 298, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 299, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 300, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 301, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 302, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 303, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 304, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 305, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 306, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 307, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 308, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 309, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 310, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 311, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 312, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 313, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 314, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 315, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 316, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 317, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 318, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 319, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 320, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 321, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 322, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 323, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 324, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 325, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 326, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 327, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 328, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + YYSYMBOL_VAR_EDE = 329, /* VAR_EDE */ + YYSYMBOL_VAR_INTERFACE_ACTION = 330, /* VAR_INTERFACE_ACTION */ + YYSYMBOL_VAR_INTERFACE_VIEW = 331, /* VAR_INTERFACE_VIEW */ + YYSYMBOL_VAR_INTERFACE_TAG = 332, /* VAR_INTERFACE_TAG */ + YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 333, /* VAR_INTERFACE_TAG_ACTION */ + YYSYMBOL_VAR_INTERFACE_TAG_DATA = 334, /* VAR_INTERFACE_TAG_DATA */ + YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 335, /* VAR_PROXY_PROTOCOL_PORT */ + YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 336, /* VAR_STATISTICS_INHIBIT_ZERO */ + YYSYMBOL_YYACCEPT = 337, /* $accept */ + YYSYMBOL_toplevelvars = 338, /* toplevelvars */ + YYSYMBOL_toplevelvar = 339, /* toplevelvar */ + YYSYMBOL_force_toplevel = 340, /* force_toplevel */ + YYSYMBOL_serverstart = 341, /* serverstart */ + YYSYMBOL_contents_server = 342, /* contents_server */ + YYSYMBOL_content_server = 343, /* content_server */ + YYSYMBOL_stubstart = 344, /* stubstart */ + YYSYMBOL_contents_stub = 345, /* contents_stub */ + YYSYMBOL_content_stub = 346, /* content_stub */ + YYSYMBOL_forwardstart = 347, /* forwardstart */ + YYSYMBOL_contents_forward = 348, /* contents_forward */ + YYSYMBOL_content_forward = 349, /* content_forward */ + YYSYMBOL_viewstart = 350, /* viewstart */ + YYSYMBOL_contents_view = 351, /* contents_view */ + YYSYMBOL_content_view = 352, /* content_view */ + YYSYMBOL_authstart = 353, /* authstart */ + YYSYMBOL_contents_auth = 354, /* contents_auth */ + YYSYMBOL_content_auth = 355, /* content_auth */ + YYSYMBOL_rpz_tag = 356, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 357, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 358, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 359, /* rpz_log */ + YYSYMBOL_rpz_log_name = 360, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 361, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 362, /* rpzstart */ + YYSYMBOL_contents_rpz = 363, /* contents_rpz */ + YYSYMBOL_content_rpz = 364, /* content_rpz */ + YYSYMBOL_server_num_threads = 365, /* server_num_threads */ + YYSYMBOL_server_verbosity = 366, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 367, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 368, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 369, /* server_extended_statistics */ + YYSYMBOL_server_statistics_inhibit_zero = 370, /* server_statistics_inhibit_zero */ + YYSYMBOL_server_shm_enable = 371, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 372, /* server_shm_key */ + YYSYMBOL_server_port = 373, /* server_port */ + YYSYMBOL_server_send_client_subnet = 374, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 375, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 376, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 377, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 378, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 379, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 380, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 381, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 382, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 383, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 384, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 385, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 386, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 387, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 388, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 389, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 390, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 391, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 392, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 393, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 394, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 395, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 396, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 397, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 398, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 399, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 400, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 401, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 402, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 403, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 404, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 405, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 406, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 407, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 408, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 409, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 410, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 411, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 412, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 413, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 414, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 415, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 416, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 417, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 418, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 419, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 420, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 421, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 422, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 423, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 424, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 425, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 426, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 427, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 428, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 429, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 430, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 431, /* server_log_queries */ + YYSYMBOL_server_log_replies = 432, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 433, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 434, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 435, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 436, /* server_chroot */ + YYSYMBOL_server_username = 437, /* server_username */ + YYSYMBOL_server_directory = 438, /* server_directory */ + YYSYMBOL_server_logfile = 439, /* server_logfile */ + YYSYMBOL_server_pidfile = 440, /* server_pidfile */ + YYSYMBOL_server_root_hints = 441, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 442, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 443, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 444, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 445, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 446, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 447, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 448, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 449, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 450, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 451, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 452, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 453, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 454, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 455, /* server_identity */ + YYSYMBOL_server_version = 456, /* server_version */ + YYSYMBOL_server_http_user_agent = 457, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 458, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 459, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 460, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 461, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 462, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 463, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 464, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 465, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 466, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 467, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 468, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 469, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 470, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 471, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 472, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 473, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 474, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 475, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 476, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 477, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 478, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 479, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 480, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 481, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 482, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 483, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 484, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 485, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 486, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 487, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 488, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 489, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 490, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 491, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 492, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 493, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 494, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 495, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 496, /* server_private_address */ + YYSYMBOL_server_private_domain = 497, /* server_private_domain */ + YYSYMBOL_server_prefetch = 498, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 499, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 500, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 501, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 502, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 503, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 504, /* server_access_control */ + YYSYMBOL_server_interface_action = 505, /* server_interface_action */ + YYSYMBOL_server_module_conf = 506, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 507, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 508, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 509, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 510, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 511, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 512, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 513, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 514, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 515, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 516, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 517, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 518, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 519, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 520, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 521, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 522, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 523, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 524, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 525, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 526, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 527, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 528, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 529, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 530, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 531, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 532, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 533, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 534, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 535, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 536, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 537, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 538, /* server_local_zone */ + YYSYMBOL_server_local_data = 539, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 540, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 541, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 542, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 543, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 544, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 545, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 546, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 547, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 548, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 549, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 550, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 551, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 552, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 553, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 554, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 555, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 556, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 557, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 558, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 559, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 560, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 561, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 562, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 563, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 564, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 565, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 566, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 567, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 568, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 569, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 570, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 571, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 572, /* server_outbound_msg_retry */ + YYSYMBOL_server_max_sent_count = 573, /* server_max_sent_count */ + YYSYMBOL_server_max_query_restarts = 574, /* server_max_query_restarts */ + YYSYMBOL_server_low_rtt = 575, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 576, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 577, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 578, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 579, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 580, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 581, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 582, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 583, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 584, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 585, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 586, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 587, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 588, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 589, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 590, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 591, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 592, /* server_ede */ + YYSYMBOL_server_proxy_protocol_port = 593, /* server_proxy_protocol_port */ + YYSYMBOL_stub_name = 594, /* stub_name */ + YYSYMBOL_stub_host = 595, /* stub_host */ + YYSYMBOL_stub_addr = 596, /* stub_addr */ + YYSYMBOL_stub_first = 597, /* stub_first */ + YYSYMBOL_stub_no_cache = 598, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 599, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 600, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 601, /* stub_prime */ + YYSYMBOL_forward_name = 602, /* forward_name */ + YYSYMBOL_forward_host = 603, /* forward_host */ + YYSYMBOL_forward_addr = 604, /* forward_addr */ + YYSYMBOL_forward_first = 605, /* forward_first */ + YYSYMBOL_forward_no_cache = 606, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 607, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 608, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 609, /* auth_name */ + YYSYMBOL_auth_zonefile = 610, /* auth_zonefile */ + YYSYMBOL_auth_master = 611, /* auth_master */ + YYSYMBOL_auth_url = 612, /* auth_url */ + YYSYMBOL_auth_allow_notify = 613, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 614, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 615, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 616, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 617, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 618, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 619, /* view_name */ + YYSYMBOL_view_local_zone = 620, /* view_local_zone */ + YYSYMBOL_view_response_ip = 621, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 622, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 623, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 624, /* view_local_data_ptr */ + YYSYMBOL_view_first = 625, /* view_first */ + YYSYMBOL_rcstart = 626, /* rcstart */ + YYSYMBOL_contents_rc = 627, /* contents_rc */ + YYSYMBOL_content_rc = 628, /* content_rc */ + YYSYMBOL_rc_control_enable = 629, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 630, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 631, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 632, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 633, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 634, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 635, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 636, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 637, /* dtstart */ + YYSYMBOL_contents_dt = 638, /* contents_dt */ + YYSYMBOL_content_dt = 639, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 640, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 641, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 642, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 643, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 644, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 645, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 646, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 647, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 648, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 649, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 650, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 651, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 652, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 653, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 654, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 655, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 656, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 657, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 658, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 659, /* pythonstart */ + YYSYMBOL_contents_py = 660, /* contents_py */ + YYSYMBOL_content_py = 661, /* content_py */ + YYSYMBOL_py_script = 662, /* py_script */ + YYSYMBOL_dynlibstart = 663, /* dynlibstart */ + YYSYMBOL_contents_dl = 664, /* contents_dl */ + YYSYMBOL_content_dl = 665, /* content_dl */ + YYSYMBOL_dl_file = 666, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 667, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 668, /* server_log_identity */ + YYSYMBOL_server_response_ip = 669, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 670, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 671, /* dnscstart */ + YYSYMBOL_contents_dnsc = 672, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 673, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 674, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 675, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 676, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 677, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 678, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 679, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 680, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 681, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 682, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 683, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 684, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 685, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 686, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 687, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 688, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 689, /* redis_server_host */ + YYSYMBOL_redis_server_port = 690, /* redis_server_port */ + YYSYMBOL_redis_timeout = 691, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 692, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 693, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 694, /* ipsetstart */ + YYSYMBOL_contents_ipset = 695, /* contents_ipset */ + YYSYMBOL_content_ipset = 696, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 697, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 698 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1149,19 +1151,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 717 +#define YYLAST 719 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 336 +#define YYNTOKENS 337 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 361 +#define YYNNTS 362 /* YYNRULES -- Number of rules. */ -#define YYNRULES 699 +#define YYNRULES 701 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1046 +#define YYNSTATES 1049 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 590 +#define YYMAXUTOK 591 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1234,7 +1236,7 @@ static const yytype_int16 yytranslate[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335 + 335, 336 }; #if YYDEBUG @@ -1257,60 +1259,61 @@ static const yytype_int16 yyrline[] = 269, 269, 269, 270, 270, 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, 275, 275, 275, 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, 280, 280, - 281, 282, 282, 283, 283, 284, 284, 284, 285, 285, - 286, 286, 287, 287, 288, 288, 289, 289, 290, 290, - 291, 291, 292, 292, 292, 293, 293, 294, 294, 295, - 295, 296, 296, 296, 297, 297, 298, 299, 299, 300, - 300, 301, 302, 302, 303, 303, 304, 304, 304, 305, - 305, 306, 306, 306, 307, 307, 307, 308, 308, 309, - 310, 310, 311, 311, 312, 312, 313, 313, 314, 314, - 314, 315, 315, 315, 316, 316, 316, 317, 317, 318, - 318, 319, 319, 320, 320, 321, 321, 322, 322, 323, - 323, 324, 324, 325, 325, 327, 341, 342, 343, 343, - 343, 343, 343, 344, 344, 344, 346, 360, 361, 362, - 362, 362, 362, 363, 363, 363, 365, 381, 382, 383, - 383, 383, 383, 384, 384, 384, 386, 407, 408, 409, - 409, 409, 409, 410, 410, 410, 411, 411, 411, 414, - 433, 450, 458, 468, 475, 485, 504, 505, 506, 506, - 506, 506, 506, 507, 507, 507, 508, 508, 508, 508, - 510, 519, 528, 539, 548, 557, 566, 575, 586, 595, - 607, 621, 636, 647, 664, 681, 698, 715, 730, 745, - 758, 773, 782, 791, 800, 809, 818, 827, 834, 843, - 852, 861, 870, 879, 888, 897, 906, 919, 930, 941, - 952, 961, 974, 983, 992, 1001, 1008, 1015, 1024, 1031, - 1040, 1048, 1055, 1062, 1070, 1079, 1087, 1103, 1111, 1119, - 1127, 1135, 1143, 1152, 1161, 1175, 1184, 1193, 1202, 1211, - 1220, 1229, 1236, 1243, 1269, 1277, 1284, 1291, 1298, 1305, - 1313, 1321, 1329, 1336, 1347, 1358, 1365, 1374, 1383, 1392, - 1401, 1408, 1415, 1422, 1438, 1446, 1454, 1464, 1474, 1484, - 1498, 1506, 1519, 1530, 1538, 1551, 1560, 1569, 1578, 1587, - 1597, 1607, 1615, 1628, 1637, 1645, 1654, 1662, 1675, 1684, - 1693, 1703, 1710, 1720, 1730, 1740, 1750, 1760, 1770, 1780, - 1790, 1797, 1804, 1811, 1820, 1829, 1838, 1847, 1854, 1864, - 1872, 1881, 1888, 1906, 1919, 1932, 1945, 1954, 1963, 1972, - 1981, 1991, 2001, 2012, 2021, 2030, 2039, 2048, 2057, 2066, - 2075, 2084, 2097, 2110, 2119, 2126, 2135, 2144, 2153, 2162, - 2171, 2179, 2192, 2200, 2255, 2262, 2277, 2287, 2297, 2304, - 2311, 2318, 2327, 2335, 2349, 2370, 2391, 2403, 2415, 2427, - 2436, 2457, 2469, 2481, 2490, 2511, 2520, 2529, 2537, 2545, - 2558, 2571, 2586, 2601, 2610, 2619, 2629, 2639, 2648, 2657, - 2663, 2672, 2681, 2691, 2701, 2711, 2720, 2730, 2739, 2752, - 2765, 2777, 2791, 2803, 2817, 2826, 2837, 2846, 2853, 2863, - 2870, 2877, 2886, 2895, 2905, 2915, 2925, 2935, 2942, 2949, - 2958, 2967, 2977, 2987, 2997, 3004, 3011, 3018, 3026, 3036, - 3046, 3056, 3066, 3076, 3086, 3142, 3152, 3160, 3168, 3183, - 3192, 3198, 3199, 3200, 3200, 3200, 3201, 3201, 3201, 3202, - 3202, 3204, 3214, 3223, 3230, 3237, 3244, 3251, 3258, 3265, - 3271, 3272, 3273, 3273, 3273, 3274, 3274, 3274, 3275, 3276, - 3276, 3277, 3277, 3278, 3278, 3279, 3280, 3281, 3282, 3283, - 3284, 3286, 3295, 3305, 3312, 3319, 3328, 3335, 3342, 3349, - 3356, 3365, 3374, 3381, 3388, 3398, 3408, 3418, 3428, 3438, - 3448, 3454, 3455, 3456, 3458, 3464, 3470, 3471, 3472, 3474, - 3480, 3490, 3497, 3506, 3514, 3520, 3521, 3523, 3523, 3523, - 3524, 3524, 3525, 3526, 3527, 3528, 3529, 3531, 3541, 3550, - 3557, 3566, 3573, 3582, 3590, 3603, 3611, 3624, 3630, 3631, - 3632, 3632, 3633, 3633, 3633, 3634, 3636, 3648, 3660, 3672, - 3687, 3700, 3713, 3724, 3730, 3731, 3732, 3732, 3734, 3749 + 281, 282, 282, 283, 283, 284, 284, 285, 285, 286, + 286, 287, 287, 288, 288, 289, 289, 290, 290, 291, + 291, 292, 292, 293, 293, 293, 294, 294, 295, 295, + 296, 296, 297, 297, 297, 298, 298, 299, 300, 300, + 301, 301, 302, 303, 303, 304, 304, 305, 305, 305, + 306, 306, 307, 307, 307, 308, 308, 308, 309, 309, + 310, 311, 311, 312, 312, 313, 313, 314, 314, 315, + 315, 315, 316, 316, 316, 317, 317, 317, 318, 318, + 319, 319, 320, 320, 321, 321, 322, 322, 323, 323, + 324, 324, 325, 325, 326, 326, 328, 342, 343, 344, + 344, 344, 344, 344, 345, 345, 345, 347, 361, 362, + 363, 363, 363, 363, 364, 364, 364, 366, 382, 383, + 384, 384, 384, 384, 385, 385, 385, 387, 408, 409, + 410, 410, 410, 410, 411, 411, 411, 412, 412, 412, + 415, 434, 451, 459, 469, 476, 486, 505, 506, 507, + 507, 507, 507, 507, 508, 508, 508, 509, 509, 509, + 509, 511, 520, 529, 540, 549, 558, 567, 576, 587, + 596, 608, 622, 637, 648, 665, 682, 699, 716, 731, + 746, 759, 774, 783, 792, 801, 810, 819, 828, 835, + 844, 853, 862, 871, 880, 889, 898, 907, 920, 931, + 942, 953, 962, 975, 984, 993, 1002, 1009, 1016, 1025, + 1032, 1041, 1049, 1056, 1063, 1071, 1080, 1088, 1104, 1112, + 1120, 1128, 1136, 1144, 1153, 1162, 1176, 1185, 1194, 1203, + 1212, 1221, 1230, 1237, 1244, 1270, 1278, 1285, 1292, 1299, + 1306, 1314, 1322, 1330, 1337, 1348, 1359, 1366, 1375, 1384, + 1393, 1402, 1409, 1416, 1423, 1439, 1447, 1455, 1465, 1475, + 1485, 1499, 1507, 1520, 1531, 1539, 1552, 1561, 1570, 1579, + 1588, 1598, 1608, 1616, 1629, 1638, 1646, 1655, 1663, 1676, + 1685, 1694, 1704, 1711, 1721, 1731, 1741, 1751, 1761, 1771, + 1781, 1791, 1798, 1805, 1812, 1821, 1830, 1839, 1848, 1855, + 1865, 1873, 1882, 1889, 1907, 1920, 1933, 1946, 1955, 1964, + 1973, 1982, 1992, 2002, 2013, 2022, 2031, 2040, 2049, 2058, + 2067, 2076, 2085, 2098, 2111, 2120, 2127, 2136, 2145, 2154, + 2163, 2172, 2180, 2193, 2201, 2256, 2263, 2278, 2288, 2298, + 2305, 2312, 2319, 2328, 2336, 2350, 2371, 2392, 2404, 2416, + 2428, 2437, 2458, 2470, 2482, 2491, 2512, 2521, 2530, 2538, + 2546, 2559, 2572, 2587, 2602, 2611, 2620, 2630, 2640, 2649, + 2658, 2667, 2673, 2682, 2691, 2701, 2711, 2721, 2730, 2740, + 2749, 2762, 2775, 2787, 2801, 2813, 2827, 2836, 2847, 2856, + 2863, 2873, 2880, 2887, 2896, 2905, 2915, 2925, 2935, 2945, + 2952, 2959, 2968, 2977, 2987, 2997, 3007, 3014, 3021, 3028, + 3036, 3046, 3056, 3066, 3076, 3086, 3096, 3152, 3162, 3170, + 3178, 3193, 3202, 3208, 3209, 3210, 3210, 3210, 3211, 3211, + 3211, 3212, 3212, 3214, 3224, 3233, 3240, 3247, 3254, 3261, + 3268, 3275, 3281, 3282, 3283, 3283, 3283, 3284, 3284, 3284, + 3285, 3286, 3286, 3287, 3287, 3288, 3288, 3289, 3290, 3291, + 3292, 3293, 3294, 3296, 3305, 3315, 3322, 3329, 3338, 3345, + 3352, 3359, 3366, 3375, 3384, 3391, 3398, 3408, 3418, 3428, + 3438, 3448, 3458, 3464, 3465, 3466, 3468, 3474, 3480, 3481, + 3482, 3484, 3490, 3500, 3507, 3516, 3524, 3530, 3531, 3533, + 3533, 3533, 3534, 3534, 3535, 3536, 3537, 3538, 3539, 3541, + 3551, 3560, 3567, 3576, 3583, 3592, 3600, 3613, 3621, 3634, + 3640, 3641, 3642, 3642, 3643, 3643, 3643, 3644, 3646, 3658, + 3670, 3682, 3697, 3710, 3723, 3734, 3740, 3741, 3742, 3742, + 3744, 3759 }; #endif @@ -1399,7 +1402,7 @@ static const char *const yytname[] = "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK", "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", - "VAR_OUTBOUND_MSG_RETRY", "VAR_MAX_SENT_COUNT", + "VAR_OUTBOUND_MSG_RETRY", "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS", "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR", "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF", @@ -1549,26 +1552,27 @@ static const char *const yytname[] = "server_ratelimit_for_domain", "server_ratelimit_below_domain", "server_ip_ratelimit_factor", "server_ratelimit_factor", "server_ip_ratelimit_backoff", "server_ratelimit_backoff", - "server_outbound_msg_retry", "server_max_sent_count", "server_low_rtt", - "server_fast_server_num", "server_fast_server_permil", - "server_qname_minimisation", "server_qname_minimisation_strict", - "server_pad_responses", "server_pad_responses_block_size", - "server_pad_queries", "server_pad_queries_block_size", - "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", - "server_ipsecmod_hook", "server_ipsecmod_max_ttl", - "server_ipsecmod_whitelist", "server_ipsecmod_strict", - "server_edns_client_string", "server_edns_client_string_opcode", - "server_ede", "server_proxy_protocol_port", "stub_name", "stub_host", - "stub_addr", "stub_first", "stub_no_cache", "stub_ssl_upstream", - "stub_tcp_upstream", "stub_prime", "forward_name", "forward_host", - "forward_addr", "forward_first", "forward_no_cache", - "forward_ssl_upstream", "forward_tcp_upstream", "auth_name", - "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify", - "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream", - "auth_for_upstream", "auth_fallback_enabled", "view_name", - "view_local_zone", "view_response_ip", "view_response_ip_data", - "view_local_data", "view_local_data_ptr", "view_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", + "server_outbound_msg_retry", "server_max_sent_count", + "server_max_query_restarts", "server_low_rtt", "server_fast_server_num", + "server_fast_server_permil", "server_qname_minimisation", + "server_qname_minimisation_strict", "server_pad_responses", + "server_pad_responses_block_size", "server_pad_queries", + "server_pad_queries_block_size", "server_ipsecmod_enabled", + "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", + "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", + "server_ipsecmod_strict", "server_edns_client_string", + "server_edns_client_string_opcode", "server_ede", + "server_proxy_protocol_port", "stub_name", "stub_host", "stub_addr", + "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream", + "stub_prime", "forward_name", "forward_host", "forward_addr", + "forward_first", "forward_no_cache", "forward_ssl_upstream", + "forward_tcp_upstream", "auth_name", "auth_zonefile", "auth_master", + "auth_url", "auth_allow_notify", "auth_zonemd_check", + "auth_zonemd_reject_absence", "auth_for_downstream", "auth_for_upstream", + "auth_fallback_enabled", "view_name", "view_local_zone", + "view_response_ip", "view_response_ip_data", "view_local_data", + "view_local_data_ptr", "view_first", "rcstart", "contents_rc", + "content_rc", "rc_control_enable", "rc_control_port", "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", @@ -1606,7 +1610,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-285) +#define YYPACT_NINF (-286) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1620,111 +1624,111 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -285, 251, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -13, 202, 219, 52, 84, 38, 237, 210, - -81, -284, -94, -192, -277, 29, 30, 31, 80, 81, + -286, 252, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -13, 203, 220, 52, 84, 38, 238, 211, + -81, -285, -95, -193, -278, 29, 30, 31, 80, 81, 91, 92, 120, 121, 132, 146, 147, 148, 149, 161, - 162, 163, 164, 165, 209, 211, 231, 234, 235, 236, - 238, 255, 256, 257, 258, 260, 261, 264, 265, 266, - 269, 272, 275, 285, 286, 289, 290, 291, 292, 294, - 295, 296, 301, 303, 317, 318, 319, 320, 321, 322, - 332, 333, 334, 336, 339, 340, 346, 348, 349, 350, - 352, 358, 364, 365, 366, 367, 368, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489, 490, 492, 493, 494, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 508, - 509, 510, 511, 512, 513, 514, 515, 517, 518, 519, - 520, 521, 522, 523, 524, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 548, 550, 551, - 552, 554, 555, 556, 557, 558, 560, 561, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, 562, 563, 564, 565, 566, 567, 568, 569, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 570, - 571, 572, 573, 574, 575, 576, -285, -285, -285, -285, - -285, -285, -285, -285, 577, 578, 579, 580, 581, 582, - 583, -285, -285, -285, -285, -285, -285, -285, -285, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - 594, 595, 596, 597, 598, 599, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 600, - 601, 602, 603, 604, 605, 606, 607, -285, -285, -285, - -285, -285, -285, -285, -285, -285, 608, 609, 610, 611, + 162, 163, 164, 165, 210, 212, 234, 235, 236, 237, + 239, 256, 257, 258, 259, 261, 262, 265, 266, 267, + 270, 273, 276, 286, 287, 290, 291, 292, 293, 295, + 296, 297, 302, 304, 318, 319, 320, 321, 322, 323, + 333, 334, 335, 337, 340, 341, 347, 349, 350, 351, + 353, 359, 365, 366, 367, 368, 369, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 494, 495, 496, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 510, 511, 512, 513, 514, 515, 516, 517, 519, 520, + 521, 522, 523, 524, 525, 526, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 552, + 553, 554, 556, 557, 558, 559, 560, 562, 563, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, 564, 565, 566, 567, 568, 569, + 570, 571, -286, -286, -286, -286, -286, -286, -286, -286, + -286, 572, 573, 574, 575, 576, 577, 578, -286, -286, + -286, -286, -286, -286, -286, -286, 579, 580, 581, 582, + 583, 584, 585, -286, -286, -286, -286, -286, -286, -286, + -286, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, 596, 597, 598, 599, 600, 601, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, 602, 603, 604, 605, 606, 607, 608, 609, -286, + -286, -286, -286, -286, -286, -286, -286, -286, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, 627, -285, -285, 628, -285, - -285, 629, 630, 631, 632, 633, 634, 635, 636, 637, - 638, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, 639, 640, 641, 642, 643, 644, -285, -285, - -285, -285, -285, -285, -285, 645, 646, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - 647, 648, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, 649, 650, 651, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, 652, 653, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 654, - 655, 656, 657, 658, 659, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - 660, -285, -285, -285, -285, -285, -285, -285, -285, -285, - 661, -285, -285, -285, -285, -285, 662, 663, 664, 665, - 666, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 667, - -285, -285, 668, 669, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, 670, 671, 672, - -285, -285, -285, -285, -285, -285, 673, 674, -285, -285, - -285, -285, -285, -285, -285, -285 + 622, 623, 624, 625, 626, 627, 628, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, 629, -286, -286, + 630, -286, -286, 631, 632, 633, 634, 635, 636, 637, + 638, 639, 640, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, 641, 642, 643, 644, 645, 646, + -286, -286, -286, -286, -286, -286, -286, 647, 648, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, 649, 650, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, 651, 652, 653, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, 654, + 655, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, 656, 657, 658, 659, 660, 661, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, 662, -286, -286, -286, -286, -286, -286, + -286, -286, -286, 663, -286, -286, -286, -286, -286, 664, + 665, 666, 667, 668, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, 669, -286, -286, 670, 671, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + 672, 673, 674, -286, -286, -286, -286, -286, -286, 675, + 676, -286, -286, -286, -286, -286, -286, -286, -286 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1732,10 +1736,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 255, 266, 580, 640, 599, - 276, 654, 677, 286, 693, 305, 645, 3, 17, 21, - 257, 268, 278, 288, 307, 582, 601, 642, 647, 656, - 679, 695, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 256, 267, 582, 642, 601, + 277, 656, 679, 287, 695, 306, 647, 3, 17, 21, + 258, 269, 279, 289, 308, 584, 603, 644, 649, 658, + 681, 697, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1759,168 +1763,168 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 22, - 23, 88, 91, 100, 254, 214, 215, 24, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 37, 79, - 25, 92, 93, 48, 72, 87, 251, 26, 27, 30, - 31, 28, 29, 32, 33, 34, 248, 249, 250, 35, - 36, 124, 226, 125, 127, 128, 129, 228, 233, 229, - 240, 241, 242, 243, 130, 131, 132, 133, 134, 135, - 136, 210, 89, 78, 104, 122, 123, 238, 235, 126, - 38, 39, 40, 41, 42, 80, 94, 95, 111, 66, - 76, 67, 218, 219, 105, 58, 59, 217, 62, 60, - 61, 63, 246, 115, 119, 140, 151, 182, 154, 239, - 116, 73, 43, 44, 45, 102, 141, 142, 143, 144, - 46, 47, 49, 50, 52, 53, 51, 148, 149, 155, - 54, 55, 56, 64, 83, 120, 97, 150, 90, 178, - 98, 99, 117, 118, 236, 103, 57, 81, 84, 191, - 65, 68, 106, 107, 108, 82, 179, 109, 69, 70, - 71, 227, 121, 201, 202, 203, 204, 205, 206, 207, - 208, 216, 110, 77, 247, 112, 113, 114, 180, 74, - 75, 96, 85, 86, 101, 137, 138, 237, 139, 145, - 146, 147, 183, 184, 186, 188, 189, 187, 190, 193, - 194, 195, 192, 211, 152, 153, 158, 159, 156, 157, - 160, 161, 163, 162, 165, 164, 166, 167, 230, 232, - 231, 181, 196, 197, 198, 199, 200, 220, 222, 221, - 223, 224, 225, 244, 245, 252, 253, 185, 209, 212, - 213, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 256, 258, 259, 260, 262, 263, 264, 265, 261, 0, - 0, 0, 0, 0, 0, 0, 267, 269, 270, 271, - 272, 273, 274, 275, 0, 0, 0, 0, 0, 0, - 0, 277, 279, 280, 283, 284, 281, 285, 282, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 289, 290, 291, 292, 296, 297, 298, 293, 294, 295, - 0, 0, 0, 0, 0, 0, 310, 314, 315, 316, - 317, 318, 306, 308, 309, 311, 312, 313, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 581, 583, 585, - 584, 590, 586, 587, 588, 589, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 22, 23, 88, 91, 100, 255, 215, 216, 24, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 37, + 79, 25, 92, 93, 48, 72, 87, 252, 26, 27, + 30, 31, 28, 29, 32, 33, 34, 249, 250, 251, + 35, 36, 124, 227, 125, 127, 128, 129, 229, 234, + 230, 241, 242, 243, 244, 130, 131, 132, 133, 134, + 135, 136, 211, 89, 78, 104, 122, 123, 239, 236, + 126, 38, 39, 40, 41, 42, 80, 94, 95, 111, + 66, 76, 67, 219, 220, 105, 58, 59, 218, 62, + 60, 61, 63, 247, 115, 119, 140, 151, 183, 154, + 240, 116, 73, 43, 44, 45, 102, 141, 142, 143, + 144, 46, 47, 49, 50, 52, 53, 51, 148, 149, + 155, 54, 55, 56, 64, 83, 120, 97, 150, 90, + 179, 98, 99, 117, 118, 237, 103, 57, 81, 84, + 192, 65, 68, 106, 107, 108, 82, 180, 109, 69, + 70, 71, 228, 121, 202, 203, 204, 205, 206, 207, + 208, 209, 217, 110, 77, 248, 112, 113, 114, 181, + 74, 75, 96, 85, 86, 101, 137, 138, 238, 139, + 145, 146, 147, 184, 185, 187, 189, 190, 188, 191, + 194, 195, 196, 193, 212, 152, 153, 158, 159, 156, + 157, 160, 161, 163, 162, 165, 164, 166, 167, 168, + 231, 233, 232, 182, 197, 198, 199, 200, 201, 221, + 223, 222, 224, 225, 226, 245, 246, 253, 254, 186, + 210, 213, 214, 235, 0, 0, 0, 0, 0, 0, + 0, 0, 257, 259, 260, 261, 263, 264, 265, 266, + 262, 0, 0, 0, 0, 0, 0, 0, 268, 270, + 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, + 0, 0, 0, 278, 280, 281, 284, 285, 282, 286, + 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 288, 290, 291, 292, 293, 297, 298, 299, 294, + 295, 296, 0, 0, 0, 0, 0, 0, 311, 315, + 316, 317, 318, 319, 307, 309, 310, 312, 313, 314, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 583, + 585, 587, 586, 592, 588, 589, 590, 591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 600, 602, 604, 603, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 0, 641, 643, 0, 646, - 648, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 655, 657, 658, 659, 661, 662, 660, 663, 664, - 665, 666, 0, 0, 0, 0, 0, 0, 678, 680, - 681, 682, 683, 684, 685, 0, 0, 694, 696, 697, - 321, 320, 328, 341, 339, 352, 348, 349, 353, 350, - 351, 354, 355, 356, 360, 361, 391, 392, 393, 394, - 395, 423, 424, 425, 431, 432, 344, 433, 434, 437, - 435, 436, 441, 442, 443, 457, 406, 407, 410, 411, - 444, 461, 400, 402, 462, 469, 470, 471, 345, 422, - 490, 491, 401, 484, 384, 340, 396, 458, 466, 445, - 0, 0, 494, 346, 322, 383, 449, 323, 342, 343, - 397, 398, 492, 447, 451, 452, 358, 357, 324, 495, - 426, 456, 385, 405, 463, 464, 465, 468, 483, 399, - 488, 486, 487, 414, 421, 453, 454, 415, 416, 446, - 473, 386, 387, 390, 362, 364, 359, 365, 366, 367, - 368, 375, 376, 377, 378, 379, 380, 381, 496, 497, - 499, 427, 428, 429, 430, 438, 439, 440, 500, 501, - 502, 0, 0, 0, 448, 417, 419, 650, 515, 519, - 517, 516, 520, 518, 527, 528, 0, 0, 523, 524, - 525, 526, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 450, 467, 489, 532, 533, 418, 503, 0, - 0, 0, 0, 0, 0, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 651, 408, 409, 412, 403, 472, - 382, 326, 327, 404, 534, 535, 536, 537, 538, 540, - 539, 541, 542, 543, 363, 370, 529, 531, 530, 369, - 0, 389, 455, 498, 388, 420, 371, 372, 374, 373, - 0, 545, 413, 485, 347, 546, 0, 0, 0, 0, - 0, 547, 325, 548, 549, 550, 555, 553, 554, 551, - 552, 556, 557, 558, 559, 561, 562, 560, 573, 0, - 577, 578, 0, 0, 579, 563, 571, 564, 565, 566, - 570, 572, 567, 568, 569, 299, 300, 301, 302, 303, - 304, 591, 593, 592, 595, 596, 597, 598, 594, 621, - 623, 624, 625, 626, 627, 628, 629, 630, 631, 622, - 632, 633, 634, 635, 636, 637, 638, 639, 644, 649, - 667, 668, 669, 672, 670, 671, 673, 674, 675, 676, - 686, 687, 688, 689, 690, 691, 698, 699, 459, 493, - 514, 652, 653, 521, 522, 504, 505, 0, 0, 0, - 509, 692, 544, 460, 513, 510, 0, 0, 574, 575, - 576, 508, 506, 507, 511, 512 + 0, 0, 0, 0, 0, 0, 0, 602, 604, 606, + 605, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 618, 619, 620, 621, 622, 0, 643, 645, + 0, 648, 650, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 657, 659, 660, 661, 663, 664, 662, + 665, 666, 667, 668, 0, 0, 0, 0, 0, 0, + 680, 682, 683, 684, 685, 686, 687, 0, 0, 696, + 698, 699, 322, 321, 329, 342, 340, 353, 349, 350, + 354, 351, 352, 355, 356, 357, 361, 362, 392, 393, + 394, 395, 396, 424, 425, 426, 432, 433, 345, 434, + 435, 438, 436, 437, 442, 443, 444, 458, 407, 408, + 411, 412, 445, 462, 401, 403, 463, 470, 471, 472, + 346, 423, 491, 492, 402, 485, 385, 341, 397, 459, + 467, 446, 0, 0, 495, 347, 323, 384, 450, 324, + 343, 344, 398, 399, 493, 448, 452, 453, 359, 358, + 325, 496, 427, 457, 386, 406, 464, 465, 466, 469, + 484, 400, 489, 487, 488, 415, 422, 454, 455, 416, + 417, 447, 474, 387, 388, 391, 363, 365, 360, 366, + 367, 368, 369, 376, 377, 378, 379, 380, 381, 382, + 497, 498, 500, 428, 429, 430, 431, 439, 440, 441, + 501, 502, 503, 0, 0, 0, 449, 418, 420, 652, + 516, 520, 518, 517, 521, 519, 528, 529, 530, 0, + 0, 524, 525, 526, 527, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 451, 468, 490, 534, 535, + 419, 504, 0, 0, 0, 0, 0, 0, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 653, 409, 410, + 413, 404, 473, 383, 327, 328, 405, 536, 537, 538, + 539, 540, 542, 541, 543, 544, 545, 364, 371, 531, + 533, 532, 370, 0, 390, 456, 499, 389, 421, 372, + 373, 375, 374, 0, 547, 414, 486, 348, 548, 0, + 0, 0, 0, 0, 549, 326, 550, 551, 552, 557, + 555, 556, 553, 554, 558, 559, 560, 561, 563, 564, + 562, 575, 0, 579, 580, 0, 0, 581, 565, 573, + 566, 567, 568, 572, 574, 569, 570, 571, 300, 301, + 302, 303, 304, 305, 593, 595, 594, 597, 598, 599, + 600, 596, 623, 625, 626, 627, 628, 629, 630, 631, + 632, 633, 624, 634, 635, 636, 637, 638, 639, 640, + 641, 646, 651, 669, 670, 671, 674, 672, 673, 675, + 676, 677, 678, 688, 689, 690, 691, 692, 693, 700, + 701, 460, 494, 515, 654, 655, 522, 523, 505, 506, + 0, 0, 0, 510, 694, 546, 461, 514, 511, 0, + 0, 576, 577, 578, 509, 507, 508, 512, 513 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, 675, 676, 677, 678, 679, -285, -285, 680, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285 + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, 677, 678, 679, 680, 681, -286, -286, 682, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 278, 20, 33, 520, - 21, 34, 536, 22, 35, 551, 23, 36, 569, 586, - 587, 588, 589, 590, 591, 24, 37, 592, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, - 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 521, 522, 523, 524, - 525, 526, 527, 528, 537, 538, 539, 540, 541, 542, - 543, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 552, 553, 554, 555, 556, 557, 558, 25, 38, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 26, - 39, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 27, 40, 656, 657, 28, 41, 659, 660, 507, - 508, 509, 510, 29, 42, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 30, 43, 688, 689, - 690, 691, 692, 693, 694, 511, 31, 44, 697, 698, - 699 + 0, 1, 17, 18, 19, 32, 279, 20, 33, 522, + 21, 34, 538, 22, 35, 553, 23, 36, 571, 588, + 589, 590, 591, 592, 593, 24, 37, 594, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 523, 524, 525, + 526, 527, 528, 529, 530, 539, 540, 541, 542, 543, + 544, 545, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 554, 555, 556, 557, 558, 559, 560, 25, + 38, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 26, 39, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 27, 40, 658, 659, 28, 41, 661, 662, + 509, 510, 511, 512, 29, 42, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 30, 43, 690, + 691, 692, 693, 694, 695, 696, 513, 31, 44, 699, + 700, 701 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1931,75 +1935,75 @@ static const yytype_int16 yytable[] = 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, 695, 696, 655, 658, 77, 78, 79, 700, - 701, 702, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 697, 698, 657, 660, 77, 78, 79, 702, + 703, 704, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 559, 682, 683, 684, 685, 686, 687, - 703, 704, 121, 122, 123, 124, 125, 544, 126, 127, - 128, 705, 706, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 561, 684, 685, 686, 687, 688, 689, + 705, 706, 121, 122, 123, 124, 125, 546, 126, 127, + 128, 707, 708, 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, 559, - 707, 708, 155, 545, 546, 156, 157, 158, 159, 160, - 161, 162, 709, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 710, 711, 712, 713, - 547, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 714, 715, 716, 717, 718, 176, 177, 178, 179, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 561, + 709, 710, 155, 547, 548, 156, 157, 158, 159, 160, + 161, 162, 711, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 712, 713, 714, 715, + 549, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 716, 717, 718, 719, 720, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 719, - 219, 720, 220, 221, 222, 223, 224, 225, 226, 227, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 721, 220, 722, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 721, 548, 549, 722, 723, 724, 512, 725, 513, - 514, 2, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 3, 4, 529, 726, 727, 728, 729, 249, - 730, 731, 530, 531, 732, 733, 734, 250, 251, 735, - 252, 253, 736, 254, 255, 737, 550, 256, 257, 258, - 259, 260, 261, 262, 263, 738, 739, 5, 264, 740, - 741, 742, 743, 6, 744, 745, 746, 265, 266, 267, - 268, 747, 515, 748, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 561, 562, 563, 564, 749, 750, 751, - 752, 753, 754, 566, 599, 600, 601, 602, 603, 604, - 605, 606, 755, 756, 757, 516, 758, 7, 517, 759, - 760, 580, 581, 582, 583, 584, 761, 518, 762, 763, - 764, 532, 765, 533, 585, 8, 534, 560, 766, 561, - 562, 563, 564, 565, 767, 768, 769, 770, 771, 566, - 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 772, - 773, 774, 775, 776, 777, 778, 779, 780, 567, 568, - 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, - 9, 791, 792, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, - 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, - 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, - 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, - 850, 851, 852, 10, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, - 869, 519, 870, 871, 872, 11, 873, 874, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 535, 884, 885, - 886, 887, 888, 889, 890, 891, 12, 892, 893, 894, - 895, 896, 897, 898, 899, 13, 900, 901, 902, 903, - 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 14, - 923, 924, 925, 15, 926, 927, 928, 929, 930, 16, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, - 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, - 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, - 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 1041, 1042, 1043, 1044, 1045, 0, 0, 0, 0, 0, + 238, 239, 550, 551, 723, 724, 725, 726, 514, 727, + 515, 516, 2, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 3, 4, 531, 728, 729, 730, 731, + 250, 732, 733, 532, 533, 734, 735, 736, 251, 252, + 737, 253, 254, 738, 255, 256, 739, 552, 257, 258, + 259, 260, 261, 262, 263, 264, 740, 741, 5, 265, + 742, 743, 744, 745, 6, 746, 747, 748, 266, 267, + 268, 269, 749, 517, 750, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 563, 564, 565, 566, 751, 752, + 753, 754, 755, 756, 568, 601, 602, 603, 604, 605, + 606, 607, 608, 757, 758, 759, 518, 760, 7, 519, + 761, 762, 582, 583, 584, 585, 586, 763, 520, 764, + 765, 766, 534, 767, 535, 587, 8, 536, 562, 768, + 563, 564, 565, 566, 567, 769, 770, 771, 772, 773, + 568, 618, 619, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, + 774, 775, 776, 777, 778, 779, 780, 781, 782, 569, + 570, 783, 784, 785, 786, 787, 788, 789, 790, 791, + 792, 9, 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, + 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, + 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, + 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, + 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, + 851, 852, 853, 854, 855, 10, 856, 857, 858, 859, + 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, + 870, 871, 872, 521, 873, 874, 875, 11, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, 886, 537, + 887, 888, 889, 890, 891, 892, 893, 894, 12, 895, + 896, 897, 898, 899, 900, 901, 902, 13, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 925, 14, 926, 927, 928, 15, 929, 930, 931, 932, + 933, 16, 934, 935, 936, 937, 938, 939, 940, 941, + 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, + 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, + 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, + 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, + 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, + 1042, 1043, 1044, 1045, 1046, 1047, 1048, 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, 593, 594, 595, 596, 597, 598 + 0, 0, 0, 0, 595, 596, 597, 598, 599, 600 }; static const yytype_int16 yycheck[] = @@ -2007,12 +2011,12 @@ static const yytype_int16 yycheck[] = 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 309, 310, 115, 319, 49, 50, 51, 10, + 43, 44, 310, 311, 115, 320, 49, 50, 51, 10, 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 45, 276, 277, 278, 279, 280, 281, + 93, 94, 95, 45, 277, 278, 279, 280, 281, 282, 10, 10, 105, 106, 107, 108, 109, 45, 111, 112, 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, @@ -2020,47 +2024,48 @@ static const yytype_int16 yycheck[] = 10, 10, 145, 81, 82, 148, 149, 150, 151, 152, 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 10, 10, 10, 10, - 108, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 10, 10, 10, 10, 10, 189, 190, 191, 192, + 108, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 10, 10, 10, 10, 10, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 10, - 233, 10, 235, 236, 237, 238, 239, 240, 241, 242, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 10, 234, 10, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 10, 190, 191, 10, 10, 10, 45, 10, 47, - 48, 0, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 11, 12, 45, 10, 10, 10, 10, 282, - 10, 10, 53, 54, 10, 10, 10, 290, 291, 10, - 293, 294, 10, 296, 297, 10, 234, 300, 301, 302, - 303, 304, 305, 306, 307, 10, 10, 46, 311, 10, - 10, 10, 10, 52, 10, 10, 10, 320, 321, 322, - 323, 10, 110, 10, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 285, 286, 287, 288, 10, 10, 10, - 10, 10, 10, 295, 97, 98, 99, 100, 101, 102, - 103, 104, 10, 10, 10, 143, 10, 96, 146, 10, - 10, 313, 314, 315, 316, 317, 10, 155, 10, 10, - 10, 142, 10, 144, 326, 114, 147, 283, 10, 285, - 286, 287, 288, 289, 10, 10, 10, 10, 10, 295, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 324, 325, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 169, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 253, 254, 190, 191, 10, 10, 10, 10, 45, 10, + 47, 48, 0, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 11, 12, 45, 10, 10, 10, 10, + 283, 10, 10, 53, 54, 10, 10, 10, 291, 292, + 10, 294, 295, 10, 297, 298, 10, 235, 301, 302, + 303, 304, 305, 306, 307, 308, 10, 10, 46, 312, + 10, 10, 10, 10, 52, 10, 10, 10, 321, 322, + 323, 324, 10, 110, 10, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 286, 287, 288, 289, 10, 10, + 10, 10, 10, 10, 296, 97, 98, 99, 100, 101, + 102, 103, 104, 10, 10, 10, 143, 10, 96, 146, + 10, 10, 314, 315, 316, 317, 318, 10, 155, 10, + 10, 10, 142, 10, 144, 327, 114, 147, 284, 10, + 286, 287, 288, 289, 290, 10, 10, 10, 10, 10, + 296, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 325, + 326, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 169, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 232, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 233, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 299, 10, 10, 10, 254, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 298, 10, 10, - 10, 10, 10, 10, 10, 10, 275, 10, 10, 10, - 10, 10, 10, 10, 10, 284, 10, 10, 10, 10, + 10, 10, 10, 300, 10, 10, 10, 255, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 299, + 10, 10, 10, 10, 10, 10, 10, 10, 276, 10, + 10, 10, 10, 10, 10, 10, 10, 285, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 308, - 10, 10, 10, 312, 10, 10, 10, 10, 10, 318, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 309, 10, 10, 10, 313, 10, 10, 10, 10, + 10, 319, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2071,22 +2076,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 37, 37, 37, 37, 37 + -1, -1, -1, -1, 37, 37, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 337, 0, 11, 12, 46, 52, 96, 114, 169, - 232, 254, 275, 284, 308, 312, 318, 338, 339, 340, - 343, 346, 349, 352, 361, 624, 635, 657, 661, 669, - 682, 692, 341, 344, 347, 350, 353, 362, 625, 636, - 658, 662, 670, 683, 693, 13, 14, 15, 16, 17, + 0, 338, 0, 11, 12, 46, 52, 96, 114, 169, + 233, 255, 276, 285, 309, 313, 319, 339, 340, 341, + 344, 347, 350, 353, 362, 626, 637, 659, 663, 671, + 684, 694, 342, 345, 348, 351, 354, 363, 627, 638, + 660, 664, 672, 685, 695, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2103,13 +2107,13 @@ static const yytype_int16 yystos[] = 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 233, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 282, - 290, 291, 293, 294, 296, 297, 300, 301, 302, 303, - 304, 305, 306, 307, 311, 320, 321, 322, 323, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 342, 364, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 283, 291, 292, 294, 295, 297, 298, 301, 302, 303, + 304, 305, 306, 307, 308, 312, 321, 322, 323, 324, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 343, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, @@ -2132,26 +2136,27 @@ static const yytype_int16 yystos[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 665, 666, 667, - 668, 691, 45, 47, 48, 110, 143, 146, 155, 299, - 345, 592, 593, 594, 595, 596, 597, 598, 599, 45, - 53, 54, 142, 144, 147, 298, 348, 600, 601, 602, - 603, 604, 605, 606, 45, 81, 82, 108, 190, 191, - 234, 351, 617, 618, 619, 620, 621, 622, 623, 45, - 283, 285, 286, 287, 288, 289, 295, 324, 325, 354, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, - 313, 314, 315, 316, 317, 326, 355, 356, 357, 358, - 359, 360, 363, 607, 608, 609, 610, 611, 614, 97, - 98, 99, 100, 101, 102, 103, 104, 626, 627, 628, - 629, 630, 631, 632, 633, 634, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 637, 638, 639, 640, 641, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 667, + 668, 669, 670, 693, 45, 47, 48, 110, 143, 146, + 155, 300, 346, 594, 595, 596, 597, 598, 599, 600, + 601, 45, 53, 54, 142, 144, 147, 299, 349, 602, + 603, 604, 605, 606, 607, 608, 45, 81, 82, 108, + 190, 191, 235, 352, 619, 620, 621, 622, 623, 624, + 625, 45, 284, 286, 287, 288, 289, 290, 296, 325, + 326, 355, 609, 610, 611, 612, 613, 614, 615, 616, + 617, 618, 314, 315, 316, 317, 318, 327, 356, 357, + 358, 359, 360, 361, 364, 609, 610, 611, 612, 613, + 616, 97, 98, 99, 100, 101, 102, 103, 104, 628, + 629, 630, 631, 632, 633, 634, 635, 636, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 115, 659, 660, 319, 663, - 664, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 276, 277, 278, 279, 280, 281, 684, 685, - 686, 687, 688, 689, 690, 309, 310, 694, 695, 696, + 652, 653, 654, 655, 656, 657, 658, 115, 661, 662, + 320, 665, 666, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 277, 278, 279, 280, 281, 282, + 686, 687, 688, 689, 690, 691, 692, 310, 311, 696, + 697, 698, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2185,45 +2190,44 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 336, 337, 337, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 338, 338, 339, 340, - 341, 341, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 343, 344, 344, 345, 345, - 345, 345, 345, 345, 345, 345, 346, 347, 347, 348, - 348, 348, 348, 348, 348, 348, 349, 350, 350, 351, - 351, 351, 351, 351, 351, 351, 352, 353, 353, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 362, 363, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, + 0, 337, 338, 338, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 340, 341, + 342, 342, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 344, 345, 345, 346, + 346, 346, 346, 346, 346, 346, 346, 347, 348, 348, + 349, 349, 349, 349, 349, 349, 349, 350, 351, 351, + 352, 352, 352, 352, 352, 352, 352, 353, 354, 354, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 363, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, @@ -2250,18 +2254,19 @@ static const yytype_int16 yyr1[] = 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 625, 626, 626, 626, 626, 626, 626, 626, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 636, 637, 637, 637, 637, 637, 637, 637, 637, - 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, - 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, + 624, 625, 626, 627, 627, 628, 628, 628, 628, 628, + 628, 628, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 638, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 658, 659, 660, 661, 662, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 670, 671, 671, 671, - 671, 671, 671, 671, 671, 671, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 680, 681, 682, 683, 683, - 684, 684, 684, 684, 684, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 693, 694, 694, 695, 696 + 657, 658, 659, 660, 660, 661, 662, 663, 664, 664, + 665, 666, 667, 668, 669, 670, 671, 672, 672, 673, + 673, 673, 673, 673, 673, 673, 673, 673, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, + 685, 685, 686, 686, 686, 686, 686, 686, 687, 688, + 689, 690, 691, 692, 693, 694, 695, 695, 696, 696, + 697, 698 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -2292,51 +2297,52 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, - 3, 4, 4, 3, 3, 2, 2, 2, 2, 2, - 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 2, 1, 2, 0, 1, 2, - 2, 2, 3, 3, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 3, 1, 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 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, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, + 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, + 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 2, 1, 2, 0, + 1, 2, 2, 2, 3, 3, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 3, 1, 2, 0, 1, 1, + 2, 2 }; @@ -2805,7 +2811,7 @@ yyreduce: OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2809 "util/configparser.c" +#line 2815 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ @@ -2814,11 +2820,11 @@ yyreduce: OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2818 "util/configparser.c" +#line 2824 "util/configparser.c" break; - case 255: /* stubstart: VAR_STUB_ZONE */ -#line 328 "./util/configparser.y" + case 256: /* stubstart: VAR_STUB_ZONE */ +#line 329 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2831,11 +2837,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2835 "util/configparser.c" +#line 2841 "util/configparser.c" break; - case 266: /* forwardstart: VAR_FORWARD_ZONE */ -#line 347 "./util/configparser.y" + case 267: /* forwardstart: VAR_FORWARD_ZONE */ +#line 348 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2848,11 +2854,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2852 "util/configparser.c" +#line 2858 "util/configparser.c" break; - case 276: /* viewstart: VAR_VIEW */ -#line 366 "./util/configparser.y" + case 277: /* viewstart: VAR_VIEW */ +#line 367 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2867,11 +2873,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2871 "util/configparser.c" +#line 2877 "util/configparser.c" break; - case 286: /* authstart: VAR_AUTH_ZONE */ -#line 387 "./util/configparser.y" + case 287: /* authstart: VAR_AUTH_ZONE */ +#line 388 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2891,11 +2897,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2895 "util/configparser.c" +#line 2901 "util/configparser.c" break; - case 299: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 415 "./util/configparser.y" + case 300: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 416 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2912,11 +2918,11 @@ yyreduce: } } -#line 2916 "util/configparser.c" +#line 2922 "util/configparser.c" break; - case 300: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 434 "./util/configparser.y" + case 301: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 435 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2931,21 +2937,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2935 "util/configparser.c" +#line 2941 "util/configparser.c" break; - case 301: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 451 "./util/configparser.y" + case 302: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 452 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2945 "util/configparser.c" +#line 2951 "util/configparser.c" break; - case 302: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 459 "./util/configparser.y" + case 303: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 460 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2953,21 +2959,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2957 "util/configparser.c" +#line 2963 "util/configparser.c" break; - case 303: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 469 "./util/configparser.y" + case 304: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 470 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2967 "util/configparser.c" +#line 2973 "util/configparser.c" break; - case 304: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ -#line 476 "./util/configparser.y" + case 305: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ +#line 477 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2975,11 +2981,11 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2979 "util/configparser.c" +#line 2985 "util/configparser.c" break; - case 305: /* rpzstart: VAR_RPZ */ -#line 486 "./util/configparser.y" + case 306: /* rpzstart: VAR_RPZ */ +#line 487 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2997,11 +3003,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3001 "util/configparser.c" +#line 3007 "util/configparser.c" break; - case 320: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 511 "./util/configparser.y" + case 321: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 512 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3009,11 +3015,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3013 "util/configparser.c" +#line 3019 "util/configparser.c" break; - case 321: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 520 "./util/configparser.y" + case 322: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 521 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3021,11 +3027,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3025 "util/configparser.c" +#line 3031 "util/configparser.c" break; - case 322: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 529 "./util/configparser.y" + case 323: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 530 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3035,11 +3041,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3039 "util/configparser.c" +#line 3045 "util/configparser.c" break; - case 323: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 540 "./util/configparser.y" + case 324: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 541 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3047,11 +3053,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3051 "util/configparser.c" +#line 3057 "util/configparser.c" break; - case 324: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 549 "./util/configparser.y" + case 325: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 550 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3059,11 +3065,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3063 "util/configparser.c" +#line 3069 "util/configparser.c" break; - case 325: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ -#line 558 "./util/configparser.y" + case 326: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ +#line 559 "./util/configparser.y" { OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3071,11 +3077,11 @@ yyreduce: else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3075 "util/configparser.c" +#line 3081 "util/configparser.c" break; - case 326: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 567 "./util/configparser.y" + case 327: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 568 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3083,11 +3089,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3087 "util/configparser.c" +#line 3093 "util/configparser.c" break; - case 327: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 576 "./util/configparser.y" + case 328: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 577 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3097,11 +3103,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3101 "util/configparser.c" +#line 3107 "util/configparser.c" break; - case 328: /* server_port: VAR_PORT STRING_ARG */ -#line 587 "./util/configparser.y" + case 329: /* server_port: VAR_PORT STRING_ARG */ +#line 588 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3109,11 +3115,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3113 "util/configparser.c" +#line 3119 "util/configparser.c" break; - case 329: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 596 "./util/configparser.y" + case 330: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 597 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3124,11 +3130,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3128 "util/configparser.c" +#line 3134 "util/configparser.c" break; - case 330: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 608 "./util/configparser.y" + case 331: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 609 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3140,11 +3146,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3144 "util/configparser.c" +#line 3150 "util/configparser.c" break; - case 331: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 622 "./util/configparser.y" + case 332: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 623 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3158,11 +3164,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3162 "util/configparser.c" +#line 3168 "util/configparser.c" break; - case 332: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 637 "./util/configparser.y" + case 333: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 638 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3172,11 +3178,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3176 "util/configparser.c" +#line 3182 "util/configparser.c" break; - case 333: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 648 "./util/configparser.y" + case 334: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 649 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3192,11 +3198,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3196 "util/configparser.c" +#line 3202 "util/configparser.c" break; - case 334: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 665 "./util/configparser.y" + case 335: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 666 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3212,11 +3218,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3216 "util/configparser.c" +#line 3222 "util/configparser.c" break; - case 335: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 682 "./util/configparser.y" + case 336: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 683 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3232,11 +3238,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3236 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 336: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 699 "./util/configparser.y" + case 337: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 700 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3252,11 +3258,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3256 "util/configparser.c" +#line 3262 "util/configparser.c" break; - case 337: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 716 "./util/configparser.y" + case 338: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 717 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3270,11 +3276,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3280 "util/configparser.c" break; - case 338: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 731 "./util/configparser.y" + case 339: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 732 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3288,11 +3294,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3292 "util/configparser.c" +#line 3298 "util/configparser.c" break; - case 339: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 746 "./util/configparser.y" + case 340: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 747 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3304,11 +3310,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3308 "util/configparser.c" +#line 3314 "util/configparser.c" break; - case 340: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 759 "./util/configparser.y" + case 341: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 760 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3322,11 +3328,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3326 "util/configparser.c" +#line 3332 "util/configparser.c" break; - case 341: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 774 "./util/configparser.y" + case 342: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 775 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3334,11 +3340,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3338 "util/configparser.c" +#line 3344 "util/configparser.c" break; - case 342: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 783 "./util/configparser.y" + case 343: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 784 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3346,11 +3352,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3350 "util/configparser.c" +#line 3356 "util/configparser.c" break; - case 343: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 792 "./util/configparser.y" + case 344: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 793 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3358,11 +3364,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3362 "util/configparser.c" +#line 3368 "util/configparser.c" break; - case 344: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 801 "./util/configparser.y" + case 345: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 802 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3370,11 +3376,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 3380 "util/configparser.c" break; - case 345: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 810 "./util/configparser.y" + case 346: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 811 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3382,11 +3388,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3392 "util/configparser.c" break; - case 346: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 819 "./util/configparser.y" + case 347: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 820 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3394,21 +3400,21 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3398 "util/configparser.c" +#line 3404 "util/configparser.c" break; - case 347: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ -#line 828 "./util/configparser.y" + case 348: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ +#line 829 "./util/configparser.y" { OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3408 "util/configparser.c" +#line 3414 "util/configparser.c" break; - case 348: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 835 "./util/configparser.y" + case 349: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 836 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3416,11 +3422,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3420 "util/configparser.c" +#line 3426 "util/configparser.c" break; - case 349: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 844 "./util/configparser.y" + case 350: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 845 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3428,11 +3434,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3432 "util/configparser.c" +#line 3438 "util/configparser.c" break; - case 350: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 853 "./util/configparser.y" + case 351: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 854 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3440,11 +3446,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3444 "util/configparser.c" +#line 3450 "util/configparser.c" break; - case 351: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 862 "./util/configparser.y" + case 352: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 863 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3452,11 +3458,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3456 "util/configparser.c" +#line 3462 "util/configparser.c" break; - case 352: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 871 "./util/configparser.y" + case 353: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 872 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3464,11 +3470,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3468 "util/configparser.c" +#line 3474 "util/configparser.c" break; - case 353: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 880 "./util/configparser.y" + case 354: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 881 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3476,11 +3482,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3480 "util/configparser.c" +#line 3486 "util/configparser.c" break; - case 354: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 889 "./util/configparser.y" + case 355: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 890 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3488,11 +3494,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" +#line 3498 "util/configparser.c" break; - case 355: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 898 "./util/configparser.y" + case 356: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 899 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3500,11 +3506,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3504 "util/configparser.c" +#line 3510 "util/configparser.c" break; - case 356: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 907 "./util/configparser.y" + case 357: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 908 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3516,11 +3522,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3520 "util/configparser.c" +#line 3526 "util/configparser.c" break; - case 357: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 920 "./util/configparser.y" + case 358: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 921 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3530,11 +3536,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3534 "util/configparser.c" +#line 3540 "util/configparser.c" break; - case 358: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 931 "./util/configparser.y" + case 359: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 932 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3544,11 +3550,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3548 "util/configparser.c" +#line 3554 "util/configparser.c" break; - case 359: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 942 "./util/configparser.y" + case 360: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 943 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3558,11 +3564,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3562 "util/configparser.c" +#line 3568 "util/configparser.c" break; - case 360: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 953 "./util/configparser.y" + case 361: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 954 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3570,11 +3576,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3574 "util/configparser.c" +#line 3580 "util/configparser.c" break; - case 361: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 962 "./util/configparser.y" + case 362: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 963 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3586,11 +3592,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3590 "util/configparser.c" +#line 3596 "util/configparser.c" break; - case 362: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 975 "./util/configparser.y" + case 363: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 976 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3598,11 +3604,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3602 "util/configparser.c" +#line 3608 "util/configparser.c" break; - case 363: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 984 "./util/configparser.y" + case 364: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 985 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3610,11 +3616,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3614 "util/configparser.c" +#line 3620 "util/configparser.c" break; - case 364: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 993 "./util/configparser.y" + case 365: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 994 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3622,31 +3628,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3626 "util/configparser.c" +#line 3632 "util/configparser.c" break; - case 365: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 1002 "./util/configparser.y" + case 366: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 1003 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3636 "util/configparser.c" +#line 3642 "util/configparser.c" break; - case 366: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 1009 "./util/configparser.y" + case 367: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 1010 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3646 "util/configparser.c" +#line 3652 "util/configparser.c" break; - case 367: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 1016 "./util/configparser.y" + case 368: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 1017 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3654,21 +3660,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3658 "util/configparser.c" +#line 3664 "util/configparser.c" break; - case 368: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 1025 "./util/configparser.y" + case 369: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 1026 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3668 "util/configparser.c" +#line 3674 "util/configparser.c" break; - case 369: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1032 "./util/configparser.y" + case 370: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 1033 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3676,53 +3682,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3680 "util/configparser.c" +#line 3686 "util/configparser.c" break; - case 370: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1041 "./util/configparser.y" + case 371: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 1042 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3691 "util/configparser.c" +#line 3697 "util/configparser.c" break; - case 371: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1049 "./util/configparser.y" + case 372: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 1050 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3701 "util/configparser.c" +#line 3707 "util/configparser.c" break; - case 372: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1056 "./util/configparser.y" + case 373: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1057 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3711 "util/configparser.c" +#line 3717 "util/configparser.c" break; - case 373: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1063 "./util/configparser.y" + case 374: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1064 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3722 "util/configparser.c" +#line 3728 "util/configparser.c" break; - case 374: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1071 "./util/configparser.y" + case 375: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1072 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3730,11 +3736,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3734 "util/configparser.c" +#line 3740 "util/configparser.c" break; - case 375: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1080 "./util/configparser.y" + case 376: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1081 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3742,11 +3748,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3752 "util/configparser.c" break; - case 376: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1088 "./util/configparser.y" + case 377: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1089 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3762,11 +3768,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3766 "util/configparser.c" +#line 3772 "util/configparser.c" break; - case 377: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1104 "./util/configparser.y" + case 378: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1105 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3774,11 +3780,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3778 "util/configparser.c" +#line 3784 "util/configparser.c" break; - case 378: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1112 "./util/configparser.y" + case 379: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1113 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3786,11 +3792,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3790 "util/configparser.c" +#line 3796 "util/configparser.c" break; - case 379: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1120 "./util/configparser.y" + case 380: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1121 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3798,11 +3804,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3802 "util/configparser.c" +#line 3808 "util/configparser.c" break; - case 380: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1128 "./util/configparser.y" + case 381: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1129 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3810,11 +3816,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3814 "util/configparser.c" +#line 3820 "util/configparser.c" break; - case 381: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1136 "./util/configparser.y" + case 382: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1137 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3822,11 +3828,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3826 "util/configparser.c" +#line 3832 "util/configparser.c" break; - case 382: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1144 "./util/configparser.y" + case 383: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1145 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3834,11 +3840,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3838 "util/configparser.c" +#line 3844 "util/configparser.c" break; - case 383: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1153 "./util/configparser.y" + case 384: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1154 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3846,11 +3852,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3850 "util/configparser.c" +#line 3856 "util/configparser.c" break; - case 384: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1162 "./util/configparser.y" + case 385: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1163 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3863,11 +3869,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3867 "util/configparser.c" +#line 3873 "util/configparser.c" break; - case 385: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1176 "./util/configparser.y" + case 386: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1177 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3875,11 +3881,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3879 "util/configparser.c" +#line 3885 "util/configparser.c" break; - case 386: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1185 "./util/configparser.y" + case 387: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1186 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3887,11 +3893,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3891 "util/configparser.c" +#line 3897 "util/configparser.c" break; - case 387: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1194 "./util/configparser.y" + case 388: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1195 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3899,11 +3905,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3909 "util/configparser.c" break; - case 388: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1203 "./util/configparser.y" + case 389: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1204 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3911,11 +3917,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3915 "util/configparser.c" +#line 3921 "util/configparser.c" break; - case 389: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1212 "./util/configparser.y" + case 390: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1213 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3923,11 +3929,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3927 "util/configparser.c" +#line 3933 "util/configparser.c" break; - case 390: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1221 "./util/configparser.y" + case 391: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1222 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3935,31 +3941,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3939 "util/configparser.c" +#line 3945 "util/configparser.c" break; - case 391: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1230 "./util/configparser.y" + case 392: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1231 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3949 "util/configparser.c" +#line 3955 "util/configparser.c" break; - case 392: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1237 "./util/configparser.y" + case 393: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1238 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3959 "util/configparser.c" +#line 3965 "util/configparser.c" break; - case 393: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1244 "./util/configparser.y" + case 394: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1245 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3984,105 +3990,105 @@ yyreduce: } } } -#line 3988 "util/configparser.c" +#line 3994 "util/configparser.c" break; - case 394: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1270 "./util/configparser.y" + case 395: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1271 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3999 "util/configparser.c" +#line 4005 "util/configparser.c" break; - case 395: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1278 "./util/configparser.y" + case 396: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1279 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4009 "util/configparser.c" +#line 4015 "util/configparser.c" break; - case 396: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1285 "./util/configparser.y" + case 397: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1286 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4019 "util/configparser.c" +#line 4025 "util/configparser.c" break; - case 397: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1292 "./util/configparser.y" + case 398: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1293 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4029 "util/configparser.c" +#line 4035 "util/configparser.c" break; - case 398: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1299 "./util/configparser.y" + case 399: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1300 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4039 "util/configparser.c" +#line 4045 "util/configparser.c" break; - case 399: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1306 "./util/configparser.y" + case 400: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1307 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4050 "util/configparser.c" +#line 4056 "util/configparser.c" break; - case 400: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1314 "./util/configparser.y" + case 401: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1315 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4061 "util/configparser.c" +#line 4067 "util/configparser.c" break; - case 401: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1322 "./util/configparser.y" + case 402: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1323 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4072 "util/configparser.c" +#line 4078 "util/configparser.c" break; - case 402: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1330 "./util/configparser.y" + case 403: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1331 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4082 "util/configparser.c" +#line 4088 "util/configparser.c" break; - case 403: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1337 "./util/configparser.y" + case 404: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1338 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4092,11 +4098,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4096 "util/configparser.c" +#line 4102 "util/configparser.c" break; - case 404: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1348 "./util/configparser.y" + case 405: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1349 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4106,21 +4112,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4110 "util/configparser.c" +#line 4116 "util/configparser.c" break; - case 405: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1359 "./util/configparser.y" + case 406: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1360 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4120 "util/configparser.c" +#line 4126 "util/configparser.c" break; - case 406: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1366 "./util/configparser.y" + case 407: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1367 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4128,11 +4134,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4132 "util/configparser.c" +#line 4138 "util/configparser.c" break; - case 407: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1375 "./util/configparser.y" + case 408: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1376 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4140,11 +4146,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4144 "util/configparser.c" +#line 4150 "util/configparser.c" break; - case 408: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1384 "./util/configparser.y" + case 409: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1385 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4152,11 +4158,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4156 "util/configparser.c" +#line 4162 "util/configparser.c" break; - case 409: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1393 "./util/configparser.y" + case 410: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1394 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4164,41 +4170,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4168 "util/configparser.c" +#line 4174 "util/configparser.c" break; - case 410: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1402 "./util/configparser.y" + case 411: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1403 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4178 "util/configparser.c" +#line 4184 "util/configparser.c" break; - case 411: /* server_version: VAR_VERSION STRING_ARG */ -#line 1409 "./util/configparser.y" + case 412: /* server_version: VAR_VERSION STRING_ARG */ +#line 1410 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4188 "util/configparser.c" +#line 4194 "util/configparser.c" break; - case 412: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1416 "./util/configparser.y" + case 413: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1417 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4198 "util/configparser.c" +#line 4204 "util/configparser.c" break; - case 413: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1423 "./util/configparser.y" + case 414: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1424 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4213,33 +4219,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4217 "util/configparser.c" +#line 4223 "util/configparser.c" break; - case 414: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1439 "./util/configparser.y" + case 415: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1440 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 4234 "util/configparser.c" break; - case 415: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1447 "./util/configparser.y" + case 416: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1448 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4239 "util/configparser.c" +#line 4245 "util/configparser.c" break; - case 416: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1455 "./util/configparser.y" + case 417: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1456 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4248,11 +4254,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4252 "util/configparser.c" +#line 4258 "util/configparser.c" break; - case 417: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1465 "./util/configparser.y" + case 418: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1466 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4261,11 +4267,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4265 "util/configparser.c" +#line 4271 "util/configparser.c" break; - case 418: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1475 "./util/configparser.y" + case 419: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1476 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4274,11 +4280,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4284 "util/configparser.c" break; - case 419: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1485 "./util/configparser.y" + case 420: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1486 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4291,22 +4297,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4295 "util/configparser.c" +#line 4301 "util/configparser.c" break; - case 420: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1499 "./util/configparser.y" + case 421: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1500 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4312 "util/configparser.c" break; - case 421: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1507 "./util/configparser.y" + case 422: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1508 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4318,11 +4324,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4322 "util/configparser.c" +#line 4328 "util/configparser.c" break; - case 422: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1520 "./util/configparser.y" + case 423: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1521 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4332,22 +4338,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4336 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 423: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1531 "./util/configparser.y" + case 424: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1532 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4347 "util/configparser.c" +#line 4353 "util/configparser.c" break; - case 424: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1539 "./util/configparser.y" + case 425: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1540 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4359,11 +4365,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4363 "util/configparser.c" +#line 4369 "util/configparser.c" break; - case 425: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1552 "./util/configparser.y" + case 426: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1553 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4371,11 +4377,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4375 "util/configparser.c" +#line 4381 "util/configparser.c" break; - case 426: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1561 "./util/configparser.y" + case 427: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1562 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4383,11 +4389,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4387 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 427: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1570 "./util/configparser.y" + case 428: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1571 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4395,11 +4401,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4405 "util/configparser.c" break; - case 428: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1579 "./util/configparser.y" + case 429: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1580 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4407,11 +4413,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4411 "util/configparser.c" +#line 4417 "util/configparser.c" break; - case 429: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1588 "./util/configparser.y" + case 430: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1589 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4420,11 +4426,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4424 "util/configparser.c" +#line 4430 "util/configparser.c" break; - case 430: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1598 "./util/configparser.y" + case 431: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1599 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4433,22 +4439,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4437 "util/configparser.c" +#line 4443 "util/configparser.c" break; - case 431: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1608 "./util/configparser.y" + case 432: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1609 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4448 "util/configparser.c" +#line 4454 "util/configparser.c" break; - case 432: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1616 "./util/configparser.y" + case 433: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1617 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4460,11 +4466,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 4470 "util/configparser.c" break; - case 433: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1629 "./util/configparser.y" + case 434: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1630 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4472,22 +4478,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4476 "util/configparser.c" +#line 4482 "util/configparser.c" break; - case 434: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1638 "./util/configparser.y" + case 435: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1639 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4487 "util/configparser.c" +#line 4493 "util/configparser.c" break; - case 435: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1646 "./util/configparser.y" + case 436: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1647 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4495,22 +4501,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4499 "util/configparser.c" +#line 4505 "util/configparser.c" break; - case 436: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1655 "./util/configparser.y" + case 437: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1656 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4510 "util/configparser.c" +#line 4516 "util/configparser.c" break; - case 437: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1663 "./util/configparser.y" + case 438: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1664 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4522,11 +4528,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4526 "util/configparser.c" +#line 4532 "util/configparser.c" break; - case 438: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1676 "./util/configparser.y" + case 439: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1677 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4534,11 +4540,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4538 "util/configparser.c" +#line 4544 "util/configparser.c" break; - case 439: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ -#line 1685 "./util/configparser.y" + case 440: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ +#line 1686 "./util/configparser.y" { OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4546,11 +4552,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4550 "util/configparser.c" +#line 4556 "util/configparser.c" break; - case 440: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1694 "./util/configparser.y" + case 441: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1695 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4559,21 +4565,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4563 "util/configparser.c" +#line 4569 "util/configparser.c" break; - case 441: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1704 "./util/configparser.y" + case 442: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1705 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4573 "util/configparser.c" +#line 4579 "util/configparser.c" break; - case 442: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1711 "./util/configparser.y" + case 443: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1712 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4582,11 +4588,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4586 "util/configparser.c" +#line 4592 "util/configparser.c" break; - case 443: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1721 "./util/configparser.y" + case 444: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1722 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4595,11 +4601,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4599 "util/configparser.c" +#line 4605 "util/configparser.c" break; - case 444: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1731 "./util/configparser.y" + case 445: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1732 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4608,11 +4614,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4612 "util/configparser.c" +#line 4618 "util/configparser.c" break; - case 445: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1741 "./util/configparser.y" + case 446: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1742 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4621,11 +4627,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4631 "util/configparser.c" break; - case 446: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1751 "./util/configparser.y" + case 447: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1752 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4634,11 +4640,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4638 "util/configparser.c" +#line 4644 "util/configparser.c" break; - case 447: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1761 "./util/configparser.y" + case 448: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1762 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4647,11 +4653,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4651 "util/configparser.c" +#line 4657 "util/configparser.c" break; - case 448: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1771 "./util/configparser.y" + case 449: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1772 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4660,11 +4666,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4664 "util/configparser.c" +#line 4670 "util/configparser.c" break; - case 449: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1781 "./util/configparser.y" + case 450: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1782 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4673,41 +4679,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4677 "util/configparser.c" +#line 4683 "util/configparser.c" break; - case 450: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1791 "./util/configparser.y" + case 451: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1792 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4687 "util/configparser.c" +#line 4693 "util/configparser.c" break; - case 451: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1798 "./util/configparser.y" + case 452: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1799 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4697 "util/configparser.c" +#line 4703 "util/configparser.c" break; - case 452: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1805 "./util/configparser.y" + case 453: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1806 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4707 "util/configparser.c" +#line 4713 "util/configparser.c" break; - case 453: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1812 "./util/configparser.y" + case 454: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1813 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4715,11 +4721,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4719 "util/configparser.c" +#line 4725 "util/configparser.c" break; - case 454: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1821 "./util/configparser.y" + case 455: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1822 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4727,11 +4733,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4731 "util/configparser.c" +#line 4737 "util/configparser.c" break; - case 455: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1830 "./util/configparser.y" + case 456: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1831 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4739,11 +4745,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4743 "util/configparser.c" +#line 4749 "util/configparser.c" break; - case 456: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1839 "./util/configparser.y" + case 457: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1840 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4751,21 +4757,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4755 "util/configparser.c" +#line 4761 "util/configparser.c" break; - case 457: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1848 "./util/configparser.y" + case 458: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1849 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4765 "util/configparser.c" +#line 4771 "util/configparser.c" break; - case 458: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1855 "./util/configparser.y" + case 459: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1856 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4774,22 +4780,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4778 "util/configparser.c" +#line 4784 "util/configparser.c" break; - case 459: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1865 "./util/configparser.y" + case 460: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1866 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_acl_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4789 "util/configparser.c" +#line 4795 "util/configparser.c" break; - case 460: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ -#line 1873 "./util/configparser.y" + case 461: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ +#line 1874 "./util/configparser.y" { OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_acl_action((yyvsp[0].str)); @@ -4797,21 +4803,21 @@ yyreduce: &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4801 "util/configparser.c" +#line 4807 "util/configparser.c" break; - case 461: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1882 "./util/configparser.y" + case 462: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1883 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4811 "util/configparser.c" +#line 4817 "util/configparser.c" break; - case 462: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1889 "./util/configparser.y" + case 463: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1890 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4828,11 +4834,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4832 "util/configparser.c" +#line 4838 "util/configparser.c" break; - case 463: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1907 "./util/configparser.y" + case 464: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1908 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4844,11 +4850,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4848 "util/configparser.c" +#line 4854 "util/configparser.c" break; - case 464: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1920 "./util/configparser.y" + case 465: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1921 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4860,11 +4866,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4864 "util/configparser.c" +#line 4870 "util/configparser.c" break; - case 465: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1933 "./util/configparser.y" + case 466: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1934 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4876,11 +4882,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4880 "util/configparser.c" +#line 4886 "util/configparser.c" break; - case 466: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1946 "./util/configparser.y" + case 467: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1947 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4888,11 +4894,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4898 "util/configparser.c" break; - case 467: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1955 "./util/configparser.y" + case 468: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1956 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4900,11 +4906,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4904 "util/configparser.c" +#line 4910 "util/configparser.c" break; - case 468: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1964 "./util/configparser.y" + case 469: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1965 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4912,11 +4918,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4916 "util/configparser.c" +#line 4922 "util/configparser.c" break; - case 469: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1973 "./util/configparser.y" + case 470: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1974 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4924,11 +4930,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4928 "util/configparser.c" +#line 4934 "util/configparser.c" break; - case 470: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1982 "./util/configparser.y" + case 471: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1983 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4937,11 +4943,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4941 "util/configparser.c" +#line 4947 "util/configparser.c" break; - case 471: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1992 "./util/configparser.y" + case 472: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1993 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4950,11 +4956,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 472: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 2002 "./util/configparser.y" + case 473: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 2003 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4964,11 +4970,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4968 "util/configparser.c" +#line 4974 "util/configparser.c" break; - case 473: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 2013 "./util/configparser.y" + case 474: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 2014 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4976,11 +4982,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" +#line 4986 "util/configparser.c" break; - case 474: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 2022 "./util/configparser.y" + case 475: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 2023 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4988,11 +4994,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" +#line 4998 "util/configparser.c" break; - case 475: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 2031 "./util/configparser.y" + case 476: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 2032 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5000,11 +5006,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5004 "util/configparser.c" +#line 5010 "util/configparser.c" break; - case 476: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2040 "./util/configparser.y" + case 477: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 2041 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5012,11 +5018,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5016 "util/configparser.c" +#line 5022 "util/configparser.c" break; - case 477: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2049 "./util/configparser.y" + case 478: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 2050 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5024,11 +5030,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5028 "util/configparser.c" +#line 5034 "util/configparser.c" break; - case 478: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2058 "./util/configparser.y" + case 479: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2059 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5036,11 +5042,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5040 "util/configparser.c" +#line 5046 "util/configparser.c" break; - case 479: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ -#line 2067 "./util/configparser.y" + case 480: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ +#line 2068 "./util/configparser.y" { OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5048,11 +5054,11 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5052 "util/configparser.c" +#line 5058 "util/configparser.c" break; - case 480: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2076 "./util/configparser.y" + case 481: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2077 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5060,11 +5066,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5064 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 481: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2085 "./util/configparser.y" + case 482: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2086 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5076,11 +5082,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5080 "util/configparser.c" +#line 5086 "util/configparser.c" break; - case 482: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2098 "./util/configparser.y" + case 483: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2099 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5092,11 +5098,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5096 "util/configparser.c" +#line 5102 "util/configparser.c" break; - case 483: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2111 "./util/configparser.y" + case 484: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2112 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5104,21 +5110,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5108 "util/configparser.c" +#line 5114 "util/configparser.c" break; - case 484: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2120 "./util/configparser.y" + case 485: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2121 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5118 "util/configparser.c" +#line 5124 "util/configparser.c" break; - case 485: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2127 "./util/configparser.y" + case 486: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2128 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5126,11 +5132,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5130 "util/configparser.c" +#line 5136 "util/configparser.c" break; - case 486: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2136 "./util/configparser.y" + case 487: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2137 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5138,11 +5144,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5142 "util/configparser.c" +#line 5148 "util/configparser.c" break; - case 487: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2145 "./util/configparser.y" + case 488: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2146 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5150,11 +5156,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5154 "util/configparser.c" +#line 5160 "util/configparser.c" break; - case 488: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2154 "./util/configparser.y" + case 489: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2155 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5162,11 +5168,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5172 "util/configparser.c" break; - case 489: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2163 "./util/configparser.y" + case 490: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2164 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5175,22 +5181,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5179 "util/configparser.c" +#line 5185 "util/configparser.c" break; - case 490: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2172 "./util/configparser.y" + case 491: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2173 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5190 "util/configparser.c" +#line 5196 "util/configparser.c" break; - case 491: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2180 "./util/configparser.y" + case 492: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2181 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5202,22 +5208,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5206 "util/configparser.c" +#line 5212 "util/configparser.c" break; - case 492: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2193 "./util/configparser.y" + case 493: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2194 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5217 "util/configparser.c" +#line 5223 "util/configparser.c" break; - case 493: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2201 "./util/configparser.y" + case 494: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2202 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5271,21 +5277,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5275 "util/configparser.c" +#line 5281 "util/configparser.c" break; - case 494: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2256 "./util/configparser.y" + case 495: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2257 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5285 "util/configparser.c" +#line 5291 "util/configparser.c" break; - case 495: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2263 "./util/configparser.y" + case 496: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2264 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5299,11 +5305,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5303 "util/configparser.c" +#line 5309 "util/configparser.c" break; - case 496: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2278 "./util/configparser.y" + case 497: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2279 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5312,11 +5318,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5316 "util/configparser.c" +#line 5322 "util/configparser.c" break; - case 497: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2288 "./util/configparser.y" + case 498: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2289 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5325,41 +5331,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5329 "util/configparser.c" +#line 5335 "util/configparser.c" break; - case 498: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2298 "./util/configparser.y" + case 499: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2299 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5339 "util/configparser.c" +#line 5345 "util/configparser.c" break; - case 499: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2305 "./util/configparser.y" + case 500: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2306 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5355 "util/configparser.c" break; - case 500: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2312 "./util/configparser.y" + case 501: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2313 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5359 "util/configparser.c" +#line 5365 "util/configparser.c" break; - case 501: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2319 "./util/configparser.y" + case 502: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2320 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5367,22 +5373,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5371 "util/configparser.c" +#line 5377 "util/configparser.c" break; - case 502: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2328 "./util/configparser.y" + case 503: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2329 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5382 "util/configparser.c" +#line 5388 "util/configparser.c" break; - case 503: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2336 "./util/configparser.y" + case 504: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2337 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5395,11 +5401,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5399 "util/configparser.c" +#line 5405 "util/configparser.c" break; - case 504: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2350 "./util/configparser.y" + case 505: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2351 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5419,11 +5425,11 @@ yyreduce: } } } -#line 5423 "util/configparser.c" +#line 5429 "util/configparser.c" break; - case 505: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2371 "./util/configparser.y" + case 506: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2372 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5443,11 +5449,11 @@ yyreduce: } } } -#line 5447 "util/configparser.c" +#line 5453 "util/configparser.c" break; - case 506: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2392 "./util/configparser.y" + case 507: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2393 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5458,11 +5464,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5462 "util/configparser.c" +#line 5468 "util/configparser.c" break; - case 507: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2404 "./util/configparser.y" + case 508: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2405 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5473,11 +5479,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5477 "util/configparser.c" +#line 5483 "util/configparser.c" break; - case 508: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2416 "./util/configparser.y" + case 509: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2417 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5488,11 +5494,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5492 "util/configparser.c" +#line 5498 "util/configparser.c" break; - case 509: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2428 "./util/configparser.y" + case 510: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2429 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5500,11 +5506,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5504 "util/configparser.c" +#line 5510 "util/configparser.c" break; - case 510: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ -#line 2437 "./util/configparser.y" + case 511: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ +#line 2438 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5524,11 +5530,11 @@ yyreduce: } } } -#line 5528 "util/configparser.c" +#line 5534 "util/configparser.c" break; - case 511: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2458 "./util/configparser.y" + case 512: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2459 "./util/configparser.y" { OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, @@ -5539,11 +5545,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5543 "util/configparser.c" +#line 5549 "util/configparser.c" break; - case 512: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2470 "./util/configparser.y" + case 513: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2471 "./util/configparser.y" { OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, @@ -5554,11 +5560,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5558 "util/configparser.c" +#line 5564 "util/configparser.c" break; - case 513: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ -#line 2482 "./util/configparser.y" + case 514: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ +#line 2483 "./util/configparser.y" { OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, @@ -5566,11 +5572,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5570 "util/configparser.c" +#line 5576 "util/configparser.c" break; - case 514: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2491 "./util/configparser.y" + case 515: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2492 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5590,11 +5596,11 @@ yyreduce: } } } -#line 5594 "util/configparser.c" +#line 5600 "util/configparser.c" break; - case 515: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2512 "./util/configparser.y" + case 516: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2513 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5602,11 +5608,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5606 "util/configparser.c" +#line 5612 "util/configparser.c" break; - case 516: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2521 "./util/configparser.y" + case 517: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2522 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5614,33 +5620,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5618 "util/configparser.c" +#line 5624 "util/configparser.c" break; - case 517: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2530 "./util/configparser.y" + case 518: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2531 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5629 "util/configparser.c" +#line 5635 "util/configparser.c" break; - case 518: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2538 "./util/configparser.y" + case 519: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2539 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5640 "util/configparser.c" +#line 5646 "util/configparser.c" break; - case 519: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2546 "./util/configparser.y" + case 520: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2547 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5652,11 +5658,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" +#line 5662 "util/configparser.c" break; - case 520: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2559 "./util/configparser.y" + case 521: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2560 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5668,11 +5674,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5672 "util/configparser.c" +#line 5678 "util/configparser.c" break; - case 521: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2572 "./util/configparser.y" + case 522: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2573 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5686,11 +5692,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5690 "util/configparser.c" +#line 5696 "util/configparser.c" break; - case 522: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2587 "./util/configparser.y" + case 523: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2588 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5704,11 +5710,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5708 "util/configparser.c" +#line 5714 "util/configparser.c" break; - case 523: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2602 "./util/configparser.y" + case 524: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2603 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5716,11 +5722,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5720 "util/configparser.c" +#line 5726 "util/configparser.c" break; - case 524: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2611 "./util/configparser.y" + case 525: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2612 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5728,11 +5734,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5732 "util/configparser.c" +#line 5738 "util/configparser.c" break; - case 525: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2620 "./util/configparser.y" + case 526: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ +#line 2621 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5741,11 +5747,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5745 "util/configparser.c" +#line 5751 "util/configparser.c" break; - case 526: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2630 "./util/configparser.y" + case 527: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ +#line 2631 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5754,11 +5760,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5758 "util/configparser.c" +#line 5764 "util/configparser.c" break; - case 527: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2640 "./util/configparser.y" + case 528: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ +#line 2641 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5766,11 +5772,11 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5770 "util/configparser.c" +#line 5776 "util/configparser.c" break; - case 528: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ -#line 2649 "./util/configparser.y" + case 529: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ +#line 2650 "./util/configparser.y" { OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5778,20 +5784,32 @@ yyreduce: else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5782 "util/configparser.c" +#line 5788 "util/configparser.c" break; - case 529: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2658 "./util/configparser.y" + case 530: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ +#line 2659 "./util/configparser.y" + { + OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 5800 "util/configparser.c" + break; + + case 531: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2668 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" +#line 5809 "util/configparser.c" break; - case 530: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2664 "./util/configparser.y" + case 532: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2674 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5799,11 +5817,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" +#line 5821 "util/configparser.c" break; - case 531: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2673 "./util/configparser.y" + case 533: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2683 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5811,11 +5829,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5815 "util/configparser.c" +#line 5833 "util/configparser.c" break; - case 532: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2682 "./util/configparser.y" + case 534: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2692 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5824,11 +5842,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5828 "util/configparser.c" +#line 5846 "util/configparser.c" break; - case 533: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2692 "./util/configparser.y" + case 535: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2702 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5837,11 +5855,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5841 "util/configparser.c" +#line 5859 "util/configparser.c" break; - case 534: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2702 "./util/configparser.y" + case 536: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2712 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5850,11 +5868,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5854 "util/configparser.c" +#line 5872 "util/configparser.c" break; - case 535: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2712 "./util/configparser.y" + case 537: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2722 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5862,11 +5880,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5866 "util/configparser.c" +#line 5884 "util/configparser.c" break; - case 536: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2721 "./util/configparser.y" + case 538: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2731 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5875,11 +5893,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5879 "util/configparser.c" +#line 5897 "util/configparser.c" break; - case 537: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2731 "./util/configparser.y" + case 539: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2741 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5887,11 +5905,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5891 "util/configparser.c" +#line 5909 "util/configparser.c" break; - case 538: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2740 "./util/configparser.y" + case 540: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2750 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5903,11 +5921,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5907 "util/configparser.c" +#line 5925 "util/configparser.c" break; - case 539: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2753 "./util/configparser.y" + case 541: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2763 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5919,11 +5937,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5923 "util/configparser.c" +#line 5941 "util/configparser.c" break; - case 540: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2766 "./util/configparser.y" + case 542: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2776 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5934,11 +5952,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5938 "util/configparser.c" +#line 5956 "util/configparser.c" break; - case 541: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2778 "./util/configparser.y" + case 543: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2788 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5951,11 +5969,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5955 "util/configparser.c" +#line 5973 "util/configparser.c" break; - case 542: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2792 "./util/configparser.y" + case 544: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2802 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5966,11 +5984,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5970 "util/configparser.c" +#line 5988 "util/configparser.c" break; - case 543: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2804 "./util/configparser.y" + case 545: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2814 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5983,11 +6001,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5987 "util/configparser.c" +#line 6005 "util/configparser.c" break; - case 544: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2818 "./util/configparser.y" + case 546: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2828 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5995,11 +6013,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5999 "util/configparser.c" +#line 6017 "util/configparser.c" break; - case 545: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2827 "./util/configparser.y" + case 547: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2837 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6009,11 +6027,11 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6013 "util/configparser.c" +#line 6031 "util/configparser.c" break; - case 546: /* server_ede: VAR_EDE STRING_ARG */ -#line 2838 "./util/configparser.y" + case 548: /* server_ede: VAR_EDE STRING_ARG */ +#line 2848 "./util/configparser.y" { OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6021,21 +6039,21 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6043 "util/configparser.c" break; - case 547: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2847 "./util/configparser.y" + case 549: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ +#line 2857 "./util/configparser.y" { OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6035 "util/configparser.c" +#line 6053 "util/configparser.c" break; - case 548: /* stub_name: VAR_NAME STRING_ARG */ -#line 2854 "./util/configparser.y" + case 550: /* stub_name: VAR_NAME STRING_ARG */ +#line 2864 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6044,31 +6062,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6048 "util/configparser.c" +#line 6066 "util/configparser.c" break; - case 549: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2864 "./util/configparser.y" + case 551: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2874 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6058 "util/configparser.c" +#line 6076 "util/configparser.c" break; - case 550: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2871 "./util/configparser.y" + case 552: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2881 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6068 "util/configparser.c" +#line 6086 "util/configparser.c" break; - case 551: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2878 "./util/configparser.y" + case 553: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2888 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6076,11 +6094,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6080 "util/configparser.c" +#line 6098 "util/configparser.c" break; - case 552: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2887 "./util/configparser.y" + case 554: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2897 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6088,11 +6106,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6092 "util/configparser.c" +#line 6110 "util/configparser.c" break; - case 553: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2896 "./util/configparser.y" + case 555: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2906 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6101,11 +6119,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6105 "util/configparser.c" +#line 6123 "util/configparser.c" break; - case 554: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2906 "./util/configparser.y" + case 556: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2916 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6114,11 +6132,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6118 "util/configparser.c" +#line 6136 "util/configparser.c" break; - case 555: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2916 "./util/configparser.y" + case 557: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2926 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6127,11 +6145,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6131 "util/configparser.c" +#line 6149 "util/configparser.c" break; - case 556: /* forward_name: VAR_NAME STRING_ARG */ -#line 2926 "./util/configparser.y" + case 558: /* forward_name: VAR_NAME STRING_ARG */ +#line 2936 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6140,31 +6158,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6144 "util/configparser.c" +#line 6162 "util/configparser.c" break; - case 557: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2936 "./util/configparser.y" + case 559: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2946 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6154 "util/configparser.c" +#line 6172 "util/configparser.c" break; - case 558: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2943 "./util/configparser.y" + case 560: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2953 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6164 "util/configparser.c" +#line 6182 "util/configparser.c" break; - case 559: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2950 "./util/configparser.y" + case 561: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2960 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6172,11 +6190,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 560: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2959 "./util/configparser.y" + case 562: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2969 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6184,11 +6202,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6188 "util/configparser.c" +#line 6206 "util/configparser.c" break; - case 561: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2968 "./util/configparser.y" + case 563: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2978 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6197,11 +6215,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6201 "util/configparser.c" +#line 6219 "util/configparser.c" break; - case 562: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2978 "./util/configparser.y" + case 564: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 2988 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6210,11 +6228,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6214 "util/configparser.c" +#line 6232 "util/configparser.c" break; - case 563: /* auth_name: VAR_NAME STRING_ARG */ -#line 2988 "./util/configparser.y" + case 565: /* auth_name: VAR_NAME STRING_ARG */ +#line 2998 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6223,52 +6241,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6227 "util/configparser.c" +#line 6245 "util/configparser.c" break; - case 564: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2998 "./util/configparser.y" + case 566: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 3008 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6237 "util/configparser.c" +#line 6255 "util/configparser.c" break; - case 565: /* auth_master: VAR_MASTER STRING_ARG */ -#line 3005 "./util/configparser.y" + case 567: /* auth_master: VAR_MASTER STRING_ARG */ +#line 3015 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6247 "util/configparser.c" +#line 6265 "util/configparser.c" break; - case 566: /* auth_url: VAR_URL STRING_ARG */ -#line 3012 "./util/configparser.y" + case 568: /* auth_url: VAR_URL STRING_ARG */ +#line 3022 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6257 "util/configparser.c" +#line 6275 "util/configparser.c" break; - case 567: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3019 "./util/configparser.y" + case 569: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 3029 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6268 "util/configparser.c" +#line 6286 "util/configparser.c" break; - case 568: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3027 "./util/configparser.y" + case 570: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 3037 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6277,11 +6295,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6281 "util/configparser.c" +#line 6299 "util/configparser.c" break; - case 569: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3037 "./util/configparser.y" + case 571: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 3047 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6290,11 +6308,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6294 "util/configparser.c" +#line 6312 "util/configparser.c" break; - case 570: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3047 "./util/configparser.y" + case 572: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 3057 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6303,11 +6321,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6307 "util/configparser.c" +#line 6325 "util/configparser.c" break; - case 571: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3057 "./util/configparser.y" + case 573: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 3067 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6316,11 +6334,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6320 "util/configparser.c" +#line 6338 "util/configparser.c" break; - case 572: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3067 "./util/configparser.y" + case 574: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 3077 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6329,11 +6347,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6333 "util/configparser.c" +#line 6351 "util/configparser.c" break; - case 573: /* view_name: VAR_NAME STRING_ARG */ -#line 3077 "./util/configparser.y" + case 575: /* view_name: VAR_NAME STRING_ARG */ +#line 3087 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6342,11 +6360,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6346 "util/configparser.c" +#line 6364 "util/configparser.c" break; - case 574: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3087 "./util/configparser.y" + case 576: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 3097 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -6401,11 +6419,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6405 "util/configparser.c" +#line 6423 "util/configparser.c" break; - case 575: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3143 "./util/configparser.y" + case 577: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3153 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6414,33 +6432,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6418 "util/configparser.c" +#line 6436 "util/configparser.c" break; - case 576: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3153 "./util/configparser.y" + case 578: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3163 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6429 "util/configparser.c" +#line 6447 "util/configparser.c" break; - case 577: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3161 "./util/configparser.y" + case 579: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3171 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6440 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 578: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3169 "./util/configparser.y" + case 580: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3179 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6454,11 +6472,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6458 "util/configparser.c" +#line 6476 "util/configparser.c" break; - case 579: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3184 "./util/configparser.y" + case 581: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3194 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6466,20 +6484,20 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6470 "util/configparser.c" +#line 6488 "util/configparser.c" break; - case 580: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3193 "./util/configparser.y" + case 582: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3203 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6479 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 591: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3205 "./util/configparser.y" + case 593: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3215 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6488,11 +6506,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6492 "util/configparser.c" +#line 6510 "util/configparser.c" break; - case 592: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3215 "./util/configparser.y" + case 594: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3225 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6500,80 +6518,80 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6504 "util/configparser.c" +#line 6522 "util/configparser.c" break; - case 593: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3224 "./util/configparser.y" + case 595: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3234 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6514 "util/configparser.c" +#line 6532 "util/configparser.c" break; - case 594: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3231 "./util/configparser.y" + case 596: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3241 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6524 "util/configparser.c" +#line 6542 "util/configparser.c" break; - case 595: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3238 "./util/configparser.y" + case 597: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3248 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6534 "util/configparser.c" +#line 6552 "util/configparser.c" break; - case 596: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3245 "./util/configparser.y" + case 598: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3255 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6544 "util/configparser.c" +#line 6562 "util/configparser.c" break; - case 597: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3252 "./util/configparser.y" + case 599: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3262 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6554 "util/configparser.c" +#line 6572 "util/configparser.c" break; - case 598: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3259 "./util/configparser.y" + case 600: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3269 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6564 "util/configparser.c" +#line 6582 "util/configparser.c" break; - case 599: /* dtstart: VAR_DNSTAP */ -#line 3266 "./util/configparser.y" + case 601: /* dtstart: VAR_DNSTAP */ +#line 3276 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6573 "util/configparser.c" +#line 6591 "util/configparser.c" break; - case 621: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3287 "./util/configparser.y" + case 623: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3297 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6581,11 +6599,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6585 "util/configparser.c" +#line 6603 "util/configparser.c" break; - case 622: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3296 "./util/configparser.y" + case 624: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3306 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6594,31 +6612,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6598 "util/configparser.c" +#line 6616 "util/configparser.c" break; - case 623: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3306 "./util/configparser.y" + case 625: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3316 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6608 "util/configparser.c" +#line 6626 "util/configparser.c" break; - case 624: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3313 "./util/configparser.y" + case 626: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3323 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6618 "util/configparser.c" +#line 6636 "util/configparser.c" break; - case 625: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3320 "./util/configparser.y" + case 627: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3330 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6626,51 +6644,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6630 "util/configparser.c" +#line 6648 "util/configparser.c" break; - case 626: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3329 "./util/configparser.y" + case 628: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3339 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6640 "util/configparser.c" +#line 6658 "util/configparser.c" break; - case 627: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3336 "./util/configparser.y" + case 629: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3346 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6650 "util/configparser.c" +#line 6668 "util/configparser.c" break; - case 628: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3343 "./util/configparser.y" + case 630: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3353 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6660 "util/configparser.c" +#line 6678 "util/configparser.c" break; - case 629: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3350 "./util/configparser.y" + case 631: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3360 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6670 "util/configparser.c" +#line 6688 "util/configparser.c" break; - case 630: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3357 "./util/configparser.y" + case 632: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3367 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6678,11 +6696,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6682 "util/configparser.c" +#line 6700 "util/configparser.c" break; - case 631: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3366 "./util/configparser.y" + case 633: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3376 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6690,31 +6708,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6694 "util/configparser.c" +#line 6712 "util/configparser.c" break; - case 632: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3375 "./util/configparser.y" + case 634: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3385 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6704 "util/configparser.c" +#line 6722 "util/configparser.c" break; - case 633: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3382 "./util/configparser.y" + case 635: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3392 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6714 "util/configparser.c" +#line 6732 "util/configparser.c" break; - case 634: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3389 "./util/configparser.y" + case 636: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3399 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6723,11 +6741,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6727 "util/configparser.c" +#line 6745 "util/configparser.c" break; - case 635: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3399 "./util/configparser.y" + case 637: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3409 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6736,11 +6754,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6740 "util/configparser.c" +#line 6758 "util/configparser.c" break; - case 636: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3409 "./util/configparser.y" + case 638: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3419 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6749,11 +6767,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6753 "util/configparser.c" +#line 6771 "util/configparser.c" break; - case 637: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3419 "./util/configparser.y" + case 639: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3429 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6762,11 +6780,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6766 "util/configparser.c" +#line 6784 "util/configparser.c" break; - case 638: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3429 "./util/configparser.y" + case 640: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3439 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6775,11 +6793,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6779 "util/configparser.c" +#line 6797 "util/configparser.c" break; - case 639: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3439 "./util/configparser.y" + case 641: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3449 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6788,49 +6806,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6792 "util/configparser.c" +#line 6810 "util/configparser.c" break; - case 640: /* pythonstart: VAR_PYTHON */ -#line 3449 "./util/configparser.y" + case 642: /* pythonstart: VAR_PYTHON */ +#line 3459 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6801 "util/configparser.c" +#line 6819 "util/configparser.c" break; - case 644: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3459 "./util/configparser.y" + case 646: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3469 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6811 "util/configparser.c" +#line 6829 "util/configparser.c" break; - case 645: /* dynlibstart: VAR_DYNLIB */ -#line 3465 "./util/configparser.y" + case 647: /* dynlibstart: VAR_DYNLIB */ +#line 3475 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6820 "util/configparser.c" +#line 6838 "util/configparser.c" break; - case 649: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3475 "./util/configparser.y" + case 651: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3485 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6830 "util/configparser.c" +#line 6848 "util/configparser.c" break; - case 650: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3481 "./util/configparser.y" + case 652: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3491 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6839,21 +6857,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6843 "util/configparser.c" +#line 6861 "util/configparser.c" break; - case 651: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3491 "./util/configparser.y" + case 653: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3501 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6853 "util/configparser.c" +#line 6871 "util/configparser.c" break; - case 652: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3498 "./util/configparser.y" + case 654: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3508 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6861,31 +6879,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6865 "util/configparser.c" +#line 6883 "util/configparser.c" break; - case 653: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3507 "./util/configparser.y" + case 655: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3517 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6876 "util/configparser.c" +#line 6894 "util/configparser.c" break; - case 654: /* dnscstart: VAR_DNSCRYPT */ -#line 3515 "./util/configparser.y" + case 656: /* dnscstart: VAR_DNSCRYPT */ +#line 3525 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6885 "util/configparser.c" +#line 6903 "util/configparser.c" break; - case 667: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3532 "./util/configparser.y" + case 669: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3542 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6893,11 +6911,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6897 "util/configparser.c" +#line 6915 "util/configparser.c" break; - case 668: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3542 "./util/configparser.y" + case 670: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3552 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6905,21 +6923,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6909 "util/configparser.c" +#line 6927 "util/configparser.c" break; - case 669: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3551 "./util/configparser.y" + case 671: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3561 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6919 "util/configparser.c" +#line 6937 "util/configparser.c" break; - case 670: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3558 "./util/configparser.y" + case 672: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3568 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6927,21 +6945,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6931 "util/configparser.c" +#line 6949 "util/configparser.c" break; - case 671: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3567 "./util/configparser.y" + case 673: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3577 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6941 "util/configparser.c" +#line 6959 "util/configparser.c" break; - case 672: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3574 "./util/configparser.y" + case 674: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3584 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6949,22 +6967,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6953 "util/configparser.c" +#line 6971 "util/configparser.c" break; - case 673: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3583 "./util/configparser.y" + case 675: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3593 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6964 "util/configparser.c" +#line 6982 "util/configparser.c" break; - case 674: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3591 "./util/configparser.y" + case 676: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3601 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6976,22 +6994,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6980 "util/configparser.c" +#line 6998 "util/configparser.c" break; - case 675: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3604 "./util/configparser.y" + case 677: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3614 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6991 "util/configparser.c" +#line 7009 "util/configparser.c" break; - case 676: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3612 "./util/configparser.y" + case 678: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3622 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7003,20 +7021,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7007 "util/configparser.c" +#line 7025 "util/configparser.c" break; - case 677: /* cachedbstart: VAR_CACHEDB */ -#line 3625 "./util/configparser.y" + case 679: /* cachedbstart: VAR_CACHEDB */ +#line 3635 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 7016 "util/configparser.c" +#line 7034 "util/configparser.c" break; - case 686: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3637 "./util/configparser.y" + case 688: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3647 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7027,11 +7045,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7031 "util/configparser.c" +#line 7049 "util/configparser.c" break; - case 687: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3649 "./util/configparser.y" + case 689: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3659 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7042,11 +7060,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7046 "util/configparser.c" +#line 7064 "util/configparser.c" break; - case 688: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3661 "./util/configparser.y" + case 690: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3671 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7057,11 +7075,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7061 "util/configparser.c" +#line 7079 "util/configparser.c" break; - case 689: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3673 "./util/configparser.y" + case 691: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3683 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7075,11 +7093,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7079 "util/configparser.c" +#line 7097 "util/configparser.c" break; - case 690: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3688 "./util/configparser.y" + case 692: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3698 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7091,11 +7109,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7095 "util/configparser.c" +#line 7113 "util/configparser.c" break; - case 691: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3701 "./util/configparser.y" + case 693: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3711 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7107,11 +7125,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7111 "util/configparser.c" +#line 7129 "util/configparser.c" break; - case 692: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3714 "./util/configparser.y" + case 694: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3724 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7121,20 +7139,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7125 "util/configparser.c" +#line 7143 "util/configparser.c" break; - case 693: /* ipsetstart: VAR_IPSET */ -#line 3725 "./util/configparser.y" + case 695: /* ipsetstart: VAR_IPSET */ +#line 3735 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7134 "util/configparser.c" +#line 7152 "util/configparser.c" break; - case 698: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3735 "./util/configparser.y" + case 700: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3745 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7148,11 +7166,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7152 "util/configparser.c" +#line 7170 "util/configparser.c" break; - case 699: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3750 "./util/configparser.y" + case 701: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3760 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7166,11 +7184,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7170 "util/configparser.c" +#line 7188 "util/configparser.c" break; -#line 7174 "util/configparser.c" +#line 7192 "util/configparser.c" default: break; } @@ -7363,7 +7381,7 @@ yyreturnlab: return yyresult; } -#line 3764 "./util/configparser.y" +#line 3774 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index f01b4e811..df8ea0c9a 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -255,138 +255,139 @@ extern int yydebug; VAR_RATELIMIT_SIZE = 456, /* VAR_RATELIMIT_SIZE */ VAR_OUTBOUND_MSG_RETRY = 457, /* VAR_OUTBOUND_MSG_RETRY */ VAR_MAX_SENT_COUNT = 458, /* VAR_MAX_SENT_COUNT */ - VAR_RATELIMIT_FOR_DOMAIN = 459, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 460, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 461, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 462, /* VAR_RATELIMIT_FACTOR */ - VAR_IP_RATELIMIT_BACKOFF = 463, /* VAR_IP_RATELIMIT_BACKOFF */ - VAR_RATELIMIT_BACKOFF = 464, /* VAR_RATELIMIT_BACKOFF */ - VAR_SEND_CLIENT_SUBNET = 465, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 466, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 467, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 468, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 469, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 470, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 471, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 472, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 473, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 474, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 475, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 476, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 477, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 478, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 479, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 480, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 481, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 482, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 483, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 484, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 485, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 486, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 487, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 488, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 489, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 490, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 491, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 492, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 493, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 494, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_EDE_SERVE_EXPIRED = 495, /* VAR_EDE_SERVE_EXPIRED */ - VAR_SERVE_ORIGINAL_TTL = 496, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 497, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 498, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 499, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 500, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 501, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 502, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 503, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 504, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 505, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 506, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 507, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 508, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 509, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 510, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 511, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 512, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 513, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 514, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 515, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 516, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 517, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 518, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 519, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 520, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 521, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 522, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 523, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 524, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 525, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 526, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 527, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 528, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 529, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 530, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 531, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 532, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 533, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 534, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 535, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 536, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 537, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 538, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 539, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 540, /* VAR_ZONEFILE */ - VAR_MASTER = 541, /* VAR_MASTER */ - VAR_URL = 542, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 543, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 544, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 545, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 546, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 547, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 548, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 549, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 550, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 551, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 552, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 553, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 554, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 555, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 556, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 557, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 558, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 559, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 560, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 561, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 562, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 563, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 564, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 565, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 566, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 567, /* VAR_RPZ */ - VAR_TAGS = 568, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 569, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 570, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 571, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 572, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 573, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 574, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 575, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 576, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 577, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 578, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 579, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 580, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 581, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - VAR_INTERFACE_AUTOMATIC_PORTS = 582, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - VAR_EDE = 583, /* VAR_EDE */ - VAR_INTERFACE_ACTION = 584, /* VAR_INTERFACE_ACTION */ - VAR_INTERFACE_VIEW = 585, /* VAR_INTERFACE_VIEW */ - VAR_INTERFACE_TAG = 586, /* VAR_INTERFACE_TAG */ - VAR_INTERFACE_TAG_ACTION = 587, /* VAR_INTERFACE_TAG_ACTION */ - VAR_INTERFACE_TAG_DATA = 588, /* VAR_INTERFACE_TAG_DATA */ - VAR_PROXY_PROTOCOL_PORT = 589, /* VAR_PROXY_PROTOCOL_PORT */ - VAR_STATISTICS_INHIBIT_ZERO = 590 /* VAR_STATISTICS_INHIBIT_ZERO */ + VAR_MAX_QUERY_RESTARTS = 459, /* VAR_MAX_QUERY_RESTARTS */ + VAR_RATELIMIT_FOR_DOMAIN = 460, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 461, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 462, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 463, /* VAR_RATELIMIT_FACTOR */ + VAR_IP_RATELIMIT_BACKOFF = 464, /* VAR_IP_RATELIMIT_BACKOFF */ + VAR_RATELIMIT_BACKOFF = 465, /* VAR_RATELIMIT_BACKOFF */ + VAR_SEND_CLIENT_SUBNET = 466, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 467, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 468, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 469, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 470, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 471, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 472, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 473, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 474, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 475, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 476, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 477, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 478, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 479, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 480, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 481, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 482, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 483, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 484, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 485, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 486, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 487, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 488, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 489, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 490, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 491, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 492, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 493, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 494, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 495, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_EDE_SERVE_EXPIRED = 496, /* VAR_EDE_SERVE_EXPIRED */ + VAR_SERVE_ORIGINAL_TTL = 497, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 498, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 499, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 500, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 501, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 502, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 503, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 504, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 505, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 506, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 507, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 508, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 509, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 510, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 511, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 512, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 513, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 514, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 515, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 516, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 517, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 518, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 519, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 520, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 521, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 522, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 523, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 524, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 525, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 526, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 527, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 528, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 529, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 530, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 531, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 532, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 533, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 534, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 535, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 536, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 537, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 538, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 539, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 540, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 541, /* VAR_ZONEFILE */ + VAR_MASTER = 542, /* VAR_MASTER */ + VAR_URL = 543, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 544, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 545, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 546, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 547, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 548, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 549, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 550, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 551, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 552, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 553, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 554, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 555, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 556, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 557, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 558, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 559, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 560, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 561, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 562, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 563, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 564, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 565, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 566, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 567, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 568, /* VAR_RPZ */ + VAR_TAGS = 569, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 570, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 571, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 572, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 573, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 574, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 575, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 576, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 577, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 578, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 579, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 580, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 581, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 582, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_INTERFACE_AUTOMATIC_PORTS = 583, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + VAR_EDE = 584, /* VAR_EDE */ + VAR_INTERFACE_ACTION = 585, /* VAR_INTERFACE_ACTION */ + VAR_INTERFACE_VIEW = 586, /* VAR_INTERFACE_VIEW */ + VAR_INTERFACE_TAG = 587, /* VAR_INTERFACE_TAG */ + VAR_INTERFACE_TAG_ACTION = 588, /* VAR_INTERFACE_TAG_ACTION */ + VAR_INTERFACE_TAG_DATA = 589, /* VAR_INTERFACE_TAG_DATA */ + VAR_PROXY_PROTOCOL_PORT = 590, /* VAR_PROXY_PROTOCOL_PORT */ + VAR_STATISTICS_INHIBIT_ZERO = 591 /* VAR_STATISTICS_INHIBIT_ZERO */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -596,138 +597,139 @@ extern int yydebug; #define VAR_RATELIMIT_SIZE 456 #define VAR_OUTBOUND_MSG_RETRY 457 #define VAR_MAX_SENT_COUNT 458 -#define VAR_RATELIMIT_FOR_DOMAIN 459 -#define VAR_RATELIMIT_BELOW_DOMAIN 460 -#define VAR_IP_RATELIMIT_FACTOR 461 -#define VAR_RATELIMIT_FACTOR 462 -#define VAR_IP_RATELIMIT_BACKOFF 463 -#define VAR_RATELIMIT_BACKOFF 464 -#define VAR_SEND_CLIENT_SUBNET 465 -#define VAR_CLIENT_SUBNET_ZONE 466 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 467 -#define VAR_CLIENT_SUBNET_OPCODE 468 -#define VAR_MAX_CLIENT_SUBNET_IPV4 469 -#define VAR_MAX_CLIENT_SUBNET_IPV6 470 -#define VAR_MIN_CLIENT_SUBNET_IPV4 471 -#define VAR_MIN_CLIENT_SUBNET_IPV6 472 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 473 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 474 -#define VAR_CAPS_WHITELIST 475 -#define VAR_CACHE_MAX_NEGATIVE_TTL 476 -#define VAR_PERMIT_SMALL_HOLDDOWN 477 -#define VAR_QNAME_MINIMISATION 478 -#define VAR_QNAME_MINIMISATION_STRICT 479 -#define VAR_IP_FREEBIND 480 -#define VAR_DEFINE_TAG 481 -#define VAR_LOCAL_ZONE_TAG 482 -#define VAR_ACCESS_CONTROL_TAG 483 -#define VAR_LOCAL_ZONE_OVERRIDE 484 -#define VAR_ACCESS_CONTROL_TAG_ACTION 485 -#define VAR_ACCESS_CONTROL_TAG_DATA 486 -#define VAR_VIEW 487 -#define VAR_ACCESS_CONTROL_VIEW 488 -#define VAR_VIEW_FIRST 489 -#define VAR_SERVE_EXPIRED 490 -#define VAR_SERVE_EXPIRED_TTL 491 -#define VAR_SERVE_EXPIRED_TTL_RESET 492 -#define VAR_SERVE_EXPIRED_REPLY_TTL 493 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 494 -#define VAR_EDE_SERVE_EXPIRED 495 -#define VAR_SERVE_ORIGINAL_TTL 496 -#define VAR_FAKE_DSA 497 -#define VAR_FAKE_SHA1 498 -#define VAR_LOG_IDENTITY 499 -#define VAR_HIDE_TRUSTANCHOR 500 -#define VAR_HIDE_HTTP_USER_AGENT 501 -#define VAR_HTTP_USER_AGENT 502 -#define VAR_TRUST_ANCHOR_SIGNALING 503 -#define VAR_AGGRESSIVE_NSEC 504 -#define VAR_USE_SYSTEMD 505 -#define VAR_SHM_ENABLE 506 -#define VAR_SHM_KEY 507 -#define VAR_ROOT_KEY_SENTINEL 508 -#define VAR_DNSCRYPT 509 -#define VAR_DNSCRYPT_ENABLE 510 -#define VAR_DNSCRYPT_PORT 511 -#define VAR_DNSCRYPT_PROVIDER 512 -#define VAR_DNSCRYPT_SECRET_KEY 513 -#define VAR_DNSCRYPT_PROVIDER_CERT 514 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 515 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 516 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 517 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 518 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 519 -#define VAR_PAD_RESPONSES 520 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 521 -#define VAR_PAD_QUERIES 522 -#define VAR_PAD_QUERIES_BLOCK_SIZE 523 -#define VAR_IPSECMOD_ENABLED 524 -#define VAR_IPSECMOD_HOOK 525 -#define VAR_IPSECMOD_IGNORE_BOGUS 526 -#define VAR_IPSECMOD_MAX_TTL 527 -#define VAR_IPSECMOD_WHITELIST 528 -#define VAR_IPSECMOD_STRICT 529 -#define VAR_CACHEDB 530 -#define VAR_CACHEDB_BACKEND 531 -#define VAR_CACHEDB_SECRETSEED 532 -#define VAR_CACHEDB_REDISHOST 533 -#define VAR_CACHEDB_REDISPORT 534 -#define VAR_CACHEDB_REDISTIMEOUT 535 -#define VAR_CACHEDB_REDISEXPIRERECORDS 536 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 537 -#define VAR_FOR_UPSTREAM 538 -#define VAR_AUTH_ZONE 539 -#define VAR_ZONEFILE 540 -#define VAR_MASTER 541 -#define VAR_URL 542 -#define VAR_FOR_DOWNSTREAM 543 -#define VAR_FALLBACK_ENABLED 544 -#define VAR_TLS_ADDITIONAL_PORT 545 -#define VAR_LOW_RTT 546 -#define VAR_LOW_RTT_PERMIL 547 -#define VAR_FAST_SERVER_PERMIL 548 -#define VAR_FAST_SERVER_NUM 549 -#define VAR_ALLOW_NOTIFY 550 -#define VAR_TLS_WIN_CERT 551 -#define VAR_TCP_CONNECTION_LIMIT 552 -#define VAR_FORWARD_NO_CACHE 553 -#define VAR_STUB_NO_CACHE 554 -#define VAR_LOG_SERVFAIL 555 -#define VAR_DENY_ANY 556 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 557 -#define VAR_LOG_TAG_QUERYREPLY 558 -#define VAR_STREAM_WAIT_SIZE 559 -#define VAR_TLS_CIPHERS 560 -#define VAR_TLS_CIPHERSUITES 561 -#define VAR_TLS_USE_SNI 562 -#define VAR_IPSET 563 -#define VAR_IPSET_NAME_V4 564 -#define VAR_IPSET_NAME_V6 565 -#define VAR_TLS_SESSION_TICKET_KEYS 566 -#define VAR_RPZ 567 -#define VAR_TAGS 568 -#define VAR_RPZ_ACTION_OVERRIDE 569 -#define VAR_RPZ_CNAME_OVERRIDE 570 -#define VAR_RPZ_LOG 571 -#define VAR_RPZ_LOG_NAME 572 -#define VAR_DYNLIB 573 -#define VAR_DYNLIB_FILE 574 -#define VAR_EDNS_CLIENT_STRING 575 -#define VAR_EDNS_CLIENT_STRING_OPCODE 576 -#define VAR_NSID 577 -#define VAR_ZONEMD_PERMISSIVE_MODE 578 -#define VAR_ZONEMD_CHECK 579 -#define VAR_ZONEMD_REJECT_ABSENCE 580 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 581 -#define VAR_INTERFACE_AUTOMATIC_PORTS 582 -#define VAR_EDE 583 -#define VAR_INTERFACE_ACTION 584 -#define VAR_INTERFACE_VIEW 585 -#define VAR_INTERFACE_TAG 586 -#define VAR_INTERFACE_TAG_ACTION 587 -#define VAR_INTERFACE_TAG_DATA 588 -#define VAR_PROXY_PROTOCOL_PORT 589 -#define VAR_STATISTICS_INHIBIT_ZERO 590 +#define VAR_MAX_QUERY_RESTARTS 459 +#define VAR_RATELIMIT_FOR_DOMAIN 460 +#define VAR_RATELIMIT_BELOW_DOMAIN 461 +#define VAR_IP_RATELIMIT_FACTOR 462 +#define VAR_RATELIMIT_FACTOR 463 +#define VAR_IP_RATELIMIT_BACKOFF 464 +#define VAR_RATELIMIT_BACKOFF 465 +#define VAR_SEND_CLIENT_SUBNET 466 +#define VAR_CLIENT_SUBNET_ZONE 467 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 468 +#define VAR_CLIENT_SUBNET_OPCODE 469 +#define VAR_MAX_CLIENT_SUBNET_IPV4 470 +#define VAR_MAX_CLIENT_SUBNET_IPV6 471 +#define VAR_MIN_CLIENT_SUBNET_IPV4 472 +#define VAR_MIN_CLIENT_SUBNET_IPV6 473 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 474 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 475 +#define VAR_CAPS_WHITELIST 476 +#define VAR_CACHE_MAX_NEGATIVE_TTL 477 +#define VAR_PERMIT_SMALL_HOLDDOWN 478 +#define VAR_QNAME_MINIMISATION 479 +#define VAR_QNAME_MINIMISATION_STRICT 480 +#define VAR_IP_FREEBIND 481 +#define VAR_DEFINE_TAG 482 +#define VAR_LOCAL_ZONE_TAG 483 +#define VAR_ACCESS_CONTROL_TAG 484 +#define VAR_LOCAL_ZONE_OVERRIDE 485 +#define VAR_ACCESS_CONTROL_TAG_ACTION 486 +#define VAR_ACCESS_CONTROL_TAG_DATA 487 +#define VAR_VIEW 488 +#define VAR_ACCESS_CONTROL_VIEW 489 +#define VAR_VIEW_FIRST 490 +#define VAR_SERVE_EXPIRED 491 +#define VAR_SERVE_EXPIRED_TTL 492 +#define VAR_SERVE_EXPIRED_TTL_RESET 493 +#define VAR_SERVE_EXPIRED_REPLY_TTL 494 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 495 +#define VAR_EDE_SERVE_EXPIRED 496 +#define VAR_SERVE_ORIGINAL_TTL 497 +#define VAR_FAKE_DSA 498 +#define VAR_FAKE_SHA1 499 +#define VAR_LOG_IDENTITY 500 +#define VAR_HIDE_TRUSTANCHOR 501 +#define VAR_HIDE_HTTP_USER_AGENT 502 +#define VAR_HTTP_USER_AGENT 503 +#define VAR_TRUST_ANCHOR_SIGNALING 504 +#define VAR_AGGRESSIVE_NSEC 505 +#define VAR_USE_SYSTEMD 506 +#define VAR_SHM_ENABLE 507 +#define VAR_SHM_KEY 508 +#define VAR_ROOT_KEY_SENTINEL 509 +#define VAR_DNSCRYPT 510 +#define VAR_DNSCRYPT_ENABLE 511 +#define VAR_DNSCRYPT_PORT 512 +#define VAR_DNSCRYPT_PROVIDER 513 +#define VAR_DNSCRYPT_SECRET_KEY 514 +#define VAR_DNSCRYPT_PROVIDER_CERT 515 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 516 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 517 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 518 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 519 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 520 +#define VAR_PAD_RESPONSES 521 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 522 +#define VAR_PAD_QUERIES 523 +#define VAR_PAD_QUERIES_BLOCK_SIZE 524 +#define VAR_IPSECMOD_ENABLED 525 +#define VAR_IPSECMOD_HOOK 526 +#define VAR_IPSECMOD_IGNORE_BOGUS 527 +#define VAR_IPSECMOD_MAX_TTL 528 +#define VAR_IPSECMOD_WHITELIST 529 +#define VAR_IPSECMOD_STRICT 530 +#define VAR_CACHEDB 531 +#define VAR_CACHEDB_BACKEND 532 +#define VAR_CACHEDB_SECRETSEED 533 +#define VAR_CACHEDB_REDISHOST 534 +#define VAR_CACHEDB_REDISPORT 535 +#define VAR_CACHEDB_REDISTIMEOUT 536 +#define VAR_CACHEDB_REDISEXPIRERECORDS 537 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 538 +#define VAR_FOR_UPSTREAM 539 +#define VAR_AUTH_ZONE 540 +#define VAR_ZONEFILE 541 +#define VAR_MASTER 542 +#define VAR_URL 543 +#define VAR_FOR_DOWNSTREAM 544 +#define VAR_FALLBACK_ENABLED 545 +#define VAR_TLS_ADDITIONAL_PORT 546 +#define VAR_LOW_RTT 547 +#define VAR_LOW_RTT_PERMIL 548 +#define VAR_FAST_SERVER_PERMIL 549 +#define VAR_FAST_SERVER_NUM 550 +#define VAR_ALLOW_NOTIFY 551 +#define VAR_TLS_WIN_CERT 552 +#define VAR_TCP_CONNECTION_LIMIT 553 +#define VAR_FORWARD_NO_CACHE 554 +#define VAR_STUB_NO_CACHE 555 +#define VAR_LOG_SERVFAIL 556 +#define VAR_DENY_ANY 557 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 558 +#define VAR_LOG_TAG_QUERYREPLY 559 +#define VAR_STREAM_WAIT_SIZE 560 +#define VAR_TLS_CIPHERS 561 +#define VAR_TLS_CIPHERSUITES 562 +#define VAR_TLS_USE_SNI 563 +#define VAR_IPSET 564 +#define VAR_IPSET_NAME_V4 565 +#define VAR_IPSET_NAME_V6 566 +#define VAR_TLS_SESSION_TICKET_KEYS 567 +#define VAR_RPZ 568 +#define VAR_TAGS 569 +#define VAR_RPZ_ACTION_OVERRIDE 570 +#define VAR_RPZ_CNAME_OVERRIDE 571 +#define VAR_RPZ_LOG 572 +#define VAR_RPZ_LOG_NAME 573 +#define VAR_DYNLIB 574 +#define VAR_DYNLIB_FILE 575 +#define VAR_EDNS_CLIENT_STRING 576 +#define VAR_EDNS_CLIENT_STRING_OPCODE 577 +#define VAR_NSID 578 +#define VAR_ZONEMD_PERMISSIVE_MODE 579 +#define VAR_ZONEMD_CHECK 580 +#define VAR_ZONEMD_REJECT_ABSENCE 581 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 582 +#define VAR_INTERFACE_AUTOMATIC_PORTS 583 +#define VAR_EDE 584 +#define VAR_INTERFACE_ACTION 585 +#define VAR_INTERFACE_VIEW 586 +#define VAR_INTERFACE_TAG 587 +#define VAR_INTERFACE_TAG_ACTION 588 +#define VAR_INTERFACE_TAG_DATA 589 +#define VAR_PROXY_PROTOCOL_PORT 590 +#define VAR_STATISTICS_INHIBIT_ZERO 591 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -737,7 +739,7 @@ union YYSTYPE char* str; -#line 741 "util/configparser.h" +#line 743 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index c14f7bd33..f21c30815 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -140,7 +140,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DISABLE_DNSSEC_LAME_CHECK %token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE -%token VAR_OUTBOUND_MSG_RETRY VAR_MAX_SENT_COUNT +%token VAR_OUTBOUND_MSG_RETRY VAR_MAX_SENT_COUNT VAR_MAX_QUERY_RESTARTS %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR %token VAR_IP_RATELIMIT_BACKOFF VAR_RATELIMIT_BACKOFF @@ -171,7 +171,6 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSCRYPT_NONCE_CACHE_SLABS %token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE %token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE -%token VAR_MAX_QUERY_RESTARTS %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED @@ -282,7 +281,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_ratelimit_for_domain | server_ratelimit_below_domain | server_ratelimit_factor | server_ip_ratelimit_factor | server_ratelimit_backoff | - server_ip_ratelimit_backoff | server_outbound_msg_retry | server_max_sent_count | + server_ip_ratelimit_backoff | server_outbound_msg_retry | + server_max_sent_count | server_max_query_restarts | server_send_client_subnet | server_client_subnet_zone | server_client_subnet_always_forward | server_client_subnet_opcode | server_max_client_subnet_ipv4 | server_max_client_subnet_ipv6 | @@ -299,7 +299,6 @@ content_server: server_num_threads | server_verbosity | server_port | server_qname_minimisation_strict | server_pad_responses | server_pad_responses_block_size | server_pad_queries | server_pad_queries_block_size | - server_max_query_restarts | server_serve_expired | server_serve_expired_ttl | server_serve_expired_ttl_reset | server_serve_expired_reply_ttl | server_serve_expired_client_timeout | @@ -2656,6 +2655,15 @@ server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG free($2); } ; +server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG + { + OUTYY(("P(server_max_query_restarts:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_query_restarts = atoi($2); + free($2); + } + ; server_low_rtt: VAR_LOW_RTT STRING_ARG { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); @@ -2738,15 +2746,6 @@ server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG free($2); } ; -server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG - { - OUTYY(("P(server_max_query_restarts:%s)\n", $2)); - if(atoi($2) == 0) - yyerror("number expected"); - else cfg_parser->cfg->max_query_restarts = atoi($2); - free($2); - } - ; server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG { #ifdef USE_IPSECMOD From 7716d26d46f1a309c20fa0cf5efef9db56907e75 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 14 Dec 2022 16:33:28 +0100 Subject: [PATCH 034/177] - Use an explicit 'reload_keep_cache' command and introduce test cases for #569. --- daemon/remote.c | 10 +- doc/unbound-control.8.in | 6 + smallapp/unbound-control.c | 7 +- .../09-unbound-control.conf | 7 +- .../09-unbound-control.test | 614 ++++++++---------- .../conf.bad_credentials | 5 + .../conf.spoofed_credentials | 5 + testdata/common.sh | 6 + 8 files changed, 318 insertions(+), 342 deletions(-) create mode 100644 testdata/09-unbound-control.tdir/conf.bad_credentials create mode 100644 testdata/09-unbound-control.tdir/conf.spoofed_credentials diff --git a/daemon/remote.c b/daemon/remote.c index fe208cc39..7c5a036f3 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -682,10 +682,9 @@ do_stop(RES* ssl, struct worker* worker) /** do the reload command */ static void -do_reload(RES* ssl, struct worker* worker, char* arg) +do_reload(RES* ssl, struct worker* worker, int reuse_cache) { - arg = skipwhite(arg); - worker->reuse_cache = (strcmp(arg, "+keep-cache") == 0); + worker->reuse_cache = reuse_cache; worker->need_to_exit = 0; comm_base_exit(worker->base); send_ok(ssl); @@ -3031,8 +3030,11 @@ execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, if(cmdcmp(p, "stop", 4)) { do_stop(ssl, worker); return; + } else if(cmdcmp(p, "reload_keep_cache", 17)) { + do_reload(ssl, worker, 1); + return; } else if(cmdcmp(p, "reload", 6)) { - do_reload(ssl, worker, skipwhite(p+6)); + do_reload(ssl, worker, 0); return; } else if(cmdcmp(p, "stats_noreset", 13)) { do_stats(ssl, worker, 0); diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 39adb7643..fd165cb52 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -54,6 +54,12 @@ Stop the server. The server daemon exits. .B reload Reload the server. This flushes the cache and reads the config file fresh. .TP +.B reload_keep_cache +Reload the server but try to keep the RRset and message cache if +(re)configuration allows for it. +That means the caches sizes and the number of threads must not change between +reloads. +.TP .B verbosity \fInumber Change verbosity value for logging. Same values as \fBverbosity\fR keyword in \fIunbound.conf\fR(5). This new setting lasts until the server is issued diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 76fe018e1..821c490c3 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -102,7 +102,12 @@ usage(void) printf(" stop stops the server\n"); printf(" reload reloads the server\n"); printf(" (this flushes data, stats, requestlist)\n"); - printf(" reload +keep-cache ditto but keep RRset and message cache\n"); + printf(" reload_keep_cache reloads the server but tries to\n"); + printf(" keep the RRset and message cache\n"); + printf(" if (re)configuration allows for it.\n"); + printf(" That means the caches sizes and\n"); + printf(" the number of threads must not\n"); + printf(" change between reloads.\n"); printf(" stats print statistics\n"); printf(" stats_noreset peek at statistics\n"); #ifdef HAVE_SHMGET diff --git a/testdata/09-unbound-control.tdir/09-unbound-control.conf b/testdata/09-unbound-control.tdir/09-unbound-control.conf index ba55e34e8..227d56075 100644 --- a/testdata/09-unbound-control.tdir/09-unbound-control.conf +++ b/testdata/09-unbound-control.tdir/09-unbound-control.conf @@ -1,6 +1,6 @@ server: verbosity: 2 - # num-threads: 1 + num-threads: 1 interface: 127.0.0.1 port: @PORT@ use-syslog: no @@ -9,6 +9,10 @@ server: chroot: "" username: "" do-not-query-localhost: no + access-control: 127.0.0.1 allow_snoop + msg-cache-size: 4m + rrset-cache-size: 4m + minimal-responses: yes remote-control: control-enable: yes control-interface: 127.0.0.1 @@ -21,4 +25,3 @@ remote-control: forward-zone: name: "." forward-addr: "127.0.0.1@@TOPORT@" - diff --git a/testdata/09-unbound-control.tdir/09-unbound-control.test b/testdata/09-unbound-control.tdir/09-unbound-control.test index f683bf417..0ef679b3f 100644 --- a/testdata/09-unbound-control.tdir/09-unbound-control.test +++ b/testdata/09-unbound-control.tdir/09-unbound-control.test @@ -5,364 +5,317 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test PRE="../.." +. ../common.sh -# exit value is 1 on usage -$PRE/unbound-control -h -if test $? -ne 1; then - echo "wrong exit value for usage." - exit 1 -else - echo "exit value for usage: OK" -fi +# End the test +# $1: exit value +end () { + echo "> cat logfiles" + cat fwd.log + cat unbound.log + exit $1 +} + +# Expect a given exit value of the previous command +# $1: the expected exit value +# $2: optional text to print when failing +expect_exit_value () { + if test $? -ne $1; then + if test -z "$2"; then + if test $1 -eq 1; then + msg="on error" + else + msg="after success" + fi + else + msg="$2" + fi + echo "wrong exit value $msg" + end 1 + fi +} + +# Helper function for quering +# $@: at least the domain name to query and optional dig arguments +query () { + echo "> dig $@" + dig @127.0.0.1 -p $UNBOUND_PORT $@ | tee outfile +} + +# Expect something in the answer +# $1: expected regular expression +expect_answer () { + echo "> check answer for \"$1\"" + if grep "$1" outfile; then + echo "OK" + else + echo "Not OK" + end 1 + fi +} + +# Fail the test for unexpected answers +# $1: unexpected regular expression +fail_answer () { + echo "> \"$1\" should not be in answer" + if grep "$1" outfile; then + echo "Not OK" + end 1 + else + echo "OK" + fi +} + +# Issue an unbound-control command +# $@: command arguments +control_command () { + echo "$PRE/unbound-control $@" + $PRE/unbound-control $@ > outfile +} + +# Dump the cache contents +# $@: optional options to unbound-control +cache_dump () { + echo "$PRE/unbound-control $@ dump_cache > cache.dump" + $PRE/unbound-control $@ dump_cache > cache.dump +} + +# Load cache contents +# $@: optional options to unbound-control +cache_load () { + echo "$PRE/unbound-control $@ load_cache < cache.dump" + $PRE/unbound-control $@ load_cache < cache.dump +} + +# Expect an entry in the cache dump +# $1: expected regular expression +expect_in_cache_dump () { + echo "> check cache dump for \"$1\"" + if grep "$1" cache.dump; then + echo "OK cache dump" + else + echo "Not OK cache dump" + end 1 + fi +} + +# Fail the test for unexpected entry in the cache dump +# $1: unexpected regular expression +fail_in_cache_dump () { + echo "> \"$1\" should not be in cache dump" + if grep "$1" cache.dump; then + echo "Not OK cache dump" + end 1 + else + echo "OK cache dump" + fi +} + +# start the test +cp ub.conf main.conf + +teststep "exit value is 1 on usage" +control_command -h +expect_exit_value 1 "for usage" # use lock-verify if possible -# test if the server is up. -echo "> dig www.example.com." -dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile -echo "> check answer" -if grep "10.20.30.40" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "test if the server is up" +query www.example.com. +expect_answer "10.20.30.40" -# exit value is 1 when a bad command is given. -echo "$PRE/unbound-control -c ub.conf blablargh" -$PRE/unbound-control -c ub.conf blablargh -if test $? -ne 1; then - echo "wrong exit value on error." - echo "> cat logfiles" - cat fwd.log - cat unbound.lo - exit 1 -else - echo "correct exit value on error" -fi +teststep "exit value is 1 when a bad command is given" +control_command -c ub.conf blablargh +expect_exit_value 1 # reload the server. test if the server came up by putting a new # local-data element in the server. +teststep "reload the server" echo "server: local-data: 'afterreload. IN A 5.6.7.8'" >> ub.conf -echo "$PRE/unbound-control -c ub.conf reload" -$PRE/unbound-control -c ub.conf reload -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +control_command -c ub.conf reload +expect_exit_value 0 +query afterreload. +expect_answer "5.6.7.8" -echo "> dig afterreload." -dig @127.0.0.1 -p $UNBOUND_PORT afterreload. | tee outfile -echo "> check answer" -if grep "5.6.7.8" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "must have had at least 1 query since reload" +control_command -c ub.conf stats +expect_exit_value 0 +expect_answer "^total.num.queries=[1-9][0-9]*$" -# must have had queries now. 1 since reload. -echo "$PRE/unbound-control -c ub.conf stats" -$PRE/unbound-control -c ub.conf stats > tmp.$$ -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -if grep "^total.num.queries=[1-9][0-9]*$" tmp.$$; then - echo "OK" -else - echo "bad stats" - cat tmp.$$ - exit 1 -fi +teststep "check verbosity" +control_command -c ub.conf verbosity 2 +expect_exit_value 0 -# verbosity -echo "$PRE/unbound-control -c ub.conf verbosity 2" -$PRE/unbound-control -c ub.conf verbosity 2 -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +teststep "check syntax error in parse" +control_command -c ub.conf verbosity jkdf +expect_exit_value 1 -# check syntax error in parse -echo "$PRE/unbound-control -c ub.conf verbosity jkdf" -$PRE/unbound-control -c ub.conf verbosity jkdf -if test $? -ne 1; then - echo "wrong exit value after failure" - exit 1 -fi - -# check bad credentials +teststep "check bad credentials" cp ub.conf bad.conf -echo "remote-control:" >> bad.conf -echo " server-key-file: bad_server.key" >> bad.conf -echo " server-cert-file: bad_server.pem" >> bad.conf -echo " control-key-file: bad_control.key" >> bad.conf -echo " control-cert-file: bad_control.pem" >> bad.conf -echo "$PRE/unbound-control -c bad.conf verbosity 2" -$PRE/unbound-control -c bad.conf verbosity 2 -if test $? -ne 1; then - echo "wrong exit value after failure" - exit 1 -fi +cat conf.bad_credentials >> bad.conf +control_command -c bad.conf verbosity 2 +expect_exit_value 1 -# check spoofedclient credentials +teststep "check spoofed client credentials" rm -f bad.conf cp ub.conf bad.conf -echo "remote-control:" >> bad.conf -echo " server-key-file: unbound_server.key" >> bad.conf -echo " server-cert-file: unbound_server.pem" >> bad.conf -echo " control-key-file: bad_control.key" >> bad.conf -echo " control-cert-file: bad_control.pem" >> bad.conf -echo "$PRE/unbound-control -c bad.conf verbosity 2" -$PRE/unbound-control -c bad.conf verbosity 2 -if test $? -ne 1; then - echo "wrong exit value after failure" - exit 1 -fi +cat conf.spoofed_credentials >> bad.conf +control_command -c bad.conf verbosity 2 +expect_exit_value 1 -# create a new local zone -echo "> test of local zone" -echo "$PRE/unbound-control -c ub.conf local_zone example.net static" -$PRE/unbound-control -c ub.conf local_zone example.net static -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1" -$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1 -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +teststep "create a new local zone" +control_command -c ub.conf local_zone example.net static +expect_exit_value 0 +control_command -c ub.conf local_data www.example.net A 192.0.2.1 +expect_exit_value 0 -# check that www.example.net exists -echo "> dig www.example.net." -dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile -echo "> check answer" -if grep "192.0.2.1" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "check that www.example.net exists" +query www.example.net. +expect_answer "192.0.2.1" -# check that mail.example.net has nxdomain -echo "> dig mail.example.net." -dig @127.0.0.1 -p $UNBOUND_PORT mail.example.net. | tee outfile -echo "> check answer" -if grep "NXDOMAIN" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "check that mail.example.net has nxdomain" +query mail.example.net. +expect_answer "NXDOMAIN" -# remove www.example.net - check it gets nxdomain -echo "$PRE/unbound-control -c ub.conf local_data_remove www.example.net" -$PRE/unbound-control -c ub.conf local_data_remove www.example.net -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "> dig www.example.net." -dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile -echo "> check answer" -if grep "NXDOMAIN" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "remove www.example.net - check it gets nxdomain" +control_command -c ub.conf local_data_remove www.example.net +expect_exit_value 0 +query www.example.net. +expect_answer "NXDOMAIN" -# remove nonexistent name - check bug#287(segfault) does not happen. -echo "$PRE/unbound-control -c ub.conf local_data_remove test.example.net" -$PRE/unbound-control -c ub.conf local_data_remove test.example.net +teststep "remove nonexistent name - check bug#287(segfault) does not happen" +control_command -c ub.conf local_data_remove test.example.net # if crash then then we get: error: could not SSL_read from unbound-control -if test $? -ne 0; then - echo "wrong exit value after success" - cat unbound.log - echo "Not OK" - exit 1 -fi +expect_exit_value 0 -# remove example.net - check its gone. -echo "$PRE/unbound-control -c ub.conf local_zone_remove example.net" -$PRE/unbound-control -c ub.conf local_zone_remove example.net -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "> dig www.example.net." -dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile -echo "> check answer" -if grep "SERVFAIL" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "remove example.net - check its gone" +control_command -c ub.conf local_zone_remove example.net +expect_exit_value 0 +query www.example.net. +expect_answer "SERVFAIL" -# dump the cache -echo "> test cache dump" -# fillup cache -echo "dig www.example.com" -dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. -echo "$PRE/unbound-control -c ub.conf dump_cache" -$PRE/unbound-control -c ub.conf dump_cache > tmp.$$ -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -cat tmp.$$ -if grep 10.20.30.40 tmp.$$; then - echo "OK example.com is in cache dump" -else - echo "Not OK cache dump" - exit 1 -fi +teststep "dump the cache" +query www.example.com. +cache_dump -c ub.conf +expect_exit_value 0 +cat cache.dump +expect_in_cache "10.20.30.40" -# test lookup -echo "$PRE/unbound-control -c ub.conf lookup www.example.com" -$PRE/unbound-control -c ub.conf lookup www.example.com -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +control_command -c ub.conf lookup www.example.com +expect_exit_value 0 # answer to lookup is meaningless because of use a forwarder, oh well. -# load the cache dump. -echo "$PRE/unbound-control -c ub.conf load_cache < tmp.$$" -$PRE/unbound-control -c ub.conf load_cache < tmp.$$ -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "> dig www.example.com." -dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile -echo "> check answer" -if grep "10.20.30.40" outfile; then - echo "OK" -else - echo "> cat logfiles" - cat fwd.log - cat unbound.log - echo "Not OK" - exit 1 -fi +teststep "load the cache dump" +cache_load -c ub.conf +expect_exit_value 0 +query www.example.com. +expect_answer "10.20.30.40" -# load local-zones from file -echo "$PRE/unbound-control -c ub.conf local_zones < local_zones" -$PRE/unbound-control -c ub.conf local_zones < local_zones -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "> dig localzonefromfile." -dig @127.0.0.1 -p $UNBOUND_PORT localzonefromfile | tee outfile -echo "> check answer" -if grep "REFUSED" outfile; then - echo "OK" -else - echo "Not OK" - exit 1 -fi +teststep "load local-zones from file" +control_command -c ub.conf local_zones < local_zones +expect_exit_value 0 +query localzonefromfile +expect_answer "REFUSED" -# load local-data from file -echo "$PRE/unbound-control -c ub.conf local_datas < local_data" -$PRE/unbound-control -c ub.conf local_datas < local_data -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "> dig localdatafromfile." -dig @127.0.0.1 -p $UNBOUND_PORT -t txt localdatafromfile | tee outfile -echo "> check answer" -if grep "local data from file OK" outfile; then - echo "OK" -else - echo "Not OK" - exit 1 -fi +teststep "load local-data from file" +control_command -c ub.conf local_datas < local_data +expect_exit_value 0 +query -t txt localdatafromfile +expect_answer "local data from file OK" -# remove local-zone and local-data from file -echo "$PRE/unbound-control -c ub.conf local_zones_remove < local_zones_remove" -$PRE/unbound-control -c ub.conf local_zones_remove < local_zones_remove -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "$PRE/unbound-control -c ub.conf local_datas_remove < local_data_remove" -$PRE/unbound-control -c ub.conf local_datas_remove < local_data_remove -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -echo "> check zone and data removal list_local_zones" -$PRE/unbound-control -c ub.conf list_local_zones | tee outfile -if grep "localzonefromfile" outfile; then - echo "Not OK" - exit 1 -fi -if grep "local data from file OK" outfile; then - echo "Not OK" - exit 1 -fi -if grep "otherlocalzone" outfile; then - echo "OK" -else - echo "Not OK" - exit 1 -fi +teststep "remove local-zone and local-data from file" +control_command -c ub.conf local_zones_remove < local_zones_remove +expect_exit_value 0 +control_command -c ub.conf local_datas_remove < local_data_remove +expect_exit_value 0 +control_command -c ub.conf list_local_zones +fail_answer "localzonefromfile" +fail_answer "local data from file OK" +expect_answer "otherlocalzone" -# flushing -echo "$PRE/unbound-control -c ub.conf flush www.example.net" -$PRE/unbound-control -c ub.conf flush www.example.net -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +teststep "flushing" +control_command -c ub.conf flush www.example.net +expect_exit_value 0 +control_command -c ub.conf flush_type www.example.net TXT +expect_exit_value 0 +control_command -c ub.conf flush_zone example.net +expect_exit_value 0 -echo "$PRE/unbound-control -c ub.conf flush_type www.example.net TXT" -$PRE/unbound-control -c ub.conf flush_type www.example.net TXT -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +teststep "reload the server for a clean state and populate the cache" +cp main.conf ub.conf +control_command -c ub.conf reload +expect_exit_value 0 +query www.example.com +expect_answer "10.20.30.40" -echo "$PRE/unbound-control -c ub.conf flush_zone example.net" -$PRE/unbound-control -c ub.conf flush_zone example.net -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi +teststep "reload and check cache dump - should be empty" +control_command -c ub.conf reload +expect_exit_value 0 +cache_dump -c ub.conf +expect_exit_value 0 +fail_in_cache_dump "www.example.com.*10.20.30.40" +fail_in_cache_dump "msg www.example.com. IN A" -# now stop the server -echo "$PRE/unbound-control -c ub.conf stop" -$PRE/unbound-control -c ub.conf stop -if test $? -ne 0; then - echo "wrong exit value after success" - exit 1 -fi -# see if the server has really exited. +query www.example.com +expect_answer "10.20.30.40" + +teststep "reload_keep_cache and check cache dump - should not be empty" +control_command -c ub.conf reload_keep_cache +expect_exit_value 0 +cache_dump -c ub.conf +expect_exit_value 0 +expect_in_cache_dump "www.example.com.*10.20.30.40" +expect_in_cache_dump "msg www.example.com. IN A" +query www.example.com +nordflag +expect_answer "10.20.30.40" + +teststep "change msg-cache-size and reload_keep_cache - should be empty" +echo "server: msg-cache-size: 2m" >> ub.conf +control_command -c ub.conf reload_keep_cache +expect_exit_value 0 +cache_dump -c ub.conf +expect_exit_value 0 +fail_in_cache_dump "www.example.com.*10.20.30.40" +fail_in_cache_dump "msg www.example.com. IN A" +query www.example.com +expect_answer "10.20.30.40" + +teststep "change rrset-cache-size and reload_keep_cache - should be empty" +echo "server: rrset-cache-size: 2m" >> ub.conf +control_command -c ub.conf reload_keep_cache +expect_exit_value 0 +cache_dump -c ub.conf +expect_exit_value 0 +fail_in_cache_dump "www.example.com.*10.20.30.40" +fail_in_cache_dump "msg www.example.com. IN A" +query www.example.com +expect_answer "10.20.30.40" + +teststep "change num-threads and reload_keep_cache - should be empty" +echo "server: num-threads: 2" >> ub.conf +control_command -c ub.conf reload_keep_cache +expect_exit_value 0 +cache_dump -c ub.conf +expect_exit_value 0 +fail_in_cache_dump "www.example.com.*10.20.30.40" +fail_in_cache_dump "msg www.example.com. IN A" +query www.example.com +expect_answer "10.20.30.40" + +teststep "change minimal-responses and reload_keep_cache - should not be empty" +echo "server: minimal-responses: no" >> ub.conf +control_command -c ub.conf reload_keep_cache +expect_exit_value 0 +cache_dump -c ub.conf +expect_exit_value 0 +expect_in_cache_dump "www.example.com.*10.20.30.40" +expect_in_cache_dump "msg www.example.com. IN A" + +teststep "now stop the server" +control_command -c ub.conf stop +expect_exit_value 0 + +teststep "see if the server has really exited" TRY_MAX=20 for (( try=0 ; try <= $TRY_MAX ; try++ )) ; do if kill -0 $UNBOUND_PID 2>&1 | tee tmp.$$; then @@ -379,11 +332,8 @@ for (( try=0 ; try <= $TRY_MAX ; try++ )) ; do done if kill -0 $UNBOUND_PID; then echo "still up!" - echo "> cat logfiles" - cat fwd.log - cat unbound.log echo "not stopped, failure" - exit 1 + end 1 else echo "stopped OK" @@ -392,15 +342,9 @@ else echo "lock-verify test worked." else echo "lock-verify test failed." - cat fwd.log - cat unbound.log - exit 1 + end 1 fi fi fi -echo "> cat logfiles" -cat fwd.log -cat unbound.log -echo "> OK" -exit 0 +end 0 diff --git a/testdata/09-unbound-control.tdir/conf.bad_credentials b/testdata/09-unbound-control.tdir/conf.bad_credentials new file mode 100644 index 000000000..11a131130 --- /dev/null +++ b/testdata/09-unbound-control.tdir/conf.bad_credentials @@ -0,0 +1,5 @@ +remote-control: + server-key-file: bad_server.key + server-cert-file: bad_server.pem + control-key-file: bad_control.key + control-cert-file: bad_control.pem diff --git a/testdata/09-unbound-control.tdir/conf.spoofed_credentials b/testdata/09-unbound-control.tdir/conf.spoofed_credentials new file mode 100644 index 000000000..25cb830dc --- /dev/null +++ b/testdata/09-unbound-control.tdir/conf.spoofed_credentials @@ -0,0 +1,5 @@ +remote-control: + server-key-file: unbound_server.key + server-cert-file: unbound_server.pem + control-key-file: bad_control.key + control-cert-file: bad_control.pem diff --git a/testdata/common.sh b/testdata/common.sh index a449f1a64..b0e66f8df 100644 --- a/testdata/common.sh +++ b/testdata/common.sh @@ -29,6 +29,7 @@ # wait_server_up_or_fail: wait for server to come up or print a failure string # skip_test x : print message and skip test (must be called in .pre) # kill_pid : kill a server, make sure and wait for it to go down. +# teststep : print the current test step in the output # print error and exit @@ -272,3 +273,8 @@ set_doxygen_path () { fi } +# Print the current test step in the output +teststep () { + echo + echo "STEP [ $1 ]" +} From 1224cd9d254c5e7e329c19612922dba1fa5db185 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Jan 2023 13:06:39 +0100 Subject: [PATCH 035/177] - Fix windows compile for libunbound subprocess reap comm point closes. --- doc/Changelog | 3 +++ libunbound/libunbound.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b14cf1d55..cd225c523 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 January 2023: Wouter + - Fix windows compile for libunbound subprocess reap comm point closes. + 14 December 2022: George - Merge #569 from JINMEI Tatuya: add keep-cache option to 'unbound-control reload' to keep caches. diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 225457e73..80a82bb47 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -311,6 +311,7 @@ ub_ctx_delete(struct ub_ctx* ctx) * it and only one should clean up, the one with getpid == pipe_pid.*/ if(ctx->created_bg && ctx->pipe_pid != getpid()) { do_stop = 0; +#ifndef USE_WINSOCK /* Stop events from getting deregistered, if the backend is * epoll, the epoll fd is the same as the other process. * That process should deregister them. */ @@ -322,6 +323,7 @@ ub_ctx_delete(struct ub_ctx* ctx) ctx->rr_pipe->listen_com->event_added = 0; if(ctx->rr_pipe->res_com) ctx->rr_pipe->res_com->event_added = 0; +#endif } /* see if bg thread is created and if threads have been killed */ /* no locks, because those may be held by terminated threads */ From 70260273a46cf27bed4d6be1487fb10c243a87d2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Jan 2023 13:30:03 +0100 Subject: [PATCH 036/177] - Update github workflows to use checkout v3. --- .github/workflows/analysis_ports.yml | 2 +- .github/workflows/ci.yml | 2 +- doc/Changelog | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index fbbdd8018..554cda12c 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -163,7 +163,7 @@ jobs: make: "no" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: false - name: test_windows diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73d68fbf3..59d52b7cb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: configure run: ./configure --enable-debug - name: make diff --git a/doc/Changelog b/doc/Changelog index cd225c523..7949df5f0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 2 January 2023: Wouter - Fix windows compile for libunbound subprocess reap comm point closes. + - Update github workflows to use checkout v3. 14 December 2022: George - Merge #569 from JINMEI Tatuya: add keep-cache option to From d5b9a790fef446ced08ee84023f6bcb6c31c1a95 Mon Sep 17 00:00:00 2001 From: Pavel Odintsov Date: Tue, 3 Jan 2023 16:44:10 +0000 Subject: [PATCH 037/177] Added new static zone type block_a to suppress all A queries for specific zones --- doc/example.conf.in | 2 ++ doc/unbound.conf.5.in | 14 ++++++++++---- services/localzone.c | 19 +++++++++++++++++-- services/localzone.h | 2 ++ util/configparser.y | 3 ++- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 47c3c4891..07dbce4e9 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -810,6 +810,8 @@ server: # o always_transparent, always_refuse, always_nxdomain, always_nodata, # always_deny resolve in that way but ignore local data for # that name + # o block_a resolves all records normally but returns + # NODATA for A queries and ignores local data for that name # o always_null returns 0.0.0.0 or ::0 for any name in the zone. # o noview breaks out of that view towards global local-zones. # diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 572ebc34f..0d5fb27bb 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1391,10 +1391,10 @@ address space are not validated. This is usually required whenever Configure a local zone. The type determines the answer to give if there is no match from local\-data. The types are deny, refuse, static, transparent, redirect, nodefault, typetransparent, inform, inform_deny, -inform_redirect, always_transparent, always_refuse, always_nxdomain, always_null, noview, -and are explained below. After that the default settings are listed. Use -local\-data: to enter data into the local zone. Answers for local zones -are authoritative DNS answers. By default the zones are class IN. +inform_redirect, always_transparent, block_a, always_refuse, always_nxdomain, +always_null, noview, and are explained below. After that the default settings +are listed. Use local\-data: to enter data into the local zone. Answers for +local zones are authoritative DNS answers. By default the zones are class IN. .IP If you need more complicated authoritative data, with referrals, wildcards, CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for @@ -1469,6 +1469,12 @@ Ie. answer queries with fixed data and also log the machines that ask. \h'5'\fIalways_transparent\fR Like transparent, but ignores local data and resolves normally. .TP 10 +\h'5'\fIblock_a\fR +Like transparent, but ignores local data and resolves normally all query +types excluding A. For A queries it unconditionally returns NODATA. +Useful in cases when there is a need to explicitly force all apps to use +IPv6 protocol and avoid any queries to IPv4. +.TP 10 \h'5'\fIalways_refuse\fR Like refuse, but ignores local data and refuses the query. .TP 10 diff --git a/services/localzone.c b/services/localzone.c index 3536b7aaa..996acdbf9 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1603,7 +1603,7 @@ local_zone_does_not_cover(struct local_zone* z, struct query_info* qinfo, struct local_data key; struct local_data* ld = NULL; struct local_rrset* lr = NULL; - if(z->type == local_zone_always_transparent) + if(z->type == local_zone_always_transparent || z->type == local_zone_block_a) return 1; if(z->type != local_zone_transparent && z->type != local_zone_typetransparent @@ -1679,6 +1679,16 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, } else if(lz_type == local_zone_typetransparent || lz_type == local_zone_always_transparent) { /* no NODATA or NXDOMAINS for this zone type */ + return 0; + } else if(lz_type == local_zone_block_a) { + // Return NODATA for all A queries + if(qinfo->qtype == LDNS_RR_TYPE_A) { + local_error_encode(qinfo, env, edns, repinfo, buf, temp, + LDNS_RCODE_NOERROR, (LDNS_RCODE_NOERROR|BIT_AA), + LDNS_EDE_NONE, NULL); + return 1; + } + return 0; } else if(lz_type == local_zone_always_null) { /* 0.0.0.0 or ::0 or noerror/nodata for this zone type, @@ -1846,7 +1856,8 @@ local_zones_answer(struct local_zones* zones, struct module_env* env, if(z && (lzt == local_zone_transparent || lzt == local_zone_typetransparent || lzt == local_zone_inform || - lzt == local_zone_always_transparent) && + lzt == local_zone_always_transparent || + lzt == local_zone_block_a) && local_zone_does_not_cover(z, qinfo, labs)) { lock_rw_unlock(&z->lock); z = NULL; @@ -1894,6 +1905,7 @@ local_zones_answer(struct local_zones* zones, struct module_env* env, if(lzt != local_zone_always_refuse && lzt != local_zone_always_transparent + && lzt != local_zone_block_a && lzt != local_zone_always_nxdomain && lzt != local_zone_always_nodata && lzt != local_zone_always_deny @@ -1924,6 +1936,7 @@ const char* local_zone_type2str(enum localzone_type t) case local_zone_inform_deny: return "inform_deny"; case local_zone_inform_redirect: return "inform_redirect"; case local_zone_always_transparent: return "always_transparent"; + case local_zone_block_a: return "block_a"; case local_zone_always_refuse: return "always_refuse"; case local_zone_always_nxdomain: return "always_nxdomain"; case local_zone_always_nodata: return "always_nodata"; @@ -1958,6 +1971,8 @@ int local_zone_str2type(const char* type, enum localzone_type* t) *t = local_zone_inform_redirect; else if(strcmp(type, "always_transparent") == 0) *t = local_zone_always_transparent; + else if(strcmp(type, "block_a") == 0) + *t = local_zone_block_a; else if(strcmp(type, "always_refuse") == 0) *t = local_zone_always_refuse; else if(strcmp(type, "always_nxdomain") == 0) diff --git a/services/localzone.h b/services/localzone.h index 19534f750..4456893ee 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -88,6 +88,8 @@ enum localzone_type { local_zone_inform_redirect, /** resolve normally, even when there is local data */ local_zone_always_transparent, + /** resolve normally, even when there is local data but return NODATA for A queries */ + local_zone_block_a, /** answer with error, even when there is local data */ local_zone_always_refuse, /** answer with nxdomain, even when there is local data */ diff --git a/util/configparser.y b/util/configparser.y index f21c30815..56d97e82e 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2206,6 +2206,7 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG strcmp($3, "transparent")!=0 && strcmp($3, "nodefault")!=0 && strcmp($3, "typetransparent")!=0 && strcmp($3, "always_transparent")!=0 + && strcmp($3, "block_a")!=0 && strcmp($3, "always_refuse")!=0 && strcmp($3, "always_nxdomain")!=0 && strcmp($3, "always_nodata")!=0 @@ -2218,7 +2219,7 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " - "inform_redirect, always_transparent, " + "inform_redirect, always_transparent, block_a," "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); From f93fdb5e09c1d16b3c4f2b3f3226c15af00e3f83 Mon Sep 17 00:00:00 2001 From: Alex Band Date: Wed, 4 Jan 2023 15:57:45 +0100 Subject: [PATCH 038/177] Add Mastodon --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d1bbcf2b7..95f35b339 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![Packaging status](https://repology.org/badge/tiny-repos/unbound.svg)](https://repology.org/project/unbound/versions) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/unbound.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:unbound) [![Documentation Status](https://readthedocs.org/projects/unbound/badge/?version=latest)](https://unbound.readthedocs.io/en/latest/?badge=latest) +![Mastodon Follow](https://img.shields.io/mastodon/follow/109262826617293067?domain=https%3A%2F%2Ffosstodon.org&style=social) Unbound is a validating, recursive, caching DNS resolver. It is designed to be fast and lean and incorporates modern features based on open standards. If you From e92bd614c0b80c0d0e4f270a5050722dd7541434 Mon Sep 17 00:00:00 2001 From: Alex Band Date: Wed, 4 Jan 2023 16:21:43 +0100 Subject: [PATCH 039/177] Add Mastodon link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 95f35b339..c3d9bc249 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Packaging status](https://repology.org/badge/tiny-repos/unbound.svg)](https://repology.org/project/unbound/versions) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/unbound.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:unbound) [![Documentation Status](https://readthedocs.org/projects/unbound/badge/?version=latest)](https://unbound.readthedocs.io/en/latest/?badge=latest) -![Mastodon Follow](https://img.shields.io/mastodon/follow/109262826617293067?domain=https%3A%2F%2Ffosstodon.org&style=social) +[![Mastodon Follow](https://img.shields.io/mastodon/follow/109262826617293067?domain=https%3A%2F%2Ffosstodon.org&style=social)](https://fosstodon.org/@nlnetlabs) Unbound is a validating, recursive, caching DNS resolver. It is designed to be fast and lean and incorporates modern features based on open standards. If you From 20259462473c7567b684dbc592fa96c79c014163 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 5 Jan 2023 11:06:07 +0100 Subject: [PATCH 040/177] Changelog note for tag for 1.17.1rc1. - Tag for 1.17.1 release. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 7949df5f0..899026352 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 January 2023: Wouter + - Tag for 1.17.1 release. + 2 January 2023: Wouter - Fix windows compile for libunbound subprocess reap comm point closes. - Update github workflows to use checkout v3. From ba6325f24f6462420d3adf80a3c21848ab8e9fe0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 6 Jan 2023 09:16:59 +0100 Subject: [PATCH 041/177] - Fix #823: Response change to NODATA for some ANY queries since 1.12, tested on 1.16.1. --- doc/Changelog | 4 + testdata/val_any_negcache.rpl | 241 ++++++++++++++++++++++++++++++++++ validator/val_neg.c | 5 + 3 files changed, 250 insertions(+) create mode 100644 testdata/val_any_negcache.rpl diff --git a/doc/Changelog b/doc/Changelog index 899026352..13f7b475c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +6 January 2023: Wouter + - Fix #823: Response change to NODATA for some ANY queries since + 1.12, tested on 1.16.1. + 5 January 2023: Wouter - Tag for 1.17.1 release. diff --git a/testdata/val_any_negcache.rpl b/testdata/val_any_negcache.rpl new file mode 100644 index 000000000..662f0634a --- /dev/null +++ b/testdata/val_any_negcache.rpl @@ -0,0 +1,241 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + rrset-roundrobin: no + aggressive-nsec: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test validator with response to qtype ANY and negative cache. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response with NODATA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN LOC +SECTION AUTHORITY +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +ENTRY_END + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION ANSWER +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHq7BNVAeLW+Uw/rkjVS08lrMDk/AhR+bvChHfiE4jLb6uoyE54/irCuqA== ;{id = 2854} +example.com. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.example.com. +example.com. 600 IN RRSIG NAPTR 3 2 600 20070926134150 20070829134150 2854 example.com. MC0CFE8qs66bzuOyKmTIacamrmqabMRzAhUAn0MujX1LB0UpTHuLMgdgMgJJlq4= ;{id = 2854} +example.com. 86400 IN AAAA 2001:7b8:206:1::1 +example.com. 86400 IN RRSIG AAAA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFEqS4WHyqhUkv7t42TsBZJk/Q9paAhUAtTZ8GaXGpot0PmsM0oGzQU+2iw4= ;{id = 2854} +example.com. 86400 IN TXT "Stichting NLnet Labs" +example.com. 86400 IN RRSIG TXT 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH3otn2u8zXczBS8L0VKpyAYZGSkAhQLGaQclkzMAzlB5j73opFjdkh8TA== ;{id = 2854} +example.com. 86400 IN MX 100 v.net.example. +example.com. 86400 IN MX 50 open.example.com. +example.com. 86400 IN RRSIG MX 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFEKh3jeqh69zcOqWWv3GNKlMECPyAhR9HJkcPLqlyVWUccWDFJfGGcQfdg== ;{id = 2854} +example.com. 86400 IN NS v.net.example. +example.com. 86400 IN NS open.example.com. +example.com. 86400 IN NS ns7.domain-registry.example. +example.com. 86400 IN RRSIG NS 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCaRn30X4neKW7KYoTa2kcsoOLgfgIURvKEyDczLypWlx99KpxzMxRYhEc= ;{id = 2854} +example.com. 86400 IN A 213.154.224.1 +example.com. 86400 IN RRSIG A 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH8kSLxmRTwzlGDxvF1e4y/gM+5dAhQkzyQ2a6Gf+CMaHzVScaUvTt9HhQ== ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +ns7.domain-registry.example. 80173 IN A 62.4.86.230 +open.example.com. 600 IN A 213.154.224.1 +open.example.com. 600 IN AAAA 2001:7b8:206:1::53 +open.example.com. 600 IN AAAA 2001:7b8:206:1::1 +v.net.example. 28800 IN A 213.154.224.17 +v.net.example. 28800 IN AAAA 2001:7b8:206:1:200:39ff:fe59:b187 +johnny.example.com. 600 IN A 213.154.224.44 +open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} +open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} +johnny.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MCwCFAh0/zSpCd/9eMNz7AyfnuGQFD1ZAhQEpNFNw4XByNEcbi/vsVeii9kp7g== ;{id = 2854} +_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} +_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD DO +SECTION QUESTION +example.com. IN LOC +ENTRY_END + +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +example.com. IN LOC +SECTION ANSWER +SECTION AUTHORITY +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD DO +SECTION QUESTION +example.com. IN ANY +ENTRY_END + +; recursion happens here. +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +example.com. IN ANY +SECTION ANSWER +example.com. 86400 IN SOA open.example.com. hostmaster.example.com. 2007090400 28800 7200 604800 18000 +example.com. 86400 IN RRSIG SOA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCSs8KJepwaIp5vu++/0hk04lkXvgIUdphJSAE/MYob30WcRei9/nL49tE= ;{id = 2854} +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFHq7BNVAeLW+Uw/rkjVS08lrMDk/AhR+bvChHfiE4jLb6uoyE54/irCuqA== ;{id = 2854} +example.com. 600 IN NAPTR 20 0 "s" "SIP+D2U" "" _sip._udp.example.com. +example.com. 600 IN RRSIG NAPTR 3 2 600 20070926134150 20070829134150 2854 example.com. MC0CFE8qs66bzuOyKmTIacamrmqabMRzAhUAn0MujX1LB0UpTHuLMgdgMgJJlq4= ;{id = 2854} +example.com. 86400 IN AAAA 2001:7b8:206:1::1 +example.com. 86400 IN RRSIG AAAA 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFEqS4WHyqhUkv7t42TsBZJk/Q9paAhUAtTZ8GaXGpot0PmsM0oGzQU+2iw4= ;{id = 2854} +example.com. 86400 IN TXT "Stichting NLnet Labs" +example.com. 86400 IN RRSIG TXT 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH3otn2u8zXczBS8L0VKpyAYZGSkAhQLGaQclkzMAzlB5j73opFjdkh8TA== ;{id = 2854} +example.com. 86400 IN MX 100 v.net.example. +example.com. 86400 IN MX 50 open.example.com. +example.com. 86400 IN RRSIG MX 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFEKh3jeqh69zcOqWWv3GNKlMECPyAhR9HJkcPLqlyVWUccWDFJfGGcQfdg== ;{id = 2854} +example.com. 86400 IN NS v.net.example. +example.com. 86400 IN NS open.example.com. +example.com. 86400 IN NS ns7.domain-registry.example. +example.com. 86400 IN RRSIG NS 3 2 86400 20070926134150 20070829134150 2854 example.com. MC0CFQCaRn30X4neKW7KYoTa2kcsoOLgfgIURvKEyDczLypWlx99KpxzMxRYhEc= ;{id = 2854} +example.com. 86400 IN A 213.154.224.1 +example.com. 86400 IN RRSIG A 3 2 86400 20070926134150 20070829134150 2854 example.com. MCwCFH8kSLxmRTwzlGDxvF1e4y/gM+5dAhQkzyQ2a6Gf+CMaHzVScaUvTt9HhQ== ;{id = 2854} +example.com. 18000 IN NSEC _sip._udp.example.com. A NS SOA MX TXT AAAA NAPTR RRSIG NSEC DNSKEY +example.com. 18000 IN RRSIG NSEC 3 2 18000 20070926134150 20070829134150 2854 example.com. MCwCFBzOGtpgq4uJ2jeuLPYl2HowIRzDAhQVXNz1haQ1mI7z9lt5gcvWW+lFhA== ;{id = 2854} +SECTION AUTHORITY +SECTION ADDITIONAL +open.example.com. 600 IN A 213.154.224.1 +open.example.com. 600 IN AAAA 2001:7b8:206:1::53 +open.example.com. 600 IN AAAA 2001:7b8:206:1::1 +_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. +open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} +open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} +_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} +ENTRY_END + +SCENARIO_END diff --git a/validator/val_neg.c b/validator/val_neg.c index 67699b1f7..6990e9a06 100644 --- a/validator/val_neg.c +++ b/validator/val_neg.c @@ -1407,6 +1407,11 @@ val_neg_getmsg(struct val_neg_cache* neg, struct query_info* qinfo, /* Matching NSEC, use to generate No Data answer. Not creating answers * yet for No Data proven using wildcard. */ if(nsec && nsec_proves_nodata(nsec, qinfo, &nodata_wc) && !nodata_wc) { + /* do not create nodata answers for qtype ANY, it is a query + * type, not an rrtype to disprove. Nameerrors are useful for + * qtype ANY, in the else branch. */ + if(qinfo->qtype == LDNS_RR_TYPE_ANY) + return NULL; if(!(msg = dns_msg_create(qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, region, 2))) return NULL; From 90831af981221bbce1cd7b15055562336760e484 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 6 Jan 2023 13:21:39 +0100 Subject: [PATCH 042/177] - Fix wildcard in hyperlocal zone service degradation, reported by Sergey Kacheev. --- services/authzone.c | 1 + 1 file changed, 1 insertion(+) diff --git a/services/authzone.c b/services/authzone.c index 6de1e4319..3898767c7 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -2756,6 +2756,7 @@ az_change_dnames(struct dns_msg* msg, uint8_t* oldname, uint8_t* newname, == 0) { msg->rep->rrsets[i]->rk.dname = newname; msg->rep->rrsets[i]->rk.dname_len = newlen; + msg->rep->rrsets[i]->entry.hash = rrset_key_hash(&msg->rep->rrsets[i]->rk); } } } From c5c4f6d40b5d295137f5f3d0f0dd9274e769df42 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 6 Jan 2023 13:23:02 +0100 Subject: [PATCH 043/177] Changelog note for 1.17.1rc2 fix. - Fix wildcard in hyperlocal zone service degradation, reported by Sergey Kacheev. This fix is included in 1.17.1rc2. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 13f7b475c..d83320755 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 6 January 2023: Wouter - Fix #823: Response change to NODATA for some ANY queries since 1.12, tested on 1.16.1. + - Fix wildcard in hyperlocal zone service degradation, reported + by Sergey Kacheev. This fix is included in 1.17.1rc2. 5 January 2023: Wouter - Tag for 1.17.1 release. From 4517dcd439562cb1df07e77738153c0c906bb069 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 9 Jan 2023 15:03:38 +0100 Subject: [PATCH 044/177] - Fix python module install path detection. --- acx_python.m4 | 61 +++++++++++++++++++++++++++++----------- configure | 65 +++++++++++++++++++++++++++++++------------ doc/Changelog | 3 ++ pythonmod/pythonmod.c | 22 +++++++++++++++ 4 files changed, 117 insertions(+), 34 deletions(-) diff --git a/acx_python.m4 b/acx_python.m4 index 16c0c6fd9..c945d6c89 100644 --- a/acx_python.m4 +++ b/acx_python.m4 @@ -17,33 +17,62 @@ AC_DEFUN([AC_PYTHON_DEVEL],[ PYTHON_VERSION=`$PYTHON -c "import sys; \ print(sys.version.split()[[0]])"` fi + # calculate the version number components. + [ + v="$PYTHON_VERSION" + PYTHON_VERSION_MAJOR=`echo $v | sed 's/[^0-9].*//'` + if test -z "$PYTHON_VERSION_MAJOR"; then PYTHON_VERSION_MAJOR="0"; fi + v=`echo $v | sed -e 's/^[0-9]*$//' -e 's/[0-9]*[^0-9]//'` + PYTHON_VERSION_MINOR=`echo $v | sed 's/[^0-9].*//'` + if test -z "$PYTHON_VERSION_MINOR"; then PYTHON_VERSION_MINOR="0"; fi + v=`echo $v | sed -e 's/^[0-9]*$//' -e 's/[0-9]*[^0-9]//'` + PYTHON_VERSION_PATCH=`echo $v | sed 's/[^0-9].*//'` + if test -z "$PYTHON_VERSION_PATCH"; then PYTHON_VERSION_PATCH="0"; fi + ] - # Check if you have sysconfig - AC_MSG_CHECKING([for the sysconfig Python module]) - if ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`; then + # For some systems, sysconfig exists, but has the wrong paths, + # on Debian 10, for python 2.7 and 3.7. So, we check the version, + # and for older versions try distutils.sysconfig first. For newer + # versions>=3.10, where distutils.sysconfig is deprecated, use + # sysconfig first and then attempt the other one. + py_distutils_first="no" + if test $PYTHON_VERSION_MAJOR -lt 3; then + py_distutils_first="yes" + fi + if test $PYTHON_VERSION_MAJOR -eq 3 -a $PYTHON_VERSION_MINOR -lt 10; then + py_distutils_first="yes" + fi + + # Check if you have the first module + if test "$py_distutils_first" = "yes"; then m="distutils"; else m="sysconfig"; fi + sysconfig_module="" + AC_MSG_CHECKING([for the $m Python module]) + if ac_modulecheck_result1=`$PYTHON -c "import $m" 2>&1`; then AC_MSG_RESULT([yes]) - sysconfig_module="sysconfig" - # if yes, use sysconfig, because distutils is deprecated. + sysconfig_module="$m" else AC_MSG_RESULT([no]) - # if no, try to use distutils + fi - # - # Check if you have distutils, else fail - # - AC_MSG_CHECKING([for the distutils Python package]) - if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then + # if not found, try the other one. + if test -z "$sysconfig_module"; then + if test "$py_distutils_first" = "yes"; then m2="sysconfig"; else m2="distutils"; fi + AC_MSG_CHECKING([for the $m2 Python module]) + if ac_modulecheck_result2=`$PYTHON -c "import $m2" 2>&1`; then AC_MSG_RESULT([yes]) + sysconfig_module="$m2" else AC_MSG_RESULT([no]) - AC_MSG_ERROR([cannot import Python module "distutils". - Please check your Python installation. The error was: - $ac_distutils_result]) + AC_MSG_ERROR([cannot import Python module "$m", or "$m2". + Please check your Python installation. The errors are: + $m + $ac_modulecheck_result1 + $m2 + $ac_modulecheck_result2]) PYTHON_VERSION="" fi - - sysconfig_module="distutils.sysconfig" fi + if test "$sysconfig_module" = "distutils"; then sysconfig_module="distutils.sysconfig"; fi # # Check for Python include path diff --git a/configure b/configure index 5823e49f2..0694dce86 100755 --- a/configure +++ b/configure @@ -17541,39 +17541,68 @@ fi PYTHON_VERSION=`$PYTHON -c "import sys; \ print(sys.version.split()[0])"` fi + # calculate the version number components. - # Check if you have sysconfig - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the sysconfig Python module" >&5 -$as_echo_n "checking for the sysconfig Python module... " >&6; } - if ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`; then + v="$PYTHON_VERSION" + PYTHON_VERSION_MAJOR=`echo $v | sed 's/[^0-9].*//'` + if test -z "$PYTHON_VERSION_MAJOR"; then PYTHON_VERSION_MAJOR="0"; fi + v=`echo $v | sed -e 's/^[0-9]*$//' -e 's/[0-9]*[^0-9]//'` + PYTHON_VERSION_MINOR=`echo $v | sed 's/[^0-9].*//'` + if test -z "$PYTHON_VERSION_MINOR"; then PYTHON_VERSION_MINOR="0"; fi + v=`echo $v | sed -e 's/^[0-9]*$//' -e 's/[0-9]*[^0-9]//'` + PYTHON_VERSION_PATCH=`echo $v | sed 's/[^0-9].*//'` + if test -z "$PYTHON_VERSION_PATCH"; then PYTHON_VERSION_PATCH="0"; fi + + + # For some systems, sysconfig exists, but has the wrong paths, + # on Debian 10, for python 2.7 and 3.7. So, we check the version, + # and for older versions try distutils.sysconfig first. For newer + # versions>=3.10, where distutils.sysconfig is deprecated, use + # sysconfig first and then attempt the other one. + py_distutils_first="no" + if test $PYTHON_VERSION_MAJOR -lt 3; then + py_distutils_first="yes" + fi + if test $PYTHON_VERSION_MAJOR -eq 3 -a $PYTHON_VERSION_MINOR -lt 10; then + py_distutils_first="yes" + fi + + # Check if you have the first module + if test "$py_distutils_first" = "yes"; then m="distutils"; else m="sysconfig"; fi + sysconfig_module="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the $m Python module" >&5 +$as_echo_n "checking for the $m Python module... " >&6; } + if ac_modulecheck_result1=`$PYTHON -c "import $m" 2>&1`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - sysconfig_module="sysconfig" - # if yes, use sysconfig, because distutils is deprecated. + sysconfig_module="$m" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - # if no, try to use distutils + fi - # - # Check if you have distutils, else fail - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 -$as_echo_n "checking for the distutils Python package... " >&6; } - if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then + # if not found, try the other one. + if test -z "$sysconfig_module"; then + if test "$py_distutils_first" = "yes"; then m2="sysconfig"; else m2="distutils"; fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the $m2 Python module" >&5 +$as_echo_n "checking for the $m2 Python module... " >&6; } + if ac_modulecheck_result2=`$PYTHON -c "import $m2" 2>&1`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } + sysconfig_module="$m2" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error $? "cannot import Python module \"distutils\". - Please check your Python installation. The error was: - $ac_distutils_result" "$LINENO" 5 + as_fn_error $? "cannot import Python module \"$m\", or \"$m2\". + Please check your Python installation. The errors are: + $m + $ac_modulecheck_result1 + $m2 + $ac_modulecheck_result2" "$LINENO" 5 PYTHON_VERSION="" fi - - sysconfig_module="distutils.sysconfig" fi + if test "$sysconfig_module" = "distutils"; then sysconfig_module="distutils.sysconfig"; fi # # Check for Python include path diff --git a/doc/Changelog b/doc/Changelog index d83320755..f8d5b5668 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +9 January 2023: Wouter + - Fix python module install path detection. + 6 January 2023: Wouter - Fix #823: Response change to NODATA for some ANY queries since 1.12, tested on 1.16.1. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 7c7da5489..28ce0eec4 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -330,6 +330,27 @@ int pythonmod_init(struct module_env* env, int id) } /* Check if sysconfig is there and use that instead of distutils; * distutils.sysconfig is deprecated in Python 3.10. */ +#if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION <= 9) + /* For older versions, first try distutils.sysconfig because the + * sysconfig paths may contain wrong values, eg. on Debian10 for + * python 2.7 and 3.7. */ + if(PyRun_SimpleString("import distutils.sysconfig \n") < 0) { + log_info("pythonmod: module distutils.sysconfig not available; " + "falling back to sysconfig."); + if(PyRun_SimpleString("import sysconfig \n") < 0 + || PyRun_SimpleString("sys.path.append(" + "sysconfig.get_path('platlib')) \n") < 0) { + goto python_init_fail; + } + } else { + if(PyRun_SimpleString("sys.path.append(" + "distutils.sysconfig.get_python_lib(1,0)) \n") < 0) { + goto python_init_fail; + } + } +#else + /* Python 3.10 and higher, check sysconfig first, + * distutils is deprecated. */ if(PyRun_SimpleString("import sysconfig \n") < 0) { log_info("pythonmod: module sysconfig not available; " "falling back to distutils.sysconfig."); @@ -344,6 +365,7 @@ int pythonmod_init(struct module_env* env, int id) goto python_init_fail; } } +#endif if(PyRun_SimpleString("from unboundmodule import *\n") < 0) { goto python_init_fail; From 0fed35a4b713eb7474394a8562b896f45cf74115 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 9 Jan 2023 15:10:00 +0100 Subject: [PATCH 045/177] - Fix python version detection in configure. --- configure | 9 ++++++++- configure.ac | 9 ++++++++- doc/Changelog | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 0694dce86..d89e4413a 100755 --- a/configure +++ b/configure @@ -17734,7 +17734,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # if test ! -z "$PYTHON_VERSION"; then - if test `$PYTHON -c "print('$PYTHON_VERSION' >= '2.4.0')"` = "False"; then + badversion="no" + if test "$PYTHON_VERSION_MAJOR" -lt 2; then + badversion="yes" + fi + if test "$PYTHON_VERSION_MAJOR" -eq 2 -a "$PYTHON_VERSION_MINOR" -lt 4; then + badversion="yes" + fi + if test "$badversion" = "yes"; then as_fn_error $? "Python version >= 2.4.0 is required" "$LINENO" 5 fi diff --git a/configure.ac b/configure.ac index 2c7583310..c7d3a08f1 100644 --- a/configure.ac +++ b/configure.ac @@ -734,7 +734,14 @@ if test x_$ub_test_python != x_no; then ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS AC_PYTHON_DEVEL if test ! -z "$PYTHON_VERSION"; then - if test `$PYTHON -c "print('$PYTHON_VERSION' >= '2.4.0')"` = "False"; then + badversion="no" + if test "$PYTHON_VERSION_MAJOR" -lt 2; then + badversion="yes" + fi + if test "$PYTHON_VERSION_MAJOR" -eq 2 -a "$PYTHON_VERSION_MINOR" -lt 4; then + badversion="yes" + fi + if test "$badversion" = "yes"; then AC_MSG_ERROR([Python version >= 2.4.0 is required]) fi diff --git a/doc/Changelog b/doc/Changelog index f8d5b5668..d0db27d62 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 9 January 2023: Wouter - Fix python module install path detection. + - Fix python version detection in configure. 6 January 2023: Wouter - Fix #823: Response change to NODATA for some ANY queries since From aa621f1c045deabf4fd211466aba8f1db692a9d9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Jan 2023 10:21:28 +0100 Subject: [PATCH 046/177] Code repository continues with version 1.17.2. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 2 ++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/configure b/configure index d89e4413a..29bb4d6cf 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.17.1. +# Generated by GNU Autoconf 2.69 for unbound 1.17.2. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.17.1' -PACKAGE_STRING='unbound 1.17.1' +PACKAGE_VERSION='1.17.2' +PACKAGE_STRING='unbound 1.17.2' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1477,7 +1477,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.17.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.17.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1543,7 +1543,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.17.1:";; + short | recursive ) echo "Configuration of unbound 1.17.2:";; esac cat <<\_ACEOF @@ -1785,7 +1785,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.17.1 +unbound configure 1.17.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2494,7 +2494,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.17.1, which was +It was created by unbound $as_me 1.17.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2846,11 +2846,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=17 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=2 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=21 +LIBUNBOUND_REVISION=22 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2939,6 +2939,7 @@ LIBUNBOUND_AGE=1 # 1.16.3 had 9:19:1 # 1.17.0 had 9:20:1 # 1.17.1 had 9:21:1 +# 1.17.2 had 9:22:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -22122,7 +22123,7 @@ _ACEOF -version=1.17.1 +version=1.17.2 date=`date +'%b %e, %Y'` @@ -22641,7 +22642,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.17.1, which was +This file was extended by unbound $as_me 1.17.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22707,7 +22708,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.17.1 +unbound config.status 1.17.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index c7d3a08f1..708427d1d 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[17]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MICRO],[2]) AC_INIT([unbound],m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]),[unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues],[unbound]) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=21 +LIBUNBOUND_REVISION=22 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -107,6 +107,7 @@ LIBUNBOUND_AGE=1 # 1.16.3 had 9:19:1 # 1.17.0 had 9:20:1 # 1.17.1 had 9:21:1 +# 1.17.2 had 9:22:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index d0db27d62..37c081293 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,8 @@ 1.12, tested on 1.16.1. - Fix wildcard in hyperlocal zone service degradation, reported by Sergey Kacheev. This fix is included in 1.17.1rc2. + That became 1.17.1 on 12 Jan 2023, the code repo continues + with 1.17.2. 1.17.1 excludes fix #823, it is included forwards. 5 January 2023: Wouter - Tag for 1.17.1 release. From 52a4ccee185de28c2effc0a92a23bc6e42f910c8 Mon Sep 17 00:00:00 2001 From: Sergey Kacheev Date: Fri, 13 Jan 2023 13:33:38 +0700 Subject: [PATCH 047/177] add a metric about the maximum number of collisions in lrushah --- daemon/remote.c | 5 +++++ daemon/stats.c | 6 ++++-- libunbound/unbound.h | 5 +++++ smallapp/unbound-control.c | 3 +++ testcode/unitlruhash.c | 22 +++++++++++----------- util/storage/lruhash.c | 25 ++++++++++++++++++------- util/storage/lruhash.h | 5 ++++- util/storage/slabhash.c | 18 ++++++++++++++++++ util/storage/slabhash.h | 9 +++++++++ 9 files changed, 77 insertions(+), 21 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 7c5a036f3..309d46ae9 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1065,6 +1065,11 @@ print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) (unsigned)s->svr.infra_cache_count)) return 0; if(!ssl_printf(ssl, "key.cache.count"SQ"%u\n", (unsigned)s->svr.key_cache_count)) return 0; + /* max collisions */ + if(!ssl_printf(ssl, "msg.cache.max_collisions"SQ"%u\n", + (unsigned)s->svr.msg_cache_max_collisions)) return 0; + if(!ssl_printf(ssl, "rrset.cache.max_collisions"SQ"%u\n", + (unsigned)s->svr.rrset_cache_max_collisions)) return 0; /* applied RPZ actions */ for(i=0; isvr.queries_ratelimited = (long long)get_queries_ratelimit(worker, reset); /* get cache sizes */ - s->svr.msg_cache_count = (long long)count_slabhash_entries(worker->env.msg_cache); - s->svr.rrset_cache_count = (long long)count_slabhash_entries(&worker->env.rrset_cache->table); + get_slabhash_stats(worker->env.msg_cache, + &s->svr.msg_cache_count, &s->svr.msg_cache_max_collisions); + get_slabhash_stats(&worker->env.rrset_cache->table, + &s->svr.rrset_cache_count, &s->svr.rrset_cache_max_collisions); s->svr.infra_cache_count = (long long)count_slabhash_entries(worker->env.infra_cache->hosts); if(worker->env.key_cache) s->svr.key_cache_count = (long long)count_slabhash_entries(worker->env.key_cache->slab); diff --git a/libunbound/unbound.h b/libunbound/unbound.h index c779d183e..221ef7f9d 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -788,6 +788,11 @@ struct ub_server_stats { /** number of key cache entries */ long long key_cache_count; + /** maximum number of collisions in the msg cache */ + long long msg_cache_max_collisions; + /** maximum number of collisions in the rrset cache */ + long long rrset_cache_max_collisions; + /** number of queries that used dnscrypt */ long long num_query_dnscrypt_crypted; /** number of queries that queried dnscrypt certificates */ diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 821c490c3..bae8e4e76 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -403,6 +403,9 @@ static void print_extended(struct ub_stats_info* s, int inhibit_zero) PR_UL("rrset.cache.count", s->svr.rrset_cache_count); PR_UL("infra.cache.count", s->svr.infra_cache_count); PR_UL("key.cache.count", s->svr.key_cache_count); + /* max collisions */ + PR_UL("msg.cache.max_collisions", s->svr.msg_cache_max_collisions); + PR_UL("rrset.cache.max_collisions", s->svr.rrset_cache_max_collisions); /* applied RPZ actions */ for(i=0; ientry); /* find in empty list */ - unit_assert( bin_find_entry(table, &bin, h, k) == NULL ); + unit_assert( bin_find_entry(table, &bin, h, k, NULL) == NULL ); /* insert */ lock_quick_lock(&bin.lock); @@ -102,20 +102,20 @@ test_bin_find_entry(struct lruhash* table) lock_quick_unlock(&bin.lock); /* find, hash not OK. */ - unit_assert( bin_find_entry(table, &bin, myhash(13), k) == NULL ); + unit_assert( bin_find_entry(table, &bin, myhash(13), k, NULL) == NULL ); /* find, hash OK, but cmp not */ unit_assert( k->entry.hash == k2->entry.hash ); - unit_assert( bin_find_entry(table, &bin, h, k2) == NULL ); + unit_assert( bin_find_entry(table, &bin, h, k2, NULL) == NULL ); /* find, hash OK, and cmp too */ - unit_assert( bin_find_entry(table, &bin, h, k) == &k->entry ); + unit_assert( bin_find_entry(table, &bin, h, k, NULL) == &k->entry ); /* remove the element */ lock_quick_lock(&bin.lock); bin_overflow_remove(&bin, &k->entry); lock_quick_unlock(&bin.lock); - unit_assert( bin_find_entry(table, &bin, h, k) == NULL ); + unit_assert( bin_find_entry(table, &bin, h, k, NULL) == NULL ); /* prepend two different elements; so the list is long */ /* one has the same hash, but different cmp */ @@ -127,28 +127,28 @@ test_bin_find_entry(struct lruhash* table) lock_quick_unlock(&bin.lock); /* find, hash not OK. */ - unit_assert( bin_find_entry(table, &bin, myhash(13), k) == NULL ); + unit_assert( bin_find_entry(table, &bin, myhash(13), k, NULL) == NULL ); /* find, hash OK, but cmp not */ unit_assert( k->entry.hash == k2->entry.hash ); - unit_assert( bin_find_entry(table, &bin, h, k2) == NULL ); + unit_assert( bin_find_entry(table, &bin, h, k2, NULL) == NULL ); /* find, hash OK, and cmp too */ - unit_assert( bin_find_entry(table, &bin, h, k) == &k->entry ); + unit_assert( bin_find_entry(table, &bin, h, k, NULL) == &k->entry ); /* remove middle element */ - unit_assert( bin_find_entry(table, &bin, k4->entry.hash, k4) + unit_assert( bin_find_entry(table, &bin, k4->entry.hash, k4, NULL) == &k4->entry ); lock_quick_lock(&bin.lock); bin_overflow_remove(&bin, &k4->entry); lock_quick_unlock(&bin.lock); - unit_assert( bin_find_entry(table, &bin, k4->entry.hash, k4) == NULL); + unit_assert( bin_find_entry(table, &bin, k4->entry.hash, k4, NULL) == NULL); /* remove last element */ lock_quick_lock(&bin.lock); bin_overflow_remove(&bin, &k->entry); lock_quick_unlock(&bin.lock); - unit_assert( bin_find_entry(table, &bin, h, k) == NULL ); + unit_assert( bin_find_entry(table, &bin, h, k, NULL) == NULL ); lock_quick_destroy(&bin.lock); delkey(k); diff --git a/util/storage/lruhash.c b/util/storage/lruhash.c index 3500a4ef0..e17b180db 100644 --- a/util/storage/lruhash.c +++ b/util/storage/lruhash.c @@ -81,6 +81,7 @@ lruhash_create(size_t start_size, size_t maxmem, table->num = 0; table->space_used = 0; table->space_max = maxmem; + table->max_collisions = 0; table->array = calloc(table->size, sizeof(struct lruhash_bin)); if(!table->array) { lock_quick_destroy(&table->lock); @@ -216,15 +217,19 @@ reclaim_space(struct lruhash* table, struct lruhash_entry** list) struct lruhash_entry* bin_find_entry(struct lruhash* table, - struct lruhash_bin* bin, hashvalue_type hash, void* key) + struct lruhash_bin* bin, hashvalue_type hash, void* key, size_t* collisions) { + size_t c = 0; struct lruhash_entry* p = bin->overflow_list; while(p) { if(p->hash == hash && table->compfunc(p->key, key) == 0) - return p; + break; + c++; p = p->overflow_next; } - return NULL; + if (collisions != NULL) + *collisions = c; + return p; } void @@ -303,6 +308,7 @@ lruhash_insert(struct lruhash* table, hashvalue_type hash, struct lruhash_bin* bin; struct lruhash_entry* found, *reclaimlist=NULL; size_t need_size; + size_t collisions; fptr_ok(fptr_whitelist_hash_sizefunc(table->sizefunc)); fptr_ok(fptr_whitelist_hash_delkeyfunc(table->delkeyfunc)); fptr_ok(fptr_whitelist_hash_deldatafunc(table->deldatafunc)); @@ -317,12 +323,14 @@ lruhash_insert(struct lruhash* table, hashvalue_type hash, lock_quick_lock(&bin->lock); /* see if entry exists already */ - if(!(found=bin_find_entry(table, bin, hash, entry->key))) { + if(!(found=bin_find_entry(table, bin, hash, entry->key, &collisions))) { /* if not: add to bin */ entry->overflow_next = bin->overflow_list; bin->overflow_list = entry; lru_front(table, entry); table->num++; + if (table->max_collisions < collisions) + table->max_collisions = collisions; table->space_used += need_size; } else { /* if so: update data - needs a writelock */ @@ -362,7 +370,7 @@ lruhash_lookup(struct lruhash* table, hashvalue_type hash, void* key, int wr) lock_quick_lock(&table->lock); bin = &table->array[hash & table->size_mask]; lock_quick_lock(&bin->lock); - if((entry=bin_find_entry(table, bin, hash, key))) + if((entry=bin_find_entry(table, bin, hash, key, NULL))) lru_touch(table, entry); lock_quick_unlock(&table->lock); @@ -389,7 +397,7 @@ lruhash_remove(struct lruhash* table, hashvalue_type hash, void* key) lock_quick_lock(&table->lock); bin = &table->array[hash & table->size_mask]; lock_quick_lock(&bin->lock); - if((entry=bin_find_entry(table, bin, hash, key))) { + if((entry=bin_find_entry(table, bin, hash, key, NULL))) { bin_overflow_remove(bin, entry); lru_remove(table, entry); } else { @@ -579,6 +587,7 @@ lruhash_insert_or_retrieve(struct lruhash* table, hashvalue_type hash, struct lruhash_bin* bin; struct lruhash_entry* found, *reclaimlist = NULL; size_t need_size; + size_t collisions; fptr_ok(fptr_whitelist_hash_sizefunc(table->sizefunc)); fptr_ok(fptr_whitelist_hash_delkeyfunc(table->delkeyfunc)); fptr_ok(fptr_whitelist_hash_deldatafunc(table->deldatafunc)); @@ -593,7 +602,7 @@ lruhash_insert_or_retrieve(struct lruhash* table, hashvalue_type hash, lock_quick_lock(&bin->lock); /* see if entry exists already */ - if ((found = bin_find_entry(table, bin, hash, entry->key)) != NULL) { + if ((found = bin_find_entry(table, bin, hash, entry->key, &collisions)) != NULL) { /* if so: keep the existing data - acquire a writelock */ lock_rw_wrlock(&found->lock); } @@ -604,6 +613,8 @@ lruhash_insert_or_retrieve(struct lruhash* table, hashvalue_type hash, bin->overflow_list = entry; lru_front(table, entry); table->num++; + if (table->max_collisions < collisions) + table->max_collisions = collisions; table->space_used += need_size; /* return the entry that was presented, and lock it */ found = entry; diff --git a/util/storage/lruhash.h b/util/storage/lruhash.h index 4759b5001..2086e4dec 100644 --- a/util/storage/lruhash.h +++ b/util/storage/lruhash.h @@ -178,6 +178,8 @@ struct lruhash { size_t space_used; /** the amount of space the hash table is maximally allowed to use. */ size_t space_max; + /** the maximum collisions were detected during the lruhash_insert operations. */ + size_t max_collisions; }; /** @@ -357,10 +359,11 @@ void bin_delete(struct lruhash* table, struct lruhash_bin* bin); * @param bin: hash bin to look into. * @param hash: hash value to look for. * @param key: key to look for. + * @param collisions: how many collisions were found during the search. * @return: the entry or NULL if not found. */ struct lruhash_entry* bin_find_entry(struct lruhash* table, - struct lruhash_bin* bin, hashvalue_type hash, void* key); + struct lruhash_bin* bin, hashvalue_type hash, void* key, size_t* collisions); /** * Remove entry from bin overflow chain. diff --git a/util/storage/slabhash.c b/util/storage/slabhash.c index a6c3d0fa6..7d376c4d6 100644 --- a/util/storage/slabhash.c +++ b/util/storage/slabhash.c @@ -242,3 +242,21 @@ size_t count_slabhash_entries(struct slabhash* sh) } return cnt; } + +void get_slabhash_stats(struct slabhash* sh, long long* num, long long* collisions) +{ + size_t slab, cnt = 0, max_collisions = 0; + + for(slab=0; slabsize; slab++) { + lock_quick_lock(&sh->array[slab]->lock); + cnt += sh->array[slab]->num; + if (max_collisions < sh->array[slab]->max_collisions) { + max_collisions = sh->array[slab]->max_collisions; + } + lock_quick_unlock(&sh->array[slab]->lock); + } + if (num != NULL) + *num = cnt; + if (collisions != NULL) + *collisions = max_collisions; +} diff --git a/util/storage/slabhash.h b/util/storage/slabhash.h index 4ecb60421..dc5fc3603 100644 --- a/util/storage/slabhash.h +++ b/util/storage/slabhash.h @@ -200,6 +200,15 @@ void slabhash_traverse(struct slabhash* table, int wr, */ size_t count_slabhash_entries(struct slabhash* table); +/** + * Retrieves number of items in slabhash and the current max collision level + * @param table: slabbed hash table. + * @param entries_count: where to save the current number of elements. + * @param max_collisions: where to save the current max collisions level. + */ +void get_slabhash_stats(struct slabhash* table, + long long* entries_count, long long* max_collisions); + /* --- test representation --- */ /** test structure contains test key */ struct slabhash_testkey { From 469133e8df8ecaf095d0d2fbe4f6b23f9ccebe23 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 13 Jan 2023 11:01:46 +0100 Subject: [PATCH 048/177] =?UTF-8?q?Changelog=20note=20and=20documentation?= =?UTF-8?q?=20for=20#826=20-=20Merge=20#826:=20=D0=90dd=20a=20metric=20abo?= =?UTF-8?q?ut=20the=20maximum=20number=20of=20collisions=20in=20=20=20lrus?= =?UTF-8?q?hah.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 4 ++++ doc/unbound-control.8.in | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 37c081293..1830b82f3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +13 January 2023: Wouter + - Merge #826: Аdd a metric about the maximum number of collisions in + lrushah. + 9 January 2023: Wouter - Fix python module install path detection. - Fix python version detection in configure. diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index fd165cb52..794da34be 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -653,6 +653,18 @@ timing and protocol support information. The number of items in the key cache. These are DNSSEC keys, one item per delegation point, and their validation status. .TP +.I msg.cache.max_collisions +The maximum number of hash table collisions in the msg cache. This is the +number of hashes that are identical when a new element is inserted in the +hash table. If the value is very large, something is wrong with the performance +of the hash table, hash values are incorrect or malicious. +.TP +.I rrset.cache.max_collisions +The maximum number of hash table collisions in the rrset cache. This is the +number of hashes that are identical when a new element is inserted in the +hash table. If the value is very large, something is wrong with the performance +of the hash table, hash values are incorrect or malicious. +.TP .I dnscrypt_shared_secret.cache.count The number of items in the shared secret cache. These are precomputed shared secrets for a given client public key/server secret key pair. Shared secrets From 90d42148de4fecd0db0be611a3530a0e24698772 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 13 Jan 2023 11:22:47 +0100 Subject: [PATCH 049/177] - Improve documentation for #826, describe the large collisions amount. --- doc/Changelog | 1 + doc/unbound-control.8.in | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 1830b82f3..5b37c57be 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 13 January 2023: Wouter - Merge #826: Аdd a metric about the maximum number of collisions in lrushah. + - Improve documentation for #826, describe the large collisions amount. 9 January 2023: Wouter - Fix python module install path detection. diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 794da34be..18bfd44d8 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -656,14 +656,14 @@ per delegation point, and their validation status. .I msg.cache.max_collisions The maximum number of hash table collisions in the msg cache. This is the number of hashes that are identical when a new element is inserted in the -hash table. If the value is very large, something is wrong with the performance -of the hash table, hash values are incorrect or malicious. +hash table. If the value is very large, like hundreds, something is wrong +with the performance of the hash table, hash values are incorrect or malicious. .TP .I rrset.cache.max_collisions The maximum number of hash table collisions in the rrset cache. This is the number of hashes that are identical when a new element is inserted in the -hash table. If the value is very large, something is wrong with the performance -of the hash table, hash values are incorrect or malicious. +hash table. If the value is very large, like hundreds, something is wrong +with the performance of the hash table, hash values are incorrect or malicious. .TP .I dnscrypt_shared_secret.cache.count The number of items in the shared secret cache. These are precomputed shared From cfd3bcb21eeec8b81ea41f706b6bdb87ac034b1a Mon Sep 17 00:00:00 2001 From: Christian McDonald Date: Fri, 13 Jan 2023 16:39:28 -0500 Subject: [PATCH 050/177] eliminate unnecessary Python reloading which causes memory leaks --- pythonmod/pythonmod.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 28ce0eec4..19b464633 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -252,6 +252,16 @@ cleanup: Py_XDECREF(exc_tb); } +/* we only want to unwind Python once at exit */ +void pythonmod_atexit(void) +{ + assert(py_mod_count == 0); + assert(maimthr != NULL); + + PyEval_RestoreThread(mainthr); + Py_Finalize(); +} + int pythonmod_init(struct module_env* env, int id) { int py_mod_idx = py_mod_count++; @@ -310,6 +320,9 @@ int pythonmod_init(struct module_env* env, int id) #endif SWIG_init(); mainthr = PyEval_SaveThread(); + + /* XXX: register callback to unwind Python at exit */ + atexit(pythonmod_atexit); } gil = PyGILState_Ensure(); @@ -547,11 +560,7 @@ void pythonmod_deinit(struct module_env* env, int id) Py_XDECREF(pe->data); PyGILState_Release(gil); - if(--py_mod_count==0) { - PyEval_RestoreThread(mainthr); - Py_Finalize(); - mainthr = NULL; - } + py_mod_count--; } pe->fname = NULL; free(pe); From b12ab31ae36ae2b124748d37835d74dca15b161f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 18 Jan 2023 13:18:47 +0100 Subject: [PATCH 051/177] - Fix not following cleared RD flags potentially enables amplification DDoS attacks, reported by Xiang Li and Wei Xu from NISL Lab, Tsinghua University. The fix stops query loops, by refusing to send RD=0 queries to a forwarder, they still get answered from cache. --- doc/Changelog | 6 ++++++ iterator/iterator.c | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 5b37c57be..4fd636e36 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +18 January 2023: Wouter + - Fix not following cleared RD flags potentially enables amplification + DDoS attacks, reported by Xiang Li and Wei Xu from NISL Lab, + Tsinghua University. The fix stops query loops, by refusing to send + RD=0 queries to a forwarder, they still get answered from cache. + 13 January 2023: Wouter - Merge #826: Аdd a metric about the maximum number of collisions in lrushah. diff --git a/iterator/iterator.c b/iterator/iterator.c index 33095b2b5..751179496 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1451,6 +1451,19 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, errinf(qstate, "malloc failure for forward zone"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } + if((qstate->query_flags&BIT_RD)==0) { + /* If the server accepts RD=0 queries and forwards + * with RD=1, then if the server is listed as an NS + * entry, it starts query loops. Stop that loop by + * disallowing the query. The RD=0 was previously used + * to check the cache with allow_snoop. For stubs, + * the iterator pass would have primed the stub and + * then cached information can be used for further + * queries. */ + verbose(VERB_ALGO, "cannot forward RD=0 query, to stop query loops"); + errinf(qstate, "cannot forward RD=0 query"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } iq->refetch_glue = 0; iq->minimisation_state = DONOT_MINIMISE_STATE; /* the request has been forwarded. From d69f875261341f0cb44bf673e067576261393157 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 19 Jan 2023 14:16:17 +0100 Subject: [PATCH 052/177] - Set max-udp-size default to 1232. This is the same default value as the default value for edns-buffer-size. It restricts client edns buffer size choices, and makes unbound behave similar to other DNS resolvers. The new choice, down from 4096 means it is harder to get large responses from Unbound. Thanks to Xiang Li, from NISL Lab, Tsinghua University. --- doc/Changelog | 8 ++++++++ doc/example.conf.in | 4 ++-- doc/unbound.conf.5.in | 3 ++- util/config_file.c | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4fd636e36..6ba6ead03 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,11 @@ +19 January 2023: Wouter + - Set max-udp-size default to 1232. This is the same default value as + the default value for edns-buffer-size. It restricts client edns + buffer size choices, and makes unbound behave similar to other DNS + resolvers. The new choice, down from 4096 means it is harder to get + large responses from Unbound. Thanks to Xiang Li, from NISL Lab, + Tsinghua University. + 18 January 2023: Wouter - Fix not following cleared RD flags potentially enables amplification DDoS attacks, reported by Xiang Li and Wei Xu from NISL Lab, diff --git a/doc/example.conf.in b/doc/example.conf.in index 47c3c4891..1e74f7029 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -143,8 +143,8 @@ server: # edns-buffer-size: 1232 # Maximum UDP response size (not applied to TCP response). - # Suggested values are 512 to 4096. Default is 4096. 65536 disables it. - # max-udp-size: 4096 + # Suggested values are 512 to 4096. Default is 1232. 65536 disables it. + # max-udp-size: 1232 # max memory to use for stream(tcp and tls) waiting result buffers. # stream-wait-size: 4m diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 572ebc34f..aaf900a8c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -233,7 +233,8 @@ number). .B max\-udp\-size: \fI Maximum UDP response size (not applied to TCP response). 65536 disables the udp response size maximum, and uses the choice from the client, always. -Suggested values are 512 to 4096. Default is 4096. +Suggested values are 512 to 4096. Default is 1232. The default value is the +same as the default for edns\-buffer\-size. .TP .B stream\-wait\-size: \fI Number of bytes size maximum to use for waiting stream buffers. Default is diff --git a/util/config_file.c b/util/config_file.c index e3a770537..843bec2fa 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -300,7 +300,7 @@ config_create(void) cfg->minimal_responses = 1; cfg->rrset_roundrobin = 1; cfg->unknown_server_time_limit = 376; - cfg->max_udp_size = 4096; + cfg->max_udp_size = 1232; /* value taken from edns_buffer_size */ if(!(cfg->server_key_file = strdup(RUN_DIR"/unbound_server.key"))) goto error_exit; if(!(cfg->server_cert_file = strdup(RUN_DIR"/unbound_server.pem"))) From 8df1e58209458b9ff62b00c29d01964570d82cbb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 19 Jan 2023 14:59:18 +0100 Subject: [PATCH 053/177] - Add harden-unknown-additional option. Default on and it removes unknown records from the authority section and additional section. Thanks to Xiang Li, from NISL Lab, Tsinghua University. --- doc/Changelog | 3 + doc/example.conf.in | 4 + doc/unbound.conf.5.in | 5 + iterator/iter_scrub.c | 43 +- testdata/val_any.rpl | 2 - testdata/val_any_dname.rpl | 2 + testdata/val_any_negcache.rpl | 2 - util/config_file.c | 3 + util/config_file.h | 3 + util/configlexer.c | 4972 +++++++++++++++++---------------- util/configlexer.lex | 1 + util/configparser.c | 3741 +++++++++++++------------ util/configparser.h | 10 +- util/configparser.y | 14 +- 14 files changed, 4477 insertions(+), 4328 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 6ba6ead03..2de00f017 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,9 @@ resolvers. The new choice, down from 4096 means it is harder to get large responses from Unbound. Thanks to Xiang Li, from NISL Lab, Tsinghua University. + - Add harden-unknown-additional option. Default on and it removes + unknown records from the authority section and additional section. + Thanks to Xiang Li, from NISL Lab, Tsinghua University. 18 January 2023: Wouter - Fix not following cleared RD flags potentially enables amplification diff --git a/doc/example.conf.in b/doc/example.conf.in index 1e74f7029..ca8f95a5e 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -503,6 +503,10 @@ server: # to validate the zone. # harden-algo-downgrade: no + # Harden against unknown records in the authority section and the + # additional section. + # harden-unknown-additional: yes + # Sent minimum amount of information to upstream servers to enhance # privacy. Only sent minimum required labels of the QNAME and set QTYPE # to A when possible. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index aaf900a8c..075f4b28e 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1020,6 +1020,11 @@ validate the zone. Default is no. Zone signers must produce zones that allow this feature to work, but sometimes they do not, and turning this option off avoids that validation failure. .TP +.B harden\-unknown\-additional: \fI +Harden against unknown records in the authority section and additional +section. Default is yes. If no, such records are copied from the upstream +and presented to the client together with the answer. +.TP .B use\-caps\-for\-id: \fI Use 0x20\-encoded random bits in the query to foil spoof attempts. This perturbs the lowercase and uppercase of query names sent to diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c index f093c1bf9..d1fedcd0f 100644 --- a/iterator/iter_scrub.c +++ b/iterator/iter_scrub.c @@ -346,6 +346,26 @@ soa_in_auth(struct msg_parse* msg) return 0; } +/** Check if type is allowed in the authority section */ +static int +type_allowed_in_authority_section(uint16_t tp) +{ + if(tp == LDNS_RR_TYPE_SOA || tp == LDNS_RR_TYPE_NS || + tp == LDNS_RR_TYPE_DS || tp == LDNS_RR_TYPE_NSEC || + tp == LDNS_RR_TYPE_NSEC3) + return 1; + return 0; +} + +/** Check if type is allowed in the additional section */ +static int +type_allowed_in_additional_section(uint16_t tp) +{ + if(tp == LDNS_RR_TYPE_A || tp == LDNS_RR_TYPE_AAAA) + return 1; + return 0; +} + /** * This routine normalizes a response. This includes removing "irrelevant" * records from the answer and additional sections and (re)synthesizing @@ -355,11 +375,13 @@ soa_in_auth(struct msg_parse* msg) * @param msg: msg to normalize. * @param qinfo: original query. * @param region: where to allocate synthesized CNAMEs. + * @param env: module env with config options. * @return 0 on error. */ static int scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, - struct query_info* qinfo, struct regional* region) + struct query_info* qinfo, struct regional* region, + struct module_env* env) { uint8_t* sname = qinfo->qname; size_t snamelen = qinfo->qname_len; @@ -511,6 +533,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, /* Mark additional names from AUTHORITY */ while(rrset && rrset->section == LDNS_SECTION_AUTHORITY) { + /* protect internals of recursor by making sure to del these */ if(rrset->type==LDNS_RR_TYPE_DNAME || rrset->type==LDNS_RR_TYPE_CNAME || rrset->type==LDNS_RR_TYPE_A || @@ -519,6 +542,13 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, "RRset:", pkt, msg, prev, &rrset); continue; } + /* Allowed list of types in the authority section */ + if(env->cfg->harden_unknown_additional && + !type_allowed_in_authority_section(rrset->type)) { + remove_rrset("normalize: removing irrelevant " + "RRset:", pkt, msg, prev, &rrset); + continue; + } /* only one NS set allowed in authority section */ if(rrset->type==LDNS_RR_TYPE_NS) { /* NS set must be pertinent to the query */ @@ -576,7 +606,6 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, * found in ANSWER and AUTHORITY. */ /* These records have not been marked OK previously */ while(rrset && rrset->section == LDNS_SECTION_ADDITIONAL) { - /* FIXME: what about other types? */ if(rrset->type==LDNS_RR_TYPE_A || rrset->type==LDNS_RR_TYPE_AAAA) { @@ -589,6 +618,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, continue; } } + /* protect internals of recursor by making sure to del these */ if(rrset->type==LDNS_RR_TYPE_DNAME || rrset->type==LDNS_RR_TYPE_CNAME || rrset->type==LDNS_RR_TYPE_NS) { @@ -596,6 +626,13 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, "RRset:", pkt, msg, prev, &rrset); continue; } + /* Allowed list of types in the additional section */ + if(env->cfg->harden_unknown_additional && + !type_allowed_in_additional_section(rrset->type)) { + remove_rrset("normalize: removing irrelevant " + "RRset:", pkt, msg, prev, &rrset); + continue; + } prev = rrset; rrset = rrset->rrset_all_next; } @@ -846,7 +883,7 @@ scrub_message(sldns_buffer* pkt, struct msg_parse* msg, } /* normalize the response, this cleans up the additional. */ - if(!scrub_normalize(pkt, msg, qinfo, region)) + if(!scrub_normalize(pkt, msg, qinfo, region, env)) return 0; /* delete all out-of-zone information */ if(!scrub_sanitize(pkt, msg, qinfo, zonename, env, ie)) diff --git a/testdata/val_any.rpl b/testdata/val_any.rpl index 4ce195134..7d94094ce 100644 --- a/testdata/val_any.rpl +++ b/testdata/val_any.rpl @@ -195,10 +195,8 @@ SECTION ADDITIONAL open.example.com. 600 IN A 213.154.224.1 open.example.com. 600 IN AAAA 2001:7b8:206:1::53 open.example.com. 600 IN AAAA 2001:7b8:206:1::1 -_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} -_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} ENTRY_END SCENARIO_END diff --git a/testdata/val_any_dname.rpl b/testdata/val_any_dname.rpl index 6ab3cded7..ff06de1eb 100644 --- a/testdata/val_any_dname.rpl +++ b/testdata/val_any_dname.rpl @@ -8,6 +8,8 @@ server: fake-sha1: yes trust-anchor-signaling: no rrset-roundrobin: no + ; this allows the SRV entry in the answer packet additional section. + harden-unknown-additional: no stub-zone: name: "." diff --git a/testdata/val_any_negcache.rpl b/testdata/val_any_negcache.rpl index 662f0634a..1f04dd885 100644 --- a/testdata/val_any_negcache.rpl +++ b/testdata/val_any_negcache.rpl @@ -232,10 +232,8 @@ SECTION ADDITIONAL open.example.com. 600 IN A 213.154.224.1 open.example.com. 600 IN AAAA 2001:7b8:206:1::53 open.example.com. 600 IN AAAA 2001:7b8:206:1::1 -_sip._udp.example.com. 600 IN SRV 0 0 5060 johnny.example.com. open.example.com. 600 IN RRSIG A 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCh8bja923UJmg1+sYXMK8WIE4dpgIUQe9sZa0GOcUYSgb2rXoogF8af+Y= ;{id = 2854} open.example.com. 600 IN RRSIG AAAA 3 3 600 20070926134150 20070829134150 2854 example.com. MC0CFQCRGJgIS6kEVG7aJfovuG/q3cgOWwIUYEIFCnfRQlMIYWF7BKMQoMbdkE0= ;{id = 2854} -_sip._udp.example.com. 600 IN RRSIG SRV 3 4 600 20070926134150 20070829134150 2854 example.com. MCwCFFSRVgOcq1ihVuO6MhCuzWs6SxpVAhRPHHCKy0JxymVkYeFOxTkbVSWMMw== ;{id = 2854} ENTRY_END SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index 843bec2fa..5f605c5b1 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -233,6 +233,7 @@ config_create(void) cfg->harden_below_nxdomain = 1; cfg->harden_referral_path = 0; cfg->harden_algo_downgrade = 0; + cfg->harden_unknown_additional = 1; cfg->use_caps_bits_for_id = 0; cfg->caps_whitelist = NULL; cfg->private_address = NULL; @@ -649,6 +650,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("harden-below-nxdomain:", harden_below_nxdomain) else S_YNO("harden-referral-path:", harden_referral_path) else S_YNO("harden-algo-downgrade:", harden_algo_downgrade) + else S_YNO("harden-unknown-additional:", harden_unknown_additional) else S_YNO("use-caps-for-id:", use_caps_bits_for_id) else S_STRLIST("caps-whitelist:", caps_whitelist) else S_SIZET_OR_ZERO("unwanted-reply-threshold:", unwanted_threshold) @@ -1117,6 +1119,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "harden-below-nxdomain", harden_below_nxdomain) else O_YNO(opt, "harden-referral-path", harden_referral_path) else O_YNO(opt, "harden-algo-downgrade", harden_algo_downgrade) + else O_YNO(opt, "harden-unknown-additional", harden_unknown_additional) else O_YNO(opt, "use-caps-for-id", use_caps_bits_for_id) else O_LST(opt, "caps-whitelist", caps_whitelist) else O_DEC(opt, "unwanted-reply-threshold", unwanted_threshold) diff --git a/util/config_file.h b/util/config_file.h index 87cb92cf0..a35e75cbb 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -292,6 +292,9 @@ struct config_file { int harden_referral_path; /** harden against algorithm downgrade */ int harden_algo_downgrade; + /** harden against unknown records in the authority section and in + * the additional section */ + int harden_unknown_additional; /** use 0x20 bits in query as random ID bits */ int use_caps_bits_for_id; /** 0x20 whitelist, domains that do not use capsforid */ diff --git a/util/configlexer.c b/util/configlexer.c index 09115716e..3030367e1 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 372 -#define YY_END_OF_BUFFER 373 +#define YY_NUM_RULES 373 +#define YY_END_OF_BUFFER 374 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,413 +363,416 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3683] = +static const flex_int16_t yy_accept[3702] = { 0, - 1, 1, 346, 346, 350, 350, 354, 354, 358, 358, - 1, 1, 362, 362, 366, 366, 373, 370, 1, 344, - 344, 371, 2, 371, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 346, 347, 347, 348, - 371, 350, 351, 351, 352, 371, 357, 354, 355, 355, - 356, 371, 358, 359, 359, 360, 371, 369, 345, 2, - 349, 371, 369, 365, 362, 363, 363, 364, 371, 366, - 367, 367, 368, 371, 370, 0, 1, 2, 2, 2, - 2, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 1, 1, 347, 347, 351, 351, 355, 355, 359, 359, + 1, 1, 363, 363, 367, 367, 374, 371, 1, 345, + 345, 372, 2, 372, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 347, 348, 348, 349, + 372, 351, 352, 352, 353, 372, 358, 355, 356, 356, + 357, 372, 359, 360, 360, 361, 372, 370, 346, 2, + 350, 372, 370, 366, 363, 364, 364, 365, 372, 367, + 368, 368, 369, 372, 371, 0, 1, 2, 2, 2, + 2, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 346, - 0, 350, 0, 357, 0, 354, 358, 0, 369, 0, - 2, 2, 369, 365, 0, 362, 366, 0, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 347, + 0, 351, 0, 358, 0, 355, 359, 0, 370, 0, + 2, 2, 370, 366, 0, 363, 367, 0, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 369, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 370, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 342, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 133, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 143, 370, 370, 370, 370, - 370, 370, 370, 369, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 343, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 134, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 144, 371, 371, 371, 371, + 371, 371, 371, 370, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 115, 370, 341, 370, - 370, 370, 370, 370, 370, 370, 370, 8, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 116, 371, 342, 371, + 371, 371, 371, 371, 371, 371, 371, 8, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 134, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 148, 370, 370, 369, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 135, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 149, 371, 371, 370, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 334, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 335, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 369, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 69, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 261, 370, 14, 15, 370, 19, 18, 370, 370, - 241, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 370, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 69, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 262, 371, 14, 15, 371, 19, 18, 371, 371, + 242, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 141, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 239, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 3, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 142, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 240, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 3, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 369, 370, 370, 370, - 370, 370, 370, 370, 328, 370, 370, 327, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 370, 371, 371, 371, + 371, 371, 371, 371, 329, 371, 371, 328, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 353, 370, - 370, 370, 370, 370, 370, 370, 370, 68, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 72, 370, 297, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 335, 336, - 370, 370, 370, 370, 370, 370, 370, 370, 73, 370, - 370, 142, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 137, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 228, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 354, + 371, 371, 371, 371, 371, 371, 371, 371, 68, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 72, 371, 298, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 336, + 337, 371, 371, 371, 371, 371, 371, 371, 371, 73, + 371, 371, 143, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 138, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 229, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 21, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 169, 370, 370, 370, 370, 370, - 369, 353, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 113, 370, 370, 370, 370, 370, 370, - 370, 305, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 21, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 170, 371, 371, 371, 371, + 371, 370, 354, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 114, 371, 371, 371, 371, 371, + 371, 371, 306, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 196, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 168, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 112, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 197, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 169, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 113, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 35, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 36, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 70, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 140, 370, 370, 370, 369, 370, 370, - 370, 370, 370, 132, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 71, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 35, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 36, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 70, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 141, 371, 371, 371, 370, + 371, 371, 371, 371, 371, 133, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 265, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 197, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 58, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 71, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 266, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 198, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 58, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 283, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 63, 370, 64, - 370, 370, 370, 370, 370, 116, 370, 117, 370, 370, - 370, 370, 370, 114, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 7, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 284, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 63, 371, 64, 371, 371, 371, 371, 371, 117, 371, + 118, 371, 371, 371, 371, 371, 115, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 369, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 250, 370, 370, 370, 370, 172, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 266, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 49, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 59, 370, 370, 370, + 7, 371, 371, 371, 371, 370, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 251, 371, 371, 371, 371, 173, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 267, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 49, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 219, 370, 218, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 16, 17, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 74, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 227, 370, 370, 370, - 370, 370, 370, 119, 370, 118, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 59, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 220, 371, 219, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 16, 17, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 74, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 228, 371, 371, 371, 371, 371, 371, 120, 371, 119, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 210, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 149, 370, 370, 370, 369, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 107, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 95, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 240, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 100, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 211, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 150, 371, 371, 371, + 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 108, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 95, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 241, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 100, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 67, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 213, 214, 370, 370, 370, 299, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 6, 370, 370, 370, 370, 370, 370, 370, 318, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 303, - 370, 370, 370, 370, 370, 370, 370, 329, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 67, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 214, 215, 371, 371, 371, + 300, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 6, 371, 371, 371, + 371, 371, 371, 371, 319, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 304, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 46, 370, 370, 370, 370, 370, 48, 370, - 370, 370, 96, 370, 370, 370, 370, 370, 56, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 369, 370, 206, 370, 370, 370, 144, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 232, 370, 207, - 370, 370, 370, 247, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 57, 370, 370, 370, 370, 370, + 371, 371, 330, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 46, 371, 371, + 371, 371, 371, 48, 371, 371, 371, 96, 371, 371, + 371, 371, 371, 56, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 370, 371, 207, 371, 371, + 371, 145, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 233, 371, 208, 371, 371, 371, 248, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 57, - 370, 370, 370, 370, 370, 370, 146, 125, 370, 126, - 370, 370, 370, 370, 124, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 165, 370, 370, 54, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 282, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 208, 370, - 370, 370, 370, 370, 211, 370, 217, 370, 370, 370, - 370, 370, 370, 370, 370, 246, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 111, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 147, 126, 371, 127, 371, 371, 371, 371, 125, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 166, 371, 371, 54, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 283, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 209, 371, 371, 371, 371, 371, + 212, 371, 218, 371, 371, 371, 371, 371, 371, 371, + 371, 247, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 112, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 138, 370, 370, 370, 370, 370, - 370, 370, 370, 65, 370, 370, 370, 29, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 20, 370, 370, 370, 370, 370, 370, 370, 30, 39, - 370, 177, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 204, 370, 370, 369, - 370, 370, 370, 370, 370, 370, 82, 84, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 307, 370, 370, 370, 370, 262, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 139, 371, 371, 371, 371, 371, 371, 371, 371, 65, + 371, 371, 371, 29, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 20, 371, 371, 371, + 371, 371, 371, 371, 30, 39, 371, 178, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 205, 371, 371, 370, 371, 371, 371, 371, + 371, 371, 82, 84, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 308, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 127, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 164, 370, 50, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 256, 370, 370, 370, 370, - 370, 370, 370, 322, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 171, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 316, + 371, 371, 263, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 128, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 165, + 371, 50, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 257, 371, 371, 371, 371, 371, 371, 371, + 323, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 172, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 238, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 332, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 189, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 120, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 184, 370, 198, 370, 370, 370, 370, - 370, 370, 370, 369, 370, 152, 370, 370, 370, 370, - 370, 106, 370, 370, 370, 370, 230, 370, 370, 370, - 370, 370, 370, 248, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 371, 371, 317, 371, 371, 371, + 371, 239, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 333, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 190, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 121, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 185, 371, 199, 371, 371, 371, 371, 371, 371, 371, + 370, 371, 153, 371, 371, 371, 371, 371, 107, 371, + 371, 371, 371, 231, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 274, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 145, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 188, 370, 370, 370, 370, 370, 370, 370, 85, 370, - 86, 370, 370, 370, 370, 370, 259, 370, 370, 370, - 370, 66, 325, 370, 370, 370, 370, 370, 94, 199, - 370, 220, 370, 251, 370, 370, 212, 300, 370, 370, - 370, 370, 295, 370, 370, 370, 78, 370, 201, 370, - 370, 370, 370, 370, 370, 9, 370, 370, 370, 370, + 249, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 275, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 146, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 189, 371, + 371, 371, 371, 371, 371, 371, 85, 371, 86, 371, + 371, 371, 371, 371, 260, 371, 371, 371, 371, 66, + 326, 371, 371, 371, 371, 371, 94, 200, 371, 221, + 371, 252, 371, 371, 213, 301, 371, 371, 371, 371, + 296, 371, 371, 371, 78, 371, 202, 371, 371, 371, - 370, 110, 370, 370, 370, 370, 370, 370, 287, 370, - 370, 370, 370, 229, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 369, - 370, 370, 370, 370, 187, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 173, 370, 306, 370, 370, - 370, 370, 370, 273, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 9, 371, 371, 371, 371, 371, 111, + 371, 371, 371, 371, 371, 371, 288, 371, 371, 371, + 371, 230, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 370, 371, 371, + 371, 371, 188, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 174, 371, 307, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 242, 370, 370, 370, 370, - 370, 370, 298, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 170, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 326, 370, 200, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 77, 79, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 109, 370, 370, 370, 370, - 370, 370, 285, 370, 370, 370, 370, 302, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 371, 274, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 243, 371, 371, 371, 371, 371, 371, + 299, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 171, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 327, 371, 201, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 77, 79, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 110, 371, 371, 371, 371, 371, + 371, 286, 371, 371, 371, 371, 303, 371, 371, 371, - 370, 234, 37, 31, 33, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 38, 370, - 32, 34, 370, 40, 370, 370, 370, 370, 370, 370, - 370, 105, 370, 183, 370, 370, 370, 370, 370, 370, - 370, 369, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 236, 233, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 76, 370, 370, 370, 147, 370, - 128, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 166, 51, 370, 370, 370, 361, 13, 370, 370, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 235, 37, 31, 33, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 38, 371, 32, + 34, 371, 40, 371, 371, 371, 371, 371, 371, 371, + 106, 371, 184, 371, 371, 371, 371, 371, 371, 371, + 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 237, 234, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 76, 371, 371, 371, 148, 371, 129, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 153, 370, 370, 370, 370, - 370, 370, 370, 320, 370, 323, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 12, - 370, 370, 22, 370, 370, 370, 370, 370, 370, 370, - 291, 370, 370, 370, 370, 304, 370, 370, 370, 370, - 80, 370, 244, 370, 370, 370, 370, 370, 235, 370, - 370, 370, 75, 370, 370, 370, 370, 370, 370, 23, - 370, 370, 47, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 182, 181, 370, 370, 361, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 237, + 371, 167, 51, 371, 371, 371, 362, 13, 371, 371, + 371, 371, 371, 371, 371, 154, 371, 371, 371, 371, + 371, 371, 371, 321, 371, 324, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 12, + 371, 371, 22, 371, 371, 371, 371, 371, 371, 371, + 292, 371, 371, 371, 371, 305, 371, 371, 371, 371, + 80, 371, 245, 371, 371, 371, 371, 371, 236, 371, + 371, 371, 75, 371, 371, 371, 371, 371, 371, 23, + 371, 371, 47, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 183, 182, 371, 371, 362, - 231, 370, 249, 370, 370, 308, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 194, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 87, 370, 370, 370, 370, 370, 370, 370, - 286, 370, 370, 370, 370, 216, 370, 370, 370, 370, - 370, 370, 243, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 293, 370, 370, 370, 330, 331, 179, - 370, 370, 370, 81, 370, 370, 370, 370, 190, 370, - 370, 370, 370, 121, 123, 122, 370, 370, 370, 25, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 238, + 232, 371, 250, 371, 371, 309, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 195, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 87, 371, 371, 371, 371, 371, 371, + 371, 287, 371, 371, 371, 371, 217, 371, 371, 371, + 371, 371, 371, 244, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 294, 371, 371, 371, 331, 332, + 180, 371, 371, 371, 81, 371, 371, 371, 371, 191, - 370, 370, 174, 370, 176, 370, 221, 370, 370, 370, - 370, 180, 370, 370, 370, 370, 252, 370, 370, 370, - 370, 370, 370, 370, 155, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 264, 370, 370, - 370, 370, 370, 370, 370, 339, 370, 27, 370, 301, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 92, 222, 370, - 370, 258, 370, 370, 284, 370, 324, 370, 215, 370, - 370, 296, 370, 370, 370, 294, 60, 370, 370, 370, - 370, 370, 370, 370, 4, 370, 370, 370, 370, 136, + 371, 371, 371, 371, 122, 124, 123, 371, 371, 371, + 25, 371, 371, 175, 371, 177, 371, 222, 371, 371, + 371, 371, 181, 371, 371, 371, 371, 253, 371, 371, + 371, 371, 371, 371, 371, 156, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 265, 371, + 371, 371, 371, 371, 371, 371, 340, 371, 27, 371, + 302, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 92, + 223, 371, 371, 259, 371, 371, 285, 371, 325, 371, + 216, 371, 371, 297, 371, 371, 371, 295, 60, 371, - 370, 154, 370, 370, 370, 195, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 255, 41, 42, 370, 370, - 370, 370, 370, 370, 370, 309, 370, 370, 370, 370, - 370, 370, 370, 272, 370, 370, 370, 370, 370, 370, - 370, 370, 225, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 91, 90, 370, - 370, 61, 370, 370, 290, 370, 260, 370, 370, 370, - 370, 370, 11, 370, 370, 370, 370, 343, 370, 370, - 370, 370, 135, 370, 370, 370, 370, 370, 370, 223, + 371, 371, 371, 371, 371, 371, 4, 371, 371, 371, + 371, 137, 371, 155, 371, 371, 371, 196, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 256, 41, 42, + 371, 371, 371, 371, 371, 371, 371, 310, 371, 371, + 371, 371, 371, 371, 371, 273, 371, 371, 371, 371, + 371, 371, 371, 371, 226, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 91, 90, 371, 371, 61, 371, 371, 291, 371, 261, + 371, 371, 371, 371, 371, 11, 371, 371, 371, 371, - 97, 370, 370, 44, 370, 370, 370, 370, 370, 370, - 370, 370, 186, 370, 370, 370, 370, 370, 370, 370, - 157, 370, 370, 370, 370, 263, 370, 370, 370, 370, - 370, 271, 370, 370, 370, 370, 150, 370, 370, 370, - 129, 131, 130, 370, 370, 370, 99, 103, 98, 167, - 370, 370, 370, 370, 88, 370, 257, 292, 370, 370, - 370, 370, 370, 370, 10, 370, 370, 370, 370, 370, - 288, 333, 370, 370, 370, 370, 370, 370, 370, 338, - 43, 370, 370, 370, 370, 370, 185, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 344, 371, 371, 371, 371, 136, 371, 371, 371, 371, + 371, 371, 224, 97, 371, 371, 44, 371, 371, 371, + 371, 371, 371, 371, 371, 187, 371, 371, 371, 371, + 371, 371, 371, 158, 371, 371, 371, 371, 264, 371, + 371, 371, 371, 371, 272, 371, 371, 371, 371, 151, + 371, 371, 371, 130, 132, 131, 371, 371, 371, 99, + 103, 98, 371, 168, 371, 371, 371, 371, 88, 371, + 258, 293, 371, 371, 371, 371, 371, 371, 10, 371, + 371, 371, 371, 371, 289, 334, 371, 371, 371, 371, + 371, 371, 371, 339, 43, 371, 371, 371, 371, 371, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 104, 102, 370, 55, 370, 370, 89, 370, - 321, 370, 370, 370, 370, 24, 370, 370, 370, 370, - 370, 209, 370, 370, 370, 370, 370, 370, 224, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 205, 370, - 370, 175, 83, 370, 370, 370, 370, 370, 310, 370, - 370, 370, 370, 370, 370, 370, 268, 370, 370, 267, - 151, 370, 370, 101, 52, 370, 370, 158, 159, 162, - 163, 160, 161, 93, 319, 370, 370, 289, 139, 370, - 370, 370, 370, 26, 370, 178, 370, 370, 370, 370, + 186, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 104, 102, 371, 371, + 55, 371, 371, 89, 371, 322, 371, 371, 371, 371, + 24, 371, 371, 371, 371, 371, 210, 371, 371, 371, + 371, 371, 371, 225, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 206, 371, 371, 176, 83, 371, 371, + 371, 371, 371, 311, 371, 371, 371, 371, 371, 371, + 371, 269, 371, 371, 268, 152, 371, 371, 101, 371, + 52, 371, 371, 159, 160, 163, 164, 161, 162, 93, - 203, 370, 254, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 192, 191, 226, 45, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 317, 370, 370, 370, 370, 108, 370, 253, 370, - 281, 314, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 340, 370, 53, 62, 5, 370, 370, - 245, 370, 370, 315, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 269, 28, 370, 370, 370, 370, 370, + 320, 371, 371, 290, 140, 371, 371, 371, 371, 26, + 371, 179, 371, 371, 371, 371, 204, 371, 255, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 193, 192, 227, 45, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 318, + 371, 371, 371, 371, 109, 371, 254, 371, 282, 315, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 341, 371, 105, 53, 62, 5, 371, 371, 246, - 370, 370, 370, 370, 370, 370, 370, 270, 370, 370, - 370, 156, 370, 370, 370, 370, 370, 370, 370, 370, - 193, 370, 202, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 311, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 337, 370, 370, 277, 370, 370, 370, 370, 370, 312, - 370, 370, 370, 370, 370, 370, 313, 370, 370, 370, - 275, 370, 278, 279, 370, 370, 370, 370, 370, 276, - 280, 0 + 371, 371, 316, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 270, 28, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 271, 371, 371, 371, + 157, 371, 371, 371, 371, 371, 371, 371, 371, 194, + 371, 203, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 312, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 371, 371, 371, 371, 371, 371, 371, 338, + 371, 371, 278, 371, 371, 371, 371, 371, 313, 371, + 371, 371, 371, 371, 371, 314, 371, 371, 371, 276, + 371, 279, 280, 371, 371, 371, 371, 371, 277, 281, + + 0 } ; static const YY_CHAR yy_ec[256] = @@ -812,17 +815,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3701] = +static const flex_int16_t yy_base[3720] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4146, 4062, 81, 7179, - 7179, 7179, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3764, 3709, 81, 7218, + 7218, 7218, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3586, 7179, 7179, 7179, - 107, 3439, 7179, 7179, 7179, 154, 3204, 3115, 7179, 7179, - 7179, 245, 3060, 7179, 7179, 7179, 163, 2498, 7179, 249, - 7179, 253, 148, 2411, 2317, 7179, 7179, 7179, 257, 1800, - 7179, 7179, 7179, 233, 1739, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 3203, 7218, 7218, 7218, + 107, 3106, 7218, 7218, 7218, 154, 2980, 2776, 7218, 7218, + 7218, 245, 2512, 7218, 7218, 7218, 163, 2418, 7218, 249, + 7218, 253, 148, 2194, 2170, 7218, 7218, 7218, 257, 1798, + 7218, 7218, 7218, 233, 1739, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -847,15 +850,15 @@ static const flex_int16_t yy_base[3701] = 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - 704, 705, 710, 711, 708, 7179, 718, 714, 721, 722, + 704, 705, 710, 711, 708, 7218, 718, 714, 721, 722, 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, 770, 765, 772, 785, 767, 773, 777, 806, 778, 774, 780, 786, 796, 798, 800, 793, 807, 814, 815, 808, 812, 819, 826, 834, 836, 816, 828, 839, 830, 838, - 820, 845, 852, 847, 7179, 849, 851, 861, 853, 862, + 820, 845, 852, 847, 7218, 849, 851, 861, 853, 862, 865, 863, 871, 872, 875, 884, 880, 883, 893, 915, - 885, 886, 882, 895, 898, 7179, 900, 899, 939, 908, + 885, 886, 882, 895, 898, 7218, 900, 899, 939, 908, 917, 928, 924, 904, 901, 929, 940, 943, 956, 757, 945, 921, 963, 959, 946, 948, 932, 969, 960, 976, @@ -865,16 +868,16 @@ static const flex_int16_t yy_base[3701] = 1028, 1042, 1035, 1043, 1044, 1047, 1052, 1045, 1060, 1051, 1067, 1063, 1069, 1070, 1078, 1073, 1074, 1075, 1076, 1079, 1085, 1080, 1083, 1087, 1088, 1090, 1091, 1097, 1099, 1106, - 1095, 1108, 1111, 1098, 1113, 1101, 7179, 1117, 7179, 1115, - 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7179, 1129, 1132, + 1095, 1108, 1111, 1098, 1113, 1101, 7218, 1117, 7218, 1115, + 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7218, 1129, 1132, 1133, 1140, 1137, 1141, 1143, 1144, 1154, 1148, 1155, 1157, 1156, 1158, 1165, 1167, 1164, 1168, 1175, 1172, 1176, 1177, - 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7179, + 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7218, 1191, 1195, 1197, 1201, 1194, 1202, 1206, 1214, 1221, 1219, 1227, 1220, 1224, 1237, 1238, 1240, 1241, 1243, 1245, 1246, 1248, 1249, 1254, 1251, 1255, 1257, 1259, 1260, 1262, 1268, - 1261, 1264, 1275, 7179, 1274, 1272, 1284, 1291, 1286, 1287, + 1261, 1264, 1275, 7218, 1274, 1272, 1284, 1291, 1286, 1287, 1271, 1289, 1292, 1293, 1295, 1296, 1304, 1294, 1297, 1301, 1314, 1310, 1319, 1312, 1317, 1315, 1316, 1321, 1325, 1323, 1327, 1336, 1333, 1338, 1341, 1350, 1348, 1352, 1355, 1359, @@ -882,7 +885,7 @@ static const flex_int16_t yy_base[3701] = 1371, 1373, 1382, 1378, 1379, 1384, 1380, 1386, 1391, 1389, 1387, 1394, 1393, 1395, 1396, 1403, 1401, 1405, 1410, 1407, - 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7179, 1436, 1431, + 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7218, 1436, 1431, 1432, 1438, 1439, 1443, 1445, 1437, 1447, 1448, 1449, 1451, 1452, 1458, 1454, 1459, 1461, 1460, 1468, 1467, 1470, 1473, 1475, 1471, 1484, 1491, 1490, 1492, 1476, 1486, 1495, 1496, @@ -896,745 +899,749 @@ static const flex_int16_t yy_base[3701] = 1614, 1633, 1622, 1624, 1634, 1625, 1635, 1638, 1641, 1642, 1644, 1647, 1646, 1648, 1656, 1657, 1649, 1658, 1650, 1663, 1664, 1666, 1674, 1670, 1676, 1680, 1669, 1681, 1671, 1682, - 1685, 1688, 1691, 1694, 1697, 1689, 7179, 1695, 1705, 1701, + 1685, 1688, 1691, 1694, 1697, 1689, 7218, 1695, 1705, 1701, 1703, 1704, 1708, 1709, 1717, 1710, 1712, 1713, 1715, 1722, - 1743, 7179, 1720, 7179, 7179, 1724, 7179, 7179, 1723, 1728, - 7179, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, + 1743, 7218, 1720, 7218, 7218, 1724, 7218, 7218, 1723, 1728, + 7218, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, 1754, 1751, 1767, 1772, 1766, 1764, 1775, 1770, 1777, 1778, - 1783, 1780, 1782, 1789, 1792, 1793, 1795, 1805, 1806, 1808, - 1797, 1810, 1816, 1814, 1820, 1821, 1825, 1827, 1822, 1811, - 1828, 1831, 1833, 1835, 1836, 1838, 1840, 1841, 1839, 1844, - 1845, 1855, 1858, 1847, 1865, 7179, 1861, 1868, 1860, 1850, - 1870, 1877, 1874, 1881, 1873, 1880, 1883, 1885, 1888, 1889, - 1882, 1893, 1892, 1894, 1895, 1899, 1902, 1904, 1905, 1908, - 1907, 1917, 1909, 1910, 7179, 1919, 1922, 1848, 1918, 1924, - 1932, 1920, 1912, 1930, 1934, 1936, 1945, 1937, 1940, 1938, - 1942, 1947, 1946, 1948, 1954, 7179, 1950, 1959, 1960, 1962, - 1963, 1968, 1969, 1964, 1971, 1973, 1972, 1974, 1975, 1977, + 1783, 1780, 1782, 1789, 1792, 1795, 1797, 1805, 1806, 1808, + 1810, 1811, 1814, 1812, 1818, 1819, 1823, 1826, 1827, 1829, + 1830, 1831, 1833, 1832, 1835, 1838, 1841, 1842, 1844, 1837, + 1845, 1856, 1854, 1847, 1864, 7218, 1860, 1872, 1857, 1861, + 1868, 1876, 1869, 1877, 1878, 1873, 1882, 1884, 1886, 1887, + 1889, 1891, 1893, 1892, 1894, 1898, 1900, 1902, 1904, 1903, + 1906, 1915, 1908, 1910, 7218, 1916, 1918, 1917, 1923, 1921, + 1931, 1932, 1922, 1920, 1924, 1935, 1944, 1939, 1946, 1940, + 1942, 1949, 1950, 1951, 1954, 7218, 1960, 1964, 1952, 1966, + 1956, 1959, 1967, 1968, 1972, 1975, 1970, 1976, 1978, 1981, - 1985, 1983, 1987, 1990, 1994, 1997, 1998, 2000, 2001, 2002, - 2010, 2003, 2005, 2012, 2014, 2016, 2017, 2018, 2019, 2023, - 2026, 2033, 2035, 2028, 2036, 2031, 2032, 2047, 2050, 1976, - 2020, 2048, 2049, 2051, 2055, 2059, 2063, 2058, 2062, 2064, - 2071, 2066, 2070, 2067, 2073, 2076, 2088, 2074, 2091, 2083, - 2075, 2081, 2093, 2090, 7179, 2096, 2099, 7179, 2102, 2103, - 2100, 2124, 2104, 2106, 2107, 2112, 2114, 2126, 2116, 2118, - 2136, 2128, 2144, 2108, 2134, 2146, 2137, 2149, 2147, 2151, - 2153, 2155, 2157, 2160, 2158, 2119, 2161, 2174, 2178, 2180, - 2170, 2181, 2173, 2177, 2182, 2201, 2185, 2183, 2184, 2187, + 1988, 1985, 1983, 1986, 1989, 1991, 1997, 1998, 1999, 2004, + 2011, 2001, 2007, 2012, 2014, 2015, 2016, 2017, 2018, 2022, + 2024, 2025, 2032, 2029, 2041, 2031, 2028, 2046, 2053, 2050, + 2030, 2051, 2033, 2052, 2055, 2064, 2065, 2057, 2061, 2062, + 2072, 2067, 2069, 2070, 2076, 2074, 2084, 2080, 2082, 2093, + 2085, 2089, 2091, 2097, 7218, 2098, 2099, 7218, 2101, 2100, + 2102, 2124, 2103, 2106, 2111, 2118, 2105, 2108, 2119, 2125, + 2131, 2128, 2138, 2141, 2143, 2144, 2146, 2147, 2151, 2149, + 2153, 2155, 2156, 2159, 2164, 2115, 2166, 2178, 2179, 2175, + 2182, 2186, 2165, 2181, 2183, 2202, 2184, 2185, 2191, 2192, - 2189, 2186, 2203, 2192, 2204, 2193, 2194, 2206, 2216, 2214, - 2205, 2223, 2224, 2225, 2226, 2229, 2230, 2231, 7179, 2238, - 2233, 2235, 2237, 2239, 2253, 2245, 2246, 7179, 2248, 2249, - 2255, 2262, 2259, 2260, 2261, 2263, 2264, 2267, 2269, 2273, - 2275, 2270, 2272, 2280, 7179, 2277, 7179, 2285, 2286, 2288, - 2290, 2297, 2292, 2294, 2296, 2300, 2298, 2302, 7179, 7179, - 2304, 2301, 2316, 2318, 2325, 2320, 2321, 2322, 7179, 2323, - 2332, 7179, 2333, 2327, 2338, 2330, 2328, 2324, 2343, 2345, - 2347, 2352, 2349, 2356, 2351, 2354, 2353, 7179, 2363, 2357, - 2355, 2365, 2368, 2371, 2372, 2374, 2375, 2377, 7179, 2378, + 2188, 2193, 2199, 2195, 2197, 2206, 2211, 2212, 2217, 2224, + 2214, 2215, 2223, 2226, 2225, 2229, 2235, 2232, 2237, 7218, + 2244, 2245, 2239, 2246, 2240, 2255, 2254, 2250, 7218, 2252, + 2256, 2260, 2268, 2263, 2264, 2266, 2267, 2270, 2273, 2274, + 2279, 2280, 2275, 2277, 2291, 7218, 2282, 7218, 2278, 2290, + 2295, 2296, 2303, 2299, 2300, 2304, 2302, 2306, 2307, 7218, + 7218, 2308, 2315, 2325, 2327, 2329, 2319, 2316, 2330, 7218, + 2332, 2339, 7218, 2336, 2334, 2341, 2342, 2335, 2345, 2346, + 2347, 2350, 2357, 2352, 2359, 2354, 2358, 2362, 7218, 2366, + 2368, 2370, 2373, 2374, 2377, 2375, 2380, 2381, 2382, 7218, - 2382, 2385, 2392, 2394, 2388, 2383, 2396, 2402, 2390, 2395, - 2400, 2404, 2405, 2412, 2415, 2416, 2417, 2419, 2427, 2423, - 2431, 7179, 2429, 2426, 2413, 2436, 2432, 2439, 2440, 2441, - 2442, 2435, 2443, 2445, 2451, 2446, 2455, 2452, 2456, 2458, - 2465, 2467, 2463, 2464, 2472, 2466, 2473, 2474, 2475, 2480, - 2479, 2481, 2482, 2483, 7179, 2484, 2489, 2491, 2495, 2502, - 2492, 171, 2496, 2494, 2504, 2506, 2505, 2518, 2513, 2521, - 2525, 2520, 2522, 2524, 2523, 2529, 2530, 2532, 2531, 2534, - 2535, 2539, 2538, 7179, 2541, 2545, 2547, 2548, 2549, 2550, - 2561, 7179, 2552, 2567, 2564, 2572, 2551, 2560, 2573, 2562, + 2383, 2387, 2390, 2398, 2400, 2388, 2395, 2401, 2405, 2402, + 2407, 2408, 2409, 2410, 2417, 2421, 2422, 2414, 2424, 2431, + 2427, 2436, 7218, 2433, 2434, 2435, 2443, 2439, 2441, 2442, + 2445, 2448, 2446, 2447, 2456, 2457, 2450, 2458, 2449, 2462, + 2465, 2475, 2476, 2468, 2472, 2479, 2471, 2473, 2480, 2481, + 2309, 2482, 2485, 2486, 2488, 7218, 2489, 2496, 2493, 2497, + 2498, 2491, 171, 2504, 2506, 2507, 2509, 2515, 2517, 2510, + 2526, 2528, 2523, 2527, 2529, 2533, 2534, 2535, 2536, 2525, + 2537, 2543, 2542, 2544, 7218, 2546, 2547, 2551, 2552, 2553, + 2554, 2565, 7218, 2558, 2571, 2555, 2576, 2566, 2564, 2577, - 2578, 2579, 2582, 2583, 2585, 2590, 2586, 2589, 2593, 2592, - 7179, 2595, 2600, 2601, 2598, 2607, 2609, 2599, 2610, 2614, - 2615, 2616, 2617, 2620, 2621, 2622, 2623, 2624, 2630, 2631, - 2643, 2635, 2638, 2639, 2645, 2640, 2649, 2647, 2626, 2650, - 2662, 2652, 7179, 2663, 2653, 2664, 2667, 2654, 2669, 2671, - 2670, 2687, 2673, 2677, 2680, 2683, 2694, 2688, 2689, 2696, - 2704, 2706, 2700, 2714, 2710, 2716, 2718, 2712, 2722, 2724, - 2720, 2679, 2731, 2732, 2734, 2730, 2728, 2736, 2735, 2738, - 2750, 2751, 2742, 2753, 2746, 2752, 2755, 2762, 2763, 2777, - 2743, 7179, 2765, 2758, 2767, 2771, 2779, 2784, 2781, 2780, + 2568, 2582, 2583, 2585, 2586, 2589, 2594, 2591, 2593, 2595, + 2597, 7218, 2599, 2603, 2604, 2602, 2610, 2613, 2611, 2612, + 2614, 2618, 2621, 2619, 2623, 2626, 2625, 2628, 2632, 2635, + 2631, 2636, 2645, 2640, 2642, 2643, 2648, 2651, 2653, 2654, + 2655, 2656, 2664, 2657, 7218, 2667, 2659, 2668, 2675, 2666, + 2669, 2676, 2672, 2693, 2678, 2688, 2690, 2694, 2704, 2698, + 2691, 2707, 2714, 2716, 2699, 2724, 2720, 2726, 2728, 2689, + 2732, 2734, 2722, 2730, 2741, 2744, 2740, 2736, 2746, 2747, + 2749, 2750, 2757, 2759, 2755, 2754, 2706, 2756, 2762, 2761, + 2777, 2782, 2773, 7218, 2781, 2771, 2769, 2783, 2787, 2794, - 2786, 2782, 2785, 2792, 2793, 2795, 2803, 2798, 2801, 2800, - 2804, 2805, 2806, 2807, 2814, 2815, 2817, 2819, 2823, 2825, - 2827, 2828, 7179, 2829, 2831, 2834, 2835, 2838, 2839, 2846, - 2847, 2849, 2841, 2843, 2850, 2852, 2855, 2856, 2857, 2858, - 2867, 2863, 2865, 2870, 2866, 7179, 2876, 2877, 2869, 2880, - 2881, 2883, 2886, 2891, 2887, 2893, 2899, 2897, 2889, 2903, - 2901, 2904, 7179, 2911, 2912, 2910, 2913, 2920, 2916, 2919, - 2921, 2923, 2924, 7179, 2926, 2927, 854, 2928, 2929, 2930, - 2939, 2940, 2935, 7179, 2942, 2937, 2946, 2947, 2948, 2950, - 2952, 2954, 2956, 2958, 2959, 2963, 2962, 2965, 2969, 7179, + 2790, 2791, 2792, 2795, 2798, 2800, 2802, 2803, 2810, 2805, + 2808, 2814, 2811, 2818, 2812, 2815, 2827, 2828, 2816, 2830, + 2832, 2829, 2837, 2838, 7218, 2839, 2843, 2833, 2845, 2850, + 2847, 2856, 2857, 2859, 2851, 2853, 2860, 2862, 2863, 2679, + 2865, 2866, 2875, 2871, 2870, 2878, 2873, 7218, 2882, 2877, + 2884, 2888, 2887, 2889, 2890, 2895, 2896, 2902, 2903, 2905, + 2906, 2908, 2909, 2912, 7218, 2917, 2919, 2915, 2918, 2927, + 2922, 2926, 2928, 2930, 2932, 7218, 2933, 2935, 854, 2934, + 2936, 2937, 2946, 2947, 2942, 7218, 2950, 2943, 2951, 2954, + 2955, 2958, 2959, 2961, 2964, 2965, 2968, 2970, 2979, 2966, - 2971, 2979, 2975, 2972, 2984, 2980, 2982, 2985, 2991, 2986, - 2987, 2998, 7179, 3007, 3002, 3004, 3011, 3008, 3009, 3013, - 3014, 3016, 3017, 3018, 3020, 3023, 3024, 7179, 3025, 3029, - 3030, 3032, 3034, 3037, 3026, 3049, 3041, 3042, 3046, 3050, - 3051, 3052, 3054, 3056, 3062, 3063, 3057, 3059, 3070, 3071, - 3074, 3076, 3077, 3081, 3084, 3092, 3087, 3090, 3094, 3096, - 3083, 3088, 3095, 3104, 3111, 3112, 3107, 3113, 7179, 3116, - 3117, 3110, 3118, 3120, 3123, 3124, 3122, 3125, 3127, 3130, - 3140, 3128, 3131, 3149, 3152, 3134, 3155, 3141, 3144, 3153, - 3159, 3157, 3158, 3161, 3171, 3167, 3166, 3168, 3170, 3169, + 2976, 7218, 2969, 2993, 2973, 2985, 2995, 2982, 2983, 2997, + 2999, 3000, 3006, 3002, 7218, 3011, 3010, 3013, 3023, 3001, + 3018, 3019, 3021, 3025, 3027, 3028, 3029, 3031, 3033, 7218, + 3034, 3038, 3039, 3040, 3043, 3042, 3035, 3051, 3050, 3052, + 3055, 3058, 3061, 3063, 3064, 3065, 3059, 3075, 3067, 3073, + 3069, 3077, 3081, 3079, 3084, 3071, 3088, 3098, 3101, 3096, + 3099, 3103, 3105, 3097, 3104, 3107, 3114, 3115, 3122, 3117, + 3119, 7218, 3124, 3126, 3127, 3128, 3121, 3129, 3132, 3131, + 3134, 3137, 3140, 3144, 3142, 3145, 3159, 3161, 3150, 3151, + 3154, 3162, 3163, 3166, 3165, 3167, 3168, 3175, 3174, 3176, - 3180, 3173, 3175, 3183, 3182, 3186, 3187, 3189, 3190, 3193, - 3191, 3196, 3197, 3199, 3194, 3200, 3203, 3217, 3221, 3218, - 3210, 3222, 3224, 3225, 3227, 3226, 7179, 3229, 3231, 3233, - 3230, 3237, 3242, 3238, 3252, 3244, 3249, 3257, 3255, 3254, - 3261, 3256, 3263, 3264, 3266, 3274, 3270, 7179, 3267, 7179, - 3271, 3272, 3278, 3288, 3275, 7179, 3284, 7179, 3287, 3294, - 3280, 3289, 3291, 7179, 3297, 3298, 3301, 3299, 3302, 3303, - 3309, 3306, 3310, 3311, 3312, 3320, 3317, 3323, 3313, 3315, - 3325, 3328, 3333, 3335, 3336, 3337, 3338, 3340, 3341, 3343, - 3346, 3344, 3351, 3356, 3355, 3352, 3357, 7179, 3361, 3365, + 3177, 3178, 3180, 3188, 3183, 3185, 3195, 3190, 3192, 3196, + 3198, 3199, 3200, 3201, 3204, 3207, 3210, 3205, 3212, 3216, + 3221, 3226, 3227, 3229, 3223, 3230, 3234, 3235, 3238, 7218, + 3237, 3241, 3239, 3242, 3247, 3250, 3251, 3258, 3253, 3259, + 3266, 3264, 3261, 3267, 3270, 3273, 3274, 3275, 3282, 3278, + 7218, 3279, 7218, 3280, 3281, 3284, 3293, 3288, 7218, 3299, + 7218, 3289, 3303, 3294, 3296, 3300, 7218, 3304, 3305, 3309, + 3306, 3311, 3313, 3317, 3318, 3319, 3320, 3321, 3328, 3323, + 3327, 3330, 3334, 3333, 3337, 3340, 3342, 3343, 3345, 3344, + 3347, 3351, 3352, 3353, 3360, 3362, 3363, 3364, 3365, 3366, - 3364, 3369, 3372, 3358, 3373, 3375, 3378, 3379, 3380, 3384, - 3382, 3383, 3386, 3390, 3391, 3393, 3398, 3401, 3411, 3397, - 3414, 7179, 3407, 3410, 3412, 3416, 7179, 3415, 3418, 3423, - 3425, 3419, 3427, 3428, 3429, 3434, 3430, 3437, 3436, 3441, - 3446, 3450, 3451, 7179, 3452, 3453, 3438, 3457, 3465, 3462, - 3472, 3473, 3469, 3475, 3477, 3485, 3482, 3468, 3471, 3480, - 3483, 3488, 3490, 3498, 3500, 3496, 3508, 3493, 3504, 3506, - 3507, 3495, 3497, 3510, 3511, 3514, 3518, 3519, 3520, 3515, - 3521, 3522, 3523, 3527, 7179, 3535, 3536, 3526, 3543, 3530, - 3541, 3544, 3545, 3546, 3551, 3553, 7179, 3555, 3556, 3558, + 7218, 3370, 3373, 3367, 3378, 3375, 3377, 3379, 3385, 3386, + 3387, 3388, 3392, 3390, 3394, 3399, 3402, 3396, 3403, 3406, + 3413, 3415, 3407, 3422, 7218, 3417, 3420, 3421, 3424, 7218, + 3428, 3425, 3434, 3436, 3429, 3426, 3432, 3438, 3445, 3439, + 3442, 3448, 3452, 3456, 3459, 3460, 7218, 3453, 3461, 3451, + 3469, 3474, 3465, 3477, 3481, 3478, 3484, 3486, 3488, 3490, + 3467, 3491, 3492, 3493, 3494, 3502, 3504, 3505, 3501, 3514, + 3500, 3507, 3516, 3517, 3503, 3510, 3518, 3519, 3520, 3525, + 3527, 3528, 3526, 3524, 3531, 3532, 3529, 3536, 7218, 3545, + 3546, 3537, 3553, 3551, 3552, 3554, 3555, 3556, 3560, 3563, - 3560, 3565, 3568, 3561, 3569, 3570, 3571, 3574, 3577, 3573, - 3578, 7179, 3581, 7179, 3579, 3587, 3592, 3598, 3595, 3599, - 3600, 3606, 3602, 3608, 3609, 3611, 3610, 3612, 3618, 3619, - 3620, 3621, 3622, 3625, 3626, 3645, 3629, 3624, 3632, 3640, - 3642, 3643, 3646, 3650, 3651, 3647, 7179, 7179, 3648, 3654, - 3663, 3655, 3661, 3665, 3666, 3668, 3670, 3675, 3676, 3678, - 3684, 3687, 7179, 3689, 3685, 3688, 3690, 3691, 3698, 3693, - 3697, 3707, 3704, 3706, 3714, 3712, 7179, 3713, 3715, 3722, - 3717, 3723, 3725, 7179, 3727, 7179, 3721, 3724, 3728, 3731, - 3736, 3737, 3738, 3744, 3742, 3734, 3745, 3750, 3758, 3760, + 7218, 3565, 3562, 3570, 3566, 3579, 3573, 3567, 3576, 3583, + 3584, 3587, 3585, 3586, 3589, 7218, 3591, 7218, 3590, 3594, + 3604, 3608, 3609, 3596, 3610, 3617, 3599, 3618, 3619, 3620, + 3623, 3622, 3627, 3628, 3629, 3630, 3631, 3640, 3633, 3641, + 3654, 3644, 3636, 3646, 3648, 3655, 3657, 3664, 3660, 3662, + 7218, 7218, 3661, 3667, 3670, 3672, 3668, 3678, 3676, 3679, + 3683, 3688, 3682, 3689, 3690, 3697, 7218, 3698, 3699, 3701, + 3702, 3703, 3711, 3704, 3716, 3719, 3720, 3718, 3727, 3724, + 7218, 3706, 3728, 3735, 3731, 3734, 3739, 7218, 3738, 7218, + 3736, 3740, 3741, 3745, 3747, 3748, 3749, 3754, 3751, 3756, - 3761, 3756, 3763, 3757, 3765, 3766, 3768, 3773, 3776, 3772, - 3774, 3775, 7179, 3779, 3780, 3784, 3782, 3781, 3791, 3792, - 3789, 3795, 7179, 3799, 3802, 3803, 3804, 3805, 3808, 3809, - 3812, 3813, 3815, 3817, 3819, 3821, 3822, 7179, 3823, 3825, - 3835, 3827, 3830, 3837, 3841, 3844, 3850, 7179, 3846, 3852, - 3859, 3855, 3856, 3836, 3857, 3858, 3862, 3863, 3864, 3865, - 3866, 3867, 3873, 3872, 3869, 3877, 3875, 3888, 3889, 3883, - 3880, 3896, 3891, 7179, 3892, 3897, 3901, 3902, 3903, 3904, - 3905, 3909, 3914, 3925, 3907, 3929, 3930, 3911, 3915, 3917, - 3934, 3922, 3941, 3937, 7179, 3945, 3942, 3949, 3946, 3944, + 3758, 3766, 3767, 3774, 3773, 3769, 3778, 3771, 3775, 3779, + 3781, 3783, 3790, 3785, 3786, 3788, 7218, 3795, 3789, 3634, + 3792, 3799, 3800, 3803, 3801, 3804, 7218, 3811, 3812, 3813, + 3814, 3815, 3818, 3820, 3823, 3824, 3829, 3831, 3825, 3834, + 3836, 7218, 3833, 3837, 3844, 3841, 3840, 3849, 3851, 3856, + 3861, 7218, 3842, 3854, 3868, 3865, 3866, 3867, 3870, 3871, + 3872, 3874, 3875, 3876, 3877, 3879, 3883, 3884, 3880, 3887, + 3886, 3898, 3897, 3889, 3901, 3911, 3907, 7218, 3908, 3912, + 3913, 3914, 3915, 3916, 3920, 3921, 3926, 3938, 3919, 3941, + 3942, 3923, 3927, 3929, 3946, 3947, 3955, 3953, 7218, 3958, - 3947, 3953, 3948, 3954, 3956, 3957, 3958, 3961, 3962, 3963, - 3965, 3977, 3973, 3974, 3975, 3976, 3984, 3980, 3981, 3982, - 3983, 7179, 4003, 3990, 3991, 4005, 3998, 3995, 4014, 4011, - 3999, 4012, 4016, 4013, 4017, 4021, 4022, 4023, 4026, 4027, - 7179, 7179, 4029, 4030, 4031, 7179, 4034, 4032, 4042, 4035, - 4045, 4037, 4049, 4038, 4050, 4056, 4057, 4046, 4067, 4052, - 4058, 7179, 4070, 4071, 4075, 4060, 4077, 4079, 4081, 7179, - 4082, 4091, 4087, 4088, 4089, 4090, 4092, 4094, 4096, 4095, - 4097, 4102, 4103, 4108, 4110, 4117, 4106, 4115, 4114, 7179, - 4116, 4119, 4122, 4124, 4121, 4125, 4128, 7179, 4131, 4133, + 3954, 3963, 3959, 3960, 3961, 3964, 3969, 3970, 3966, 3974, + 3962, 3975, 3976, 3978, 3979, 3984, 3991, 3987, 3988, 3992, + 3993, 4003, 3994, 3995, 3998, 4002, 7218, 4017, 4004, 4009, + 4019, 4012, 4020, 4028, 4025, 4026, 4027, 4030, 4031, 4032, + 4036, 4037, 4038, 4041, 4042, 7218, 7218, 4044, 4045, 4049, + 7218, 4051, 4047, 4061, 4050, 3917, 4052, 4054, 4063, 4064, + 4065, 4067, 4071, 4073, 4075, 4077, 7218, 4086, 4078, 4087, + 4082, 4085, 4094, 4089, 7218, 4090, 4104, 4096, 4100, 4099, + 4103, 4106, 4110, 4111, 4107, 4112, 4113, 4116, 4120, 4123, + 4128, 4124, 4125, 4130, 7218, 4127, 4132, 4133, 4136, 4137, - 4138, 4140, 4142, 4148, 4149, 4152, 4155, 4135, 4157, 4158, - 4159, 4160, 4161, 4162, 4172, 4165, 4169, 4170, 4173, 4179, - 4187, 4185, 7179, 4167, 4190, 4174, 4191, 4193, 7179, 4198, - 4205, 4208, 7179, 4209, 4195, 4207, 4210, 4217, 7179, 4213, - 4214, 4215, 4219, 4216, 4229, 4224, 4232, 4231, 4228, 4233, - 4234, 4236, 7179, 4237, 4235, 4238, 7179, 4242, 4250, 4256, - 4258, 4240, 4265, 4261, 4263, 4264, 4262, 7179, 4269, 7179, - 4272, 4266, 4276, 7179, 4273, 4279, 4281, 4283, 4280, 4287, - 4288, 4294, 4296, 4284, 4290, 4298, 4300, 4301, 4302, 4309, - 4306, 4308, 4310, 4311, 7179, 4314, 4312, 4313, 4318, 4320, + 4139, 4141, 7218, 4143, 4145, 4151, 4153, 4146, 4164, 4165, + 4157, 4167, 4160, 4170, 4171, 4172, 4174, 4175, 4176, 4185, + 4180, 4178, 4182, 4186, 4189, 4191, 4197, 7218, 4200, 4202, + 4183, 4205, 4207, 7218, 4212, 4220, 4221, 7218, 4222, 4204, + 4223, 4217, 4231, 7218, 4224, 4233, 4226, 4234, 4227, 4245, + 4232, 4246, 4242, 4243, 4244, 4248, 4247, 7218, 4249, 4250, + 4251, 7218, 4255, 4265, 4268, 4271, 4257, 4278, 4273, 4275, + 4276, 4274, 7218, 4281, 7218, 4260, 4284, 4287, 7218, 4285, + 4289, 4290, 4292, 4293, 4294, 4298, 4304, 4306, 4300, 4308, + 4309, 4310, 4311, 4313, 4322, 4312, 4314, 4319, 4321, 7218, - 4331, 4329, 4321, 4323, 4334, 4335, 7179, 7179, 4337, 7179, - 4342, 4341, 4343, 4346, 7179, 4349, 4347, 4356, 4351, 4352, - 4358, 4354, 4366, 4244, 7179, 4370, 4373, 7179, 4355, 4371, - 4381, 4376, 4379, 4363, 4367, 4382, 4388, 4380, 4384, 4391, - 4392, 4393, 4394, 4395, 4398, 4412, 4399, 4408, 7179, 4409, - 4400, 4416, 4418, 4415, 4419, 4421, 4425, 4426, 7179, 4431, - 4432, 4435, 4437, 4438, 7179, 4440, 7179, 4441, 4443, 4444, - 4448, 4447, 4451, 4460, 4455, 7179, 4461, 4458, 4465, 4457, - 4462, 4468, 4469, 4473, 4476, 4477, 4479, 4486, 4482, 4484, - 4481, 4491, 4488, 7179, 4489, 4492, 4498, 4501, 4502, 4504, + 4324, 4326, 4331, 4332, 4328, 4333, 4338, 4339, 4342, 4345, + 4343, 7218, 7218, 4353, 7218, 4346, 4354, 4355, 4357, 7218, + 4359, 4358, 4366, 4361, 4364, 4367, 4362, 4368, 4380, 4375, + 7218, 4382, 4384, 7218, 4377, 4387, 4394, 4389, 4390, 4391, + 4392, 4395, 4398, 4401, 4402, 4404, 4405, 4406, 4408, 4410, + 4409, 4427, 4415, 4423, 7218, 4411, 4417, 4432, 4436, 4428, + 4430, 4445, 4447, 4433, 7218, 4449, 4437, 4441, 4451, 4455, + 7218, 4457, 7218, 4443, 4458, 4460, 4463, 4464, 4468, 4475, + 4470, 7218, 4471, 4477, 4479, 4474, 4476, 4480, 4484, 4487, + 4485, 4486, 4493, 4501, 4494, 4496, 4498, 4508, 4497, 7218, - 4505, 4507, 4517, 4509, 4516, 4512, 4513, 4523, 4519, 4524, - 4532, 4526, 4534, 4528, 7179, 4536, 4538, 4541, 4537, 4554, - 4544, 4542, 4545, 7179, 4549, 4555, 4559, 7179, 4552, 4562, - 4563, 4567, 4568, 4569, 4571, 4574, 4573, 4577, 4578, 4575, - 7179, 4576, 4583, 4579, 4592, 4596, 4585, 4584, 7179, 7179, - 4600, 7179, 4603, 4581, 4605, 4607, 4608, 4612, 4611, 4613, - 4615, 4616, 4617, 4623, 4624, 4618, 7179, 4626, 4638, 4628, - 4641, 4643, 4648, 4644, 4646, 4639, 7179, 7179, 4652, 4655, - 4649, 4661, 4662, 4653, 4657, 4672, 4664, 4667, 4674, 4671, - 4683, 7179, 4678, 4679, 4680, 4685, 7179, 4686, 4687, 4689, + 4506, 4512, 4511, 4515, 4516, 4518, 4519, 4520, 4527, 4528, + 4522, 4530, 4531, 4536, 4532, 4537, 4541, 4543, 4545, 4546, + 7218, 4549, 4551, 4554, 4555, 4567, 4557, 4559, 4558, 7218, + 4562, 4572, 4573, 7218, 4571, 4575, 4579, 4581, 4582, 4585, + 4586, 4589, 4565, 4587, 4591, 4592, 7218, 4596, 4598, 4593, + 4594, 4602, 4609, 4611, 7218, 7218, 4614, 7218, 4615, 4612, + 4616, 4619, 4617, 4623, 4625, 4627, 4639, 4622, 4626, 4630, + 4641, 4643, 7218, 4628, 4650, 4648, 4655, 4657, 4658, 4659, + 4653, 4660, 7218, 7218, 4664, 4666, 4665, 4669, 4671, 4673, + 4675, 4682, 4678, 4686, 4689, 4679, 4696, 7218, 4691, 4677, - 4688, 4690, 4691, 4694, 4693, 4696, 4697, 4707, 4698, 4700, - 4716, 4704, 4708, 4714, 4717, 4718, 4720, 4723, 4724, 4727, - 7179, 4730, 4728, 4731, 4733, 4735, 4739, 4740, 4741, 4743, - 4744, 4751, 7179, 4746, 7179, 4753, 4754, 4764, 4767, 4756, - 4749, 4772, 4757, 4771, 4773, 4774, 4778, 4779, 4782, 4783, - 4787, 4775, 4789, 4792, 4794, 7179, 4800, 4801, 4806, 4803, - 4809, 4811, 4813, 7179, 4814, 4796, 4817, 4820, 4822, 4824, - 4825, 4827, 4828, 4830, 4833, 4831, 4835, 4839, 4840, 4841, - 4842, 4845, 4852, 4847, 4849, 7179, 4853, 4856, 4857, 4860, - 4863, 4864, 4865, 4867, 4872, 4875, 4866, 4877, 4878, 7179, + 4694, 4699, 7218, 4700, 4701, 4703, 4702, 4704, 4705, 4708, + 4707, 4710, 4711, 4713, 4714, 4716, 4729, 4720, 4721, 4722, + 4730, 4732, 4736, 4735, 4728, 4744, 7218, 4737, 4739, 4749, + 4750, 4752, 4753, 4754, 4755, 4759, 4757, 4762, 4766, 7218, + 4764, 7218, 4761, 4767, 4780, 4763, 4770, 4783, 4784, 4785, + 4787, 4772, 4791, 4793, 4794, 4798, 4799, 4803, 4792, 4804, + 4808, 4809, 7218, 4812, 4814, 4816, 4818, 4823, 4825, 4826, + 7218, 4828, 4820, 4829, 4832, 4835, 4837, 4838, 4842, 4843, + 4846, 4839, 4847, 4851, 4856, 4848, 4858, 4859, 4853, 4864, + 4865, 4866, 7218, 4868, 4872, 4869, 4875, 4876, 4877, 4878, - 4879, 4882, 4884, 4893, 7179, 4886, 4889, 4890, 4895, 4896, - 4898, 4899, 4902, 4905, 4908, 7179, 4912, 4909, 4914, 4903, - 4915, 4916, 4922, 4919, 4924, 4926, 4928, 4936, 7179, 4938, - 4931, 4941, 4942, 4927, 4940, 4944, 4948, 4950, 4949, 7179, - 4958, 4959, 4961, 4962, 4973, 4974, 4951, 4969, 4976, 4978, - 4980, 4971, 4979, 4986, 4981, 4982, 4988, 4990, 4993, 4994, - 5004, 5006, 5003, 7179, 4995, 7179, 5005, 5009, 5010, 5019, - 5020, 5014, 5016, 5022, 5012, 7179, 5024, 5026, 5031, 5028, - 5035, 7179, 5033, 5036, 5038, 5037, 7179, 5047, 5041, 5039, - 5048, 5055, 5056, 7179, 5062, 5063, 5064, 5071, 5073, 5068, + 4880, 4886, 4890, 4881, 4891, 4893, 7218, 4892, 4896, 4898, + 4905, 7218, 4901, 4903, 4904, 4908, 4909, 4911, 4912, 4914, + 4917, 4920, 7218, 4925, 4916, 4922, 4926, 4928, 4930, 4934, + 4933, 4937, 4941, 4942, 4951, 7218, 4945, 4943, 4947, 4953, + 4956, 4957, 4961, 4963, 4960, 4962, 7218, 4968, 4974, 4975, + 4976, 4983, 4984, 4964, 4986, 4993, 4989, 4990, 4967, 4996, + 4997, 4998, 4999, 5002, 5003, 5004, 5005, 5016, 5020, 5017, + 7218, 5006, 7218, 5007, 5015, 5022, 5031, 5028, 5030, 5032, + 5035, 5034, 7218, 5036, 5041, 5043, 5038, 5046, 7218, 5047, + 5044, 5048, 5049, 7218, 5062, 5045, 5051, 5058, 5067, 5068, - 5075, 5058, 5078, 5070, 5076, 5080, 5083, 5087, 5086, 5088, - 7179, 5085, 5091, 5096, 5092, 5098, 5101, 5102, 5104, 5105, - 5107, 5108, 7179, 5112, 5113, 5114, 5115, 5116, 5118, 5119, - 5120, 5129, 5126, 5127, 5131, 5136, 5137, 5138, 5140, 5142, - 7179, 5145, 5144, 5146, 5153, 5154, 5150, 5162, 7179, 5159, - 7179, 5152, 5163, 5169, 5171, 5172, 7179, 5175, 5176, 5165, - 5180, 7179, 7179, 5182, 5189, 5184, 5188, 5185, 7179, 7179, - 5193, 7179, 5190, 7179, 5195, 5197, 7179, 7179, 5198, 5199, - 5200, 5201, 7179, 5202, 5205, 5212, 7179, 5215, 7179, 5223, - 5204, 5219, 5216, 5206, 5221, 7179, 5227, 5230, 5229, 5231, + 7218, 5073, 5074, 5075, 5082, 5084, 5079, 5086, 5081, 5089, + 5087, 5083, 5091, 5092, 5100, 5098, 5096, 7218, 5102, 5104, + 5109, 5111, 5113, 5105, 5115, 5103, 5117, 5120, 5122, 7218, + 5125, 5126, 5127, 5128, 5129, 5132, 5131, 5133, 5140, 5139, + 5141, 5149, 5137, 5144, 5152, 5153, 5154, 5157, 7218, 5160, + 5161, 5159, 5168, 5173, 5166, 5176, 7218, 5170, 7218, 5169, + 5180, 5181, 5184, 5185, 7218, 5188, 5189, 5190, 5195, 7218, + 7218, 5193, 5204, 5199, 5201, 5203, 7218, 7218, 5206, 7218, + 5202, 7218, 5207, 5208, 7218, 7218, 5209, 5210, 5213, 5217, + 7218, 5218, 5222, 5226, 7218, 5229, 7218, 5239, 5215, 5240, - 5235, 7179, 5236, 5238, 5239, 5248, 5237, 5244, 7179, 5250, - 5251, 5253, 5240, 7179, 5256, 5261, 5262, 5263, 5264, 5265, - 5266, 5268, 5269, 5274, 5275, 5277, 5276, 5279, 5280, 5290, - 5292, 5294, 5298, 5295, 5284, 5300, 5301, 5302, 5304, 5308, - 5310, 5311, 5312, 5313, 5314, 5316, 5320, 5315, 5326, 5328, - 5329, 5337, 5330, 5338, 5339, 5321, 5343, 5344, 5346, 5350, - 5347, 5353, 5354, 5355, 5357, 5358, 5359, 5361, 5360, 5365, - 5367, 5363, 5369, 5371, 7179, 5374, 5376, 5378, 5385, 5379, - 5389, 5390, 5397, 5400, 5402, 7179, 5404, 7179, 5406, 5391, - 5408, 5410, 5411, 7179, 5412, 5413, 5414, 5415, 5416, 5417, + 5230, 5232, 5237, 7218, 5234, 5244, 5243, 5245, 5249, 7218, + 5250, 5251, 5252, 5262, 5259, 5261, 7218, 5264, 5265, 5267, + 5269, 7218, 5270, 5273, 5274, 5275, 5280, 5278, 5283, 5282, + 5281, 5285, 5290, 5292, 5294, 5296, 5298, 5301, 5305, 5307, + 5309, 5310, 5311, 5312, 5315, 5317, 5323, 5325, 5319, 5321, + 5327, 5328, 5329, 5333, 5335, 5332, 5337, 5343, 5344, 5346, + 5340, 5347, 5353, 5338, 5356, 5357, 5359, 5363, 5360, 5367, + 5364, 5368, 5370, 5371, 5372, 5374, 5373, 5380, 5381, 5376, + 5378, 5384, 7218, 5387, 5389, 5391, 5394, 5398, 5401, 5402, + 5404, 5409, 5415, 7218, 5417, 7218, 5419, 5410, 5413, 5421, - 5418, 5421, 5422, 5424, 5427, 7179, 5430, 5439, 5433, 5423, - 5443, 5449, 7179, 5444, 5451, 5446, 5454, 5455, 5456, 5459, - 5457, 5458, 5461, 5460, 5462, 5466, 5468, 5470, 5471, 5317, - 7179, 5481, 5483, 5387, 5478, 5484, 5485, 5486, 5487, 5488, - 5492, 5494, 5495, 5497, 5498, 5499, 5503, 5504, 5511, 5516, - 5513, 7179, 5507, 7179, 5520, 5521, 5522, 5523, 5525, 5524, - 5527, 5528, 5531, 7179, 7179, 5533, 5536, 5535, 5542, 5537, - 5539, 5546, 5547, 5549, 5551, 7179, 5556, 5559, 5560, 5561, - 5563, 5567, 7179, 5568, 5569, 5570, 5573, 7179, 5575, 5576, - 5577, 5578, 5592, 5582, 5594, 5595, 5588, 5586, 5584, 5598, + 5422, 7218, 5423, 5426, 5425, 5429, 5427, 5430, 5431, 5432, + 5435, 5438, 5441, 7218, 5451, 5446, 5434, 5439, 5454, 5458, + 7218, 5459, 5465, 5460, 5462, 5466, 5467, 5470, 5469, 5471, + 5472, 5473, 5475, 5476, 5482, 5491, 5477, 5486, 5493, 7218, + 5495, 5501, 5502, 5498, 5503, 5505, 5506, 5508, 5507, 5510, + 5511, 5513, 5514, 5515, 5517, 5518, 5527, 5536, 5528, 5539, + 7218, 5524, 7218, 5532, 5540, 5542, 5544, 5545, 5546, 5547, + 5548, 5551, 7218, 7218, 5549, 5553, 5555, 5557, 5560, 5561, + 5563, 5565, 5567, 5573, 7218, 5572, 5574, 5578, 5581, 5591, + 5580, 7218, 5583, 5586, 5588, 5595, 7218, 5592, 5596, 5597, - 5604, 7179, 7179, 7179, 7179, 5605, 5599, 5607, 5610, 5611, - 5612, 5613, 5614, 5619, 5621, 5616, 5617, 5620, 7179, 5632, - 7179, 7179, 5622, 7179, 5633, 5634, 5636, 5639, 5640, 5642, - 5644, 7179, 5643, 7179, 5645, 5649, 5646, 5656, 5663, 5660, - 5653, 5667, 5657, 5668, 5669, 5670, 5677, 5674, 5675, 5678, - 5680, 5682, 5684, 7179, 7179, 5686, 5690, 5691, 5698, 5695, - 5696, 5702, 5709, 5704, 5705, 5706, 5707, 5711, 5712, 5720, - 5723, 5713, 5724, 5726, 7179, 5721, 5727, 5731, 7179, 5729, - 7179, 5730, 5737, 5738, 5739, 5740, 5745, 5746, 5747, 5749, - 5751, 7179, 7179, 5744, 5765, 5760, 7179, 7179, 5750, 5752, + 5599, 5603, 5607, 5610, 5611, 5612, 5613, 5615, 5614, 5618, + 7218, 7218, 7218, 7218, 5619, 5622, 5623, 5625, 5628, 5630, + 5633, 5635, 5638, 5639, 5637, 5632, 5640, 7218, 5650, 7218, + 7218, 5651, 7218, 5653, 5654, 5657, 5659, 5642, 5660, 5663, + 7218, 5664, 7218, 5665, 5672, 5666, 5674, 5676, 5678, 5680, + 5685, 5682, 5686, 5687, 5688, 5696, 5692, 5693, 5695, 5698, + 5701, 5708, 7218, 7218, 5702, 5712, 5713, 5720, 5704, 5717, + 5718, 5727, 5724, 5725, 5726, 5723, 5729, 5731, 5739, 5740, + 5736, 5742, 5744, 7218, 5746, 5745, 5748, 7218, 5747, 7218, + 5755, 5756, 5757, 5749, 5758, 5763, 5764, 5765, 5768, 5770, - 5761, 5763, 5768, 5764, 5770, 7179, 5774, 5775, 5776, 5773, - 5778, 5780, 5785, 7179, 5786, 7179, 5787, 5790, 5792, 5795, - 5802, 5803, 5798, 5800, 5805, 5809, 5806, 5810, 5811, 7179, - 5812, 5813, 7179, 5825, 5824, 5828, 5815, 5822, 5830, 5823, - 7179, 5839, 5831, 5842, 5844, 7179, 5846, 5847, 5848, 5850, - 7179, 5855, 7179, 5837, 5856, 5852, 5866, 5858, 7179, 5862, - 5863, 5867, 7179, 5872, 5874, 5876, 5877, 5878, 5879, 7179, - 5885, 5869, 7179, 5881, 5889, 5893, 5896, 5890, 5898, 5886, - 5900, 5902, 5909, 5907, 5904, 7179, 7179, 5917, 5910, 135, - 5920, 5912, 5913, 5921, 5922, 5929, 5924, 5926, 5932, 7179, + 5775, 7218, 7218, 5769, 5782, 5778, 7218, 7218, 5779, 5781, + 5783, 5785, 5789, 5786, 5790, 7218, 5791, 5796, 5794, 5792, + 5797, 5811, 5799, 7218, 5802, 7218, 5806, 5815, 5814, 5808, + 5822, 5827, 5820, 5823, 5830, 5829, 5832, 5825, 5831, 7218, + 5834, 5835, 7218, 5844, 5842, 5847, 5837, 5846, 5853, 5849, + 7218, 5856, 5854, 5859, 5862, 7218, 5866, 5863, 5868, 5869, + 7218, 5871, 7218, 5874, 5875, 5876, 5883, 5879, 7218, 5881, + 5884, 5885, 7218, 5890, 5893, 5896, 5897, 5898, 5899, 7218, + 5903, 5887, 7218, 5906, 5908, 5909, 5914, 5915, 5917, 5918, + 5919, 5920, 5927, 5923, 5924, 7218, 7218, 5935, 5933, 135, - 7179, 5934, 7179, 5936, 5937, 7179, 5925, 5942, 5946, 5938, - 5943, 5951, 5952, 5953, 5958, 5954, 5959, 5960, 5961, 5963, - 7179, 5979, 5982, 5964, 5966, 5984, 5986, 5988, 5990, 5992, - 5994, 5995, 5977, 5975, 5998, 5999, 5996, 6002, 6005, 6003, - 6006, 6008, 7179, 6017, 6019, 6021, 6020, 6030, 6025, 6009, - 7179, 6033, 6034, 6037, 6038, 7179, 6040, 6013, 6042, 6045, - 6046, 6047, 7179, 6048, 6050, 6053, 6054, 6059, 6057, 6060, - 6062, 6061, 6070, 7179, 6065, 6063, 6075, 7179, 7179, 7179, - 6080, 6074, 6082, 7179, 6084, 6086, 6067, 6087, 7179, 6089, - 6090, 6097, 6094, 7179, 7179, 7179, 6093, 6098, 6095, 7179, + 5942, 5925, 5932, 5939, 5940, 5949, 5944, 5947, 5954, 7218, + 7218, 5945, 7218, 5955, 5957, 7218, 5956, 5958, 5964, 5962, + 5966, 5967, 5968, 5970, 5973, 5975, 5983, 5976, 5974, 5987, + 7218, 5997, 6004, 5982, 5978, 5999, 6005, 6007, 6009, 6011, + 6002, 6014, 6013, 6015, 6016, 6017, 6021, 6020, 6022, 6023, + 6024, 6028, 6029, 7218, 6035, 6037, 6040, 6030, 6047, 6050, + 6042, 7218, 6052, 6054, 6058, 6059, 7218, 6063, 6065, 6066, + 6068, 6069, 6070, 7218, 6053, 6073, 6077, 6080, 6081, 6082, + 6083, 6085, 6086, 6093, 7218, 6089, 6088, 6091, 7218, 7218, + 7218, 6098, 6105, 6096, 7218, 6108, 6099, 6109, 6111, 7218, - 6101, 6108, 7179, 6107, 7179, 6109, 7179, 6110, 6111, 6112, - 6114, 7179, 6117, 6120, 6124, 6125, 7179, 6128, 6132, 6135, - 6136, 6137, 6139, 6141, 7179, 6148, 6144, 6147, 6151, 6143, - 6153, 6154, 6155, 6156, 6168, 6159, 6164, 7179, 6166, 6167, - 6171, 6177, 6169, 6179, 6180, 7179, 6173, 7179, 6182, 7179, - 6183, 6185, 6186, 6187, 6192, 6189, 6190, 6200, 6197, 6203, - 6206, 6204, 6210, 6211, 6215, 6217, 6212, 7179, 7179, 6225, - 6218, 7179, 6220, 6222, 7179, 6227, 7179, 6230, 7179, 6233, - 6234, 7179, 6235, 6236, 6238, 7179, 7179, 6242, 6239, 6244, - 6251, 6246, 6255, 6247, 7179, 6256, 6258, 6260, 6262, 7179, + 6115, 6112, 6122, 6118, 7218, 7218, 7218, 6117, 6119, 6123, + 7218, 6120, 6131, 7218, 6126, 7218, 6127, 7218, 6128, 6136, + 6143, 6137, 7218, 6145, 6139, 6135, 6153, 7218, 6156, 6159, + 6161, 6162, 6147, 6151, 6163, 7218, 6172, 6164, 6173, 6175, + 6165, 6176, 6177, 6179, 6181, 6186, 6182, 6190, 7218, 6187, + 6192, 6195, 6193, 6185, 6196, 6201, 7218, 6202, 7218, 6206, + 7218, 6208, 6210, 6212, 6209, 6215, 6203, 6214, 6218, 6227, + 6217, 6220, 6228, 6230, 6231, 6234, 6236, 6242, 6238, 7218, + 7218, 6251, 6244, 7218, 6246, 6248, 7218, 6243, 7218, 6254, + 7218, 6255, 6256, 7218, 6261, 6259, 6262, 7218, 7218, 6269, - 6270, 7179, 6263, 6271, 6268, 7179, 6267, 6274, 6276, 6278, - 6280, 6281, 6285, 6282, 6287, 6286, 6294, 6290, 6291, 6292, - 6298, 6299, 6302, 6307, 6315, 7179, 7179, 7179, 6308, 6311, - 6319, 6318, 6321, 6328, 6323, 7179, 6325, 6327, 6329, 6332, - 6339, 6335, 6337, 7179, 6338, 6340, 6342, 6343, 6345, 6346, - 6347, 6348, 7179, 6355, 6360, 6362, 6364, 6366, 6368, 6371, - 6375, 6377, 6379, 6372, 6381, 6388, 6384, 7179, 7179, 6387, - 6383, 7179, 6391, 6393, 7179, 6394, 7179, 6395, 6396, 6397, - 6398, 6400, 7179, 6403, 6404, 6405, 6408, 7179, 6406, 6410, - 6412, 6415, 7179, 6409, 6429, 6421, 6425, 6428, 6431, 7179, + 6263, 6265, 6276, 6273, 6278, 6279, 7218, 6280, 6285, 6282, + 6287, 7218, 6290, 7218, 6288, 6295, 6292, 7218, 6291, 6293, + 6303, 6305, 6294, 6300, 6307, 6310, 6314, 6311, 6318, 6315, + 6316, 6317, 6325, 6327, 6329, 6330, 6335, 7218, 7218, 7218, + 6338, 6339, 6346, 6344, 6345, 6347, 6349, 7218, 6351, 6353, + 6355, 6354, 6363, 6358, 6362, 7218, 6365, 6364, 6366, 6368, + 6370, 6371, 6372, 6374, 7218, 6379, 6385, 6387, 6389, 6392, + 6393, 6396, 6400, 6402, 6403, 6405, 6397, 6407, 6414, 6411, + 7218, 7218, 6418, 6409, 7218, 6420, 6422, 7218, 6413, 7218, + 6415, 6423, 6424, 6426, 6427, 7218, 6430, 6431, 6434, 6435, - 7179, 6432, 6435, 7179, 6438, 6440, 6442, 6449, 6439, 6446, - 6448, 6450, 7179, 6457, 6458, 6452, 6459, 6460, 6462, 6464, - 7179, 6467, 6466, 6468, 6469, 7179, 6473, 6471, 6476, 6477, - 6478, 7179, 6481, 6480, 6490, 6492, 7179, 6482, 6496, 6495, - 7179, 7179, 7179, 6504, 6506, 6507, 7179, 7179, 7179, 7179, - 6510, 6512, 6501, 6514, 7179, 6515, 7179, 7179, 6519, 6524, - 6528, 6532, 6536, 6523, 7179, 6535, 6529, 6542, 6537, 6539, - 7179, 7179, 6543, 6545, 6546, 6547, 6549, 6550, 6551, 7179, - 7179, 6554, 6556, 6557, 6558, 6559, 7179, 6560, 6564, 6573, - 6575, 6576, 6581, 6583, 6570, 6586, 6587, 6594, 6595, 6590, + 7218, 6436, 6438, 6440, 6442, 7218, 6444, 6452, 6450, 6454, + 6455, 6458, 7218, 7218, 6451, 6465, 7218, 6467, 6469, 6461, + 6477, 6468, 6476, 6479, 6481, 7218, 6483, 6485, 6482, 6488, + 6489, 6491, 6492, 7218, 6493, 6495, 6496, 6497, 7218, 6500, + 6499, 6504, 6505, 6506, 7218, 6507, 6509, 6519, 6520, 7218, + 6510, 6524, 6523, 7218, 7218, 7218, 6532, 6534, 6535, 7218, + 7218, 7218, 6528, 7218, 6538, 6540, 6541, 6547, 7218, 6542, + 7218, 7218, 6549, 6553, 6558, 6562, 6566, 6565, 7218, 6554, + 6567, 6571, 6568, 6573, 7218, 7218, 6574, 6552, 6577, 6578, + 6580, 6581, 6582, 7218, 7218, 6584, 6585, 6589, 6591, 6588, - 6592, 6597, 6598, 6600, 6601, 6609, 6610, 6606, 6614, 6617, - 6611, 6619, 7179, 7179, 6622, 7179, 6628, 6623, 7179, 6625, - 7179, 6630, 6634, 6636, 6638, 7179, 6640, 6642, 6645, 6647, - 6631, 7179, 6649, 6651, 6653, 6654, 6648, 6655, 7179, 6656, - 6662, 6659, 6665, 6666, 6667, 6670, 6668, 6673, 7179, 6674, - 6677, 7179, 7179, 6679, 6683, 6684, 6687, 6685, 7179, 6690, - 6698, 6691, 6694, 6695, 6700, 6696, 7179, 6701, 6702, 7179, - 7179, 6704, 6706, 7179, 7179, 6709, 6713, 7179, 7179, 7179, - 7179, 7179, 7179, 7179, 7179, 6715, 6716, 7179, 7179, 6717, - 6723, 6725, 6727, 7179, 6729, 7179, 6731, 6732, 6734, 6736, + 7218, 6590, 6596, 6595, 6598, 6604, 6611, 6613, 6606, 6614, + 6615, 6623, 6626, 6616, 6618, 6625, 6629, 6630, 6628, 6632, + 6642, 6637, 6639, 6645, 6640, 6648, 7218, 7218, 6650, 6651, + 7218, 6657, 6652, 7218, 6654, 7218, 6659, 6663, 6667, 6669, + 7218, 6671, 6674, 6676, 6678, 6660, 7218, 6679, 6681, 6683, + 6684, 6685, 6687, 7218, 6689, 6691, 6692, 6695, 6698, 6696, + 6700, 6701, 6706, 7218, 6699, 6716, 7218, 7218, 6703, 6717, + 6708, 6718, 6710, 7218, 6722, 6729, 6724, 6726, 6727, 6730, + 6733, 7218, 6735, 6736, 7218, 7218, 6739, 6732, 7218, 6750, + 7218, 6737, 6740, 7218, 7218, 7218, 7218, 7218, 7218, 7218, - 7179, 6737, 7179, 6739, 6742, 6740, 6744, 6743, 6747, 6750, - 6749, 6752, 6755, 6757, 6759, 6760, 6761, 6767, 6764, 6775, - 6765, 6777, 6766, 6778, 7179, 7179, 7179, 7179, 6779, 6781, - 6788, 6789, 6791, 6794, 6797, 6800, 6792, 6802, 6803, 6804, - 6805, 6807, 6808, 6818, 6813, 6814, 6815, 6817, 6819, 6825, - 6829, 7179, 6831, 6821, 6833, 6835, 7179, 6838, 7179, 6837, - 7179, 7179, 6841, 6842, 6846, 6844, 6851, 6856, 6847, 6849, - 6848, 6859, 6858, 7179, 6866, 7179, 7179, 7179, 6860, 6868, - 7179, 6869, 6870, 7179, 6871, 6872, 6873, 6876, 6880, 6875, - 6879, 6882, 6886, 7179, 7179, 6878, 6890, 6895, 6897, 6899, + 7218, 6752, 6753, 7218, 7218, 6742, 6759, 6762, 6765, 7218, + 6767, 7218, 6754, 6769, 6768, 6770, 7218, 6771, 7218, 6773, + 6775, 6774, 6780, 6776, 6783, 6781, 6787, 6789, 6788, 6792, + 6793, 6800, 6798, 6797, 6795, 6799, 6813, 6801, 6815, 6803, + 6819, 7218, 7218, 7218, 7218, 6812, 6805, 6822, 6827, 6829, + 6830, 6833, 6835, 6837, 6838, 6839, 6840, 6841, 6843, 6844, + 6853, 6848, 6849, 6850, 6852, 6854, 6864, 6866, 6870, 7218, + 6872, 6860, 6857, 6878, 7218, 6867, 7218, 6873, 7218, 7218, + 6880, 6883, 6881, 6885, 6892, 6893, 6888, 6890, 6894, 6895, + 6897, 7218, 6899, 7218, 7218, 7218, 7218, 6901, 6905, 7218, - 6906, 6901, 6905, 6907, 6911, 6903, 6915, 7179, 6918, 6919, - 6921, 7179, 6923, 6913, 6926, 6925, 6928, 6935, 6930, 6937, - 7179, 6938, 7179, 6941, 6934, 6931, 6942, 6945, 6952, 6953, - 6951, 6955, 7179, 6948, 6957, 6959, 6962, 6966, 6970, 6969, - 6960, 6972, 6977, 6981, 6985, 6973, 6986, 6987, 6989, 6988, - 7179, 6991, 6992, 7179, 6995, 6996, 6997, 6998, 7002, 7179, - 7005, 6999, 7008, 7009, 7013, 7014, 7179, 7020, 7023, 7024, - 7179, 7025, 7179, 7179, 7028, 7015, 7026, 7036, 7038, 7179, - 7179, 7179, 7059, 7066, 7073, 7080, 7087, 7094, 7101, 88, - 7108, 7115, 7122, 7129, 7136, 7143, 7150, 7157, 7164, 7171 + 6906, 6907, 7218, 6908, 6909, 6910, 6917, 6918, 6915, 6916, + 6919, 6927, 7218, 7218, 6912, 6923, 6933, 6936, 6937, 6944, + 6939, 6943, 6945, 6946, 6947, 6955, 7218, 6954, 6956, 6958, + 7218, 6959, 6960, 6962, 6964, 6965, 6973, 6968, 6972, 7218, + 6970, 7218, 6975, 6977, 6976, 6978, 6980, 6982, 6990, 6988, + 6992, 7218, 6994, 7000, 6996, 7002, 7006, 7004, 7010, 7008, + 7012, 7013, 7014, 7022, 7019, 7023, 7024, 7028, 7025, 7218, + 7032, 7029, 7218, 7034, 7035, 7036, 7037, 7041, 7218, 7046, + 7038, 7047, 7049, 7052, 7053, 7218, 7059, 7062, 7063, 7218, + 7064, 7218, 7218, 7067, 7054, 7065, 7075, 7077, 7218, 7218, + 7218, 7098, 7105, 7112, 7119, 7126, 7133, 7140, 88, 7147, + 7154, 7161, 7168, 7175, 7182, 7189, 7196, 7203, 7210 } ; -static const flex_int16_t yy_def[3701] = +static const flex_int16_t yy_def[3720] = { 0, - 3682, 1, 3683, 3683, 3684, 3684, 3685, 3685, 3686, 3686, - 3687, 3687, 3688, 3688, 3689, 3689, 3682, 3690, 3682, 3682, - 3682, 3682, 3691, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3692, 3682, 3682, 3682, - 3692, 3693, 3682, 3682, 3682, 3693, 3694, 3682, 3682, 3682, - 3682, 3694, 3695, 3682, 3682, 3682, 3695, 3696, 3682, 3697, - 3682, 3696, 3696, 3698, 3682, 3682, 3682, 3682, 3698, 3699, - 3682, 3682, 3682, 3699, 3690, 3690, 3682, 3700, 3691, 3700, - 3691, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3701, 1, 3702, 3702, 3703, 3703, 3704, 3704, 3705, 3705, + 3706, 3706, 3707, 3707, 3708, 3708, 3701, 3709, 3701, 3701, + 3701, 3701, 3710, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3711, 3701, 3701, 3701, + 3711, 3712, 3701, 3701, 3701, 3712, 3713, 3701, 3701, 3701, + 3701, 3713, 3714, 3701, 3701, 3701, 3714, 3715, 3701, 3716, + 3701, 3715, 3715, 3717, 3701, 3701, 3701, 3701, 3717, 3718, + 3701, 3701, 3701, 3718, 3709, 3709, 3701, 3719, 3710, 3719, + 3710, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3692, - 3692, 3693, 3693, 3694, 3694, 3682, 3695, 3695, 3696, 3696, - 3697, 3697, 3696, 3698, 3698, 3682, 3699, 3699, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3711, + 3711, 3712, 3712, 3713, 3713, 3701, 3714, 3714, 3715, 3715, + 3716, 3716, 3715, 3717, 3717, 3701, 3718, 3718, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3696, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3715, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3682, 3682, 3690, 3682, 3682, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3701, 3701, 3709, 3701, 3701, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3696, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3715, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3696, 3696, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3715, 3715, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3696, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3715, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3701, 3709, 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3696, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3715, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3682, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3696, 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3715, 3709, 3701, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3682, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3696, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3715, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3696, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3715, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3682, - 3690, 3682, 3690, 3682, 3690, 3690, 3682, 3682, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, + 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3701, + 3709, 3701, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3696, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3715, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3690, 3682, 3682, 3682, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3682, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3696, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3682, 3690, 3690, 3690, 3682, 3682, 3690, 3690, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3701, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3715, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3696, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3709, 3701, 3701, 3709, 3709, 3709, 3701, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3715, - 3682, 3690, 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3682, 3682, 3682, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3682, 3682, 3682, 3690, 3690, 3690, 3682, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3701, 3709, 3701, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3701, + 3701, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, - 3690, 3690, 3682, 3690, 3682, 3690, 3682, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, - 3690, 3682, 3690, 3690, 3682, 3690, 3682, 3690, 3682, 3690, - 3690, 3682, 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, + 3709, 3709, 3709, 3709, 3701, 3701, 3701, 3709, 3709, 3709, + 3701, 3709, 3709, 3701, 3709, 3701, 3709, 3701, 3709, 3709, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3701, 3709, 3709, 3701, 3709, 3709, 3701, 3709, 3701, 3709, + 3701, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3701, 3709, - 3690, 3682, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3682, 3690, - 3690, 3682, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3701, 3701, 3709, 3709, 3701, 3709, 3709, 3701, 3709, 3701, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3682, 3682, 3682, 3690, 3690, 3690, 3682, 3682, 3682, 3682, - 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, - 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, - 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3701, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3701, 3701, 3701, 3709, 3709, 3709, 3701, + 3701, 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, + 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3682, 3690, 3682, 3690, 3690, 3682, 3690, - 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3682, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3682, - 3682, 3690, 3690, 3682, 3682, 3690, 3690, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3690, 3690, 3682, 3682, 3690, - 3690, 3690, 3690, 3682, 3690, 3682, 3690, 3690, 3690, 3690, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, + 3701, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3701, 3701, 3709, 3709, + 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3701, 3701, 3709, 3709, 3701, 3709, + 3701, 3709, 3709, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3682, 3682, 3682, 3682, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3682, 3690, 3682, 3690, - 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3690, 3682, 3682, 3682, 3690, 3690, - 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, + 3701, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3701, + 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3701, 3701, 3701, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3701, 3701, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3701, 3701, 3701, 3701, 3709, 3709, 3701, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, - 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, - 3682, 3690, 3690, 3682, 3690, 3690, 3690, 3690, 3690, 3682, - 3690, 3690, 3690, 3690, 3690, 3690, 3682, 3690, 3690, 3690, - 3682, 3690, 3682, 3682, 3690, 3690, 3690, 3690, 3690, 3682, - 3682, 0, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682 + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, + 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3701, + 0, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701 } ; -static const flex_int16_t yy_nxt[7220] = +static const flex_int16_t yy_nxt[7259] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1731,7 +1738,7 @@ static const flex_int16_t yy_nxt[7220] = 470, 86, 483, 86, 489, 484, 485, 86, 490, 86, 491, 86, 86, 497, 492, 495, 493, 494, 86, 499, 86, 500, 86, 501, 86, 86, 86, 86, 506, 505, - 496, 507, 502, 498, 86, 86, 86, 1602, 86, 503, + 496, 507, 502, 498, 86, 86, 86, 1605, 86, 503, 508, 510, 504, 511, 86, 86, 509, 513, 86, 518, 512, 519, 520, 86, 517, 86, 86, 86, 86, 86, @@ -1831,608 +1838,612 @@ static const flex_int16_t yy_nxt[7220] = 86, 987, 86, 972, 982, 973, 86, 993, 974, 86, 985, 975, 86, 989, 86, 976, 988, 86, 977, 86, 990, 86, 991, 992, 996, 978, 979, 86, 980, 86, - 86, 994, 1005, 86, 995, 86, 997, 998, 86, 999, - 86, 86, 1000, 86, 1008, 86, 86, 1001, 1012, 1004, + 86, 994, 1006, 86, 995, 86, 997, 998, 86, 999, + 86, 86, 1000, 86, 1009, 86, 86, 1001, 1013, 1005, - 1010, 1007, 86, 1002, 1003, 86, 86, 1014, 86, 1006, - 86, 1017, 1018, 178, 1013, 1009, 1011, 1019, 86, 86, - 1015, 86, 1021, 86, 86, 1022, 1020, 86, 1023, 86, - 1024, 1016, 1025, 86, 86, 86, 1026, 1028, 86, 1027, - 86, 86, 1029, 1031, 86, 1032, 86, 1030, 86, 86, - 1036, 86, 86, 86, 86, 1039, 1035, 86, 86, 1045, - 86, 86, 1043, 86, 1033, 1034, 1037, 1038, 86, 1041, - 1040, 86, 1046, 86, 86, 1049, 1044, 1047, 86, 1048, - 1042, 86, 1051, 86, 1053, 1078, 86, 86, 1055, 1056, - 86, 1050, 1054, 86, 86, 86, 86, 1059, 86, 1057, + 1011, 1008, 86, 1002, 1003, 86, 1004, 1015, 86, 1007, + 86, 178, 1019, 1018, 1014, 1010, 1012, 1020, 86, 86, + 1016, 86, 1022, 86, 86, 86, 1021, 86, 1025, 1024, + 1026, 86, 86, 1017, 1027, 1029, 86, 1028, 1023, 86, + 86, 1030, 86, 86, 86, 86, 86, 1033, 86, 1037, + 86, 86, 1031, 1036, 86, 86, 1040, 86, 86, 1046, + 86, 1032, 1042, 1044, 1034, 1035, 1038, 86, 1039, 86, + 86, 1047, 1045, 86, 86, 1041, 1048, 86, 1049, 1050, + 1043, 86, 86, 1054, 1056, 86, 86, 1055, 1051, 86, + 86, 86, 1058, 1052, 1057, 86, 1060, 86, 1061, 86, - 1060, 86, 86, 1052, 1058, 86, 86, 86, 86, 1064, - 1061, 1063, 86, 1062, 1065, 86, 1069, 86, 86, 1072, - 86, 86, 86, 86, 1073, 86, 1066, 1070, 1067, 1071, - 86, 86, 86, 86, 1068, 86, 1079, 86, 1082, 1083, - 1074, 1076, 1075, 86, 1077, 86, 1080, 86, 1081, 86, - 86, 86, 1087, 86, 1090, 86, 1085, 1088, 86, 86, - 86, 86, 1086, 86, 1089, 1098, 1091, 86, 1084, 1093, - 1096, 1099, 86, 86, 1092, 86, 86, 86, 1097, 1095, - 1101, 86, 86, 1094, 86, 86, 86, 86, 86, 86, - 86, 1109, 1112, 1141, 1100, 1107, 86, 1102, 86, 1105, + 86, 1053, 86, 1059, 86, 86, 86, 86, 1062, 1064, + 1065, 86, 1066, 86, 1070, 86, 86, 86, 1073, 86, + 1063, 86, 1074, 86, 1072, 1067, 1071, 1068, 86, 86, + 86, 86, 1069, 86, 86, 86, 86, 86, 1077, 1075, + 1078, 1080, 1076, 1081, 86, 86, 1086, 1082, 86, 1084, + 1083, 1088, 86, 86, 1079, 86, 1089, 86, 1085, 86, + 1091, 1087, 86, 86, 86, 86, 1090, 86, 1092, 86, + 1097, 1094, 86, 86, 1093, 1099, 1100, 86, 1098, 86, + 86, 86, 1096, 86, 1102, 86, 1101, 1095, 86, 86, + 1103, 86, 1104, 1110, 86, 1113, 86, 1108, 86, 86, - 86, 1103, 1104, 86, 1106, 1113, 1110, 86, 1108, 1111, - 86, 86, 1114, 86, 86, 86, 86, 1118, 86, 1115, - 1121, 1119, 1122, 86, 1117, 86, 1116, 86, 1120, 86, - 86, 86, 86, 86, 1125, 1123, 86, 1127, 1124, 86, - 1133, 86, 1134, 1136, 86, 86, 86, 1126, 86, 86, - 1128, 1130, 1142, 1129, 1139, 1135, 1131, 1140, 1137, 1132, - 86, 86, 86, 86, 86, 1138, 1148, 1145, 86, 1147, - 1149, 86, 86, 1143, 1150, 86, 86, 86, 1153, 86, - 86, 1144, 1155, 86, 86, 1146, 86, 86, 86, 86, - 1152, 1157, 1158, 1151, 86, 1161, 86, 1165, 1156, 1154, + 1105, 86, 86, 1106, 86, 1107, 1109, 1114, 1115, 1111, + 86, 86, 86, 1112, 86, 1116, 1119, 86, 1118, 1120, + 86, 1117, 1122, 1123, 86, 86, 1121, 86, 86, 86, + 86, 86, 1134, 1124, 1126, 86, 1128, 86, 86, 1135, + 1125, 86, 86, 86, 86, 86, 86, 1127, 1137, 1129, + 1131, 1146, 1130, 1140, 86, 1132, 1136, 1133, 1138, 86, + 1141, 1139, 1143, 86, 86, 86, 86, 1142, 86, 1148, + 86, 1149, 1150, 1151, 86, 86, 1144, 86, 86, 1154, + 86, 1156, 86, 86, 1145, 86, 1147, 86, 1153, 86, + 1159, 1162, 1152, 86, 1158, 86, 1163, 170, 86, 1165, - 1162, 170, 1163, 86, 86, 1159, 86, 1160, 1164, 86, - 1166, 1168, 86, 86, 1167, 86, 86, 86, 1181, 86, - 86, 86, 1169, 1182, 1184, 86, 1171, 86, 1172, 86, - 1193, 86, 86, 1170, 1174, 1183, 1173, 86, 1207, 86, - 1175, 86, 1176, 1186, 1187, 1188, 1177, 86, 1178, 86, - 86, 1191, 1185, 1179, 1189, 1190, 1192, 86, 1180, 86, - 86, 1194, 86, 1195, 86, 1197, 86, 1198, 86, 1201, - 86, 86, 1200, 86, 86, 1196, 1206, 1199, 1212, 1208, - 1202, 1209, 1205, 86, 1204, 1210, 86, 86, 1213, 1203, - 86, 86, 1211, 86, 86, 86, 86, 86, 86, 86, + 1155, 1157, 86, 1160, 86, 1161, 86, 1166, 1164, 1169, + 86, 86, 86, 86, 86, 86, 86, 1182, 86, 86, + 1167, 86, 1168, 1183, 86, 1187, 1172, 1173, 86, 1170, + 1185, 86, 86, 1174, 1208, 1171, 1175, 86, 86, 1184, + 1176, 86, 1177, 1186, 86, 1192, 1178, 1188, 1179, 1190, + 1193, 86, 1189, 1180, 86, 1191, 86, 86, 1181, 86, + 86, 1196, 86, 1194, 86, 1199, 86, 1202, 86, 86, + 1195, 176, 86, 1197, 1198, 1200, 1201, 86, 86, 86, + 1203, 1206, 1207, 1205, 1209, 1210, 1211, 1212, 86, 1204, + 1213, 86, 86, 1214, 86, 86, 86, 86, 86, 86, - 86, 1225, 86, 1228, 1229, 86, 86, 86, 1214, 1215, - 1224, 1226, 1227, 1216, 86, 1217, 86, 86, 86, 86, - 1218, 1231, 1219, 1236, 1230, 1233, 1234, 86, 1220, 86, - 1238, 1232, 1237, 1221, 1222, 1235, 86, 86, 86, 86, - 1223, 1243, 86, 86, 86, 1246, 86, 1244, 86, 1247, - 86, 86, 86, 1240, 1239, 1249, 1241, 1242, 86, 86, - 1251, 86, 86, 1252, 1245, 1250, 86, 1248, 86, 1257, - 1254, 1255, 86, 86, 86, 86, 86, 86, 1253, 1260, - 86, 1258, 86, 86, 1256, 86, 86, 1269, 86, 1267, - 86, 1262, 1259, 86, 1264, 1265, 1261, 1266, 86, 86, + 1215, 86, 1229, 1226, 86, 86, 86, 175, 86, 1225, + 86, 1230, 86, 1216, 1217, 86, 1218, 1228, 1227, 86, + 1231, 1219, 1232, 1220, 86, 86, 1233, 86, 86, 1221, + 86, 1238, 1239, 1234, 1222, 1223, 86, 86, 86, 86, + 1240, 1224, 86, 1235, 1236, 86, 1237, 1245, 86, 1246, + 86, 1248, 86, 86, 1241, 1242, 1243, 86, 86, 86, + 1244, 1249, 1253, 86, 1251, 86, 1252, 86, 86, 86, + 1247, 1250, 1254, 86, 1256, 1259, 86, 86, 1257, 86, + 86, 86, 1255, 86, 1262, 1260, 86, 86, 86, 1258, + 86, 86, 86, 86, 1269, 86, 1261, 1264, 1271, 1266, - 1263, 86, 1268, 86, 1275, 86, 1270, 86, 1274, 86, - 86, 86, 1271, 86, 86, 86, 1280, 86, 176, 1272, - 1281, 1277, 1282, 1283, 1276, 1285, 1273, 1278, 1279, 86, - 1284, 86, 1286, 86, 86, 86, 86, 86, 86, 1291, - 86, 86, 1287, 86, 1292, 86, 86, 1293, 1289, 1288, - 1294, 86, 1290, 1299, 1296, 1295, 86, 1297, 86, 1303, - 86, 1298, 86, 1305, 86, 86, 86, 86, 86, 86, - 86, 1301, 1307, 1310, 1300, 1302, 86, 1309, 86, 1306, - 1308, 86, 1304, 1312, 86, 86, 1313, 86, 86, 1311, - 86, 86, 1316, 1317, 1315, 86, 86, 1319, 86, 1322, + 1263, 1267, 1268, 86, 86, 1273, 1265, 1270, 86, 86, + 1277, 1272, 86, 86, 1276, 86, 86, 86, 1370, 86, + 86, 86, 86, 1274, 1282, 1283, 1284, 1279, 86, 86, + 1281, 1278, 86, 1275, 1287, 1280, 1288, 1285, 86, 1286, + 86, 1289, 86, 86, 1290, 86, 1293, 86, 86, 86, + 1295, 1294, 86, 1296, 86, 86, 1291, 1298, 86, 86, + 86, 1292, 1297, 86, 1305, 86, 1307, 86, 1300, 1299, + 86, 86, 86, 1303, 1301, 86, 1309, 1302, 1304, 86, + 1311, 86, 1308, 86, 1312, 1306, 86, 86, 86, 1310, + 86, 1314, 1315, 86, 86, 86, 86, 1317, 1318, 1319, - 1314, 86, 1318, 86, 1321, 86, 1323, 86, 86, 86, - 1324, 1320, 1326, 86, 1325, 86, 1327, 86, 86, 1333, - 1331, 1328, 1334, 1335, 175, 86, 86, 1329, 86, 86, - 86, 1332, 86, 1330, 1338, 1336, 86, 1337, 1340, 86, - 86, 1339, 86, 1344, 86, 86, 1343, 1341, 86, 86, - 1345, 1346, 86, 86, 86, 86, 86, 1342, 86, 86, - 1349, 1352, 1347, 1348, 86, 86, 1350, 1353, 86, 86, - 1354, 86, 1359, 1355, 1360, 1351, 86, 86, 86, 86, - 86, 1357, 1362, 1356, 1363, 86, 86, 86, 86, 1368, - 1358, 1361, 86, 86, 86, 86, 86, 86, 1364, 1366, + 86, 86, 1321, 86, 1313, 1324, 1316, 1320, 86, 1323, + 1326, 86, 1325, 86, 86, 86, 1322, 1328, 86, 1329, + 86, 86, 86, 86, 1335, 1333, 1327, 86, 1336, 1337, + 86, 170, 1338, 1330, 86, 86, 1334, 86, 1340, 1331, + 86, 1332, 1339, 1342, 86, 1341, 86, 86, 86, 86, + 1346, 1343, 86, 1348, 86, 86, 86, 1347, 86, 86, + 86, 86, 86, 86, 1349, 1344, 1351, 1350, 1345, 86, + 86, 86, 1354, 1355, 1356, 86, 1357, 1352, 86, 1353, + 1358, 86, 1361, 1362, 86, 86, 86, 1359, 86, 86, + 1364, 1365, 86, 86, 86, 86, 1363, 1360, 86, 86, - 1365, 1374, 86, 1370, 86, 170, 1367, 86, 86, 86, - 1369, 170, 1375, 1376, 1371, 86, 1373, 86, 86, 86, - 1377, 1372, 1380, 1379, 1382, 1378, 86, 1383, 1386, 1381, - 1384, 86, 1387, 86, 86, 86, 86, 86, 86, 1390, - 1389, 1391, 86, 86, 86, 86, 1385, 86, 86, 1388, - 1394, 86, 86, 1400, 86, 1397, 1392, 1393, 86, 1395, - 86, 86, 86, 86, 86, 86, 1396, 1398, 1404, 1410, - 1399, 1414, 1401, 86, 86, 86, 1403, 86, 1402, 1406, - 86, 1411, 1412, 1405, 1413, 86, 86, 1415, 1407, 1416, - 1408, 86, 86, 1409, 1417, 86, 86, 1423, 86, 86, + 1367, 86, 86, 1366, 170, 1368, 86, 1372, 1376, 86, + 86, 86, 1369, 1371, 1377, 1378, 1379, 86, 1373, 86, + 86, 1375, 86, 86, 1380, 168, 1374, 1384, 86, 1386, + 86, 1381, 1383, 1388, 1382, 1389, 86, 1385, 86, 86, + 86, 86, 86, 1387, 1392, 1391, 86, 86, 86, 86, + 86, 1393, 1390, 1397, 1396, 86, 86, 86, 1402, 86, + 86, 1394, 1395, 1399, 86, 86, 86, 86, 86, 1398, + 1400, 86, 1406, 1414, 1403, 1412, 1401, 86, 86, 86, + 1405, 86, 1404, 1408, 86, 1413, 1416, 1407, 1415, 86, + 86, 1417, 1409, 1418, 1410, 86, 86, 1411, 86, 86, - 1420, 1419, 86, 86, 1424, 86, 86, 1428, 86, 1418, - 1422, 86, 86, 86, 86, 1421, 1425, 1426, 1429, 1430, - 86, 1434, 86, 86, 1427, 1432, 1433, 86, 86, 86, - 86, 1431, 1438, 86, 86, 86, 86, 86, 1435, 86, - 1441, 1439, 1436, 86, 86, 1440, 1442, 1437, 86, 1446, - 1448, 86, 86, 86, 1443, 1445, 86, 1444, 86, 1447, - 86, 1451, 86, 86, 1456, 86, 86, 86, 1449, 1458, - 1460, 1450, 1453, 1452, 1454, 86, 86, 86, 1457, 1455, - 86, 1461, 86, 86, 86, 1459, 86, 1464, 1463, 1466, - 86, 1462, 86, 86, 1468, 1467, 86, 1473, 1465, 1469, + 1419, 1425, 86, 1422, 86, 1421, 86, 86, 86, 1426, + 86, 1430, 86, 1420, 1424, 86, 86, 86, 1423, 1428, + 1427, 1431, 1432, 86, 86, 86, 86, 86, 1434, 1429, + 1435, 86, 86, 1436, 86, 1433, 86, 1440, 86, 86, + 1437, 86, 1438, 1443, 86, 86, 1441, 1442, 86, 86, + 1439, 1444, 1451, 86, 1448, 86, 86, 1445, 86, 1449, + 1450, 86, 1446, 1447, 86, 1454, 86, 86, 86, 86, + 86, 1461, 86, 1452, 1463, 1453, 1455, 86, 1457, 86, + 86, 86, 86, 1456, 1460, 86, 1458, 1464, 86, 86, + 1462, 86, 86, 1459, 1469, 1465, 1466, 1470, 1468, 1467, - 86, 86, 86, 1483, 1471, 1470, 1472, 86, 1474, 86, - 1496, 1482, 1475, 86, 1481, 1476, 1477, 86, 1484, 86, - 1478, 1487, 1486, 86, 1485, 86, 1479, 86, 1488, 86, - 1480, 86, 1490, 86, 1489, 86, 1492, 86, 1497, 1498, - 1493, 86, 1494, 86, 86, 86, 1491, 86, 86, 86, - 1499, 86, 1500, 1495, 1502, 86, 86, 1505, 1506, 86, - 1507, 1501, 1503, 86, 86, 86, 86, 1520, 86, 1504, - 1508, 86, 1509, 1515, 1510, 86, 86, 1517, 86, 1511, - 86, 1512, 1521, 1513, 86, 1514, 1522, 1518, 1519, 1516, - 86, 1526, 86, 86, 86, 86, 1527, 86, 86, 86, + 1471, 86, 86, 86, 86, 1472, 86, 86, 1476, 1569, + 1473, 86, 86, 1485, 1486, 1474, 1475, 86, 1477, 86, + 86, 1489, 1478, 1494, 1484, 1479, 1480, 86, 1487, 86, + 1481, 1490, 1512, 86, 1488, 86, 1482, 86, 1491, 86, + 1483, 86, 1493, 86, 1492, 86, 1495, 86, 1500, 86, + 1496, 1501, 1497, 86, 86, 1498, 1502, 86, 1503, 86, + 86, 1499, 86, 86, 1508, 1505, 1509, 86, 86, 86, + 86, 1511, 86, 1510, 86, 86, 1506, 166, 1513, 1504, + 1518, 1507, 86, 1514, 86, 1515, 86, 1516, 1519, 1517, + 86, 1520, 1521, 1522, 86, 86, 86, 1523, 1524, 1525, - 1523, 1525, 1524, 1528, 1530, 86, 86, 1532, 86, 1531, - 1536, 86, 1537, 86, 86, 1529, 86, 86, 86, 86, - 86, 1539, 1535, 1541, 1533, 1534, 1538, 86, 86, 1543, - 86, 1540, 86, 1542, 1544, 1548, 86, 1547, 86, 1550, - 86, 86, 86, 1551, 86, 1552, 1545, 86, 86, 1553, - 1556, 86, 86, 1549, 86, 1546, 86, 1555, 1558, 86, - 86, 1559, 86, 86, 1564, 86, 1554, 1560, 86, 86, - 86, 86, 1557, 1567, 1569, 1561, 86, 1562, 86, 86, - 86, 1570, 86, 86, 1563, 1572, 1566, 1571, 1565, 86, - 86, 1568, 1574, 86, 86, 1576, 86, 1573, 1577, 86, + 86, 1529, 1526, 86, 86, 86, 1530, 86, 86, 1528, + 1533, 86, 1531, 86, 1527, 86, 86, 1539, 86, 1540, + 1535, 86, 1534, 86, 86, 86, 1532, 86, 86, 86, + 1538, 86, 1536, 1541, 1537, 1542, 1544, 1546, 1543, 1545, + 86, 86, 86, 86, 1551, 86, 86, 1547, 1550, 1553, + 86, 86, 86, 1554, 1549, 1555, 86, 1552, 86, 1548, + 86, 1556, 1559, 86, 86, 1557, 86, 1558, 1561, 86, + 86, 1562, 86, 86, 1567, 86, 86, 1563, 86, 86, + 1560, 1570, 1572, 86, 86, 1564, 86, 1565, 86, 1573, + 86, 86, 1574, 1575, 1566, 86, 1568, 86, 1577, 1571, - 86, 1579, 86, 1582, 86, 1575, 86, 1580, 1578, 1581, - 86, 1583, 86, 1584, 86, 1585, 86, 86, 1590, 1591, - 1586, 1588, 1587, 86, 86, 86, 86, 1594, 1592, 86, - 1589, 1593, 86, 86, 86, 1598, 86, 86, 1595, 86, - 86, 170, 86, 86, 1600, 1597, 1606, 1607, 86, 1609, - 86, 1596, 86, 86, 1608, 86, 1603, 1599, 1601, 86, - 86, 86, 1604, 86, 1610, 86, 1605, 86, 1617, 86, - 1611, 86, 86, 1614, 1622, 86, 86, 1615, 86, 1612, - 1613, 1621, 86, 1616, 86, 86, 1626, 1624, 86, 1618, - 1620, 1627, 86, 86, 1629, 86, 1619, 86, 86, 86, + 86, 86, 86, 86, 1576, 1578, 1580, 1582, 86, 86, + 1579, 1583, 1585, 1584, 1581, 86, 86, 1587, 86, 86, + 1586, 86, 86, 1588, 1593, 86, 1594, 1590, 86, 1591, + 86, 86, 86, 1595, 1597, 86, 1596, 1589, 1592, 86, + 86, 86, 1601, 86, 1598, 86, 86, 170, 86, 86, + 86, 1603, 1600, 1609, 1610, 86, 86, 1612, 1599, 86, + 86, 1611, 1606, 86, 86, 1602, 1604, 86, 86, 1607, + 1613, 86, 86, 1608, 86, 1620, 1614, 86, 86, 86, + 1617, 86, 86, 86, 1615, 1618, 86, 1616, 1624, 86, + 1619, 1625, 86, 165, 1627, 86, 86, 1621, 86, 1623, - 86, 1623, 1638, 1625, 86, 1630, 1628, 1631, 1637, 1635, - 1632, 86, 1636, 1633, 1640, 86, 1634, 86, 1643, 1641, - 86, 86, 86, 1644, 86, 1639, 86, 86, 1642, 86, - 86, 86, 1648, 86, 1649, 1650, 86, 86, 86, 86, - 1645, 1653, 86, 86, 1647, 86, 1658, 86, 1646, 1651, - 86, 1659, 1655, 1652, 86, 86, 1662, 1654, 1661, 86, - 1656, 1657, 86, 86, 86, 86, 1663, 86, 1660, 86, - 86, 1664, 86, 168, 1670, 86, 86, 1666, 1665, 1667, - 1668, 1672, 1671, 86, 86, 1676, 1669, 86, 1673, 86, - 86, 1681, 1675, 1674, 86, 1680, 86, 86, 1678, 1682, + 1629, 1628, 1626, 1622, 1631, 1630, 86, 1632, 86, 1634, + 86, 1635, 86, 86, 86, 86, 1633, 1638, 1643, 86, + 1639, 1641, 1640, 86, 86, 1636, 86, 1644, 1637, 1642, + 1646, 86, 86, 1648, 86, 1647, 86, 1645, 86, 1651, + 86, 86, 86, 1652, 86, 1653, 86, 86, 86, 1656, + 1650, 86, 86, 86, 1661, 86, 86, 1649, 1665, 1654, + 1662, 1658, 1655, 86, 86, 86, 1657, 1664, 86, 1659, + 1660, 86, 86, 1663, 86, 1666, 86, 86, 86, 1674, + 86, 1667, 86, 1673, 86, 1669, 86, 1668, 86, 1670, + 86, 1671, 86, 1675, 86, 1680, 1672, 86, 1676, 1679, - 86, 86, 1677, 86, 1684, 86, 1685, 86, 86, 86, - 1679, 1690, 1687, 1689, 1683, 1686, 166, 86, 1691, 1692, - 86, 1693, 1688, 86, 86, 86, 86, 1694, 1697, 86, - 86, 86, 1699, 86, 1698, 86, 86, 86, 86, 1705, - 86, 86, 1704, 86, 86, 1701, 1695, 86, 1696, 1700, - 1702, 1707, 1703, 86, 86, 1709, 1711, 86, 1708, 1713, - 1706, 1712, 86, 1710, 1714, 86, 86, 1715, 86, 1716, - 86, 86, 86, 1717, 86, 1719, 1718, 1720, 1724, 86, - 86, 86, 86, 86, 86, 1725, 86, 1730, 86, 1721, - 1733, 1722, 1723, 86, 1732, 86, 86, 1726, 1728, 86, + 1677, 86, 1684, 1678, 1683, 1685, 1682, 1681, 1686, 86, + 86, 86, 86, 1688, 86, 1689, 86, 86, 86, 163, + 86, 1694, 1695, 1687, 1690, 1693, 1691, 86, 86, 1696, + 86, 1697, 86, 1698, 86, 86, 1701, 86, 1692, 86, + 86, 86, 86, 1702, 86, 86, 1705, 86, 1709, 1703, + 86, 1708, 1699, 86, 1700, 86, 1706, 86, 86, 1704, + 1707, 1711, 1712, 86, 86, 1720, 1715, 86, 1717, 1713, + 1710, 1716, 86, 1718, 86, 86, 86, 1714, 86, 86, + 86, 86, 1728, 1719, 1724, 1723, 1721, 86, 86, 86, + 86, 86, 1729, 86, 1722, 1734, 86, 1725, 86, 1727, - 86, 1727, 86, 86, 86, 1731, 86, 86, 1729, 86, - 86, 1742, 86, 86, 1734, 1743, 86, 165, 1735, 1736, - 1739, 1737, 1738, 86, 1741, 1740, 1744, 1750, 1746, 1747, - 86, 86, 1745, 1748, 86, 86, 1749, 86, 86, 86, - 86, 1755, 86, 86, 86, 1756, 86, 1753, 1751, 1759, - 86, 86, 1752, 1754, 1763, 86, 1764, 86, 1757, 1765, - 1758, 1760, 86, 1761, 1768, 86, 1762, 86, 86, 86, - 86, 1770, 1766, 1769, 86, 1767, 86, 86, 1771, 86, - 86, 1776, 1777, 86, 86, 86, 1774, 86, 86, 1772, - 1780, 86, 1781, 86, 1773, 1782, 1784, 86, 1778, 1775, + 1726, 86, 1737, 86, 1736, 86, 1732, 1730, 86, 86, + 1731, 86, 86, 86, 86, 1735, 161, 86, 86, 1733, + 86, 1746, 1738, 86, 1739, 86, 1747, 1743, 1740, 86, + 1741, 1742, 1745, 1751, 86, 1744, 86, 1748, 1752, 86, + 86, 1750, 86, 86, 1749, 1753, 1754, 86, 86, 1755, + 86, 86, 86, 1759, 86, 86, 1757, 1760, 1756, 1763, + 86, 1758, 1767, 86, 86, 1769, 86, 1764, 1762, 1768, + 1761, 86, 86, 1772, 86, 1765, 1766, 86, 1774, 86, + 86, 1770, 1773, 86, 1775, 1771, 86, 86, 86, 1780, + 1781, 86, 86, 86, 86, 86, 1778, 86, 1785, 1784, - 86, 86, 86, 1785, 86, 1779, 1786, 86, 1783, 1787, - 86, 86, 86, 1790, 86, 86, 86, 1795, 1788, 86, - 1789, 1793, 86, 86, 86, 86, 86, 1801, 86, 1799, - 86, 1802, 1791, 86, 1792, 1794, 86, 1796, 86, 1800, - 1797, 86, 1798, 1805, 1804, 1803, 86, 1808, 86, 86, - 86, 86, 1813, 86, 86, 1811, 86, 86, 1814, 86, - 1816, 1807, 1809, 1806, 86, 86, 1812, 1810, 86, 86, - 86, 86, 1820, 1823, 86, 1822, 1815, 86, 86, 1817, - 1819, 1824, 86, 1818, 1821, 170, 86, 1826, 86, 1828, - 1825, 86, 86, 86, 1834, 86, 86, 86, 1838, 86, + 1786, 86, 86, 1776, 1777, 1789, 86, 86, 1779, 86, + 1782, 1788, 86, 86, 1783, 1790, 86, 86, 86, 86, + 1794, 1787, 86, 1791, 86, 1792, 86, 1799, 1797, 1793, + 86, 86, 86, 86, 86, 1805, 86, 1806, 1803, 1795, + 86, 86, 1796, 86, 1798, 1800, 86, 86, 1804, 1807, + 86, 1802, 1801, 86, 1812, 86, 86, 86, 86, 1817, + 86, 1808, 1809, 1815, 86, 86, 86, 1820, 1818, 1813, + 1811, 1810, 1816, 86, 1814, 86, 86, 86, 86, 86, + 86, 1824, 1827, 86, 1826, 1819, 86, 1823, 170, 1828, + 86, 86, 86, 1829, 1822, 1821, 1830, 1825, 86, 86, - 1829, 1827, 1835, 86, 86, 1832, 86, 1830, 1831, 1840, - 86, 86, 1839, 1842, 86, 1836, 1837, 1833, 1844, 1843, - 86, 1846, 1848, 86, 86, 86, 1841, 86, 86, 86, - 1845, 86, 86, 1851, 1847, 1850, 86, 1853, 86, 1854, - 86, 86, 86, 86, 1849, 1858, 1855, 86, 1859, 86, - 86, 86, 163, 1866, 86, 1852, 1857, 1863, 1856, 86, - 1864, 1860, 1861, 86, 86, 86, 86, 1868, 1867, 1862, - 86, 1871, 1865, 1873, 1870, 86, 1872, 1874, 86, 1876, - 1877, 86, 86, 1869, 86, 86, 86, 1878, 86, 1879, - 86, 1880, 1881, 86, 1883, 86, 86, 1888, 86, 1875, + 86, 86, 1838, 86, 1831, 86, 1833, 86, 1832, 86, + 1839, 1842, 86, 1836, 1844, 86, 86, 1834, 1835, 86, + 86, 1846, 1848, 1840, 1843, 1837, 86, 1841, 86, 1850, + 86, 1847, 1852, 86, 86, 86, 1845, 86, 86, 86, + 1849, 86, 86, 1854, 1851, 86, 1855, 86, 1857, 86, + 1858, 86, 86, 1853, 1862, 86, 1859, 1860, 86, 1863, + 1861, 86, 1856, 1870, 86, 86, 86, 1865, 1867, 86, + 1864, 1868, 86, 86, 86, 1874, 1872, 1871, 86, 1875, + 86, 1866, 86, 1869, 1880, 1877, 1878, 86, 1881, 1876, + 86, 86, 1873, 1887, 86, 1885, 1882, 86, 1883, 86, - 1882, 86, 1884, 86, 1887, 1889, 86, 1890, 86, 86, - 86, 86, 1885, 86, 1891, 1892, 1886, 86, 1895, 86, - 86, 86, 1894, 86, 86, 1896, 1897, 86, 86, 1893, - 1898, 86, 86, 86, 86, 86, 86, 1907, 1906, 86, - 86, 1901, 1899, 86, 1900, 1902, 1903, 1909, 86, 86, - 1913, 1904, 1912, 1905, 86, 1908, 86, 86, 86, 86, - 1910, 1911, 1918, 1914, 86, 1920, 86, 1922, 86, 86, - 1915, 86, 1917, 86, 86, 1921, 1924, 1916, 86, 1926, - 1919, 86, 86, 86, 86, 1925, 86, 86, 1928, 1923, - 86, 86, 86, 1931, 86, 1934, 1927, 1933, 1935, 161, + 1884, 86, 1879, 86, 86, 86, 86, 86, 1886, 1892, + 1891, 1893, 1894, 86, 86, 86, 86, 86, 86, 1895, + 86, 1896, 1888, 86, 1889, 1898, 1890, 86, 1899, 86, + 86, 86, 86, 86, 1901, 1900, 1897, 86, 86, 86, + 86, 86, 86, 1902, 86, 86, 1903, 1912, 1911, 86, + 86, 1904, 1906, 1905, 1907, 1908, 1914, 1909, 86, 86, + 1918, 1913, 1910, 1917, 86, 86, 86, 86, 86, 86, + 1915, 1916, 1923, 86, 1925, 86, 86, 1927, 86, 86, + 86, 1920, 1922, 86, 1919, 1926, 86, 1921, 1929, 86, + 1924, 1930, 86, 1931, 1933, 1928, 86, 86, 86, 86, - 86, 1930, 1932, 1940, 1941, 86, 1929, 1936, 86, 1937, - 1942, 86, 86, 86, 1938, 86, 1945, 1939, 1946, 86, - 1943, 86, 86, 86, 86, 86, 1951, 1949, 1947, 1950, - 1944, 86, 86, 86, 86, 86, 1953, 86, 86, 86, - 1948, 1962, 86, 1956, 1963, 86, 1952, 1958, 1960, 1955, - 1959, 1954, 1961, 86, 1957, 86, 86, 1969, 86, 86, - 86, 86, 1970, 86, 86, 1964, 1965, 86, 86, 1971, - 1967, 1976, 1972, 1966, 86, 1968, 86, 1975, 86, 86, - 1979, 86, 1981, 86, 1980, 1974, 1973, 1978, 86, 86, - 1977, 86, 1983, 1985, 1989, 1984, 1982, 86, 86, 1990, + 86, 1932, 86, 86, 86, 1938, 1936, 86, 1939, 86, + 1945, 1940, 86, 1934, 1935, 1937, 1946, 86, 1941, 1942, + 1947, 86, 86, 86, 1943, 1952, 1950, 1949, 1944, 1951, + 86, 86, 86, 86, 1948, 86, 86, 1954, 1955, 1956, + 86, 86, 86, 86, 86, 1958, 86, 86, 1966, 86, + 1953, 2046, 1961, 86, 86, 1965, 1957, 86, 1960, 86, + 1959, 86, 1963, 1962, 1968, 1964, 1967, 86, 86, 1969, + 86, 1974, 1970, 86, 86, 86, 1975, 86, 1976, 1971, + 86, 86, 1972, 86, 1980, 86, 1973, 1977, 1981, 86, + 1984, 86, 86, 1986, 1985, 86, 86, 1982, 1979, 1978, - 86, 86, 86, 86, 86, 1996, 86, 1986, 1994, 1998, - 86, 86, 1987, 1992, 1999, 1988, 1991, 86, 1995, 86, - 86, 2002, 2000, 1993, 1997, 86, 86, 86, 86, 2006, - 86, 2003, 2010, 2001, 86, 86, 86, 86, 86, 2008, - 86, 86, 2005, 2007, 86, 2009, 2004, 86, 2011, 86, - 86, 86, 2015, 2012, 2016, 86, 2013, 86, 86, 2017, - 2014, 2021, 2023, 86, 2018, 2025, 2019, 2026, 2020, 86, - 86, 86, 2022, 86, 86, 2029, 86, 2027, 86, 86, - 2033, 86, 2028, 2035, 2024, 86, 86, 86, 86, 86, - 2030, 2039, 86, 86, 86, 86, 2031, 86, 2032, 2034, + 1983, 86, 86, 86, 1994, 1988, 1990, 1987, 1989, 1995, + 86, 86, 86, 1991, 86, 86, 86, 86, 2001, 86, + 1999, 1993, 86, 1992, 86, 1996, 2004, 1997, 2003, 86, + 2000, 86, 86, 86, 2007, 2002, 1998, 86, 2005, 2009, + 86, 86, 2011, 2008, 86, 2006, 2015, 86, 86, 86, + 2013, 86, 86, 86, 86, 2010, 2014, 2012, 86, 2016, + 86, 86, 86, 3701, 86, 2021, 2020, 86, 2017, 86, + 2022, 86, 2018, 2019, 2030, 2023, 2024, 2025, 2028, 86, + 86, 2031, 86, 2026, 86, 2027, 86, 86, 86, 2032, + 2034, 86, 86, 2038, 86, 2033, 86, 2040, 86, 86, - 2042, 2041, 86, 2037, 86, 86, 2038, 2036, 86, 2044, - 2045, 2046, 86, 2040, 2043, 86, 86, 170, 86, 2050, - 2053, 86, 86, 2048, 2049, 86, 86, 2057, 86, 2051, - 86, 2047, 86, 2052, 86, 86, 86, 2055, 86, 2059, - 86, 2054, 2064, 86, 2058, 2056, 2060, 2061, 86, 86, - 86, 2076, 2065, 2068, 86, 2062, 2067, 86, 2063, 86, - 2069, 2066, 2070, 86, 2071, 86, 2073, 2074, 86, 86, - 86, 86, 86, 2077, 2072, 86, 86, 86, 86, 86, - 86, 2075, 86, 2082, 2083, 86, 86, 2087, 86, 2084, - 86, 2078, 2095, 86, 2080, 2081, 86, 2079, 2085, 2088, + 2029, 86, 86, 86, 2035, 86, 2036, 2044, 86, 2039, + 2047, 2037, 86, 86, 86, 2042, 86, 86, 2049, 2043, + 2041, 2050, 2045, 2051, 86, 86, 86, 170, 86, 2055, + 2058, 86, 2048, 86, 2054, 2053, 86, 86, 86, 2056, + 2052, 2062, 86, 2057, 86, 2064, 86, 86, 2060, 86, + 86, 2069, 2059, 86, 86, 86, 2061, 86, 2063, 2065, + 2076, 2066, 86, 2073, 86, 2067, 2070, 86, 2072, 86, + 2068, 2071, 2074, 2075, 86, 2078, 2077, 2079, 86, 86, + 86, 86, 2081, 86, 86, 86, 2082, 86, 86, 86, + 86, 2080, 86, 86, 2087, 2088, 86, 86, 2092, 86, - 2086, 86, 86, 2096, 86, 86, 2091, 2093, 2090, 86, - 86, 2094, 2089, 2092, 86, 86, 86, 86, 86, 2103, - 86, 2098, 86, 2106, 86, 2097, 2107, 86, 86, 2099, - 86, 2101, 2104, 2100, 2105, 86, 2102, 2108, 86, 2116, - 2109, 2110, 86, 86, 2111, 2112, 2115, 86, 2117, 2113, - 86, 2114, 2119, 2118, 86, 86, 2121, 86, 86, 86, - 86, 86, 86, 2124, 2122, 2125, 86, 86, 2128, 86, - 86, 86, 2127, 2120, 86, 86, 86, 2133, 86, 2131, - 2132, 2126, 2123, 2134, 2135, 2129, 86, 86, 86, 86, - 86, 2143, 2130, 86, 86, 86, 86, 86, 2136, 2137, + 86, 2089, 86, 3701, 2083, 2085, 2086, 2084, 2090, 2093, + 86, 86, 2091, 2100, 86, 2098, 2096, 2099, 2101, 2095, + 86, 86, 2094, 2097, 86, 86, 86, 86, 86, 86, + 86, 2108, 86, 86, 86, 2111, 86, 2103, 2112, 86, + 86, 2102, 86, 2106, 2104, 2105, 2180, 2109, 2107, 2110, + 2113, 86, 2114, 2115, 86, 86, 2116, 2117, 2120, 86, + 86, 2118, 2122, 2119, 2121, 2124, 86, 86, 86, 2123, + 2126, 86, 86, 86, 86, 86, 86, 86, 2128, 86, + 2130, 2131, 86, 86, 2133, 2125, 2134, 86, 86, 86, + 2135, 86, 86, 2139, 2137, 2127, 2138, 86, 2141, 2129, - 2138, 2147, 2146, 86, 86, 2139, 2141, 2140, 86, 2142, - 2148, 86, 86, 2144, 2145, 2149, 86, 2150, 86, 2151, - 2152, 2155, 2153, 2154, 86, 86, 86, 86, 2159, 86, - 86, 2161, 2157, 2156, 86, 86, 86, 2164, 2165, 86, - 86, 2167, 86, 86, 86, 86, 2158, 86, 86, 2172, - 86, 86, 2160, 2169, 2162, 86, 2170, 2163, 86, 86, - 2166, 2176, 86, 86, 2175, 86, 2171, 2173, 2168, 86, - 86, 86, 2177, 86, 2174, 86, 2179, 2185, 2178, 2180, - 86, 2182, 2187, 86, 86, 2181, 2190, 2184, 86, 2186, - 86, 2183, 86, 2188, 86, 86, 2191, 2189, 2193, 2194, + 86, 86, 2140, 2132, 86, 86, 86, 86, 86, 2136, + 2149, 86, 2142, 2143, 2144, 86, 86, 86, 2152, 2145, + 2153, 2146, 86, 2147, 2154, 86, 2148, 2150, 2151, 2155, + 86, 2156, 86, 86, 2158, 2161, 2159, 2157, 86, 86, + 86, 86, 2165, 86, 86, 86, 2167, 2162, 2160, 86, + 86, 86, 2170, 2171, 86, 86, 2173, 86, 86, 2163, + 86, 2164, 86, 86, 86, 86, 2182, 86, 2178, 2168, + 2166, 2175, 2169, 2176, 86, 2172, 86, 86, 86, 2181, + 86, 2177, 2179, 2174, 86, 2185, 86, 2188, 86, 2186, + 86, 86, 2184, 2191, 2193, 86, 2192, 2183, 86, 86, - 86, 86, 86, 86, 86, 86, 2195, 86, 86, 86, - 86, 2196, 2200, 2202, 2192, 86, 86, 2206, 2197, 86, - 2201, 86, 2205, 86, 2207, 2198, 2199, 86, 86, 86, - 86, 2210, 86, 2203, 86, 86, 2215, 86, 86, 2208, - 2214, 86, 2204, 2209, 86, 3682, 86, 2211, 86, 2212, - 2220, 86, 2221, 86, 2213, 86, 2218, 2217, 2216, 2222, - 2224, 86, 86, 2219, 2223, 86, 2225, 2228, 86, 2229, - 86, 86, 86, 86, 86, 86, 2226, 2232, 86, 2236, - 86, 2227, 86, 86, 2230, 86, 86, 86, 2239, 2244, - 2231, 2241, 86, 2233, 2234, 2235, 2237, 2238, 86, 2240, + 86, 2196, 86, 86, 2197, 2195, 2190, 86, 2200, 86, + 2187, 2199, 86, 86, 2189, 2194, 86, 86, 2201, 86, + 86, 2202, 2198, 86, 86, 86, 86, 2206, 2208, 86, + 2212, 2203, 2207, 86, 2211, 2213, 86, 86, 86, 2204, + 86, 86, 2205, 86, 2209, 86, 86, 2216, 2221, 86, + 86, 2220, 86, 2215, 86, 2210, 86, 2214, 86, 86, + 2218, 3701, 2226, 2217, 86, 2227, 86, 2219, 2229, 2224, + 86, 2223, 2228, 86, 2222, 2225, 2230, 86, 86, 2234, + 86, 2232, 2231, 86, 86, 86, 2233, 86, 86, 86, + 2238, 86, 2242, 86, 2235, 86, 86, 2236, 86, 86, - 86, 2242, 2243, 86, 86, 2249, 86, 2247, 86, 2248, - 2250, 86, 2251, 3682, 2245, 2253, 2254, 2252, 86, 2246, - 86, 86, 86, 86, 2258, 2256, 86, 86, 86, 86, - 86, 2260, 86, 2262, 2255, 2257, 2264, 86, 2259, 2266, - 2261, 86, 86, 2267, 86, 86, 86, 170, 86, 86, - 86, 86, 2270, 86, 2263, 86, 2274, 86, 2275, 2265, - 2268, 2271, 2272, 86, 2276, 2334, 2269, 2273, 2277, 86, - 2278, 86, 2280, 2279, 86, 86, 86, 86, 86, 86, - 2281, 2282, 86, 2283, 2284, 86, 86, 2285, 2286, 86, - 2288, 2287, 86, 86, 86, 2292, 86, 86, 2289, 2291, + 2245, 2247, 86, 2237, 86, 2248, 2244, 2239, 2240, 2241, + 86, 2243, 2246, 86, 2249, 86, 2253, 86, 86, 2255, + 86, 3701, 2250, 2254, 2256, 86, 2251, 2257, 2259, 2260, + 86, 2252, 2258, 86, 86, 86, 86, 86, 2264, 86, + 86, 2262, 2263, 2261, 86, 86, 86, 86, 2268, 2265, + 2266, 2267, 2270, 2272, 2273, 86, 86, 86, 86, 86, + 86, 170, 86, 86, 86, 2269, 2276, 2271, 86, 2280, + 86, 2281, 2277, 86, 2278, 2274, 2292, 2275, 86, 2282, + 2283, 86, 2279, 2284, 86, 2286, 86, 86, 86, 86, + 2285, 86, 2287, 2288, 86, 2289, 2290, 86, 86, 2291, - 86, 86, 2293, 86, 2290, 2294, 2295, 86, 2297, 86, - 2296, 86, 2299, 86, 86, 86, 2304, 2298, 2302, 86, - 2303, 86, 86, 86, 86, 86, 86, 86, 2309, 2300, - 2306, 86, 2301, 86, 86, 2312, 86, 2305, 2308, 2310, - 2313, 2307, 86, 2311, 86, 2315, 2317, 86, 86, 2321, - 86, 2316, 2319, 2314, 86, 86, 86, 2318, 2322, 86, - 86, 2320, 86, 2328, 86, 86, 2330, 86, 86, 86, - 2323, 86, 2324, 2331, 2327, 2325, 86, 2326, 2333, 86, - 86, 2329, 2335, 86, 86, 2332, 86, 2336, 2339, 86, - 2338, 2337, 86, 86, 86, 86, 2344, 86, 2342, 2341, + 86, 2294, 86, 86, 2298, 86, 86, 86, 2297, 2293, + 2295, 86, 2300, 86, 2296, 2299, 2301, 86, 2303, 86, + 2302, 86, 86, 86, 86, 86, 86, 86, 2308, 2310, + 2305, 2309, 86, 2304, 86, 86, 2312, 86, 2315, 86, + 2306, 86, 2307, 2311, 86, 86, 86, 2321, 2314, 2316, + 2313, 86, 86, 2318, 2319, 86, 86, 2317, 86, 86, + 2322, 2320, 2328, 2325, 2323, 2327, 86, 86, 86, 2326, + 86, 86, 86, 2334, 86, 86, 2324, 86, 2336, 86, + 86, 86, 2337, 2329, 2330, 2333, 2331, 2332, 86, 2338, + 86, 2335, 2340, 86, 2342, 86, 2341, 86, 2343, 2339, - 2343, 86, 2345, 2340, 86, 86, 86, 86, 86, 2348, - 2346, 86, 86, 86, 2347, 3682, 2349, 2353, 2351, 2355, - 2350, 86, 86, 2358, 2356, 86, 2354, 2359, 86, 86, - 2364, 86, 86, 2352, 86, 2357, 2362, 2367, 86, 86, - 2360, 2363, 2361, 2368, 86, 86, 2365, 2371, 86, 2370, - 86, 86, 2366, 86, 86, 2373, 86, 86, 2374, 2369, - 86, 86, 2375, 2379, 86, 2377, 2372, 2382, 86, 2378, - 86, 86, 2376, 86, 86, 86, 2384, 2386, 86, 2380, - 2388, 86, 86, 2389, 2381, 2385, 86, 2390, 2383, 86, - 86, 2391, 86, 2395, 86, 86, 2387, 86, 2399, 86, + 86, 2346, 86, 86, 86, 86, 2345, 86, 86, 2351, + 2348, 86, 2352, 2344, 86, 86, 2347, 86, 86, 86, + 2353, 86, 86, 86, 86, 2350, 2349, 2355, 86, 2356, + 86, 2358, 2360, 2357, 2362, 2354, 86, 2361, 2365, 2363, + 86, 86, 2366, 86, 2368, 86, 86, 2359, 2371, 86, + 86, 2364, 2378, 2369, 86, 2367, 86, 2370, 86, 2372, + 86, 2374, 86, 2373, 86, 2375, 2376, 2377, 86, 2380, + 86, 86, 2379, 86, 2383, 2381, 86, 86, 2386, 2382, + 2384, 86, 2389, 86, 86, 2385, 2391, 86, 86, 86, + 86, 2393, 86, 86, 2395, 2396, 2387, 86, 86, 86, - 2396, 86, 86, 2400, 86, 86, 2398, 2392, 2393, 2401, - 2397, 86, 2394, 2405, 86, 86, 2406, 86, 86, 2403, - 86, 2402, 86, 2404, 2410, 86, 86, 2411, 2407, 86, - 86, 2412, 86, 2408, 2414, 2416, 86, 86, 2418, 86, - 2409, 86, 2415, 2413, 2417, 86, 2419, 86, 2420, 86, - 86, 86, 2421, 2423, 86, 86, 2426, 86, 86, 2422, - 2424, 2428, 86, 2425, 2431, 86, 2429, 86, 86, 2430, - 2432, 2427, 86, 2434, 2433, 86, 86, 2435, 2436, 2440, - 86, 86, 86, 2437, 86, 2439, 86, 86, 86, 86, - 86, 86, 86, 2448, 86, 2438, 86, 86, 86, 2441, + 86, 2388, 2397, 2390, 2392, 2398, 86, 86, 2402, 86, + 86, 86, 2403, 2394, 86, 2406, 2399, 2400, 2408, 86, + 2407, 86, 2404, 2405, 86, 86, 2401, 2412, 86, 86, + 2413, 86, 86, 86, 2417, 86, 2411, 2419, 2409, 2410, + 86, 86, 2414, 86, 86, 86, 2418, 2415, 2423, 86, + 86, 2425, 2421, 2416, 86, 2426, 86, 2424, 86, 86, + 2422, 2420, 86, 2428, 86, 2427, 2430, 86, 86, 2433, + 86, 86, 86, 2431, 2435, 86, 2432, 2429, 86, 2436, + 86, 2438, 2437, 2439, 86, 86, 86, 2440, 86, 2434, + 2441, 2442, 86, 2447, 86, 86, 2444, 2443, 86, 86, - 2442, 2449, 2443, 2444, 2446, 86, 2447, 2454, 2450, 86, - 2452, 2445, 2451, 86, 2453, 2455, 86, 2459, 86, 2456, - 86, 86, 2458, 2464, 86, 86, 86, 2466, 86, 86, - 86, 86, 2457, 2460, 2463, 2465, 86, 86, 2461, 86, - 2469, 170, 2470, 3682, 2471, 2473, 2462, 2467, 2475, 2468, - 2477, 86, 86, 2476, 86, 2478, 86, 86, 2472, 86, - 2479, 86, 86, 2474, 2482, 86, 86, 2480, 86, 2483, - 86, 2486, 2481, 2487, 86, 86, 2488, 86, 2489, 2491, - 86, 2493, 2492, 2484, 86, 86, 2494, 86, 2490, 2495, - 2496, 86, 86, 86, 2485, 2497, 86, 2499, 86, 86, + 86, 2446, 86, 2452, 86, 86, 86, 86, 2445, 86, + 2455, 86, 2459, 2448, 2453, 86, 2449, 2450, 2451, 2454, + 2460, 2456, 86, 2457, 86, 86, 2458, 86, 86, 86, + 86, 2461, 86, 2463, 2465, 86, 86, 2471, 86, 86, + 86, 86, 2462, 86, 2467, 2470, 2464, 2476, 2466, 2472, + 2468, 2473, 86, 2474, 86, 2469, 86, 2480, 2475, 2477, + 2479, 170, 2482, 86, 2484, 2485, 86, 2483, 86, 2478, + 86, 86, 86, 86, 2487, 2486, 2489, 86, 86, 86, + 2490, 2494, 86, 2481, 86, 2495, 86, 2493, 86, 2498, + 86, 86, 86, 2488, 2491, 86, 2499, 2502, 2496, 86, - 86, 86, 86, 86, 86, 2502, 86, 86, 2505, 86, - 86, 86, 2498, 86, 2509, 2512, 2504, 86, 2500, 2511, - 86, 86, 2506, 2507, 2501, 2503, 2508, 86, 2513, 86, - 86, 86, 2510, 86, 2514, 2515, 86, 86, 2520, 2523, - 86, 86, 2518, 86, 86, 2517, 86, 2516, 86, 2521, - 2519, 2524, 86, 86, 86, 2522, 86, 86, 2534, 86, - 2525, 2541, 86, 2526, 86, 2527, 86, 86, 2532, 86, - 86, 2528, 2530, 2543, 2535, 2531, 2529, 86, 2533, 2536, - 86, 2537, 2539, 2538, 86, 86, 86, 86, 86, 2540, - 2542, 86, 86, 2548, 2549, 86, 86, 2544, 2550, 2551, + 2500, 2501, 86, 2503, 86, 2492, 2497, 86, 2504, 86, + 2505, 2506, 86, 86, 86, 86, 86, 86, 86, 2509, + 86, 86, 2512, 86, 86, 2518, 86, 86, 2516, 86, + 2511, 2519, 2507, 86, 86, 86, 2513, 2514, 2508, 2510, + 2515, 86, 86, 86, 2520, 86, 2517, 2521, 86, 86, + 86, 2522, 86, 2524, 2527, 2525, 2530, 86, 2531, 2529, + 2523, 2528, 86, 86, 2526, 86, 86, 86, 86, 2541, + 86, 2532, 86, 2542, 86, 86, 86, 86, 2547, 86, + 86, 2533, 2534, 86, 2539, 86, 2537, 2544, 2535, 2538, + 2536, 2540, 2543, 86, 2545, 2549, 86, 86, 86, 2546, - 86, 2546, 86, 2552, 2547, 86, 3682, 86, 2555, 86, - 2545, 2556, 2557, 86, 86, 2558, 86, 2553, 2554, 86, - 2559, 2562, 86, 2563, 86, 2560, 86, 86, 2561, 2566, - 86, 2564, 2565, 86, 2569, 86, 2570, 86, 86, 2572, - 86, 86, 2574, 86, 86, 2568, 86, 2577, 86, 2576, - 2567, 2578, 86, 86, 86, 86, 2581, 2571, 86, 2573, - 86, 2575, 86, 2580, 2583, 86, 86, 2579, 2587, 86, - 86, 2586, 2589, 86, 2584, 2582, 86, 86, 86, 86, - 86, 2585, 2591, 2593, 2592, 86, 2594, 2596, 86, 2588, - 86, 86, 86, 2599, 2590, 86, 2602, 86, 2597, 86, + 86, 2551, 2550, 2548, 86, 86, 86, 86, 2556, 2553, + 2557, 86, 86, 2552, 2558, 2559, 86, 86, 2554, 2555, + 2560, 86, 86, 2563, 2565, 86, 2564, 86, 2566, 86, + 2567, 86, 2561, 86, 2562, 2570, 86, 2571, 86, 86, + 2568, 86, 86, 2569, 2572, 86, 2573, 2577, 86, 2578, + 86, 86, 86, 2574, 2580, 86, 86, 2576, 2582, 86, + 86, 86, 2575, 2585, 86, 2584, 86, 2583, 2586, 86, + 2579, 86, 86, 2589, 2581, 2587, 2591, 86, 86, 86, + 2588, 86, 86, 2590, 2595, 86, 2594, 2597, 86, 86, + 86, 86, 2592, 86, 86, 2599, 2601, 2600, 2593, 86, - 2603, 2595, 86, 86, 3682, 2598, 86, 2600, 86, 86, - 2609, 86, 86, 2608, 2601, 86, 86, 2605, 86, 2604, - 2611, 86, 86, 2607, 2614, 86, 2606, 86, 86, 86, - 2617, 2610, 86, 2612, 2616, 86, 2613, 86, 2622, 86, - 86, 86, 2615, 2624, 86, 2628, 2618, 2619, 2623, 86, - 2620, 86, 2625, 86, 86, 86, 2629, 86, 2621, 2630, - 2631, 86, 86, 86, 86, 2632, 2633, 2626, 2636, 2627, - 2635, 86, 86, 3682, 86, 86, 2638, 2639, 2634, 2640, - 2642, 2643, 86, 2646, 86, 2644, 86, 86, 2637, 86, - 2641, 86, 86, 86, 86, 86, 2647, 2645, 2648, 86, + 2602, 2596, 2604, 86, 86, 86, 86, 2598, 2607, 86, + 2610, 86, 2611, 2605, 86, 2603, 86, 86, 86, 2606, + 2608, 86, 86, 2617, 86, 86, 2616, 86, 2609, 86, + 86, 2613, 2619, 86, 2612, 86, 2615, 2622, 86, 86, + 2614, 86, 2624, 86, 2618, 2620, 86, 86, 2621, 2623, + 86, 2630, 2636, 2625, 86, 86, 86, 2632, 86, 2626, + 86, 2627, 2628, 2631, 86, 2638, 86, 2633, 2637, 86, + 86, 2639, 2629, 86, 86, 86, 86, 86, 2644, 3701, + 86, 86, 2634, 2641, 2635, 2643, 2646, 86, 86, 86, + 2650, 2651, 2647, 2648, 2640, 2642, 86, 86, 2652, 86, - 3682, 86, 2651, 86, 2653, 2650, 86, 86, 86, 2649, - 2654, 2658, 2655, 2659, 2652, 2656, 86, 86, 86, 86, - 2660, 2657, 86, 86, 2664, 86, 2665, 86, 2661, 86, - 2669, 2663, 86, 86, 2666, 170, 2668, 86, 2662, 86, - 2670, 86, 2667, 2675, 86, 2671, 86, 2672, 86, 86, - 86, 86, 86, 2673, 86, 2674, 2676, 2677, 2678, 2683, - 86, 86, 2681, 2682, 3682, 2679, 2680, 2686, 86, 86, - 2687, 86, 2684, 2685, 2688, 86, 86, 86, 2691, 2689, - 2692, 86, 2690, 86, 86, 2695, 86, 2694, 86, 86, - 2693, 86, 2696, 86, 2701, 2697, 86, 2700, 86, 86, + 2654, 2645, 86, 86, 2649, 2657, 86, 2655, 2656, 86, + 86, 86, 86, 2659, 2653, 86, 86, 86, 86, 86, + 86, 2661, 2658, 2666, 2662, 2663, 2664, 2667, 86, 86, + 86, 2660, 2665, 86, 2668, 86, 2672, 2671, 2673, 2669, + 2670, 86, 2674, 86, 86, 86, 2677, 86, 170, 86, + 2675, 86, 2676, 2678, 86, 2683, 86, 86, 86, 86, + 86, 86, 86, 2691, 86, 2681, 2684, 2679, 2685, 2680, + 2682, 86, 2686, 2687, 2689, 86, 2688, 3701, 2690, 2694, + 86, 86, 2695, 2693, 2692, 2696, 86, 86, 86, 2699, + 2697, 2700, 86, 2698, 86, 86, 86, 86, 2702, 86, - 86, 86, 2704, 2698, 86, 86, 2703, 2705, 2706, 86, - 2707, 86, 2699, 2702, 86, 86, 2708, 86, 86, 2713, - 86, 86, 2712, 2709, 2710, 86, 86, 86, 86, 86, - 2715, 86, 86, 86, 2714, 2720, 2723, 2711, 2722, 86, - 86, 2725, 86, 2719, 86, 2724, 2716, 2717, 2718, 86, - 86, 86, 2721, 86, 2731, 86, 2729, 86, 86, 86, - 2735, 2736, 2726, 86, 2734, 86, 86, 86, 2727, 2728, - 2732, 2737, 86, 2733, 2730, 86, 86, 2738, 86, 2740, - 3682, 2739, 86, 2742, 86, 86, 2744, 2743, 86, 86, - 2741, 2745, 2746, 86, 2748, 86, 2750, 86, 86, 2749, + 86, 2701, 86, 2704, 86, 86, 2708, 2709, 2703, 86, + 2706, 86, 2705, 86, 2711, 86, 86, 86, 86, 2712, + 2713, 2714, 86, 2707, 86, 2710, 86, 2717, 86, 2715, + 86, 2716, 2721, 86, 2720, 86, 2719, 2718, 86, 86, + 86, 86, 86, 2723, 86, 86, 86, 2731, 2722, 2728, + 86, 2730, 86, 86, 86, 2733, 2727, 86, 2732, 2724, + 2725, 2726, 86, 2734, 2729, 86, 86, 86, 2735, 2740, + 86, 2738, 86, 86, 86, 2744, 2736, 2743, 3701, 86, + 2745, 86, 86, 86, 2737, 2741, 86, 2746, 2739, 86, + 2742, 2747, 2748, 86, 86, 2751, 2749, 86, 86, 2753, - 2752, 86, 86, 86, 2747, 2754, 86, 2753, 86, 2751, - 86, 86, 86, 86, 86, 86, 2758, 86, 86, 86, - 2762, 2755, 2756, 2763, 2764, 86, 2757, 2765, 86, 86, - 2766, 2760, 86, 2768, 86, 2761, 86, 2767, 2759, 2771, - 86, 2770, 86, 86, 86, 2769, 2773, 2776, 86, 86, - 86, 86, 86, 86, 2774, 2780, 2775, 86, 2779, 2772, - 2778, 86, 2783, 86, 86, 2777, 86, 2784, 2781, 86, - 2787, 2786, 2782, 2788, 86, 86, 86, 86, 86, 86, - 2789, 86, 86, 2794, 2793, 2785, 2791, 86, 86, 86, - 86, 2792, 86, 86, 2790, 2798, 2795, 86, 2801, 2807, + 2752, 86, 86, 86, 2754, 2755, 86, 2750, 86, 2757, + 2758, 2759, 86, 2761, 86, 86, 86, 86, 2763, 86, + 86, 86, 86, 86, 2760, 2762, 86, 2767, 86, 2756, + 86, 86, 3701, 2764, 2765, 86, 2771, 2766, 2773, 86, + 2772, 2774, 86, 86, 2769, 86, 2775, 86, 2776, 2768, + 86, 2770, 86, 86, 2777, 2780, 86, 86, 86, 2778, + 2782, 2785, 86, 86, 86, 86, 2781, 2779, 2783, 2789, + 2784, 2788, 86, 2787, 86, 86, 2792, 86, 86, 2786, + 86, 2793, 86, 86, 2796, 2797, 86, 86, 86, 2791, + 2790, 86, 2798, 86, 86, 86, 86, 2803, 86, 2794, - 2797, 2796, 2802, 86, 2803, 86, 2804, 86, 86, 2799, - 2805, 86, 2800, 86, 86, 86, 2810, 86, 2811, 2809, - 2806, 86, 2812, 86, 86, 86, 86, 86, 86, 86, - 86, 2808, 2819, 86, 86, 2813, 2896, 2815, 2821, 86, - 2822, 86, 86, 86, 2814, 2818, 2816, 2820, 2817, 2824, - 86, 86, 86, 2823, 2828, 2825, 86, 86, 2826, 86, - 86, 2829, 2832, 86, 2827, 2834, 86, 86, 86, 2833, - 86, 86, 86, 86, 86, 2841, 86, 2830, 170, 2831, - 86, 2843, 86, 2837, 86, 2844, 2839, 86, 2836, 86, - 2842, 86, 86, 2835, 2899, 2838, 2840, 2845, 86, 2846, + 2795, 2802, 2800, 86, 2801, 86, 2799, 86, 2804, 86, + 2807, 86, 2805, 2811, 86, 2806, 2810, 2812, 86, 2813, + 86, 2814, 86, 86, 86, 86, 2816, 2808, 86, 2809, + 86, 2819, 86, 2818, 86, 2815, 86, 2820, 86, 2821, + 86, 86, 86, 2817, 2822, 86, 86, 2828, 86, 2830, + 86, 86, 2824, 86, 2823, 2831, 86, 86, 2833, 86, + 86, 2825, 2827, 2826, 2829, 2834, 86, 2835, 2832, 86, + 86, 2837, 86, 86, 2838, 2841, 86, 86, 2836, 2843, + 86, 86, 2842, 86, 86, 86, 86, 86, 2850, 86, + 2839, 86, 2840, 170, 86, 2852, 2846, 86, 2853, 2848, - 86, 2850, 86, 86, 86, 2847, 2851, 2852, 2853, 2854, - 86, 2848, 2855, 86, 2849, 86, 2856, 86, 2857, 86, - 2858, 86, 2859, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 2860, 2869, 86, 86, 86, 86, 2867, 2862, - 86, 2873, 2861, 86, 2864, 2863, 86, 2874, 2866, 2865, - 2868, 2875, 86, 2871, 2870, 2872, 86, 86, 2877, 86, - 2876, 2879, 86, 2881, 86, 2878, 2880, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 2885, 2882, 2892, 86, - 2893, 86, 2891, 86, 86, 2883, 2884, 2886, 2887, 2888, - 2889, 86, 2890, 2897, 86, 2898, 86, 86, 86, 86, + 86, 2845, 86, 2844, 86, 2851, 2854, 86, 2847, 2849, + 2859, 86, 2855, 3701, 86, 86, 2863, 86, 2856, 2861, + 2862, 2864, 86, 86, 2857, 2860, 86, 2858, 86, 2865, + 86, 2866, 86, 2867, 86, 86, 86, 2869, 86, 86, + 86, 2868, 86, 86, 86, 86, 2878, 86, 86, 2876, + 2871, 86, 86, 2870, 86, 2882, 2872, 2873, 2884, 86, + 2874, 2885, 2875, 2877, 86, 2879, 2880, 86, 2883, 2881, + 2888, 86, 86, 86, 2886, 86, 2887, 2890, 86, 86, + 86, 2889, 86, 86, 86, 86, 86, 2894, 86, 86, + 86, 2891, 2900, 2892, 2902, 86, 2901, 2893, 2895, 86, - 86, 86, 2895, 2894, 2906, 86, 2905, 86, 86, 2900, - 86, 86, 86, 2902, 2904, 2901, 86, 86, 2903, 2913, - 86, 2912, 2910, 2914, 86, 2916, 86, 2907, 2908, 86, - 2909, 2915, 2911, 86, 86, 86, 86, 86, 86, 2917, - 86, 86, 2918, 2922, 86, 2924, 86, 2920, 86, 86, - 86, 2929, 86, 2919, 2930, 86, 2921, 2923, 2933, 86, - 86, 2925, 86, 2926, 86, 2931, 2927, 2928, 2936, 86, - 2932, 2934, 86, 86, 86, 2941, 86, 2935, 2940, 2939, - 86, 86, 86, 86, 2937, 2946, 86, 2938, 86, 86, - 86, 86, 2950, 2942, 2949, 86, 2943, 86, 2948, 86, + 2896, 2898, 2897, 2903, 86, 2899, 86, 2907, 86, 2909, + 2904, 86, 2906, 2908, 86, 86, 86, 2905, 86, 86, + 86, 86, 2916, 86, 86, 2915, 86, 86, 86, 2910, + 86, 86, 3701, 2912, 2911, 2914, 2922, 86, 2913, 2920, + 86, 86, 2923, 2925, 2917, 86, 2918, 2919, 2924, 86, + 2921, 2926, 86, 86, 2928, 86, 2927, 86, 86, 86, + 86, 86, 86, 2932, 86, 2934, 86, 2930, 86, 2940, + 86, 2939, 2929, 86, 86, 2943, 86, 2931, 86, 2933, + 86, 2935, 2937, 2936, 2938, 86, 86, 86, 2941, 2944, + 2946, 86, 2942, 86, 86, 2945, 86, 2949, 2950, 86, - 2947, 86, 2944, 2945, 2951, 86, 2953, 86, 86, 2957, - 2955, 86, 86, 2954, 2952, 2956, 2959, 86, 86, 2960, - 86, 2961, 2963, 86, 86, 86, 86, 86, 2970, 86, - 86, 2958, 86, 86, 86, 86, 2967, 2964, 2965, 2966, - 2974, 2968, 2962, 2969, 2973, 86, 86, 86, 2972, 86, - 2971, 2975, 86, 86, 2977, 86, 86, 86, 86, 86, - 2978, 2976, 86, 2983, 2980, 2981, 86, 2984, 2986, 86, - 86, 2982, 2979, 86, 2985, 2987, 86, 2991, 2988, 2990, - 170, 86, 86, 86, 2995, 2989, 2992, 86, 86, 2997, - 86, 86, 2996, 86, 3000, 86, 3001, 86, 2999, 86, + 2947, 86, 2948, 2951, 86, 86, 2952, 2956, 86, 86, + 86, 2953, 86, 2960, 2959, 2961, 86, 2957, 2958, 2954, + 86, 2955, 2963, 86, 86, 86, 86, 86, 86, 2964, + 2969, 86, 86, 2970, 2965, 86, 86, 2973, 86, 2962, + 2967, 86, 2966, 86, 2971, 86, 86, 2968, 86, 2980, + 86, 86, 86, 86, 2974, 86, 2975, 2977, 2972, 2976, + 2978, 2979, 2983, 86, 86, 2981, 86, 86, 2982, 2984, + 86, 2985, 86, 86, 2989, 2987, 86, 86, 86, 86, + 2988, 2986, 2990, 2993, 2991, 86, 2996, 86, 2997, 86, + 2994, 86, 2992, 86, 2995, 86, 2998, 3000, 170, 86, - 2993, 2994, 3003, 86, 86, 3005, 2998, 3004, 86, 86, - 3006, 86, 3002, 3007, 3008, 86, 3010, 86, 86, 86, - 86, 3011, 86, 3012, 86, 86, 86, 3017, 3013, 3009, - 3018, 3019, 3015, 86, 86, 3014, 86, 86, 3021, 86, - 86, 3022, 86, 86, 86, 3023, 3016, 3024, 3026, 3020, - 86, 86, 86, 86, 3025, 3027, 3028, 86, 86, 86, - 86, 3033, 86, 86, 86, 86, 3030, 3031, 3032, 3035, - 3029, 3034, 3037, 86, 86, 3036, 86, 86, 86, 3038, - 3043, 86, 3039, 86, 3044, 3040, 86, 86, 86, 86, - 3048, 86, 3051, 86, 3041, 3042, 3046, 3047, 86, 86, + 86, 86, 3001, 3005, 3002, 86, 86, 3007, 86, 86, + 3006, 86, 2999, 3010, 86, 86, 3009, 86, 3003, 3004, + 3011, 86, 3017, 3008, 3013, 86, 86, 3015, 3012, 3014, + 86, 86, 3016, 86, 3020, 3018, 86, 86, 86, 86, + 86, 3021, 86, 3022, 86, 3019, 3027, 3028, 3023, 86, + 3025, 3024, 86, 86, 3029, 86, 3031, 86, 86, 86, + 86, 86, 86, 3033, 3034, 3026, 3032, 3030, 86, 86, + 86, 86, 3035, 3036, 3037, 3038, 86, 86, 86, 3043, + 3039, 86, 86, 86, 3040, 3041, 3042, 3045, 86, 3048, + 3044, 86, 86, 3046, 86, 86, 86, 3049, 86, 86, - 86, 3049, 3045, 86, 3056, 86, 3050, 3055, 86, 3058, - 3059, 86, 3062, 86, 3053, 86, 86, 3052, 86, 86, - 3054, 3063, 86, 86, 86, 86, 86, 3064, 86, 3066, - 3060, 3061, 3069, 3057, 3067, 86, 86, 86, 86, 3068, - 3070, 86, 3074, 86, 86, 3071, 3072, 3682, 3065, 3073, - 86, 3075, 86, 3076, 3078, 86, 3079, 86, 3080, 86, - 86, 86, 3077, 86, 3081, 86, 3082, 3084, 86, 86, - 3085, 86, 3083, 3088, 3086, 86, 86, 3087, 3089, 86, - 86, 3093, 86, 3090, 3094, 86, 3095, 86, 3096, 86, - 86, 86, 86, 3097, 86, 3091, 3092, 3100, 86, 86, + 3047, 3054, 86, 86, 86, 86, 3055, 86, 3059, 86, + 86, 3050, 86, 3057, 3051, 86, 3052, 3053, 3058, 86, + 3060, 86, 3056, 3062, 86, 3061, 3067, 86, 86, 3069, + 3064, 3063, 3066, 86, 3070, 86, 86, 3073, 86, 3065, + 86, 3074, 86, 86, 86, 86, 3068, 86, 86, 3077, + 86, 3080, 3071, 3075, 3072, 86, 3078, 86, 3081, 86, + 86, 3079, 86, 3076, 3082, 3085, 86, 86, 3083, 86, + 3087, 3089, 86, 3084, 3090, 86, 86, 3086, 3091, 86, + 3092, 86, 86, 3095, 86, 3088, 3093, 86, 86, 86, + 3099, 3094, 86, 3097, 86, 3100, 86, 86, 86, 3104, - 3101, 3103, 86, 86, 3098, 3099, 86, 3104, 3105, 86, - 3107, 86, 3108, 86, 3102, 86, 3111, 86, 3106, 3112, - 86, 3113, 86, 86, 3114, 86, 86, 3116, 3115, 3110, - 86, 3109, 3117, 86, 86, 86, 3122, 86, 86, 86, - 3682, 3121, 86, 3124, 3125, 86, 3119, 86, 3118, 86, - 86, 86, 3126, 3128, 3120, 86, 86, 3127, 3130, 86, - 3131, 3134, 3123, 3129, 86, 86, 86, 86, 3132, 3133, - 3138, 86, 86, 86, 86, 3140, 86, 86, 3150, 86, - 3137, 3139, 3135, 3141, 3144, 3136, 3145, 3142, 86, 3147, - 86, 3146, 86, 3143, 3148, 86, 3149, 86, 3151, 86, + 86, 3098, 3105, 86, 3101, 3106, 86, 3096, 3107, 86, + 86, 86, 86, 3108, 3102, 3111, 86, 3103, 3112, 86, + 3114, 86, 86, 3115, 3109, 3110, 3116, 86, 86, 3118, + 86, 86, 86, 86, 3122, 3123, 86, 86, 86, 3113, + 86, 3124, 3125, 3117, 3119, 86, 86, 3121, 86, 3127, + 3120, 3126, 86, 86, 3128, 86, 3133, 86, 86, 3132, + 86, 3129, 86, 3137, 3135, 3130, 3136, 86, 86, 86, + 86, 86, 3131, 3139, 3141, 86, 3138, 86, 3142, 86, + 86, 86, 3134, 86, 3145, 3149, 86, 86, 86, 86, + 3161, 86, 3143, 3144, 3140, 86, 86, 3148, 3146, 3151, - 3152, 86, 3153, 86, 3154, 86, 3155, 86, 86, 86, - 3158, 86, 86, 3157, 3159, 86, 86, 3161, 86, 86, - 3163, 86, 86, 3156, 3682, 3160, 86, 3164, 3162, 3168, - 86, 3169, 86, 86, 86, 3180, 3165, 3170, 86, 3166, - 3174, 3167, 3172, 86, 3173, 3175, 86, 86, 3171, 3177, - 86, 86, 3179, 86, 3176, 86, 3178, 3182, 86, 86, - 86, 86, 3186, 86, 3181, 3187, 86, 86, 3183, 3184, - 86, 3188, 86, 86, 86, 86, 86, 3194, 86, 3185, - 86, 3189, 3195, 86, 3191, 3197, 3200, 86, 86, 3190, - 3192, 3196, 3198, 86, 3193, 86, 3202, 86, 3199, 86, + 86, 3147, 3150, 3153, 3156, 3701, 3154, 3152, 3155, 3157, + 86, 3158, 86, 3162, 3160, 86, 3159, 86, 86, 3163, + 86, 3164, 86, 3165, 86, 3166, 86, 86, 86, 86, + 86, 3167, 3168, 86, 86, 86, 86, 86, 3171, 3173, + 3175, 86, 86, 86, 3172, 3176, 3169, 3180, 86, 3181, + 86, 3701, 3174, 86, 3170, 86, 3182, 3177, 3183, 3184, + 86, 3178, 3179, 86, 3187, 86, 86, 86, 3701, 3185, + 3189, 86, 86, 3186, 3188, 3191, 86, 3190, 86, 86, + 3194, 86, 86, 86, 3197, 3198, 86, 3192, 3193, 3199, + 86, 3195, 3196, 86, 86, 86, 86, 3200, 86, 86, - 86, 3206, 86, 86, 3208, 3204, 86, 86, 86, 3201, - 86, 86, 3207, 3203, 86, 3214, 3211, 3212, 3205, 3209, - 86, 86, 86, 86, 86, 86, 3219, 86, 3217, 3218, - 86, 3210, 3215, 86, 3213, 3221, 3220, 86, 86, 3224, - 3226, 86, 3225, 3216, 3227, 86, 3222, 3228, 86, 86, - 86, 3223, 86, 3682, 86, 3233, 86, 86, 3229, 3232, - 86, 86, 3234, 3236, 86, 3235, 86, 86, 86, 86, - 3230, 3231, 86, 3240, 3237, 3242, 3244, 86, 3238, 86, - 86, 86, 86, 3245, 86, 3246, 86, 3241, 3239, 3247, - 86, 3248, 86, 86, 3253, 86, 86, 3243, 86, 86, + 3206, 86, 86, 3201, 86, 3207, 86, 3203, 3210, 86, + 3209, 86, 86, 3204, 3202, 3208, 3211, 3212, 86, 3205, + 3214, 86, 86, 3213, 86, 86, 3215, 3218, 86, 3220, + 86, 86, 86, 86, 3219, 86, 86, 3223, 3226, 86, + 86, 86, 3217, 3221, 86, 3224, 3229, 3216, 86, 86, + 86, 3227, 86, 3225, 3230, 3222, 86, 3231, 86, 3232, + 86, 3228, 3235, 3233, 86, 3234, 86, 3236, 3238, 86, + 3237, 3239, 86, 3240, 86, 86, 86, 86, 86, 3245, + 3242, 3244, 3246, 3243, 3241, 86, 86, 3248, 86, 86, + 86, 3247, 86, 3254, 86, 86, 3249, 3252, 86, 86, - 86, 3249, 86, 86, 3257, 86, 3252, 3250, 3251, 3254, - 86, 3255, 3256, 86, 3258, 3262, 86, 86, 3259, 86, - 3264, 3261, 3260, 86, 86, 86, 3265, 3268, 86, 3269, - 86, 86, 3271, 86, 3275, 86, 3263, 3272, 86, 3274, - 86, 3266, 3277, 86, 3270, 3273, 86, 86, 86, 86, - 3267, 86, 86, 3280, 3283, 86, 3282, 86, 3286, 86, - 86, 3276, 3278, 3279, 86, 3281, 3285, 3288, 86, 86, - 3290, 86, 3284, 86, 3293, 86, 86, 3294, 3296, 3289, - 86, 86, 3287, 86, 86, 3291, 3297, 86, 3300, 86, - 3301, 86, 3292, 86, 86, 86, 3295, 3304, 86, 86, + 86, 3250, 3256, 86, 3257, 86, 86, 3260, 86, 86, + 3258, 3251, 3253, 3259, 86, 86, 86, 3261, 3265, 86, + 3255, 86, 86, 86, 3262, 86, 3269, 86, 86, 3263, + 86, 86, 3271, 86, 3266, 3264, 3267, 3270, 3268, 3273, + 86, 86, 3277, 86, 86, 3274, 3272, 86, 3281, 86, + 3275, 86, 3278, 3276, 3282, 86, 86, 86, 3284, 86, + 3288, 86, 3279, 3285, 86, 3287, 3290, 86, 86, 86, + 3283, 3286, 86, 3280, 86, 86, 86, 3289, 86, 3293, + 3295, 3296, 86, 3299, 3291, 3292, 86, 3298, 3294, 86, + 3301, 86, 86, 86, 3303, 86, 3297, 3307, 86, 3306, - 86, 3309, 3298, 86, 86, 86, 3306, 86, 3302, 3307, - 3313, 86, 86, 3299, 3303, 86, 3311, 3305, 3315, 3308, - 86, 86, 3310, 3316, 86, 3312, 3320, 3314, 86, 3317, - 3321, 86, 86, 3318, 86, 3323, 86, 3322, 86, 3326, - 86, 86, 86, 3325, 3319, 86, 3329, 3327, 86, 3332, - 86, 86, 86, 86, 3324, 86, 86, 3337, 86, 86, - 86, 86, 3682, 3333, 3328, 3330, 3331, 3341, 86, 3336, - 3340, 3334, 3342, 86, 3343, 86, 3339, 86, 3338, 86, - 3335, 86, 3344, 3347, 86, 86, 3346, 3348, 86, 3349, - 86, 3350, 86, 3345, 86, 3353, 86, 86, 3351, 3355, + 86, 86, 3309, 86, 86, 86, 86, 86, 86, 3300, + 3310, 3302, 3304, 86, 3305, 3313, 86, 3314, 86, 3317, + 86, 3308, 3315, 86, 86, 3322, 3311, 86, 86, 86, + 86, 86, 3312, 3316, 3319, 3701, 3320, 3326, 86, 3318, + 86, 3324, 86, 86, 3321, 3328, 3329, 3323, 86, 3330, + 3325, 86, 86, 3333, 3336, 3327, 3334, 86, 86, 86, + 86, 3335, 86, 3331, 86, 3339, 86, 86, 86, 3338, + 3342, 86, 3332, 3340, 3345, 86, 86, 86, 86, 86, + 3337, 86, 3350, 86, 86, 86, 3341, 86, 3343, 3344, + 3346, 3354, 86, 3701, 3349, 3347, 3353, 3355, 86, 3356, - 86, 86, 3354, 3357, 86, 3358, 86, 86, 86, 86, - 86, 86, 3356, 86, 3364, 3365, 86, 86, 86, 86, - 3352, 86, 86, 86, 3371, 86, 3359, 3372, 86, 3362, - 3360, 3361, 3370, 3363, 86, 3368, 3374, 3367, 86, 3369, - 3373, 86, 86, 3366, 86, 86, 3377, 3380, 86, 3378, - 3381, 86, 86, 86, 3375, 86, 3384, 3376, 3382, 86, - 3387, 86, 86, 86, 3385, 86, 3379, 3386, 3388, 3383, - 86, 86, 86, 86, 3389, 86, 3390, 86, 3393, 86, - 86, 86, 86, 3395, 86, 3391, 86, 3394, 3396, 86, - 86, 86, 3392, 86, 86, 86, 3405, 3408, 3397, 3406, + 86, 3352, 86, 3351, 3348, 86, 86, 3357, 3360, 86, + 86, 3359, 3361, 86, 3362, 86, 86, 3364, 86, 3358, + 86, 3367, 86, 3365, 86, 3363, 86, 86, 86, 3368, + 3369, 86, 3371, 86, 3372, 86, 86, 86, 3370, 86, + 86, 3378, 3379, 86, 86, 3373, 3366, 86, 86, 86, + 3374, 86, 3385, 86, 3386, 86, 3376, 86, 3375, 3388, + 3384, 3377, 3382, 86, 86, 86, 3381, 86, 86, 3383, + 3380, 86, 3701, 3391, 86, 3387, 3392, 3394, 86, 3395, + 86, 86, 86, 3389, 3398, 3393, 3390, 3396, 3397, 86, + 86, 3401, 86, 3399, 86, 86, 86, 3400, 86, 3402, - 3401, 3398, 3399, 86, 3400, 86, 3402, 3403, 86, 86, - 3409, 3404, 3411, 3407, 86, 3410, 3413, 86, 3414, 86, - 86, 3412, 3416, 86, 3415, 86, 3419, 86, 86, 3682, - 3417, 3421, 86, 3418, 3422, 3423, 86, 86, 3424, 3425, - 3429, 86, 86, 3420, 3426, 86, 3427, 3428, 86, 86, - 86, 3431, 86, 3430, 3432, 86, 86, 3435, 86, 86, - 86, 3439, 86, 86, 86, 3438, 3434, 86, 3433, 86, - 86, 86, 86, 86, 3444, 3682, 3443, 86, 3436, 3437, - 3445, 3440, 3448, 86, 3441, 3449, 86, 3446, 86, 86, - 3451, 3447, 3442, 3452, 86, 3453, 86, 3450, 3454, 86, + 3403, 86, 86, 3404, 86, 86, 86, 3407, 86, 86, + 86, 3409, 86, 86, 3410, 3405, 3408, 86, 86, 86, + 86, 3406, 86, 86, 3419, 3420, 3422, 3411, 3415, 3412, + 3413, 3414, 86, 86, 3416, 3417, 86, 86, 3423, 3418, + 3425, 86, 3421, 3424, 3427, 86, 3428, 86, 86, 3426, + 3431, 86, 3429, 86, 86, 86, 3430, 3701, 3432, 3434, + 86, 3436, 86, 3437, 3438, 86, 86, 86, 3439, 3440, + 3435, 86, 3445, 3433, 3441, 86, 3442, 3443, 86, 86, + 86, 86, 3444, 3447, 86, 3451, 86, 86, 3450, 3446, + 86, 86, 3454, 86, 86, 86, 3453, 86, 86, 3448, - 86, 3458, 3460, 86, 3455, 86, 3459, 86, 86, 3456, - 86, 86, 3457, 86, 86, 3682, 3464, 3468, 3465, 86, - 3462, 3467, 86, 86, 86, 3469, 3470, 86, 3461, 3471, - 86, 3463, 86, 3466, 3474, 86, 86, 3473, 86, 3472, - 3475, 86, 3478, 86, 86, 3476, 3479, 86, 3480, 86, - 3481, 86, 3482, 86, 3483, 86, 3477, 3484, 86, 3485, - 86, 86, 86, 3488, 86, 3489, 86, 86, 86, 86, - 3486, 3487, 86, 3491, 3494, 86, 3490, 3496, 86, 86, - 86, 86, 3500, 86, 3493, 3501, 86, 86, 3492, 3503, - 86, 3495, 86, 3498, 3497, 3499, 86, 86, 86, 3505, + 3449, 86, 86, 86, 86, 3458, 3459, 3464, 86, 86, + 3452, 86, 3455, 3460, 3463, 3456, 3461, 86, 3466, 86, + 3465, 3462, 3457, 3467, 86, 3468, 86, 86, 86, 86, + 3473, 86, 3470, 3475, 3469, 3474, 86, 3471, 86, 86, + 3472, 86, 86, 86, 3482, 86, 3477, 3479, 3480, 3483, + 86, 3485, 86, 86, 3476, 86, 3484, 3486, 86, 3478, + 3481, 86, 3489, 86, 86, 86, 3488, 86, 3487, 3491, + 86, 3494, 86, 86, 3492, 3495, 86, 3701, 3490, 3496, + 86, 3497, 86, 3498, 86, 3493, 3499, 86, 3500, 86, + 3501, 86, 86, 3504, 86, 3505, 86, 86, 86, 3502, - 86, 3507, 3502, 86, 86, 3510, 3509, 86, 86, 86, - 3504, 86, 3512, 86, 86, 86, 3508, 86, 3511, 86, - 3516, 3518, 86, 3506, 3517, 3515, 86, 3513, 86, 86, - 86, 3514, 3523, 3522, 3519, 3525, 86, 3526, 86, 3527, - 86, 3528, 86, 3524, 86, 86, 3521, 86, 3520, 86, - 86, 3531, 86, 86, 3530, 86, 86, 86, 3536, 3537, - 86, 3539, 86, 86, 3533, 86, 3535, 3529, 86, 3532, - 86, 3538, 86, 86, 86, 3534, 3540, 86, 86, 86, - 86, 3541, 3546, 3542, 3543, 3548, 3547, 3545, 86, 3552, - 86, 86, 86, 3550, 86, 3544, 3554, 3551, 3549, 3553, + 86, 3503, 86, 3510, 86, 86, 3506, 3512, 86, 86, + 3507, 86, 86, 86, 86, 3516, 86, 3509, 3517, 86, + 3508, 86, 3514, 86, 3511, 3515, 3513, 3518, 3519, 86, + 86, 86, 3523, 3521, 3520, 86, 3526, 86, 3525, 86, + 86, 3524, 86, 86, 3528, 86, 86, 3522, 86, 86, + 86, 3527, 86, 86, 3532, 86, 3534, 3701, 3533, 3529, + 3535, 3530, 3531, 86, 3536, 86, 86, 86, 3541, 3540, + 3539, 3542, 86, 3538, 3543, 86, 3537, 3544, 86, 3545, + 86, 86, 86, 86, 86, 3548, 86, 86, 86, 86, + 3546, 3547, 3553, 86, 86, 3554, 86, 3556, 3550, 3552, - 3557, 86, 86, 3559, 86, 86, 3555, 86, 3560, 3561, - 86, 3558, 3562, 86, 3556, 86, 86, 86, 86, 3565, - 86, 86, 3566, 3567, 3563, 3570, 86, 86, 86, 3574, - 86, 86, 86, 3573, 86, 3564, 3569, 3576, 86, 3572, - 3571, 3577, 86, 3578, 86, 3568, 86, 3581, 86, 3579, - 86, 86, 3575, 3584, 86, 86, 3585, 86, 3588, 86, - 86, 86, 86, 3589, 86, 3580, 3582, 3586, 3583, 86, - 3594, 86, 86, 86, 3590, 3591, 3587, 3593, 3595, 86, - 3592, 86, 86, 86, 86, 86, 86, 3599, 86, 86, - 3601, 86, 86, 86, 3596, 86, 3598, 3606, 3608, 86, + 86, 86, 86, 3549, 3555, 86, 86, 3557, 86, 3551, + 86, 86, 86, 86, 86, 3565, 86, 3560, 86, 3558, + 3559, 3562, 3563, 3564, 3567, 86, 86, 3570, 86, 3566, + 3561, 3568, 86, 3569, 3575, 86, 3571, 3572, 3574, 3573, + 86, 3577, 86, 86, 3578, 3579, 86, 3580, 86, 3576, + 86, 86, 86, 86, 86, 3583, 86, 86, 3584, 3585, + 3588, 86, 86, 86, 3592, 86, 86, 86, 3591, 3581, + 86, 3582, 3587, 86, 3590, 3589, 3594, 86, 3595, 86, + 86, 3586, 3596, 86, 3597, 86, 86, 3593, 3598, 3599, + 3600, 86, 3603, 86, 86, 3601, 86, 3604, 86, 3607, - 3607, 3597, 3603, 86, 3600, 3602, 3604, 3605, 86, 3612, - 86, 3609, 86, 3614, 86, 3615, 86, 3613, 86, 86, - 86, 3610, 3620, 3616, 86, 3617, 86, 3611, 86, 3618, - 3621, 86, 86, 3623, 86, 3619, 86, 3622, 86, 86, - 3624, 86, 3629, 86, 86, 3625, 3626, 86, 86, 3636, - 86, 86, 3632, 3633, 86, 86, 3634, 3627, 86, 3635, - 3628, 86, 3630, 3631, 86, 86, 86, 3640, 86, 3641, - 86, 3644, 86, 86, 3637, 86, 3646, 3638, 3639, 86, - 3647, 3642, 86, 86, 3651, 86, 86, 3643, 3648, 3649, - 86, 3645, 3650, 3655, 86, 3652, 3653, 3654, 86, 86, + 3608, 86, 3605, 86, 3602, 86, 86, 86, 86, 3613, + 86, 3614, 86, 3612, 86, 3609, 3610, 3606, 86, 86, + 86, 86, 86, 86, 3618, 86, 3611, 3620, 86, 86, + 86, 86, 86, 3617, 3625, 3615, 86, 3626, 3616, 3627, + 86, 3619, 3621, 3622, 3623, 3628, 86, 3624, 3631, 86, + 86, 3633, 86, 3634, 3629, 3632, 86, 86, 86, 86, + 86, 3635, 3639, 3636, 3637, 3630, 3640, 86, 86, 86, + 3642, 86, 86, 86, 3641, 86, 3643, 86, 86, 3638, + 3648, 86, 3645, 86, 3651, 86, 86, 3652, 86, 86, + 86, 86, 3644, 86, 3655, 86, 3646, 3647, 3650, 3653, - 86, 86, 86, 3660, 86, 86, 3656, 3658, 86, 86, - 86, 86, 86, 3662, 3663, 86, 3666, 3667, 86, 3657, - 3659, 86, 86, 3670, 3661, 3671, 86, 86, 86, 3664, - 3665, 3668, 3673, 86, 3672, 3674, 86, 86, 86, 86, - 3669, 86, 3682, 3676, 3675, 3682, 3677, 3678, 3680, 86, - 3681, 86, 3682, 3682, 3682, 3682, 3682, 3682, 3679, 47, - 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, - 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, - 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, - 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, + 3649, 86, 3654, 86, 3659, 86, 3660, 86, 3658, 86, + 3656, 3701, 3657, 86, 3663, 86, 3665, 86, 3661, 86, + 3666, 86, 3667, 86, 3670, 86, 86, 86, 3664, 3672, + 3668, 3671, 86, 3662, 3673, 86, 86, 86, 86, 3674, + 3669, 86, 86, 3675, 3679, 86, 3677, 86, 86, 86, + 86, 86, 3681, 3682, 86, 3685, 3676, 3678, 3686, 86, + 86, 3680, 86, 3689, 3690, 86, 86, 86, 3683, 3684, + 3687, 3692, 86, 3691, 3693, 86, 86, 86, 86, 3688, + 86, 3701, 3695, 3694, 3701, 3696, 3697, 3699, 86, 3700, + 86, 3701, 3701, 3701, 3701, 3701, 3701, 3698, 47, 47, - 74, 80, 80, 80, 80, 80, 80, 80, 89, 89, - 3682, 89, 89, 89, 89, 160, 160, 3682, 3682, 3682, - 160, 160, 162, 162, 3682, 3682, 162, 3682, 162, 164, - 3682, 3682, 3682, 3682, 3682, 164, 167, 167, 3682, 3682, - 3682, 167, 167, 169, 3682, 3682, 3682, 3682, 3682, 169, - 171, 171, 3682, 171, 171, 171, 171, 174, 3682, 3682, - 3682, 3682, 3682, 174, 177, 177, 3682, 3682, 3682, 177, - 177, 90, 90, 3682, 90, 90, 90, 90, 17, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, + 52, 52, 57, 57, 57, 57, 57, 57, 57, 63, + 63, 63, 63, 63, 63, 63, 68, 68, 68, 68, + 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, + 80, 80, 80, 80, 80, 80, 80, 89, 89, 3701, + 89, 89, 89, 89, 160, 160, 3701, 3701, 3701, 160, + 160, 162, 162, 3701, 3701, 162, 3701, 162, 164, 3701, + 3701, 3701, 3701, 3701, 164, 167, 167, 3701, 3701, 3701, + 167, 167, 169, 3701, 3701, 3701, 3701, 3701, 169, 171, + 171, 3701, 171, 171, 171, 171, 174, 3701, 3701, 3701, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682 + 3701, 3701, 174, 177, 177, 3701, 3701, 3701, 177, 177, + 90, 90, 3701, 90, 90, 90, 90, 17, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701 } ; -static const flex_int16_t yy_chk[7220] = +static const flex_int16_t yy_chk[7259] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2442,18 +2453,18 @@ static const flex_int16_t yy_chk[7220] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3690, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3709, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2990, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 3000, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1162, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1163, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2528,8 +2539,8 @@ static const flex_int16_t yy_chk[7220] = 350, 352, 352, 361, 351, 347, 338, 338, 338, 353, 338, 357, 348, 359, 353, 349, 349, 354, 354, 355, 355, 360, 358, 361, 356, 359, 357, 358, 362, 363, - 364, 364, 366, 364, 367, 363, 369, 1377, 368, 367, - 360, 369, 364, 362, 368, 370, 372, 1377, 371, 364, + 364, 364, 366, 364, 367, 363, 369, 1379, 368, 367, + 360, 369, 364, 362, 368, 370, 372, 1379, 371, 364, 370, 371, 366, 371, 373, 374, 370, 373, 375, 375, 372, 376, 377, 377, 374, 383, 378, 376, 381, 382, @@ -2632,602 +2643,606 @@ static const flex_int16_t yy_chk[7220] = 793, 791, 796, 798, 792, 794, 794, 794, 797, 794, 799, 800, 794, 802, 799, 803, 801, 794, 802, 795, - 801, 798, 804, 794, 794, 805, 806, 804, 807, 797, - 811, 807, 808, 80, 803, 800, 801, 808, 808, 809, - 805, 810, 810, 812, 820, 811, 809, 814, 812, 813, - 813, 806, 814, 815, 816, 819, 815, 817, 817, 816, - 818, 821, 818, 820, 822, 821, 823, 819, 824, 825, - 825, 826, 829, 827, 828, 828, 824, 830, 831, 834, - 834, 868, 832, 840, 822, 823, 826, 827, 832, 830, - 829, 833, 835, 839, 837, 838, 833, 835, 835, 837, - 831, 838, 840, 841, 842, 868, 845, 843, 844, 845, - 842, 839, 843, 846, 844, 851, 847, 848, 848, 846, + 801, 798, 804, 794, 794, 805, 794, 804, 806, 797, + 807, 80, 808, 807, 803, 800, 801, 808, 808, 809, + 805, 810, 810, 811, 812, 814, 809, 813, 813, 812, + 814, 815, 816, 806, 815, 817, 817, 816, 811, 818, + 819, 818, 820, 821, 822, 824, 823, 821, 825, 825, + 830, 826, 819, 824, 827, 828, 828, 829, 831, 834, + 834, 820, 830, 832, 822, 823, 826, 833, 827, 832, + 839, 835, 833, 837, 840, 829, 835, 835, 837, 838, + 831, 841, 843, 842, 844, 838, 846, 843, 839, 842, + 844, 845, 846, 840, 845, 847, 848, 848, 849, 849, - 849, 849, 850, 841, 847, 853, 852, 854, 855, 853, - 850, 852, 856, 851, 854, 857, 858, 858, 859, 861, - 861, 860, 863, 864, 862, 873, 855, 859, 856, 860, - 862, 869, 866, 872, 857, 867, 869, 870, 872, 873, - 863, 866, 864, 874, 867, 871, 870, 875, 871, 876, - 878, 880, 877, 879, 879, 881, 875, 877, 877, 883, - 882, 884, 876, 887, 878, 887, 880, 885, 874, 882, - 885, 888, 888, 889, 881, 890, 891, 894, 885, 884, - 890, 892, 893, 883, 895, 897, 896, 898, 899, 930, - 900, 898, 901, 930, 889, 896, 902, 891, 901, 894, + 850, 841, 851, 847, 852, 854, 853, 855, 850, 852, + 853, 856, 854, 857, 858, 858, 860, 859, 861, 861, + 851, 863, 862, 864, 860, 855, 859, 856, 862, 866, + 868, 867, 857, 874, 870, 873, 869, 875, 866, 863, + 867, 869, 864, 870, 871, 872, 875, 871, 876, 873, + 872, 877, 878, 880, 868, 881, 877, 877, 874, 879, + 879, 876, 882, 883, 884, 889, 878, 885, 880, 891, + 885, 882, 892, 887, 881, 887, 888, 888, 885, 890, + 893, 894, 884, 897, 890, 895, 889, 883, 896, 898, + 891, 899, 892, 898, 900, 901, 903, 896, 902, 904, - 903, 892, 893, 904, 895, 902, 899, 905, 897, 900, - 906, 907, 903, 908, 909, 910, 912, 907, 913, 904, - 910, 908, 911, 911, 906, 914, 905, 915, 909, 916, - 917, 918, 919, 931, 914, 912, 920, 916, 913, 921, - 922, 924, 923, 925, 926, 927, 922, 915, 923, 925, - 917, 919, 931, 918, 928, 924, 920, 929, 926, 921, - 928, 932, 933, 929, 934, 927, 936, 933, 935, 935, - 937, 938, 936, 932, 938, 939, 937, 940, 941, 942, - 944, 932, 943, 943, 941, 934, 945, 948, 951, 946, - 940, 945, 946, 939, 952, 947, 950, 950, 944, 942, + 893, 901, 905, 894, 906, 895, 897, 902, 903, 899, + 907, 908, 909, 900, 912, 904, 907, 910, 906, 908, + 913, 905, 910, 911, 911, 914, 909, 915, 916, 917, + 918, 919, 922, 912, 914, 920, 916, 921, 922, 923, + 913, 927, 924, 931, 926, 923, 933, 915, 925, 917, + 919, 933, 918, 928, 925, 920, 924, 921, 926, 928, + 929, 927, 931, 930, 932, 934, 929, 930, 935, 935, + 938, 936, 937, 938, 939, 940, 932, 936, 937, 941, + 942, 943, 943, 944, 932, 941, 934, 946, 940, 945, + 946, 947, 939, 948, 945, 949, 947, 947, 951, 949, - 947, 947, 948, 954, 949, 946, 953, 946, 949, 956, - 951, 953, 957, 961, 952, 959, 960, 963, 963, 964, - 965, 974, 954, 964, 966, 966, 957, 967, 959, 969, - 974, 970, 986, 956, 961, 965, 960, 962, 986, 968, - 962, 972, 962, 968, 969, 970, 962, 975, 962, 971, - 977, 973, 967, 962, 971, 972, 973, 973, 962, 976, - 979, 975, 978, 976, 980, 977, 981, 978, 982, 980, - 983, 985, 979, 984, 987, 976, 985, 978, 991, 987, - 981, 988, 984, 991, 983, 989, 993, 988, 992, 982, - 994, 989, 990, 990, 992, 995, 998, 999, 997, 1002, + 942, 944, 952, 946, 953, 946, 950, 950, 948, 953, + 954, 956, 957, 960, 959, 961, 963, 963, 967, 964, + 951, 968, 952, 964, 965, 968, 957, 959, 986, 954, + 966, 966, 969, 960, 986, 956, 961, 962, 970, 965, + 962, 972, 962, 967, 971, 973, 962, 969, 962, 971, + 973, 973, 970, 962, 974, 972, 975, 976, 962, 977, + 978, 976, 980, 974, 979, 978, 981, 980, 982, 983, + 975, 75, 984, 976, 977, 978, 979, 985, 993, 987, + 981, 984, 985, 983, 987, 988, 989, 990, 990, 982, + 991, 988, 989, 992, 994, 991, 995, 997, 998, 992, - 1000, 998, 1001, 1001, 1002, 1004, 1006, 1007, 993, 994, - 997, 999, 1000, 995, 996, 996, 1003, 1005, 1011, 1008, - 996, 1004, 996, 1009, 1003, 1006, 1007, 1010, 996, 1009, - 1011, 1005, 1010, 996, 996, 1008, 1012, 1013, 1014, 1015, - 996, 1016, 1016, 1017, 1018, 1020, 1021, 1017, 1022, 1021, - 1023, 1020, 1024, 1013, 1012, 1023, 1014, 1015, 1026, 1027, - 1025, 1029, 1030, 1026, 1018, 1024, 1025, 1022, 1031, 1032, - 1029, 1030, 1033, 1034, 1035, 1032, 1036, 1037, 1027, 1035, - 1038, 1033, 1039, 1042, 1031, 1043, 1040, 1044, 1041, 1042, - 1046, 1037, 1034, 1044, 1039, 1040, 1036, 1041, 1048, 1049, + 993, 1001, 1001, 998, 999, 1000, 1002, 74, 1004, 997, + 1005, 1002, 1003, 994, 995, 996, 996, 1000, 999, 1006, + 1003, 996, 1004, 996, 1007, 1008, 1005, 1011, 1012, 996, + 1009, 1010, 1011, 1006, 996, 996, 1013, 1010, 1015, 1014, + 1012, 996, 1016, 1007, 1008, 1018, 1009, 1017, 1017, 1018, + 1019, 1021, 1023, 1025, 1013, 1014, 1015, 1021, 1022, 1024, + 1016, 1022, 1026, 1028, 1024, 1030, 1025, 1027, 1026, 1031, + 1019, 1023, 1027, 1032, 1030, 1033, 1034, 1035, 1031, 1036, + 1037, 1033, 1028, 1038, 1036, 1034, 1039, 1040, 1043, 1032, + 1044, 1049, 1041, 1042, 1043, 1047, 1035, 1038, 1045, 1040, - 1038, 1050, 1043, 1051, 1052, 1053, 1046, 1054, 1051, 1055, - 1052, 1057, 1048, 1056, 1062, 1058, 1057, 1061, 75, 1049, - 1058, 1054, 1061, 1062, 1053, 1064, 1050, 1055, 1056, 1063, - 1063, 1064, 1065, 1066, 1067, 1068, 1070, 1078, 1065, 1071, - 1074, 1077, 1066, 1076, 1071, 1071, 1073, 1073, 1068, 1067, - 1073, 1075, 1070, 1078, 1075, 1074, 1079, 1076, 1080, 1082, - 1081, 1077, 1083, 1084, 1085, 1082, 1087, 1086, 1091, 1084, - 1090, 1080, 1086, 1090, 1079, 1081, 1089, 1089, 1092, 1085, - 1087, 1093, 1083, 1092, 1094, 1095, 1093, 1096, 1097, 1091, - 1098, 1100, 1096, 1097, 1095, 1101, 1106, 1100, 1102, 1103, + 1037, 1041, 1042, 1050, 1045, 1049, 1039, 1044, 1051, 1052, + 1053, 1047, 1054, 1055, 1052, 1057, 1053, 1056, 1151, 1058, + 1059, 1062, 1151, 1050, 1058, 1059, 1062, 1055, 1063, 1068, + 1057, 1054, 1067, 1051, 1065, 1056, 1066, 1063, 1064, 1064, + 1065, 1067, 1066, 1069, 1068, 1071, 1072, 1075, 1078, 1074, + 1074, 1072, 1072, 1074, 1076, 1077, 1069, 1076, 1079, 1080, + 1081, 1071, 1075, 1082, 1083, 1084, 1085, 1086, 1078, 1077, + 1083, 1087, 1085, 1081, 1079, 1088, 1087, 1080, 1082, 1090, + 1090, 1091, 1086, 1092, 1091, 1084, 1093, 1094, 1096, 1088, + 1095, 1093, 1094, 1097, 1098, 1099, 1101, 1096, 1097, 1098, - 1094, 1105, 1098, 1109, 1102, 1103, 1104, 1104, 1110, 1107, - 1105, 1101, 1107, 1111, 1106, 1108, 1108, 1112, 1113, 1114, - 1112, 1109, 1115, 1116, 74, 1114, 1125, 1110, 1115, 1116, - 1117, 1113, 1118, 1111, 1119, 1117, 1120, 1118, 1121, 1124, - 1119, 1120, 1123, 1126, 1121, 1127, 1125, 1123, 1132, 1126, - 1127, 1128, 1128, 1129, 1130, 1131, 1133, 1124, 1134, 1136, - 1131, 1134, 1129, 1130, 1135, 1138, 1132, 1135, 1137, 1139, - 1136, 1140, 1141, 1137, 1142, 1133, 1143, 1144, 1141, 1146, - 1142, 1139, 1144, 1138, 1145, 1145, 1147, 1148, 1149, 1150, - 1140, 1143, 1151, 1150, 1152, 1153, 1154, 1156, 1146, 1148, + 1102, 1106, 1101, 1103, 1092, 1104, 1095, 1099, 1107, 1103, + 1106, 1104, 1105, 1105, 1108, 1110, 1102, 1108, 1109, 1109, + 1111, 1112, 1113, 1114, 1115, 1113, 1107, 1118, 1116, 1117, + 1115, 68, 1118, 1110, 1116, 1117, 1114, 1119, 1120, 1111, + 1121, 1112, 1119, 1122, 1120, 1121, 1124, 1125, 1126, 1122, + 1127, 1124, 1128, 1129, 1129, 1130, 1127, 1128, 1131, 1133, + 1134, 1132, 1139, 1137, 1130, 1125, 1132, 1131, 1126, 1135, + 1136, 1138, 1135, 1136, 1137, 1140, 1138, 1133, 1141, 1134, + 1139, 1144, 1142, 1143, 1147, 1145, 1148, 1140, 1142, 1143, + 1145, 1146, 1146, 1149, 1150, 1152, 1144, 1141, 1153, 1154, - 1147, 1157, 1157, 1152, 1158, 1161, 1149, 1164, 1159, 1163, - 1151, 68, 1158, 1159, 1153, 1160, 1156, 1165, 1167, 1166, - 1160, 1154, 1164, 1163, 1166, 1161, 1169, 1167, 1170, 1165, - 1168, 1168, 1171, 1172, 1170, 1173, 1175, 1174, 1171, 1174, - 1173, 1175, 1176, 1177, 1179, 1178, 1169, 1180, 1181, 1172, - 1178, 1183, 1182, 1185, 1185, 1181, 1176, 1177, 1186, 1179, - 1187, 1188, 1189, 1190, 1197, 1193, 1180, 1182, 1189, 1193, - 1183, 1197, 1186, 1198, 1191, 1200, 1188, 1195, 1187, 1191, - 1194, 1194, 1195, 1190, 1196, 1196, 1199, 1198, 1191, 1199, - 1191, 1201, 1202, 1191, 1200, 1203, 1204, 1206, 1205, 1207, + 1148, 1155, 1157, 1147, 1162, 1149, 1159, 1153, 1158, 1158, + 1160, 1161, 1150, 1152, 1159, 1160, 1161, 1164, 1154, 1165, + 1166, 1157, 1167, 1170, 1162, 63, 1155, 1167, 1168, 1169, + 1169, 1164, 1166, 1171, 1165, 1172, 1173, 1168, 1180, 1171, + 1174, 1172, 1175, 1170, 1175, 1174, 1176, 1177, 1178, 1179, + 1181, 1176, 1173, 1180, 1179, 1183, 1182, 1184, 1186, 1186, + 1187, 1177, 1178, 1182, 1188, 1189, 1190, 1191, 1196, 1181, + 1183, 1194, 1190, 1196, 1187, 1194, 1184, 1199, 1192, 1198, + 1189, 1201, 1188, 1192, 1195, 1195, 1198, 1191, 1197, 1197, + 1200, 1199, 1192, 1200, 1192, 1202, 1203, 1192, 1204, 1205, - 1203, 1202, 1208, 1206, 1207, 1210, 1209, 1212, 1212, 1201, - 1205, 1215, 1218, 1213, 1214, 1204, 1208, 1209, 1213, 1214, - 1216, 1218, 1217, 1219, 1210, 1216, 1217, 1220, 1221, 1222, - 1223, 1215, 1222, 1224, 1225, 1226, 1227, 1228, 1219, 1239, - 1224, 1222, 1220, 1229, 1230, 1223, 1225, 1221, 1232, 1229, - 1231, 1233, 1234, 1236, 1226, 1228, 1231, 1227, 1235, 1230, - 1238, 1234, 1237, 1240, 1239, 1242, 1245, 1248, 1232, 1241, - 1244, 1233, 1236, 1235, 1237, 1241, 1244, 1246, 1240, 1238, - 1247, 1245, 1249, 1251, 1250, 1242, 1253, 1248, 1247, 1250, - 1254, 1246, 1272, 1255, 1252, 1251, 1256, 1256, 1249, 1252, + 1201, 1207, 1206, 1204, 1208, 1203, 1209, 1207, 1210, 1208, + 1211, 1213, 1213, 1202, 1206, 1216, 1214, 1215, 1205, 1210, + 1209, 1214, 1215, 1217, 1219, 1220, 1218, 1221, 1217, 1211, + 1218, 1222, 1224, 1219, 1223, 1216, 1225, 1223, 1227, 1226, + 1220, 1228, 1221, 1225, 1231, 1229, 1223, 1224, 1230, 1232, + 1222, 1226, 1233, 1234, 1230, 1235, 1236, 1227, 1233, 1231, + 1232, 1237, 1228, 1229, 1238, 1236, 1239, 1240, 1241, 1242, + 1244, 1243, 1247, 1234, 1246, 1235, 1237, 1243, 1239, 1250, + 1246, 1248, 1251, 1238, 1242, 1253, 1240, 1247, 1249, 1252, + 1244, 1255, 1340, 1241, 1252, 1248, 1249, 1253, 1251, 1250, - 1252, 1258, 1259, 1260, 1254, 1253, 1255, 1257, 1257, 1260, - 1272, 1259, 1257, 1263, 1258, 1257, 1257, 1261, 1261, 1262, - 1257, 1264, 1263, 1265, 1262, 1268, 1257, 1264, 1265, 1266, - 1257, 1267, 1267, 1271, 1266, 1269, 1269, 1270, 1273, 1274, - 1270, 1277, 1270, 1276, 1273, 1274, 1268, 1275, 1279, 1278, - 1275, 1280, 1276, 1271, 1278, 1283, 1291, 1281, 1282, 1285, - 1283, 1277, 1279, 1281, 1282, 1286, 1284, 1291, 1287, 1280, - 1284, 1294, 1285, 1287, 1286, 1288, 1289, 1289, 1293, 1286, - 1295, 1286, 1293, 1286, 1296, 1286, 1294, 1290, 1290, 1288, - 1290, 1298, 1297, 1300, 1299, 1302, 1298, 1298, 1303, 1301, + 1254, 1256, 1270, 1257, 1261, 1254, 1254, 1258, 1258, 1340, + 1255, 1260, 1265, 1261, 1262, 1256, 1257, 1259, 1259, 1287, + 1262, 1265, 1259, 1270, 1260, 1259, 1259, 1263, 1263, 1264, + 1259, 1266, 1287, 1267, 1264, 1273, 1259, 1266, 1267, 1268, + 1259, 1269, 1269, 1274, 1268, 1271, 1271, 1272, 1275, 1278, + 1272, 1276, 1272, 1277, 1275, 1273, 1277, 1276, 1278, 1279, + 1280, 1274, 1281, 1282, 1283, 1280, 1284, 1286, 1285, 1288, + 1283, 1286, 1284, 1285, 1290, 1289, 1281, 58, 1288, 1279, + 1289, 1282, 1297, 1288, 1296, 1288, 1293, 1288, 1290, 1288, + 1291, 1291, 1292, 1292, 1295, 1292, 1298, 1293, 1295, 1296, - 1295, 1297, 1296, 1299, 1301, 1304, 1305, 1303, 1306, 1302, - 1307, 1308, 1308, 1310, 1309, 1300, 1307, 1311, 1312, 1313, - 1314, 1310, 1306, 1312, 1304, 1305, 1309, 1315, 1316, 1314, - 1317, 1311, 1318, 1313, 1315, 1319, 1319, 1318, 1320, 1321, - 1321, 1322, 1324, 1322, 1325, 1324, 1316, 1326, 1327, 1325, - 1328, 1328, 1329, 1320, 1333, 1317, 1334, 1327, 1330, 1330, - 1331, 1331, 1332, 1335, 1336, 1336, 1326, 1332, 1337, 1338, - 1339, 1340, 1329, 1339, 1341, 1333, 1342, 1334, 1343, 1345, - 1341, 1342, 1349, 1344, 1335, 1344, 1338, 1343, 1337, 1347, - 1348, 1340, 1347, 1350, 1351, 1349, 1352, 1345, 1350, 1353, + 1299, 1300, 1297, 1301, 1302, 1303, 1300, 1300, 1304, 1299, + 1303, 1305, 1301, 1306, 1298, 1307, 1308, 1309, 1310, 1310, + 1305, 1311, 1304, 1309, 1313, 1315, 1302, 1312, 1316, 1319, + 1308, 1314, 1306, 1311, 1307, 1312, 1314, 1316, 1313, 1315, + 1317, 1318, 1322, 1320, 1321, 1321, 1328, 1317, 1320, 1323, + 1323, 1324, 1326, 1324, 1319, 1326, 1327, 1322, 1329, 1318, + 1331, 1327, 1330, 1330, 1335, 1328, 1336, 1329, 1332, 1332, + 1333, 1333, 1334, 1337, 1338, 1338, 1339, 1334, 1341, 1342, + 1331, 1341, 1343, 1345, 1344, 1335, 1347, 1336, 1343, 1344, + 1350, 1346, 1345, 1346, 1337, 1349, 1339, 1351, 1349, 1342, - 1355, 1352, 1359, 1355, 1354, 1348, 1356, 1353, 1351, 1354, - 1358, 1356, 1357, 1357, 1361, 1358, 1360, 1362, 1364, 1365, - 1359, 1361, 1360, 1366, 1364, 1365, 1367, 1368, 1366, 1369, - 1362, 1367, 1370, 1368, 1371, 1372, 1372, 1373, 1369, 1375, - 1376, 1378, 1379, 1380, 1375, 1371, 1381, 1382, 1383, 1385, - 1386, 1370, 1381, 1382, 1383, 1385, 1378, 1373, 1376, 1387, - 1388, 1389, 1379, 1390, 1386, 1391, 1380, 1392, 1392, 1393, - 1386, 1394, 1395, 1389, 1397, 1397, 1396, 1390, 1398, 1387, - 1388, 1396, 1399, 1391, 1401, 1404, 1402, 1399, 1403, 1393, - 1395, 1402, 1402, 1406, 1404, 1407, 1394, 1405, 1408, 1410, + 1353, 1352, 1354, 1355, 1347, 1350, 1352, 1354, 1356, 1357, + 1351, 1355, 1357, 1356, 1353, 1358, 1359, 1359, 1360, 1361, + 1358, 1362, 1363, 1360, 1366, 1364, 1367, 1362, 1368, 1363, + 1366, 1369, 1367, 1368, 1370, 1371, 1369, 1361, 1364, 1372, + 1370, 1373, 1374, 1374, 1371, 1375, 1377, 1380, 1378, 1381, + 1382, 1377, 1373, 1383, 1384, 1385, 1388, 1387, 1372, 1383, + 1384, 1385, 1380, 1387, 1389, 1375, 1378, 1390, 1391, 1381, + 1388, 1392, 1393, 1382, 1394, 1394, 1388, 1395, 1396, 1400, + 1391, 1397, 1403, 1398, 1389, 1392, 1405, 1390, 1398, 1401, + 1393, 1399, 1399, 57, 1401, 1408, 1409, 1395, 1406, 1397, - 1411, 1398, 1411, 1401, 1409, 1405, 1403, 1406, 1410, 1409, - 1407, 1412, 1409, 1408, 1414, 1415, 1408, 1416, 1417, 1415, - 1414, 1418, 1419, 1417, 1417, 1412, 1420, 1421, 1416, 1422, - 1423, 1424, 1421, 1425, 1422, 1423, 1426, 1427, 1429, 1435, - 1418, 1426, 1430, 1431, 1420, 1432, 1432, 1433, 1419, 1424, - 1434, 1433, 1429, 1425, 1437, 1438, 1436, 1427, 1435, 1439, - 1430, 1431, 1436, 1440, 1441, 1442, 1437, 1443, 1434, 1444, - 1447, 1438, 1448, 63, 1444, 1445, 1446, 1440, 1439, 1441, - 1442, 1446, 1445, 1449, 1450, 1450, 1443, 1451, 1447, 1452, - 1453, 1455, 1449, 1448, 1454, 1454, 1461, 1455, 1452, 1456, + 1404, 1403, 1400, 1396, 1405, 1404, 1404, 1406, 1407, 1408, + 1410, 1409, 1411, 1412, 1420, 1414, 1407, 1411, 1416, 1413, + 1411, 1413, 1412, 1417, 1416, 1410, 1418, 1417, 1410, 1414, + 1419, 1421, 1422, 1420, 1423, 1419, 1419, 1418, 1424, 1423, + 1425, 1426, 1427, 1424, 1428, 1425, 1429, 1431, 1437, 1428, + 1422, 1432, 1433, 1434, 1434, 1436, 1435, 1421, 1438, 1426, + 1435, 1431, 1427, 1439, 1438, 1440, 1429, 1437, 1441, 1432, + 1433, 1442, 1447, 1436, 1443, 1439, 1444, 1445, 1446, 1447, + 1449, 1440, 1451, 1446, 1456, 1442, 1450, 1441, 1448, 1443, + 1452, 1444, 1454, 1448, 1453, 1453, 1445, 1455, 1449, 1452, - 1457, 1462, 1451, 1458, 1458, 1456, 1459, 1459, 1463, 1460, - 1453, 1464, 1461, 1463, 1457, 1460, 58, 1464, 1465, 1466, - 1467, 1467, 1462, 1472, 1465, 1466, 1468, 1468, 1470, 1470, - 1471, 1473, 1472, 1474, 1471, 1477, 1475, 1476, 1478, 1478, - 1479, 1482, 1477, 1480, 1483, 1474, 1468, 1486, 1468, 1473, - 1475, 1480, 1476, 1481, 1488, 1482, 1484, 1489, 1481, 1485, - 1479, 1484, 1484, 1483, 1485, 1485, 1490, 1486, 1487, 1487, - 1492, 1493, 1491, 1488, 1494, 1490, 1489, 1491, 1495, 1497, - 1496, 1498, 1500, 1499, 1495, 1496, 1502, 1501, 1503, 1492, - 1504, 1493, 1494, 1501, 1503, 1505, 1504, 1497, 1499, 1506, + 1450, 1457, 1457, 1451, 1456, 1458, 1455, 1454, 1459, 1460, + 1464, 1458, 1461, 1461, 1459, 1462, 1462, 1465, 1463, 52, + 1466, 1467, 1468, 1460, 1463, 1466, 1464, 1467, 1468, 1469, + 1470, 1470, 1471, 1471, 1477, 1469, 1473, 1473, 1465, 1474, + 1475, 1476, 1478, 1474, 1480, 1479, 1477, 1481, 1481, 1475, + 1482, 1480, 1471, 1483, 1471, 1485, 1478, 1484, 1486, 1476, + 1479, 1483, 1484, 1489, 1490, 1490, 1487, 1491, 1488, 1485, + 1482, 1487, 1487, 1488, 1488, 1492, 1493, 1486, 1495, 1494, + 1496, 1497, 1498, 1489, 1494, 1493, 1491, 1499, 1498, 1500, + 1501, 1502, 1499, 1503, 1492, 1504, 1505, 1495, 1506, 1497, - 1507, 1498, 1508, 1509, 1511, 1502, 1510, 1515, 1500, 1512, - 1513, 1513, 1514, 1516, 1505, 1514, 1517, 57, 1506, 1507, - 1510, 1508, 1509, 1521, 1512, 1511, 1515, 1521, 1517, 1518, - 1518, 1520, 1516, 1519, 1519, 1522, 1520, 1523, 1524, 1526, - 1525, 1526, 1528, 1531, 1529, 1526, 1530, 1524, 1522, 1529, - 1532, 1534, 1523, 1525, 1533, 1533, 1534, 1536, 1526, 1535, - 1528, 1530, 1537, 1531, 1538, 1535, 1532, 1540, 1539, 1542, - 1538, 1540, 1536, 1539, 1541, 1537, 1543, 1544, 1541, 1545, - 1549, 1546, 1547, 1547, 1551, 1552, 1544, 1546, 1555, 1542, - 1552, 1553, 1553, 1561, 1543, 1554, 1557, 1557, 1549, 1545, + 1496, 1504, 1507, 1508, 1506, 1509, 1502, 1500, 1507, 1510, + 1501, 1511, 1512, 1513, 1514, 1505, 47, 1515, 1518, 1503, + 1516, 1516, 1508, 1517, 1509, 1519, 1517, 1513, 1510, 1520, + 1511, 1512, 1515, 1521, 1521, 1514, 1525, 1518, 1522, 1522, + 1523, 1520, 1524, 1526, 1519, 1523, 1524, 1527, 1528, 1525, + 1531, 1529, 1533, 1529, 1532, 1534, 1527, 1529, 1526, 1532, + 1535, 1528, 1536, 1536, 1537, 1538, 1539, 1533, 1531, 1537, + 1529, 1538, 1540, 1541, 1543, 1534, 1535, 1542, 1543, 1541, + 1544, 1539, 1542, 1545, 1544, 1540, 1546, 1547, 1548, 1549, + 1550, 1550, 1552, 1554, 1555, 1549, 1547, 1556, 1556, 1555, - 1559, 1554, 1562, 1559, 1563, 1551, 1560, 1560, 1555, 1561, - 1565, 1566, 1568, 1565, 1567, 1569, 1570, 1570, 1562, 1572, - 1563, 1568, 1571, 1573, 1574, 1575, 1579, 1576, 1580, 1574, - 1577, 1577, 1566, 1576, 1567, 1569, 1578, 1571, 1581, 1575, - 1572, 1582, 1573, 1580, 1579, 1578, 1583, 1583, 1584, 1585, - 1586, 1587, 1588, 1588, 1589, 1586, 1590, 1592, 1589, 1591, - 1591, 1582, 1584, 1581, 1593, 1596, 1587, 1585, 1595, 1594, - 1597, 1604, 1595, 1599, 1599, 1597, 1590, 1601, 1600, 1592, - 1594, 1600, 1602, 1593, 1596, 1603, 1605, 1602, 1606, 1604, - 1601, 1607, 1608, 1609, 1609, 1611, 1612, 1610, 1613, 1613, + 1557, 1558, 1562, 1545, 1546, 1562, 1557, 1564, 1548, 1565, + 1552, 1560, 1560, 1566, 1554, 1563, 1563, 1568, 1569, 1571, + 1568, 1558, 1570, 1564, 1572, 1565, 1573, 1573, 1571, 1566, + 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1580, 1577, 1569, + 1581, 1579, 1570, 1582, 1572, 1574, 1584, 1583, 1578, 1581, + 1585, 1576, 1575, 1586, 1586, 1587, 1588, 1590, 1589, 1591, + 1591, 1582, 1583, 1589, 1592, 1593, 1594, 1594, 1592, 1587, + 1585, 1584, 1590, 1595, 1588, 1596, 1597, 1598, 1599, 1600, + 1604, 1598, 1602, 1602, 1600, 1593, 1603, 1597, 1606, 1603, + 1607, 1605, 1608, 1604, 1596, 1595, 1605, 1599, 1609, 1610, - 1605, 1603, 1610, 1614, 1615, 1607, 1616, 1606, 1606, 1615, - 1620, 1617, 1614, 1617, 1618, 1611, 1612, 1608, 1619, 1618, - 1623, 1621, 1624, 1624, 1619, 1625, 1616, 1621, 1628, 1626, - 1620, 1629, 1632, 1628, 1623, 1626, 1630, 1630, 1631, 1631, - 1633, 1634, 1635, 1637, 1625, 1635, 1632, 1636, 1636, 1639, - 1638, 1647, 52, 1641, 1640, 1629, 1634, 1640, 1633, 1641, - 1640, 1637, 1638, 1642, 1643, 1645, 1646, 1643, 1642, 1639, - 1648, 1646, 1640, 1648, 1645, 1650, 1647, 1649, 1649, 1651, - 1652, 1658, 1653, 1643, 1659, 1651, 1652, 1653, 1654, 1654, - 1655, 1655, 1656, 1660, 1658, 1657, 1661, 1663, 1656, 1650, + 1611, 1612, 1612, 1614, 1606, 1613, 1608, 1615, 1607, 1618, + 1613, 1616, 1616, 1610, 1618, 1617, 1619, 1609, 1609, 1620, + 1623, 1620, 1622, 1614, 1617, 1611, 1621, 1615, 1622, 1624, + 1626, 1621, 1627, 1627, 1628, 1624, 1619, 1629, 1632, 1636, + 1623, 1631, 1635, 1629, 1626, 1637, 1631, 1633, 1633, 1634, + 1634, 1638, 1640, 1628, 1638, 1641, 1635, 1636, 1639, 1639, + 1637, 1642, 1632, 1644, 1650, 1643, 1648, 1641, 1643, 1644, + 1640, 1643, 1645, 1646, 1649, 1648, 1646, 1645, 1653, 1649, + 1661, 1642, 1651, 1643, 1654, 1651, 1652, 1652, 1655, 1650, + 1654, 1656, 1646, 1661, 1655, 1659, 1656, 1657, 1657, 1658, - 1657, 1662, 1659, 1663, 1662, 1664, 1668, 1665, 1672, 1666, - 1673, 1664, 1660, 1665, 1666, 1667, 1661, 1669, 1670, 1670, - 1671, 1667, 1669, 1674, 1675, 1671, 1672, 1676, 1680, 1668, - 1673, 1677, 1678, 1679, 1681, 1682, 1683, 1682, 1681, 1688, - 1684, 1676, 1674, 1690, 1675, 1677, 1678, 1684, 1686, 1687, - 1689, 1679, 1688, 1680, 1691, 1683, 1689, 1692, 1693, 1694, - 1686, 1687, 1694, 1690, 1695, 1695, 1696, 1698, 1698, 1699, - 1691, 1700, 1693, 1701, 1704, 1696, 1700, 1692, 1702, 1702, - 1694, 1703, 1705, 1706, 1707, 1701, 1710, 1708, 1704, 1699, - 1709, 1711, 1715, 1707, 1713, 1710, 1703, 1709, 1710, 47, + 1658, 1659, 1653, 1660, 1662, 1663, 1664, 1665, 1660, 1666, + 1665, 1667, 1668, 1671, 1669, 1666, 1675, 1667, 1668, 1669, + 1672, 1670, 1662, 1676, 1663, 1672, 1664, 1670, 1673, 1673, + 1674, 1677, 1678, 1679, 1675, 1674, 1671, 1684, 1680, 1683, + 1681, 1682, 1687, 1676, 1685, 1686, 1677, 1686, 1685, 1688, + 1692, 1678, 1680, 1679, 1681, 1682, 1688, 1683, 1690, 1691, + 1693, 1687, 1684, 1692, 1694, 1695, 1693, 1696, 1697, 1698, + 1690, 1691, 1698, 1699, 1699, 1703, 1700, 1702, 1702, 1705, + 1708, 1695, 1697, 1704, 1694, 1700, 1707, 1696, 1704, 1709, + 1698, 1705, 1706, 1706, 1708, 1703, 1710, 1711, 1713, 1714, - 1716, 1706, 1708, 1716, 1717, 1717, 1705, 1711, 1719, 1713, - 1718, 1718, 1720, 1721, 1713, 1723, 1721, 1715, 1722, 1722, - 1719, 1724, 1725, 1727, 1726, 1728, 1727, 1725, 1723, 1726, - 1720, 1729, 1730, 1731, 1732, 1733, 1729, 1738, 1734, 1735, - 1724, 1737, 1737, 1732, 1738, 1739, 1728, 1734, 1735, 1731, - 1734, 1730, 1736, 1740, 1733, 1741, 1742, 1744, 1736, 1743, - 1746, 1749, 1744, 1744, 1745, 1739, 1740, 1750, 1752, 1745, - 1742, 1752, 1746, 1741, 1753, 1743, 1751, 1751, 1754, 1755, - 1755, 1756, 1756, 1757, 1755, 1750, 1749, 1754, 1758, 1759, - 1753, 1760, 1757, 1758, 1762, 1757, 1756, 1761, 1765, 1762, + 1712, 1707, 1715, 1719, 1717, 1713, 1711, 1720, 1714, 1724, + 1720, 1714, 1727, 1709, 1710, 1712, 1721, 1721, 1715, 1717, + 1722, 1722, 1723, 1725, 1717, 1727, 1725, 1724, 1719, 1726, + 1726, 1728, 1729, 1730, 1723, 1732, 1731, 1729, 1730, 1731, + 1733, 1734, 1735, 1736, 1737, 1733, 1739, 1820, 1740, 1743, + 1728, 1820, 1736, 1738, 1740, 1739, 1732, 1742, 1735, 1744, + 1734, 1745, 1738, 1737, 1742, 1738, 1741, 1741, 1746, 1743, + 1747, 1748, 1744, 1749, 1753, 1750, 1748, 1748, 1749, 1745, + 1754, 1757, 1746, 1755, 1755, 1756, 1747, 1750, 1756, 1759, + 1759, 1758, 1760, 1760, 1759, 1763, 1761, 1757, 1754, 1753, - 1762, 1766, 1764, 1767, 1768, 1769, 1770, 1759, 1767, 1771, - 1771, 1769, 1760, 1765, 1772, 1761, 1764, 1773, 1768, 1774, - 1772, 1775, 1773, 1766, 1770, 1776, 1778, 1775, 1779, 1780, - 1781, 1776, 1783, 1774, 1787, 1780, 1782, 1788, 1783, 1782, - 1785, 1789, 1779, 1781, 1790, 1782, 1778, 1796, 1785, 1791, - 1792, 1793, 1790, 1787, 1791, 1795, 1788, 1794, 1797, 1792, - 1789, 1796, 1798, 1798, 1793, 1799, 1794, 1800, 1795, 1802, - 1804, 1799, 1797, 1800, 1801, 1803, 1803, 1801, 1805, 1806, - 1807, 1807, 1802, 1809, 1798, 1810, 1808, 1811, 1812, 1809, - 1804, 1814, 1814, 1815, 1818, 1817, 1805, 1816, 1806, 1808, + 1758, 1762, 1764, 1765, 1766, 1761, 1762, 1760, 1761, 1766, + 1766, 1768, 1769, 1763, 1770, 1771, 1772, 1774, 1773, 1782, + 1771, 1765, 18, 1764, 1773, 1768, 1776, 1769, 1775, 1775, + 1772, 1778, 1776, 1777, 1779, 1774, 1770, 1780, 1777, 1782, + 1779, 1783, 1784, 1780, 1785, 1778, 1787, 1786, 1784, 1791, + 1786, 1789, 1787, 1792, 1793, 1783, 1786, 1785, 1794, 1789, + 1795, 1796, 1797, 17, 1799, 1795, 1794, 1798, 1791, 1800, + 1796, 1801, 1792, 1793, 1803, 1797, 1798, 1799, 1802, 1802, + 1803, 1804, 1806, 1800, 1808, 1801, 1805, 1804, 1809, 1805, + 1807, 1807, 1810, 1811, 1811, 1806, 1812, 1813, 1814, 1815, - 1817, 1816, 1821, 1811, 1819, 1820, 1812, 1810, 1822, 1819, - 1820, 1821, 1824, 1815, 1818, 1825, 1826, 1827, 1828, 1826, - 1829, 1829, 1830, 1824, 1825, 1831, 1832, 1833, 1833, 1827, - 1834, 1822, 1835, 1828, 1836, 1837, 1839, 1831, 1840, 1835, - 1842, 1830, 1841, 1843, 1834, 1832, 1836, 1837, 1841, 1854, - 1844, 1854, 1842, 1845, 1845, 1839, 1844, 1846, 1840, 1849, - 1846, 1843, 1847, 1847, 1849, 1850, 1851, 1852, 1852, 1853, - 1855, 1856, 1851, 1855, 1850, 1857, 1858, 1859, 1860, 1861, - 1862, 1853, 1865, 1860, 1861, 1864, 1863, 1865, 1867, 1862, - 1866, 1856, 1871, 1871, 1858, 1859, 1870, 1857, 1863, 1866, + 1802, 1816, 1819, 1813, 1808, 1821, 1809, 1818, 1818, 1812, + 1821, 1810, 1822, 1823, 1825, 1815, 1824, 1826, 1823, 1816, + 1814, 1824, 1819, 1825, 1828, 1829, 1830, 1831, 1832, 1830, + 1833, 1833, 1822, 1834, 1829, 1828, 1835, 1836, 1839, 1831, + 1826, 1837, 1837, 1832, 1838, 1839, 1843, 1840, 1835, 1841, + 1844, 1845, 1834, 1847, 1846, 1853, 1836, 1845, 1838, 1840, + 1853, 1841, 1848, 1849, 1849, 1843, 1846, 1854, 1848, 1850, + 1844, 1847, 1850, 1851, 1851, 1855, 1854, 1856, 1856, 1857, + 1858, 1855, 1858, 1859, 1860, 1861, 1859, 1862, 1863, 1864, + 1865, 1857, 1866, 1869, 1864, 1865, 1867, 1868, 1869, 1871, - 1864, 1868, 1869, 1872, 1873, 1875, 1868, 1869, 1867, 1872, - 1876, 1870, 1866, 1868, 1877, 1878, 1879, 1880, 1881, 1880, - 1885, 1875, 1882, 1882, 1888, 1873, 1883, 1883, 1889, 1876, - 1890, 1878, 1881, 1877, 1881, 1892, 1879, 1884, 1884, 1892, - 1885, 1886, 1886, 1887, 1887, 1888, 1891, 1891, 1893, 1889, - 1894, 1890, 1896, 1894, 1893, 1897, 1898, 1900, 1896, 1899, - 1901, 1903, 1898, 1901, 1899, 1902, 1902, 1904, 1905, 1905, - 1906, 1907, 1904, 1897, 1908, 1909, 1910, 1910, 1911, 1908, - 1909, 1903, 1900, 1911, 1912, 1906, 1913, 1914, 1915, 1916, - 1912, 1917, 1907, 1918, 1919, 1920, 1921, 1917, 1913, 1913, + 1870, 1866, 1874, 0, 1860, 1862, 1863, 1861, 1867, 1870, + 1873, 1872, 1868, 1875, 1875, 1873, 1872, 1874, 1876, 1871, + 1877, 1879, 1870, 1872, 1876, 1880, 1881, 1882, 1883, 1884, + 1956, 1884, 1889, 1885, 1886, 1886, 1892, 1879, 1887, 1887, + 1893, 1877, 1894, 1882, 1880, 1881, 1956, 1885, 1883, 1885, + 1888, 1888, 1889, 1890, 1890, 1891, 1891, 1892, 1895, 1895, + 1896, 1893, 1897, 1894, 1896, 1900, 1898, 1901, 1897, 1898, + 1902, 1900, 1903, 1904, 1905, 1911, 1902, 1906, 1904, 1909, + 1906, 1907, 1907, 1908, 1909, 1901, 1910, 1910, 1912, 1913, + 1911, 1914, 1915, 1915, 1913, 1903, 1914, 1916, 1917, 1905, - 1913, 1921, 1920, 1924, 1925, 1913, 1915, 1914, 1928, 1916, - 1923, 1927, 1931, 1918, 1919, 1923, 1923, 1924, 1926, 1925, - 1926, 1929, 1927, 1928, 1930, 1932, 1934, 1929, 1933, 1933, - 1935, 1935, 1931, 1930, 1936, 1937, 1938, 1938, 1939, 1939, - 1940, 1943, 1943, 1944, 1945, 1948, 1932, 1947, 1950, 1949, - 1952, 1954, 1934, 1945, 1936, 1949, 1947, 1937, 1951, 1958, - 1940, 1953, 1953, 1955, 1952, 1960, 1948, 1950, 1944, 1956, - 1957, 1961, 1954, 1966, 1951, 18, 1956, 1963, 1955, 1957, - 1959, 1959, 1965, 1963, 1964, 1958, 1968, 1961, 1965, 1964, - 1967, 1960, 1968, 1966, 1969, 1971, 1969, 1967, 1972, 1973, + 1918, 1919, 1916, 1908, 1917, 1920, 1921, 1923, 1924, 1912, + 1922, 1925, 1918, 1918, 1918, 1926, 1922, 1929, 1925, 1918, + 1926, 1919, 1930, 1920, 1928, 1932, 1921, 1923, 1924, 1928, + 1928, 1929, 1931, 1933, 1931, 1934, 1932, 1930, 1935, 1936, + 1937, 1934, 1938, 1938, 1939, 1940, 1940, 1935, 1933, 1941, + 1942, 1943, 1943, 1944, 1944, 1945, 1948, 1948, 1949, 1936, + 1953, 1937, 1950, 1955, 1952, 1957, 1958, 1958, 1954, 1941, + 1939, 1950, 1942, 1952, 1954, 1945, 1959, 1960, 1961, 1957, + 1962, 1953, 1955, 1949, 1963, 1961, 1964, 1964, 1965, 1962, + 1966, 1969, 1960, 1968, 1970, 1971, 1969, 1959, 1972, 1968, - 1973, 1974, 1975, 1976, 1972, 1977, 1974, 1978, 1980, 1979, - 1981, 1975, 1979, 1981, 1971, 1982, 1983, 1985, 1976, 1987, - 1980, 1984, 1984, 1985, 1986, 1977, 1978, 1989, 1988, 1991, - 1986, 1989, 1992, 1982, 1995, 1993, 1994, 1994, 1996, 1987, - 1993, 1997, 1983, 1988, 1999, 17, 2000, 1989, 2008, 1991, - 2000, 2001, 2001, 2002, 1992, 2003, 1997, 1996, 1995, 2002, - 2004, 2004, 2005, 1999, 2003, 2006, 2005, 2007, 2007, 2008, - 2009, 2010, 2011, 2012, 2013, 2014, 2006, 2011, 2016, 2015, - 2024, 2006, 2017, 2018, 2009, 2015, 2019, 2026, 2018, 2024, - 2010, 2020, 2020, 2012, 2013, 2014, 2016, 2017, 2022, 2019, + 1970, 1973, 1974, 1976, 1974, 1972, 1966, 1973, 1978, 1978, + 1963, 1977, 1980, 1979, 1965, 1971, 1981, 1977, 1979, 1982, + 1985, 1980, 1976, 1983, 1984, 1986, 1987, 1984, 1986, 1988, + 1990, 1981, 1985, 1989, 1989, 1991, 1990, 1992, 1993, 1982, + 1996, 1991, 1983, 1994, 1987, 1997, 1998, 1994, 1999, 1999, + 2000, 1998, 2001, 1993, 2002, 1988, 2004, 1992, 2005, 2008, + 1996, 0, 2005, 1994, 2006, 2006, 2007, 1997, 2008, 2002, + 2011, 2001, 2007, 2013, 2000, 2004, 2009, 2009, 2010, 2012, + 2012, 2011, 2010, 2014, 2015, 2016, 2011, 2017, 2018, 2019, + 2016, 2022, 2020, 2021, 2013, 2023, 2031, 2014, 2020, 2024, - 2021, 2021, 2022, 2025, 2027, 2028, 2028, 2026, 2035, 2027, - 2030, 2030, 2031, 0, 2025, 2032, 2034, 2031, 2031, 2025, - 2036, 2032, 2034, 2037, 2038, 2036, 2040, 2041, 2042, 2044, - 2038, 2041, 2043, 2043, 2035, 2037, 2045, 2046, 2040, 2047, - 2042, 2049, 2045, 2048, 2048, 2047, 2050, 2051, 2055, 2052, - 2054, 2056, 2051, 2062, 2044, 2058, 2056, 2124, 2058, 2046, - 2049, 2052, 2054, 2059, 2059, 2124, 2050, 2055, 2060, 2060, - 2061, 2061, 2063, 2062, 2064, 2067, 2065, 2066, 2063, 2072, - 2064, 2065, 2069, 2066, 2067, 2071, 2075, 2069, 2071, 2073, - 2073, 2072, 2076, 2079, 2077, 2078, 2078, 2084, 2075, 2077, + 2023, 2025, 2025, 2015, 2026, 2026, 2022, 2017, 2018, 2019, + 2027, 2021, 2024, 2029, 2027, 2030, 2031, 2040, 2032, 2033, + 2033, 0, 2029, 2032, 2035, 2035, 2030, 2036, 2037, 2039, + 2042, 2030, 2036, 2036, 2037, 2039, 2041, 2045, 2043, 2047, + 2049, 2041, 2042, 2040, 2043, 2051, 2046, 2048, 2048, 2045, + 2046, 2047, 2050, 2052, 2053, 2053, 2054, 2055, 2050, 2052, + 2057, 2056, 2059, 2060, 2061, 2049, 2056, 2051, 2063, 2061, + 2067, 2063, 2057, 2076, 2059, 2054, 2076, 2055, 2064, 2064, + 2065, 2065, 2060, 2066, 2066, 2068, 2069, 2072, 2070, 2071, + 2067, 2068, 2069, 2070, 2074, 2071, 2072, 2077, 2080, 2074, - 2080, 2081, 2079, 2085, 2076, 2080, 2081, 2082, 2083, 2083, - 2082, 2086, 2085, 2087, 2088, 2089, 2090, 2084, 2088, 2091, - 2089, 2092, 2090, 2093, 2094, 2097, 2098, 2096, 2096, 2086, - 2092, 2099, 2087, 2100, 2103, 2098, 2104, 2091, 2094, 2096, - 2099, 2093, 2102, 2097, 2101, 2101, 2103, 2105, 2106, 2109, - 2109, 2102, 2105, 2100, 2112, 2111, 2113, 2104, 2111, 2114, - 2117, 2106, 2116, 2118, 2119, 2120, 2120, 2122, 2129, 2118, - 2112, 2121, 2113, 2121, 2117, 2114, 2134, 2116, 2123, 2123, - 2135, 2119, 2126, 2126, 2130, 2122, 2127, 2127, 2131, 2132, - 2130, 2129, 2133, 2138, 2131, 2136, 2136, 2139, 2134, 2133, + 2078, 2078, 2081, 2082, 2083, 2083, 2084, 2085, 2082, 2077, + 2080, 2086, 2085, 2089, 2081, 2084, 2086, 2087, 2088, 2088, + 2087, 2090, 2091, 2092, 2093, 2096, 2094, 2097, 2093, 2095, + 2090, 2094, 2098, 2089, 2099, 2095, 2097, 2101, 2101, 2102, + 2091, 2105, 2092, 2096, 2103, 2104, 2106, 2106, 2099, 2101, + 2098, 2107, 2108, 2103, 2104, 2109, 2111, 2102, 2110, 2116, + 2107, 2105, 2116, 2110, 2108, 2114, 2114, 2117, 2118, 2111, + 2119, 2122, 2121, 2123, 2124, 2127, 2109, 2125, 2125, 2123, + 2126, 2128, 2126, 2117, 2118, 2122, 2119, 2121, 2130, 2127, + 2135, 2124, 2129, 2129, 2132, 2132, 2130, 2133, 2133, 2128, - 2135, 2137, 2137, 2132, 2140, 2141, 2142, 2143, 2144, 2139, - 2137, 2145, 2147, 2151, 2138, 0, 2140, 2144, 2142, 2146, - 2141, 2148, 2150, 2148, 2146, 2146, 2145, 2148, 2154, 2152, - 2153, 2153, 2155, 2143, 2156, 2147, 2151, 2156, 2157, 2158, - 2148, 2152, 2150, 2157, 2160, 2161, 2154, 2161, 2162, 2160, - 2163, 2164, 2155, 2166, 2168, 2163, 2169, 2170, 2164, 2158, - 2172, 2171, 2166, 2171, 2173, 2169, 2162, 2174, 2175, 2170, - 2180, 2178, 2168, 2174, 2177, 2181, 2177, 2179, 2179, 2172, - 2181, 2182, 2183, 2182, 2173, 2178, 2184, 2183, 2175, 2185, - 2186, 2184, 2187, 2188, 2191, 2189, 2180, 2190, 2192, 2188, + 2136, 2137, 2138, 2139, 2140, 2141, 2136, 2137, 2142, 2142, + 2139, 2143, 2143, 2135, 2144, 2145, 2138, 2146, 2147, 2148, + 2143, 2149, 2151, 2150, 2156, 2141, 2140, 2145, 2153, 2146, + 2157, 2148, 2150, 2147, 2152, 2144, 2154, 2151, 2154, 2152, + 2152, 2160, 2154, 2161, 2156, 2158, 2164, 2149, 2159, 2159, + 2167, 2153, 2167, 2157, 2168, 2154, 2174, 2158, 2162, 2160, + 2163, 2162, 2166, 2161, 2169, 2163, 2164, 2166, 2170, 2169, + 2172, 2175, 2168, 2176, 2174, 2170, 2177, 2178, 2177, 2172, + 2175, 2179, 2180, 2181, 2183, 2176, 2183, 2186, 2180, 2187, + 2184, 2185, 2185, 2188, 2187, 2188, 2178, 2189, 2191, 2192, - 2189, 2193, 2195, 2192, 2192, 2196, 2191, 2185, 2186, 2193, - 2190, 2197, 2187, 2198, 2198, 2199, 2199, 2200, 2201, 2196, - 2202, 2195, 2204, 2197, 2203, 2206, 2207, 2204, 2200, 2205, - 2203, 2205, 2209, 2201, 2207, 2208, 2208, 2210, 2210, 2212, - 2202, 2214, 2207, 2206, 2209, 2211, 2211, 2213, 2212, 2216, - 2219, 2217, 2213, 2216, 2218, 2222, 2218, 2221, 2223, 2214, - 2217, 2220, 2225, 2217, 2222, 2229, 2220, 2220, 2226, 2221, - 2223, 2219, 2227, 2226, 2225, 2230, 2231, 2227, 2229, 2232, - 2232, 2233, 2234, 2230, 2235, 2231, 2237, 2236, 2240, 2242, - 2238, 2239, 2244, 2240, 2254, 2230, 2243, 2248, 2247, 2233, + 2190, 2179, 2189, 2181, 2184, 2190, 2193, 2195, 2194, 2196, + 2199, 2197, 2195, 2186, 2194, 2198, 2191, 2192, 2199, 2201, + 2198, 2198, 2196, 2197, 2203, 2202, 2193, 2204, 2204, 2205, + 2205, 2206, 2207, 2208, 2209, 2211, 2203, 2211, 2201, 2202, + 2209, 2210, 2206, 2212, 2213, 2215, 2210, 2207, 2214, 2214, + 2216, 2216, 2213, 2208, 2217, 2217, 2218, 2215, 2219, 2220, + 2213, 2212, 2222, 2219, 2223, 2218, 2222, 2224, 2225, 2224, + 2227, 2229, 2228, 2223, 2226, 2231, 2223, 2220, 2243, 2226, + 2226, 2228, 2227, 2229, 2235, 2232, 2233, 2231, 2236, 2225, + 2232, 2233, 2237, 2238, 2238, 2239, 2236, 2235, 2240, 2241, - 2234, 2242, 2235, 2236, 2238, 2245, 2239, 2247, 2243, 2246, - 2245, 2237, 2244, 2251, 2246, 2248, 2253, 2254, 2255, 2251, - 2256, 2257, 2253, 2259, 2259, 2258, 2260, 2261, 2261, 2262, - 2263, 2266, 2251, 2255, 2258, 2260, 2264, 2265, 2256, 2268, - 2264, 2270, 2265, 0, 2266, 2269, 2257, 2262, 2271, 2263, - 2272, 2269, 2276, 2271, 2271, 2273, 2272, 2274, 2268, 2275, - 2274, 2273, 2281, 2270, 2279, 2279, 2284, 2275, 2280, 2280, - 2285, 2281, 2276, 2282, 2282, 2283, 2283, 2287, 2284, 2286, - 2288, 2288, 2287, 2280, 2290, 2286, 2289, 2289, 2285, 2290, - 2291, 2293, 2294, 2295, 2280, 2293, 2291, 2295, 2296, 2298, + 2244, 2237, 2242, 2243, 2245, 2246, 2250, 2251, 2236, 2248, + 2246, 2249, 2251, 2239, 2244, 2252, 2240, 2241, 2242, 2245, + 2252, 2248, 2253, 2249, 2254, 2260, 2250, 2257, 2259, 2261, + 2263, 2253, 2262, 2257, 2259, 2268, 2264, 2265, 2265, 2269, + 2266, 2274, 2254, 2270, 2261, 2264, 2257, 2270, 2260, 2266, + 2262, 2267, 2267, 2268, 2271, 2263, 2272, 2275, 2269, 2271, + 2274, 2276, 2277, 2275, 2278, 2279, 2281, 2277, 2277, 2272, + 2278, 2279, 2280, 2282, 2281, 2280, 2285, 2285, 2287, 2286, + 2286, 2288, 2288, 2276, 2289, 2289, 2290, 2287, 2291, 2292, + 2300, 2293, 2296, 2282, 2286, 2292, 2293, 2296, 2290, 2294, - 2299, 2301, 2300, 2302, 2303, 2299, 2305, 2304, 2302, 2306, - 2307, 2309, 2294, 2310, 2306, 2309, 2301, 2312, 2296, 2308, - 2308, 2313, 2303, 2304, 2298, 2300, 2305, 2314, 2310, 2311, - 2315, 2316, 2307, 2317, 2311, 2312, 2318, 2319, 2317, 2320, - 2320, 2323, 2315, 2322, 2324, 2314, 2325, 2313, 2326, 2318, - 2316, 2322, 2327, 2328, 2329, 2319, 2330, 2331, 2332, 2334, - 2323, 2341, 2341, 2324, 2332, 2325, 2336, 2337, 2330, 2340, - 2343, 2326, 2328, 2343, 2334, 2329, 2327, 2338, 2331, 2336, - 2339, 2337, 2339, 2338, 2344, 2342, 2345, 2346, 2352, 2340, - 2342, 2347, 2348, 2348, 2349, 2349, 2350, 2344, 2350, 2351, + 2294, 2295, 2295, 2297, 2299, 2286, 2291, 2301, 2299, 2297, + 2300, 2301, 2302, 2304, 2305, 2307, 2306, 2308, 2309, 2305, + 2311, 2310, 2308, 2312, 2313, 2314, 2314, 2315, 2312, 2316, + 2307, 2315, 2302, 2318, 2319, 2320, 2309, 2310, 2304, 2306, + 2311, 2325, 2317, 2321, 2316, 2322, 2313, 2317, 2324, 2323, + 2328, 2318, 2329, 2320, 2323, 2321, 2326, 2326, 2328, 2325, + 2319, 2324, 2330, 2331, 2322, 2332, 2333, 2334, 2335, 2338, + 2337, 2329, 2336, 2339, 2343, 2338, 2346, 2341, 2346, 2339, + 2344, 2330, 2331, 2347, 2336, 2352, 2334, 2343, 2332, 2335, + 2333, 2337, 2341, 2345, 2344, 2348, 2348, 2349, 2350, 2345, - 2351, 2346, 2353, 2352, 2347, 2354, 0, 2355, 2355, 2366, - 2345, 2355, 2357, 2357, 2358, 2358, 2360, 2353, 2354, 2359, - 2359, 2361, 2361, 2362, 2362, 2360, 2363, 2365, 2360, 2366, - 2367, 2363, 2365, 2368, 2369, 2369, 2370, 2370, 2371, 2372, - 2372, 2373, 2374, 2374, 2376, 2368, 2375, 2377, 2377, 2376, - 2367, 2378, 2378, 2379, 2380, 2381, 2381, 2371, 2382, 2373, - 2384, 2375, 2385, 2380, 2383, 2383, 2387, 2379, 2388, 2388, - 2389, 2387, 2390, 2390, 2384, 2382, 2391, 2392, 2393, 2397, - 2394, 2385, 2392, 2394, 2393, 2395, 2395, 2396, 2396, 2389, - 2398, 2399, 2401, 2399, 2391, 2402, 2403, 2403, 2397, 2406, + 2351, 2350, 2349, 2347, 2353, 2359, 2354, 2355, 2355, 2352, + 2356, 2356, 2357, 2351, 2357, 2358, 2358, 2360, 2353, 2354, + 2359, 2361, 2362, 2362, 2364, 2364, 2362, 2365, 2365, 2366, + 2366, 2367, 2360, 2373, 2361, 2368, 2368, 2369, 2369, 2370, + 2367, 2372, 2374, 2367, 2370, 2375, 2372, 2376, 2376, 2377, + 2377, 2378, 2382, 2373, 2379, 2379, 2380, 2375, 2381, 2381, + 2383, 2386, 2374, 2384, 2384, 2383, 2389, 2382, 2385, 2385, + 2378, 2387, 2388, 2388, 2380, 2386, 2390, 2390, 2391, 2392, + 2387, 2394, 2396, 2389, 2395, 2395, 2394, 2397, 2397, 2398, + 2399, 2400, 2391, 2401, 2404, 2399, 2401, 2400, 2392, 2402, - 2404, 2395, 2407, 2408, 0, 2398, 2404, 2401, 2409, 2410, - 2411, 2411, 2412, 2410, 2402, 2413, 2420, 2407, 2414, 2406, - 2413, 2415, 2418, 2409, 2417, 2417, 2408, 2419, 2421, 2422, - 2420, 2412, 2424, 2414, 2419, 2423, 2415, 2425, 2425, 2426, - 2434, 2427, 2418, 2427, 2431, 2430, 2421, 2422, 2426, 2428, - 2423, 2430, 2428, 2435, 2432, 2433, 2431, 2436, 2424, 2432, - 2433, 2437, 2439, 2438, 2447, 2434, 2435, 2428, 2438, 2428, - 2437, 2441, 2442, 0, 2443, 2444, 2441, 2442, 2436, 2443, - 2445, 2446, 2448, 2449, 2452, 2447, 2445, 2446, 2439, 2449, - 2444, 2450, 2453, 2451, 2455, 2456, 2450, 2448, 2451, 2454, + 2402, 2396, 2403, 2403, 2405, 2408, 2406, 2398, 2406, 2409, + 2410, 2410, 2411, 2404, 2413, 2402, 2414, 2415, 2411, 2405, + 2408, 2416, 2417, 2418, 2418, 2419, 2417, 2420, 2409, 2425, + 2421, 2414, 2420, 2422, 2413, 2426, 2416, 2424, 2424, 2427, + 2415, 2428, 2426, 2429, 2419, 2421, 2431, 2430, 2422, 2425, + 2432, 2432, 2437, 2427, 2433, 2434, 2438, 2434, 2437, 2428, + 2439, 2429, 2430, 2433, 2435, 2439, 2440, 2435, 2438, 2441, + 2442, 2440, 2431, 2445, 2443, 2446, 2444, 2454, 2445, 0, + 2459, 2448, 2435, 2442, 2435, 2444, 2448, 2449, 2450, 2451, + 2452, 2453, 2449, 2450, 2441, 2443, 2452, 2453, 2454, 2455, - 0, 2457, 2454, 2458, 2456, 2453, 2459, 2460, 2465, 2452, - 2457, 2461, 2458, 2462, 2455, 2459, 2463, 2461, 2467, 2462, - 2463, 2460, 2468, 2469, 2469, 2475, 2470, 2472, 2465, 2473, - 2473, 2468, 2470, 2471, 2471, 2474, 2472, 2477, 2467, 2478, - 2474, 2480, 2471, 2479, 2479, 2475, 2483, 2475, 2481, 2484, - 2486, 2485, 2490, 2477, 2489, 2478, 2480, 2481, 2483, 2489, - 2488, 2491, 2486, 2488, 0, 2484, 2485, 2492, 2492, 2493, - 2493, 2502, 2490, 2491, 2495, 2495, 2496, 2497, 2498, 2496, - 2499, 2500, 2497, 2504, 2498, 2502, 2499, 2501, 2501, 2505, - 2500, 2503, 2503, 2506, 2508, 2504, 2507, 2507, 2512, 2509, + 2456, 2446, 2457, 2458, 2451, 2459, 2456, 2457, 2458, 2460, + 2461, 2462, 2463, 2461, 2455, 2464, 2465, 2466, 2467, 2472, + 2474, 2463, 2460, 2468, 2464, 2465, 2466, 2469, 2475, 2468, + 2470, 2462, 2467, 2469, 2470, 2476, 2476, 2475, 2477, 2472, + 2474, 2478, 2478, 2479, 2477, 2480, 2480, 2482, 2481, 2484, + 2478, 2487, 2479, 2481, 2485, 2486, 2486, 2491, 2496, 2488, + 2490, 2492, 2493, 2496, 2497, 2484, 2487, 2482, 2488, 2482, + 2485, 2498, 2490, 2491, 2493, 2495, 2492, 0, 2495, 2499, + 2499, 2500, 2500, 2498, 2497, 2502, 2502, 2503, 2504, 2505, + 2503, 2506, 2507, 2504, 2509, 2505, 2512, 2506, 2508, 2508, - 2508, 2510, 2512, 2505, 2513, 2515, 2510, 2513, 2514, 2514, - 2515, 2516, 2506, 2509, 2517, 2518, 2516, 2519, 2520, 2521, - 2521, 2522, 2520, 2517, 2518, 2524, 2525, 2526, 2527, 2528, - 2524, 2529, 2530, 2531, 2522, 2529, 2532, 2519, 2531, 2533, - 2534, 2534, 2532, 2528, 2535, 2533, 2525, 2526, 2527, 2536, - 2537, 2538, 2530, 2539, 2540, 2540, 2538, 2543, 2542, 2544, - 2545, 2546, 2535, 2547, 2544, 2552, 2545, 2546, 2536, 2537, - 2542, 2547, 2550, 2543, 2539, 2548, 2553, 2548, 2560, 2552, - 0, 2550, 2554, 2554, 2555, 2556, 2556, 2555, 2558, 2559, - 2553, 2558, 2559, 2561, 2561, 2564, 2565, 2566, 2568, 2564, + 2511, 2507, 2510, 2510, 2513, 2514, 2514, 2515, 2509, 2517, + 2512, 2516, 2511, 2515, 2517, 2519, 2526, 2520, 2524, 2519, + 2520, 2521, 2521, 2513, 2522, 2516, 2523, 2524, 2525, 2522, + 2527, 2523, 2528, 2528, 2527, 2529, 2526, 2525, 2531, 2532, + 2533, 2534, 2535, 2531, 2537, 2536, 2538, 2539, 2529, 2536, + 2543, 2538, 2540, 2539, 2541, 2541, 2535, 2544, 2540, 2532, + 2533, 2534, 2542, 2542, 2537, 2545, 2546, 2547, 2543, 2548, + 2548, 2546, 2552, 2550, 2551, 2553, 2544, 2552, 0, 2555, + 2554, 2553, 2560, 2558, 2545, 2550, 2554, 2555, 2547, 2556, + 2551, 2556, 2558, 2561, 2562, 2562, 2560, 2563, 2564, 2564, - 2567, 2567, 2565, 2573, 2560, 2571, 2571, 2568, 2575, 2566, - 2576, 2579, 2580, 2581, 2582, 2584, 2579, 2591, 2585, 2594, - 2584, 2573, 2575, 2585, 2586, 2586, 2576, 2588, 2588, 2593, - 2590, 2581, 2592, 2592, 2595, 2582, 2590, 2591, 2580, 2595, - 2597, 2594, 2599, 2598, 2600, 2593, 2598, 2601, 2601, 2603, - 2607, 2604, 2605, 2613, 2599, 2606, 2600, 2608, 2605, 2597, - 2604, 2606, 2610, 2610, 2611, 2603, 2612, 2611, 2607, 2615, - 2615, 2613, 2608, 2616, 2616, 2617, 2618, 2619, 2620, 2621, - 2617, 2622, 2623, 2622, 2621, 2612, 2619, 2624, 2625, 2627, - 2626, 2620, 2628, 2629, 2618, 2626, 2623, 2635, 2629, 2635, + 2563, 2566, 2567, 2568, 2566, 2567, 2572, 2561, 2569, 2569, + 2572, 2573, 2574, 2575, 2575, 2581, 2576, 2573, 2579, 2579, + 2583, 2584, 2587, 2588, 2574, 2576, 2589, 2587, 2599, 2568, + 2590, 2592, 0, 2581, 2583, 2593, 2592, 2584, 2594, 2594, + 2593, 2596, 2596, 2601, 2589, 2602, 2598, 2605, 2599, 2588, + 2603, 2590, 2598, 2600, 2600, 2603, 2607, 2606, 2608, 2601, + 2606, 2609, 2609, 2611, 2612, 2613, 2605, 2602, 2607, 2614, + 2608, 2613, 2615, 2612, 2616, 2614, 2618, 2618, 2619, 2611, + 2620, 2619, 2621, 2623, 2623, 2624, 2624, 2625, 2626, 2616, + 2615, 2628, 2625, 2627, 2631, 2630, 2629, 2630, 2632, 2620, - 2625, 2624, 2630, 2630, 2631, 2631, 2632, 2632, 2634, 2627, - 2633, 2633, 2628, 2636, 2637, 2638, 2638, 2639, 2639, 2637, - 2634, 2640, 2640, 2641, 2642, 2643, 2644, 2645, 2648, 2646, - 2730, 2636, 2647, 2647, 2656, 2641, 2730, 2643, 2649, 2649, - 2650, 2650, 2651, 2653, 2642, 2646, 2644, 2648, 2645, 2652, - 2652, 2654, 2655, 2651, 2656, 2653, 2657, 2658, 2654, 2659, - 2661, 2657, 2660, 2660, 2655, 2662, 2662, 2663, 2664, 2661, - 2665, 2666, 2667, 2669, 2668, 2669, 2672, 2658, 2670, 2659, - 2671, 2671, 2673, 2665, 2674, 2672, 2667, 2676, 2664, 2677, - 2670, 2678, 2680, 2663, 2734, 2666, 2668, 2673, 2679, 2674, + 2621, 2629, 2627, 2633, 2628, 2634, 2626, 2635, 2631, 2636, + 2634, 2637, 2632, 2638, 2638, 2633, 2637, 2639, 2639, 2640, + 2640, 2641, 2641, 2642, 2643, 2644, 2643, 2635, 2645, 2636, + 2646, 2646, 2649, 2645, 2650, 2642, 2647, 2647, 2648, 2648, + 2651, 2652, 2653, 2644, 2649, 2656, 2654, 2655, 2655, 2657, + 2657, 2664, 2651, 2661, 2650, 2658, 2658, 2659, 2660, 2660, + 2662, 2652, 2654, 2653, 2656, 2661, 2663, 2662, 2659, 2665, + 2666, 2664, 2667, 2669, 2665, 2668, 2668, 2671, 2663, 2670, + 2670, 2672, 2669, 2673, 2674, 2675, 2677, 2676, 2677, 2680, + 2666, 2681, 2667, 2678, 2679, 2679, 2673, 2682, 2680, 2675, - 2734, 2679, 2681, 2682, 2690, 2676, 2680, 2681, 2682, 2683, - 2683, 2677, 2684, 2684, 2678, 2685, 2685, 2687, 2687, 2689, - 2689, 2691, 2690, 2692, 2693, 2695, 2696, 2697, 2698, 2699, - 2700, 2701, 2691, 2701, 2702, 2703, 2710, 2704, 2699, 2693, - 2705, 2705, 2692, 2707, 2696, 2695, 2709, 2707, 2698, 2697, - 2700, 2708, 2708, 2703, 2702, 2704, 2711, 2714, 2710, 2716, - 2709, 2712, 2712, 2715, 2715, 2711, 2714, 2717, 2718, 2719, - 2721, 2722, 2720, 2724, 2723, 2725, 2719, 2716, 2726, 2726, - 2727, 2727, 2725, 2728, 2729, 2717, 2718, 2720, 2721, 2722, - 2723, 2735, 2724, 2732, 2732, 2733, 2733, 2736, 2737, 2738, + 2684, 2672, 2685, 2671, 2686, 2678, 2681, 2687, 2674, 2676, + 2687, 2688, 2682, 0, 2689, 2690, 2691, 2691, 2684, 2689, + 2690, 2692, 2692, 2698, 2685, 2688, 2699, 2686, 2693, 2693, + 2695, 2695, 2697, 2697, 2700, 2701, 2703, 2699, 2705, 2704, + 2707, 2698, 2706, 2708, 2709, 2710, 2709, 2717, 2711, 2707, + 2701, 2712, 2718, 2700, 2713, 2713, 2703, 2704, 2716, 2716, + 2705, 2717, 2706, 2708, 2715, 2710, 2711, 2719, 2715, 2712, + 2720, 2720, 2722, 2724, 2718, 2725, 2719, 2723, 2723, 2726, + 2727, 2722, 2729, 2728, 2730, 2731, 2732, 2727, 2733, 2734, + 2737, 2724, 2733, 2725, 2735, 2735, 2734, 2726, 2728, 2738, - 2739, 2740, 2729, 2728, 2741, 2741, 2740, 2742, 2743, 2735, - 2744, 2745, 2746, 2737, 2739, 2736, 2747, 2748, 2738, 2748, - 2753, 2747, 2745, 2749, 2749, 2751, 2751, 2742, 2743, 2750, - 2744, 2750, 2746, 2755, 2756, 2757, 2758, 2760, 2759, 2753, - 2761, 2762, 2755, 2759, 2763, 2761, 2766, 2757, 2768, 2767, - 2770, 2768, 2771, 2756, 2769, 2769, 2758, 2760, 2772, 2772, - 2773, 2762, 2774, 2763, 2775, 2770, 2766, 2767, 2775, 2777, - 2771, 2773, 2778, 2779, 2780, 2781, 2781, 2774, 2780, 2779, - 2782, 2784, 2785, 2786, 2777, 2787, 2787, 2778, 2789, 2790, - 2791, 2792, 2792, 2782, 2791, 2794, 2784, 2799, 2790, 2798, + 2729, 2731, 2730, 2736, 2736, 2732, 2739, 2741, 2741, 2743, + 2737, 2744, 2739, 2742, 2742, 2743, 2745, 2738, 2746, 2747, + 2749, 2748, 2750, 2750, 2751, 2749, 2752, 2753, 2754, 2744, + 2755, 2756, 0, 2746, 2745, 2748, 2756, 2762, 2747, 2754, + 2757, 2759, 2757, 2759, 2751, 2764, 2752, 2753, 2758, 2758, + 2755, 2760, 2760, 2765, 2764, 2766, 2762, 2767, 2768, 2769, + 2770, 2771, 2775, 2768, 2772, 2770, 2776, 2766, 2777, 2778, + 2778, 2777, 2765, 2779, 2780, 2781, 2781, 2767, 2782, 2769, + 2783, 2771, 2775, 2772, 2776, 2786, 2784, 2787, 2779, 2782, + 2784, 2788, 2780, 2791, 2789, 2783, 2793, 2788, 2789, 2794, - 2789, 2797, 2785, 2786, 2793, 2793, 2795, 2795, 2796, 2799, - 2797, 2800, 2807, 2796, 2794, 2798, 2801, 2801, 2806, 2806, - 2808, 2807, 2809, 2809, 2810, 2811, 2812, 2813, 2816, 2816, - 2817, 2800, 2814, 2818, 2815, 2823, 2813, 2810, 2811, 2812, - 2823, 2814, 2808, 2815, 2820, 2820, 2825, 2826, 2818, 2827, - 2817, 2825, 2828, 2829, 2827, 2830, 2833, 2831, 2835, 2837, - 2828, 2826, 2836, 2835, 2830, 2831, 2841, 2836, 2838, 2838, - 2843, 2833, 2829, 2840, 2837, 2839, 2839, 2843, 2840, 2842, - 2842, 2844, 2845, 2846, 2847, 2841, 2844, 2848, 2849, 2849, - 2847, 2850, 2848, 2851, 2852, 2852, 2853, 2853, 2851, 2856, + 2786, 2795, 2787, 2790, 2790, 2798, 2791, 2796, 2796, 2799, + 2800, 2793, 2801, 2801, 2800, 2802, 2802, 2798, 2799, 2794, + 2803, 2795, 2804, 2804, 2805, 2806, 2807, 2809, 2808, 2805, + 2810, 2810, 2815, 2815, 2806, 2816, 2817, 2818, 2818, 2803, + 2808, 2819, 2807, 2820, 2816, 2826, 2821, 2809, 2822, 2825, + 2825, 2823, 2824, 2827, 2819, 2838, 2820, 2822, 2817, 2821, + 2823, 2824, 2829, 2829, 2832, 2826, 2834, 2835, 2827, 2832, + 2836, 2834, 2837, 2839, 2838, 2836, 2840, 2842, 2844, 2846, + 2837, 2835, 2839, 2844, 2840, 2845, 2847, 2847, 2848, 2848, + 2845, 2849, 2842, 2850, 2846, 2852, 2849, 2851, 2851, 2853, - 2845, 2846, 2857, 2857, 2858, 2859, 2850, 2858, 2860, 2861, - 2859, 2859, 2856, 2860, 2861, 2862, 2863, 2864, 2865, 2866, - 2867, 2864, 2863, 2865, 2868, 2869, 2872, 2870, 2866, 2862, - 2871, 2872, 2868, 2870, 2876, 2867, 2871, 2873, 2874, 2874, - 2877, 2876, 2880, 2882, 2878, 2877, 2869, 2878, 2882, 2873, - 2883, 2884, 2885, 2886, 2880, 2883, 2884, 2894, 2887, 2888, - 2889, 2889, 2890, 2899, 2891, 2900, 2886, 2887, 2888, 2891, - 2885, 2890, 2895, 2896, 2901, 2894, 2902, 2904, 2895, 2896, - 2903, 2903, 2899, 2905, 2904, 2900, 2910, 2907, 2908, 2909, - 2909, 2911, 2912, 2912, 2901, 2902, 2907, 2908, 2913, 2915, + 2854, 2855, 2852, 2856, 2853, 2857, 2858, 2858, 2859, 2856, + 2857, 2860, 2850, 2861, 2861, 2865, 2860, 2869, 2854, 2855, + 2862, 2862, 2869, 2859, 2866, 2866, 2867, 2868, 2865, 2867, + 2870, 2871, 2868, 2868, 2872, 2870, 2876, 2873, 2874, 2875, + 2872, 2873, 2877, 2874, 2878, 2871, 2879, 2880, 2875, 2881, + 2877, 2876, 2879, 2880, 2881, 2882, 2883, 2883, 2886, 2885, + 2889, 2887, 2894, 2886, 2887, 2878, 2885, 2882, 2891, 2892, + 2893, 2895, 2889, 2891, 2892, 2893, 2896, 2897, 2898, 2898, + 2894, 2899, 2904, 2900, 2895, 2896, 2897, 2900, 2901, 2905, + 2899, 2906, 2909, 2901, 2910, 2905, 2911, 2906, 2912, 2914, - 2917, 2910, 2905, 2918, 2919, 2919, 2911, 2918, 2920, 2921, - 2922, 2923, 2925, 2924, 2915, 2921, 2922, 2913, 2925, 2927, - 2917, 2926, 2926, 2928, 2929, 2931, 2932, 2927, 2937, 2929, - 2923, 2924, 2934, 2920, 2931, 2938, 2940, 2935, 2934, 2932, - 2935, 2936, 2939, 2939, 2943, 2936, 2937, 0, 2928, 2938, - 2954, 2940, 2942, 2942, 2944, 2944, 2945, 2945, 2947, 2947, - 2948, 2949, 2943, 2950, 2948, 2956, 2949, 2952, 2952, 2955, - 2954, 2958, 2950, 2957, 2955, 2960, 2961, 2956, 2957, 2957, - 2962, 2962, 2972, 2958, 2964, 2964, 2965, 2965, 2966, 2966, - 2967, 2968, 2969, 2967, 2974, 2960, 2961, 2971, 2971, 2980, + 2904, 2913, 2913, 2915, 2917, 2920, 2914, 2919, 2919, 2918, + 2921, 2909, 2923, 2917, 2910, 2925, 2911, 2912, 2918, 2927, + 2920, 2930, 2915, 2922, 2922, 2921, 2929, 2929, 2928, 2931, + 2925, 2923, 2928, 2933, 2932, 2931, 2934, 2935, 2938, 2927, + 2932, 2936, 2936, 2935, 2939, 2937, 2930, 2941, 2942, 2939, + 2947, 2944, 2933, 2937, 2934, 2945, 2941, 2944, 2945, 2948, + 2946, 2942, 2950, 2938, 2946, 2949, 2949, 2953, 2947, 2952, + 2952, 2954, 2954, 2948, 2955, 2955, 2958, 2950, 2957, 2957, + 2958, 2959, 2960, 2962, 2962, 2953, 2959, 2964, 2965, 2966, + 2967, 2960, 2968, 2965, 2970, 2967, 2967, 2971, 2972, 2972, - 2972, 2975, 2975, 2978, 2968, 2969, 2976, 2976, 2977, 2977, - 2979, 2979, 2980, 2981, 2974, 2982, 2983, 2985, 2978, 2984, - 2984, 2985, 2983, 2989, 2988, 2992, 2993, 2991, 2989, 2982, - 2988, 2981, 2991, 2991, 2994, 2995, 2996, 2997, 3007, 2998, - 0, 2995, 2996, 2998, 2999, 2999, 2993, 3002, 2992, 3004, - 3005, 3010, 3002, 3005, 2994, 3008, 3011, 3004, 3008, 3009, - 3009, 3011, 2997, 3007, 3012, 3013, 3014, 3016, 3010, 3010, - 3015, 3015, 3017, 3018, 3019, 3017, 3020, 3024, 3025, 3025, - 3014, 3016, 3012, 3017, 3020, 3013, 3022, 3018, 3034, 3023, - 3033, 3022, 3022, 3019, 3023, 3023, 3024, 3026, 3026, 3027, + 2982, 2966, 2974, 2974, 2968, 2975, 2975, 2964, 2976, 2976, + 2977, 2978, 2979, 2977, 2970, 2981, 2981, 2971, 2982, 2984, + 2985, 2985, 2986, 2986, 2978, 2979, 2987, 2987, 2988, 2989, + 2989, 2990, 2991, 2992, 2993, 2994, 2994, 2995, 3002, 2984, + 2993, 2995, 2998, 2988, 2990, 3003, 2999, 2992, 2998, 3001, + 2991, 2999, 3004, 3005, 3001, 3001, 3006, 3007, 3012, 3005, + 3008, 3002, 3006, 3012, 3008, 3003, 3009, 3009, 3014, 3017, + 3015, 3018, 3004, 3015, 3018, 3020, 3014, 3019, 3019, 3021, + 3022, 3023, 3007, 3024, 3021, 3025, 3025, 3029, 3026, 3028, + 3035, 3035, 3020, 3020, 3017, 3034, 3027, 3024, 3022, 3027, - 3027, 3028, 3028, 3029, 3029, 3030, 3030, 3031, 3032, 3037, - 3033, 3035, 3036, 3032, 3034, 3038, 3040, 3036, 3039, 3041, - 3038, 3042, 3050, 3031, 0, 3035, 3058, 3039, 3037, 3044, - 3044, 3045, 3045, 3047, 3046, 3058, 3040, 3046, 3049, 3041, - 3050, 3042, 3048, 3048, 3049, 3052, 3052, 3053, 3047, 3054, - 3054, 3055, 3057, 3057, 3053, 3059, 3055, 3060, 3060, 3061, - 3062, 3064, 3065, 3065, 3059, 3066, 3066, 3067, 3061, 3062, - 3069, 3067, 3068, 3070, 3072, 3071, 3076, 3073, 3075, 3064, - 3087, 3068, 3073, 3073, 3070, 3076, 3082, 3082, 3077, 3069, - 3071, 3075, 3077, 3081, 3072, 3083, 3085, 3085, 3081, 3086, + 3030, 3023, 3026, 3028, 3032, 0, 3029, 3027, 3030, 3032, + 3032, 3033, 3036, 3036, 3034, 3041, 3033, 3033, 3037, 3037, + 3038, 3038, 3039, 3039, 3040, 3040, 3043, 3042, 3044, 3045, + 3046, 3041, 3042, 3048, 3047, 3049, 3050, 3051, 3045, 3047, + 3049, 3052, 3053, 3058, 3046, 3050, 3043, 3055, 3055, 3056, + 3056, 0, 3048, 3057, 3044, 3061, 3057, 3051, 3058, 3059, + 3059, 3052, 3053, 3060, 3063, 3063, 3075, 3064, 0, 3060, + 3065, 3065, 3066, 3061, 3064, 3068, 3068, 3066, 3069, 3070, + 3071, 3071, 3072, 3073, 3075, 3076, 3076, 3069, 3070, 3077, + 3077, 3072, 3073, 3078, 3079, 3080, 3081, 3078, 3082, 3083, - 3088, 3090, 3090, 3091, 3092, 3087, 3097, 3093, 3099, 3083, - 3092, 3098, 3091, 3086, 3101, 3102, 3098, 3099, 3088, 3093, - 3104, 3102, 3106, 3108, 3109, 3110, 3110, 3111, 3108, 3109, - 3113, 3097, 3104, 3114, 3101, 3113, 3111, 3115, 3116, 3116, - 3118, 3118, 3116, 3106, 3119, 3119, 3114, 3120, 3120, 3121, - 3122, 3115, 3123, 0, 3124, 3126, 3130, 3127, 3121, 3124, - 3128, 3126, 3127, 3129, 3129, 3128, 3131, 3132, 3133, 3134, - 3122, 3123, 3136, 3133, 3130, 3135, 3137, 3137, 3131, 3139, - 3140, 3135, 3143, 3139, 3141, 3140, 3147, 3134, 3132, 3141, - 3142, 3142, 3144, 3145, 3149, 3149, 3151, 3136, 3152, 3153, + 3084, 3087, 3086, 3079, 3088, 3084, 3084, 3081, 3088, 3094, + 3087, 3092, 3097, 3082, 3080, 3086, 3092, 3093, 3093, 3083, + 3096, 3096, 3098, 3094, 3099, 3102, 3097, 3101, 3101, 3103, + 3108, 3104, 3109, 3112, 3102, 3103, 3110, 3109, 3113, 3115, + 3117, 3119, 3099, 3104, 3113, 3110, 3119, 3098, 3126, 3120, + 3122, 3115, 3125, 3112, 3120, 3108, 3121, 3121, 3124, 3122, + 3133, 3117, 3126, 3124, 3134, 3125, 3127, 3127, 3129, 3129, + 3127, 3130, 3130, 3131, 3131, 3132, 3135, 3138, 3141, 3137, + 3133, 3135, 3138, 3134, 3132, 3137, 3139, 3140, 3140, 3142, + 3143, 3139, 3144, 3146, 3145, 3147, 3141, 3144, 3154, 3146, - 3154, 3143, 3156, 3157, 3154, 3155, 3147, 3144, 3145, 3151, - 3159, 3152, 3153, 3158, 3155, 3159, 3160, 3162, 3156, 3161, - 3161, 3158, 3157, 3163, 3164, 3167, 3162, 3165, 3165, 3166, - 3166, 3171, 3170, 3173, 3174, 3174, 3160, 3170, 3170, 3173, - 3176, 3163, 3178, 3178, 3167, 3171, 3180, 3181, 3183, 3184, - 3164, 3185, 3189, 3183, 3188, 3188, 3185, 3190, 3191, 3192, - 3194, 3176, 3180, 3181, 3191, 3184, 3190, 3193, 3193, 3196, - 3196, 3197, 3189, 3198, 3199, 3199, 3203, 3201, 3204, 3194, - 3207, 3205, 3192, 3201, 3204, 3197, 3205, 3208, 3209, 3209, - 3210, 3210, 3198, 3211, 3212, 3214, 3203, 3213, 3213, 3216, + 3150, 3142, 3148, 3148, 3150, 3151, 3153, 3153, 3152, 3155, + 3151, 3143, 3145, 3152, 3156, 3158, 3167, 3154, 3160, 3160, + 3147, 3162, 3165, 3163, 3155, 3164, 3165, 3168, 3166, 3156, + 3171, 3169, 3167, 3172, 3162, 3158, 3163, 3166, 3164, 3169, + 3170, 3173, 3173, 3174, 3175, 3170, 3168, 3176, 3177, 3177, + 3171, 3179, 3174, 3172, 3178, 3178, 3188, 3183, 3182, 3185, + 3186, 3186, 3175, 3182, 3182, 3185, 3190, 3190, 3192, 3193, + 3179, 3183, 3196, 3176, 3195, 3197, 3201, 3188, 3202, 3195, + 3197, 3200, 3200, 3203, 3192, 3193, 3204, 3202, 3196, 3203, + 3205, 3205, 3206, 3208, 3208, 3210, 3201, 3213, 3209, 3211, - 3215, 3217, 3207, 3218, 3219, 3220, 3214, 3217, 3211, 3215, - 3221, 3221, 3222, 3208, 3212, 3223, 3219, 3213, 3223, 3216, - 3224, 3229, 3218, 3224, 3230, 3220, 3231, 3222, 3225, 3225, - 3232, 3232, 3231, 3229, 3233, 3234, 3235, 3233, 3237, 3238, - 3238, 3234, 3239, 3237, 3230, 3240, 3241, 3239, 3242, 3243, - 3243, 3245, 3241, 3246, 3235, 3247, 3248, 3249, 3249, 3250, - 3251, 3252, 0, 3245, 3240, 3242, 3242, 3254, 3254, 3248, - 3252, 3246, 3255, 3255, 3256, 3256, 3251, 3257, 3250, 3258, - 3247, 3259, 3257, 3260, 3260, 3264, 3259, 3261, 3261, 3262, - 3262, 3263, 3263, 3258, 3265, 3266, 3271, 3267, 3264, 3270, + 3211, 3215, 3216, 3213, 3219, 3217, 3220, 3223, 3216, 3204, + 3217, 3206, 3209, 3224, 3210, 3221, 3221, 3222, 3222, 3225, + 3225, 3215, 3223, 3226, 3228, 3229, 3219, 3227, 3230, 3231, + 3232, 3229, 3220, 3224, 3226, 0, 3227, 3233, 3233, 3225, + 3234, 3231, 3235, 3236, 3228, 3235, 3236, 3230, 3237, 3237, + 3232, 3241, 3242, 3243, 3246, 3234, 3244, 3244, 3245, 3243, + 3246, 3245, 3247, 3241, 3249, 3250, 3250, 3252, 3251, 3249, + 3253, 3254, 3242, 3251, 3255, 3255, 3253, 3258, 3257, 3259, + 3247, 3260, 3261, 3261, 3262, 3263, 3252, 3264, 3254, 3254, + 3257, 3266, 3266, 0, 3260, 3258, 3264, 3267, 3267, 3268, - 3270, 3266, 3267, 3273, 3273, 3274, 3274, 3276, 3278, 3279, - 3280, 3281, 3271, 3282, 3282, 3284, 3284, 3285, 3286, 3289, - 3265, 3287, 3294, 3290, 3291, 3291, 3276, 3292, 3292, 3280, - 3278, 3279, 3290, 3281, 3296, 3287, 3295, 3286, 3297, 3289, - 3294, 3298, 3295, 3285, 3299, 3302, 3298, 3303, 3303, 3299, - 3305, 3305, 3309, 3306, 3296, 3307, 3308, 3297, 3306, 3310, - 3311, 3311, 3308, 3312, 3309, 3316, 3302, 3310, 3312, 3307, - 3314, 3315, 3317, 3318, 3314, 3319, 3315, 3320, 3318, 3323, - 3322, 3324, 3325, 3320, 3328, 3316, 3327, 3319, 3322, 3329, - 3330, 3331, 3317, 3334, 3333, 3338, 3331, 3335, 3323, 3333, + 3268, 3263, 3269, 3262, 3259, 3270, 3271, 3269, 3272, 3272, + 3277, 3271, 3273, 3273, 3274, 3274, 3275, 3276, 3276, 3270, + 3278, 3279, 3284, 3277, 3280, 3275, 3289, 3279, 3291, 3280, + 3283, 3283, 3286, 3286, 3287, 3287, 3292, 3293, 3284, 3294, + 3295, 3295, 3297, 3297, 3298, 3289, 3278, 3299, 3300, 3302, + 3291, 3303, 3304, 3304, 3305, 3305, 3293, 3307, 3292, 3308, + 3303, 3294, 3300, 3309, 3315, 3308, 3299, 3310, 3311, 3302, + 3298, 3312, 0, 3311, 3320, 3307, 3312, 3316, 3316, 3318, + 3318, 3322, 3319, 3309, 3321, 3315, 3310, 3319, 3320, 3323, + 3321, 3324, 3324, 3322, 3325, 3329, 3327, 3323, 3328, 3325, - 3328, 3324, 3325, 3335, 3327, 3336, 3329, 3329, 3340, 3339, - 3336, 3330, 3339, 3334, 3353, 3338, 3344, 3344, 3345, 3345, - 3346, 3340, 3351, 3351, 3346, 3352, 3354, 3354, 3356, 0, - 3352, 3359, 3359, 3353, 3360, 3360, 3364, 3360, 3361, 3361, - 3364, 3361, 3367, 3356, 3362, 3362, 3363, 3363, 3366, 3363, - 3369, 3367, 3370, 3366, 3368, 3368, 3373, 3373, 3374, 3375, - 3376, 3377, 3377, 3378, 3379, 3376, 3370, 3382, 3369, 3383, - 3384, 3385, 3386, 3388, 3384, 0, 3383, 3389, 3374, 3375, - 3385, 3378, 3389, 3395, 3379, 3390, 3390, 3386, 3391, 3392, - 3392, 3388, 3382, 3393, 3393, 3394, 3394, 3391, 3395, 3396, + 3327, 3330, 3331, 3328, 3332, 3333, 3335, 3331, 3336, 3337, + 3338, 3333, 3341, 3340, 3335, 3329, 3332, 3342, 3343, 3344, + 3346, 3330, 3347, 3351, 3344, 3346, 3348, 3336, 3341, 3337, + 3338, 3340, 3348, 3349, 3342, 3342, 3353, 3352, 3349, 3343, + 3352, 3363, 3347, 3351, 3357, 3357, 3358, 3358, 3359, 3353, + 3365, 3365, 3359, 3366, 3367, 3370, 3363, 0, 3366, 3368, + 3368, 3373, 3373, 3374, 3374, 3388, 3374, 3380, 3375, 3375, + 3370, 3375, 3380, 3367, 3376, 3376, 3377, 3377, 3378, 3377, + 3381, 3383, 3378, 3382, 3382, 3388, 3384, 3387, 3387, 3381, + 3389, 3390, 3391, 3391, 3392, 3393, 3390, 3396, 3397, 3383, - 3397, 3398, 3399, 3400, 3396, 3401, 3398, 3398, 3399, 3397, - 3402, 3403, 3397, 3404, 3405, 0, 3403, 3407, 3404, 3408, - 3401, 3406, 3406, 3407, 3411, 3408, 3409, 3409, 3400, 3410, - 3410, 3402, 3412, 3405, 3415, 3415, 3418, 3412, 3420, 3411, - 3417, 3417, 3422, 3422, 3431, 3418, 3423, 3423, 3424, 3424, - 3425, 3425, 3427, 3427, 3428, 3428, 3420, 3429, 3429, 3430, - 3430, 3437, 3433, 3434, 3434, 3435, 3435, 3436, 3438, 3440, - 3431, 3433, 3442, 3437, 3441, 3441, 3436, 3443, 3443, 3444, - 3445, 3447, 3447, 3446, 3440, 3448, 3448, 3450, 3438, 3451, - 3451, 3442, 3454, 3445, 3444, 3446, 3455, 3456, 3458, 3455, + 3384, 3400, 3398, 3402, 3399, 3397, 3398, 3404, 3404, 3403, + 3389, 3405, 3392, 3399, 3403, 3393, 3400, 3406, 3406, 3409, + 3405, 3402, 3396, 3407, 3407, 3408, 3408, 3410, 3411, 3414, + 3412, 3415, 3410, 3413, 3409, 3412, 3412, 3411, 3416, 3413, + 3411, 3419, 3417, 3418, 3420, 3420, 3415, 3417, 3418, 3421, + 3422, 3423, 3423, 3425, 3414, 3421, 3422, 3424, 3424, 3416, + 3419, 3426, 3429, 3429, 3430, 3433, 3426, 3435, 3425, 3432, + 3432, 3437, 3437, 3446, 3433, 3438, 3438, 0, 3430, 3439, + 3439, 3440, 3440, 3442, 3442, 3435, 3443, 3443, 3444, 3444, + 3445, 3445, 3448, 3449, 3449, 3450, 3450, 3451, 3452, 3446, - 3457, 3457, 3450, 3460, 3462, 3461, 3460, 3463, 3464, 3466, - 3454, 3461, 3463, 3465, 3468, 3469, 3458, 3472, 3462, 3473, - 3468, 3472, 3476, 3456, 3469, 3466, 3477, 3464, 3486, 3487, - 3490, 3465, 3487, 3486, 3473, 3491, 3491, 3492, 3492, 3493, - 3493, 3495, 3495, 3490, 3497, 3498, 3477, 3499, 3476, 3500, - 3502, 3499, 3504, 3506, 3498, 3505, 3508, 3507, 3506, 3507, - 3509, 3509, 3511, 3510, 3502, 3512, 3505, 3497, 3513, 3500, - 3514, 3508, 3515, 3516, 3517, 3504, 3510, 3519, 3521, 3523, - 3518, 3511, 3516, 3512, 3513, 3518, 3517, 3515, 3520, 3522, - 3522, 3524, 3529, 3520, 3530, 3514, 3524, 3521, 3519, 3523, + 3453, 3448, 3455, 3456, 3456, 3457, 3451, 3458, 3458, 3460, + 3452, 3459, 3465, 3461, 3462, 3462, 3469, 3455, 3463, 3463, + 3453, 3471, 3460, 3473, 3457, 3461, 3459, 3465, 3466, 3466, + 3470, 3472, 3472, 3470, 3469, 3475, 3476, 3477, 3475, 3478, + 3479, 3473, 3476, 3480, 3478, 3488, 3481, 3471, 3483, 3484, + 3492, 3477, 3487, 3493, 3483, 3506, 3487, 0, 3484, 3479, + 3488, 3480, 3481, 3490, 3490, 3502, 3503, 3513, 3506, 3503, + 3502, 3507, 3507, 3493, 3508, 3508, 3492, 3509, 3509, 3511, + 3511, 3515, 3514, 3516, 3518, 3515, 3520, 3522, 3521, 3524, + 3513, 3514, 3522, 3523, 3526, 3523, 3525, 3525, 3518, 3521, - 3531, 3531, 3532, 3533, 3533, 3537, 3529, 3534, 3534, 3535, - 3535, 3532, 3536, 3536, 3530, 3538, 3539, 3540, 3541, 3539, - 3542, 3543, 3540, 3541, 3537, 3544, 3545, 3546, 3547, 3548, - 3548, 3544, 3549, 3547, 3554, 3538, 3543, 3550, 3550, 3546, - 3545, 3551, 3551, 3553, 3553, 3542, 3555, 3556, 3556, 3554, - 3560, 3558, 3549, 3563, 3563, 3564, 3564, 3566, 3567, 3565, - 3569, 3571, 3570, 3568, 3567, 3555, 3558, 3565, 3560, 3568, - 3573, 3573, 3572, 3579, 3569, 3570, 3566, 3572, 3575, 3575, - 3571, 3580, 3582, 3583, 3585, 3586, 3587, 3583, 3590, 3588, - 3586, 3596, 3591, 3589, 3579, 3592, 3582, 3591, 3593, 3593, + 3527, 3529, 3528, 3516, 3524, 3530, 3531, 3526, 3535, 3520, + 3534, 3533, 3536, 3532, 3538, 3534, 3540, 3529, 3547, 3527, + 3528, 3531, 3532, 3533, 3536, 3546, 3537, 3539, 3539, 3535, + 3530, 3537, 3541, 3538, 3548, 3548, 3540, 3541, 3547, 3546, + 3549, 3550, 3550, 3551, 3551, 3552, 3552, 3553, 3553, 3549, + 3554, 3555, 3556, 3557, 3558, 3556, 3559, 3560, 3557, 3558, + 3561, 3562, 3563, 3564, 3565, 3565, 3561, 3566, 3564, 3554, + 3573, 3555, 3560, 3572, 3563, 3562, 3567, 3567, 3568, 3568, + 3576, 3559, 3569, 3569, 3571, 3571, 3578, 3566, 3572, 3573, + 3574, 3574, 3581, 3581, 3583, 3576, 3582, 3582, 3584, 3585, - 3592, 3580, 3588, 3597, 3585, 3587, 3589, 3590, 3598, 3599, - 3599, 3596, 3600, 3601, 3602, 3602, 3606, 3600, 3603, 3601, - 3604, 3597, 3607, 3603, 3605, 3604, 3614, 3598, 3607, 3605, - 3609, 3609, 3610, 3611, 3611, 3606, 3613, 3610, 3616, 3615, - 3613, 3617, 3618, 3619, 3626, 3614, 3615, 3625, 3618, 3626, - 3620, 3622, 3622, 3624, 3624, 3627, 3625, 3616, 3628, 3625, - 3617, 3634, 3619, 3620, 3631, 3629, 3630, 3630, 3632, 3631, - 3635, 3635, 3636, 3641, 3627, 3637, 3637, 3628, 3629, 3638, - 3638, 3632, 3640, 3639, 3642, 3642, 3646, 3634, 3639, 3640, - 3643, 3636, 3641, 3646, 3644, 3643, 3644, 3645, 3645, 3647, + 3586, 3587, 3583, 3588, 3578, 3585, 3586, 3589, 3590, 3591, + 3591, 3593, 3593, 3590, 3598, 3587, 3588, 3584, 3599, 3601, + 3602, 3604, 3605, 3606, 3602, 3615, 3589, 3605, 3609, 3610, + 3607, 3608, 3611, 3601, 3610, 3598, 3616, 3611, 3599, 3612, + 3612, 3604, 3606, 3607, 3608, 3615, 3617, 3609, 3618, 3618, + 3619, 3620, 3621, 3621, 3616, 3619, 3622, 3620, 3623, 3624, + 3625, 3622, 3626, 3623, 3624, 3617, 3628, 3628, 3626, 3629, + 3630, 3630, 3632, 3633, 3629, 3634, 3632, 3635, 3636, 3625, + 3637, 3638, 3634, 3641, 3641, 3639, 3637, 3643, 3643, 3645, + 3644, 3646, 3633, 3647, 3645, 3648, 3635, 3636, 3639, 3644, - 3648, 3650, 3649, 3652, 3652, 3653, 3647, 3649, 3655, 3656, - 3657, 3658, 3662, 3655, 3656, 3659, 3659, 3661, 3661, 3648, - 3650, 3663, 3664, 3664, 3653, 3665, 3665, 3666, 3676, 3657, - 3658, 3662, 3668, 3668, 3666, 3669, 3669, 3670, 3672, 3677, - 3663, 3675, 0, 3672, 3670, 0, 3675, 3676, 3678, 3678, - 3679, 3679, 0, 0, 0, 0, 0, 0, 3677, 3683, - 3683, 3683, 3683, 3683, 3683, 3683, 3684, 3684, 3684, 3684, - 3684, 3684, 3684, 3685, 3685, 3685, 3685, 3685, 3685, 3685, - 3686, 3686, 3686, 3686, 3686, 3686, 3686, 3687, 3687, 3687, - 3687, 3687, 3687, 3687, 3688, 3688, 3688, 3688, 3688, 3688, + 3638, 3650, 3644, 3649, 3649, 3651, 3650, 3653, 3648, 3655, + 3646, 0, 3647, 3654, 3654, 3656, 3656, 3658, 3651, 3657, + 3657, 3660, 3658, 3659, 3661, 3661, 3662, 3663, 3655, 3663, + 3659, 3662, 3665, 3653, 3664, 3664, 3666, 3667, 3669, 3665, + 3660, 3668, 3672, 3666, 3671, 3671, 3668, 3674, 3675, 3676, + 3677, 3681, 3674, 3675, 3678, 3678, 3667, 3669, 3680, 3680, + 3682, 3672, 3683, 3683, 3684, 3684, 3685, 3695, 3676, 3677, + 3681, 3687, 3687, 3685, 3688, 3688, 3689, 3691, 3696, 3682, + 3694, 0, 3691, 3689, 0, 3694, 3695, 3697, 3697, 3698, + 3698, 0, 0, 0, 0, 0, 0, 3696, 3702, 3702, - 3688, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3691, 3691, - 0, 3691, 3691, 3691, 3691, 3692, 3692, 0, 0, 0, - 3692, 3692, 3693, 3693, 0, 0, 3693, 0, 3693, 3694, - 0, 0, 0, 0, 0, 3694, 3695, 3695, 0, 0, - 0, 3695, 3695, 3696, 0, 0, 0, 0, 0, 3696, - 3697, 3697, 0, 3697, 3697, 3697, 3697, 3698, 0, 0, - 0, 0, 0, 3698, 3699, 3699, 0, 0, 0, 3699, - 3699, 3700, 3700, 0, 3700, 3700, 3700, 3700, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3702, 3702, 3702, 3702, 3702, 3703, 3703, 3703, 3703, 3703, + 3703, 3703, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3706, 3706, 3706, 3706, + 3706, 3706, 3706, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3710, 3710, 0, + 3710, 3710, 3710, 3710, 3711, 3711, 0, 0, 0, 3711, + 3711, 3712, 3712, 0, 0, 3712, 0, 3712, 3713, 0, + 0, 0, 0, 0, 3713, 3714, 3714, 0, 0, 0, + 3714, 3714, 3715, 0, 0, 0, 0, 0, 3715, 3716, + 3716, 0, 3716, 3716, 3716, 3716, 3717, 0, 0, 0, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, - 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682 + 0, 0, 3717, 3718, 3718, 0, 0, 0, 3718, 3718, + 3719, 3719, 0, 3719, 3719, 3719, 3719, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701 } ; static yy_state_type yy_last_accepting_state; @@ -3433,7 +3448,7 @@ static void config_end_include(void) } #endif -#line 3434 "" +#line 3449 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3442,9 +3457,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3443 "" +#line 3458 "" -#line 3445 "" +#line 3460 "" #define INITIAL 0 #define quotedstring 1 @@ -3668,7 +3683,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3669 "" +#line 3684 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3701,13 +3716,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 >= 3683 ) + if ( yy_current_state >= 3702 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 7179 ); + while ( yy_base[yy_current_state] != 7218 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4257,12 +4272,12 @@ YY_RULE_SETUP case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_UNKNOWN_ADDITIONAL) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 107: YY_RULE_SETUP @@ -4272,72 +4287,72 @@ YY_RULE_SETUP case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 113: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 119: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 122: YY_RULE_SETUP @@ -4347,37 +4362,37 @@ YY_RULE_SETUP case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 130: YY_RULE_SETUP @@ -4387,57 +4402,57 @@ YY_RULE_SETUP case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 142: YY_RULE_SETUP @@ -4447,796 +4462,796 @@ YY_RULE_SETUP case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_INTERFACE_ACTION) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 192: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 193: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 194: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 195: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) } YY_BREAK case 196: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 197: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 198: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 199: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 200: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 201: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 202: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 203: YY_RULE_SETUP -#line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 417 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 255: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 256: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_TAG) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 257: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) } +{ YDVAR(2, VAR_INTERFACE_TAG) } YY_BREAK case 258: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(3, VAR_INTERFACE_TAG_DATA) } +{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) } YY_BREAK case 259: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_VIEW) } +{ YDVAR(3, VAR_INTERFACE_TAG_DATA) } YY_BREAK case 260: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_INTERFACE_VIEW) } YY_BREAK case 261: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 262: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 263: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 264: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 265: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 266: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 267: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 268: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 269: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 270: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 271: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 487 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 272: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 273: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 274: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 275: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 276: YY_RULE_SETUP -#line 494 "./util/configlexer.lex" +#line 493 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 277: YY_RULE_SETUP -#line 496 "./util/configlexer.lex" +#line 495 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 278: YY_RULE_SETUP -#line 498 "./util/configlexer.lex" +#line 497 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 279: YY_RULE_SETUP -#line 500 "./util/configlexer.lex" +#line 499 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 280: YY_RULE_SETUP -#line 502 "./util/configlexer.lex" +#line 501 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 281: YY_RULE_SETUP -#line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 503 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } YY_BREAK case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_SENT_COUNT) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) } +{ YDVAR(1, VAR_MAX_SENT_COUNT) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) } YY_BREAK case 298: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 299: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 300: YY_RULE_SETUP @@ -5251,119 +5266,119 @@ YY_RULE_SETUP case 302: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 303: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 304: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 305: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 306: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 307: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 308: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 309: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 310: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 311: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 312: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 313: YY_RULE_SETUP -#line 537 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 314: YY_RULE_SETUP -#line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 538 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 325: YY_RULE_SETUP @@ -5373,128 +5388,133 @@ YY_RULE_SETUP case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 330: YY_RULE_SETUP #line 555 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 331: YY_RULE_SETUP #line 556 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 332: YY_RULE_SETUP #line 557 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 333: YY_RULE_SETUP #line 558 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 341: YY_RULE_SETUP #line 566 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 342: YY_RULE_SETUP #line 567 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_NSID ) } YY_BREAK case 343: YY_RULE_SETUP #line 568 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDE ) } YY_BREAK case 344: -/* rule 344 can match eol */ YY_RULE_SETUP #line 569 "./util/configlexer.lex" +{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } + YY_BREAK +case 345: +/* rule 345 can match eol */ +YY_RULE_SETUP +#line 570 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 345: +case 346: YY_RULE_SETUP -#line 572 "./util/configlexer.lex" +#line 573 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 573 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 346: -YY_RULE_SETUP -#line 578 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 347: -/* rule 347 can match eol */ YY_RULE_SETUP #line 579 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 348: +/* rule 348 can match eol */ +YY_RULE_SETUP +#line 580 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 348: +case 349: YY_RULE_SETUP -#line 581 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5507,34 +5527,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 349: +case 350: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 594 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 350: -YY_RULE_SETUP -#line 599 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 351: -/* rule 351 can match eol */ YY_RULE_SETUP #line 600 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 352: +/* rule 352 can match eol */ +YY_RULE_SETUP +#line 601 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 352: +case 353: YY_RULE_SETUP -#line 602 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5547,38 +5567,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 353: +case 354: YY_RULE_SETUP -#line 614 "./util/configlexer.lex" +#line 615 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 616 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 354: -YY_RULE_SETUP -#line 620 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 355: -/* rule 355 can match eol */ YY_RULE_SETUP #line 621 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 356: +/* rule 356 can match eol */ YY_RULE_SETUP #line 622 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 357: YY_RULE_SETUP #line 623 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 358: +YY_RULE_SETUP +#line 624 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5586,27 +5606,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 628 "./util/configlexer.lex" +#line 629 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 358: -YY_RULE_SETUP -#line 632 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 359: -/* rule 359 can match eol */ YY_RULE_SETUP #line 633 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 360: +/* rule 360 can match eol */ +YY_RULE_SETUP +#line 634 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 360: +case 361: YY_RULE_SETUP -#line 635 "./util/configlexer.lex" +#line 636 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5616,7 +5636,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 641 "./util/configlexer.lex" +#line 642 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5631,39 +5651,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 361: +case 362: YY_RULE_SETUP -#line 655 "./util/configlexer.lex" +#line 656 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 658 "./util/configlexer.lex" +#line 659 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 362: -YY_RULE_SETUP -#line 662 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 363: -/* rule 363 can match eol */ YY_RULE_SETUP #line 663 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 364: +/* rule 364 can match eol */ YY_RULE_SETUP #line 664 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 365: YY_RULE_SETUP #line 665 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 366: +YY_RULE_SETUP +#line 666 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5672,29 +5692,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 671 "./util/configlexer.lex" +#line 672 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 366: -YY_RULE_SETUP -#line 675 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 367: -/* rule 367 can match eol */ YY_RULE_SETUP #line 676 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 368: +/* rule 368 can match eol */ +YY_RULE_SETUP +#line 677 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 368: +case 369: YY_RULE_SETUP -#line 680 "./util/configlexer.lex" +#line 681 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5703,33 +5723,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 369: +case 370: YY_RULE_SETUP -#line 688 "./util/configlexer.lex" +#line 689 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 370: +case 371: YY_RULE_SETUP -#line 692 "./util/configlexer.lex" +#line 693 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 371: +case 372: YY_RULE_SETUP -#line 696 "./util/configlexer.lex" +#line 697 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 372: +case 373: YY_RULE_SETUP -#line 700 "./util/configlexer.lex" +#line 701 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5730 "" +#line 5750 "" case YY_END_OF_BUFFER: { @@ -6024,7 +6044,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 >= 3683 ) + if ( yy_current_state >= 3702 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6052,11 +6072,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 >= 3683 ) + if ( yy_current_state >= 3702 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3682); + yy_is_jam = (yy_current_state == 3701); return yy_is_jam ? 0 : yy_current_state; } @@ -6695,6 +6715,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 700 "./util/configlexer.lex" +#line 701 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 4e4a96535..59ee8874a 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -316,6 +316,7 @@ harden-dnssec-stripped{COLON} { YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } harden-below-nxdomain{COLON} { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } harden-referral-path{COLON} { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } harden-algo-downgrade{COLON} { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +harden-unknown-additional{COLON} { YDVAR(1, VAR_HARDEN_UNKNOWN_ADDITIONAL) } use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } caps-whitelist{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } caps-exempt{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } diff --git a/util/configparser.c b/util/configparser.c index 9a20bfb67..e2f73e57a 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.8.2. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30802 +#define YYBISON 30706 /* Bison version string. */ -#define YYBISON_VERSION "3.8.2" +#define YYBISON_VERSION "3.7.6" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -462,368 +462,370 @@ enum yysymbol_kind_t YYSYMBOL_VAR_INTERFACE_TAG_DATA = 334, /* VAR_INTERFACE_TAG_DATA */ YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 335, /* VAR_PROXY_PROTOCOL_PORT */ YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 336, /* VAR_STATISTICS_INHIBIT_ZERO */ - YYSYMBOL_YYACCEPT = 337, /* $accept */ - YYSYMBOL_toplevelvars = 338, /* toplevelvars */ - YYSYMBOL_toplevelvar = 339, /* toplevelvar */ - YYSYMBOL_force_toplevel = 340, /* force_toplevel */ - YYSYMBOL_serverstart = 341, /* serverstart */ - YYSYMBOL_contents_server = 342, /* contents_server */ - YYSYMBOL_content_server = 343, /* content_server */ - YYSYMBOL_stubstart = 344, /* stubstart */ - YYSYMBOL_contents_stub = 345, /* contents_stub */ - YYSYMBOL_content_stub = 346, /* content_stub */ - YYSYMBOL_forwardstart = 347, /* forwardstart */ - YYSYMBOL_contents_forward = 348, /* contents_forward */ - YYSYMBOL_content_forward = 349, /* content_forward */ - YYSYMBOL_viewstart = 350, /* viewstart */ - YYSYMBOL_contents_view = 351, /* contents_view */ - YYSYMBOL_content_view = 352, /* content_view */ - YYSYMBOL_authstart = 353, /* authstart */ - YYSYMBOL_contents_auth = 354, /* contents_auth */ - YYSYMBOL_content_auth = 355, /* content_auth */ - YYSYMBOL_rpz_tag = 356, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 357, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 358, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 359, /* rpz_log */ - YYSYMBOL_rpz_log_name = 360, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 361, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 362, /* rpzstart */ - YYSYMBOL_contents_rpz = 363, /* contents_rpz */ - YYSYMBOL_content_rpz = 364, /* content_rpz */ - YYSYMBOL_server_num_threads = 365, /* server_num_threads */ - YYSYMBOL_server_verbosity = 366, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 367, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 368, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 369, /* server_extended_statistics */ - YYSYMBOL_server_statistics_inhibit_zero = 370, /* server_statistics_inhibit_zero */ - YYSYMBOL_server_shm_enable = 371, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 372, /* server_shm_key */ - YYSYMBOL_server_port = 373, /* server_port */ - YYSYMBOL_server_send_client_subnet = 374, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 375, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 376, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 377, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 378, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 379, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 380, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 381, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 382, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 383, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 384, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 385, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 386, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 387, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 388, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 389, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 390, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 391, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 392, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 393, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 394, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 395, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 396, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 397, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 398, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 399, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 400, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 401, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 402, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 403, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 404, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 405, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 406, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 407, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 408, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 409, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 410, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 411, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 412, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 413, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 414, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 415, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 416, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 417, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 418, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 419, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 420, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 421, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 422, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 423, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 424, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 425, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 426, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 427, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 428, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 429, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 430, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 431, /* server_log_queries */ - YYSYMBOL_server_log_replies = 432, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 433, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 434, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 435, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 436, /* server_chroot */ - YYSYMBOL_server_username = 437, /* server_username */ - YYSYMBOL_server_directory = 438, /* server_directory */ - YYSYMBOL_server_logfile = 439, /* server_logfile */ - YYSYMBOL_server_pidfile = 440, /* server_pidfile */ - YYSYMBOL_server_root_hints = 441, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 442, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 443, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 444, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 445, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 446, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 447, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 448, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 449, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 450, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 451, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 452, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 453, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 454, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 455, /* server_identity */ - YYSYMBOL_server_version = 456, /* server_version */ - YYSYMBOL_server_http_user_agent = 457, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 458, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 459, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 460, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 461, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 462, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 463, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 464, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 465, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 466, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 467, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 468, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 469, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 470, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 471, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 472, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 473, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 474, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 475, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 476, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 477, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 478, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 479, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 480, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 481, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 482, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 483, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 484, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 485, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 486, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 487, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 488, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 489, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 490, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 491, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 492, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 493, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 494, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 495, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 496, /* server_private_address */ - YYSYMBOL_server_private_domain = 497, /* server_private_domain */ - YYSYMBOL_server_prefetch = 498, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 499, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 500, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 501, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 502, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 503, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 504, /* server_access_control */ - YYSYMBOL_server_interface_action = 505, /* server_interface_action */ - YYSYMBOL_server_module_conf = 506, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 507, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 508, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 509, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 510, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 511, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 512, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 513, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 514, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 515, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 516, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 517, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 518, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 519, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 520, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 521, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 522, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 523, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 524, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 525, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 526, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 527, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 528, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 529, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 530, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 531, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 532, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 533, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 534, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 535, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 536, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 537, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 538, /* server_local_zone */ - YYSYMBOL_server_local_data = 539, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 540, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 541, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 542, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 543, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 544, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 545, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 546, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 547, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 548, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 549, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 550, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 551, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 552, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 553, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 554, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 555, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 556, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 557, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 558, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 559, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 560, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 561, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 562, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 563, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 564, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 565, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 566, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 567, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 568, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 569, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 570, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 571, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 572, /* server_outbound_msg_retry */ - YYSYMBOL_server_max_sent_count = 573, /* server_max_sent_count */ - YYSYMBOL_server_max_query_restarts = 574, /* server_max_query_restarts */ - YYSYMBOL_server_low_rtt = 575, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 576, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 577, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 578, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 579, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 580, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 581, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 582, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 583, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 584, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 585, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 586, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 587, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 588, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 589, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 590, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 591, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 592, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 593, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 594, /* stub_name */ - YYSYMBOL_stub_host = 595, /* stub_host */ - YYSYMBOL_stub_addr = 596, /* stub_addr */ - YYSYMBOL_stub_first = 597, /* stub_first */ - YYSYMBOL_stub_no_cache = 598, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 599, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 600, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 601, /* stub_prime */ - YYSYMBOL_forward_name = 602, /* forward_name */ - YYSYMBOL_forward_host = 603, /* forward_host */ - YYSYMBOL_forward_addr = 604, /* forward_addr */ - YYSYMBOL_forward_first = 605, /* forward_first */ - YYSYMBOL_forward_no_cache = 606, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 607, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 608, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 609, /* auth_name */ - YYSYMBOL_auth_zonefile = 610, /* auth_zonefile */ - YYSYMBOL_auth_master = 611, /* auth_master */ - YYSYMBOL_auth_url = 612, /* auth_url */ - YYSYMBOL_auth_allow_notify = 613, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 614, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 615, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 616, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 617, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 618, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 619, /* view_name */ - YYSYMBOL_view_local_zone = 620, /* view_local_zone */ - YYSYMBOL_view_response_ip = 621, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 622, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 623, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 624, /* view_local_data_ptr */ - YYSYMBOL_view_first = 625, /* view_first */ - YYSYMBOL_rcstart = 626, /* rcstart */ - YYSYMBOL_contents_rc = 627, /* contents_rc */ - YYSYMBOL_content_rc = 628, /* content_rc */ - YYSYMBOL_rc_control_enable = 629, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 630, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 631, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 632, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 633, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 634, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 635, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 636, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 637, /* dtstart */ - YYSYMBOL_contents_dt = 638, /* contents_dt */ - YYSYMBOL_content_dt = 639, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 640, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 641, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 642, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 643, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 644, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 645, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 646, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 647, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 648, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 649, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 650, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 651, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 652, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 653, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 654, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 655, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 656, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 657, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 658, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 659, /* pythonstart */ - YYSYMBOL_contents_py = 660, /* contents_py */ - YYSYMBOL_content_py = 661, /* content_py */ - YYSYMBOL_py_script = 662, /* py_script */ - YYSYMBOL_dynlibstart = 663, /* dynlibstart */ - YYSYMBOL_contents_dl = 664, /* contents_dl */ - YYSYMBOL_content_dl = 665, /* content_dl */ - YYSYMBOL_dl_file = 666, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 667, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 668, /* server_log_identity */ - YYSYMBOL_server_response_ip = 669, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 670, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 671, /* dnscstart */ - YYSYMBOL_contents_dnsc = 672, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 673, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 674, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 675, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 676, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 677, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 678, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 679, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 680, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 681, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 682, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 683, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 684, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 685, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 686, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 687, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 688, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 689, /* redis_server_host */ - YYSYMBOL_redis_server_port = 690, /* redis_server_port */ - YYSYMBOL_redis_timeout = 691, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 692, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 693, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 694, /* ipsetstart */ - YYSYMBOL_contents_ipset = 695, /* contents_ipset */ - YYSYMBOL_content_ipset = 696, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 697, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 698 /* ipset_name_v6 */ + YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 337, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ + YYSYMBOL_YYACCEPT = 338, /* $accept */ + YYSYMBOL_toplevelvars = 339, /* toplevelvars */ + YYSYMBOL_toplevelvar = 340, /* toplevelvar */ + YYSYMBOL_force_toplevel = 341, /* force_toplevel */ + YYSYMBOL_serverstart = 342, /* serverstart */ + YYSYMBOL_contents_server = 343, /* contents_server */ + YYSYMBOL_content_server = 344, /* content_server */ + YYSYMBOL_stubstart = 345, /* stubstart */ + YYSYMBOL_contents_stub = 346, /* contents_stub */ + YYSYMBOL_content_stub = 347, /* content_stub */ + YYSYMBOL_forwardstart = 348, /* forwardstart */ + YYSYMBOL_contents_forward = 349, /* contents_forward */ + YYSYMBOL_content_forward = 350, /* content_forward */ + YYSYMBOL_viewstart = 351, /* viewstart */ + YYSYMBOL_contents_view = 352, /* contents_view */ + YYSYMBOL_content_view = 353, /* content_view */ + YYSYMBOL_authstart = 354, /* authstart */ + YYSYMBOL_contents_auth = 355, /* contents_auth */ + YYSYMBOL_content_auth = 356, /* content_auth */ + YYSYMBOL_rpz_tag = 357, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 358, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 359, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 360, /* rpz_log */ + YYSYMBOL_rpz_log_name = 361, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 362, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 363, /* rpzstart */ + YYSYMBOL_contents_rpz = 364, /* contents_rpz */ + YYSYMBOL_content_rpz = 365, /* content_rpz */ + YYSYMBOL_server_num_threads = 366, /* server_num_threads */ + YYSYMBOL_server_verbosity = 367, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 368, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 369, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 370, /* server_extended_statistics */ + YYSYMBOL_server_statistics_inhibit_zero = 371, /* server_statistics_inhibit_zero */ + YYSYMBOL_server_shm_enable = 372, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 373, /* server_shm_key */ + YYSYMBOL_server_port = 374, /* server_port */ + YYSYMBOL_server_send_client_subnet = 375, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 376, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 377, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 378, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 379, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 380, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 381, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 382, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 383, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 384, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 385, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 386, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 387, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 388, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 389, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 390, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 391, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 392, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 393, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 394, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 395, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 396, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 397, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 398, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 399, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 400, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 401, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 402, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 403, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 404, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 405, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 406, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 407, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 408, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 409, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 410, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 411, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 412, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 413, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 414, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 415, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 416, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 417, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 418, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 419, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 420, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 421, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 422, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 423, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 424, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 425, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 426, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 427, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 428, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 429, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 430, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 431, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 432, /* server_log_queries */ + YYSYMBOL_server_log_replies = 433, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 434, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 435, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 436, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 437, /* server_chroot */ + YYSYMBOL_server_username = 438, /* server_username */ + YYSYMBOL_server_directory = 439, /* server_directory */ + YYSYMBOL_server_logfile = 440, /* server_logfile */ + YYSYMBOL_server_pidfile = 441, /* server_pidfile */ + YYSYMBOL_server_root_hints = 442, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 443, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 444, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 445, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 446, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 447, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 448, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 449, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 450, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 451, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 452, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 453, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 454, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 455, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 456, /* server_identity */ + YYSYMBOL_server_version = 457, /* server_version */ + YYSYMBOL_server_http_user_agent = 458, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 459, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 460, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 461, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 462, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 463, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 464, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 465, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 466, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 467, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 468, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 469, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 470, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 471, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 472, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 473, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 474, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 475, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 476, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 477, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 478, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 479, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 480, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 481, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 482, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 483, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 484, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 485, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 486, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 487, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 488, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 489, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 490, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 491, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 492, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 493, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 494, /* server_harden_algo_downgrade */ + YYSYMBOL_server_harden_unknown_additional = 495, /* server_harden_unknown_additional */ + YYSYMBOL_server_use_caps_for_id = 496, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 497, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 498, /* server_private_address */ + YYSYMBOL_server_private_domain = 499, /* server_private_domain */ + YYSYMBOL_server_prefetch = 500, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 501, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 502, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 503, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 504, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 505, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 506, /* server_access_control */ + YYSYMBOL_server_interface_action = 507, /* server_interface_action */ + YYSYMBOL_server_module_conf = 508, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 509, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 510, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 511, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 512, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 513, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 514, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 515, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 516, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 517, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 518, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 519, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 520, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 521, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 522, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 523, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 524, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 525, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 526, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 527, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 528, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 529, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 530, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 531, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 532, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 533, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 534, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 535, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 536, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 537, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 538, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 539, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 540, /* server_local_zone */ + YYSYMBOL_server_local_data = 541, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 542, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 543, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 544, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 545, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 546, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 547, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 548, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 549, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 550, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 551, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 552, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 553, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 554, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 555, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 556, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 557, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 558, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 559, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 560, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 561, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 562, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 563, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 564, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 565, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 566, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 567, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 568, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 569, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 570, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 571, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 572, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 573, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 574, /* server_outbound_msg_retry */ + YYSYMBOL_server_max_sent_count = 575, /* server_max_sent_count */ + YYSYMBOL_server_max_query_restarts = 576, /* server_max_query_restarts */ + YYSYMBOL_server_low_rtt = 577, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 578, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 579, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 580, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 581, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 582, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 583, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 584, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 585, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 586, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 587, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 588, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 589, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 590, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 591, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 592, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 593, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 594, /* server_ede */ + YYSYMBOL_server_proxy_protocol_port = 595, /* server_proxy_protocol_port */ + YYSYMBOL_stub_name = 596, /* stub_name */ + YYSYMBOL_stub_host = 597, /* stub_host */ + YYSYMBOL_stub_addr = 598, /* stub_addr */ + YYSYMBOL_stub_first = 599, /* stub_first */ + YYSYMBOL_stub_no_cache = 600, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 601, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 602, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 603, /* stub_prime */ + YYSYMBOL_forward_name = 604, /* forward_name */ + YYSYMBOL_forward_host = 605, /* forward_host */ + YYSYMBOL_forward_addr = 606, /* forward_addr */ + YYSYMBOL_forward_first = 607, /* forward_first */ + YYSYMBOL_forward_no_cache = 608, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 609, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 610, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 611, /* auth_name */ + YYSYMBOL_auth_zonefile = 612, /* auth_zonefile */ + YYSYMBOL_auth_master = 613, /* auth_master */ + YYSYMBOL_auth_url = 614, /* auth_url */ + YYSYMBOL_auth_allow_notify = 615, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 616, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 617, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 618, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 619, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 620, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 621, /* view_name */ + YYSYMBOL_view_local_zone = 622, /* view_local_zone */ + YYSYMBOL_view_response_ip = 623, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 624, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 625, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 626, /* view_local_data_ptr */ + YYSYMBOL_view_first = 627, /* view_first */ + YYSYMBOL_rcstart = 628, /* rcstart */ + YYSYMBOL_contents_rc = 629, /* contents_rc */ + YYSYMBOL_content_rc = 630, /* content_rc */ + YYSYMBOL_rc_control_enable = 631, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 632, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 633, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 634, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 635, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 636, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 637, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 638, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 639, /* dtstart */ + YYSYMBOL_contents_dt = 640, /* contents_dt */ + YYSYMBOL_content_dt = 641, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 642, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 643, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 644, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 645, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 646, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 647, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 648, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 649, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 650, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 651, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 652, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 653, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 654, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 655, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 656, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 657, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 658, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 659, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 660, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 661, /* pythonstart */ + YYSYMBOL_contents_py = 662, /* contents_py */ + YYSYMBOL_content_py = 663, /* content_py */ + YYSYMBOL_py_script = 664, /* py_script */ + YYSYMBOL_dynlibstart = 665, /* dynlibstart */ + YYSYMBOL_contents_dl = 666, /* contents_dl */ + YYSYMBOL_content_dl = 667, /* content_dl */ + YYSYMBOL_dl_file = 668, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 669, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 670, /* server_log_identity */ + YYSYMBOL_server_response_ip = 671, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 672, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 673, /* dnscstart */ + YYSYMBOL_contents_dnsc = 674, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 675, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 676, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 677, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 678, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 679, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 680, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 681, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 682, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 683, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 684, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 685, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 686, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 687, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 688, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 689, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 690, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 691, /* redis_server_host */ + YYSYMBOL_redis_server_port = 692, /* redis_server_port */ + YYSYMBOL_redis_timeout = 693, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 694, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 695, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 696, /* ipsetstart */ + YYSYMBOL_contents_ipset = 697, /* contents_ipset */ + YYSYMBOL_content_ipset = 698, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 699, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 700 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -981,18 +983,12 @@ typedef int yy_state_fast_t; # define YY_USE(E) /* empty */ #endif +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ -# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") -# else -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -1151,19 +1147,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 719 +#define YYLAST 722 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 337 +#define YYNTOKENS 338 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 362 +#define YYNNTS 363 /* YYNRULES -- Number of rules. */ -#define YYNRULES 701 +#define YYNRULES 703 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1049 +#define YYNSTATES 1052 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 591 +#define YYMAXUTOK 592 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1236,84 +1232,84 @@ static const yytype_int16 yytranslate[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336 + 335, 336, 337 }; #if YYDEBUG -/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 199, 199, 199, 200, 200, 201, 201, 202, 202, - 202, 203, 203, 204, 204, 205, 205, 206, 208, 215, - 221, 222, 223, 223, 223, 224, 224, 225, 225, 225, - 226, 226, 227, 227, 227, 228, 228, 229, 229, 229, - 230, 230, 230, 231, 231, 232, 232, 233, 233, 234, - 234, 235, 235, 236, 236, 237, 237, 238, 238, 239, - 239, 239, 240, 240, 241, 241, 241, 242, 242, 242, - 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, - 247, 248, 248, 249, 249, 250, 250, 250, 251, 251, - 252, 252, 253, 253, 254, 254, 254, 255, 255, 256, - 256, 257, 257, 258, 258, 259, 259, 260, 260, 261, - 261, 262, 262, 263, 263, 263, 264, 264, 264, 265, - 265, 265, 266, 266, 266, 266, 267, 268, 268, 268, - 269, 269, 269, 270, 270, 271, 271, 272, 272, 272, - 273, 273, 273, 274, 274, 275, 275, 275, 276, 276, - 276, 277, 277, 277, 278, 278, 279, 279, 280, 280, - 281, 282, 282, 283, 283, 284, 284, 285, 285, 286, - 286, 287, 287, 288, 288, 289, 289, 290, 290, 291, - 291, 292, 292, 293, 293, 293, 294, 294, 295, 295, - 296, 296, 297, 297, 297, 298, 298, 299, 300, 300, - 301, 301, 302, 303, 303, 304, 304, 305, 305, 305, - 306, 306, 307, 307, 307, 308, 308, 308, 309, 309, - 310, 311, 311, 312, 312, 313, 313, 314, 314, 315, - 315, 315, 316, 316, 316, 317, 317, 317, 318, 318, - 319, 319, 320, 320, 321, 321, 322, 322, 323, 323, - 324, 324, 325, 325, 326, 326, 328, 342, 343, 344, - 344, 344, 344, 344, 345, 345, 345, 347, 361, 362, - 363, 363, 363, 363, 364, 364, 364, 366, 382, 383, - 384, 384, 384, 384, 385, 385, 385, 387, 408, 409, - 410, 410, 410, 410, 411, 411, 411, 412, 412, 412, - 415, 434, 451, 459, 469, 476, 486, 505, 506, 507, - 507, 507, 507, 507, 508, 508, 508, 509, 509, 509, - 509, 511, 520, 529, 540, 549, 558, 567, 576, 587, - 596, 608, 622, 637, 648, 665, 682, 699, 716, 731, - 746, 759, 774, 783, 792, 801, 810, 819, 828, 835, - 844, 853, 862, 871, 880, 889, 898, 907, 920, 931, - 942, 953, 962, 975, 984, 993, 1002, 1009, 1016, 1025, - 1032, 1041, 1049, 1056, 1063, 1071, 1080, 1088, 1104, 1112, - 1120, 1128, 1136, 1144, 1153, 1162, 1176, 1185, 1194, 1203, - 1212, 1221, 1230, 1237, 1244, 1270, 1278, 1285, 1292, 1299, - 1306, 1314, 1322, 1330, 1337, 1348, 1359, 1366, 1375, 1384, - 1393, 1402, 1409, 1416, 1423, 1439, 1447, 1455, 1465, 1475, - 1485, 1499, 1507, 1520, 1531, 1539, 1552, 1561, 1570, 1579, - 1588, 1598, 1608, 1616, 1629, 1638, 1646, 1655, 1663, 1676, - 1685, 1694, 1704, 1711, 1721, 1731, 1741, 1751, 1761, 1771, - 1781, 1791, 1798, 1805, 1812, 1821, 1830, 1839, 1848, 1855, - 1865, 1873, 1882, 1889, 1907, 1920, 1933, 1946, 1955, 1964, - 1973, 1982, 1992, 2002, 2013, 2022, 2031, 2040, 2049, 2058, - 2067, 2076, 2085, 2098, 2111, 2120, 2127, 2136, 2145, 2154, - 2163, 2172, 2180, 2193, 2201, 2256, 2263, 2278, 2288, 2298, - 2305, 2312, 2319, 2328, 2336, 2350, 2371, 2392, 2404, 2416, - 2428, 2437, 2458, 2470, 2482, 2491, 2512, 2521, 2530, 2538, - 2546, 2559, 2572, 2587, 2602, 2611, 2620, 2630, 2640, 2649, - 2658, 2667, 2673, 2682, 2691, 2701, 2711, 2721, 2730, 2740, - 2749, 2762, 2775, 2787, 2801, 2813, 2827, 2836, 2847, 2856, - 2863, 2873, 2880, 2887, 2896, 2905, 2915, 2925, 2935, 2945, - 2952, 2959, 2968, 2977, 2987, 2997, 3007, 3014, 3021, 3028, - 3036, 3046, 3056, 3066, 3076, 3086, 3096, 3152, 3162, 3170, - 3178, 3193, 3202, 3208, 3209, 3210, 3210, 3210, 3211, 3211, - 3211, 3212, 3212, 3214, 3224, 3233, 3240, 3247, 3254, 3261, - 3268, 3275, 3281, 3282, 3283, 3283, 3283, 3284, 3284, 3284, - 3285, 3286, 3286, 3287, 3287, 3288, 3288, 3289, 3290, 3291, - 3292, 3293, 3294, 3296, 3305, 3315, 3322, 3329, 3338, 3345, - 3352, 3359, 3366, 3375, 3384, 3391, 3398, 3408, 3418, 3428, - 3438, 3448, 3458, 3464, 3465, 3466, 3468, 3474, 3480, 3481, - 3482, 3484, 3490, 3500, 3507, 3516, 3524, 3530, 3531, 3533, - 3533, 3533, 3534, 3534, 3535, 3536, 3537, 3538, 3539, 3541, - 3551, 3560, 3567, 3576, 3583, 3592, 3600, 3613, 3621, 3634, - 3640, 3641, 3642, 3642, 3643, 3643, 3643, 3644, 3646, 3658, - 3670, 3682, 3697, 3710, 3723, 3734, 3740, 3741, 3742, 3742, - 3744, 3759 + 0, 200, 200, 200, 201, 201, 202, 202, 203, 203, + 203, 204, 204, 205, 205, 206, 206, 207, 209, 216, + 222, 223, 224, 224, 224, 225, 225, 226, 226, 226, + 227, 227, 228, 228, 228, 229, 229, 230, 230, 230, + 231, 231, 231, 232, 232, 233, 233, 234, 234, 235, + 235, 236, 236, 237, 237, 238, 238, 239, 239, 240, + 240, 240, 241, 241, 242, 242, 242, 243, 243, 243, + 244, 244, 245, 245, 246, 246, 247, 247, 248, 248, + 248, 249, 249, 250, 250, 251, 251, 251, 252, 252, + 253, 253, 254, 254, 255, 255, 255, 256, 256, 257, + 257, 258, 258, 259, 259, 260, 260, 261, 261, 262, + 262, 263, 263, 264, 264, 264, 265, 265, 265, 266, + 266, 266, 267, 267, 267, 267, 268, 269, 269, 269, + 270, 270, 270, 271, 271, 272, 272, 273, 273, 273, + 274, 274, 274, 275, 275, 276, 276, 276, 277, 277, + 277, 278, 278, 278, 279, 279, 280, 280, 281, 281, + 282, 283, 283, 284, 284, 285, 285, 286, 286, 287, + 287, 288, 288, 289, 289, 290, 290, 291, 291, 292, + 292, 293, 293, 294, 294, 294, 295, 295, 296, 296, + 297, 297, 298, 298, 298, 299, 299, 300, 301, 301, + 302, 302, 303, 304, 304, 305, 305, 306, 306, 306, + 307, 307, 308, 308, 308, 309, 309, 309, 310, 310, + 311, 312, 312, 313, 313, 314, 314, 315, 315, 316, + 316, 316, 317, 317, 317, 318, 318, 318, 319, 319, + 320, 320, 321, 321, 322, 322, 323, 323, 324, 324, + 325, 325, 326, 326, 327, 327, 328, 330, 344, 345, + 346, 346, 346, 346, 346, 347, 347, 347, 349, 363, + 364, 365, 365, 365, 365, 366, 366, 366, 368, 384, + 385, 386, 386, 386, 386, 387, 387, 387, 389, 410, + 411, 412, 412, 412, 412, 413, 413, 413, 414, 414, + 414, 417, 436, 453, 461, 471, 478, 488, 507, 508, + 509, 509, 509, 509, 509, 510, 510, 510, 511, 511, + 511, 511, 513, 522, 531, 542, 551, 560, 569, 578, + 589, 598, 610, 624, 639, 650, 667, 684, 701, 718, + 733, 748, 761, 776, 785, 794, 803, 812, 821, 830, + 837, 846, 855, 864, 873, 882, 891, 900, 909, 922, + 933, 944, 955, 964, 977, 986, 995, 1004, 1011, 1018, + 1027, 1034, 1043, 1051, 1058, 1065, 1073, 1082, 1090, 1106, + 1114, 1122, 1130, 1138, 1146, 1155, 1164, 1178, 1187, 1196, + 1205, 1214, 1223, 1232, 1239, 1246, 1272, 1280, 1287, 1294, + 1301, 1308, 1316, 1324, 1332, 1339, 1350, 1361, 1368, 1377, + 1386, 1395, 1404, 1411, 1418, 1425, 1441, 1449, 1457, 1467, + 1477, 1487, 1501, 1509, 1522, 1533, 1541, 1554, 1563, 1572, + 1581, 1590, 1600, 1610, 1618, 1631, 1640, 1648, 1657, 1665, + 1678, 1687, 1696, 1706, 1713, 1723, 1733, 1743, 1753, 1763, + 1773, 1783, 1793, 1803, 1810, 1817, 1824, 1833, 1842, 1851, + 1860, 1867, 1877, 1885, 1894, 1901, 1919, 1932, 1945, 1958, + 1967, 1976, 1985, 1994, 2004, 2014, 2025, 2034, 2043, 2052, + 2061, 2070, 2079, 2088, 2097, 2110, 2123, 2132, 2139, 2148, + 2157, 2166, 2175, 2184, 2192, 2205, 2213, 2268, 2275, 2290, + 2300, 2310, 2317, 2324, 2331, 2340, 2348, 2362, 2383, 2404, + 2416, 2428, 2440, 2449, 2470, 2482, 2494, 2503, 2524, 2533, + 2542, 2550, 2558, 2571, 2584, 2599, 2614, 2623, 2632, 2642, + 2652, 2661, 2670, 2679, 2685, 2694, 2703, 2713, 2723, 2733, + 2742, 2752, 2761, 2774, 2787, 2799, 2813, 2825, 2839, 2848, + 2859, 2868, 2875, 2885, 2892, 2899, 2908, 2917, 2927, 2937, + 2947, 2957, 2964, 2971, 2980, 2989, 2999, 3009, 3019, 3026, + 3033, 3040, 3048, 3058, 3068, 3078, 3088, 3098, 3108, 3164, + 3174, 3182, 3190, 3205, 3214, 3220, 3221, 3222, 3222, 3222, + 3223, 3223, 3223, 3224, 3224, 3226, 3236, 3245, 3252, 3259, + 3266, 3273, 3280, 3287, 3293, 3294, 3295, 3295, 3295, 3296, + 3296, 3296, 3297, 3298, 3298, 3299, 3299, 3300, 3300, 3301, + 3302, 3303, 3304, 3305, 3306, 3308, 3317, 3327, 3334, 3341, + 3350, 3357, 3364, 3371, 3378, 3387, 3396, 3403, 3410, 3420, + 3430, 3440, 3450, 3460, 3470, 3476, 3477, 3478, 3480, 3486, + 3492, 3493, 3494, 3496, 3502, 3512, 3519, 3528, 3536, 3542, + 3543, 3545, 3545, 3545, 3546, 3546, 3547, 3548, 3549, 3550, + 3551, 3553, 3563, 3572, 3579, 3588, 3595, 3604, 3612, 3625, + 3633, 3646, 3652, 3653, 3654, 3654, 3655, 3655, 3655, 3656, + 3658, 3670, 3682, 3694, 3709, 3722, 3735, 3746, 3752, 3753, + 3754, 3754, 3756, 3771 }; #endif @@ -1456,11 +1452,12 @@ static const char *const yytname[] = "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION", "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG", "VAR_INTERFACE_TAG_ACTION", "VAR_INTERFACE_TAG_DATA", "VAR_PROXY_PROTOCOL_PORT", - "VAR_STATISTICS_INHIBIT_ZERO", "$accept", "toplevelvars", "toplevelvar", - "force_toplevel", "serverstart", "contents_server", "content_server", - "stubstart", "contents_stub", "content_stub", "forwardstart", - "contents_forward", "content_forward", "viewstart", "contents_view", - "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", + "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL", + "$accept", "toplevelvars", "toplevelvar", "force_toplevel", + "serverstart", "contents_server", "content_server", "stubstart", + "contents_stub", "content_stub", "forwardstart", "contents_forward", + "content_forward", "viewstart", "contents_view", "content_view", + "authstart", "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", "server_statistics_interval", @@ -1517,12 +1514,13 @@ static const char *const yytname[] = "server_harden_short_bufsize", "server_harden_large_queries", "server_harden_glue", "server_harden_dnssec_stripped", "server_harden_below_nxdomain", "server_harden_referral_path", - "server_harden_algo_downgrade", "server_use_caps_for_id", - "server_caps_whitelist", "server_private_address", - "server_private_domain", "server_prefetch", "server_prefetch_key", - "server_deny_any", "server_unwanted_reply_threshold", - "server_do_not_query_address", "server_do_not_query_localhost", - "server_access_control", "server_interface_action", "server_module_conf", + "server_harden_algo_downgrade", "server_harden_unknown_additional", + "server_use_caps_for_id", "server_caps_whitelist", + "server_private_address", "server_private_domain", "server_prefetch", + "server_prefetch_key", "server_deny_any", + "server_unwanted_reply_threshold", "server_do_not_query_address", + "server_do_not_query_localhost", "server_access_control", + "server_interface_action", "server_module_conf", "server_val_override_date", "server_val_sig_skew_min", "server_val_sig_skew_max", "server_val_max_restart", "server_cache_max_ttl", "server_cache_max_negative_ttl", @@ -1610,6 +1608,48 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif +#ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_int16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592 +}; +#endif + #define YYPACT_NINF (-286) #define yypact_value_is_default(Yyn) \ @@ -1620,38 +1660,38 @@ yysymbol_name (yysymbol_kind_t yysymbol) #define yytable_value_is_error(Yyn) \ 0 -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { -286, 252, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -13, 203, 220, 52, 84, 38, 238, 211, - -81, -285, -95, -193, -278, 29, 30, 31, 80, 81, - 91, 92, 120, 121, 132, 146, 147, 148, 149, 161, - 162, 163, 164, 165, 210, 212, 234, 235, 236, 237, - 239, 256, 257, 258, 259, 261, 262, 265, 266, 267, - 270, 273, 276, 286, 287, 290, 291, 292, 293, 295, - 296, 297, 302, 304, 318, 319, 320, 321, 322, 323, - 333, 334, 335, 337, 340, 341, 347, 349, 350, 351, - 353, 359, 365, 366, 367, 368, 369, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 494, 495, 496, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 510, 511, 512, 513, 514, 515, 516, 517, 519, 520, - 521, 522, 523, 524, 525, 526, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 552, - 553, 554, 556, 557, 558, 559, 560, 562, 563, -286, + -286, -286, -13, 229, 260, 52, 56, 40, 147, 253, + -81, -285, -95, -191, -278, 29, 30, 31, 73, 74, + 92, 119, 120, 121, 132, 146, 148, 149, 161, 162, + 163, 164, 165, 210, 212, 255, 256, 257, 258, 259, + 261, 262, 263, 265, 270, 273, 276, 286, 287, 290, + 291, 292, 293, 296, 297, 302, 315, 320, 321, 322, + 323, 324, 325, 327, 328, 331, 337, 339, 340, 341, + 343, 349, 350, 351, 352, 353, 354, 355, 358, 359, + 360, 361, 363, 364, 366, 367, 368, 369, 370, 373, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 393, 395, 396, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 412, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 517, 520, 521, + 522, 523, 524, 525, 526, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, + 543, 544, 545, 546, 547, 548, 550, 552, 553, 554, + 556, 557, 558, 559, 560, 562, 563, 564, 565, 566, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, @@ -1675,51 +1715,51 @@ static const yytype_int16 yypact[] = -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, 564, 565, 566, 567, 568, 569, - 570, 571, -286, -286, -286, -286, -286, -286, -286, -286, - -286, 572, 573, 574, 575, 576, 577, 578, -286, -286, - -286, -286, -286, -286, -286, -286, 579, 580, 581, 582, - 583, 584, 585, -286, -286, -286, -286, -286, -286, -286, - -286, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, 596, 597, 598, 599, 600, 601, -286, -286, + -286, -286, -286, -286, -286, -286, 567, 568, 569, 570, + 571, 572, 573, 574, -286, -286, -286, -286, -286, -286, + -286, -286, -286, 575, 576, 577, 578, 579, 580, 581, + -286, -286, -286, -286, -286, -286, -286, -286, 582, 583, + 584, 585, 586, 587, 588, -286, -286, -286, -286, -286, + -286, -286, -286, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, 599, 600, 601, 602, 603, 604, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, 602, 603, 604, 605, 606, 607, 608, 609, -286, - -286, -286, -286, -286, -286, -286, -286, -286, 610, 611, - 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, -286, -286, -286, + -286, -286, -286, 605, 606, 607, 608, 609, 610, 611, + 612, -286, -286, -286, -286, -286, -286, -286, -286, -286, + 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, + 623, 624, 625, 626, 627, 628, 629, 630, 631, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, 629, -286, -286, - 630, -286, -286, 631, 632, 633, 634, 635, 636, 637, - 638, 639, 640, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, 641, 642, 643, 644, 645, 646, - -286, -286, -286, -286, -286, -286, -286, 647, 648, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, 632, + -286, -286, 633, -286, -286, 634, 635, 636, 637, 638, + 639, 640, 641, 642, 643, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, 644, 645, 646, 647, + 648, 649, -286, -286, -286, -286, -286, -286, -286, 650, + 651, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, 652, 653, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, 649, 650, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, 654, 655, 656, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, 657, 658, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, 659, 660, 661, 662, 663, 664, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, 665, -286, -286, -286, -286, + -286, -286, -286, -286, -286, 666, -286, -286, -286, -286, + -286, 667, 668, 669, 670, 671, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 651, 652, 653, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, 654, - 655, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, 656, 657, 658, 659, 660, 661, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 662, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 663, -286, -286, -286, -286, -286, 664, - 665, 666, 667, 668, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, 669, -286, -286, 670, 671, -286, -286, -286, + -286, -286, -286, -286, -286, 672, -286, -286, 673, 674, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, @@ -1727,19 +1767,20 @@ static const yytype_int16 yypact[] = -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - 672, 673, 674, -286, -286, -286, -286, -286, -286, 675, - 676, -286, -286, -286, -286, -286, -286, -286, -286 + -286, -286, -286, 675, 676, 677, -286, -286, -286, -286, + -286, -286, 678, 679, -286, -286, -286, -286, -286, -286, + -286, -286 }; -/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 256, 267, 582, 642, 601, - 277, 656, 679, 287, 695, 306, 647, 3, 17, 21, - 258, 269, 279, 289, 308, 584, 603, 644, 649, 658, - 681, 697, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 257, 268, 584, 644, 603, + 278, 658, 681, 288, 697, 307, 649, 3, 17, 21, + 259, 270, 280, 290, 309, 586, 605, 646, 651, 660, + 683, 699, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1763,87 +1804,88 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 22, 23, 88, 91, 100, 255, 215, 216, 24, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 37, - 79, 25, 92, 93, 48, 72, 87, 252, 26, 27, - 30, 31, 28, 29, 32, 33, 34, 249, 250, 251, - 35, 36, 124, 227, 125, 127, 128, 129, 229, 234, - 230, 241, 242, 243, 244, 130, 131, 132, 133, 134, - 135, 136, 211, 89, 78, 104, 122, 123, 239, 236, - 126, 38, 39, 40, 41, 42, 80, 94, 95, 111, - 66, 76, 67, 219, 220, 105, 58, 59, 218, 62, - 60, 61, 63, 247, 115, 119, 140, 151, 183, 154, - 240, 116, 73, 43, 44, 45, 102, 141, 142, 143, - 144, 46, 47, 49, 50, 52, 53, 51, 148, 149, - 155, 54, 55, 56, 64, 83, 120, 97, 150, 90, - 179, 98, 99, 117, 118, 237, 103, 57, 81, 84, - 192, 65, 68, 106, 107, 108, 82, 180, 109, 69, - 70, 71, 228, 121, 202, 203, 204, 205, 206, 207, - 208, 209, 217, 110, 77, 248, 112, 113, 114, 181, - 74, 75, 96, 85, 86, 101, 137, 138, 238, 139, - 145, 146, 147, 184, 185, 187, 189, 190, 188, 191, - 194, 195, 196, 193, 212, 152, 153, 158, 159, 156, - 157, 160, 161, 163, 162, 165, 164, 166, 167, 168, - 231, 233, 232, 182, 197, 198, 199, 200, 201, 221, - 223, 222, 224, 225, 226, 245, 246, 253, 254, 186, - 210, 213, 214, 235, 0, 0, 0, 0, 0, 0, - 0, 0, 257, 259, 260, 261, 263, 264, 265, 266, - 262, 0, 0, 0, 0, 0, 0, 0, 268, 270, - 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, - 0, 0, 0, 278, 280, 281, 284, 285, 282, 286, - 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 290, 291, 292, 293, 297, 298, 299, 294, - 295, 296, 0, 0, 0, 0, 0, 0, 311, 315, - 316, 317, 318, 319, 307, 309, 310, 312, 313, 314, - 320, 0, 0, 0, 0, 0, 0, 0, 0, 583, - 585, 587, 586, 592, 588, 589, 590, 591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 602, 604, 606, - 605, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 621, 622, 0, 643, 645, - 0, 648, 650, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 657, 659, 660, 661, 663, 664, 662, - 665, 666, 667, 668, 0, 0, 0, 0, 0, 0, - 680, 682, 683, 684, 685, 686, 687, 0, 0, 696, - 698, 699, 322, 321, 329, 342, 340, 353, 349, 350, - 354, 351, 352, 355, 356, 357, 361, 362, 392, 393, - 394, 395, 396, 424, 425, 426, 432, 433, 345, 434, - 435, 438, 436, 437, 442, 443, 444, 458, 407, 408, - 411, 412, 445, 462, 401, 403, 463, 470, 471, 472, - 346, 423, 491, 492, 402, 485, 385, 341, 397, 459, - 467, 446, 0, 0, 495, 347, 323, 384, 450, 324, - 343, 344, 398, 399, 493, 448, 452, 453, 359, 358, - 325, 496, 427, 457, 386, 406, 464, 465, 466, 469, - 484, 400, 489, 487, 488, 415, 422, 454, 455, 416, - 417, 447, 474, 387, 388, 391, 363, 365, 360, 366, - 367, 368, 369, 376, 377, 378, 379, 380, 381, 382, - 497, 498, 500, 428, 429, 430, 431, 439, 440, 441, - 501, 502, 503, 0, 0, 0, 449, 418, 420, 652, - 516, 520, 518, 517, 521, 519, 528, 529, 530, 0, - 0, 524, 525, 526, 527, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 451, 468, 490, 534, 535, - 419, 504, 0, 0, 0, 0, 0, 0, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 653, 409, 410, - 413, 404, 473, 383, 327, 328, 405, 536, 537, 538, - 539, 540, 542, 541, 543, 544, 545, 364, 371, 531, - 533, 532, 370, 0, 390, 456, 499, 389, 421, 372, - 373, 375, 374, 0, 547, 414, 486, 348, 548, 0, - 0, 0, 0, 0, 549, 326, 550, 551, 552, 557, - 555, 556, 553, 554, 558, 559, 560, 561, 563, 564, - 562, 575, 0, 579, 580, 0, 0, 581, 565, 573, - 566, 567, 568, 572, 574, 569, 570, 571, 300, 301, - 302, 303, 304, 305, 593, 595, 594, 597, 598, 599, - 600, 596, 623, 625, 626, 627, 628, 629, 630, 631, - 632, 633, 624, 634, 635, 636, 637, 638, 639, 640, - 641, 646, 651, 669, 670, 671, 674, 672, 673, 675, - 676, 677, 678, 688, 689, 690, 691, 692, 693, 700, - 701, 460, 494, 515, 654, 655, 522, 523, 505, 506, - 0, 0, 0, 510, 694, 546, 461, 514, 511, 0, - 0, 576, 577, 578, 509, 507, 508, 512, 513 + 20, 22, 23, 88, 91, 100, 255, 215, 216, 24, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 37, 79, 25, 92, 93, 48, 72, 87, 252, 26, + 27, 30, 31, 28, 29, 32, 33, 34, 249, 250, + 251, 35, 36, 124, 227, 125, 127, 128, 129, 229, + 234, 230, 241, 242, 243, 244, 130, 131, 132, 133, + 134, 135, 136, 211, 89, 78, 104, 122, 123, 239, + 236, 126, 38, 39, 40, 41, 42, 80, 94, 95, + 111, 66, 76, 67, 219, 220, 105, 58, 59, 218, + 62, 60, 61, 63, 247, 115, 119, 140, 151, 183, + 154, 240, 116, 73, 43, 44, 45, 102, 141, 142, + 143, 144, 46, 47, 49, 50, 52, 53, 51, 148, + 149, 155, 54, 55, 56, 64, 83, 120, 97, 150, + 256, 90, 179, 98, 99, 117, 118, 237, 103, 57, + 81, 84, 192, 65, 68, 106, 107, 108, 82, 180, + 109, 69, 70, 71, 228, 121, 202, 203, 204, 205, + 206, 207, 208, 209, 217, 110, 77, 248, 112, 113, + 114, 181, 74, 75, 96, 85, 86, 101, 137, 138, + 238, 139, 145, 146, 147, 184, 185, 187, 189, 190, + 188, 191, 194, 195, 196, 193, 212, 152, 153, 158, + 159, 156, 157, 160, 161, 163, 162, 165, 164, 166, + 167, 168, 231, 233, 232, 182, 197, 198, 199, 200, + 201, 221, 223, 222, 224, 225, 226, 245, 246, 253, + 254, 186, 210, 213, 214, 235, 0, 0, 0, 0, + 0, 0, 0, 0, 258, 260, 261, 262, 264, 265, + 266, 267, 263, 0, 0, 0, 0, 0, 0, 0, + 269, 271, 272, 273, 274, 275, 276, 277, 0, 0, + 0, 0, 0, 0, 0, 279, 281, 282, 285, 286, + 283, 287, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 289, 291, 292, 293, 294, 298, 299, + 300, 295, 296, 297, 0, 0, 0, 0, 0, 0, + 312, 316, 317, 318, 319, 320, 308, 310, 311, 313, + 314, 315, 321, 0, 0, 0, 0, 0, 0, 0, + 0, 585, 587, 589, 588, 594, 590, 591, 592, 593, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 604, + 606, 608, 607, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 618, 619, 620, 621, 622, 623, 624, 0, + 645, 647, 0, 650, 652, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 659, 661, 662, 663, 665, + 666, 664, 667, 668, 669, 670, 0, 0, 0, 0, + 0, 0, 682, 684, 685, 686, 687, 688, 689, 0, + 0, 698, 700, 701, 323, 322, 330, 343, 341, 354, + 350, 351, 355, 352, 353, 356, 357, 358, 362, 363, + 393, 394, 395, 396, 397, 425, 426, 427, 433, 434, + 346, 435, 436, 439, 437, 438, 443, 444, 445, 460, + 408, 409, 412, 413, 446, 464, 402, 404, 465, 472, + 473, 474, 347, 424, 493, 494, 403, 487, 386, 342, + 398, 461, 469, 447, 0, 0, 497, 348, 324, 385, + 452, 325, 344, 345, 399, 400, 495, 449, 454, 455, + 360, 359, 326, 498, 428, 459, 387, 407, 466, 467, + 468, 471, 486, 401, 491, 489, 490, 416, 423, 456, + 457, 417, 418, 448, 476, 388, 389, 392, 364, 366, + 361, 367, 368, 369, 370, 377, 378, 379, 380, 381, + 382, 383, 499, 500, 502, 429, 430, 431, 432, 440, + 441, 442, 503, 504, 505, 0, 0, 0, 450, 419, + 421, 654, 518, 522, 520, 519, 523, 521, 530, 531, + 532, 0, 0, 526, 527, 528, 529, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 453, 470, 492, + 536, 537, 420, 506, 0, 0, 0, 0, 0, 0, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 655, + 410, 411, 414, 405, 475, 384, 328, 329, 406, 538, + 539, 540, 541, 542, 544, 543, 545, 546, 547, 365, + 372, 533, 535, 534, 371, 0, 391, 458, 501, 390, + 422, 373, 374, 376, 375, 0, 549, 415, 488, 349, + 550, 0, 0, 0, 0, 0, 551, 327, 451, 552, + 553, 554, 559, 557, 558, 555, 556, 560, 561, 562, + 563, 565, 566, 564, 577, 0, 581, 582, 0, 0, + 583, 567, 575, 568, 569, 570, 574, 576, 571, 572, + 573, 301, 302, 303, 304, 305, 306, 595, 597, 596, + 599, 600, 601, 602, 598, 625, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 626, 636, 637, 638, 639, + 640, 641, 642, 643, 648, 653, 671, 672, 673, 676, + 674, 675, 677, 678, 679, 680, 690, 691, 692, 693, + 694, 695, 702, 703, 462, 496, 517, 656, 657, 524, + 525, 507, 508, 0, 0, 0, 512, 696, 548, 463, + 516, 513, 0, 0, 578, 579, 580, 511, 509, 510, + 514, 515 }; -/* YYPGOTO[NTERM-NUM]. */ + /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, @@ -1873,7 +1915,8 @@ static const yytype_int16 yypgoto[] = -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, 677, 678, 679, 680, 681, -286, -286, 682, + -286, -286, -286, 680, 681, 682, 683, 684, -286, -286, + 685, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, @@ -1881,113 +1924,112 @@ static const yytype_int16 yypgoto[] = -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286 + -286, -286, -286 }; -/* YYDEFGOTO[NTERM-NUM]. */ + /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 279, 20, 33, 522, - 21, 34, 538, 22, 35, 553, 23, 36, 571, 588, - 589, 590, 591, 592, 593, 24, 37, 594, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 523, 524, 525, - 526, 527, 528, 529, 530, 539, 540, 541, 542, 543, - 544, 545, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 554, 555, 556, 557, 558, 559, 560, 25, - 38, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 26, 39, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 27, 40, 658, 659, 28, 41, 661, 662, - 509, 510, 511, 512, 29, 42, 673, 674, 675, 676, - 677, 678, 679, 680, 681, 682, 683, 30, 43, 690, - 691, 692, 693, 694, 695, 696, 513, 31, 44, 699, - 700, 701 + 0, 1, 17, 18, 19, 32, 280, 20, 33, 524, + 21, 34, 540, 22, 35, 555, 23, 36, 573, 590, + 591, 592, 593, 594, 595, 24, 37, 596, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, + 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, + 503, 504, 505, 506, 507, 508, 509, 510, 525, 526, + 527, 528, 529, 530, 531, 532, 541, 542, 543, 544, + 545, 546, 547, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 556, 557, 558, 559, 560, 561, 562, + 25, 38, 611, 612, 613, 614, 615, 616, 617, 618, + 619, 26, 39, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 27, 40, 660, 661, 28, 41, 663, + 664, 511, 512, 513, 514, 29, 42, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 30, 43, + 692, 693, 694, 695, 696, 697, 698, 515, 31, 44, + 701, 702, 703 }; -/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 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, 697, 698, 657, 660, 77, 78, 79, 702, - 703, 704, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 699, 700, 659, 662, 77, 78, 79, 704, + 705, 706, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 561, 684, 685, 686, 687, 688, 689, - 705, 706, 121, 122, 123, 124, 125, 546, 126, 127, - 128, 707, 708, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 707, 708, 563, 686, 687, 688, 689, + 690, 691, 121, 122, 123, 124, 125, 548, 126, 127, + 128, 563, 709, 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, 561, - 709, 710, 155, 547, 548, 156, 157, 158, 159, 160, - 161, 162, 711, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 712, 713, 714, 715, - 549, 663, 664, 665, 666, 667, 668, 669, 670, 671, - 672, 716, 717, 718, 719, 720, 176, 177, 178, 179, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 710, + 711, 712, 155, 549, 550, 156, 157, 158, 159, 160, + 161, 162, 713, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 714, 0, 715, 716, + 551, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 717, 718, 719, 720, 721, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 721, 220, 722, 221, 222, 223, 224, 225, 226, 227, + 722, 220, 723, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 550, 551, 723, 724, 725, 726, 514, 727, - 515, 516, 2, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 3, 4, 531, 728, 729, 730, 731, - 250, 732, 733, 532, 533, 734, 735, 736, 251, 252, - 737, 253, 254, 738, 255, 256, 739, 552, 257, 258, - 259, 260, 261, 262, 263, 264, 740, 741, 5, 265, - 742, 743, 744, 745, 6, 746, 747, 748, 266, 267, - 268, 269, 749, 517, 750, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 563, 564, 565, 566, 751, 752, - 753, 754, 755, 756, 568, 601, 602, 603, 604, 605, - 606, 607, 608, 757, 758, 759, 518, 760, 7, 519, - 761, 762, 582, 583, 584, 585, 586, 763, 520, 764, - 765, 766, 534, 767, 535, 587, 8, 536, 562, 768, - 563, 564, 565, 566, 567, 769, 770, 771, 772, 773, - 568, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, - 774, 775, 776, 777, 778, 779, 780, 781, 782, 569, - 570, 783, 784, 785, 786, 787, 788, 789, 790, 791, - 792, 9, 793, 794, 795, 796, 797, 798, 799, 800, + 238, 239, 552, 553, 603, 604, 605, 606, 607, 608, + 609, 610, 2, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 3, 4, 724, 725, 726, 727, 728, + 250, 729, 730, 731, 516, 732, 517, 518, 251, 252, + 733, 253, 254, 734, 255, 256, 735, 554, 257, 258, + 259, 260, 261, 262, 263, 264, 736, 737, 5, 265, + 738, 739, 740, 741, 6, 533, 742, 743, 266, 267, + 268, 269, 744, 534, 535, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 745, 565, 566, 567, 568, + 746, 747, 748, 749, 750, 751, 570, 752, 753, 519, + 564, 754, 565, 566, 567, 568, 569, 755, 7, 756, + 757, 758, 570, 759, 584, 585, 586, 587, 588, 760, + 761, 762, 763, 764, 765, 766, 8, 589, 767, 768, + 769, 770, 520, 771, 772, 521, 773, 774, 775, 776, + 777, 571, 572, 778, 522, 779, 780, 781, 782, 783, + 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, + 794, 795, 536, 796, 537, 797, 798, 538, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, + 811, 9, 812, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 10, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, - 870, 871, 872, 521, 873, 874, 875, 11, 876, 877, - 878, 879, 880, 881, 882, 883, 884, 885, 886, 537, - 887, 888, 889, 890, 891, 892, 893, 894, 12, 895, - 896, 897, 898, 899, 900, 901, 902, 13, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 870, 871, 872, 873, 874, 875, 876, 11, 877, 878, + 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, + 889, 890, 891, 892, 893, 894, 895, 896, 12, 523, + 897, 898, 899, 900, 901, 902, 903, 13, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, + 916, 917, 918, 919, 920, 921, 922, 923, 924, 539, 925, 14, 926, 927, 928, 15, 929, 930, 931, 932, 933, 16, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, @@ -2000,10 +2042,11 @@ static const yytype_int16 yytable[] = 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 0, 0, 0, + 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 595, 596, 597, 598, 599, 600 + 0, 0, 0, 0, 0, 0, 0, 597, 598, 599, + 600, 601, 602 }; static const yytype_int16 yycheck[] = @@ -2016,14 +2059,14 @@ static const yytype_int16 yycheck[] = 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 45, 277, 278, 279, 280, 281, 282, - 10, 10, 105, 106, 107, 108, 109, 45, 111, 112, - 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, + 93, 94, 95, 10, 10, 45, 277, 278, 279, 280, + 281, 282, 105, 106, 107, 108, 109, 45, 111, 112, + 113, 45, 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 45, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 10, 10, 10, 145, 81, 82, 148, 149, 150, 151, 152, 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 10, 10, 10, 10, + 163, 164, 165, 166, 167, 168, 10, -1, 10, 10, 108, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 10, 10, 10, 10, 10, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, @@ -2032,38 +2075,38 @@ static const yytype_int16 yycheck[] = 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 10, 234, 10, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 190, 191, 10, 10, 10, 10, 45, 10, - 47, 48, 0, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 11, 12, 45, 10, 10, 10, 10, - 283, 10, 10, 53, 54, 10, 10, 10, 291, 292, + 253, 254, 190, 191, 97, 98, 99, 100, 101, 102, + 103, 104, 0, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 11, 12, 10, 10, 10, 10, 10, + 283, 10, 10, 10, 45, 10, 47, 48, 291, 292, 10, 294, 295, 10, 297, 298, 10, 235, 301, 302, 303, 304, 305, 306, 307, 308, 10, 10, 46, 312, - 10, 10, 10, 10, 52, 10, 10, 10, 321, 322, - 323, 324, 10, 110, 10, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 286, 287, 288, 289, 10, 10, - 10, 10, 10, 10, 296, 97, 98, 99, 100, 101, - 102, 103, 104, 10, 10, 10, 143, 10, 96, 146, - 10, 10, 314, 315, 316, 317, 318, 10, 155, 10, - 10, 10, 142, 10, 144, 327, 114, 147, 284, 10, - 286, 287, 288, 289, 290, 10, 10, 10, 10, 10, - 296, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 325, - 326, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 169, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 52, 45, 10, 10, 321, 322, + 323, 324, 10, 53, 54, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 10, 286, 287, 288, 289, + 10, 10, 10, 10, 10, 10, 296, 10, 10, 110, + 284, 10, 286, 287, 288, 289, 290, 10, 96, 10, + 10, 10, 296, 10, 314, 315, 316, 317, 318, 10, + 10, 10, 10, 10, 10, 10, 114, 327, 10, 10, + 10, 10, 143, 10, 10, 146, 10, 10, 10, 10, + 10, 325, 326, 10, 155, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 142, 10, 144, 10, 10, 147, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 169, 10, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 233, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 300, 10, 10, 10, 255, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 299, - 10, 10, 10, 10, 10, 10, 10, 10, 276, 10, + 10, 10, 10, 10, 10, 10, 10, 255, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 276, 300, 10, 10, 10, 10, 10, 10, 10, 285, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 299, 10, 309, 10, 10, 10, 313, 10, 10, 10, 10, 10, 319, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2076,21 +2119,22 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 37, 37, 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, 37, 37, 37, + 37, 37, 37 }; -/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of - state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 338, 0, 11, 12, 46, 52, 96, 114, 169, - 233, 255, 276, 285, 309, 313, 319, 339, 340, 341, - 344, 347, 350, 353, 362, 626, 637, 659, 663, 671, - 684, 694, 342, 345, 348, 351, 354, 363, 627, 638, - 660, 664, 672, 685, 695, 13, 14, 15, 16, 17, + 0, 339, 0, 11, 12, 46, 52, 96, 114, 169, + 233, 255, 276, 285, 309, 313, 319, 340, 341, 342, + 345, 348, 351, 354, 363, 628, 639, 661, 665, 673, + 686, 696, 343, 346, 349, 352, 355, 364, 629, 640, + 662, 666, 674, 687, 697, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2113,8 +2157,8 @@ static const yytype_int16 yystos[] = 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 283, 291, 292, 294, 295, 297, 298, 301, 302, 303, 304, 305, 306, 307, 308, 312, 321, 322, 323, 324, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 343, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 344, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, @@ -2136,27 +2180,27 @@ static const yytype_int16 yystos[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 667, - 668, 669, 670, 693, 45, 47, 48, 110, 143, 146, - 155, 300, 346, 594, 595, 596, 597, 598, 599, 600, - 601, 45, 53, 54, 142, 144, 147, 299, 349, 602, - 603, 604, 605, 606, 607, 608, 45, 81, 82, 108, - 190, 191, 235, 352, 619, 620, 621, 622, 623, 624, - 625, 45, 284, 286, 287, 288, 289, 290, 296, 325, - 326, 355, 609, 610, 611, 612, 613, 614, 615, 616, - 617, 618, 314, 315, 316, 317, 318, 327, 356, 357, - 358, 359, 360, 361, 364, 609, 610, 611, 612, 613, - 616, 97, 98, 99, 100, 101, 102, 103, 104, 628, - 629, 630, 631, 632, 633, 634, 635, 636, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 639, 640, 641, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 669, 670, 671, 672, 695, 45, 47, 48, 110, + 143, 146, 155, 300, 347, 596, 597, 598, 599, 600, + 601, 602, 603, 45, 53, 54, 142, 144, 147, 299, + 350, 604, 605, 606, 607, 608, 609, 610, 45, 81, + 82, 108, 190, 191, 235, 353, 621, 622, 623, 624, + 625, 626, 627, 45, 284, 286, 287, 288, 289, 290, + 296, 325, 326, 356, 611, 612, 613, 614, 615, 616, + 617, 618, 619, 620, 314, 315, 316, 317, 318, 327, + 357, 358, 359, 360, 361, 362, 365, 611, 612, 613, + 614, 615, 618, 97, 98, 99, 100, 101, 102, 103, + 104, 630, 631, 632, 633, 634, 635, 636, 637, 638, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 115, 661, 662, - 320, 665, 666, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 277, 278, 279, 280, 281, 282, - 686, 687, 688, 689, 690, 691, 692, 310, 311, 696, - 697, 698, 10, 10, 10, 10, 10, 10, 10, 10, + 652, 653, 654, 655, 656, 657, 658, 659, 660, 115, + 663, 664, 320, 667, 668, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 277, 278, 279, 280, + 281, 282, 688, 689, 690, 691, 692, 693, 694, 310, + 311, 698, 699, 700, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2190,45 +2234,46 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10 }; -/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 337, 338, 338, 339, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 339, 339, 339, 340, 341, - 342, 342, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 344, 345, 345, 346, - 346, 346, 346, 346, 346, 346, 346, 347, 348, 348, - 349, 349, 349, 349, 349, 349, 349, 350, 351, 351, - 352, 352, 352, 352, 352, 352, 352, 353, 354, 354, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 363, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 0, 338, 339, 339, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 341, 342, + 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 345, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 348, 349, + 349, 350, 350, 350, 350, 350, 350, 350, 351, 352, + 352, 353, 353, 353, 353, 353, 353, 353, 354, 355, + 355, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 364, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, @@ -2254,22 +2299,22 @@ static const yytype_int16 yyr1[] = 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 627, 628, 628, 628, 628, 628, - 628, 628, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 638, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, 639, 640, 641, 642, 643, 644, 645, 646, + 624, 625, 626, 627, 628, 629, 629, 630, 630, 630, + 630, 630, 630, 630, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 640, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 660, 661, 662, 663, 664, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 672, 673, - 673, 673, 673, 673, 673, 673, 673, 673, 673, 674, + 657, 658, 659, 660, 661, 662, 662, 663, 664, 665, + 666, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 674, 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, - 685, 685, 686, 686, 686, 686, 686, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 695, 696, 696, - 697, 698 + 685, 686, 687, 687, 688, 688, 688, 688, 688, 688, + 689, 690, 691, 692, 693, 694, 695, 696, 697, 697, + 698, 698, 699, 700 }; -/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, @@ -2297,14 +2342,14 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 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, @@ -2318,31 +2363,31 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, - 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, + 4, 4, 3, 3, 4, 4, 3, 3, 2, 2, + 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 3, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 2, 1, 2, 0, - 1, 2, 2, 2, 3, 3, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 3, 1, 2, 0, 1, 1, - 2, 2 + 2, 2, 2, 2, 1, 2, 0, 1, 2, 1, + 2, 0, 1, 2, 2, 2, 3, 3, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 3, 1, 2, 0, + 1, 1, 2, 2 }; @@ -2354,7 +2399,6 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab -#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -2395,7 +2439,10 @@ do { \ YYFPRINTF Args; \ } while (0) - +/* This macro is provided for backward compatibility. */ +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -2422,6 +2469,10 @@ yy_symbol_value_print (FILE *yyo, YY_USE (yyoutput); if (!yyvaluep) return; +# ifdef YYPRINT + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); +# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END @@ -2606,7 +2657,6 @@ yyparse (void) YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; @@ -2632,7 +2682,7 @@ yysetstate: if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - YYNOMEM; + goto yyexhaustedlab; #else { /* Get the current used size of the three stacks, in elements. */ @@ -2660,7 +2710,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - YYNOMEM; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -2671,7 +2721,7 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - YYNOMEM; + goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE @@ -2693,7 +2743,6 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - if (yystate == YYFINAL) YYACCEPT; @@ -2806,25 +2855,25 @@ yyreduce: switch (yyn) { case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ -#line 209 "./util/configparser.y" +#line 210 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2815 "util/configparser.c" +#line 2864 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ -#line 216 "./util/configparser.y" +#line 217 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2824 "util/configparser.c" +#line 2873 "util/configparser.c" break; - case 256: /* stubstart: VAR_STUB_ZONE */ -#line 329 "./util/configparser.y" + case 257: /* stubstart: VAR_STUB_ZONE */ +#line 331 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2837,11 +2886,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2841 "util/configparser.c" +#line 2890 "util/configparser.c" break; - case 267: /* forwardstart: VAR_FORWARD_ZONE */ -#line 348 "./util/configparser.y" + case 268: /* forwardstart: VAR_FORWARD_ZONE */ +#line 350 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2854,11 +2903,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2858 "util/configparser.c" +#line 2907 "util/configparser.c" break; - case 277: /* viewstart: VAR_VIEW */ -#line 367 "./util/configparser.y" + case 278: /* viewstart: VAR_VIEW */ +#line 369 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2873,11 +2922,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2877 "util/configparser.c" +#line 2926 "util/configparser.c" break; - case 287: /* authstart: VAR_AUTH_ZONE */ -#line 388 "./util/configparser.y" + case 288: /* authstart: VAR_AUTH_ZONE */ +#line 390 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2897,11 +2946,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2901 "util/configparser.c" +#line 2950 "util/configparser.c" break; - case 300: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 416 "./util/configparser.y" + case 301: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 418 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2918,11 +2967,11 @@ yyreduce: } } -#line 2922 "util/configparser.c" +#line 2971 "util/configparser.c" break; - case 301: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 435 "./util/configparser.y" + case 302: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 437 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2937,21 +2986,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2941 "util/configparser.c" +#line 2990 "util/configparser.c" break; - case 302: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 452 "./util/configparser.y" + case 303: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 454 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2951 "util/configparser.c" +#line 3000 "util/configparser.c" break; - case 303: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 460 "./util/configparser.y" + case 304: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 462 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2959,21 +3008,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2963 "util/configparser.c" +#line 3012 "util/configparser.c" break; - case 304: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 470 "./util/configparser.y" + case 305: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 472 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2973 "util/configparser.c" +#line 3022 "util/configparser.c" break; - case 305: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ -#line 477 "./util/configparser.y" + case 306: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ +#line 479 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2981,11 +3030,11 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2985 "util/configparser.c" +#line 3034 "util/configparser.c" break; - case 306: /* rpzstart: VAR_RPZ */ -#line 487 "./util/configparser.y" + case 307: /* rpzstart: VAR_RPZ */ +#line 489 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3003,11 +3052,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3007 "util/configparser.c" +#line 3056 "util/configparser.c" break; - case 321: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 512 "./util/configparser.y" + case 322: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 514 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3015,11 +3064,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3019 "util/configparser.c" +#line 3068 "util/configparser.c" break; - case 322: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 521 "./util/configparser.y" + case 323: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 523 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3027,11 +3076,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3031 "util/configparser.c" +#line 3080 "util/configparser.c" break; - case 323: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 530 "./util/configparser.y" + case 324: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 532 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3041,11 +3090,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3045 "util/configparser.c" +#line 3094 "util/configparser.c" break; - case 324: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 541 "./util/configparser.y" + case 325: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 543 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3053,11 +3102,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3057 "util/configparser.c" +#line 3106 "util/configparser.c" break; - case 325: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 550 "./util/configparser.y" + case 326: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 552 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3065,11 +3114,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3069 "util/configparser.c" +#line 3118 "util/configparser.c" break; - case 326: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ -#line 559 "./util/configparser.y" + case 327: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ +#line 561 "./util/configparser.y" { OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3077,11 +3126,11 @@ yyreduce: else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3081 "util/configparser.c" +#line 3130 "util/configparser.c" break; - case 327: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 568 "./util/configparser.y" + case 328: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 570 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3089,11 +3138,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3093 "util/configparser.c" +#line 3142 "util/configparser.c" break; - case 328: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 577 "./util/configparser.y" + case 329: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 579 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3103,11 +3152,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3156 "util/configparser.c" break; - case 329: /* server_port: VAR_PORT STRING_ARG */ -#line 588 "./util/configparser.y" + case 330: /* server_port: VAR_PORT STRING_ARG */ +#line 590 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3115,11 +3164,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3119 "util/configparser.c" +#line 3168 "util/configparser.c" break; - case 330: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 597 "./util/configparser.y" + case 331: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 599 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3130,11 +3179,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3134 "util/configparser.c" +#line 3183 "util/configparser.c" break; - case 331: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 609 "./util/configparser.y" + case 332: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 611 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3146,11 +3195,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3150 "util/configparser.c" +#line 3199 "util/configparser.c" break; - case 332: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 623 "./util/configparser.y" + case 333: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 625 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3164,11 +3213,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3168 "util/configparser.c" +#line 3217 "util/configparser.c" break; - case 333: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 638 "./util/configparser.y" + case 334: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 640 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3178,11 +3227,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3182 "util/configparser.c" +#line 3231 "util/configparser.c" break; - case 334: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 649 "./util/configparser.y" + case 335: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 651 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3198,11 +3247,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3251 "util/configparser.c" break; - case 335: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 666 "./util/configparser.y" + case 336: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 668 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3218,11 +3267,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3222 "util/configparser.c" +#line 3271 "util/configparser.c" break; - case 336: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 683 "./util/configparser.y" + case 337: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 685 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3238,11 +3287,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3242 "util/configparser.c" +#line 3291 "util/configparser.c" break; - case 337: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 700 "./util/configparser.y" + case 338: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 702 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3258,11 +3307,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3262 "util/configparser.c" +#line 3311 "util/configparser.c" break; - case 338: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 717 "./util/configparser.y" + case 339: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 719 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3276,11 +3325,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3280 "util/configparser.c" +#line 3329 "util/configparser.c" break; - case 339: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 732 "./util/configparser.y" + case 340: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 734 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3294,11 +3343,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3298 "util/configparser.c" +#line 3347 "util/configparser.c" break; - case 340: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 747 "./util/configparser.y" + case 341: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 749 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3310,11 +3359,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3314 "util/configparser.c" +#line 3363 "util/configparser.c" break; - case 341: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 760 "./util/configparser.y" + case 342: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 762 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3328,11 +3377,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3332 "util/configparser.c" +#line 3381 "util/configparser.c" break; - case 342: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 775 "./util/configparser.y" + case 343: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 777 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3340,11 +3389,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3344 "util/configparser.c" +#line 3393 "util/configparser.c" break; - case 343: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 784 "./util/configparser.y" + case 344: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 786 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3352,11 +3401,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3356 "util/configparser.c" +#line 3405 "util/configparser.c" break; - case 344: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 793 "./util/configparser.y" + case 345: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 795 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3364,11 +3413,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3368 "util/configparser.c" +#line 3417 "util/configparser.c" break; - case 345: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 802 "./util/configparser.y" + case 346: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 804 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3376,11 +3425,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3380 "util/configparser.c" +#line 3429 "util/configparser.c" break; - case 346: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 811 "./util/configparser.y" + case 347: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 813 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3388,11 +3437,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3392 "util/configparser.c" +#line 3441 "util/configparser.c" break; - case 347: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 820 "./util/configparser.y" + case 348: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 822 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3400,21 +3449,21 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3404 "util/configparser.c" +#line 3453 "util/configparser.c" break; - case 348: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ -#line 829 "./util/configparser.y" + case 349: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ +#line 831 "./util/configparser.y" { OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3414 "util/configparser.c" +#line 3463 "util/configparser.c" break; - case 349: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 836 "./util/configparser.y" + case 350: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 838 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3422,11 +3471,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3475 "util/configparser.c" break; - case 350: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 845 "./util/configparser.y" + case 351: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 847 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3434,11 +3483,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3487 "util/configparser.c" break; - case 351: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 854 "./util/configparser.y" + case 352: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 856 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3446,11 +3495,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3450 "util/configparser.c" +#line 3499 "util/configparser.c" break; - case 352: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 863 "./util/configparser.y" + case 353: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 865 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3458,11 +3507,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3462 "util/configparser.c" +#line 3511 "util/configparser.c" break; - case 353: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 872 "./util/configparser.y" + case 354: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 874 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3470,11 +3519,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3474 "util/configparser.c" +#line 3523 "util/configparser.c" break; - case 354: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 881 "./util/configparser.y" + case 355: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 883 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3482,11 +3531,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3486 "util/configparser.c" +#line 3535 "util/configparser.c" break; - case 355: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 890 "./util/configparser.y" + case 356: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 892 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3494,11 +3543,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3498 "util/configparser.c" +#line 3547 "util/configparser.c" break; - case 356: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 899 "./util/configparser.y" + case 357: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 901 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3506,11 +3555,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3510 "util/configparser.c" +#line 3559 "util/configparser.c" break; - case 357: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 908 "./util/configparser.y" + case 358: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 910 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3522,11 +3571,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3526 "util/configparser.c" +#line 3575 "util/configparser.c" break; - case 358: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 921 "./util/configparser.y" + case 359: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 923 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3536,11 +3585,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3540 "util/configparser.c" +#line 3589 "util/configparser.c" break; - case 359: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 932 "./util/configparser.y" + case 360: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 934 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3550,11 +3599,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3554 "util/configparser.c" +#line 3603 "util/configparser.c" break; - case 360: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 943 "./util/configparser.y" + case 361: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 945 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3564,11 +3613,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3568 "util/configparser.c" +#line 3617 "util/configparser.c" break; - case 361: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 954 "./util/configparser.y" + case 362: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 956 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3576,11 +3625,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3580 "util/configparser.c" +#line 3629 "util/configparser.c" break; - case 362: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 963 "./util/configparser.y" + case 363: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 965 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3592,11 +3641,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3596 "util/configparser.c" +#line 3645 "util/configparser.c" break; - case 363: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 976 "./util/configparser.y" + case 364: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 978 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3604,11 +3653,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3608 "util/configparser.c" +#line 3657 "util/configparser.c" break; - case 364: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 985 "./util/configparser.y" + case 365: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 987 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3616,11 +3665,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3620 "util/configparser.c" +#line 3669 "util/configparser.c" break; - case 365: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 994 "./util/configparser.y" + case 366: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 996 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3628,31 +3677,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3632 "util/configparser.c" +#line 3681 "util/configparser.c" break; - case 366: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 1003 "./util/configparser.y" + case 367: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 1005 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3642 "util/configparser.c" +#line 3691 "util/configparser.c" break; - case 367: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 1010 "./util/configparser.y" + case 368: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 1012 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3652 "util/configparser.c" +#line 3701 "util/configparser.c" break; - case 368: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 1017 "./util/configparser.y" + case 369: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 1019 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3660,21 +3709,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3664 "util/configparser.c" +#line 3713 "util/configparser.c" break; - case 369: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 1026 "./util/configparser.y" + case 370: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 1028 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3674 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 370: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1033 "./util/configparser.y" + case 371: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 1035 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3682,53 +3731,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3686 "util/configparser.c" +#line 3735 "util/configparser.c" break; - case 371: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1042 "./util/configparser.y" + case 372: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 1044 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3697 "util/configparser.c" +#line 3746 "util/configparser.c" break; - case 372: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1050 "./util/configparser.y" + case 373: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 1052 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3707 "util/configparser.c" +#line 3756 "util/configparser.c" break; - case 373: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1057 "./util/configparser.y" + case 374: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1059 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3717 "util/configparser.c" +#line 3766 "util/configparser.c" break; - case 374: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1064 "./util/configparser.y" + case 375: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1066 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3728 "util/configparser.c" +#line 3777 "util/configparser.c" break; - case 375: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1072 "./util/configparser.y" + case 376: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1074 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3736,11 +3785,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3740 "util/configparser.c" +#line 3789 "util/configparser.c" break; - case 376: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1081 "./util/configparser.y" + case 377: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1083 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3748,11 +3797,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3752 "util/configparser.c" +#line 3801 "util/configparser.c" break; - case 377: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1089 "./util/configparser.y" + case 378: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1091 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3768,11 +3817,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3772 "util/configparser.c" +#line 3821 "util/configparser.c" break; - case 378: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1105 "./util/configparser.y" + case 379: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1107 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3780,11 +3829,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3784 "util/configparser.c" +#line 3833 "util/configparser.c" break; - case 379: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1113 "./util/configparser.y" + case 380: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1115 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3792,11 +3841,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3796 "util/configparser.c" +#line 3845 "util/configparser.c" break; - case 380: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1121 "./util/configparser.y" + case 381: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1123 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3804,11 +3853,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3808 "util/configparser.c" +#line 3857 "util/configparser.c" break; - case 381: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1129 "./util/configparser.y" + case 382: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1131 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3816,11 +3865,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3820 "util/configparser.c" +#line 3869 "util/configparser.c" break; - case 382: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1137 "./util/configparser.y" + case 383: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1139 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3828,11 +3877,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3832 "util/configparser.c" +#line 3881 "util/configparser.c" break; - case 383: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1145 "./util/configparser.y" + case 384: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1147 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3840,11 +3889,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3844 "util/configparser.c" +#line 3893 "util/configparser.c" break; - case 384: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1154 "./util/configparser.y" + case 385: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1156 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3852,11 +3901,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3856 "util/configparser.c" +#line 3905 "util/configparser.c" break; - case 385: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1163 "./util/configparser.y" + case 386: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1165 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3869,11 +3918,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3873 "util/configparser.c" +#line 3922 "util/configparser.c" break; - case 386: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1177 "./util/configparser.y" + case 387: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1179 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3881,11 +3930,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3885 "util/configparser.c" +#line 3934 "util/configparser.c" break; - case 387: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1186 "./util/configparser.y" + case 388: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1188 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3893,11 +3942,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3897 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 388: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1195 "./util/configparser.y" + case 389: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1197 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3905,11 +3954,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3909 "util/configparser.c" +#line 3958 "util/configparser.c" break; - case 389: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1204 "./util/configparser.y" + case 390: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1206 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3917,11 +3966,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3921 "util/configparser.c" +#line 3970 "util/configparser.c" break; - case 390: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1213 "./util/configparser.y" + case 391: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1215 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3929,11 +3978,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3933 "util/configparser.c" +#line 3982 "util/configparser.c" break; - case 391: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1222 "./util/configparser.y" + case 392: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1224 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3941,31 +3990,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3945 "util/configparser.c" +#line 3994 "util/configparser.c" break; - case 392: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1231 "./util/configparser.y" + case 393: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1233 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3955 "util/configparser.c" +#line 4004 "util/configparser.c" break; - case 393: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1238 "./util/configparser.y" + case 394: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1240 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3965 "util/configparser.c" +#line 4014 "util/configparser.c" break; - case 394: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1245 "./util/configparser.y" + case 395: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1247 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3990,105 +4039,105 @@ yyreduce: } } } -#line 3994 "util/configparser.c" +#line 4043 "util/configparser.c" break; - case 395: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1271 "./util/configparser.y" + case 396: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1273 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 4005 "util/configparser.c" +#line 4054 "util/configparser.c" break; - case 396: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1279 "./util/configparser.y" + case 397: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1281 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4015 "util/configparser.c" +#line 4064 "util/configparser.c" break; - case 397: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1286 "./util/configparser.y" + case 398: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1288 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4025 "util/configparser.c" +#line 4074 "util/configparser.c" break; - case 398: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1293 "./util/configparser.y" + case 399: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1295 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4035 "util/configparser.c" +#line 4084 "util/configparser.c" break; - case 399: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1300 "./util/configparser.y" + case 400: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1302 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4045 "util/configparser.c" +#line 4094 "util/configparser.c" break; - case 400: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1307 "./util/configparser.y" + case 401: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1309 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4056 "util/configparser.c" +#line 4105 "util/configparser.c" break; - case 401: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1315 "./util/configparser.y" + case 402: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1317 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4067 "util/configparser.c" +#line 4116 "util/configparser.c" break; - case 402: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1323 "./util/configparser.y" + case 403: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1325 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4078 "util/configparser.c" +#line 4127 "util/configparser.c" break; - case 403: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1331 "./util/configparser.y" + case 404: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1333 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4088 "util/configparser.c" +#line 4137 "util/configparser.c" break; - case 404: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1338 "./util/configparser.y" + case 405: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1340 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4098,11 +4147,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4102 "util/configparser.c" +#line 4151 "util/configparser.c" break; - case 405: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1349 "./util/configparser.y" + case 406: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1351 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4112,21 +4161,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4116 "util/configparser.c" +#line 4165 "util/configparser.c" break; - case 406: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1360 "./util/configparser.y" + case 407: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1362 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4126 "util/configparser.c" +#line 4175 "util/configparser.c" break; - case 407: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1367 "./util/configparser.y" + case 408: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1369 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4134,11 +4183,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4138 "util/configparser.c" +#line 4187 "util/configparser.c" break; - case 408: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1376 "./util/configparser.y" + case 409: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1378 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4146,11 +4195,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4150 "util/configparser.c" +#line 4199 "util/configparser.c" break; - case 409: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1385 "./util/configparser.y" + case 410: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1387 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4158,11 +4207,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4162 "util/configparser.c" +#line 4211 "util/configparser.c" break; - case 410: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1394 "./util/configparser.y" + case 411: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1396 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4170,41 +4219,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4174 "util/configparser.c" +#line 4223 "util/configparser.c" break; - case 411: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1403 "./util/configparser.y" + case 412: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1405 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4184 "util/configparser.c" +#line 4233 "util/configparser.c" break; - case 412: /* server_version: VAR_VERSION STRING_ARG */ -#line 1410 "./util/configparser.y" + case 413: /* server_version: VAR_VERSION STRING_ARG */ +#line 1412 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4194 "util/configparser.c" +#line 4243 "util/configparser.c" break; - case 413: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1417 "./util/configparser.y" + case 414: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1419 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4204 "util/configparser.c" +#line 4253 "util/configparser.c" break; - case 414: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1424 "./util/configparser.y" + case 415: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1426 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4219,33 +4268,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4223 "util/configparser.c" +#line 4272 "util/configparser.c" break; - case 415: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1440 "./util/configparser.y" + case 416: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1442 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4234 "util/configparser.c" +#line 4283 "util/configparser.c" break; - case 416: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1448 "./util/configparser.y" + case 417: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1450 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4245 "util/configparser.c" +#line 4294 "util/configparser.c" break; - case 417: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1456 "./util/configparser.y" + case 418: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1458 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4254,11 +4303,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4258 "util/configparser.c" +#line 4307 "util/configparser.c" break; - case 418: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1466 "./util/configparser.y" + case 419: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1468 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4267,11 +4316,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4271 "util/configparser.c" +#line 4320 "util/configparser.c" break; - case 419: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1476 "./util/configparser.y" + case 420: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1478 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4280,11 +4329,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4284 "util/configparser.c" +#line 4333 "util/configparser.c" break; - case 420: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1486 "./util/configparser.y" + case 421: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1488 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4297,22 +4346,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4301 "util/configparser.c" +#line 4350 "util/configparser.c" break; - case 421: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1500 "./util/configparser.y" + case 422: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1502 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 4361 "util/configparser.c" break; - case 422: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1508 "./util/configparser.y" + case 423: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1510 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4324,11 +4373,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4328 "util/configparser.c" +#line 4377 "util/configparser.c" break; - case 423: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1521 "./util/configparser.y" + case 424: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1523 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4338,22 +4387,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4342 "util/configparser.c" +#line 4391 "util/configparser.c" break; - case 424: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1532 "./util/configparser.y" + case 425: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1534 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4353 "util/configparser.c" +#line 4402 "util/configparser.c" break; - case 425: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1540 "./util/configparser.y" + case 426: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1542 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4365,11 +4414,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4369 "util/configparser.c" +#line 4418 "util/configparser.c" break; - case 426: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1553 "./util/configparser.y" + case 427: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1555 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4377,11 +4426,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4381 "util/configparser.c" +#line 4430 "util/configparser.c" break; - case 427: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1562 "./util/configparser.y" + case 428: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1564 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4389,11 +4438,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4393 "util/configparser.c" +#line 4442 "util/configparser.c" break; - case 428: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1571 "./util/configparser.y" + case 429: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1573 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4401,11 +4450,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4405 "util/configparser.c" +#line 4454 "util/configparser.c" break; - case 429: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1580 "./util/configparser.y" + case 430: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1582 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4413,11 +4462,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4417 "util/configparser.c" +#line 4466 "util/configparser.c" break; - case 430: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1589 "./util/configparser.y" + case 431: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1591 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4426,11 +4475,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4430 "util/configparser.c" +#line 4479 "util/configparser.c" break; - case 431: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1599 "./util/configparser.y" + case 432: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1601 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4439,22 +4488,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4443 "util/configparser.c" +#line 4492 "util/configparser.c" break; - case 432: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1609 "./util/configparser.y" + case 433: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1611 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4454 "util/configparser.c" +#line 4503 "util/configparser.c" break; - case 433: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1617 "./util/configparser.y" + case 434: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1619 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4466,11 +4515,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4470 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 434: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1630 "./util/configparser.y" + case 435: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1632 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4478,22 +4527,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 4531 "util/configparser.c" break; - case 435: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1639 "./util/configparser.y" + case 436: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1641 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4493 "util/configparser.c" +#line 4542 "util/configparser.c" break; - case 436: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1647 "./util/configparser.y" + case 437: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1649 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4501,22 +4550,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4505 "util/configparser.c" +#line 4554 "util/configparser.c" break; - case 437: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1656 "./util/configparser.y" + case 438: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1658 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 438: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1664 "./util/configparser.y" + case 439: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1666 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4528,11 +4577,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4532 "util/configparser.c" +#line 4581 "util/configparser.c" break; - case 439: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1677 "./util/configparser.y" + case 440: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1679 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4540,11 +4589,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4544 "util/configparser.c" +#line 4593 "util/configparser.c" break; - case 440: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ -#line 1686 "./util/configparser.y" + case 441: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ +#line 1688 "./util/configparser.y" { OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4552,11 +4601,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4556 "util/configparser.c" +#line 4605 "util/configparser.c" break; - case 441: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1695 "./util/configparser.y" + case 442: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1697 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4565,21 +4614,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4569 "util/configparser.c" +#line 4618 "util/configparser.c" break; - case 442: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1705 "./util/configparser.y" + case 443: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1707 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4579 "util/configparser.c" +#line 4628 "util/configparser.c" break; - case 443: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1712 "./util/configparser.y" + case 444: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1714 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4588,11 +4637,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4592 "util/configparser.c" +#line 4641 "util/configparser.c" break; - case 444: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1722 "./util/configparser.y" + case 445: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1724 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4601,11 +4650,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4605 "util/configparser.c" +#line 4654 "util/configparser.c" break; - case 445: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1732 "./util/configparser.y" + case 446: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1734 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4614,11 +4663,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4667 "util/configparser.c" break; - case 446: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1742 "./util/configparser.y" + case 447: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1744 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4627,11 +4676,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4631 "util/configparser.c" +#line 4680 "util/configparser.c" break; - case 447: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1752 "./util/configparser.y" + case 448: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1754 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4640,11 +4689,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4644 "util/configparser.c" +#line 4693 "util/configparser.c" break; - case 448: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1762 "./util/configparser.y" + case 449: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1764 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4653,11 +4702,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4657 "util/configparser.c" +#line 4706 "util/configparser.c" break; - case 449: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1772 "./util/configparser.y" + case 450: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1774 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4666,11 +4715,24 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4670 "util/configparser.c" +#line 4719 "util/configparser.c" break; - case 450: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1782 "./util/configparser.y" + case 451: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG */ +#line 1784 "./util/configparser.y" + { + OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_unknown_additional = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4732 "util/configparser.c" + break; + + case 452: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1794 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4679,41 +4741,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4683 "util/configparser.c" +#line 4745 "util/configparser.c" break; - case 451: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1792 "./util/configparser.y" + case 453: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1804 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4693 "util/configparser.c" +#line 4755 "util/configparser.c" break; - case 452: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1799 "./util/configparser.y" + case 454: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1811 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4703 "util/configparser.c" +#line 4765 "util/configparser.c" break; - case 453: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1806 "./util/configparser.y" + case 455: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1818 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4713 "util/configparser.c" +#line 4775 "util/configparser.c" break; - case 454: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1813 "./util/configparser.y" + case 456: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1825 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4721,11 +4783,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4787 "util/configparser.c" break; - case 455: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1822 "./util/configparser.y" + case 457: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1834 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4733,11 +4795,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4799 "util/configparser.c" break; - case 456: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1831 "./util/configparser.y" + case 458: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1843 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4745,11 +4807,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4749 "util/configparser.c" +#line 4811 "util/configparser.c" break; - case 457: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1840 "./util/configparser.y" + case 459: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1852 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4757,21 +4819,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4823 "util/configparser.c" break; - case 458: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1849 "./util/configparser.y" + case 460: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1861 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4771 "util/configparser.c" +#line 4833 "util/configparser.c" break; - case 459: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1856 "./util/configparser.y" + case 461: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1868 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4780,22 +4842,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4784 "util/configparser.c" +#line 4846 "util/configparser.c" break; - case 460: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1866 "./util/configparser.y" + case 462: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1878 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_acl_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4795 "util/configparser.c" +#line 4857 "util/configparser.c" break; - case 461: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ -#line 1874 "./util/configparser.y" + case 463: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ +#line 1886 "./util/configparser.y" { OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_acl_action((yyvsp[0].str)); @@ -4803,21 +4865,21 @@ yyreduce: &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4807 "util/configparser.c" +#line 4869 "util/configparser.c" break; - case 462: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1883 "./util/configparser.y" + case 464: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1895 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4817 "util/configparser.c" +#line 4879 "util/configparser.c" break; - case 463: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1890 "./util/configparser.y" + case 465: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1902 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4834,11 +4896,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4838 "util/configparser.c" +#line 4900 "util/configparser.c" break; - case 464: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1908 "./util/configparser.y" + case 466: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1920 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4850,11 +4912,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4854 "util/configparser.c" +#line 4916 "util/configparser.c" break; - case 465: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1921 "./util/configparser.y" + case 467: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1933 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4866,11 +4928,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4870 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 466: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1934 "./util/configparser.y" + case 468: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1946 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4882,11 +4944,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4886 "util/configparser.c" +#line 4948 "util/configparser.c" break; - case 467: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1947 "./util/configparser.y" + case 469: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1959 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4894,11 +4956,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4898 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 468: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1956 "./util/configparser.y" + case 470: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1968 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4906,11 +4968,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4910 "util/configparser.c" +#line 4972 "util/configparser.c" break; - case 469: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1965 "./util/configparser.y" + case 471: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1977 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4918,11 +4980,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4922 "util/configparser.c" +#line 4984 "util/configparser.c" break; - case 470: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1974 "./util/configparser.y" + case 472: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1986 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4930,11 +4992,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4996 "util/configparser.c" break; - case 471: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1983 "./util/configparser.y" + case 473: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1995 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4943,11 +5005,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" +#line 5009 "util/configparser.c" break; - case 472: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1993 "./util/configparser.y" + case 474: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 2005 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4956,11 +5018,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4960 "util/configparser.c" +#line 5022 "util/configparser.c" break; - case 473: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 2003 "./util/configparser.y" + case 475: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 2015 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4970,11 +5032,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4974 "util/configparser.c" +#line 5036 "util/configparser.c" break; - case 474: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 2014 "./util/configparser.y" + case 476: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 2026 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4982,11 +5044,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4986 "util/configparser.c" +#line 5048 "util/configparser.c" break; - case 475: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 2023 "./util/configparser.y" + case 477: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 2035 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4994,11 +5056,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 5060 "util/configparser.c" break; - case 476: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 2032 "./util/configparser.y" + case 478: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 2044 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5006,11 +5068,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5010 "util/configparser.c" +#line 5072 "util/configparser.c" break; - case 477: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2041 "./util/configparser.y" + case 479: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 2053 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5018,11 +5080,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5022 "util/configparser.c" +#line 5084 "util/configparser.c" break; - case 478: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2050 "./util/configparser.y" + case 480: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 2062 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5030,11 +5092,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5034 "util/configparser.c" +#line 5096 "util/configparser.c" break; - case 479: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2059 "./util/configparser.y" + case 481: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2071 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5042,11 +5104,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5046 "util/configparser.c" +#line 5108 "util/configparser.c" break; - case 480: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ -#line 2068 "./util/configparser.y" + case 482: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ +#line 2080 "./util/configparser.y" { OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5054,11 +5116,11 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5058 "util/configparser.c" +#line 5120 "util/configparser.c" break; - case 481: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2077 "./util/configparser.y" + case 483: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2089 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5066,11 +5128,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5070 "util/configparser.c" +#line 5132 "util/configparser.c" break; - case 482: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2086 "./util/configparser.y" + case 484: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2098 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5082,11 +5144,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5086 "util/configparser.c" +#line 5148 "util/configparser.c" break; - case 483: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2099 "./util/configparser.y" + case 485: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2111 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5098,11 +5160,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5102 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 484: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2112 "./util/configparser.y" + case 486: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2124 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5110,21 +5172,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5114 "util/configparser.c" +#line 5176 "util/configparser.c" break; - case 485: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2121 "./util/configparser.y" + case 487: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2133 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5124 "util/configparser.c" +#line 5186 "util/configparser.c" break; - case 486: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2128 "./util/configparser.y" + case 488: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2140 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5132,11 +5194,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5136 "util/configparser.c" +#line 5198 "util/configparser.c" break; - case 487: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2137 "./util/configparser.y" + case 489: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2149 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5144,11 +5206,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5148 "util/configparser.c" +#line 5210 "util/configparser.c" break; - case 488: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2146 "./util/configparser.y" + case 490: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2158 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5156,11 +5218,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5160 "util/configparser.c" +#line 5222 "util/configparser.c" break; - case 489: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2155 "./util/configparser.y" + case 491: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2167 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5168,11 +5230,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5172 "util/configparser.c" +#line 5234 "util/configparser.c" break; - case 490: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2164 "./util/configparser.y" + case 492: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2176 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5181,22 +5243,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5185 "util/configparser.c" +#line 5247 "util/configparser.c" break; - case 491: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2173 "./util/configparser.y" + case 493: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2185 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5196 "util/configparser.c" +#line 5258 "util/configparser.c" break; - case 492: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2181 "./util/configparser.y" + case 494: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2193 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5208,22 +5270,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5212 "util/configparser.c" +#line 5274 "util/configparser.c" break; - case 493: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2194 "./util/configparser.y" + case 495: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2206 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5223 "util/configparser.c" +#line 5285 "util/configparser.c" break; - case 494: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2202 "./util/configparser.y" + case 496: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2214 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5277,21 +5339,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5281 "util/configparser.c" +#line 5343 "util/configparser.c" break; - case 495: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2257 "./util/configparser.y" + case 497: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2269 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5291 "util/configparser.c" +#line 5353 "util/configparser.c" break; - case 496: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2264 "./util/configparser.y" + case 498: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2276 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5305,11 +5367,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5309 "util/configparser.c" +#line 5371 "util/configparser.c" break; - case 497: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2279 "./util/configparser.y" + case 499: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2291 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5318,11 +5380,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5322 "util/configparser.c" +#line 5384 "util/configparser.c" break; - case 498: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2289 "./util/configparser.y" + case 500: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2301 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5331,41 +5393,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5335 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 499: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2299 "./util/configparser.y" + case 501: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2311 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5345 "util/configparser.c" +#line 5407 "util/configparser.c" break; - case 500: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2306 "./util/configparser.y" + case 502: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2318 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5355 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 501: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2313 "./util/configparser.y" + case 503: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2325 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5365 "util/configparser.c" +#line 5427 "util/configparser.c" break; - case 502: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2320 "./util/configparser.y" + case 504: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2332 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5373,22 +5435,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5377 "util/configparser.c" +#line 5439 "util/configparser.c" break; - case 503: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2329 "./util/configparser.y" + case 505: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2341 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5388 "util/configparser.c" +#line 5450 "util/configparser.c" break; - case 504: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2337 "./util/configparser.y" + case 506: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2349 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5401,11 +5463,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5405 "util/configparser.c" +#line 5467 "util/configparser.c" break; - case 505: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2351 "./util/configparser.y" + case 507: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2363 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5425,11 +5487,11 @@ yyreduce: } } } -#line 5429 "util/configparser.c" +#line 5491 "util/configparser.c" break; - case 506: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2372 "./util/configparser.y" + case 508: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2384 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5449,11 +5511,11 @@ yyreduce: } } } -#line 5453 "util/configparser.c" +#line 5515 "util/configparser.c" break; - case 507: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2393 "./util/configparser.y" + case 509: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2405 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5464,11 +5526,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5468 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 508: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2405 "./util/configparser.y" + case 510: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2417 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5479,11 +5541,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5483 "util/configparser.c" +#line 5545 "util/configparser.c" break; - case 509: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2417 "./util/configparser.y" + case 511: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2429 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5494,11 +5556,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5498 "util/configparser.c" +#line 5560 "util/configparser.c" break; - case 510: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2429 "./util/configparser.y" + case 512: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2441 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5506,11 +5568,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5510 "util/configparser.c" +#line 5572 "util/configparser.c" break; - case 511: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ -#line 2438 "./util/configparser.y" + case 513: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ +#line 2450 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5530,11 +5592,11 @@ yyreduce: } } } -#line 5534 "util/configparser.c" +#line 5596 "util/configparser.c" break; - case 512: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2459 "./util/configparser.y" + case 514: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2471 "./util/configparser.y" { OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, @@ -5545,11 +5607,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5549 "util/configparser.c" +#line 5611 "util/configparser.c" break; - case 513: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2471 "./util/configparser.y" + case 515: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2483 "./util/configparser.y" { OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, @@ -5560,11 +5622,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5564 "util/configparser.c" +#line 5626 "util/configparser.c" break; - case 514: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ -#line 2483 "./util/configparser.y" + case 516: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ +#line 2495 "./util/configparser.y" { OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, @@ -5572,11 +5634,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5576 "util/configparser.c" +#line 5638 "util/configparser.c" break; - case 515: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2492 "./util/configparser.y" + case 517: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2504 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5596,11 +5658,11 @@ yyreduce: } } } -#line 5600 "util/configparser.c" +#line 5662 "util/configparser.c" break; - case 516: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2513 "./util/configparser.y" + case 518: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2525 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5608,11 +5670,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5612 "util/configparser.c" +#line 5674 "util/configparser.c" break; - case 517: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2522 "./util/configparser.y" + case 519: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2534 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5620,33 +5682,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5686 "util/configparser.c" break; - case 518: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2531 "./util/configparser.y" + case 520: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2543 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5635 "util/configparser.c" +#line 5697 "util/configparser.c" break; - case 519: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2539 "./util/configparser.y" + case 521: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2551 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5646 "util/configparser.c" +#line 5708 "util/configparser.c" break; - case 520: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2547 "./util/configparser.y" + case 522: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2559 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5658,11 +5720,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5662 "util/configparser.c" +#line 5724 "util/configparser.c" break; - case 521: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2560 "./util/configparser.y" + case 523: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2572 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5674,11 +5736,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5678 "util/configparser.c" +#line 5740 "util/configparser.c" break; - case 522: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2573 "./util/configparser.y" + case 524: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2585 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5692,11 +5754,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5696 "util/configparser.c" +#line 5758 "util/configparser.c" break; - case 523: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2588 "./util/configparser.y" + case 525: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2600 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5710,11 +5772,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5714 "util/configparser.c" +#line 5776 "util/configparser.c" break; - case 524: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2603 "./util/configparser.y" + case 526: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2615 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5722,11 +5784,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5726 "util/configparser.c" +#line 5788 "util/configparser.c" break; - case 525: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2612 "./util/configparser.y" + case 527: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2624 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5734,11 +5796,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5738 "util/configparser.c" +#line 5800 "util/configparser.c" break; - case 526: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2621 "./util/configparser.y" + case 528: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ +#line 2633 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5747,11 +5809,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5751 "util/configparser.c" +#line 5813 "util/configparser.c" break; - case 527: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2631 "./util/configparser.y" + case 529: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ +#line 2643 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5760,11 +5822,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5764 "util/configparser.c" +#line 5826 "util/configparser.c" break; - case 528: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2641 "./util/configparser.y" + case 530: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ +#line 2653 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5772,11 +5834,11 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5776 "util/configparser.c" +#line 5838 "util/configparser.c" break; - case 529: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ -#line 2650 "./util/configparser.y" + case 531: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ +#line 2662 "./util/configparser.y" { OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5784,11 +5846,11 @@ yyreduce: else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5788 "util/configparser.c" +#line 5850 "util/configparser.c" break; - case 530: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ -#line 2659 "./util/configparser.y" + case 532: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ +#line 2671 "./util/configparser.y" { OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5796,20 +5858,20 @@ yyreduce: else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5800 "util/configparser.c" +#line 5862 "util/configparser.c" break; - case 531: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2668 "./util/configparser.y" + case 533: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2680 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5871 "util/configparser.c" break; - case 532: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2674 "./util/configparser.y" + case 534: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2686 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5817,11 +5879,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5821 "util/configparser.c" +#line 5883 "util/configparser.c" break; - case 533: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2683 "./util/configparser.y" + case 535: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2695 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5829,11 +5891,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5833 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 534: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2692 "./util/configparser.y" + case 536: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2704 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5842,11 +5904,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5846 "util/configparser.c" +#line 5908 "util/configparser.c" break; - case 535: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2702 "./util/configparser.y" + case 537: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2714 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5855,11 +5917,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5859 "util/configparser.c" +#line 5921 "util/configparser.c" break; - case 536: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2712 "./util/configparser.y" + case 538: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2724 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5868,11 +5930,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" +#line 5934 "util/configparser.c" break; - case 537: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2722 "./util/configparser.y" + case 539: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2734 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5880,11 +5942,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5884 "util/configparser.c" +#line 5946 "util/configparser.c" break; - case 538: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2731 "./util/configparser.y" + case 540: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2743 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5893,11 +5955,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5897 "util/configparser.c" +#line 5959 "util/configparser.c" break; - case 539: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2741 "./util/configparser.y" + case 541: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2753 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5905,11 +5967,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5909 "util/configparser.c" +#line 5971 "util/configparser.c" break; - case 540: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2750 "./util/configparser.y" + case 542: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2762 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5921,11 +5983,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5925 "util/configparser.c" +#line 5987 "util/configparser.c" break; - case 541: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2763 "./util/configparser.y" + case 543: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2775 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5937,11 +5999,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5941 "util/configparser.c" +#line 6003 "util/configparser.c" break; - case 542: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2776 "./util/configparser.y" + case 544: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2788 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5952,11 +6014,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5956 "util/configparser.c" +#line 6018 "util/configparser.c" break; - case 543: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2788 "./util/configparser.y" + case 545: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2800 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5969,11 +6031,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5973 "util/configparser.c" +#line 6035 "util/configparser.c" break; - case 544: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2802 "./util/configparser.y" + case 546: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2814 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5984,11 +6046,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5988 "util/configparser.c" +#line 6050 "util/configparser.c" break; - case 545: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2814 "./util/configparser.y" + case 547: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2826 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6001,11 +6063,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6005 "util/configparser.c" +#line 6067 "util/configparser.c" break; - case 546: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2828 "./util/configparser.y" + case 548: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2840 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6013,11 +6075,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6017 "util/configparser.c" +#line 6079 "util/configparser.c" break; - case 547: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2837 "./util/configparser.y" + case 549: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2849 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6027,11 +6089,11 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6093 "util/configparser.c" break; - case 548: /* server_ede: VAR_EDE STRING_ARG */ -#line 2848 "./util/configparser.y" + case 550: /* server_ede: VAR_EDE STRING_ARG */ +#line 2860 "./util/configparser.y" { OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6039,21 +6101,21 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6043 "util/configparser.c" +#line 6105 "util/configparser.c" break; - case 549: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2857 "./util/configparser.y" + case 551: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ +#line 2869 "./util/configparser.y" { OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6053 "util/configparser.c" +#line 6115 "util/configparser.c" break; - case 550: /* stub_name: VAR_NAME STRING_ARG */ -#line 2864 "./util/configparser.y" + case 552: /* stub_name: VAR_NAME STRING_ARG */ +#line 2876 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6062,31 +6124,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6066 "util/configparser.c" +#line 6128 "util/configparser.c" break; - case 551: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2874 "./util/configparser.y" + case 553: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2886 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6076 "util/configparser.c" +#line 6138 "util/configparser.c" break; - case 552: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2881 "./util/configparser.y" + case 554: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2893 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6086 "util/configparser.c" +#line 6148 "util/configparser.c" break; - case 553: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2888 "./util/configparser.y" + case 555: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2900 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6094,11 +6156,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6098 "util/configparser.c" +#line 6160 "util/configparser.c" break; - case 554: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2897 "./util/configparser.y" + case 556: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2909 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6106,11 +6168,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6110 "util/configparser.c" +#line 6172 "util/configparser.c" break; - case 555: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2906 "./util/configparser.y" + case 557: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2918 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6119,11 +6181,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6123 "util/configparser.c" +#line 6185 "util/configparser.c" break; - case 556: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2916 "./util/configparser.y" + case 558: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2928 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6132,11 +6194,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6136 "util/configparser.c" +#line 6198 "util/configparser.c" break; - case 557: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2926 "./util/configparser.y" + case 559: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2938 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6145,11 +6207,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6149 "util/configparser.c" +#line 6211 "util/configparser.c" break; - case 558: /* forward_name: VAR_NAME STRING_ARG */ -#line 2936 "./util/configparser.y" + case 560: /* forward_name: VAR_NAME STRING_ARG */ +#line 2948 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6158,31 +6220,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6162 "util/configparser.c" +#line 6224 "util/configparser.c" break; - case 559: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2946 "./util/configparser.y" + case 561: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2958 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6172 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 560: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2953 "./util/configparser.y" + case 562: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2965 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6182 "util/configparser.c" +#line 6244 "util/configparser.c" break; - case 561: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2960 "./util/configparser.y" + case 563: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2972 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6190,11 +6252,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6194 "util/configparser.c" +#line 6256 "util/configparser.c" break; - case 562: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2969 "./util/configparser.y" + case 564: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2981 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6202,11 +6264,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6206 "util/configparser.c" +#line 6268 "util/configparser.c" break; - case 563: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2978 "./util/configparser.y" + case 565: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2990 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6215,11 +6277,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6219 "util/configparser.c" +#line 6281 "util/configparser.c" break; - case 564: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2988 "./util/configparser.y" + case 566: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 3000 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6228,11 +6290,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6232 "util/configparser.c" +#line 6294 "util/configparser.c" break; - case 565: /* auth_name: VAR_NAME STRING_ARG */ -#line 2998 "./util/configparser.y" + case 567: /* auth_name: VAR_NAME STRING_ARG */ +#line 3010 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6241,52 +6303,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6245 "util/configparser.c" +#line 6307 "util/configparser.c" break; - case 566: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 3008 "./util/configparser.y" + case 568: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 3020 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6255 "util/configparser.c" +#line 6317 "util/configparser.c" break; - case 567: /* auth_master: VAR_MASTER STRING_ARG */ -#line 3015 "./util/configparser.y" + case 569: /* auth_master: VAR_MASTER STRING_ARG */ +#line 3027 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6265 "util/configparser.c" +#line 6327 "util/configparser.c" break; - case 568: /* auth_url: VAR_URL STRING_ARG */ -#line 3022 "./util/configparser.y" + case 570: /* auth_url: VAR_URL STRING_ARG */ +#line 3034 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6275 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 569: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3029 "./util/configparser.y" + case 571: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 3041 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6286 "util/configparser.c" +#line 6348 "util/configparser.c" break; - case 570: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3037 "./util/configparser.y" + case 572: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 3049 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6295,11 +6357,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6361 "util/configparser.c" break; - case 571: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3047 "./util/configparser.y" + case 573: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 3059 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6308,11 +6370,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6374 "util/configparser.c" break; - case 572: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3057 "./util/configparser.y" + case 574: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 3069 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6321,11 +6383,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6325 "util/configparser.c" +#line 6387 "util/configparser.c" break; - case 573: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3067 "./util/configparser.y" + case 575: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 3079 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6334,11 +6396,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6338 "util/configparser.c" +#line 6400 "util/configparser.c" break; - case 574: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3077 "./util/configparser.y" + case 576: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 3089 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6347,11 +6409,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6413 "util/configparser.c" break; - case 575: /* view_name: VAR_NAME STRING_ARG */ -#line 3087 "./util/configparser.y" + case 577: /* view_name: VAR_NAME STRING_ARG */ +#line 3099 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6360,11 +6422,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6364 "util/configparser.c" +#line 6426 "util/configparser.c" break; - case 576: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3097 "./util/configparser.y" + case 578: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 3109 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -6419,11 +6481,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6423 "util/configparser.c" +#line 6485 "util/configparser.c" break; - case 577: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3153 "./util/configparser.y" + case 579: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3165 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6432,33 +6494,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6436 "util/configparser.c" +#line 6498 "util/configparser.c" break; - case 578: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3163 "./util/configparser.y" + case 580: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3175 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6447 "util/configparser.c" +#line 6509 "util/configparser.c" break; - case 579: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3171 "./util/configparser.y" + case 581: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3183 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6458 "util/configparser.c" +#line 6520 "util/configparser.c" break; - case 580: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3179 "./util/configparser.y" + case 582: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3191 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6472,11 +6534,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6476 "util/configparser.c" +#line 6538 "util/configparser.c" break; - case 581: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3194 "./util/configparser.y" + case 583: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3206 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6484,20 +6546,20 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6488 "util/configparser.c" +#line 6550 "util/configparser.c" break; - case 582: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3203 "./util/configparser.y" + case 584: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3215 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6497 "util/configparser.c" +#line 6559 "util/configparser.c" break; - case 593: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3215 "./util/configparser.y" + case 595: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3227 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6506,11 +6568,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6510 "util/configparser.c" +#line 6572 "util/configparser.c" break; - case 594: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3225 "./util/configparser.y" + case 596: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3237 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6518,80 +6580,80 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6522 "util/configparser.c" +#line 6584 "util/configparser.c" break; - case 595: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3234 "./util/configparser.y" + case 597: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3246 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6532 "util/configparser.c" +#line 6594 "util/configparser.c" break; - case 596: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3241 "./util/configparser.y" + case 598: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3253 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6542 "util/configparser.c" +#line 6604 "util/configparser.c" break; - case 597: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3248 "./util/configparser.y" + case 599: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3260 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6552 "util/configparser.c" +#line 6614 "util/configparser.c" break; - case 598: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3255 "./util/configparser.y" + case 600: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3267 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6562 "util/configparser.c" +#line 6624 "util/configparser.c" break; - case 599: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3262 "./util/configparser.y" + case 601: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3274 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6572 "util/configparser.c" +#line 6634 "util/configparser.c" break; - case 600: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3269 "./util/configparser.y" + case 602: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3281 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6582 "util/configparser.c" +#line 6644 "util/configparser.c" break; - case 601: /* dtstart: VAR_DNSTAP */ -#line 3276 "./util/configparser.y" + case 603: /* dtstart: VAR_DNSTAP */ +#line 3288 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6591 "util/configparser.c" +#line 6653 "util/configparser.c" break; - case 623: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3297 "./util/configparser.y" + case 625: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3309 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6599,11 +6661,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6603 "util/configparser.c" +#line 6665 "util/configparser.c" break; - case 624: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3306 "./util/configparser.y" + case 626: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3318 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6612,31 +6674,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6616 "util/configparser.c" +#line 6678 "util/configparser.c" break; - case 625: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3316 "./util/configparser.y" + case 627: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3328 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6626 "util/configparser.c" +#line 6688 "util/configparser.c" break; - case 626: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3323 "./util/configparser.y" + case 628: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3335 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6636 "util/configparser.c" +#line 6698 "util/configparser.c" break; - case 627: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3330 "./util/configparser.y" + case 629: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3342 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6644,51 +6706,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6648 "util/configparser.c" +#line 6710 "util/configparser.c" break; - case 628: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3339 "./util/configparser.y" + case 630: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3351 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6658 "util/configparser.c" +#line 6720 "util/configparser.c" break; - case 629: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3346 "./util/configparser.y" + case 631: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3358 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6668 "util/configparser.c" +#line 6730 "util/configparser.c" break; - case 630: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3353 "./util/configparser.y" + case 632: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3365 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6678 "util/configparser.c" +#line 6740 "util/configparser.c" break; - case 631: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3360 "./util/configparser.y" + case 633: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3372 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6688 "util/configparser.c" +#line 6750 "util/configparser.c" break; - case 632: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3367 "./util/configparser.y" + case 634: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3379 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6696,11 +6758,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6700 "util/configparser.c" +#line 6762 "util/configparser.c" break; - case 633: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3376 "./util/configparser.y" + case 635: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3388 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6708,31 +6770,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6712 "util/configparser.c" +#line 6774 "util/configparser.c" break; - case 634: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3385 "./util/configparser.y" + case 636: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3397 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6722 "util/configparser.c" +#line 6784 "util/configparser.c" break; - case 635: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3392 "./util/configparser.y" + case 637: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3404 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6732 "util/configparser.c" +#line 6794 "util/configparser.c" break; - case 636: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3399 "./util/configparser.y" + case 638: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3411 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6741,11 +6803,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6745 "util/configparser.c" +#line 6807 "util/configparser.c" break; - case 637: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3409 "./util/configparser.y" + case 639: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3421 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6754,11 +6816,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6758 "util/configparser.c" +#line 6820 "util/configparser.c" break; - case 638: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3419 "./util/configparser.y" + case 640: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3431 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6767,11 +6829,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6771 "util/configparser.c" +#line 6833 "util/configparser.c" break; - case 639: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3429 "./util/configparser.y" + case 641: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3441 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6780,11 +6842,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6784 "util/configparser.c" +#line 6846 "util/configparser.c" break; - case 640: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3439 "./util/configparser.y" + case 642: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3451 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6793,11 +6855,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6797 "util/configparser.c" +#line 6859 "util/configparser.c" break; - case 641: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3449 "./util/configparser.y" + case 643: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3461 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6806,49 +6868,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6810 "util/configparser.c" +#line 6872 "util/configparser.c" break; - case 642: /* pythonstart: VAR_PYTHON */ -#line 3459 "./util/configparser.y" + case 644: /* pythonstart: VAR_PYTHON */ +#line 3471 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6819 "util/configparser.c" +#line 6881 "util/configparser.c" break; - case 646: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3469 "./util/configparser.y" + case 648: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3481 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6829 "util/configparser.c" +#line 6891 "util/configparser.c" break; - case 647: /* dynlibstart: VAR_DYNLIB */ -#line 3475 "./util/configparser.y" + case 649: /* dynlibstart: VAR_DYNLIB */ +#line 3487 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6838 "util/configparser.c" +#line 6900 "util/configparser.c" break; - case 651: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3485 "./util/configparser.y" + case 653: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3497 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6848 "util/configparser.c" +#line 6910 "util/configparser.c" break; - case 652: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3491 "./util/configparser.y" + case 654: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3503 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6857,21 +6919,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6861 "util/configparser.c" +#line 6923 "util/configparser.c" break; - case 653: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3501 "./util/configparser.y" + case 655: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3513 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6871 "util/configparser.c" +#line 6933 "util/configparser.c" break; - case 654: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3508 "./util/configparser.y" + case 656: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3520 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6879,31 +6941,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6883 "util/configparser.c" +#line 6945 "util/configparser.c" break; - case 655: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3517 "./util/configparser.y" + case 657: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3529 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6894 "util/configparser.c" +#line 6956 "util/configparser.c" break; - case 656: /* dnscstart: VAR_DNSCRYPT */ -#line 3525 "./util/configparser.y" + case 658: /* dnscstart: VAR_DNSCRYPT */ +#line 3537 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6903 "util/configparser.c" +#line 6965 "util/configparser.c" break; - case 669: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3542 "./util/configparser.y" + case 671: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3554 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6911,11 +6973,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6915 "util/configparser.c" +#line 6977 "util/configparser.c" break; - case 670: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3552 "./util/configparser.y" + case 672: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3564 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6923,21 +6985,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6927 "util/configparser.c" +#line 6989 "util/configparser.c" break; - case 671: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3561 "./util/configparser.y" + case 673: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3573 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6937 "util/configparser.c" +#line 6999 "util/configparser.c" break; - case 672: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3568 "./util/configparser.y" + case 674: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3580 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6945,21 +7007,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6949 "util/configparser.c" +#line 7011 "util/configparser.c" break; - case 673: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3577 "./util/configparser.y" + case 675: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3589 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6959 "util/configparser.c" +#line 7021 "util/configparser.c" break; - case 674: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3584 "./util/configparser.y" + case 676: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3596 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6967,22 +7029,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6971 "util/configparser.c" +#line 7033 "util/configparser.c" break; - case 675: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3593 "./util/configparser.y" + case 677: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3605 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6982 "util/configparser.c" +#line 7044 "util/configparser.c" break; - case 676: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3601 "./util/configparser.y" + case 678: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3613 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6994,22 +7056,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6998 "util/configparser.c" +#line 7060 "util/configparser.c" break; - case 677: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3614 "./util/configparser.y" + case 679: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3626 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7009 "util/configparser.c" +#line 7071 "util/configparser.c" break; - case 678: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3622 "./util/configparser.y" + case 680: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3634 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7021,20 +7083,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7025 "util/configparser.c" +#line 7087 "util/configparser.c" break; - case 679: /* cachedbstart: VAR_CACHEDB */ -#line 3635 "./util/configparser.y" + case 681: /* cachedbstart: VAR_CACHEDB */ +#line 3647 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 7034 "util/configparser.c" +#line 7096 "util/configparser.c" break; - case 688: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3647 "./util/configparser.y" + case 690: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3659 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7045,11 +7107,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7049 "util/configparser.c" +#line 7111 "util/configparser.c" break; - case 689: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3659 "./util/configparser.y" + case 691: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3671 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7060,11 +7122,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7064 "util/configparser.c" +#line 7126 "util/configparser.c" break; - case 690: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3671 "./util/configparser.y" + case 692: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3683 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7075,11 +7137,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7079 "util/configparser.c" +#line 7141 "util/configparser.c" break; - case 691: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3683 "./util/configparser.y" + case 693: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3695 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7093,11 +7155,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7097 "util/configparser.c" +#line 7159 "util/configparser.c" break; - case 692: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3698 "./util/configparser.y" + case 694: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3710 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7109,11 +7171,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7113 "util/configparser.c" +#line 7175 "util/configparser.c" break; - case 693: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3711 "./util/configparser.y" + case 695: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3723 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7125,11 +7187,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7129 "util/configparser.c" +#line 7191 "util/configparser.c" break; - case 694: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3724 "./util/configparser.y" + case 696: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3736 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7139,20 +7201,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7143 "util/configparser.c" +#line 7205 "util/configparser.c" break; - case 695: /* ipsetstart: VAR_IPSET */ -#line 3735 "./util/configparser.y" + case 697: /* ipsetstart: VAR_IPSET */ +#line 3747 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7152 "util/configparser.c" +#line 7214 "util/configparser.c" break; - case 700: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3745 "./util/configparser.y" + case 702: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3757 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7166,11 +7228,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7170 "util/configparser.c" +#line 7232 "util/configparser.c" break; - case 701: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3760 "./util/configparser.y" + case 703: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3772 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7184,11 +7246,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7188 "util/configparser.c" +#line 7250 "util/configparser.c" break; -#line 7192 "util/configparser.c" +#line 7254 "util/configparser.c" default: break; } @@ -7270,7 +7332,6 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; - ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -7331,7 +7392,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturnlab; + goto yyreturn; /*-----------------------------------. @@ -7339,22 +7400,24 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturnlab; + goto yyreturn; -/*-----------------------------------------------------------. -| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | -`-----------------------------------------------------------*/ +#if !defined yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - goto yyreturnlab; + goto yyreturn; +#endif -/*----------------------------------------------------------. -| yyreturnlab -- parsing is finished, clean up and return. | -`----------------------------------------------------------*/ -yyreturnlab: +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ +yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -7381,7 +7444,7 @@ yyreturnlab: return yyresult; } -#line 3774 "./util/configparser.y" +#line 3786 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index df8ea0c9a..e08acea00 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.8.2. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison interface for Yacc-like parsers in C @@ -387,7 +387,8 @@ extern int yydebug; VAR_INTERFACE_TAG_ACTION = 588, /* VAR_INTERFACE_TAG_ACTION */ VAR_INTERFACE_TAG_DATA = 589, /* VAR_INTERFACE_TAG_DATA */ VAR_PROXY_PROTOCOL_PORT = 590, /* VAR_PROXY_PROTOCOL_PORT */ - VAR_STATISTICS_INHIBIT_ZERO = 591 /* VAR_STATISTICS_INHIBIT_ZERO */ + VAR_STATISTICS_INHIBIT_ZERO = 591, /* VAR_STATISTICS_INHIBIT_ZERO */ + VAR_HARDEN_UNKNOWN_ADDITIONAL = 592 /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -730,6 +731,7 @@ extern int yydebug; #define VAR_INTERFACE_TAG_DATA 589 #define VAR_PROXY_PROTOCOL_PORT 590 #define VAR_STATISTICS_INHIBIT_ZERO 591 +#define VAR_HARDEN_UNKNOWN_ADDITIONAL 592 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -739,7 +741,7 @@ union YYSTYPE char* str; -#line 743 "util/configparser.h" +#line 745 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; @@ -750,8 +752,6 @@ typedef union YYSTYPE YYSTYPE; extern YYSTYPE yylval; - int yyparse (void); - #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index f21c30815..e73afa42d 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -194,6 +194,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_INTERFACE_ACTION VAR_INTERFACE_VIEW VAR_INTERFACE_TAG %token VAR_INTERFACE_TAG_ACTION VAR_INTERFACE_TAG_DATA %token VAR_PROXY_PROTOCOL_PORT VAR_STATISTICS_INHIBIT_ZERO +%token VAR_HARDEN_UNKNOWN_ADDITIONAL %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -323,7 +324,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_zonemd_permissive_mode | server_max_reuse_tcp_queries | server_tcp_reuse_timeout | server_tcp_auth_query_timeout | server_interface_automatic_ports | server_ede | - server_proxy_protocol_port | server_statistics_inhibit_zero + server_proxy_protocol_port | server_statistics_inhibit_zero | + server_harden_unknown_additional ; stubstart: VAR_STUB_ZONE { @@ -1778,6 +1780,16 @@ server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG free($2); } ; +server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG + { + OUTYY(("P(server_harden_unknown_additional:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_unknown_additional = + (strcmp($2, "yes")==0); + free($2); + } + ; server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG { OUTYY(("P(server_use_caps_for_id:%s)\n", $2)); From c9233f84290fc4aa55e7a144a038834e34085abd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 19 Jan 2023 15:45:10 +0100 Subject: [PATCH 054/177] - Set default for harden-unknown-additional to no. So that it does not hamper future protocol developments. --- doc/Changelog | 4 +++- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 5 +++-- util/config_file.c | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2de00f017..33450ab93 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,9 +5,11 @@ resolvers. The new choice, down from 4096 means it is harder to get large responses from Unbound. Thanks to Xiang Li, from NISL Lab, Tsinghua University. - - Add harden-unknown-additional option. Default on and it removes + - Add harden-unknown-additional option. It removes unknown records from the authority section and additional section. Thanks to Xiang Li, from NISL Lab, Tsinghua University. + - Set default for harden-unknown-additional to no. So that it does + not hamper future protocol developments. 18 January 2023: Wouter - Fix not following cleared RD flags potentially enables amplification diff --git a/doc/example.conf.in b/doc/example.conf.in index ca8f95a5e..8d8a057ad 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -505,7 +505,7 @@ server: # Harden against unknown records in the authority section and the # additional section. - # harden-unknown-additional: yes + # harden-unknown-additional: no # Sent minimum amount of information to upstream servers to enhance # privacy. Only sent minimum required labels of the QNAME and set QTYPE diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 075f4b28e..93150aea3 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1022,8 +1022,9 @@ this option off avoids that validation failure. .TP .B harden\-unknown\-additional: \fI Harden against unknown records in the authority section and additional -section. Default is yes. If no, such records are copied from the upstream -and presented to the client together with the answer. +section. Default is no. If no, such records are copied from the upstream +and presented to the client together with the answer. If yes, it could +hamper future protocol developments that want to add records. .TP .B use\-caps\-for\-id: \fI Use 0x20\-encoded random bits in the query to foil spoof attempts. diff --git a/util/config_file.c b/util/config_file.c index 5f605c5b1..b41e66468 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -233,7 +233,7 @@ config_create(void) cfg->harden_below_nxdomain = 1; cfg->harden_referral_path = 0; cfg->harden_algo_downgrade = 0; - cfg->harden_unknown_additional = 1; + cfg->harden_unknown_additional = 0; cfg->use_caps_bits_for_id = 0; cfg->caps_whitelist = NULL; cfg->private_address = NULL; From 6afdc336ba2aeb868894e8656cee2b7c6cdcbc46 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 19 Jan 2023 16:06:30 +0100 Subject: [PATCH 055/177] - Fix test for new default. --- doc/Changelog | 1 + testdata/val_any.rpl | 1 + testdata/val_any_dname.rpl | 1 - testdata/val_any_negcache.rpl | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 33450ab93..5e6d921fc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -10,6 +10,7 @@ Thanks to Xiang Li, from NISL Lab, Tsinghua University. - Set default for harden-unknown-additional to no. So that it does not hamper future protocol developments. + - Fix test for new default. 18 January 2023: Wouter - Fix not following cleared RD flags potentially enables amplification diff --git a/testdata/val_any.rpl b/testdata/val_any.rpl index 7d94094ce..ee249ffb6 100644 --- a/testdata/val_any.rpl +++ b/testdata/val_any.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no rrset-roundrobin: no + harden-unknown-additional: yes stub-zone: name: "." diff --git a/testdata/val_any_dname.rpl b/testdata/val_any_dname.rpl index ff06de1eb..005d29606 100644 --- a/testdata/val_any_dname.rpl +++ b/testdata/val_any_dname.rpl @@ -8,7 +8,6 @@ server: fake-sha1: yes trust-anchor-signaling: no rrset-roundrobin: no - ; this allows the SRV entry in the answer packet additional section. harden-unknown-additional: no stub-zone: diff --git a/testdata/val_any_negcache.rpl b/testdata/val_any_negcache.rpl index 1f04dd885..77aacba8c 100644 --- a/testdata/val_any_negcache.rpl +++ b/testdata/val_any_negcache.rpl @@ -9,6 +9,7 @@ server: trust-anchor-signaling: no rrset-roundrobin: no aggressive-nsec: yes + harden-unknown-additional: yes stub-zone: name: "." From 55a28d69466e460c71ab6d1627cf540e98e912a9 Mon Sep 17 00:00:00 2001 From: "R. Christian McDonald" Date: Thu, 19 Jan 2023 16:30:47 -0500 Subject: [PATCH 056/177] cleanup callbacks that might have been registered by Python script --- pythonmod/pythonmod.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 19b464633..aa8609c58 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -3,6 +3,7 @@ * * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) + * Copyright (c) 2022, Rubicon Communications, LLC (Netgate) * * This software is open source. * @@ -567,6 +568,10 @@ void pythonmod_deinit(struct module_env* env, int id) /* Module is deallocated in Python */ env->modinfo[id] = NULL; + + /* iterate over all possible callback types and clean up each in turn */ + for (int cbtype = 0; cbtype < inplace_cb_types_total; cbtype++) + inplace_cb_delete(env, cbtype, id); } void pythonmod_inform_super(struct module_qstate* qstate, int id, struct module_qstate* super) From 111e66ae64c5f533b0e9ce87948d66495639c784 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 20 Jan 2023 16:19:20 +0100 Subject: [PATCH 057/177] Changelog note for #819, generate configparser.c and comment syntax change. - Merge #819: Added new static zone type block_a to suppress all A queries for specific zones. --- doc/Changelog | 4 + services/localzone.c | 2 +- util/configparser.c | 637 ++++++++++++++++++++++--------------------- 3 files changed, 324 insertions(+), 319 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 5e6d921fc..60c6731a8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +20 January 2023: Wouter + - Merge #819: Added new static zone type block_a to suppress all A + queries for specific zones. + 19 January 2023: Wouter - Set max-udp-size default to 1232. This is the same default value as the default value for edns-buffer-size. It restricts client edns diff --git a/services/localzone.c b/services/localzone.c index 996acdbf9..48fa730b5 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1681,7 +1681,7 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, /* no NODATA or NXDOMAINS for this zone type */ return 0; } else if(lz_type == local_zone_block_a) { - // Return NODATA for all A queries + /* Return NODATA for all A queries */ if(qinfo->qtype == LDNS_RR_TYPE_A) { local_error_encode(qinfo, env, edns, repinfo, buf, temp, LDNS_RCODE_NOERROR, (LDNS_RCODE_NOERROR|BIT_AA), diff --git a/util/configparser.c b/util/configparser.c index e2f73e57a..fac2d4a72 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1288,28 +1288,28 @@ static const yytype_int16 yyrline[] = 1860, 1867, 1877, 1885, 1894, 1901, 1919, 1932, 1945, 1958, 1967, 1976, 1985, 1994, 2004, 2014, 2025, 2034, 2043, 2052, 2061, 2070, 2079, 2088, 2097, 2110, 2123, 2132, 2139, 2148, - 2157, 2166, 2175, 2184, 2192, 2205, 2213, 2268, 2275, 2290, - 2300, 2310, 2317, 2324, 2331, 2340, 2348, 2362, 2383, 2404, - 2416, 2428, 2440, 2449, 2470, 2482, 2494, 2503, 2524, 2533, - 2542, 2550, 2558, 2571, 2584, 2599, 2614, 2623, 2632, 2642, - 2652, 2661, 2670, 2679, 2685, 2694, 2703, 2713, 2723, 2733, - 2742, 2752, 2761, 2774, 2787, 2799, 2813, 2825, 2839, 2848, - 2859, 2868, 2875, 2885, 2892, 2899, 2908, 2917, 2927, 2937, - 2947, 2957, 2964, 2971, 2980, 2989, 2999, 3009, 3019, 3026, - 3033, 3040, 3048, 3058, 3068, 3078, 3088, 3098, 3108, 3164, - 3174, 3182, 3190, 3205, 3214, 3220, 3221, 3222, 3222, 3222, - 3223, 3223, 3223, 3224, 3224, 3226, 3236, 3245, 3252, 3259, - 3266, 3273, 3280, 3287, 3293, 3294, 3295, 3295, 3295, 3296, - 3296, 3296, 3297, 3298, 3298, 3299, 3299, 3300, 3300, 3301, - 3302, 3303, 3304, 3305, 3306, 3308, 3317, 3327, 3334, 3341, - 3350, 3357, 3364, 3371, 3378, 3387, 3396, 3403, 3410, 3420, - 3430, 3440, 3450, 3460, 3470, 3476, 3477, 3478, 3480, 3486, - 3492, 3493, 3494, 3496, 3502, 3512, 3519, 3528, 3536, 3542, - 3543, 3545, 3545, 3545, 3546, 3546, 3547, 3548, 3549, 3550, - 3551, 3553, 3563, 3572, 3579, 3588, 3595, 3604, 3612, 3625, - 3633, 3646, 3652, 3653, 3654, 3654, 3655, 3655, 3655, 3656, - 3658, 3670, 3682, 3694, 3709, 3722, 3735, 3746, 3752, 3753, - 3754, 3754, 3756, 3771 + 2157, 2166, 2175, 2184, 2192, 2205, 2213, 2269, 2276, 2291, + 2301, 2311, 2318, 2325, 2332, 2341, 2349, 2363, 2384, 2405, + 2417, 2429, 2441, 2450, 2471, 2483, 2495, 2504, 2525, 2534, + 2543, 2551, 2559, 2572, 2585, 2600, 2615, 2624, 2633, 2643, + 2653, 2662, 2671, 2680, 2686, 2695, 2704, 2714, 2724, 2734, + 2743, 2753, 2762, 2775, 2788, 2800, 2814, 2826, 2840, 2849, + 2860, 2869, 2876, 2886, 2893, 2900, 2909, 2918, 2928, 2938, + 2948, 2958, 2965, 2972, 2981, 2990, 3000, 3010, 3020, 3027, + 3034, 3041, 3049, 3059, 3069, 3079, 3089, 3099, 3109, 3165, + 3175, 3183, 3191, 3206, 3215, 3221, 3222, 3223, 3223, 3223, + 3224, 3224, 3224, 3225, 3225, 3227, 3237, 3246, 3253, 3260, + 3267, 3274, 3281, 3288, 3294, 3295, 3296, 3296, 3296, 3297, + 3297, 3297, 3298, 3299, 3299, 3300, 3300, 3301, 3301, 3302, + 3303, 3304, 3305, 3306, 3307, 3309, 3318, 3328, 3335, 3342, + 3351, 3358, 3365, 3372, 3379, 3388, 3397, 3404, 3411, 3421, + 3431, 3441, 3451, 3461, 3471, 3477, 3478, 3479, 3481, 3487, + 3493, 3494, 3495, 3497, 3503, 3513, 3520, 3529, 3537, 3543, + 3544, 3546, 3546, 3546, 3547, 3547, 3548, 3549, 3550, 3551, + 3552, 3554, 3564, 3573, 3580, 3589, 3596, 3605, 3613, 3626, + 3634, 3647, 3653, 3654, 3655, 3655, 3656, 3656, 3656, 3657, + 3659, 3671, 3683, 3695, 3710, 3723, 3736, 3747, 3753, 3754, + 3755, 3755, 3757, 3772 }; #endif @@ -5293,6 +5293,7 @@ yyreduce: strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 && strcmp((yyvsp[0].str), "typetransparent")!=0 && strcmp((yyvsp[0].str), "always_transparent")!=0 + && strcmp((yyvsp[0].str), "block_a")!=0 && strcmp((yyvsp[0].str), "always_refuse")!=0 && strcmp((yyvsp[0].str), "always_nxdomain")!=0 && strcmp((yyvsp[0].str), "always_nodata")!=0 @@ -5305,7 +5306,7 @@ yyreduce: yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " - "inform_redirect, always_transparent, " + "inform_redirect, always_transparent, block_a," "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); @@ -5339,21 +5340,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5343 "util/configparser.c" +#line 5344 "util/configparser.c" break; case 497: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2269 "./util/configparser.y" +#line 2270 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5353 "util/configparser.c" +#line 5354 "util/configparser.c" break; case 498: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2276 "./util/configparser.y" +#line 2277 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5367,11 +5368,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5371 "util/configparser.c" +#line 5372 "util/configparser.c" break; case 499: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2291 "./util/configparser.y" +#line 2292 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5380,11 +5381,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5384 "util/configparser.c" +#line 5385 "util/configparser.c" break; case 500: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2301 "./util/configparser.y" +#line 2302 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5393,41 +5394,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5397 "util/configparser.c" +#line 5398 "util/configparser.c" break; case 501: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2311 "./util/configparser.y" +#line 2312 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5407 "util/configparser.c" +#line 5408 "util/configparser.c" break; case 502: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2318 "./util/configparser.y" +#line 2319 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5417 "util/configparser.c" +#line 5418 "util/configparser.c" break; case 503: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2325 "./util/configparser.y" +#line 2326 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5427 "util/configparser.c" +#line 5428 "util/configparser.c" break; case 504: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2332 "./util/configparser.y" +#line 2333 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5435,22 +5436,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5439 "util/configparser.c" +#line 5440 "util/configparser.c" break; case 505: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2341 "./util/configparser.y" +#line 2342 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5450 "util/configparser.c" +#line 5451 "util/configparser.c" break; case 506: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2349 "./util/configparser.y" +#line 2350 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5463,11 +5464,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5468 "util/configparser.c" break; case 507: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2363 "./util/configparser.y" +#line 2364 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5487,11 +5488,11 @@ yyreduce: } } } -#line 5491 "util/configparser.c" +#line 5492 "util/configparser.c" break; case 508: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2384 "./util/configparser.y" +#line 2385 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5511,11 +5512,11 @@ yyreduce: } } } -#line 5515 "util/configparser.c" +#line 5516 "util/configparser.c" break; case 509: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2405 "./util/configparser.y" +#line 2406 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5526,11 +5527,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5530 "util/configparser.c" +#line 5531 "util/configparser.c" break; case 510: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2417 "./util/configparser.y" +#line 2418 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5541,11 +5542,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5545 "util/configparser.c" +#line 5546 "util/configparser.c" break; case 511: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2429 "./util/configparser.y" +#line 2430 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5556,11 +5557,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5560 "util/configparser.c" +#line 5561 "util/configparser.c" break; case 512: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2441 "./util/configparser.y" +#line 2442 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5568,11 +5569,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5572 "util/configparser.c" +#line 5573 "util/configparser.c" break; case 513: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ -#line 2450 "./util/configparser.y" +#line 2451 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5592,11 +5593,11 @@ yyreduce: } } } -#line 5596 "util/configparser.c" +#line 5597 "util/configparser.c" break; case 514: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2471 "./util/configparser.y" +#line 2472 "./util/configparser.y" { OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, @@ -5607,11 +5608,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5611 "util/configparser.c" +#line 5612 "util/configparser.c" break; case 515: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2483 "./util/configparser.y" +#line 2484 "./util/configparser.y" { OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, @@ -5622,11 +5623,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5626 "util/configparser.c" +#line 5627 "util/configparser.c" break; case 516: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ -#line 2495 "./util/configparser.y" +#line 2496 "./util/configparser.y" { OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, @@ -5634,11 +5635,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5638 "util/configparser.c" +#line 5639 "util/configparser.c" break; case 517: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2504 "./util/configparser.y" +#line 2505 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5658,11 +5659,11 @@ yyreduce: } } } -#line 5662 "util/configparser.c" +#line 5663 "util/configparser.c" break; case 518: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2525 "./util/configparser.y" +#line 2526 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5670,11 +5671,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5674 "util/configparser.c" +#line 5675 "util/configparser.c" break; case 519: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2534 "./util/configparser.y" +#line 2535 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5682,33 +5683,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5686 "util/configparser.c" +#line 5687 "util/configparser.c" break; case 520: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2543 "./util/configparser.y" +#line 2544 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5697 "util/configparser.c" +#line 5698 "util/configparser.c" break; case 521: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2551 "./util/configparser.y" +#line 2552 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5708 "util/configparser.c" +#line 5709 "util/configparser.c" break; case 522: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2559 "./util/configparser.y" +#line 2560 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5720,11 +5721,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5724 "util/configparser.c" +#line 5725 "util/configparser.c" break; case 523: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2572 "./util/configparser.y" +#line 2573 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5736,11 +5737,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5740 "util/configparser.c" +#line 5741 "util/configparser.c" break; case 524: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2585 "./util/configparser.y" +#line 2586 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5754,11 +5755,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5758 "util/configparser.c" +#line 5759 "util/configparser.c" break; case 525: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2600 "./util/configparser.y" +#line 2601 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5772,11 +5773,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5776 "util/configparser.c" +#line 5777 "util/configparser.c" break; case 526: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2615 "./util/configparser.y" +#line 2616 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5784,11 +5785,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5788 "util/configparser.c" +#line 5789 "util/configparser.c" break; case 527: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2624 "./util/configparser.y" +#line 2625 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5796,11 +5797,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5800 "util/configparser.c" +#line 5801 "util/configparser.c" break; case 528: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2633 "./util/configparser.y" +#line 2634 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5809,11 +5810,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5813 "util/configparser.c" +#line 5814 "util/configparser.c" break; case 529: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2643 "./util/configparser.y" +#line 2644 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5822,11 +5823,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5826 "util/configparser.c" +#line 5827 "util/configparser.c" break; case 530: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2653 "./util/configparser.y" +#line 2654 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5834,11 +5835,11 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5838 "util/configparser.c" +#line 5839 "util/configparser.c" break; case 531: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ -#line 2662 "./util/configparser.y" +#line 2663 "./util/configparser.y" { OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5846,11 +5847,11 @@ yyreduce: else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5850 "util/configparser.c" +#line 5851 "util/configparser.c" break; case 532: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ -#line 2671 "./util/configparser.y" +#line 2672 "./util/configparser.y" { OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5858,20 +5859,20 @@ yyreduce: else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5862 "util/configparser.c" +#line 5863 "util/configparser.c" break; case 533: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2680 "./util/configparser.y" +#line 2681 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5871 "util/configparser.c" +#line 5872 "util/configparser.c" break; case 534: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2686 "./util/configparser.y" +#line 2687 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5879,11 +5880,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5883 "util/configparser.c" +#line 5884 "util/configparser.c" break; case 535: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2695 "./util/configparser.y" +#line 2696 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5891,11 +5892,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5895 "util/configparser.c" +#line 5896 "util/configparser.c" break; case 536: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2704 "./util/configparser.y" +#line 2705 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5904,11 +5905,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5909 "util/configparser.c" break; case 537: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2714 "./util/configparser.y" +#line 2715 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5917,11 +5918,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5921 "util/configparser.c" +#line 5922 "util/configparser.c" break; case 538: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2724 "./util/configparser.y" +#line 2725 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5930,11 +5931,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5934 "util/configparser.c" +#line 5935 "util/configparser.c" break; case 539: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2734 "./util/configparser.y" +#line 2735 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5942,11 +5943,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5946 "util/configparser.c" +#line 5947 "util/configparser.c" break; case 540: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2743 "./util/configparser.y" +#line 2744 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5955,11 +5956,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5959 "util/configparser.c" +#line 5960 "util/configparser.c" break; case 541: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2753 "./util/configparser.y" +#line 2754 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5967,11 +5968,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5971 "util/configparser.c" +#line 5972 "util/configparser.c" break; case 542: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2762 "./util/configparser.y" +#line 2763 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5983,11 +5984,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5987 "util/configparser.c" +#line 5988 "util/configparser.c" break; case 543: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2775 "./util/configparser.y" +#line 2776 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5999,11 +6000,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6003 "util/configparser.c" +#line 6004 "util/configparser.c" break; case 544: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2788 "./util/configparser.y" +#line 2789 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6014,11 +6015,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6018 "util/configparser.c" +#line 6019 "util/configparser.c" break; case 545: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2800 "./util/configparser.y" +#line 2801 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6031,11 +6032,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6035 "util/configparser.c" +#line 6036 "util/configparser.c" break; case 546: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2814 "./util/configparser.y" +#line 2815 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6046,11 +6047,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6050 "util/configparser.c" +#line 6051 "util/configparser.c" break; case 547: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2826 "./util/configparser.y" +#line 2827 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6063,11 +6064,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6067 "util/configparser.c" +#line 6068 "util/configparser.c" break; case 548: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2840 "./util/configparser.y" +#line 2841 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6075,11 +6076,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6079 "util/configparser.c" +#line 6080 "util/configparser.c" break; case 549: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2849 "./util/configparser.y" +#line 2850 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6089,11 +6090,11 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6093 "util/configparser.c" +#line 6094 "util/configparser.c" break; case 550: /* server_ede: VAR_EDE STRING_ARG */ -#line 2860 "./util/configparser.y" +#line 2861 "./util/configparser.y" { OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6101,21 +6102,21 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6105 "util/configparser.c" +#line 6106 "util/configparser.c" break; case 551: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2869 "./util/configparser.y" +#line 2870 "./util/configparser.y" { OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6115 "util/configparser.c" +#line 6116 "util/configparser.c" break; case 552: /* stub_name: VAR_NAME STRING_ARG */ -#line 2876 "./util/configparser.y" +#line 2877 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6124,31 +6125,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6128 "util/configparser.c" +#line 6129 "util/configparser.c" break; case 553: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2886 "./util/configparser.y" +#line 2887 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6138 "util/configparser.c" +#line 6139 "util/configparser.c" break; case 554: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2893 "./util/configparser.y" +#line 2894 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6148 "util/configparser.c" +#line 6149 "util/configparser.c" break; case 555: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2900 "./util/configparser.y" +#line 2901 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6156,11 +6157,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6160 "util/configparser.c" +#line 6161 "util/configparser.c" break; case 556: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2909 "./util/configparser.y" +#line 2910 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6168,11 +6169,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6172 "util/configparser.c" +#line 6173 "util/configparser.c" break; case 557: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2918 "./util/configparser.y" +#line 2919 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6181,11 +6182,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6185 "util/configparser.c" +#line 6186 "util/configparser.c" break; case 558: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2928 "./util/configparser.y" +#line 2929 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6194,11 +6195,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6198 "util/configparser.c" +#line 6199 "util/configparser.c" break; case 559: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2938 "./util/configparser.y" +#line 2939 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6207,11 +6208,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6211 "util/configparser.c" +#line 6212 "util/configparser.c" break; case 560: /* forward_name: VAR_NAME STRING_ARG */ -#line 2948 "./util/configparser.y" +#line 2949 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6220,31 +6221,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6224 "util/configparser.c" +#line 6225 "util/configparser.c" break; case 561: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2958 "./util/configparser.y" +#line 2959 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6234 "util/configparser.c" +#line 6235 "util/configparser.c" break; case 562: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2965 "./util/configparser.y" +#line 2966 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6244 "util/configparser.c" +#line 6245 "util/configparser.c" break; case 563: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2972 "./util/configparser.y" +#line 2973 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6252,11 +6253,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6256 "util/configparser.c" +#line 6257 "util/configparser.c" break; case 564: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2981 "./util/configparser.y" +#line 2982 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6264,11 +6265,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6268 "util/configparser.c" +#line 6269 "util/configparser.c" break; case 565: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2990 "./util/configparser.y" +#line 2991 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6277,11 +6278,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6281 "util/configparser.c" +#line 6282 "util/configparser.c" break; case 566: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 3000 "./util/configparser.y" +#line 3001 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6290,11 +6291,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6294 "util/configparser.c" +#line 6295 "util/configparser.c" break; case 567: /* auth_name: VAR_NAME STRING_ARG */ -#line 3010 "./util/configparser.y" +#line 3011 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6303,52 +6304,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6307 "util/configparser.c" +#line 6308 "util/configparser.c" break; case 568: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 3020 "./util/configparser.y" +#line 3021 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6317 "util/configparser.c" +#line 6318 "util/configparser.c" break; case 569: /* auth_master: VAR_MASTER STRING_ARG */ -#line 3027 "./util/configparser.y" +#line 3028 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6327 "util/configparser.c" +#line 6328 "util/configparser.c" break; case 570: /* auth_url: VAR_URL STRING_ARG */ -#line 3034 "./util/configparser.y" +#line 3035 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6337 "util/configparser.c" +#line 6338 "util/configparser.c" break; case 571: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3041 "./util/configparser.y" +#line 3042 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6348 "util/configparser.c" +#line 6349 "util/configparser.c" break; case 572: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3049 "./util/configparser.y" +#line 3050 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6357,11 +6358,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6361 "util/configparser.c" +#line 6362 "util/configparser.c" break; case 573: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3059 "./util/configparser.y" +#line 3060 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6370,11 +6371,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6374 "util/configparser.c" +#line 6375 "util/configparser.c" break; case 574: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3069 "./util/configparser.y" +#line 3070 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6383,11 +6384,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 6388 "util/configparser.c" break; case 575: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3079 "./util/configparser.y" +#line 3080 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6396,11 +6397,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 6401 "util/configparser.c" break; case 576: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3089 "./util/configparser.y" +#line 3090 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6409,11 +6410,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6413 "util/configparser.c" +#line 6414 "util/configparser.c" break; case 577: /* view_name: VAR_NAME STRING_ARG */ -#line 3099 "./util/configparser.y" +#line 3100 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6422,11 +6423,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6426 "util/configparser.c" +#line 6427 "util/configparser.c" break; case 578: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3109 "./util/configparser.y" +#line 3110 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -6481,11 +6482,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6485 "util/configparser.c" +#line 6486 "util/configparser.c" break; case 579: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3165 "./util/configparser.y" +#line 3166 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6494,33 +6495,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6498 "util/configparser.c" +#line 6499 "util/configparser.c" break; case 580: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3175 "./util/configparser.y" +#line 3176 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6509 "util/configparser.c" +#line 6510 "util/configparser.c" break; case 581: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3183 "./util/configparser.y" +#line 3184 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6520 "util/configparser.c" +#line 6521 "util/configparser.c" break; case 582: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3191 "./util/configparser.y" +#line 3192 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6534,11 +6535,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6538 "util/configparser.c" +#line 6539 "util/configparser.c" break; case 583: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3206 "./util/configparser.y" +#line 3207 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6546,20 +6547,20 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6550 "util/configparser.c" +#line 6551 "util/configparser.c" break; case 584: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3215 "./util/configparser.y" +#line 3216 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6559 "util/configparser.c" +#line 6560 "util/configparser.c" break; case 595: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3227 "./util/configparser.y" +#line 3228 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6568,11 +6569,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6572 "util/configparser.c" +#line 6573 "util/configparser.c" break; case 596: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3237 "./util/configparser.y" +#line 3238 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6580,80 +6581,80 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6584 "util/configparser.c" +#line 6585 "util/configparser.c" break; case 597: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3246 "./util/configparser.y" +#line 3247 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6594 "util/configparser.c" +#line 6595 "util/configparser.c" break; case 598: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3253 "./util/configparser.y" +#line 3254 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6604 "util/configparser.c" +#line 6605 "util/configparser.c" break; case 599: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3260 "./util/configparser.y" +#line 3261 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6614 "util/configparser.c" +#line 6615 "util/configparser.c" break; case 600: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3267 "./util/configparser.y" +#line 3268 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6624 "util/configparser.c" +#line 6625 "util/configparser.c" break; case 601: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3274 "./util/configparser.y" +#line 3275 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6634 "util/configparser.c" +#line 6635 "util/configparser.c" break; case 602: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3281 "./util/configparser.y" +#line 3282 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6644 "util/configparser.c" +#line 6645 "util/configparser.c" break; case 603: /* dtstart: VAR_DNSTAP */ -#line 3288 "./util/configparser.y" +#line 3289 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6653 "util/configparser.c" +#line 6654 "util/configparser.c" break; case 625: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3309 "./util/configparser.y" +#line 3310 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6661,11 +6662,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6665 "util/configparser.c" +#line 6666 "util/configparser.c" break; case 626: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3318 "./util/configparser.y" +#line 3319 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6674,31 +6675,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6678 "util/configparser.c" +#line 6679 "util/configparser.c" break; case 627: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3328 "./util/configparser.y" +#line 3329 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6688 "util/configparser.c" +#line 6689 "util/configparser.c" break; case 628: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3335 "./util/configparser.y" +#line 3336 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6698 "util/configparser.c" +#line 6699 "util/configparser.c" break; case 629: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3342 "./util/configparser.y" +#line 3343 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6706,51 +6707,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6710 "util/configparser.c" +#line 6711 "util/configparser.c" break; case 630: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3351 "./util/configparser.y" +#line 3352 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6720 "util/configparser.c" +#line 6721 "util/configparser.c" break; case 631: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3358 "./util/configparser.y" +#line 3359 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6730 "util/configparser.c" +#line 6731 "util/configparser.c" break; case 632: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3365 "./util/configparser.y" +#line 3366 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6740 "util/configparser.c" +#line 6741 "util/configparser.c" break; case 633: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3372 "./util/configparser.y" +#line 3373 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6750 "util/configparser.c" +#line 6751 "util/configparser.c" break; case 634: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3379 "./util/configparser.y" +#line 3380 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6758,11 +6759,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6762 "util/configparser.c" +#line 6763 "util/configparser.c" break; case 635: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3388 "./util/configparser.y" +#line 3389 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6770,31 +6771,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6774 "util/configparser.c" +#line 6775 "util/configparser.c" break; case 636: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3397 "./util/configparser.y" +#line 3398 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6784 "util/configparser.c" +#line 6785 "util/configparser.c" break; case 637: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3404 "./util/configparser.y" +#line 3405 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6794 "util/configparser.c" +#line 6795 "util/configparser.c" break; case 638: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3411 "./util/configparser.y" +#line 3412 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6803,11 +6804,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6807 "util/configparser.c" +#line 6808 "util/configparser.c" break; case 639: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3421 "./util/configparser.y" +#line 3422 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6816,11 +6817,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6820 "util/configparser.c" +#line 6821 "util/configparser.c" break; case 640: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3431 "./util/configparser.y" +#line 3432 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6829,11 +6830,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6833 "util/configparser.c" +#line 6834 "util/configparser.c" break; case 641: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3441 "./util/configparser.y" +#line 3442 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6842,11 +6843,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6846 "util/configparser.c" +#line 6847 "util/configparser.c" break; case 642: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3451 "./util/configparser.y" +#line 3452 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6855,11 +6856,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6859 "util/configparser.c" +#line 6860 "util/configparser.c" break; case 643: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3461 "./util/configparser.y" +#line 3462 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6868,49 +6869,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6872 "util/configparser.c" +#line 6873 "util/configparser.c" break; case 644: /* pythonstart: VAR_PYTHON */ -#line 3471 "./util/configparser.y" +#line 3472 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6881 "util/configparser.c" +#line 6882 "util/configparser.c" break; case 648: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3481 "./util/configparser.y" +#line 3482 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6891 "util/configparser.c" +#line 6892 "util/configparser.c" break; case 649: /* dynlibstart: VAR_DYNLIB */ -#line 3487 "./util/configparser.y" +#line 3488 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6900 "util/configparser.c" +#line 6901 "util/configparser.c" break; case 653: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3497 "./util/configparser.y" +#line 3498 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6910 "util/configparser.c" +#line 6911 "util/configparser.c" break; case 654: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3503 "./util/configparser.y" +#line 3504 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6919,21 +6920,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6923 "util/configparser.c" +#line 6924 "util/configparser.c" break; case 655: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3513 "./util/configparser.y" +#line 3514 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6933 "util/configparser.c" +#line 6934 "util/configparser.c" break; case 656: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3520 "./util/configparser.y" +#line 3521 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6941,31 +6942,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6945 "util/configparser.c" +#line 6946 "util/configparser.c" break; case 657: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3529 "./util/configparser.y" +#line 3530 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6956 "util/configparser.c" +#line 6957 "util/configparser.c" break; case 658: /* dnscstart: VAR_DNSCRYPT */ -#line 3537 "./util/configparser.y" +#line 3538 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6965 "util/configparser.c" +#line 6966 "util/configparser.c" break; case 671: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3554 "./util/configparser.y" +#line 3555 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6973,11 +6974,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6977 "util/configparser.c" +#line 6978 "util/configparser.c" break; case 672: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3564 "./util/configparser.y" +#line 3565 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6985,21 +6986,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6989 "util/configparser.c" +#line 6990 "util/configparser.c" break; case 673: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3573 "./util/configparser.y" +#line 3574 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6999 "util/configparser.c" +#line 7000 "util/configparser.c" break; case 674: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3580 "./util/configparser.y" +#line 3581 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -7007,21 +7008,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 7011 "util/configparser.c" +#line 7012 "util/configparser.c" break; case 675: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3589 "./util/configparser.y" +#line 3590 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 7021 "util/configparser.c" +#line 7022 "util/configparser.c" break; case 676: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3596 "./util/configparser.y" +#line 3597 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -7029,22 +7030,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 7033 "util/configparser.c" +#line 7034 "util/configparser.c" break; case 677: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3605 "./util/configparser.y" +#line 3606 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7044 "util/configparser.c" +#line 7045 "util/configparser.c" break; case 678: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3613 "./util/configparser.y" +#line 3614 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7056,22 +7057,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7060 "util/configparser.c" +#line 7061 "util/configparser.c" break; case 679: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3626 "./util/configparser.y" +#line 3627 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7071 "util/configparser.c" +#line 7072 "util/configparser.c" break; case 680: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3634 "./util/configparser.y" +#line 3635 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7083,20 +7084,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7087 "util/configparser.c" +#line 7088 "util/configparser.c" break; case 681: /* cachedbstart: VAR_CACHEDB */ -#line 3647 "./util/configparser.y" +#line 3648 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 7096 "util/configparser.c" +#line 7097 "util/configparser.c" break; case 690: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3659 "./util/configparser.y" +#line 3660 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7107,11 +7108,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7111 "util/configparser.c" +#line 7112 "util/configparser.c" break; case 691: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3671 "./util/configparser.y" +#line 3672 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7122,11 +7123,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7126 "util/configparser.c" +#line 7127 "util/configparser.c" break; case 692: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3683 "./util/configparser.y" +#line 3684 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7137,11 +7138,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7141 "util/configparser.c" +#line 7142 "util/configparser.c" break; case 693: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3695 "./util/configparser.y" +#line 3696 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7155,11 +7156,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7159 "util/configparser.c" +#line 7160 "util/configparser.c" break; case 694: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3710 "./util/configparser.y" +#line 3711 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7171,11 +7172,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7175 "util/configparser.c" +#line 7176 "util/configparser.c" break; case 695: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3723 "./util/configparser.y" +#line 3724 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7187,11 +7188,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7191 "util/configparser.c" +#line 7192 "util/configparser.c" break; case 696: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3736 "./util/configparser.y" +#line 3737 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7201,20 +7202,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7205 "util/configparser.c" +#line 7206 "util/configparser.c" break; case 697: /* ipsetstart: VAR_IPSET */ -#line 3747 "./util/configparser.y" +#line 3748 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7214 "util/configparser.c" +#line 7215 "util/configparser.c" break; case 702: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3757 "./util/configparser.y" +#line 3758 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7228,11 +7229,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7232 "util/configparser.c" +#line 7233 "util/configparser.c" break; case 703: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3772 "./util/configparser.y" +#line 3773 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7246,11 +7247,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7250 "util/configparser.c" +#line 7251 "util/configparser.c" break; -#line 7254 "util/configparser.c" +#line 7255 "util/configparser.c" default: break; } @@ -7444,7 +7445,7 @@ yyreturn: return yyresult; } -#line 3786 "./util/configparser.y" +#line 3787 "./util/configparser.y" /* parse helper routines could be here */ From 77f15428c9b15c997900d249f8f082888574ab7d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Jan 2023 10:09:28 +0100 Subject: [PATCH 058/177] - Add #835: [FR] Ability to use Redis unix sockets. --- cachedb/redis.c | 11 +- doc/Changelog | 3 + doc/example.conf.in | 2 + doc/unbound.conf.5.in | 5 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 3105 +++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 2452 ++++++++++++++++---------------- util/configparser.h | 224 +-- util/configparser.y | 16 +- 11 files changed, 2944 insertions(+), 2880 deletions(-) diff --git a/cachedb/redis.c b/cachedb/redis.c index 16c3741f7..21b501bf7 100644 --- a/cachedb/redis.c +++ b/cachedb/redis.c @@ -56,6 +56,7 @@ struct redis_moddata { int numctxs; /* number of ctx entries */ const char* server_host; /* server's IP address or host name */ int server_port; /* server's TCP port */ + const char* server_path; /* server's unix path, or "", NULL if unused */ struct timeval timeout; /* timeout for connection setup and commands */ }; @@ -67,8 +68,13 @@ redis_connect(const struct redis_moddata* moddata) { redisContext* ctx; - ctx = redisConnectWithTimeout(moddata->server_host, - moddata->server_port, moddata->timeout); + if(moddata->server_path && moddata->server_path[0]!=0) { + ctx = redisConnectUnixWithTimeout(moddata->server_path, + moddata->timeout); + } else { + ctx = redisConnectWithTimeout(moddata->server_host, + moddata->server_port, moddata->timeout); + } if(!ctx || ctx->err) { const char *errstr = "out of memory"; if(ctx) @@ -112,6 +118,7 @@ redis_init(struct module_env* env, struct cachedb_env* cachedb_env) * we don't have to free it in this module. */ moddata->server_host = env->cfg->redis_server_host; moddata->server_port = env->cfg->redis_server_port; + moddata->server_path = env->cfg->redis_server_path; moddata->timeout.tv_sec = env->cfg->redis_timeout / 1000; moddata->timeout.tv_usec = (env->cfg->redis_timeout % 1000) * 1000; for(i = 0; i < moddata->numctxs; i++) diff --git a/doc/Changelog b/doc/Changelog index 60c6731a8..6717012cd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 January 2023: Wouter + - Add #835: [FR] Ability to use Redis unix sockets. + 20 January 2023: Wouter - Merge #819: Added new static zone type block_a to suppress all A queries for specific zones. diff --git a/doc/example.conf.in b/doc/example.conf.in index a2efafa23..a6d4373c4 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1212,6 +1212,8 @@ remote-control: # redis-server-host: 127.0.0.1 # # redis server's TCP port # redis-server-port: 6379 +# # if the server uses a unix socket, set its path, or "" when not used. +# # redis-server-path: "/var/lib/redis/redis-server.sock" # # timeout (in ms) for communication with the redis server # redis-timeout: 100 # # set timeout on redis records based on DNS response TTL diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 5ac12f290..dffbe875b 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2599,6 +2599,11 @@ This option defaults to "127.0.0.1". The TCP port number of the Redis server. This option defaults to 6379. .TP +.B redis-server-path: \fI\fR +The unix socket path to connect to the redis server. Off by default, and it +can be set to "" to turn this off. Unix sockets may have better throughput +than the IP address option. +.TP .B redis-timeout: \fI\fR The period until when Unbound waits for a response from the Redis sever. If this timeout expires Unbound closes the connection, treats it as diff --git a/util/config_file.c b/util/config_file.c index b41e66468..ff0afbee3 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -373,6 +373,7 @@ config_create(void) if(!(cfg->cachedb_secret = strdup("default"))) goto error_exit; #ifdef USE_REDIS if(!(cfg->redis_server_host = strdup("127.0.0.1"))) goto error_exit; + cfg->redis_server_path = NULL; cfg->redis_timeout = 100; cfg->redis_server_port = 6379; cfg->redis_expire_records = 0; @@ -1290,6 +1291,7 @@ config_get_option(struct config_file* cfg, const char* opt, #ifdef USE_REDIS else O_STR(opt, "redis-server-host", redis_server_host) else O_DEC(opt, "redis-server-port", redis_server_port) + else O_STR(opt, "redis-server-path", redis_server_path) else O_DEC(opt, "redis-timeout", redis_timeout) else O_YNO(opt, "redis-expire-records", redis_expire_records) #endif /* USE_REDIS */ @@ -1666,6 +1668,7 @@ config_delete(struct config_file* cfg) free(cfg->cachedb_secret); #ifdef USE_REDIS free(cfg->redis_server_host); + free(cfg->redis_server_path); #endif /* USE_REDIS */ #endif /* USE_CACHEDB */ #ifdef USE_IPSET diff --git a/util/config_file.h b/util/config_file.h index a35e75cbb..e3fe61ffe 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -694,6 +694,8 @@ struct config_file { char* redis_server_host; /** redis server's TCP port */ int redis_server_port; + /** redis server's unix path. Or "", NULL if unused */ + char* redis_server_path; /** timeout (in ms) for communication with the redis server */ int redis_timeout; /** set timeout on redis records based on DNS response ttl */ diff --git a/util/configlexer.c b/util/configlexer.c index 3030367e1..ca976f390 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 373 -#define YY_END_OF_BUFFER 374 +#define YY_NUM_RULES 374 +#define YY_END_OF_BUFFER 375 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,416 +363,416 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3702] = +static const flex_int16_t yy_accept[3706] = { 0, - 1, 1, 347, 347, 351, 351, 355, 355, 359, 359, - 1, 1, 363, 363, 367, 367, 374, 371, 1, 345, - 345, 372, 2, 372, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 347, 348, 348, 349, - 372, 351, 352, 352, 353, 372, 358, 355, 356, 356, - 357, 372, 359, 360, 360, 361, 372, 370, 346, 2, - 350, 372, 370, 366, 363, 364, 364, 365, 372, 367, - 368, 368, 369, 372, 371, 0, 1, 2, 2, 2, - 2, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 1, 1, 348, 348, 352, 352, 356, 356, 360, 360, + 1, 1, 364, 364, 368, 368, 375, 372, 1, 346, + 346, 373, 2, 373, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 348, 349, 349, 350, + 373, 352, 353, 353, 354, 373, 359, 356, 357, 357, + 358, 373, 360, 361, 361, 362, 373, 371, 347, 2, + 351, 373, 371, 367, 364, 365, 365, 366, 373, 368, + 369, 369, 370, 373, 372, 0, 1, 2, 2, 2, + 2, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 347, - 0, 351, 0, 358, 0, 355, 359, 0, 370, 0, - 2, 2, 370, 366, 0, 363, 367, 0, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 348, + 0, 352, 0, 359, 0, 356, 360, 0, 371, 0, + 2, 2, 371, 367, 0, 364, 368, 0, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 370, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 371, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 343, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 134, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 144, 371, 371, 371, 371, - 371, 371, 371, 370, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 344, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 134, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 144, 372, 372, 372, 372, + 372, 372, 372, 371, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 116, 371, 342, 371, - 371, 371, 371, 371, 371, 371, 371, 8, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 116, 372, 343, 372, + 372, 372, 372, 372, 372, 372, 372, 8, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 135, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 149, 371, 371, 370, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 135, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 149, 372, 372, 371, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 335, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 336, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 370, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 69, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 262, 371, 14, 15, 371, 19, 18, 371, 371, - 242, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 371, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 69, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 262, 372, 14, 15, 372, 19, 18, 372, 372, + 242, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 142, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 240, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 3, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 142, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 240, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 3, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 370, 371, 371, 371, - 371, 371, 371, 371, 329, 371, 371, 328, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 371, 372, 372, 372, + 372, 372, 372, 372, 329, 372, 372, 328, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 354, - 371, 371, 371, 371, 371, 371, 371, 371, 68, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 72, 371, 298, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 336, - 337, 371, 371, 371, 371, 371, 371, 371, 371, 73, - 371, 371, 143, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 138, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 229, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 355, + 372, 372, 372, 372, 372, 372, 372, 372, 68, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 72, 372, 298, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 337, + 338, 372, 372, 372, 372, 372, 372, 372, 372, 73, + 372, 372, 143, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 138, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 229, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 21, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 170, 371, 371, 371, 371, - 371, 370, 354, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 114, 371, 371, 371, 371, 371, - 371, 371, 306, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 21, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 170, 372, 372, 372, 372, + 372, 371, 355, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 114, 372, 372, 372, 372, 372, + 372, 372, 306, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 197, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 169, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 113, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 197, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 169, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 113, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 35, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 36, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 70, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 141, 371, 371, 371, 370, - 371, 371, 371, 371, 371, 133, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 35, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 36, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 70, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 141, 372, 372, 372, 371, + 372, 372, 372, 372, 372, 133, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 71, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 266, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 198, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 58, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 71, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 266, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 198, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 58, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 284, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 63, 371, 64, 371, 371, 371, 371, 371, 117, 371, - 118, 371, 371, 371, 371, 371, 115, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 284, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 63, 372, 64, 372, 372, 372, 372, 372, 117, 372, + 118, 372, 372, 372, 372, 372, 115, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 7, 371, 371, 371, 371, 370, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 251, 371, 371, 371, 371, 173, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 267, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 49, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 7, 372, 372, 372, 372, 371, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 251, 372, 372, 372, 372, 173, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 267, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 49, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 59, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 220, 371, 219, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 16, 17, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 74, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 228, 371, 371, 371, 371, 371, 371, 120, 371, 119, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 59, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 220, 372, 219, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 16, 17, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 74, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 228, 372, 372, 372, 372, 372, 372, 120, 372, 119, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 211, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 150, 371, 371, 371, - 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 108, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 95, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 241, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 100, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 211, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 150, 372, 372, 372, + 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 108, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 95, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 241, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 100, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 67, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 214, 215, 371, 371, 371, - 300, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 6, 371, 371, 371, - 371, 371, 371, 371, 319, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 304, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 67, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 214, 215, 372, 372, 372, + 300, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 6, 372, 372, 372, + 372, 372, 372, 372, 319, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 304, 372, 372, 372, 372, 372, - 371, 371, 330, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 46, 371, 371, - 371, 371, 371, 48, 371, 371, 371, 96, 371, 371, - 371, 371, 371, 56, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 370, 371, 207, 371, 371, - 371, 145, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 233, 371, 208, 371, 371, 371, 248, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 57, + 372, 372, 330, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 46, 372, 372, + 372, 372, 372, 48, 372, 372, 372, 96, 372, 372, + 372, 372, 372, 56, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 371, 372, 207, 372, 372, + 372, 145, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 233, 372, 208, 372, 372, 372, 248, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 57, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 147, 126, 371, 127, 371, 371, 371, 371, 125, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 166, 371, 371, 54, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 283, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 209, 371, 371, 371, 371, 371, - 212, 371, 218, 371, 371, 371, 371, 371, 371, 371, - 371, 247, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 112, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 147, 126, 372, 127, 372, 372, 372, 372, 125, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 166, 372, 372, 54, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 283, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 209, 372, 372, 372, 372, 372, + 212, 372, 218, 372, 372, 372, 372, 372, 372, 372, + 372, 247, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 112, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 139, 371, 371, 371, 371, 371, 371, 371, 371, 65, - 371, 371, 371, 29, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 20, 371, 371, 371, - 371, 371, 371, 371, 30, 39, 371, 178, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 205, 371, 371, 370, 371, 371, 371, 371, - 371, 371, 82, 84, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 308, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 139, 372, 372, 372, 372, 372, 372, 372, 372, 65, + 372, 372, 372, 29, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 20, 372, 372, 372, + 372, 372, 372, 372, 30, 39, 372, 178, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 205, 372, 372, 371, 372, 372, 372, 372, + 372, 372, 82, 84, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 308, 372, 372, - 371, 371, 263, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 128, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 165, - 371, 50, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 257, 371, 371, 371, 371, 371, 371, 371, - 323, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 172, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 263, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 128, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 165, + 372, 50, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 257, 372, 372, 372, 372, 372, 372, 372, + 323, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 172, 372, 372, 372, 372, 372, 372, 372, - 371, 371, 371, 371, 371, 371, 317, 371, 371, 371, - 371, 239, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 333, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 190, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 121, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 185, 371, 199, 371, 371, 371, 371, 371, 371, 371, - 370, 371, 153, 371, 371, 371, 371, 371, 107, 371, - 371, 371, 371, 231, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 317, 372, 372, 372, + 372, 239, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 334, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 190, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 121, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 185, 372, 199, 372, 372, 372, 372, 372, 372, 372, + 371, 372, 153, 372, 372, 372, 372, 372, 107, 372, + 372, 372, 372, 231, 372, 372, 372, 372, 372, 372, - 249, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 275, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 146, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 189, 371, - 371, 371, 371, 371, 371, 371, 85, 371, 86, 371, - 371, 371, 371, 371, 260, 371, 371, 371, 371, 66, - 326, 371, 371, 371, 371, 371, 94, 200, 371, 221, - 371, 252, 371, 371, 213, 301, 371, 371, 371, 371, - 296, 371, 371, 371, 78, 371, 202, 371, 371, 371, + 249, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 275, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 146, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 189, 372, + 372, 372, 372, 372, 372, 372, 85, 372, 86, 372, + 372, 372, 372, 372, 260, 372, 372, 372, 372, 66, + 326, 372, 372, 372, 372, 372, 94, 200, 372, 221, + 372, 252, 372, 372, 213, 301, 372, 372, 372, 372, + 296, 372, 372, 372, 78, 372, 202, 372, 372, 372, - 371, 371, 371, 9, 371, 371, 371, 371, 371, 111, - 371, 371, 371, 371, 371, 371, 288, 371, 371, 371, - 371, 230, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 370, 371, 371, - 371, 371, 188, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 174, 371, 307, 371, 371, 371, 371, + 372, 372, 372, 9, 372, 372, 372, 372, 372, 111, + 372, 372, 372, 372, 372, 372, 288, 372, 372, 372, + 372, 372, 230, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 371, 372, + 372, 372, 372, 188, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 174, 372, 307, 372, 372, 372, - 371, 274, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 243, 371, 371, 371, 371, 371, 371, - 299, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 171, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 327, 371, 201, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 77, 79, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 110, 371, 371, 371, 371, 371, - 371, 286, 371, 371, 371, 371, 303, 371, 371, 371, + 372, 372, 274, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 243, 372, 372, 372, 372, 372, + 372, 299, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 171, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 327, 372, 201, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 77, 79, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 110, 372, 372, 372, 372, + 372, 372, 286, 372, 372, 372, 372, 372, 303, 372, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 235, 37, 31, 33, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 38, 371, 32, - 34, 371, 40, 371, 371, 371, 371, 371, 371, 371, - 106, 371, 184, 371, 371, 371, 371, 371, 371, 371, - 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 237, 234, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 76, 371, 371, 371, 148, 371, 129, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 235, 37, 31, 33, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 38, + 372, 32, 34, 372, 40, 372, 372, 372, 372, 372, + 372, 372, 106, 372, 184, 372, 372, 372, 372, 372, + 372, 372, 371, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 237, 234, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 76, 372, 372, 372, 148, + 372, 129, 372, 372, 372, 372, 372, 372, 372, 372, - 371, 167, 51, 371, 371, 371, 362, 13, 371, 371, - 371, 371, 371, 371, 371, 154, 371, 371, 371, 371, - 371, 371, 371, 321, 371, 324, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 12, - 371, 371, 22, 371, 371, 371, 371, 371, 371, 371, - 292, 371, 371, 371, 371, 305, 371, 371, 371, 371, - 80, 371, 245, 371, 371, 371, 371, 371, 236, 371, - 371, 371, 75, 371, 371, 371, 371, 371, 371, 23, - 371, 371, 47, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 183, 182, 371, 371, 362, + 372, 372, 372, 167, 51, 372, 372, 372, 363, 13, + 372, 372, 372, 372, 372, 372, 372, 154, 372, 372, + 372, 372, 372, 372, 372, 321, 372, 324, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 12, 372, 372, 22, 372, 372, 372, 372, 372, + 372, 372, 292, 372, 372, 372, 372, 372, 305, 372, + 372, 372, 372, 80, 372, 245, 372, 372, 372, 372, + 372, 236, 372, 372, 372, 75, 372, 372, 372, 372, + 372, 372, 23, 372, 372, 47, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 183, 182, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 238, - 232, 371, 250, 371, 371, 309, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 195, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 87, 371, 371, 371, 371, 371, 371, - 371, 287, 371, 371, 371, 371, 217, 371, 371, 371, - 371, 371, 371, 244, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 294, 371, 371, 371, 331, 332, - 180, 371, 371, 371, 81, 371, 371, 371, 371, 191, + 372, 372, 363, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 238, 232, 372, 250, 372, 372, 309, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 195, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 87, 372, 372, 372, + 372, 372, 372, 372, 287, 372, 372, 372, 372, 217, + 372, 372, 372, 372, 372, 372, 244, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 294, 372, 372, + 372, 331, 333, 332, 180, 372, 372, 372, 81, 372, - 371, 371, 371, 371, 122, 124, 123, 371, 371, 371, - 25, 371, 371, 175, 371, 177, 371, 222, 371, 371, - 371, 371, 181, 371, 371, 371, 371, 253, 371, 371, - 371, 371, 371, 371, 371, 156, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 265, 371, - 371, 371, 371, 371, 371, 371, 340, 371, 27, 371, - 302, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 92, - 223, 371, 371, 259, 371, 371, 285, 371, 325, 371, - 216, 371, 371, 297, 371, 371, 371, 295, 60, 371, + 372, 372, 372, 191, 372, 372, 372, 372, 122, 124, + 123, 372, 372, 372, 25, 372, 372, 175, 372, 177, + 372, 222, 372, 372, 372, 372, 181, 372, 372, 372, + 372, 253, 372, 372, 372, 372, 372, 372, 372, 156, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 265, 372, 372, 372, 372, 372, 372, 372, + 341, 372, 27, 372, 302, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 92, 223, 372, 372, 259, 372, 372, + 285, 372, 325, 372, 216, 372, 372, 297, 372, 372, - 371, 371, 371, 371, 371, 371, 4, 371, 371, 371, - 371, 137, 371, 155, 371, 371, 371, 196, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 256, 41, 42, - 371, 371, 371, 371, 371, 371, 371, 310, 371, 371, - 371, 371, 371, 371, 371, 273, 371, 371, 371, 371, - 371, 371, 371, 371, 226, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 91, 90, 371, 371, 61, 371, 371, 291, 371, 261, - 371, 371, 371, 371, 371, 11, 371, 371, 371, 371, + 372, 295, 60, 372, 372, 372, 372, 372, 372, 372, + 4, 372, 372, 372, 372, 137, 372, 155, 372, 372, + 372, 196, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 256, 41, 42, 372, 372, 372, 372, 372, 372, + 372, 310, 372, 372, 372, 372, 372, 372, 372, 273, + 372, 372, 372, 372, 372, 372, 372, 372, 226, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 91, 90, 372, 372, 61, 372, + 372, 291, 372, 261, 372, 372, 372, 372, 372, 11, - 344, 371, 371, 371, 371, 136, 371, 371, 371, 371, - 371, 371, 224, 97, 371, 371, 44, 371, 371, 371, - 371, 371, 371, 371, 371, 187, 371, 371, 371, 371, - 371, 371, 371, 158, 371, 371, 371, 371, 264, 371, - 371, 371, 371, 371, 272, 371, 371, 371, 371, 151, - 371, 371, 371, 130, 132, 131, 371, 371, 371, 99, - 103, 98, 371, 168, 371, 371, 371, 371, 88, 371, - 258, 293, 371, 371, 371, 371, 371, 371, 10, 371, - 371, 371, 371, 371, 289, 334, 371, 371, 371, 371, - 371, 371, 371, 339, 43, 371, 371, 371, 371, 371, + 372, 372, 372, 372, 345, 372, 372, 372, 372, 136, + 372, 372, 372, 372, 372, 372, 224, 97, 372, 372, + 44, 372, 372, 372, 372, 372, 372, 372, 372, 187, + 372, 372, 372, 372, 372, 372, 372, 158, 372, 372, + 372, 372, 264, 372, 372, 372, 372, 372, 272, 372, + 372, 372, 372, 151, 372, 372, 372, 130, 132, 131, + 372, 372, 372, 99, 103, 98, 372, 168, 372, 372, + 372, 372, 88, 372, 258, 293, 372, 372, 372, 372, + 372, 372, 10, 372, 372, 372, 372, 372, 289, 335, + 372, 372, 372, 372, 372, 372, 372, 340, 43, 372, - 186, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 104, 102, 371, 371, - 55, 371, 371, 89, 371, 322, 371, 371, 371, 371, - 24, 371, 371, 371, 371, 371, 210, 371, 371, 371, - 371, 371, 371, 225, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 206, 371, 371, 176, 83, 371, 371, - 371, 371, 371, 311, 371, 371, 371, 371, 371, 371, - 371, 269, 371, 371, 268, 152, 371, 371, 101, 371, - 52, 371, 371, 159, 160, 163, 164, 161, 162, 93, + 372, 372, 372, 372, 186, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 104, 102, 372, 372, 55, 372, 372, 89, 372, 322, + 372, 372, 372, 372, 24, 372, 372, 372, 372, 372, + 210, 372, 372, 372, 372, 372, 372, 225, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 206, 372, 372, + 176, 83, 372, 372, 372, 372, 372, 311, 372, 372, + 372, 372, 372, 372, 372, 269, 372, 372, 268, 152, + 372, 372, 101, 372, 52, 372, 372, 159, 160, 163, - 320, 371, 371, 290, 140, 371, 371, 371, 371, 26, - 371, 179, 371, 371, 371, 371, 204, 371, 255, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 193, 192, 227, 45, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 318, - 371, 371, 371, 371, 109, 371, 254, 371, 282, 315, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 341, 371, 105, 53, 62, 5, 371, 371, 246, + 164, 161, 162, 93, 320, 372, 372, 290, 140, 372, + 372, 372, 372, 26, 372, 179, 372, 372, 372, 372, + 204, 372, 255, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 193, 192, 227, 45, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 318, 372, 372, 372, 372, 109, 372, + 254, 372, 282, 315, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 342, 372, 105, 53, 62, - 371, 371, 316, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 270, 28, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 271, 371, 371, 371, - 157, 371, 371, 371, 371, 371, 371, 371, 371, 194, - 371, 203, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 312, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 338, - 371, 371, 278, 371, 371, 371, 371, 371, 313, 371, - 371, 371, 371, 371, 371, 314, 371, 371, 371, 276, - 371, 279, 280, 371, 371, 371, 371, 371, 277, 281, + 5, 372, 372, 246, 372, 372, 316, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 270, 28, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 271, 372, 372, 372, 157, 372, 372, 372, 372, 372, + 372, 372, 372, 194, 372, 203, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 312, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 372, 372, 372, 339, 372, 372, 278, 372, 372, 372, + 372, 372, 313, 372, 372, 372, 372, 372, 372, 314, + 372, 372, 372, 276, 372, 279, 280, 372, 372, 372, - 0 + 372, 372, 277, 281, 0 } ; static const YY_CHAR yy_ec[256] = @@ -815,17 +815,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3720] = +static const flex_int16_t yy_base[3724] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3764, 3709, 81, 7218, - 7218, 7218, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3764, 3709, 81, 7224, + 7224, 7224, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3203, 7218, 7218, 7218, - 107, 3106, 7218, 7218, 7218, 154, 2980, 2776, 7218, 7218, - 7218, 245, 2512, 7218, 7218, 7218, 163, 2418, 7218, 249, - 7218, 253, 148, 2194, 2170, 7218, 7218, 7218, 257, 1798, - 7218, 7218, 7218, 233, 1739, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 3203, 7224, 7224, 7224, + 107, 3106, 7224, 7224, 7224, 154, 2980, 2776, 7224, 7224, + 7224, 245, 2512, 7224, 7224, 7224, 163, 2418, 7224, 249, + 7224, 253, 148, 2194, 2170, 7224, 7224, 7224, 257, 1798, + 7224, 7224, 7224, 233, 1739, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -850,15 +850,15 @@ static const flex_int16_t yy_base[3720] = 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - 704, 705, 710, 711, 708, 7218, 718, 714, 721, 722, + 704, 705, 710, 711, 708, 7224, 718, 714, 721, 722, 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, 770, 765, 772, 785, 767, 773, 777, 806, 778, 774, 780, 786, 796, 798, 800, 793, 807, 814, 815, 808, 812, 819, 826, 834, 836, 816, 828, 839, 830, 838, - 820, 845, 852, 847, 7218, 849, 851, 861, 853, 862, + 820, 845, 852, 847, 7224, 849, 851, 861, 853, 862, 865, 863, 871, 872, 875, 884, 880, 883, 893, 915, - 885, 886, 882, 895, 898, 7218, 900, 899, 939, 908, + 885, 886, 882, 895, 898, 7224, 900, 899, 939, 908, 917, 928, 924, 904, 901, 929, 940, 943, 956, 757, 945, 921, 963, 959, 946, 948, 932, 969, 960, 976, @@ -868,16 +868,16 @@ static const flex_int16_t yy_base[3720] = 1028, 1042, 1035, 1043, 1044, 1047, 1052, 1045, 1060, 1051, 1067, 1063, 1069, 1070, 1078, 1073, 1074, 1075, 1076, 1079, 1085, 1080, 1083, 1087, 1088, 1090, 1091, 1097, 1099, 1106, - 1095, 1108, 1111, 1098, 1113, 1101, 7218, 1117, 7218, 1115, - 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7218, 1129, 1132, + 1095, 1108, 1111, 1098, 1113, 1101, 7224, 1117, 7224, 1115, + 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7224, 1129, 1132, 1133, 1140, 1137, 1141, 1143, 1144, 1154, 1148, 1155, 1157, 1156, 1158, 1165, 1167, 1164, 1168, 1175, 1172, 1176, 1177, - 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7218, + 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7224, 1191, 1195, 1197, 1201, 1194, 1202, 1206, 1214, 1221, 1219, 1227, 1220, 1224, 1237, 1238, 1240, 1241, 1243, 1245, 1246, 1248, 1249, 1254, 1251, 1255, 1257, 1259, 1260, 1262, 1268, - 1261, 1264, 1275, 7218, 1274, 1272, 1284, 1291, 1286, 1287, + 1261, 1264, 1275, 7224, 1274, 1272, 1284, 1291, 1286, 1287, 1271, 1289, 1292, 1293, 1295, 1296, 1304, 1294, 1297, 1301, 1314, 1310, 1319, 1312, 1317, 1315, 1316, 1321, 1325, 1323, 1327, 1336, 1333, 1338, 1341, 1350, 1348, 1352, 1355, 1359, @@ -885,7 +885,7 @@ static const flex_int16_t yy_base[3720] = 1371, 1373, 1382, 1378, 1379, 1384, 1380, 1386, 1391, 1389, 1387, 1394, 1393, 1395, 1396, 1403, 1401, 1405, 1410, 1407, - 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7218, 1436, 1431, + 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7224, 1436, 1431, 1432, 1438, 1439, 1443, 1445, 1437, 1447, 1448, 1449, 1451, 1452, 1458, 1454, 1459, 1461, 1460, 1468, 1467, 1470, 1473, 1475, 1471, 1484, 1491, 1490, 1492, 1476, 1486, 1495, 1496, @@ -899,21 +899,21 @@ static const flex_int16_t yy_base[3720] = 1614, 1633, 1622, 1624, 1634, 1625, 1635, 1638, 1641, 1642, 1644, 1647, 1646, 1648, 1656, 1657, 1649, 1658, 1650, 1663, 1664, 1666, 1674, 1670, 1676, 1680, 1669, 1681, 1671, 1682, - 1685, 1688, 1691, 1694, 1697, 1689, 7218, 1695, 1705, 1701, + 1685, 1688, 1691, 1694, 1697, 1689, 7224, 1695, 1705, 1701, 1703, 1704, 1708, 1709, 1717, 1710, 1712, 1713, 1715, 1722, - 1743, 7218, 1720, 7218, 7218, 1724, 7218, 7218, 1723, 1728, - 7218, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, + 1743, 7224, 1720, 7224, 7224, 1724, 7224, 7224, 1723, 1728, + 7224, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, 1754, 1751, 1767, 1772, 1766, 1764, 1775, 1770, 1777, 1778, 1783, 1780, 1782, 1789, 1792, 1795, 1797, 1805, 1806, 1808, 1810, 1811, 1814, 1812, 1818, 1819, 1823, 1826, 1827, 1829, 1830, 1831, 1833, 1832, 1835, 1838, 1841, 1842, 1844, 1837, - 1845, 1856, 1854, 1847, 1864, 7218, 1860, 1872, 1857, 1861, + 1845, 1856, 1854, 1847, 1864, 7224, 1860, 1872, 1857, 1861, 1868, 1876, 1869, 1877, 1878, 1873, 1882, 1884, 1886, 1887, 1889, 1891, 1893, 1892, 1894, 1898, 1900, 1902, 1904, 1903, - 1906, 1915, 1908, 1910, 7218, 1916, 1918, 1917, 1923, 1921, + 1906, 1915, 1908, 1910, 7224, 1916, 1918, 1917, 1923, 1921, 1931, 1932, 1922, 1920, 1924, 1935, 1944, 1939, 1946, 1940, - 1942, 1949, 1950, 1951, 1954, 7218, 1960, 1964, 1952, 1966, + 1942, 1949, 1950, 1951, 1954, 7224, 1960, 1964, 1952, 1966, 1956, 1959, 1967, 1968, 1972, 1975, 1970, 1976, 1978, 1981, 1988, 1985, 1983, 1986, 1989, 1991, 1997, 1998, 1999, 2004, @@ -921,727 +921,729 @@ static const flex_int16_t yy_base[3720] = 2024, 2025, 2032, 2029, 2041, 2031, 2028, 2046, 2053, 2050, 2030, 2051, 2033, 2052, 2055, 2064, 2065, 2057, 2061, 2062, 2072, 2067, 2069, 2070, 2076, 2074, 2084, 2080, 2082, 2093, - 2085, 2089, 2091, 2097, 7218, 2098, 2099, 7218, 2101, 2100, + 2085, 2089, 2091, 2097, 7224, 2098, 2099, 7224, 2101, 2100, 2102, 2124, 2103, 2106, 2111, 2118, 2105, 2108, 2119, 2125, 2131, 2128, 2138, 2141, 2143, 2144, 2146, 2147, 2151, 2149, 2153, 2155, 2156, 2159, 2164, 2115, 2166, 2178, 2179, 2175, 2182, 2186, 2165, 2181, 2183, 2202, 2184, 2185, 2191, 2192, 2188, 2193, 2199, 2195, 2197, 2206, 2211, 2212, 2217, 2224, - 2214, 2215, 2223, 2226, 2225, 2229, 2235, 2232, 2237, 7218, - 2244, 2245, 2239, 2246, 2240, 2255, 2254, 2250, 7218, 2252, + 2214, 2215, 2223, 2226, 2225, 2229, 2235, 2232, 2237, 7224, + 2244, 2245, 2239, 2246, 2240, 2255, 2254, 2250, 7224, 2252, 2256, 2260, 2268, 2263, 2264, 2266, 2267, 2270, 2273, 2274, - 2279, 2280, 2275, 2277, 2291, 7218, 2282, 7218, 2278, 2290, - 2295, 2296, 2303, 2299, 2300, 2304, 2302, 2306, 2307, 7218, - 7218, 2308, 2315, 2325, 2327, 2329, 2319, 2316, 2330, 7218, - 2332, 2339, 7218, 2336, 2334, 2341, 2342, 2335, 2345, 2346, - 2347, 2350, 2357, 2352, 2359, 2354, 2358, 2362, 7218, 2366, - 2368, 2370, 2373, 2374, 2377, 2375, 2380, 2381, 2382, 7218, + 2279, 2280, 2275, 2277, 2291, 7224, 2282, 7224, 2278, 2290, + 2295, 2296, 2303, 2299, 2300, 2304, 2302, 2306, 2307, 7224, + 7224, 2308, 2315, 2325, 2327, 2329, 2319, 2316, 2330, 7224, + 2332, 2339, 7224, 2336, 2334, 2341, 2342, 2335, 2345, 2346, + 2347, 2350, 2357, 2352, 2359, 2354, 2358, 2362, 7224, 2366, + 2368, 2370, 2373, 2374, 2377, 2375, 2380, 2381, 2382, 7224, 2383, 2387, 2390, 2398, 2400, 2388, 2395, 2401, 2405, 2402, 2407, 2408, 2409, 2410, 2417, 2421, 2422, 2414, 2424, 2431, - 2427, 2436, 7218, 2433, 2434, 2435, 2443, 2439, 2441, 2442, + 2427, 2436, 7224, 2433, 2434, 2435, 2443, 2439, 2441, 2442, 2445, 2448, 2446, 2447, 2456, 2457, 2450, 2458, 2449, 2462, 2465, 2475, 2476, 2468, 2472, 2479, 2471, 2473, 2480, 2481, - 2309, 2482, 2485, 2486, 2488, 7218, 2489, 2496, 2493, 2497, + 2309, 2482, 2485, 2486, 2488, 7224, 2489, 2496, 2493, 2497, 2498, 2491, 171, 2504, 2506, 2507, 2509, 2515, 2517, 2510, 2526, 2528, 2523, 2527, 2529, 2533, 2534, 2535, 2536, 2525, - 2537, 2543, 2542, 2544, 7218, 2546, 2547, 2551, 2552, 2553, - 2554, 2565, 7218, 2558, 2571, 2555, 2576, 2566, 2564, 2577, + 2537, 2543, 2542, 2544, 7224, 2546, 2547, 2551, 2552, 2553, + 2554, 2565, 7224, 2558, 2571, 2555, 2576, 2566, 2564, 2577, 2568, 2582, 2583, 2585, 2586, 2589, 2594, 2591, 2593, 2595, - 2597, 7218, 2599, 2603, 2604, 2602, 2610, 2613, 2611, 2612, + 2597, 7224, 2599, 2603, 2604, 2602, 2610, 2613, 2611, 2612, 2614, 2618, 2621, 2619, 2623, 2626, 2625, 2628, 2632, 2635, 2631, 2636, 2645, 2640, 2642, 2643, 2648, 2651, 2653, 2654, - 2655, 2656, 2664, 2657, 7218, 2667, 2659, 2668, 2675, 2666, + 2655, 2656, 2664, 2657, 7224, 2667, 2659, 2668, 2675, 2666, 2669, 2676, 2672, 2693, 2678, 2688, 2690, 2694, 2704, 2698, 2691, 2707, 2714, 2716, 2699, 2724, 2720, 2726, 2728, 2689, 2732, 2734, 2722, 2730, 2741, 2744, 2740, 2736, 2746, 2747, 2749, 2750, 2757, 2759, 2755, 2754, 2706, 2756, 2762, 2761, - 2777, 2782, 2773, 7218, 2781, 2771, 2769, 2783, 2787, 2794, + 2777, 2782, 2773, 7224, 2781, 2771, 2769, 2783, 2787, 2794, 2790, 2791, 2792, 2795, 2798, 2800, 2802, 2803, 2810, 2805, 2808, 2814, 2811, 2818, 2812, 2815, 2827, 2828, 2816, 2830, - 2832, 2829, 2837, 2838, 7218, 2839, 2843, 2833, 2845, 2850, + 2832, 2829, 2837, 2838, 7224, 2839, 2843, 2833, 2845, 2850, 2847, 2856, 2857, 2859, 2851, 2853, 2860, 2862, 2863, 2679, - 2865, 2866, 2875, 2871, 2870, 2878, 2873, 7218, 2882, 2877, + 2865, 2866, 2875, 2871, 2870, 2878, 2873, 7224, 2882, 2877, 2884, 2888, 2887, 2889, 2890, 2895, 2896, 2902, 2903, 2905, - 2906, 2908, 2909, 2912, 7218, 2917, 2919, 2915, 2918, 2927, - 2922, 2926, 2928, 2930, 2932, 7218, 2933, 2935, 854, 2934, - 2936, 2937, 2946, 2947, 2942, 7218, 2950, 2943, 2951, 2954, + 2906, 2908, 2909, 2912, 7224, 2917, 2919, 2915, 2918, 2927, + 2922, 2926, 2928, 2930, 2932, 7224, 2933, 2935, 854, 2934, + 2936, 2937, 2946, 2947, 2942, 7224, 2950, 2943, 2951, 2954, 2955, 2958, 2959, 2961, 2964, 2965, 2968, 2970, 2979, 2966, - 2976, 7218, 2969, 2993, 2973, 2985, 2995, 2982, 2983, 2997, - 2999, 3000, 3006, 3002, 7218, 3011, 3010, 3013, 3023, 3001, - 3018, 3019, 3021, 3025, 3027, 3028, 3029, 3031, 3033, 7218, + 2976, 7224, 2969, 2993, 2973, 2985, 2995, 2982, 2983, 2997, + 2999, 3000, 3006, 3002, 7224, 3011, 3010, 3013, 3023, 3001, + 3018, 3019, 3021, 3025, 3027, 3028, 3029, 3031, 3033, 7224, 3034, 3038, 3039, 3040, 3043, 3042, 3035, 3051, 3050, 3052, 3055, 3058, 3061, 3063, 3064, 3065, 3059, 3075, 3067, 3073, 3069, 3077, 3081, 3079, 3084, 3071, 3088, 3098, 3101, 3096, 3099, 3103, 3105, 3097, 3104, 3107, 3114, 3115, 3122, 3117, - 3119, 7218, 3124, 3126, 3127, 3128, 3121, 3129, 3132, 3131, + 3119, 7224, 3124, 3126, 3127, 3128, 3121, 3129, 3132, 3131, 3134, 3137, 3140, 3144, 3142, 3145, 3159, 3161, 3150, 3151, 3154, 3162, 3163, 3166, 3165, 3167, 3168, 3175, 3174, 3176, 3177, 3178, 3180, 3188, 3183, 3185, 3195, 3190, 3192, 3196, 3198, 3199, 3200, 3201, 3204, 3207, 3210, 3205, 3212, 3216, - 3221, 3226, 3227, 3229, 3223, 3230, 3234, 3235, 3238, 7218, + 3221, 3226, 3227, 3229, 3223, 3230, 3234, 3235, 3238, 7224, 3237, 3241, 3239, 3242, 3247, 3250, 3251, 3258, 3253, 3259, 3266, 3264, 3261, 3267, 3270, 3273, 3274, 3275, 3282, 3278, - 7218, 3279, 7218, 3280, 3281, 3284, 3293, 3288, 7218, 3299, - 7218, 3289, 3303, 3294, 3296, 3300, 7218, 3304, 3305, 3309, + 7224, 3279, 7224, 3280, 3281, 3284, 3293, 3288, 7224, 3299, + 7224, 3289, 3303, 3294, 3296, 3300, 7224, 3304, 3305, 3309, 3306, 3311, 3313, 3317, 3318, 3319, 3320, 3321, 3328, 3323, 3327, 3330, 3334, 3333, 3337, 3340, 3342, 3343, 3345, 3344, 3347, 3351, 3352, 3353, 3360, 3362, 3363, 3364, 3365, 3366, - 7218, 3370, 3373, 3367, 3378, 3375, 3377, 3379, 3385, 3386, + 7224, 3370, 3373, 3367, 3378, 3375, 3377, 3379, 3385, 3386, 3387, 3388, 3392, 3390, 3394, 3399, 3402, 3396, 3403, 3406, - 3413, 3415, 3407, 3422, 7218, 3417, 3420, 3421, 3424, 7218, + 3413, 3415, 3407, 3422, 7224, 3417, 3420, 3421, 3424, 7224, 3428, 3425, 3434, 3436, 3429, 3426, 3432, 3438, 3445, 3439, - 3442, 3448, 3452, 3456, 3459, 3460, 7218, 3453, 3461, 3451, + 3442, 3448, 3452, 3456, 3459, 3460, 7224, 3453, 3461, 3451, 3469, 3474, 3465, 3477, 3481, 3478, 3484, 3486, 3488, 3490, 3467, 3491, 3492, 3493, 3494, 3502, 3504, 3505, 3501, 3514, 3500, 3507, 3516, 3517, 3503, 3510, 3518, 3519, 3520, 3525, - 3527, 3528, 3526, 3524, 3531, 3532, 3529, 3536, 7218, 3545, + 3527, 3528, 3526, 3524, 3531, 3532, 3529, 3536, 7224, 3545, 3546, 3537, 3553, 3551, 3552, 3554, 3555, 3556, 3560, 3563, - 7218, 3565, 3562, 3570, 3566, 3579, 3573, 3567, 3576, 3583, - 3584, 3587, 3585, 3586, 3589, 7218, 3591, 7218, 3590, 3594, + 7224, 3565, 3562, 3570, 3566, 3579, 3573, 3567, 3576, 3583, + 3584, 3587, 3585, 3586, 3589, 7224, 3591, 7224, 3590, 3594, 3604, 3608, 3609, 3596, 3610, 3617, 3599, 3618, 3619, 3620, 3623, 3622, 3627, 3628, 3629, 3630, 3631, 3640, 3633, 3641, 3654, 3644, 3636, 3646, 3648, 3655, 3657, 3664, 3660, 3662, - 7218, 7218, 3661, 3667, 3670, 3672, 3668, 3678, 3676, 3679, - 3683, 3688, 3682, 3689, 3690, 3697, 7218, 3698, 3699, 3701, + 7224, 7224, 3661, 3667, 3670, 3672, 3668, 3678, 3676, 3679, + 3683, 3688, 3682, 3689, 3690, 3697, 7224, 3698, 3699, 3701, 3702, 3703, 3711, 3704, 3716, 3719, 3720, 3718, 3727, 3724, - 7218, 3706, 3728, 3735, 3731, 3734, 3739, 7218, 3738, 7218, + 7224, 3706, 3728, 3735, 3731, 3734, 3739, 7224, 3738, 7224, 3736, 3740, 3741, 3745, 3747, 3748, 3749, 3754, 3751, 3756, 3758, 3766, 3767, 3774, 3773, 3769, 3778, 3771, 3775, 3779, - 3781, 3783, 3790, 3785, 3786, 3788, 7218, 3795, 3789, 3634, - 3792, 3799, 3800, 3803, 3801, 3804, 7218, 3811, 3812, 3813, + 3781, 3783, 3790, 3785, 3786, 3788, 7224, 3795, 3789, 3634, + 3792, 3799, 3800, 3803, 3801, 3804, 7224, 3811, 3812, 3813, 3814, 3815, 3818, 3820, 3823, 3824, 3829, 3831, 3825, 3834, - 3836, 7218, 3833, 3837, 3844, 3841, 3840, 3849, 3851, 3856, - 3861, 7218, 3842, 3854, 3868, 3865, 3866, 3867, 3870, 3871, + 3836, 7224, 3833, 3837, 3844, 3841, 3840, 3849, 3851, 3856, + 3861, 7224, 3842, 3854, 3868, 3865, 3866, 3867, 3870, 3871, 3872, 3874, 3875, 3876, 3877, 3879, 3883, 3884, 3880, 3887, - 3886, 3898, 3897, 3889, 3901, 3911, 3907, 7218, 3908, 3912, + 3886, 3898, 3897, 3889, 3901, 3911, 3907, 7224, 3908, 3912, 3913, 3914, 3915, 3916, 3920, 3921, 3926, 3938, 3919, 3941, - 3942, 3923, 3927, 3929, 3946, 3947, 3955, 3953, 7218, 3958, + 3942, 3923, 3927, 3929, 3946, 3947, 3955, 3953, 7224, 3958, 3954, 3963, 3959, 3960, 3961, 3964, 3969, 3970, 3966, 3974, 3962, 3975, 3976, 3978, 3979, 3984, 3991, 3987, 3988, 3992, - 3993, 4003, 3994, 3995, 3998, 4002, 7218, 4017, 4004, 4009, + 3993, 4003, 3994, 3995, 3998, 4002, 7224, 4017, 4004, 4009, 4019, 4012, 4020, 4028, 4025, 4026, 4027, 4030, 4031, 4032, - 4036, 4037, 4038, 4041, 4042, 7218, 7218, 4044, 4045, 4049, - 7218, 4051, 4047, 4061, 4050, 3917, 4052, 4054, 4063, 4064, - 4065, 4067, 4071, 4073, 4075, 4077, 7218, 4086, 4078, 4087, - 4082, 4085, 4094, 4089, 7218, 4090, 4104, 4096, 4100, 4099, + 4036, 4037, 4038, 4041, 4042, 7224, 7224, 4044, 4045, 4049, + 7224, 4051, 4047, 4061, 4050, 3917, 4052, 4054, 4063, 4064, + 4065, 4067, 4071, 4073, 4075, 4077, 7224, 4086, 4078, 4087, + 4082, 4085, 4094, 4089, 7224, 4090, 4104, 4096, 4100, 4099, 4103, 4106, 4110, 4111, 4107, 4112, 4113, 4116, 4120, 4123, - 4128, 4124, 4125, 4130, 7218, 4127, 4132, 4133, 4136, 4137, + 4128, 4124, 4125, 4130, 7224, 4127, 4132, 4133, 4136, 4137, - 4139, 4141, 7218, 4143, 4145, 4151, 4153, 4146, 4164, 4165, + 4139, 4141, 7224, 4143, 4145, 4151, 4153, 4146, 4164, 4165, 4157, 4167, 4160, 4170, 4171, 4172, 4174, 4175, 4176, 4185, - 4180, 4178, 4182, 4186, 4189, 4191, 4197, 7218, 4200, 4202, - 4183, 4205, 4207, 7218, 4212, 4220, 4221, 7218, 4222, 4204, - 4223, 4217, 4231, 7218, 4224, 4233, 4226, 4234, 4227, 4245, - 4232, 4246, 4242, 4243, 4244, 4248, 4247, 7218, 4249, 4250, - 4251, 7218, 4255, 4265, 4268, 4271, 4257, 4278, 4273, 4275, - 4276, 4274, 7218, 4281, 7218, 4260, 4284, 4287, 7218, 4285, + 4180, 4178, 4182, 4186, 4189, 4191, 4197, 7224, 4200, 4202, + 4183, 4205, 4207, 7224, 4212, 4220, 4221, 7224, 4222, 4204, + 4223, 4217, 4231, 7224, 4224, 4233, 4226, 4234, 4227, 4245, + 4232, 4246, 4242, 4243, 4244, 4248, 4247, 7224, 4249, 4250, + 4251, 7224, 4255, 4265, 4268, 4271, 4257, 4278, 4273, 4275, + 4276, 4274, 7224, 4281, 7224, 4260, 4284, 4287, 7224, 4285, 4289, 4290, 4292, 4293, 4294, 4298, 4304, 4306, 4300, 4308, - 4309, 4310, 4311, 4313, 4322, 4312, 4314, 4319, 4321, 7218, + 4309, 4310, 4311, 4313, 4322, 4312, 4314, 4319, 4321, 7224, 4324, 4326, 4331, 4332, 4328, 4333, 4338, 4339, 4342, 4345, - 4343, 7218, 7218, 4353, 7218, 4346, 4354, 4355, 4357, 7218, + 4343, 7224, 7224, 4353, 7224, 4346, 4354, 4355, 4357, 7224, 4359, 4358, 4366, 4361, 4364, 4367, 4362, 4368, 4380, 4375, - 7218, 4382, 4384, 7218, 4377, 4387, 4394, 4389, 4390, 4391, + 7224, 4382, 4384, 7224, 4377, 4387, 4394, 4389, 4390, 4391, 4392, 4395, 4398, 4401, 4402, 4404, 4405, 4406, 4408, 4410, - 4409, 4427, 4415, 4423, 7218, 4411, 4417, 4432, 4436, 4428, - 4430, 4445, 4447, 4433, 7218, 4449, 4437, 4441, 4451, 4455, - 7218, 4457, 7218, 4443, 4458, 4460, 4463, 4464, 4468, 4475, - 4470, 7218, 4471, 4477, 4479, 4474, 4476, 4480, 4484, 4487, - 4485, 4486, 4493, 4501, 4494, 4496, 4498, 4508, 4497, 7218, + 4409, 4427, 4415, 4423, 7224, 4411, 4417, 4432, 4436, 4428, + 4430, 4445, 4447, 4433, 7224, 4449, 4437, 4441, 4451, 4455, + 7224, 4457, 7224, 4443, 4458, 4460, 4463, 4464, 4468, 4475, + 4470, 7224, 4471, 4477, 4479, 4474, 4476, 4480, 4484, 4487, + 4485, 4486, 4493, 4501, 4494, 4496, 4498, 4508, 4497, 7224, 4506, 4512, 4511, 4515, 4516, 4518, 4519, 4520, 4527, 4528, 4522, 4530, 4531, 4536, 4532, 4537, 4541, 4543, 4545, 4546, - 7218, 4549, 4551, 4554, 4555, 4567, 4557, 4559, 4558, 7218, - 4562, 4572, 4573, 7218, 4571, 4575, 4579, 4581, 4582, 4585, - 4586, 4589, 4565, 4587, 4591, 4592, 7218, 4596, 4598, 4593, - 4594, 4602, 4609, 4611, 7218, 7218, 4614, 7218, 4615, 4612, + 7224, 4549, 4551, 4554, 4555, 4567, 4557, 4559, 4558, 7224, + 4562, 4572, 4573, 7224, 4571, 4575, 4579, 4581, 4582, 4585, + 4586, 4589, 4565, 4587, 4591, 4592, 7224, 4596, 4598, 4593, + 4594, 4602, 4609, 4611, 7224, 7224, 4614, 7224, 4615, 4612, 4616, 4619, 4617, 4623, 4625, 4627, 4639, 4622, 4626, 4630, - 4641, 4643, 7218, 4628, 4650, 4648, 4655, 4657, 4658, 4659, - 4653, 4660, 7218, 7218, 4664, 4666, 4665, 4669, 4671, 4673, - 4675, 4682, 4678, 4686, 4689, 4679, 4696, 7218, 4691, 4677, + 4641, 4643, 7224, 4628, 4650, 4648, 4655, 4657, 4658, 4659, + 4653, 4660, 7224, 7224, 4664, 4666, 4665, 4669, 4671, 4673, + 4675, 4682, 4678, 4686, 4689, 4679, 4696, 7224, 4691, 4677, - 4694, 4699, 7218, 4700, 4701, 4703, 4702, 4704, 4705, 4708, + 4694, 4699, 7224, 4700, 4701, 4703, 4702, 4704, 4705, 4708, 4707, 4710, 4711, 4713, 4714, 4716, 4729, 4720, 4721, 4722, - 4730, 4732, 4736, 4735, 4728, 4744, 7218, 4737, 4739, 4749, - 4750, 4752, 4753, 4754, 4755, 4759, 4757, 4762, 4766, 7218, - 4764, 7218, 4761, 4767, 4780, 4763, 4770, 4783, 4784, 4785, + 4730, 4732, 4736, 4735, 4728, 4744, 7224, 4737, 4739, 4749, + 4750, 4752, 4753, 4754, 4755, 4759, 4757, 4762, 4766, 7224, + 4764, 7224, 4761, 4767, 4780, 4763, 4770, 4783, 4784, 4785, 4787, 4772, 4791, 4793, 4794, 4798, 4799, 4803, 4792, 4804, - 4808, 4809, 7218, 4812, 4814, 4816, 4818, 4823, 4825, 4826, - 7218, 4828, 4820, 4829, 4832, 4835, 4837, 4838, 4842, 4843, + 4808, 4809, 7224, 4812, 4814, 4816, 4818, 4823, 4825, 4826, + 7224, 4828, 4820, 4829, 4832, 4835, 4837, 4838, 4842, 4843, 4846, 4839, 4847, 4851, 4856, 4848, 4858, 4859, 4853, 4864, - 4865, 4866, 7218, 4868, 4872, 4869, 4875, 4876, 4877, 4878, + 4865, 4866, 7224, 4868, 4872, 4869, 4875, 4876, 4877, 4878, - 4880, 4886, 4890, 4881, 4891, 4893, 7218, 4892, 4896, 4898, - 4905, 7218, 4901, 4903, 4904, 4908, 4909, 4911, 4912, 4914, - 4917, 4920, 7218, 4925, 4916, 4922, 4926, 4928, 4930, 4934, - 4933, 4937, 4941, 4942, 4951, 7218, 4945, 4943, 4947, 4953, - 4956, 4957, 4961, 4963, 4960, 4962, 7218, 4968, 4974, 4975, - 4976, 4983, 4984, 4964, 4986, 4993, 4989, 4990, 4967, 4996, - 4997, 4998, 4999, 5002, 5003, 5004, 5005, 5016, 5020, 5017, - 7218, 5006, 7218, 5007, 5015, 5022, 5031, 5028, 5030, 5032, - 5035, 5034, 7218, 5036, 5041, 5043, 5038, 5046, 7218, 5047, - 5044, 5048, 5049, 7218, 5062, 5045, 5051, 5058, 5067, 5068, + 4880, 4886, 4890, 4881, 4891, 4893, 7224, 4892, 4896, 4898, + 4905, 7224, 4901, 4903, 4904, 4908, 4909, 4911, 4912, 4914, + 4917, 4924, 7224, 4929, 4916, 4926, 4920, 4922, 4930, 4935, + 4937, 4941, 4938, 4943, 4946, 7224, 4957, 4944, 4953, 4954, + 4952, 4955, 4960, 4961, 4962, 4965, 7224, 4969, 4971, 4973, + 4972, 4985, 4986, 4975, 4982, 4989, 4988, 4990, 4984, 4992, + 4998, 4994, 4999, 5002, 5003, 5004, 5006, 5016, 5021, 5018, + 7224, 5007, 7224, 5017, 5019, 5023, 5031, 5029, 5026, 5032, + 5034, 5036, 7224, 5041, 5043, 5045, 5040, 5042, 7224, 5048, + 5046, 5049, 5053, 7224, 5047, 5061, 5052, 5063, 5068, 5069, - 7218, 5073, 5074, 5075, 5082, 5084, 5079, 5086, 5081, 5089, - 5087, 5083, 5091, 5092, 5100, 5098, 5096, 7218, 5102, 5104, - 5109, 5111, 5113, 5105, 5115, 5103, 5117, 5120, 5122, 7218, - 5125, 5126, 5127, 5128, 5129, 5132, 5131, 5133, 5140, 5139, - 5141, 5149, 5137, 5144, 5152, 5153, 5154, 5157, 7218, 5160, - 5161, 5159, 5168, 5173, 5166, 5176, 7218, 5170, 7218, 5169, - 5180, 5181, 5184, 5185, 7218, 5188, 5189, 5190, 5195, 7218, - 7218, 5193, 5204, 5199, 5201, 5203, 7218, 7218, 5206, 7218, - 5202, 7218, 5207, 5208, 7218, 7218, 5209, 5210, 5213, 5217, - 7218, 5218, 5222, 5226, 7218, 5229, 7218, 5239, 5215, 5240, + 7224, 5074, 5076, 5077, 5084, 5086, 5081, 5088, 5071, 5091, + 5083, 5089, 5093, 5096, 5100, 5099, 5101, 7224, 5098, 5104, + 5109, 5105, 5111, 5114, 5115, 5117, 5118, 5120, 5121, 7224, + 5125, 5126, 5127, 5128, 5129, 5131, 5132, 5133, 5142, 5139, + 5140, 5149, 5144, 5151, 5153, 5154, 5155, 5157, 7224, 5161, + 5158, 5160, 5169, 5177, 5167, 5164, 7224, 5178, 7224, 5168, + 5179, 5180, 5183, 5184, 7224, 5188, 5189, 5190, 5194, 7224, + 7224, 5196, 5203, 5198, 5202, 5199, 7224, 7224, 5205, 7224, + 5206, 7224, 5207, 5209, 7224, 7224, 5212, 5211, 5213, 5214, + 7224, 5215, 5218, 5227, 7224, 5229, 7224, 5236, 5219, 5232, - 5230, 5232, 5237, 7218, 5234, 5244, 5243, 5245, 5249, 7218, - 5250, 5251, 5252, 5262, 5259, 5261, 7218, 5264, 5265, 5267, - 5269, 7218, 5270, 5273, 5274, 5275, 5280, 5278, 5283, 5282, - 5281, 5285, 5290, 5292, 5294, 5296, 5298, 5301, 5305, 5307, - 5309, 5310, 5311, 5312, 5315, 5317, 5323, 5325, 5319, 5321, - 5327, 5328, 5329, 5333, 5335, 5332, 5337, 5343, 5344, 5346, - 5340, 5347, 5353, 5338, 5356, 5357, 5359, 5363, 5360, 5367, - 5364, 5368, 5370, 5371, 5372, 5374, 5373, 5380, 5381, 5376, - 5378, 5384, 7218, 5387, 5389, 5391, 5394, 5398, 5401, 5402, - 5404, 5409, 5415, 7218, 5417, 7218, 5419, 5410, 5413, 5421, + 5222, 5234, 5240, 7224, 5241, 5243, 5242, 5247, 5249, 7224, + 5250, 5244, 5251, 5258, 5255, 5261, 7224, 5263, 5264, 5265, + 5268, 5269, 7224, 5270, 5275, 5272, 5278, 5280, 5279, 5281, + 5283, 5290, 5291, 5282, 5293, 5295, 5297, 5301, 5300, 5303, + 5308, 5310, 5311, 5312, 5313, 5316, 5318, 5324, 5326, 5320, + 5322, 5328, 5329, 5330, 5334, 5336, 5333, 5338, 5344, 5345, + 5347, 5341, 5348, 5354, 5339, 5357, 5358, 5360, 5364, 5361, + 5368, 5365, 5369, 5371, 5372, 5373, 5375, 5374, 5381, 5382, + 5377, 5379, 5385, 7224, 5388, 5390, 5392, 5395, 5399, 5402, + 5403, 5405, 5410, 5416, 7224, 5418, 7224, 5420, 5411, 5414, - 5422, 7218, 5423, 5426, 5425, 5429, 5427, 5430, 5431, 5432, - 5435, 5438, 5441, 7218, 5451, 5446, 5434, 5439, 5454, 5458, - 7218, 5459, 5465, 5460, 5462, 5466, 5467, 5470, 5469, 5471, - 5472, 5473, 5475, 5476, 5482, 5491, 5477, 5486, 5493, 7218, - 5495, 5501, 5502, 5498, 5503, 5505, 5506, 5508, 5507, 5510, - 5511, 5513, 5514, 5515, 5517, 5518, 5527, 5536, 5528, 5539, - 7218, 5524, 7218, 5532, 5540, 5542, 5544, 5545, 5546, 5547, - 5548, 5551, 7218, 7218, 5549, 5553, 5555, 5557, 5560, 5561, - 5563, 5565, 5567, 5573, 7218, 5572, 5574, 5578, 5581, 5591, - 5580, 7218, 5583, 5586, 5588, 5595, 7218, 5592, 5596, 5597, + 5422, 5423, 7224, 5424, 5427, 5426, 5430, 5428, 5431, 5432, + 5433, 5436, 5439, 5442, 7224, 5452, 5447, 5435, 5440, 5455, + 5459, 7224, 5460, 5466, 5461, 5463, 5467, 5468, 5471, 5470, + 5472, 5473, 5474, 5476, 5477, 5483, 5492, 5478, 5487, 5494, + 7224, 5496, 5502, 5503, 5499, 5504, 5506, 5507, 5509, 5508, + 5511, 5512, 5514, 5515, 5516, 5518, 5519, 5528, 5537, 5529, + 5540, 7224, 5525, 7224, 5533, 5541, 5543, 5545, 5546, 5547, + 5548, 5549, 5552, 7224, 7224, 5550, 5554, 5556, 5558, 5561, + 5562, 5564, 5566, 5568, 5574, 7224, 5573, 5575, 5579, 5582, + 5592, 5581, 7224, 5584, 5587, 5589, 5593, 5596, 7224, 5598, - 5599, 5603, 5607, 5610, 5611, 5612, 5613, 5615, 5614, 5618, - 7218, 7218, 7218, 7218, 5619, 5622, 5623, 5625, 5628, 5630, - 5633, 5635, 5638, 5639, 5637, 5632, 5640, 7218, 5650, 7218, - 7218, 5651, 7218, 5653, 5654, 5657, 5659, 5642, 5660, 5663, - 7218, 5664, 7218, 5665, 5672, 5666, 5674, 5676, 5678, 5680, - 5685, 5682, 5686, 5687, 5688, 5696, 5692, 5693, 5695, 5698, - 5701, 5708, 7218, 7218, 5702, 5712, 5713, 5720, 5704, 5717, - 5718, 5727, 5724, 5725, 5726, 5723, 5729, 5731, 5739, 5740, - 5736, 5742, 5744, 7218, 5746, 5745, 5748, 7218, 5747, 7218, - 5755, 5756, 5757, 5749, 5758, 5763, 5764, 5765, 5768, 5770, + 5600, 5601, 5602, 5612, 5604, 5615, 5616, 5608, 5606, 5618, + 5619, 5625, 7224, 7224, 7224, 7224, 5626, 5620, 5628, 5632, + 5633, 5634, 5635, 5636, 5640, 5642, 5638, 5641, 5643, 7224, + 5653, 7224, 7224, 5654, 7224, 5655, 5656, 5657, 5663, 5664, + 5665, 5667, 7224, 5666, 7224, 5668, 5672, 5669, 5679, 5686, + 5682, 5676, 5689, 5690, 5691, 5680, 5692, 5699, 5700, 5701, + 5694, 5703, 5707, 5712, 7224, 7224, 5704, 5714, 5715, 5722, + 5719, 5720, 5723, 5732, 5727, 5728, 5729, 5730, 5734, 5735, + 5746, 5747, 5739, 5736, 5750, 7224, 5751, 5752, 5759, 7224, + 5743, 7224, 5760, 5761, 5763, 5753, 5754, 5764, 5769, 5774, - 5775, 7218, 7218, 5769, 5782, 5778, 7218, 7218, 5779, 5781, - 5783, 5785, 5789, 5786, 5790, 7218, 5791, 5796, 5794, 5792, - 5797, 5811, 5799, 7218, 5802, 7218, 5806, 5815, 5814, 5808, - 5822, 5827, 5820, 5823, 5830, 5829, 5832, 5825, 5831, 7218, - 5834, 5835, 7218, 5844, 5842, 5847, 5837, 5846, 5853, 5849, - 7218, 5856, 5854, 5859, 5862, 7218, 5866, 5863, 5868, 5869, - 7218, 5871, 7218, 5874, 5875, 5876, 5883, 5879, 7218, 5881, - 5884, 5885, 7218, 5890, 5893, 5896, 5897, 5898, 5899, 7218, - 5903, 5887, 7218, 5906, 5908, 5909, 5914, 5915, 5917, 5918, - 5919, 5920, 5927, 5923, 5924, 7218, 7218, 5935, 5933, 135, + 5770, 5772, 5777, 7224, 7224, 5780, 5787, 5783, 7224, 7224, + 5784, 5785, 5786, 5788, 5791, 5792, 5793, 7224, 5795, 5800, + 5796, 5801, 5802, 5811, 5794, 7224, 5808, 7224, 5814, 5815, + 5821, 5818, 5828, 5830, 5825, 5827, 5832, 5836, 5829, 5831, + 5833, 7224, 5839, 5840, 7224, 5847, 5846, 5850, 5842, 5851, + 5858, 5852, 7224, 5861, 5855, 5864, 5869, 5871, 7224, 5875, + 5872, 5877, 5878, 7224, 5880, 7224, 5866, 5883, 5881, 5890, + 5885, 7224, 5891, 5892, 5894, 7224, 5899, 5901, 5903, 5904, + 5896, 5905, 7224, 5914, 5906, 7224, 5908, 5916, 5919, 5922, + 5910, 5927, 5917, 5923, 5929, 5937, 5933, 5934, 7224, 7224, - 5942, 5925, 5932, 5939, 5940, 5949, 5944, 5947, 5954, 7218, - 7218, 5945, 7218, 5955, 5957, 7218, 5956, 5958, 5964, 5962, - 5966, 5967, 5968, 5970, 5973, 5975, 5983, 5976, 5974, 5987, - 7218, 5997, 6004, 5982, 5978, 5999, 6005, 6007, 6009, 6011, - 6002, 6014, 6013, 6015, 6016, 6017, 6021, 6020, 6022, 6023, - 6024, 6028, 6029, 7218, 6035, 6037, 6040, 6030, 6047, 6050, - 6042, 7218, 6052, 6054, 6058, 6059, 7218, 6063, 6065, 6066, - 6068, 6069, 6070, 7218, 6053, 6073, 6077, 6080, 6081, 6082, - 6083, 6085, 6086, 6093, 7218, 6089, 6088, 6091, 7218, 7218, - 7218, 6098, 6105, 6096, 7218, 6108, 6099, 6109, 6111, 7218, + 5942, 5935, 135, 5945, 5946, 5947, 5948, 5949, 5956, 5951, + 5953, 5959, 7224, 7224, 5960, 7224, 5954, 5961, 7224, 5952, + 5963, 5970, 5972, 5973, 5974, 5975, 5979, 5981, 5982, 5983, + 5984, 5985, 5991, 7224, 6003, 6006, 5988, 6009, 6010, 6012, + 6014, 6016, 6018, 6020, 6021, 6022, 6001, 6023, 6024, 6025, + 6028, 6029, 6031, 6033, 6035, 6037, 7224, 6044, 6046, 6048, + 6039, 6050, 6052, 6041, 7224, 6061, 6056, 6065, 6062, 7224, + 6069, 6066, 6070, 6072, 6073, 6074, 7224, 6076, 6078, 6081, + 6084, 6086, 6085, 6087, 6090, 6089, 6097, 7224, 6093, 6092, + 6099, 7224, 7224, 7224, 7224, 6102, 6111, 6100, 7224, 6113, - 6115, 6112, 6122, 6118, 7218, 7218, 7218, 6117, 6119, 6123, - 7218, 6120, 6131, 7218, 6126, 7218, 6127, 7218, 6128, 6136, - 6143, 6137, 7218, 6145, 6139, 6135, 6153, 7218, 6156, 6159, - 6161, 6162, 6147, 6151, 6163, 7218, 6172, 6164, 6173, 6175, - 6165, 6176, 6177, 6179, 6181, 6186, 6182, 6190, 7218, 6187, - 6192, 6195, 6193, 6185, 6196, 6201, 7218, 6202, 7218, 6206, - 7218, 6208, 6210, 6212, 6209, 6215, 6203, 6214, 6218, 6227, - 6217, 6220, 6228, 6230, 6231, 6234, 6236, 6242, 6238, 7218, - 7218, 6251, 6244, 7218, 6246, 6248, 7218, 6243, 7218, 6254, - 7218, 6255, 6256, 7218, 6261, 6259, 6262, 7218, 7218, 6269, + 6108, 6115, 6116, 7224, 6118, 6119, 6126, 6121, 7224, 7224, + 7224, 6123, 6124, 6127, 7224, 6125, 6137, 7224, 6130, 7224, + 6132, 7224, 6138, 6139, 6146, 6141, 7224, 6149, 6151, 6152, + 6155, 7224, 6158, 6161, 6163, 6165, 6167, 6169, 6168, 7224, + 6176, 6172, 6175, 6179, 6171, 6181, 6182, 6185, 6183, 6192, + 6184, 6195, 7224, 6196, 6197, 6199, 6205, 6191, 6198, 6207, + 7224, 6208, 7224, 6212, 7224, 6214, 6216, 6217, 6215, 6223, + 6218, 6220, 6225, 6221, 6224, 6231, 6235, 6237, 6238, 6240, + 6242, 6248, 6243, 7224, 7224, 6255, 6245, 7224, 6252, 6261, + 7224, 6250, 7224, 6264, 7224, 6253, 6257, 7224, 6265, 6267, - 6263, 6265, 6276, 6273, 6278, 6279, 7218, 6280, 6285, 6282, - 6287, 7218, 6290, 7218, 6288, 6295, 6292, 7218, 6291, 6293, - 6303, 6305, 6294, 6300, 6307, 6310, 6314, 6311, 6318, 6315, - 6316, 6317, 6325, 6327, 6329, 6330, 6335, 7218, 7218, 7218, - 6338, 6339, 6346, 6344, 6345, 6347, 6349, 7218, 6351, 6353, - 6355, 6354, 6363, 6358, 6362, 7218, 6365, 6364, 6366, 6368, - 6370, 6371, 6372, 6374, 7218, 6379, 6385, 6387, 6389, 6392, - 6393, 6396, 6400, 6402, 6403, 6405, 6397, 6407, 6414, 6411, - 7218, 7218, 6418, 6409, 7218, 6420, 6422, 7218, 6413, 7218, - 6415, 6423, 6424, 6426, 6427, 7218, 6430, 6431, 6434, 6435, + 6272, 7224, 7224, 6275, 6268, 6276, 6284, 6279, 6281, 6282, + 7224, 6286, 6289, 6290, 6292, 7224, 6299, 7224, 6294, 6304, + 6295, 7224, 6296, 6297, 6306, 6308, 6310, 6311, 6313, 6315, + 6319, 6316, 6327, 6320, 6317, 6322, 6334, 6330, 6335, 6337, + 6343, 7224, 7224, 7224, 6341, 6346, 6354, 6350, 6352, 6357, + 6347, 7224, 6356, 6359, 6362, 6360, 6369, 6364, 6371, 7224, + 6368, 6372, 6373, 6374, 6376, 6377, 6378, 6383, 7224, 6385, + 6389, 6400, 6386, 6393, 6397, 6404, 6406, 6409, 6401, 6412, + 6413, 6395, 6420, 6417, 7224, 7224, 6416, 6418, 7224, 6424, + 6428, 7224, 6419, 7224, 6425, 6429, 6430, 6431, 6432, 7224, - 7218, 6436, 6438, 6440, 6442, 7218, 6444, 6452, 6450, 6454, - 6455, 6458, 7218, 7218, 6451, 6465, 7218, 6467, 6469, 6461, - 6477, 6468, 6476, 6479, 6481, 7218, 6483, 6485, 6482, 6488, - 6489, 6491, 6492, 7218, 6493, 6495, 6496, 6497, 7218, 6500, - 6499, 6504, 6505, 6506, 7218, 6507, 6509, 6519, 6520, 7218, - 6510, 6524, 6523, 7218, 7218, 7218, 6532, 6534, 6535, 7218, - 7218, 7218, 6528, 7218, 6538, 6540, 6541, 6547, 7218, 6542, - 7218, 7218, 6549, 6553, 6558, 6562, 6566, 6565, 7218, 6554, - 6567, 6571, 6568, 6573, 7218, 7218, 6574, 6552, 6577, 6578, - 6580, 6581, 6582, 7218, 7218, 6584, 6585, 6589, 6591, 6588, + 6436, 6437, 6439, 6440, 7224, 6441, 6443, 6445, 6456, 7224, + 6442, 6465, 6446, 6448, 6457, 6464, 7224, 7224, 6450, 6473, + 7224, 6475, 6476, 6468, 6483, 6478, 6479, 6485, 6486, 7224, + 6488, 6489, 6480, 6493, 6496, 6495, 6497, 7224, 6498, 6499, + 6502, 6504, 7224, 6505, 6509, 6510, 6508, 6511, 7224, 6512, + 6514, 6521, 6526, 7224, 6519, 6530, 6532, 7224, 7224, 7224, + 6536, 6538, 6540, 7224, 7224, 7224, 6541, 7224, 6543, 6546, + 6547, 6549, 7224, 6550, 7224, 7224, 6553, 6557, 6561, 6563, + 6570, 6560, 7224, 6569, 6571, 6573, 6575, 6576, 7224, 7224, + 6577, 6579, 6581, 6582, 6584, 6585, 6586, 7224, 7224, 6588, - 7218, 6590, 6596, 6595, 6598, 6604, 6611, 6613, 6606, 6614, - 6615, 6623, 6626, 6616, 6618, 6625, 6629, 6630, 6628, 6632, - 6642, 6637, 6639, 6645, 6640, 6648, 7218, 7218, 6650, 6651, - 7218, 6657, 6652, 7218, 6654, 7218, 6659, 6663, 6667, 6669, - 7218, 6671, 6674, 6676, 6678, 6660, 7218, 6679, 6681, 6683, - 6684, 6685, 6687, 7218, 6689, 6691, 6692, 6695, 6698, 6696, - 6700, 6701, 6706, 7218, 6699, 6716, 7218, 7218, 6703, 6717, - 6708, 6718, 6710, 7218, 6722, 6729, 6724, 6726, 6727, 6730, - 6733, 7218, 6735, 6736, 7218, 7218, 6739, 6732, 7218, 6750, - 7218, 6737, 6740, 7218, 7218, 7218, 7218, 7218, 7218, 7218, + 6589, 6591, 6598, 6594, 7224, 6592, 6597, 6605, 6608, 6611, + 6615, 6619, 6616, 6620, 6621, 6628, 6629, 6624, 6626, 6632, + 6634, 6635, 6636, 6638, 6648, 6644, 6646, 6652, 6643, 6654, + 7224, 7224, 6657, 6647, 7224, 6663, 6660, 7224, 6664, 7224, + 6666, 6668, 6671, 6673, 7224, 6675, 6677, 6679, 6681, 6683, + 7224, 6684, 6686, 6688, 6689, 6690, 6691, 7224, 6692, 6695, + 6696, 6700, 6697, 6701, 6704, 6705, 6718, 7224, 6708, 6720, + 7224, 7224, 6703, 6710, 6722, 6724, 6726, 7224, 6727, 6734, + 6729, 6731, 6732, 6735, 6733, 7224, 6739, 6737, 7224, 7224, + 6738, 6740, 7224, 6756, 7224, 6741, 6750, 7224, 7224, 7224, - 7218, 6752, 6753, 7218, 7218, 6742, 6759, 6762, 6765, 7218, - 6767, 7218, 6754, 6769, 6768, 6770, 7218, 6771, 7218, 6773, - 6775, 6774, 6780, 6776, 6783, 6781, 6787, 6789, 6788, 6792, - 6793, 6800, 6798, 6797, 6795, 6799, 6813, 6801, 6815, 6803, - 6819, 7218, 7218, 7218, 7218, 6812, 6805, 6822, 6827, 6829, - 6830, 6833, 6835, 6837, 6838, 6839, 6840, 6841, 6843, 6844, - 6853, 6848, 6849, 6850, 6852, 6854, 6864, 6866, 6870, 7218, - 6872, 6860, 6857, 6878, 7218, 6867, 7218, 6873, 7218, 7218, - 6880, 6883, 6881, 6885, 6892, 6893, 6888, 6890, 6894, 6895, - 6897, 7218, 6899, 7218, 7218, 7218, 7218, 6901, 6905, 7218, + 7224, 7224, 7224, 7224, 7224, 6747, 6758, 7224, 7224, 6759, + 6763, 6765, 6769, 7224, 6774, 7224, 6754, 6766, 6776, 6771, + 7224, 6778, 7224, 6760, 6779, 6781, 6782, 6785, 6787, 6789, + 6793, 6795, 6794, 6796, 6799, 6797, 6803, 6804, 6798, 6805, + 6811, 6801, 6808, 6818, 6822, 7224, 7224, 7224, 7224, 6823, + 6824, 6826, 6830, 6829, 6831, 6834, 6836, 6840, 6841, 6842, + 6843, 6846, 6847, 6849, 6856, 6852, 6853, 6855, 6858, 6854, + 6863, 6868, 6870, 7224, 6876, 6871, 6873, 6878, 7224, 6879, + 7224, 6880, 7224, 7224, 6882, 6883, 6885, 6887, 6895, 6896, + 6888, 6891, 6897, 6900, 6908, 7224, 6910, 7224, 7224, 7224, - 6906, 6907, 7218, 6908, 6909, 6910, 6917, 6918, 6915, 6916, - 6919, 6927, 7218, 7218, 6912, 6923, 6933, 6936, 6937, 6944, - 6939, 6943, 6945, 6946, 6947, 6955, 7218, 6954, 6956, 6958, - 7218, 6959, 6960, 6962, 6964, 6965, 6973, 6968, 6972, 7218, - 6970, 7218, 6975, 6977, 6976, 6978, 6980, 6982, 6990, 6988, - 6992, 7218, 6994, 7000, 6996, 7002, 7006, 7004, 7010, 7008, - 7012, 7013, 7014, 7022, 7019, 7023, 7024, 7028, 7025, 7218, - 7032, 7029, 7218, 7034, 7035, 7036, 7037, 7041, 7218, 7046, - 7038, 7047, 7049, 7052, 7053, 7218, 7059, 7062, 7063, 7218, - 7064, 7218, 7218, 7067, 7054, 7065, 7075, 7077, 7218, 7218, + 7224, 6899, 6901, 7224, 6903, 6911, 7224, 6912, 6913, 6914, + 6922, 6923, 6919, 6924, 6925, 6927, 7224, 7224, 6928, 6931, + 6934, 6940, 6937, 6947, 6943, 6945, 6946, 6952, 6954, 6961, + 7224, 6959, 6960, 6963, 7224, 6964, 6956, 6967, 6966, 6969, + 6976, 6971, 6978, 7224, 6979, 7224, 6982, 6977, 6987, 6983, + 6984, 6993, 6994, 6996, 6997, 7224, 6972, 6999, 7004, 7007, + 7011, 7009, 7013, 7005, 7016, 7017, 7019, 7026, 7027, 7028, + 7018, 7031, 7029, 7224, 7033, 7030, 7224, 7038, 7039, 7040, + 7041, 7045, 7224, 7051, 7042, 7047, 7052, 7055, 7056, 7224, + 7058, 7065, 7062, 7224, 7067, 7224, 7224, 7068, 7070, 7071, - 7218, 7098, 7105, 7112, 7119, 7126, 7133, 7140, 88, 7147, - 7154, 7161, 7168, 7175, 7182, 7189, 7196, 7203, 7210 + 7075, 7077, 7224, 7224, 7224, 7104, 7111, 7118, 7125, 7132, + 7139, 7146, 88, 7153, 7160, 7167, 7174, 7181, 7188, 7195, + 7202, 7209, 7216 } ; -static const flex_int16_t yy_def[3720] = +static const flex_int16_t yy_def[3724] = { 0, - 3701, 1, 3702, 3702, 3703, 3703, 3704, 3704, 3705, 3705, - 3706, 3706, 3707, 3707, 3708, 3708, 3701, 3709, 3701, 3701, - 3701, 3701, 3710, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3711, 3701, 3701, 3701, - 3711, 3712, 3701, 3701, 3701, 3712, 3713, 3701, 3701, 3701, - 3701, 3713, 3714, 3701, 3701, 3701, 3714, 3715, 3701, 3716, - 3701, 3715, 3715, 3717, 3701, 3701, 3701, 3701, 3717, 3718, - 3701, 3701, 3701, 3718, 3709, 3709, 3701, 3719, 3710, 3719, - 3710, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3705, 1, 3706, 3706, 3707, 3707, 3708, 3708, 3709, 3709, + 3710, 3710, 3711, 3711, 3712, 3712, 3705, 3713, 3705, 3705, + 3705, 3705, 3714, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3715, 3705, 3705, 3705, + 3715, 3716, 3705, 3705, 3705, 3716, 3717, 3705, 3705, 3705, + 3705, 3717, 3718, 3705, 3705, 3705, 3718, 3719, 3705, 3720, + 3705, 3719, 3719, 3721, 3705, 3705, 3705, 3705, 3721, 3722, + 3705, 3705, 3705, 3722, 3713, 3713, 3705, 3723, 3714, 3723, + 3714, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3711, - 3711, 3712, 3712, 3713, 3713, 3701, 3714, 3714, 3715, 3715, - 3716, 3716, 3715, 3717, 3717, 3701, 3718, 3718, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3715, + 3715, 3716, 3716, 3717, 3717, 3705, 3718, 3718, 3719, 3719, + 3720, 3720, 3719, 3721, 3721, 3705, 3722, 3722, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3715, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3719, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3701, 3701, 3709, 3701, 3701, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3705, 3705, 3713, 3705, 3705, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3715, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3719, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3715, 3715, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3719, 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3715, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3719, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3701, 3709, 3709, 3709, 3709, 3715, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3705, 3713, 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3715, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3715, 3709, 3701, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3719, 3713, 3705, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3715, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3719, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3715, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3719, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, - 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3701, - 3709, 3701, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, + 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3705, + 3713, 3705, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3715, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3719, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3701, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3715, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3705, 3705, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3705, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3705, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3709, 3701, 3701, 3709, 3709, 3709, 3701, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3715, + 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3705, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3701, 3709, 3701, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3701, - 3701, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, + 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3705, 3713, 3705, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3705, 3705, 3705, 3705, 3713, 3713, 3713, 3705, 3713, - 3709, 3709, 3709, 3709, 3701, 3701, 3701, 3709, 3709, 3709, - 3701, 3709, 3709, 3701, 3709, 3701, 3709, 3701, 3709, 3709, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3701, 3709, 3709, 3701, 3709, 3709, 3701, 3709, 3701, 3709, - 3701, 3709, 3709, 3701, 3709, 3709, 3709, 3701, 3701, 3709, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, 3705, + 3705, 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3705, + 3713, 3705, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3705, 3713, 3713, + 3705, 3713, 3705, 3713, 3705, 3713, 3713, 3705, 3713, 3713, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3701, 3701, 3709, 3709, 3701, 3709, 3709, 3701, 3709, 3701, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, + 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3705, 3713, + 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, - 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3701, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3701, 3701, 3701, 3709, 3709, 3709, 3701, - 3701, 3701, 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, - 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3705, 3705, 3705, + 3713, 3713, 3713, 3705, 3705, 3705, 3713, 3705, 3713, 3713, + 3713, 3713, 3705, 3713, 3705, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3705, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3701, 3709, 3709, - 3701, 3709, 3709, 3701, 3709, 3701, 3709, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3701, 3701, 3709, 3709, - 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3701, 3701, 3709, 3709, 3701, 3709, - 3701, 3709, 3709, 3701, 3701, 3701, 3701, 3701, 3701, 3701, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3705, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3705, + 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3705, + 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3705, 3705, 3705, - 3701, 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3701, - 3709, 3701, 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3701, 3701, 3701, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3709, 3709, 3701, 3709, 3701, 3709, 3701, 3701, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3701, 3701, 3701, 3701, 3709, 3709, 3701, + 3705, 3705, 3705, 3705, 3705, 3713, 3713, 3705, 3705, 3713, + 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, + 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3705, 3705, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, 3713, + 3705, 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3705, 3705, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, - 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3701, - 3709, 3709, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3709, - 3709, 3709, 3709, 3709, 3709, 3701, 3709, 3709, 3709, 3701, - 3709, 3701, 3701, 3709, 3709, 3709, 3709, 3709, 3701, 3701, + 3705, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3705, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, + 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3713, 3713, 3713, 3705, 3713, 3705, 3705, 3713, 3713, 3713, - 0, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701 + 3713, 3713, 3705, 3705, 0, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705 } ; -static const flex_int16_t yy_nxt[7259] = +static const flex_int16_t yy_nxt[7265] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -2056,7 +2058,7 @@ static const flex_int16_t yy_nxt[7259] = 2000, 86, 86, 86, 2007, 2002, 1998, 86, 2005, 2009, 86, 86, 2011, 2008, 86, 2006, 2015, 86, 86, 86, 2013, 86, 86, 86, 86, 2010, 2014, 2012, 86, 2016, - 86, 86, 86, 3701, 86, 2021, 2020, 86, 2017, 86, + 86, 86, 86, 3705, 86, 2021, 2020, 86, 2017, 86, 2022, 86, 2018, 2019, 2030, 2023, 2024, 2025, 2028, 86, 86, 2031, 86, 2026, 86, 2027, 86, 86, 86, 2032, 2034, 86, 86, 2038, 86, 2033, 86, 2040, 86, 86, @@ -2072,7 +2074,7 @@ static const flex_int16_t yy_nxt[7259] = 86, 86, 2081, 86, 86, 86, 2082, 86, 86, 86, 86, 2080, 86, 86, 2087, 2088, 86, 86, 2092, 86, - 86, 2089, 86, 3701, 2083, 2085, 2086, 2084, 2090, 2093, + 86, 2089, 86, 3705, 2083, 2085, 2086, 2084, 2090, 2093, 86, 86, 2091, 2100, 86, 2098, 2096, 2099, 2101, 2095, 86, 86, 2094, 2097, 86, 86, 86, 86, 86, 86, 86, 2108, 86, 86, 86, 2111, 86, 2103, 2112, 86, @@ -2100,14 +2102,14 @@ static const flex_int16_t yy_nxt[7259] = 2212, 2203, 2207, 86, 2211, 2213, 86, 86, 86, 2204, 86, 86, 2205, 86, 2209, 86, 86, 2216, 2221, 86, 86, 2220, 86, 2215, 86, 2210, 86, 2214, 86, 86, - 2218, 3701, 2226, 2217, 86, 2227, 86, 2219, 2229, 2224, + 2218, 3705, 2226, 2217, 86, 2227, 86, 2219, 2229, 2224, 86, 2223, 2228, 86, 2222, 2225, 2230, 86, 86, 2234, 86, 2232, 2231, 86, 86, 86, 2233, 86, 86, 86, 2238, 86, 2242, 86, 2235, 86, 86, 2236, 86, 86, 2245, 2247, 86, 2237, 86, 2248, 2244, 2239, 2240, 2241, 86, 2243, 2246, 86, 2249, 86, 2253, 86, 86, 2255, - 86, 3701, 2250, 2254, 2256, 86, 2251, 2257, 2259, 2260, + 86, 3705, 2250, 2254, 2256, 86, 2251, 2257, 2259, 2260, 86, 2252, 2258, 86, 86, 86, 86, 86, 2264, 86, 86, 2262, 2263, 2261, 86, 86, 86, 86, 2268, 2265, 2266, 2267, 2270, 2272, 2273, 86, 86, 86, 86, 86, @@ -2185,265 +2187,266 @@ static const flex_int16_t yy_nxt[7259] = 2602, 2596, 2604, 86, 86, 86, 86, 2598, 2607, 86, 2610, 86, 2611, 2605, 86, 2603, 86, 86, 86, 2606, 2608, 86, 86, 2617, 86, 86, 2616, 86, 2609, 86, - 86, 2613, 2619, 86, 2612, 86, 2615, 2622, 86, 86, - 2614, 86, 2624, 86, 2618, 2620, 86, 86, 2621, 2623, - 86, 2630, 2636, 2625, 86, 86, 86, 2632, 86, 2626, - 86, 2627, 2628, 2631, 86, 2638, 86, 2633, 2637, 86, - 86, 2639, 2629, 86, 86, 86, 86, 86, 2644, 3701, - 86, 86, 2634, 2641, 2635, 2643, 2646, 86, 86, 86, - 2650, 2651, 2647, 2648, 2640, 2642, 86, 86, 2652, 86, + 86, 2613, 2619, 86, 2612, 86, 2615, 86, 2621, 86, + 2614, 2623, 86, 86, 2618, 2620, 2625, 2626, 86, 2624, + 86, 86, 2622, 2627, 86, 2631, 86, 86, 2633, 86, + 2632, 2628, 2634, 2629, 2637, 86, 86, 86, 86, 2638, + 86, 2639, 2640, 86, 86, 86, 2630, 2635, 86, 2636, + 2645, 2642, 86, 2644, 86, 86, 86, 2647, 86, 2648, + 2641, 2649, 2651, 2652, 2643, 86, 2655, 86, 86, 86, - 2654, 2645, 86, 86, 2649, 2657, 86, 2655, 2656, 86, - 86, 86, 86, 2659, 2653, 86, 86, 86, 86, 86, - 86, 2661, 2658, 2666, 2662, 2663, 2664, 2667, 86, 86, - 86, 2660, 2665, 86, 2668, 86, 2672, 2671, 2673, 2669, - 2670, 86, 2674, 86, 86, 86, 2677, 86, 170, 86, - 2675, 86, 2676, 2678, 86, 2683, 86, 86, 86, 86, - 86, 86, 86, 2691, 86, 2681, 2684, 2679, 2685, 2680, - 2682, 86, 2686, 2687, 2689, 86, 2688, 3701, 2690, 2694, - 86, 86, 2695, 2693, 2692, 2696, 86, 86, 86, 2699, - 2697, 2700, 86, 2698, 86, 86, 86, 86, 2702, 86, + 2650, 86, 86, 86, 2646, 86, 2656, 86, 2657, 2653, + 2654, 86, 86, 3705, 2660, 86, 86, 86, 2659, 86, + 86, 2662, 2658, 2667, 2663, 2664, 2665, 2661, 2668, 86, + 86, 86, 86, 2666, 86, 2669, 86, 2673, 2674, 86, + 2670, 2672, 86, 2675, 86, 86, 2678, 170, 2677, 86, + 2671, 2676, 2679, 86, 86, 86, 86, 2684, 86, 86, + 86, 86, 86, 2691, 2686, 86, 86, 3705, 2685, 2680, + 2682, 2681, 2683, 2687, 86, 2688, 86, 2689, 2690, 2692, + 2695, 86, 86, 2696, 86, 2693, 2697, 86, 2694, 86, + 86, 2700, 2698, 2701, 86, 2699, 86, 86, 2704, 86, - 86, 2701, 86, 2704, 86, 86, 2708, 2709, 2703, 86, - 2706, 86, 2705, 86, 2711, 86, 86, 86, 86, 2712, - 2713, 2714, 86, 2707, 86, 2710, 86, 2717, 86, 2715, - 86, 2716, 2721, 86, 2720, 86, 2719, 2718, 86, 86, - 86, 86, 86, 2723, 86, 86, 86, 2731, 2722, 2728, - 86, 2730, 86, 86, 86, 2733, 2727, 86, 2732, 2724, - 2725, 2726, 86, 2734, 2729, 86, 86, 86, 2735, 2740, - 86, 2738, 86, 86, 86, 2744, 2736, 2743, 3701, 86, - 2745, 86, 86, 86, 2737, 2741, 86, 2746, 2739, 86, - 2742, 2747, 2748, 86, 86, 2751, 2749, 86, 86, 2753, + 2703, 86, 86, 2702, 86, 2705, 86, 2710, 2706, 86, + 2709, 86, 86, 86, 86, 2713, 2707, 86, 86, 2712, + 2714, 2715, 86, 2716, 86, 2708, 2711, 86, 86, 2717, + 86, 86, 2722, 86, 86, 2721, 2718, 2719, 86, 86, + 86, 86, 86, 2724, 86, 86, 86, 2723, 2729, 2732, + 2720, 2731, 86, 86, 2734, 86, 2728, 86, 2733, 2725, + 2726, 2727, 86, 2735, 86, 2730, 86, 86, 86, 2741, + 86, 86, 2739, 86, 86, 2736, 2745, 86, 2744, 2748, + 86, 86, 86, 2737, 2746, 2738, 2742, 2743, 2747, 2740, + 86, 86, 86, 86, 2752, 2750, 86, 86, 2754, 2753, - 2752, 86, 86, 86, 2754, 2755, 86, 2750, 86, 2757, - 2758, 2759, 86, 2761, 86, 86, 86, 86, 2763, 86, - 86, 86, 86, 86, 2760, 2762, 86, 2767, 86, 2756, - 86, 86, 3701, 2764, 2765, 86, 2771, 2766, 2773, 86, - 2772, 2774, 86, 86, 2769, 86, 2775, 86, 2776, 2768, - 86, 2770, 86, 86, 2777, 2780, 86, 86, 86, 2778, - 2782, 2785, 86, 86, 86, 86, 2781, 2779, 2783, 2789, - 2784, 2788, 86, 2787, 86, 86, 2792, 86, 86, 2786, - 86, 2793, 86, 86, 2796, 2797, 86, 86, 86, 2791, - 2790, 86, 2798, 86, 86, 86, 86, 2803, 86, 2794, + 2749, 86, 86, 86, 2755, 2756, 2751, 86, 2758, 86, + 2760, 86, 86, 2759, 2762, 86, 86, 2764, 86, 86, + 86, 2763, 86, 2761, 86, 86, 86, 86, 86, 2757, + 2768, 86, 86, 2772, 2766, 86, 2773, 2765, 2767, 2774, + 86, 2775, 86, 2776, 2770, 86, 2778, 86, 2771, 86, + 2769, 2779, 2777, 86, 86, 86, 86, 86, 2781, 2783, + 86, 2786, 86, 86, 86, 2790, 2788, 2784, 86, 2780, + 2789, 86, 2785, 2782, 86, 2793, 86, 86, 86, 2787, + 2794, 86, 86, 86, 2798, 86, 2791, 2799, 86, 2792, + 2800, 86, 86, 86, 86, 86, 86, 2795, 2805, 2804, - 2795, 2802, 2800, 86, 2801, 86, 2799, 86, 2804, 86, - 2807, 86, 2805, 2811, 86, 2806, 2810, 2812, 86, 2813, - 86, 2814, 86, 86, 86, 86, 2816, 2808, 86, 2809, - 86, 2819, 86, 2818, 86, 2815, 86, 2820, 86, 2821, - 86, 86, 86, 2817, 2822, 86, 86, 2828, 86, 2830, - 86, 86, 2824, 86, 2823, 2831, 86, 86, 2833, 86, - 86, 2825, 2827, 2826, 2829, 2834, 86, 2835, 2832, 86, - 86, 2837, 86, 86, 2838, 2841, 86, 86, 2836, 2843, - 86, 86, 2842, 86, 86, 86, 86, 86, 2850, 86, - 2839, 86, 2840, 170, 86, 2852, 2846, 86, 2853, 2848, + 2797, 2796, 2802, 86, 86, 2803, 86, 2808, 86, 2801, + 86, 2809, 2813, 86, 86, 2814, 86, 2806, 2807, 2812, + 2815, 86, 2816, 86, 86, 86, 86, 2818, 2810, 86, + 2811, 86, 2821, 86, 2820, 86, 2817, 86, 2822, 86, + 2823, 86, 86, 86, 2819, 2824, 86, 86, 2830, 86, + 2832, 86, 86, 2826, 86, 2825, 2833, 86, 86, 2835, + 86, 86, 2827, 2829, 2828, 2831, 2836, 86, 2837, 2834, + 86, 86, 2839, 86, 86, 2840, 2843, 86, 86, 2838, + 2845, 86, 86, 2844, 86, 86, 86, 86, 86, 2852, + 86, 2841, 86, 2842, 170, 86, 2854, 2848, 86, 2855, - 86, 2845, 86, 2844, 86, 2851, 2854, 86, 2847, 2849, - 2859, 86, 2855, 3701, 86, 86, 2863, 86, 2856, 2861, - 2862, 2864, 86, 86, 2857, 2860, 86, 2858, 86, 2865, - 86, 2866, 86, 2867, 86, 86, 86, 2869, 86, 86, - 86, 2868, 86, 86, 86, 86, 2878, 86, 86, 2876, - 2871, 86, 86, 2870, 86, 2882, 2872, 2873, 2884, 86, - 2874, 2885, 2875, 2877, 86, 2879, 2880, 86, 2883, 2881, - 2888, 86, 86, 86, 2886, 86, 2887, 2890, 86, 86, - 86, 2889, 86, 86, 86, 86, 86, 2894, 86, 86, - 86, 2891, 2900, 2892, 2902, 86, 2901, 2893, 2895, 86, + 2850, 86, 2847, 86, 2846, 86, 2853, 2856, 86, 2849, + 2851, 2861, 86, 2857, 3705, 86, 86, 2865, 86, 2858, + 2863, 2864, 2866, 86, 86, 2859, 2862, 86, 2860, 86, + 2867, 86, 2868, 86, 2869, 86, 86, 86, 2871, 86, + 86, 86, 2870, 86, 86, 86, 86, 2880, 86, 86, + 2878, 2873, 86, 86, 2872, 86, 2884, 2874, 2875, 2886, + 86, 2876, 2887, 2877, 2879, 86, 2881, 2882, 86, 2885, + 2883, 2890, 86, 86, 86, 2888, 86, 2889, 2892, 86, + 86, 86, 2891, 86, 86, 86, 86, 86, 2896, 86, + 86, 86, 2893, 2902, 2894, 2904, 86, 2903, 2895, 2897, - 2896, 2898, 2897, 2903, 86, 2899, 86, 2907, 86, 2909, - 2904, 86, 2906, 2908, 86, 86, 86, 2905, 86, 86, - 86, 86, 2916, 86, 86, 2915, 86, 86, 86, 2910, - 86, 86, 3701, 2912, 2911, 2914, 2922, 86, 2913, 2920, - 86, 86, 2923, 2925, 2917, 86, 2918, 2919, 2924, 86, - 2921, 2926, 86, 86, 2928, 86, 2927, 86, 86, 86, - 86, 86, 86, 2932, 86, 2934, 86, 2930, 86, 2940, - 86, 2939, 2929, 86, 86, 2943, 86, 2931, 86, 2933, - 86, 2935, 2937, 2936, 2938, 86, 86, 86, 2941, 2944, - 2946, 86, 2942, 86, 86, 2945, 86, 2949, 2950, 86, + 86, 2898, 2900, 2899, 2905, 86, 2901, 86, 2909, 86, + 2911, 2906, 86, 2908, 2910, 86, 86, 86, 2907, 86, + 86, 86, 86, 2918, 86, 86, 2917, 86, 86, 86, + 2912, 86, 86, 3705, 2914, 2913, 2916, 2924, 86, 2915, + 2922, 86, 86, 2925, 2927, 2919, 86, 2920, 2921, 2926, + 86, 2923, 2928, 86, 86, 2930, 86, 2929, 86, 86, + 86, 86, 86, 86, 2934, 86, 2936, 86, 2932, 86, + 2942, 86, 2941, 2931, 86, 86, 2945, 86, 2933, 86, + 2935, 86, 2937, 2939, 2938, 2940, 86, 86, 86, 2943, + 2946, 2948, 86, 2944, 86, 86, 2947, 86, 2951, 2952, - 2947, 86, 2948, 2951, 86, 86, 2952, 2956, 86, 86, - 86, 2953, 86, 2960, 2959, 2961, 86, 2957, 2958, 2954, - 86, 2955, 2963, 86, 86, 86, 86, 86, 86, 2964, - 2969, 86, 86, 2970, 2965, 86, 86, 2973, 86, 2962, - 2967, 86, 2966, 86, 2971, 86, 86, 2968, 86, 2980, - 86, 86, 86, 86, 2974, 86, 2975, 2977, 2972, 2976, - 2978, 2979, 2983, 86, 86, 2981, 86, 86, 2982, 2984, - 86, 2985, 86, 86, 2989, 2987, 86, 86, 86, 86, - 2988, 2986, 2990, 2993, 2991, 86, 2996, 86, 2997, 86, - 2994, 86, 2992, 86, 2995, 86, 2998, 3000, 170, 86, + 86, 2949, 86, 2950, 2953, 86, 86, 2954, 2959, 86, + 2957, 86, 2955, 86, 86, 86, 2963, 86, 2962, 86, + 2956, 86, 2961, 2960, 2964, 86, 2958, 2966, 86, 86, + 2968, 86, 86, 86, 2967, 2969, 2965, 2972, 86, 86, + 2973, 86, 2974, 2970, 2976, 86, 86, 86, 86, 86, + 2983, 86, 2971, 86, 86, 86, 86, 3705, 2980, 2977, + 2978, 2979, 2981, 2975, 2982, 2986, 86, 86, 86, 86, + 86, 2985, 2987, 2988, 2984, 2990, 86, 86, 86, 86, + 86, 86, 86, 2989, 2991, 86, 2996, 2993, 2994, 86, + 2997, 2999, 86, 86, 2995, 86, 2992, 2998, 3000, 86, - 86, 86, 3001, 3005, 3002, 86, 86, 3007, 86, 86, - 3006, 86, 2999, 3010, 86, 86, 3009, 86, 3003, 3004, - 3011, 86, 3017, 3008, 3013, 86, 86, 3015, 3012, 3014, - 86, 86, 3016, 86, 3020, 3018, 86, 86, 86, 86, - 86, 3021, 86, 3022, 86, 3019, 3027, 3028, 3023, 86, - 3025, 3024, 86, 86, 3029, 86, 3031, 86, 86, 86, - 86, 86, 86, 3033, 3034, 3026, 3032, 3030, 86, 86, - 86, 86, 3035, 3036, 3037, 3038, 86, 86, 86, 3043, - 3039, 86, 86, 86, 3040, 3041, 3042, 3045, 86, 3048, - 3044, 86, 86, 3046, 86, 86, 86, 3049, 86, 86, + 3001, 3003, 170, 86, 86, 86, 3008, 86, 3002, 3005, + 3004, 3006, 86, 86, 86, 3010, 86, 86, 3009, 3013, + 86, 3012, 3011, 3007, 3014, 86, 3016, 86, 86, 3018, + 3015, 3017, 86, 86, 3019, 86, 86, 3020, 3021, 3023, + 86, 86, 86, 86, 3024, 86, 3025, 86, 86, 86, + 3022, 3026, 86, 3030, 3031, 3028, 86, 3032, 3027, 86, + 86, 3033, 3034, 86, 86, 86, 86, 86, 3038, 3029, + 3036, 3035, 86, 86, 86, 3037, 86, 86, 3039, 3040, + 3043, 3041, 86, 86, 3042, 86, 3044, 86, 3046, 3048, + 86, 3045, 3047, 86, 3051, 3049, 86, 86, 86, 86, - 3047, 3054, 86, 86, 86, 86, 3055, 86, 3059, 86, - 86, 3050, 86, 3057, 3051, 86, 3052, 3053, 3058, 86, - 3060, 86, 3056, 3062, 86, 3061, 3067, 86, 86, 3069, - 3064, 3063, 3066, 86, 3070, 86, 86, 3073, 86, 3065, - 86, 3074, 86, 86, 86, 86, 3068, 86, 86, 3077, - 86, 3080, 3071, 3075, 3072, 86, 3078, 86, 3081, 86, - 86, 3079, 86, 3076, 3082, 3085, 86, 86, 3083, 86, - 3087, 3089, 86, 3084, 3090, 86, 86, 3086, 3091, 86, - 3092, 86, 86, 3095, 86, 3088, 3093, 86, 86, 86, - 3099, 3094, 86, 3097, 86, 3100, 86, 86, 86, 3104, + 86, 86, 3052, 3057, 86, 86, 86, 86, 86, 86, + 3062, 3050, 3058, 86, 86, 86, 3053, 3060, 3054, 3055, + 3056, 86, 3061, 3065, 86, 3059, 3066, 86, 86, 3063, + 3064, 86, 3069, 3070, 86, 3072, 3067, 3073, 86, 3076, + 86, 86, 86, 86, 86, 86, 86, 3068, 3077, 86, + 3078, 3080, 86, 86, 3083, 86, 3071, 3074, 3075, 86, + 86, 3081, 3084, 86, 86, 86, 3082, 3085, 86, 3079, + 3088, 86, 3705, 3086, 86, 3090, 3092, 86, 3087, 86, + 3089, 3093, 86, 3094, 86, 86, 3091, 3095, 86, 3096, + 86, 86, 3099, 86, 86, 3097, 86, 3103, 86, 3100, - 86, 3098, 3105, 86, 3101, 3106, 86, 3096, 3107, 86, - 86, 86, 86, 3108, 3102, 3111, 86, 3103, 3112, 86, - 3114, 86, 86, 3115, 3109, 3110, 3116, 86, 86, 3118, - 86, 86, 86, 86, 3122, 3123, 86, 86, 86, 3113, - 86, 3124, 3125, 3117, 3119, 86, 86, 3121, 86, 3127, - 3120, 3126, 86, 86, 3128, 86, 3133, 86, 86, 3132, - 86, 3129, 86, 3137, 3135, 3130, 3136, 86, 86, 86, - 86, 86, 3131, 3139, 3141, 86, 3138, 86, 3142, 86, - 86, 86, 3134, 86, 3145, 3149, 86, 86, 86, 86, - 3161, 86, 3143, 3144, 3140, 86, 86, 3148, 3146, 3151, + 3098, 3101, 3104, 86, 86, 86, 3102, 86, 3108, 86, + 3105, 3109, 86, 3110, 86, 3111, 86, 86, 86, 86, + 3112, 86, 3113, 86, 3106, 3107, 3115, 86, 3118, 86, + 86, 3114, 86, 3119, 3120, 86, 86, 3116, 3121, 3122, + 86, 3117, 86, 3123, 3126, 3127, 86, 86, 86, 3129, + 86, 3128, 3131, 3130, 3124, 86, 3125, 3132, 86, 86, + 86, 86, 86, 3137, 86, 86, 86, 86, 3136, 86, + 3139, 3140, 86, 86, 86, 3142, 86, 3143, 3141, 3145, + 3134, 3135, 3133, 86, 3146, 86, 86, 86, 86, 3138, + 3144, 3149, 86, 3153, 86, 86, 86, 86, 86, 3155, - 86, 3147, 3150, 3153, 3156, 3701, 3154, 3152, 3155, 3157, - 86, 3158, 86, 3162, 3160, 86, 3159, 86, 86, 3163, - 86, 3164, 86, 3165, 86, 3166, 86, 86, 86, 86, - 86, 3167, 3168, 86, 86, 86, 86, 86, 3171, 3173, - 3175, 86, 86, 86, 3172, 3176, 3169, 3180, 86, 3181, - 86, 3701, 3174, 86, 3170, 86, 3182, 3177, 3183, 3184, - 86, 3178, 3179, 86, 3187, 86, 86, 86, 3701, 3185, - 3189, 86, 86, 3186, 3188, 3191, 86, 3190, 86, 86, - 3194, 86, 86, 86, 3197, 3198, 86, 3192, 3193, 3199, - 86, 3195, 3196, 86, 86, 86, 86, 3200, 86, 86, + 3705, 86, 3147, 3148, 86, 3150, 3152, 3156, 3151, 3154, + 3160, 3157, 3159, 3162, 86, 3161, 86, 3158, 3163, 86, + 3164, 3165, 86, 86, 3166, 86, 3167, 86, 3168, 86, + 3169, 86, 3170, 86, 86, 86, 86, 86, 86, 3172, + 3174, 86, 86, 3177, 86, 3175, 86, 3179, 86, 3171, + 86, 3176, 86, 3180, 86, 3173, 3184, 86, 3185, 86, + 3178, 86, 3188, 86, 3186, 86, 3181, 3187, 3182, 86, + 3183, 3189, 3190, 3191, 86, 86, 3192, 3193, 86, 86, + 3194, 3195, 86, 86, 3198, 86, 86, 86, 3196, 86, + 3202, 86, 3197, 3203, 86, 3199, 3200, 86, 86, 86, - 3206, 86, 86, 3201, 86, 3207, 86, 3203, 3210, 86, - 3209, 86, 86, 3204, 3202, 3208, 3211, 3212, 86, 3205, - 3214, 86, 86, 3213, 86, 86, 3215, 3218, 86, 3220, - 86, 86, 86, 86, 3219, 86, 86, 3223, 3226, 86, - 86, 86, 3217, 3221, 86, 3224, 3229, 3216, 86, 86, - 86, 3227, 86, 3225, 3230, 3222, 86, 3231, 86, 3232, - 86, 3228, 3235, 3233, 86, 3234, 86, 3236, 3238, 86, - 3237, 3239, 86, 3240, 86, 86, 86, 86, 86, 3245, - 3242, 3244, 3246, 3243, 3241, 86, 86, 3248, 86, 86, - 86, 3247, 86, 3254, 86, 86, 3249, 3252, 86, 86, + 86, 3204, 86, 86, 3210, 86, 86, 3201, 3205, 3211, + 86, 3207, 86, 86, 3213, 86, 3214, 3206, 3208, 3212, + 3215, 86, 3209, 3216, 86, 3218, 86, 3217, 86, 86, + 3222, 86, 86, 3224, 86, 3219, 86, 86, 86, 86, + 86, 3223, 3227, 86, 3230, 86, 3225, 3221, 3705, 3228, + 86, 86, 86, 3220, 86, 3231, 3233, 3234, 3229, 86, + 3235, 3226, 86, 3236, 86, 86, 3232, 3237, 86, 3240, + 3242, 86, 3241, 3243, 86, 3244, 86, 3238, 86, 3239, + 86, 86, 86, 3249, 86, 86, 3248, 3245, 86, 86, + 3250, 3252, 86, 3251, 86, 86, 86, 86, 86, 3258, - 86, 3250, 3256, 86, 3257, 86, 86, 3260, 86, 86, - 3258, 3251, 3253, 3259, 86, 86, 86, 3261, 3265, 86, - 3255, 86, 86, 86, 3262, 86, 3269, 86, 86, 3263, - 86, 86, 3271, 86, 3266, 3264, 3267, 3270, 3268, 3273, - 86, 86, 3277, 86, 86, 3274, 3272, 86, 3281, 86, - 3275, 86, 3278, 3276, 3282, 86, 86, 86, 3284, 86, - 3288, 86, 3279, 3285, 86, 3287, 3290, 86, 86, 86, - 3283, 3286, 86, 3280, 86, 86, 86, 3289, 86, 3293, - 3295, 3296, 86, 3299, 3291, 3292, 86, 3298, 3294, 86, - 3301, 86, 86, 86, 3303, 86, 3297, 3307, 86, 3306, + 3246, 3247, 3253, 3256, 86, 86, 3254, 3260, 86, 86, + 86, 86, 86, 3261, 3257, 3262, 3255, 3263, 86, 3264, + 86, 86, 3259, 3265, 3269, 86, 3266, 86, 86, 86, + 86, 86, 3273, 86, 86, 3267, 86, 86, 86, 3278, + 3270, 3268, 3271, 3272, 86, 3274, 3277, 3275, 86, 3281, + 86, 86, 3276, 86, 3285, 86, 86, 3279, 86, 3282, + 3286, 86, 3288, 86, 3280, 86, 86, 3289, 86, 3283, + 86, 3291, 3290, 3292, 86, 3287, 3294, 86, 86, 3284, + 86, 86, 3295, 3297, 3293, 86, 3296, 3300, 86, 86, + 3299, 3303, 86, 3305, 86, 86, 3298, 86, 3302, 86, - 86, 86, 3309, 86, 86, 86, 86, 86, 86, 3300, - 3310, 3302, 3304, 86, 3305, 3313, 86, 3314, 86, 3317, - 86, 3308, 3315, 86, 86, 3322, 3311, 86, 86, 86, - 86, 86, 3312, 3316, 3319, 3701, 3320, 3326, 86, 3318, - 86, 3324, 86, 86, 3321, 3328, 3329, 3323, 86, 3330, - 3325, 86, 86, 3333, 3336, 3327, 3334, 86, 86, 86, - 86, 3335, 86, 3331, 86, 3339, 86, 86, 86, 3338, - 3342, 86, 3332, 3340, 3345, 86, 86, 86, 86, 86, - 3337, 86, 3350, 86, 86, 86, 3341, 86, 3343, 3344, - 3346, 3354, 86, 3701, 3349, 3347, 3353, 3355, 86, 3356, + 3307, 3301, 86, 86, 3310, 86, 3311, 86, 86, 86, + 86, 3313, 86, 3314, 3306, 3304, 3308, 86, 3317, 86, + 3318, 86, 3309, 86, 86, 3321, 86, 3312, 86, 86, + 86, 3315, 86, 86, 3326, 86, 3316, 3705, 3319, 3323, + 86, 3324, 3328, 86, 3320, 3322, 3330, 86, 86, 3325, + 86, 3332, 3327, 3333, 86, 3329, 86, 3334, 3331, 86, + 86, 3337, 3338, 86, 3340, 86, 3335, 86, 3339, 86, + 86, 3343, 86, 86, 3342, 86, 3346, 86, 3341, 3336, + 3344, 86, 86, 3349, 86, 86, 86, 86, 3354, 86, + 86, 86, 3345, 3350, 3347, 3348, 86, 3358, 86, 86, - 86, 3352, 86, 3351, 3348, 86, 86, 3357, 3360, 86, - 86, 3359, 3361, 86, 3362, 86, 86, 3364, 86, 3358, - 86, 3367, 86, 3365, 86, 3363, 86, 86, 86, 3368, - 3369, 86, 3371, 86, 3372, 86, 86, 86, 3370, 86, - 86, 3378, 3379, 86, 86, 3373, 3366, 86, 86, 86, - 3374, 86, 3385, 86, 3386, 86, 3376, 86, 3375, 3388, - 3384, 3377, 3382, 86, 86, 86, 3381, 86, 86, 3383, - 3380, 86, 3701, 3391, 86, 3387, 3392, 3394, 86, 3395, - 86, 86, 86, 3389, 3398, 3393, 3390, 3396, 3397, 86, - 86, 3401, 86, 3399, 86, 86, 86, 3400, 86, 3402, + 3353, 3359, 86, 3351, 3361, 3357, 86, 3356, 86, 3355, + 86, 3352, 3360, 86, 86, 3363, 3364, 86, 3365, 86, + 3362, 3366, 86, 3367, 3368, 86, 86, 3371, 3373, 86, + 86, 86, 86, 86, 3370, 3372, 3375, 86, 86, 3369, + 3376, 86, 86, 86, 86, 86, 3382, 3374, 3383, 86, + 86, 3377, 86, 86, 86, 86, 86, 3389, 86, 86, + 3378, 86, 3380, 86, 3379, 3388, 3381, 3386, 3390, 86, + 86, 3385, 3392, 3391, 3387, 3395, 3384, 86, 86, 3393, + 3394, 86, 3396, 3705, 3397, 3398, 86, 3399, 86, 86, + 3402, 86, 86, 86, 3400, 3401, 86, 3405, 86, 86, - 3403, 86, 86, 3404, 86, 86, 86, 3407, 86, 86, - 86, 3409, 86, 86, 3410, 3405, 3408, 86, 86, 86, - 86, 3406, 86, 86, 3419, 3420, 3422, 3411, 3415, 3412, - 3413, 3414, 86, 86, 3416, 3417, 86, 86, 3423, 3418, - 3425, 86, 3421, 3424, 3427, 86, 3428, 86, 86, 3426, - 3431, 86, 3429, 86, 86, 86, 3430, 3701, 3432, 3434, - 86, 3436, 86, 3437, 3438, 86, 86, 86, 3439, 3440, - 3435, 86, 3445, 3433, 3441, 86, 3442, 3443, 86, 86, - 86, 86, 3444, 3447, 86, 3451, 86, 86, 3450, 3446, - 86, 86, 3454, 86, 86, 86, 3453, 86, 86, 3448, + 3404, 86, 86, 3403, 3406, 3407, 86, 3408, 86, 86, + 86, 86, 86, 3409, 3411, 86, 3413, 86, 86, 3414, + 3412, 86, 86, 86, 86, 86, 3410, 86, 3426, 3423, + 3424, 3415, 86, 3705, 86, 3416, 3418, 3417, 3419, 86, + 3420, 3421, 3422, 86, 3427, 86, 3429, 3425, 3431, 86, + 3432, 86, 3428, 86, 86, 3435, 86, 3433, 3430, 86, + 86, 3438, 86, 86, 3436, 3440, 86, 3441, 3442, 3434, + 86, 3443, 3444, 86, 86, 3445, 86, 3448, 3439, 3437, + 3446, 3447, 86, 86, 86, 3451, 86, 3449, 86, 86, + 86, 3454, 86, 3450, 86, 86, 3458, 86, 86, 86, - 3449, 86, 86, 86, 86, 3458, 3459, 3464, 86, 86, - 3452, 86, 3455, 3460, 3463, 3456, 3461, 86, 3466, 86, - 3465, 3462, 3457, 3467, 86, 3468, 86, 86, 86, 86, - 3473, 86, 3470, 3475, 3469, 3474, 86, 3471, 86, 86, - 3472, 86, 86, 86, 3482, 86, 3477, 3479, 3480, 3483, - 86, 3485, 86, 86, 3476, 86, 3484, 3486, 86, 3478, - 3481, 86, 3489, 86, 86, 86, 3488, 86, 3487, 3491, - 86, 3494, 86, 86, 3492, 3495, 86, 3701, 3490, 3496, - 86, 3497, 86, 3498, 86, 3493, 3499, 86, 3500, 86, - 3501, 86, 86, 3504, 86, 3505, 86, 86, 86, 3502, + 3457, 86, 86, 3453, 86, 86, 3452, 86, 3463, 3462, + 86, 86, 3455, 3705, 3456, 3467, 3459, 3468, 86, 3460, + 3464, 86, 3465, 3466, 86, 3470, 3461, 3471, 86, 86, + 3469, 3472, 86, 86, 86, 3477, 3479, 86, 3474, 86, + 3478, 86, 86, 3475, 3473, 86, 3476, 86, 86, 86, + 3486, 86, 3483, 3484, 3481, 3487, 86, 86, 3489, 86, + 86, 86, 3480, 3488, 3490, 86, 3482, 86, 3485, 3493, + 86, 3491, 3492, 86, 3494, 3495, 86, 86, 3498, 86, + 3499, 86, 3496, 3500, 86, 3501, 86, 3502, 86, 3503, + 86, 3504, 86, 3505, 86, 3497, 86, 86, 3508, 86, - 86, 3503, 86, 3510, 86, 86, 3506, 3512, 86, 86, - 3507, 86, 86, 86, 86, 3516, 86, 3509, 3517, 86, - 3508, 86, 3514, 86, 3511, 3515, 3513, 3518, 3519, 86, - 86, 86, 3523, 3521, 3520, 86, 3526, 86, 3525, 86, - 86, 3524, 86, 86, 3528, 86, 86, 3522, 86, 86, - 86, 3527, 86, 86, 3532, 86, 3534, 3701, 3533, 3529, - 3535, 3530, 3531, 86, 3536, 86, 86, 86, 3541, 3540, - 3539, 3542, 86, 3538, 3543, 86, 3537, 3544, 86, 3545, - 86, 86, 86, 86, 86, 3548, 86, 86, 86, 86, - 3546, 3547, 3553, 86, 86, 3554, 86, 3556, 3550, 3552, + 3509, 86, 86, 86, 86, 86, 3507, 3514, 86, 86, + 86, 3510, 3516, 86, 86, 3511, 86, 86, 86, 3520, + 3513, 86, 3506, 86, 3512, 3517, 3525, 3518, 3515, 3519, + 3521, 86, 3523, 86, 3524, 86, 3522, 86, 3527, 86, + 86, 3530, 86, 3529, 86, 86, 86, 86, 86, 3532, + 86, 86, 86, 86, 86, 3538, 3531, 3528, 3536, 3537, + 86, 3526, 3535, 86, 3533, 3543, 3534, 86, 3539, 86, + 3540, 86, 86, 86, 3544, 3546, 86, 3547, 86, 86, + 3541, 3548, 86, 3542, 86, 3545, 3549, 86, 3551, 86, + 3550, 86, 86, 3552, 86, 86, 3555, 3558, 86, 3557, - 86, 86, 86, 3549, 3555, 86, 86, 3557, 86, 3551, - 86, 86, 86, 86, 86, 3565, 86, 3560, 86, 3558, - 3559, 3562, 3563, 3564, 3567, 86, 86, 3570, 86, 3566, - 3561, 3568, 86, 3569, 3575, 86, 3571, 3572, 3574, 3573, - 86, 3577, 86, 86, 3578, 3579, 86, 3580, 86, 3576, - 86, 86, 86, 86, 86, 3583, 86, 86, 3584, 3585, - 3588, 86, 86, 86, 3592, 86, 86, 86, 3591, 3581, - 86, 3582, 3587, 86, 3590, 3589, 3594, 86, 3595, 86, - 86, 3586, 3596, 86, 3597, 86, 86, 3593, 3598, 3599, - 3600, 86, 3603, 86, 86, 3601, 86, 3604, 86, 3607, + 86, 3560, 86, 3556, 3553, 3554, 86, 86, 86, 86, + 86, 86, 86, 3559, 86, 3561, 86, 86, 86, 3567, + 3574, 86, 3569, 3564, 86, 3562, 3563, 3566, 3568, 3572, + 3571, 86, 3570, 3573, 3565, 86, 86, 86, 3579, 86, + 3576, 3581, 86, 86, 86, 3582, 3583, 86, 3584, 86, + 3577, 3575, 3580, 86, 86, 86, 86, 3578, 3587, 86, + 86, 3588, 86, 3592, 3589, 86, 86, 86, 86, 86, + 3596, 86, 3585, 3595, 3586, 3598, 86, 3591, 3594, 3593, + 3599, 86, 3600, 86, 86, 3590, 86, 3597, 3601, 86, + 3604, 86, 86, 86, 3607, 86, 86, 3608, 86, 3602, - 3608, 86, 3605, 86, 3602, 86, 86, 86, 86, 3613, - 86, 3614, 86, 3612, 86, 3609, 3610, 3606, 86, 86, - 86, 86, 86, 86, 3618, 86, 3611, 3620, 86, 86, - 86, 86, 86, 3617, 3625, 3615, 86, 3626, 3616, 3627, - 86, 3619, 3621, 3622, 3623, 3628, 86, 3624, 3631, 86, - 86, 3633, 86, 3634, 3629, 3632, 86, 86, 86, 86, - 86, 3635, 3639, 3636, 3637, 3630, 3640, 86, 86, 86, - 3642, 86, 86, 86, 3641, 86, 3643, 86, 86, 3638, - 3648, 86, 3645, 86, 3651, 86, 86, 3652, 86, 86, - 86, 86, 3644, 86, 3655, 86, 3646, 3647, 3650, 3653, + 86, 86, 3611, 3612, 86, 3603, 3609, 3605, 86, 86, + 86, 3606, 86, 86, 86, 3613, 86, 3614, 3616, 3610, + 3617, 86, 3618, 86, 86, 86, 86, 86, 3622, 3615, + 3621, 3624, 86, 3619, 3620, 86, 86, 86, 86, 3631, + 86, 86, 3629, 3630, 86, 3623, 3625, 86, 3626, 3627, + 86, 3628, 3635, 86, 3637, 3636, 86, 3638, 86, 86, + 86, 3632, 3633, 3639, 3640, 86, 3634, 86, 3643, 86, + 3641, 3644, 86, 86, 86, 3646, 86, 86, 3645, 86, + 86, 3647, 86, 3652, 86, 86, 3642, 3649, 3648, 86, + 86, 86, 86, 3655, 3656, 86, 86, 86, 3650, 3657, - 3649, 86, 3654, 86, 3659, 86, 3660, 86, 3658, 86, - 3656, 3701, 3657, 86, 3663, 86, 3665, 86, 3661, 86, - 3666, 86, 3667, 86, 3670, 86, 86, 86, 3664, 3672, - 3668, 3671, 86, 3662, 3673, 86, 86, 86, 86, 3674, - 3669, 86, 86, 3675, 3679, 86, 3677, 86, 86, 86, - 86, 86, 3681, 3682, 86, 3685, 3676, 3678, 3686, 86, - 86, 3680, 86, 3689, 3690, 86, 86, 86, 3683, 3684, - 3687, 3692, 86, 3691, 3693, 86, 86, 86, 86, 3688, - 86, 3701, 3695, 3694, 3701, 3696, 3697, 3699, 86, 3700, - 86, 3701, 3701, 3701, 3701, 3701, 3701, 3698, 47, 47, + 86, 3651, 3658, 3653, 3654, 3659, 86, 86, 3663, 86, + 86, 3666, 86, 3667, 3664, 3660, 3661, 86, 86, 3662, + 86, 3669, 86, 3665, 86, 3670, 86, 3671, 3674, 86, + 86, 86, 86, 3672, 3676, 3675, 3668, 3673, 3677, 86, + 86, 86, 86, 86, 86, 3683, 86, 3678, 3679, 3681, + 3680, 86, 86, 86, 86, 86, 3685, 3686, 86, 3689, + 86, 3682, 3684, 3690, 86, 86, 3693, 3694, 86, 86, + 3696, 86, 3687, 3688, 3691, 86, 3695, 3697, 86, 3692, + 86, 86, 3698, 86, 86, 3699, 3700, 3703, 86, 3704, + 86, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, - 52, 52, 57, 57, 57, 57, 57, 57, 57, 63, - 63, 63, 63, 63, 63, 63, 68, 68, 68, 68, - 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, - 80, 80, 80, 80, 80, 80, 80, 89, 89, 3701, - 89, 89, 89, 89, 160, 160, 3701, 3701, 3701, 160, - 160, 162, 162, 3701, 3701, 162, 3701, 162, 164, 3701, - 3701, 3701, 3701, 3701, 164, 167, 167, 3701, 3701, 3701, - 167, 167, 169, 3701, 3701, 3701, 3701, 3701, 169, 171, - 171, 3701, 171, 171, 171, 171, 174, 3701, 3701, 3701, + 3705, 3705, 3701, 3702, 47, 47, 47, 47, 47, 47, + 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, + 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, + 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3705, 89, 89, 89, 89, + 160, 160, 3705, 3705, 3705, 160, 160, 162, 162, 3705, + 3705, 162, 3705, 162, 164, 3705, 3705, 3705, 3705, 3705, + 164, 167, 167, 3705, 3705, 3705, 167, 167, 169, 3705, + 3705, 3705, 3705, 3705, 169, 171, 171, 3705, 171, 171, - 3701, 3701, 174, 177, 177, 3701, 3701, 3701, 177, 177, - 90, 90, 3701, 90, 90, 90, 90, 17, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701 + 171, 171, 174, 3705, 3705, 3705, 3705, 3705, 174, 177, + 177, 3705, 3705, 3705, 177, 177, 90, 90, 3705, 90, + 90, 90, 90, 17, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705 } ; -static const flex_int16_t yy_chk[7259] = +static const flex_int16_t yy_chk[7265] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2453,14 +2456,14 @@ static const flex_int16_t yy_chk[7259] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3709, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3713, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 3000, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 3003, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, @@ -2987,262 +2990,263 @@ static const flex_int16_t yy_chk[7259] = 2402, 2396, 2403, 2403, 2405, 2408, 2406, 2398, 2406, 2409, 2410, 2410, 2411, 2404, 2413, 2402, 2414, 2415, 2411, 2405, 2408, 2416, 2417, 2418, 2418, 2419, 2417, 2420, 2409, 2425, - 2421, 2414, 2420, 2422, 2413, 2426, 2416, 2424, 2424, 2427, - 2415, 2428, 2426, 2429, 2419, 2421, 2431, 2430, 2422, 2425, - 2432, 2432, 2437, 2427, 2433, 2434, 2438, 2434, 2437, 2428, - 2439, 2429, 2430, 2433, 2435, 2439, 2440, 2435, 2438, 2441, - 2442, 2440, 2431, 2445, 2443, 2446, 2444, 2454, 2445, 0, - 2459, 2448, 2435, 2442, 2435, 2444, 2448, 2449, 2450, 2451, - 2452, 2453, 2449, 2450, 2441, 2443, 2452, 2453, 2454, 2455, + 2421, 2414, 2420, 2427, 2413, 2428, 2416, 2422, 2422, 2426, + 2415, 2424, 2424, 2429, 2419, 2421, 2426, 2427, 2430, 2425, + 2431, 2433, 2422, 2428, 2432, 2432, 2434, 2438, 2434, 2435, + 2433, 2429, 2435, 2430, 2437, 2441, 2439, 2440, 2442, 2438, + 2437, 2439, 2440, 2443, 2444, 2445, 2431, 2435, 2446, 2435, + 2445, 2442, 2448, 2444, 2449, 2451, 2450, 2448, 2454, 2449, + 2441, 2450, 2452, 2453, 2443, 2455, 2456, 2459, 2452, 2453, - 2456, 2446, 2457, 2458, 2451, 2459, 2456, 2457, 2458, 2460, - 2461, 2462, 2463, 2461, 2455, 2464, 2465, 2466, 2467, 2472, - 2474, 2463, 2460, 2468, 2464, 2465, 2466, 2469, 2475, 2468, - 2470, 2462, 2467, 2469, 2470, 2476, 2476, 2475, 2477, 2472, - 2474, 2478, 2478, 2479, 2477, 2480, 2480, 2482, 2481, 2484, - 2478, 2487, 2479, 2481, 2485, 2486, 2486, 2491, 2496, 2488, - 2490, 2492, 2493, 2496, 2497, 2484, 2487, 2482, 2488, 2482, - 2485, 2498, 2490, 2491, 2493, 2495, 2492, 0, 2495, 2499, - 2499, 2500, 2500, 2498, 2497, 2502, 2502, 2503, 2504, 2505, - 2503, 2506, 2507, 2504, 2509, 2505, 2512, 2506, 2508, 2508, + 2451, 2457, 2456, 2458, 2446, 2460, 2457, 2462, 2458, 2454, + 2455, 2461, 2463, 0, 2461, 2464, 2465, 2466, 2460, 2467, + 2472, 2463, 2459, 2468, 2464, 2465, 2466, 2462, 2469, 2468, + 2474, 2470, 2475, 2467, 2469, 2470, 2476, 2476, 2477, 2479, + 2472, 2475, 2478, 2478, 2477, 2480, 2480, 2481, 2479, 2482, + 2474, 2478, 2481, 2487, 2484, 2488, 2485, 2486, 2486, 2491, + 2495, 2490, 2492, 2495, 2488, 2497, 2493, 0, 2487, 2482, + 2484, 2482, 2485, 2490, 2496, 2491, 2498, 2492, 2493, 2496, + 2499, 2499, 2500, 2500, 2509, 2497, 2502, 2502, 2498, 2503, + 2504, 2505, 2503, 2506, 2507, 2504, 2511, 2505, 2509, 2506, - 2511, 2507, 2510, 2510, 2513, 2514, 2514, 2515, 2509, 2517, - 2512, 2516, 2511, 2515, 2517, 2519, 2526, 2520, 2524, 2519, - 2520, 2521, 2521, 2513, 2522, 2516, 2523, 2524, 2525, 2522, - 2527, 2523, 2528, 2528, 2527, 2529, 2526, 2525, 2531, 2532, - 2533, 2534, 2535, 2531, 2537, 2536, 2538, 2539, 2529, 2536, - 2543, 2538, 2540, 2539, 2541, 2541, 2535, 2544, 2540, 2532, - 2533, 2534, 2542, 2542, 2537, 2545, 2546, 2547, 2543, 2548, - 2548, 2546, 2552, 2550, 2551, 2553, 2544, 2552, 0, 2555, - 2554, 2553, 2560, 2558, 2545, 2550, 2554, 2555, 2547, 2556, - 2551, 2556, 2558, 2561, 2562, 2562, 2560, 2563, 2564, 2564, + 2508, 2508, 2512, 2507, 2510, 2510, 2513, 2515, 2511, 2514, + 2514, 2519, 2516, 2515, 2517, 2519, 2512, 2520, 2522, 2517, + 2520, 2521, 2521, 2522, 2523, 2513, 2516, 2524, 2525, 2523, + 2526, 2527, 2528, 2528, 2529, 2527, 2524, 2525, 2531, 2532, + 2533, 2534, 2535, 2531, 2536, 2537, 2538, 2529, 2536, 2539, + 2526, 2538, 2540, 2541, 2541, 2539, 2535, 2543, 2540, 2532, + 2533, 2534, 2542, 2542, 2544, 2537, 2545, 2546, 2547, 2548, + 2548, 2551, 2546, 2552, 2550, 2543, 2553, 2556, 2552, 2556, + 2555, 2560, 2553, 2544, 2554, 2545, 2550, 2551, 2555, 2547, + 2554, 2558, 2561, 2562, 2562, 2560, 2563, 2564, 2564, 2563, - 2563, 2566, 2567, 2568, 2566, 2567, 2572, 2561, 2569, 2569, - 2572, 2573, 2574, 2575, 2575, 2581, 2576, 2573, 2579, 2579, - 2583, 2584, 2587, 2588, 2574, 2576, 2589, 2587, 2599, 2568, - 2590, 2592, 0, 2581, 2583, 2593, 2592, 2584, 2594, 2594, - 2593, 2596, 2596, 2601, 2589, 2602, 2598, 2605, 2599, 2588, - 2603, 2590, 2598, 2600, 2600, 2603, 2607, 2606, 2608, 2601, - 2606, 2609, 2609, 2611, 2612, 2613, 2605, 2602, 2607, 2614, - 2608, 2613, 2615, 2612, 2616, 2614, 2618, 2618, 2619, 2611, - 2620, 2619, 2621, 2623, 2623, 2624, 2624, 2625, 2626, 2616, - 2615, 2628, 2625, 2627, 2631, 2630, 2629, 2630, 2632, 2620, + 2558, 2566, 2567, 2568, 2566, 2567, 2561, 2569, 2569, 2572, + 2573, 2574, 2576, 2572, 2575, 2575, 2573, 2579, 2579, 2581, + 2583, 2576, 2584, 2574, 2588, 2587, 2589, 2590, 2592, 2568, + 2587, 2593, 2599, 2592, 2583, 2601, 2593, 2581, 2584, 2594, + 2594, 2596, 2596, 2598, 2589, 2600, 2600, 2602, 2590, 2598, + 2588, 2601, 2599, 2603, 2605, 2607, 2606, 2612, 2603, 2606, + 2608, 2609, 2609, 2611, 2613, 2614, 2612, 2607, 2615, 2602, + 2613, 2614, 2608, 2605, 2616, 2618, 2618, 2619, 2620, 2611, + 2619, 2621, 2622, 2624, 2624, 2626, 2615, 2625, 2625, 2616, + 2626, 2627, 2629, 2628, 2630, 2634, 2631, 2620, 2631, 2630, - 2621, 2629, 2627, 2633, 2628, 2634, 2626, 2635, 2631, 2636, - 2634, 2637, 2632, 2638, 2638, 2633, 2637, 2639, 2639, 2640, - 2640, 2641, 2641, 2642, 2643, 2644, 2643, 2635, 2645, 2636, - 2646, 2646, 2649, 2645, 2650, 2642, 2647, 2647, 2648, 2648, - 2651, 2652, 2653, 2644, 2649, 2656, 2654, 2655, 2655, 2657, - 2657, 2664, 2651, 2661, 2650, 2658, 2658, 2659, 2660, 2660, - 2662, 2652, 2654, 2653, 2656, 2661, 2663, 2662, 2659, 2665, - 2666, 2664, 2667, 2669, 2665, 2668, 2668, 2671, 2663, 2670, - 2670, 2672, 2669, 2673, 2674, 2675, 2677, 2676, 2677, 2680, - 2666, 2681, 2667, 2678, 2679, 2679, 2673, 2682, 2680, 2675, + 2622, 2621, 2628, 2632, 2633, 2629, 2635, 2634, 2636, 2627, + 2637, 2635, 2639, 2639, 2638, 2640, 2640, 2632, 2633, 2638, + 2641, 2641, 2642, 2642, 2643, 2644, 2645, 2644, 2636, 2646, + 2637, 2647, 2647, 2650, 2646, 2651, 2643, 2648, 2648, 2649, + 2649, 2652, 2653, 2654, 2645, 2650, 2657, 2655, 2656, 2656, + 2658, 2658, 2665, 2652, 2662, 2651, 2659, 2659, 2660, 2661, + 2661, 2663, 2653, 2655, 2654, 2657, 2662, 2664, 2663, 2660, + 2666, 2667, 2665, 2668, 2670, 2666, 2669, 2669, 2672, 2664, + 2671, 2671, 2673, 2670, 2674, 2675, 2676, 2678, 2677, 2678, + 2681, 2667, 2682, 2668, 2679, 2680, 2680, 2674, 2683, 2681, - 2684, 2672, 2685, 2671, 2686, 2678, 2681, 2687, 2674, 2676, - 2687, 2688, 2682, 0, 2689, 2690, 2691, 2691, 2684, 2689, - 2690, 2692, 2692, 2698, 2685, 2688, 2699, 2686, 2693, 2693, - 2695, 2695, 2697, 2697, 2700, 2701, 2703, 2699, 2705, 2704, - 2707, 2698, 2706, 2708, 2709, 2710, 2709, 2717, 2711, 2707, - 2701, 2712, 2718, 2700, 2713, 2713, 2703, 2704, 2716, 2716, - 2705, 2717, 2706, 2708, 2715, 2710, 2711, 2719, 2715, 2712, - 2720, 2720, 2722, 2724, 2718, 2725, 2719, 2723, 2723, 2726, - 2727, 2722, 2729, 2728, 2730, 2731, 2732, 2727, 2733, 2734, - 2737, 2724, 2733, 2725, 2735, 2735, 2734, 2726, 2728, 2738, + 2676, 2685, 2673, 2686, 2672, 2687, 2679, 2682, 2688, 2675, + 2677, 2688, 2689, 2683, 0, 2690, 2691, 2692, 2692, 2685, + 2690, 2691, 2693, 2693, 2699, 2686, 2689, 2700, 2687, 2694, + 2694, 2696, 2696, 2698, 2698, 2701, 2702, 2704, 2700, 2706, + 2705, 2708, 2699, 2707, 2709, 2710, 2711, 2710, 2718, 2712, + 2708, 2702, 2713, 2719, 2701, 2714, 2714, 2704, 2705, 2717, + 2717, 2706, 2718, 2707, 2709, 2716, 2711, 2712, 2720, 2716, + 2713, 2721, 2721, 2723, 2725, 2719, 2726, 2720, 2724, 2724, + 2727, 2728, 2723, 2730, 2729, 2731, 2732, 2733, 2728, 2734, + 2735, 2738, 2725, 2734, 2726, 2736, 2736, 2735, 2727, 2729, - 2729, 2731, 2730, 2736, 2736, 2732, 2739, 2741, 2741, 2743, - 2737, 2744, 2739, 2742, 2742, 2743, 2745, 2738, 2746, 2747, - 2749, 2748, 2750, 2750, 2751, 2749, 2752, 2753, 2754, 2744, - 2755, 2756, 0, 2746, 2745, 2748, 2756, 2762, 2747, 2754, - 2757, 2759, 2757, 2759, 2751, 2764, 2752, 2753, 2758, 2758, - 2755, 2760, 2760, 2765, 2764, 2766, 2762, 2767, 2768, 2769, - 2770, 2771, 2775, 2768, 2772, 2770, 2776, 2766, 2777, 2778, - 2778, 2777, 2765, 2779, 2780, 2781, 2781, 2767, 2782, 2769, - 2783, 2771, 2775, 2772, 2776, 2786, 2784, 2787, 2779, 2782, - 2784, 2788, 2780, 2791, 2789, 2783, 2793, 2788, 2789, 2794, + 2739, 2730, 2732, 2731, 2737, 2737, 2733, 2740, 2742, 2742, + 2744, 2738, 2745, 2740, 2743, 2743, 2744, 2746, 2739, 2747, + 2748, 2750, 2749, 2751, 2751, 2752, 2750, 2753, 2754, 2755, + 2745, 2756, 2757, 0, 2747, 2746, 2749, 2757, 2763, 2748, + 2755, 2758, 2760, 2758, 2760, 2752, 2765, 2753, 2754, 2759, + 2759, 2756, 2761, 2761, 2766, 2765, 2767, 2763, 2768, 2769, + 2770, 2771, 2772, 2776, 2769, 2773, 2771, 2777, 2767, 2778, + 2779, 2779, 2778, 2766, 2780, 2781, 2782, 2782, 2768, 2783, + 2770, 2784, 2772, 2776, 2773, 2777, 2787, 2785, 2788, 2780, + 2783, 2785, 2789, 2781, 2792, 2790, 2784, 2794, 2789, 2790, - 2786, 2795, 2787, 2790, 2790, 2798, 2791, 2796, 2796, 2799, - 2800, 2793, 2801, 2801, 2800, 2802, 2802, 2798, 2799, 2794, - 2803, 2795, 2804, 2804, 2805, 2806, 2807, 2809, 2808, 2805, - 2810, 2810, 2815, 2815, 2806, 2816, 2817, 2818, 2818, 2803, - 2808, 2819, 2807, 2820, 2816, 2826, 2821, 2809, 2822, 2825, - 2825, 2823, 2824, 2827, 2819, 2838, 2820, 2822, 2817, 2821, - 2823, 2824, 2829, 2829, 2832, 2826, 2834, 2835, 2827, 2832, - 2836, 2834, 2837, 2839, 2838, 2836, 2840, 2842, 2844, 2846, - 2837, 2835, 2839, 2844, 2840, 2845, 2847, 2847, 2848, 2848, - 2845, 2849, 2842, 2850, 2846, 2852, 2849, 2851, 2851, 2853, + 2795, 2787, 2796, 2788, 2791, 2791, 2797, 2792, 2798, 2798, + 2796, 2800, 2794, 2801, 2802, 2803, 2803, 2805, 2802, 2809, + 2795, 2808, 2801, 2800, 2804, 2804, 2797, 2806, 2806, 2807, + 2808, 2810, 2811, 2818, 2807, 2809, 2805, 2812, 2812, 2817, + 2817, 2819, 2818, 2810, 2820, 2820, 2821, 2822, 2823, 2824, + 2827, 2827, 2811, 2825, 2828, 2826, 2829, 0, 2824, 2821, + 2822, 2823, 2825, 2819, 2826, 2831, 2831, 2834, 2836, 2837, + 2838, 2829, 2834, 2836, 2828, 2838, 2839, 2840, 2841, 2844, + 2842, 2846, 2848, 2837, 2839, 2847, 2846, 2841, 2842, 2852, + 2847, 2849, 2849, 2856, 2844, 2851, 2840, 2848, 2850, 2850, - 2854, 2855, 2852, 2856, 2853, 2857, 2858, 2858, 2859, 2856, - 2857, 2860, 2850, 2861, 2861, 2865, 2860, 2869, 2854, 2855, - 2862, 2862, 2869, 2859, 2866, 2866, 2867, 2868, 2865, 2867, - 2870, 2871, 2868, 2868, 2872, 2870, 2876, 2873, 2874, 2875, - 2872, 2873, 2877, 2874, 2878, 2871, 2879, 2880, 2875, 2881, - 2877, 2876, 2879, 2880, 2881, 2882, 2883, 2883, 2886, 2885, - 2889, 2887, 2894, 2886, 2887, 2878, 2885, 2882, 2891, 2892, - 2893, 2895, 2889, 2891, 2892, 2893, 2896, 2897, 2898, 2898, - 2894, 2899, 2904, 2900, 2895, 2896, 2897, 2900, 2901, 2905, - 2899, 2906, 2909, 2901, 2910, 2905, 2911, 2906, 2912, 2914, + 2851, 2853, 2853, 2854, 2855, 2857, 2858, 2861, 2852, 2855, + 2854, 2856, 2858, 2859, 2860, 2860, 2862, 2867, 2859, 2863, + 2863, 2862, 2861, 2857, 2864, 2864, 2868, 2868, 2869, 2870, + 2867, 2869, 2871, 2872, 2870, 2870, 2873, 2871, 2872, 2874, + 2875, 2876, 2877, 2878, 2875, 2874, 2876, 2879, 2880, 2884, + 2873, 2877, 2883, 2881, 2882, 2879, 2891, 2883, 2878, 2881, + 2882, 2884, 2885, 2885, 2887, 2888, 2896, 2897, 2891, 2880, + 2888, 2887, 2889, 2893, 2894, 2889, 2895, 2898, 2893, 2894, + 2897, 2895, 2899, 2901, 2896, 2902, 2898, 2900, 2900, 2902, + 2903, 2899, 2901, 2906, 2907, 2903, 2908, 2911, 2912, 2913, - 2904, 2913, 2913, 2915, 2917, 2920, 2914, 2919, 2919, 2918, - 2921, 2909, 2923, 2917, 2910, 2925, 2911, 2912, 2918, 2927, - 2920, 2930, 2915, 2922, 2922, 2921, 2929, 2929, 2928, 2931, - 2925, 2923, 2928, 2933, 2932, 2931, 2934, 2935, 2938, 2927, - 2932, 2936, 2936, 2935, 2939, 2937, 2930, 2941, 2942, 2939, - 2947, 2944, 2933, 2937, 2934, 2945, 2941, 2944, 2945, 2948, - 2946, 2942, 2950, 2938, 2946, 2949, 2949, 2953, 2947, 2952, - 2952, 2954, 2954, 2948, 2955, 2955, 2958, 2950, 2957, 2957, - 2958, 2959, 2960, 2962, 2962, 2953, 2959, 2964, 2965, 2966, - 2967, 2960, 2968, 2965, 2970, 2967, 2967, 2971, 2972, 2972, + 2907, 2914, 2908, 2915, 2915, 2916, 2917, 2925, 2919, 2921, + 2921, 2906, 2916, 2920, 2922, 2923, 2911, 2919, 2912, 2913, + 2914, 2927, 2920, 2924, 2924, 2917, 2925, 2929, 2930, 2922, + 2923, 2932, 2930, 2931, 2931, 2933, 2927, 2934, 2935, 2937, + 2936, 2933, 2939, 2934, 2940, 2937, 2941, 2929, 2938, 2938, + 2939, 2941, 2943, 2944, 2946, 2949, 2932, 2935, 2936, 2947, + 2946, 2943, 2947, 2948, 2950, 2952, 2944, 2948, 2955, 2940, + 2951, 2951, 0, 2949, 2954, 2954, 2956, 2956, 2950, 2967, + 2952, 2957, 2957, 2958, 2958, 2961, 2955, 2960, 2960, 2961, + 2962, 2963, 2965, 2965, 2969, 2962, 2968, 2970, 2971, 2967, - 2982, 2966, 2974, 2974, 2968, 2975, 2975, 2964, 2976, 2976, - 2977, 2978, 2979, 2977, 2970, 2981, 2981, 2971, 2982, 2984, - 2985, 2985, 2986, 2986, 2978, 2979, 2987, 2987, 2988, 2989, - 2989, 2990, 2991, 2992, 2993, 2994, 2994, 2995, 3002, 2984, - 2993, 2995, 2998, 2988, 2990, 3003, 2999, 2992, 2998, 3001, - 2991, 2999, 3004, 3005, 3001, 3001, 3006, 3007, 3012, 3005, - 3008, 3002, 3006, 3012, 3008, 3003, 3009, 3009, 3014, 3017, - 3015, 3018, 3004, 3015, 3018, 3020, 3014, 3019, 3019, 3021, - 3022, 3023, 3007, 3024, 3021, 3025, 3025, 3029, 3026, 3028, - 3035, 3035, 3020, 3020, 3017, 3034, 3027, 3024, 3022, 3027, + 2963, 2968, 2970, 2970, 2973, 2974, 2969, 2975, 2975, 2981, + 2971, 2977, 2977, 2978, 2978, 2979, 2979, 2980, 2982, 2985, + 2980, 2987, 2981, 2991, 2973, 2974, 2984, 2984, 2988, 2988, + 2993, 2982, 2989, 2989, 2990, 2990, 2994, 2985, 2991, 2992, + 2992, 2987, 2995, 2993, 2996, 2997, 2997, 2998, 3002, 3001, + 2996, 2998, 3004, 3002, 2994, 3001, 2995, 3004, 3004, 3005, + 3006, 3007, 3008, 3009, 3010, 3020, 3011, 3017, 3008, 3009, + 3011, 3012, 3012, 3015, 3018, 3017, 3021, 3018, 3015, 3021, + 3006, 3007, 3005, 3022, 3022, 3023, 3024, 3025, 3026, 3010, + 3020, 3024, 3027, 3028, 3028, 3029, 3030, 3031, 3032, 3030, - 3030, 3023, 3026, 3028, 3032, 0, 3029, 3027, 3030, 3032, - 3032, 3033, 3036, 3036, 3034, 3041, 3033, 3033, 3037, 3037, - 3038, 3038, 3039, 3039, 3040, 3040, 3043, 3042, 3044, 3045, - 3046, 3041, 3042, 3048, 3047, 3049, 3050, 3051, 3045, 3047, - 3049, 3052, 3053, 3058, 3046, 3050, 3043, 3055, 3055, 3056, - 3056, 0, 3048, 3057, 3044, 3061, 3057, 3051, 3058, 3059, - 3059, 3052, 3053, 3060, 3063, 3063, 3075, 3064, 0, 3060, - 3065, 3065, 3066, 3061, 3064, 3068, 3068, 3066, 3069, 3070, - 3071, 3071, 3072, 3073, 3075, 3076, 3076, 3069, 3070, 3077, - 3077, 3072, 3073, 3078, 3079, 3080, 3081, 3078, 3082, 3083, + 0, 3037, 3023, 3023, 3033, 3025, 3027, 3030, 3026, 3029, + 3035, 3031, 3033, 3036, 3047, 3035, 3035, 3032, 3036, 3036, + 3037, 3038, 3038, 3039, 3039, 3040, 3040, 3041, 3041, 3042, + 3042, 3043, 3043, 3044, 3045, 3046, 3048, 3049, 3050, 3045, + 3047, 3051, 3052, 3050, 3053, 3048, 3054, 3052, 3055, 3044, + 3056, 3049, 3061, 3053, 3064, 3046, 3058, 3058, 3059, 3059, + 3051, 3060, 3062, 3062, 3060, 3063, 3054, 3061, 3055, 3067, + 3056, 3063, 3064, 3066, 3066, 3069, 3067, 3068, 3068, 3072, + 3069, 3071, 3071, 3073, 3074, 3074, 3075, 3076, 3072, 3078, + 3079, 3079, 3073, 3080, 3080, 3075, 3076, 3081, 3083, 3082, - 3084, 3087, 3086, 3079, 3088, 3084, 3084, 3081, 3088, 3094, - 3087, 3092, 3097, 3082, 3080, 3086, 3092, 3093, 3093, 3083, - 3096, 3096, 3098, 3094, 3099, 3102, 3097, 3101, 3101, 3103, - 3108, 3104, 3109, 3112, 3102, 3103, 3110, 3109, 3113, 3115, - 3117, 3119, 3099, 3104, 3113, 3110, 3119, 3098, 3126, 3120, - 3122, 3115, 3125, 3112, 3120, 3108, 3121, 3121, 3124, 3122, - 3133, 3117, 3126, 3124, 3134, 3125, 3127, 3127, 3129, 3129, - 3127, 3130, 3130, 3131, 3131, 3132, 3135, 3138, 3141, 3137, - 3133, 3135, 3138, 3134, 3132, 3137, 3139, 3140, 3140, 3142, - 3143, 3139, 3144, 3146, 3145, 3147, 3141, 3144, 3154, 3146, + 3084, 3081, 3086, 3085, 3087, 3090, 3089, 3078, 3082, 3087, + 3087, 3084, 3091, 3098, 3090, 3096, 3091, 3083, 3085, 3089, + 3096, 3101, 3086, 3097, 3097, 3100, 3100, 3098, 3102, 3103, + 3105, 3105, 3106, 3107, 3108, 3101, 3112, 3113, 3116, 3107, + 3114, 3106, 3113, 3119, 3117, 3121, 3108, 3103, 0, 3114, + 3117, 3123, 3124, 3102, 3126, 3119, 3123, 3124, 3116, 3125, + 3125, 3112, 3128, 3126, 3129, 3130, 3121, 3128, 3131, 3131, + 3133, 3133, 3131, 3134, 3134, 3135, 3135, 3129, 3136, 3130, + 3137, 3139, 3138, 3141, 3145, 3142, 3139, 3136, 3143, 3141, + 3142, 3144, 3144, 3143, 3146, 3147, 3149, 3151, 3148, 3150, - 3150, 3142, 3148, 3148, 3150, 3151, 3153, 3153, 3152, 3155, - 3151, 3143, 3145, 3152, 3156, 3158, 3167, 3154, 3160, 3160, - 3147, 3162, 3165, 3163, 3155, 3164, 3165, 3168, 3166, 3156, - 3171, 3169, 3167, 3172, 3162, 3158, 3163, 3166, 3164, 3169, - 3170, 3173, 3173, 3174, 3175, 3170, 3168, 3176, 3177, 3177, - 3171, 3179, 3174, 3172, 3178, 3178, 3188, 3183, 3182, 3185, - 3186, 3186, 3175, 3182, 3182, 3185, 3190, 3190, 3192, 3193, - 3179, 3183, 3196, 3176, 3195, 3197, 3201, 3188, 3202, 3195, - 3197, 3200, 3200, 3203, 3192, 3193, 3204, 3202, 3196, 3203, - 3205, 3205, 3206, 3208, 3208, 3210, 3201, 3213, 3209, 3211, + 3137, 3138, 3145, 3148, 3158, 3150, 3146, 3152, 3152, 3154, + 3155, 3159, 3156, 3154, 3149, 3155, 3147, 3156, 3157, 3157, + 3160, 3162, 3151, 3158, 3164, 3164, 3159, 3166, 3169, 3167, + 3168, 3171, 3169, 3172, 3174, 3160, 3170, 3175, 3173, 3174, + 3166, 3162, 3167, 3168, 3176, 3170, 3173, 3171, 3177, 3177, + 3178, 3179, 3172, 3180, 3181, 3181, 3183, 3175, 3187, 3178, + 3182, 3182, 3186, 3192, 3176, 3189, 3196, 3186, 3186, 3179, + 3197, 3189, 3187, 3190, 3190, 3183, 3194, 3194, 3199, 3180, + 3200, 3205, 3196, 3199, 3192, 3201, 3197, 3204, 3204, 3206, + 3201, 3207, 3208, 3209, 3209, 3210, 3200, 3207, 3206, 3212, - 3211, 3215, 3216, 3213, 3219, 3217, 3220, 3223, 3216, 3204, - 3217, 3206, 3209, 3224, 3210, 3221, 3221, 3222, 3222, 3225, - 3225, 3215, 3223, 3226, 3228, 3229, 3219, 3227, 3230, 3231, - 3232, 3229, 3220, 3224, 3226, 0, 3227, 3233, 3233, 3225, - 3234, 3231, 3235, 3236, 3228, 3235, 3236, 3230, 3237, 3237, - 3232, 3241, 3242, 3243, 3246, 3234, 3244, 3244, 3245, 3243, - 3246, 3245, 3247, 3241, 3249, 3250, 3250, 3252, 3251, 3249, - 3253, 3254, 3242, 3251, 3255, 3255, 3253, 3258, 3257, 3259, - 3247, 3260, 3261, 3261, 3262, 3263, 3252, 3264, 3254, 3254, - 3257, 3266, 3266, 0, 3260, 3258, 3264, 3267, 3267, 3268, + 3212, 3205, 3213, 3214, 3215, 3215, 3217, 3219, 3221, 3223, + 3224, 3220, 3217, 3221, 3210, 3208, 3213, 3220, 3225, 3225, + 3226, 3226, 3214, 3227, 3228, 3229, 3229, 3219, 3230, 3232, + 3235, 3223, 3231, 3234, 3233, 3236, 3224, 0, 3227, 3230, + 3233, 3231, 3235, 3238, 3228, 3229, 3237, 3237, 3239, 3232, + 3240, 3239, 3234, 3240, 3245, 3236, 3241, 3241, 3238, 3246, + 3251, 3247, 3248, 3248, 3250, 3249, 3245, 3247, 3249, 3253, + 3250, 3254, 3254, 3256, 3253, 3255, 3257, 3258, 3251, 3246, + 3255, 3261, 3257, 3259, 3259, 3262, 3263, 3264, 3265, 3265, + 3266, 3267, 3256, 3261, 3258, 3258, 3268, 3270, 3270, 3273, - 3268, 3263, 3269, 3262, 3259, 3270, 3271, 3269, 3272, 3272, - 3277, 3271, 3273, 3273, 3274, 3274, 3275, 3276, 3276, 3270, - 3278, 3279, 3284, 3277, 3280, 3275, 3289, 3279, 3291, 3280, - 3283, 3283, 3286, 3286, 3287, 3287, 3292, 3293, 3284, 3294, - 3295, 3295, 3297, 3297, 3298, 3289, 3278, 3299, 3300, 3302, - 3291, 3303, 3304, 3304, 3305, 3305, 3293, 3307, 3292, 3308, - 3303, 3294, 3300, 3309, 3315, 3308, 3299, 3310, 3311, 3302, - 3298, 3312, 0, 3311, 3320, 3307, 3312, 3316, 3316, 3318, - 3318, 3322, 3319, 3309, 3321, 3315, 3310, 3319, 3320, 3323, - 3321, 3324, 3324, 3322, 3325, 3329, 3327, 3323, 3328, 3325, + 3264, 3271, 3271, 3262, 3273, 3268, 3274, 3267, 3282, 3266, + 3275, 3263, 3272, 3272, 3279, 3275, 3276, 3276, 3277, 3277, + 3274, 3278, 3278, 3279, 3280, 3280, 3281, 3283, 3287, 3287, + 3284, 3288, 3293, 3283, 3282, 3284, 3290, 3290, 3295, 3281, + 3291, 3291, 3296, 3297, 3298, 3299, 3299, 3288, 3301, 3301, + 3302, 3293, 3303, 3304, 3306, 3311, 3307, 3308, 3308, 3313, + 3295, 3314, 3297, 3319, 3296, 3307, 3298, 3304, 3309, 3309, + 3315, 3303, 3312, 3311, 3306, 3315, 3302, 3316, 3312, 3313, + 3314, 3324, 3316, 0, 3319, 3320, 3320, 3322, 3322, 3323, + 3325, 3326, 3327, 3333, 3323, 3324, 3325, 3328, 3328, 3329, - 3327, 3330, 3331, 3328, 3332, 3333, 3335, 3331, 3336, 3337, - 3338, 3333, 3341, 3340, 3335, 3329, 3332, 3342, 3343, 3344, - 3346, 3330, 3347, 3351, 3344, 3346, 3348, 3336, 3341, 3337, - 3338, 3340, 3348, 3349, 3342, 3342, 3353, 3352, 3349, 3343, - 3352, 3363, 3347, 3351, 3357, 3357, 3358, 3358, 3359, 3353, - 3365, 3365, 3359, 3366, 3367, 3370, 3363, 0, 3366, 3368, - 3368, 3373, 3373, 3374, 3374, 3388, 3374, 3380, 3375, 3375, - 3370, 3375, 3380, 3367, 3376, 3376, 3377, 3377, 3378, 3377, - 3381, 3383, 3378, 3382, 3382, 3388, 3384, 3387, 3387, 3381, - 3389, 3390, 3391, 3391, 3392, 3393, 3390, 3396, 3397, 3383, + 3327, 3331, 3332, 3326, 3329, 3331, 3334, 3332, 3336, 3335, + 3337, 3339, 3340, 3333, 3335, 3341, 3337, 3342, 3344, 3339, + 3336, 3347, 3345, 3346, 3348, 3350, 3334, 3351, 3352, 3348, + 3350, 3340, 3355, 0, 3352, 3341, 3344, 3342, 3345, 3353, + 3346, 3346, 3347, 3356, 3353, 3357, 3356, 3351, 3361, 3361, + 3362, 3362, 3355, 3363, 3367, 3369, 3369, 3363, 3357, 3370, + 3371, 3372, 3372, 3374, 3370, 3377, 3377, 3378, 3378, 3367, + 3378, 3379, 3379, 3382, 3379, 3380, 3380, 3382, 3374, 3371, + 3381, 3381, 3384, 3381, 3385, 3386, 3386, 3384, 3387, 3388, + 3391, 3391, 3392, 3385, 3393, 3394, 3395, 3395, 3396, 3397, - 3384, 3400, 3398, 3402, 3399, 3397, 3398, 3404, 3404, 3403, - 3389, 3405, 3392, 3399, 3403, 3393, 3400, 3406, 3406, 3409, - 3405, 3402, 3396, 3407, 3407, 3408, 3408, 3410, 3411, 3414, - 3412, 3415, 3410, 3413, 3409, 3412, 3412, 3411, 3416, 3413, - 3411, 3419, 3417, 3418, 3420, 3420, 3415, 3417, 3418, 3421, - 3422, 3423, 3423, 3425, 3414, 3421, 3422, 3424, 3424, 3416, - 3419, 3426, 3429, 3429, 3430, 3433, 3426, 3435, 3425, 3432, - 3432, 3437, 3437, 3446, 3433, 3438, 3438, 0, 3430, 3439, - 3439, 3440, 3440, 3442, 3442, 3435, 3443, 3443, 3444, 3444, - 3445, 3445, 3448, 3449, 3449, 3450, 3450, 3451, 3452, 3446, + 3394, 3400, 3401, 3388, 3402, 3406, 3387, 3404, 3402, 3401, + 3407, 3403, 3392, 0, 3393, 3407, 3396, 3408, 3408, 3397, + 3403, 3409, 3404, 3406, 3410, 3410, 3400, 3411, 3411, 3413, + 3409, 3412, 3412, 3414, 3415, 3416, 3417, 3418, 3414, 3419, + 3416, 3416, 3417, 3415, 3413, 3420, 3415, 3421, 3422, 3423, + 3424, 3424, 3421, 3422, 3419, 3425, 3429, 3426, 3427, 3427, + 3434, 3425, 3418, 3426, 3428, 3428, 3420, 3430, 3423, 3433, + 3433, 3429, 3430, 3437, 3434, 3436, 3436, 3439, 3441, 3441, + 3442, 3442, 3437, 3443, 3443, 3444, 3444, 3446, 3446, 3447, + 3447, 3448, 3448, 3449, 3449, 3439, 3450, 3452, 3453, 3453, - 3453, 3448, 3455, 3456, 3456, 3457, 3451, 3458, 3458, 3460, - 3452, 3459, 3465, 3461, 3462, 3462, 3469, 3455, 3463, 3463, - 3453, 3471, 3460, 3473, 3457, 3461, 3459, 3465, 3466, 3466, - 3470, 3472, 3472, 3470, 3469, 3475, 3476, 3477, 3475, 3478, - 3479, 3473, 3476, 3480, 3478, 3488, 3481, 3471, 3483, 3484, - 3492, 3477, 3487, 3493, 3483, 3506, 3487, 0, 3484, 3479, - 3488, 3480, 3481, 3490, 3490, 3502, 3503, 3513, 3506, 3503, - 3502, 3507, 3507, 3493, 3508, 3508, 3492, 3509, 3509, 3511, - 3511, 3515, 3514, 3516, 3518, 3515, 3520, 3522, 3521, 3524, - 3513, 3514, 3522, 3523, 3526, 3523, 3525, 3525, 3518, 3521, + 3454, 3454, 3455, 3456, 3457, 3459, 3452, 3460, 3460, 3461, + 3463, 3455, 3462, 3462, 3464, 3456, 3473, 3465, 3466, 3466, + 3459, 3469, 3450, 3474, 3457, 3463, 3474, 3464, 3461, 3465, + 3467, 3467, 3470, 3470, 3473, 3475, 3469, 3476, 3476, 3477, + 3479, 3480, 3481, 3479, 3482, 3483, 3485, 3480, 3484, 3482, + 3488, 3491, 3487, 3492, 3496, 3491, 3481, 3477, 3487, 3488, + 3506, 3475, 3485, 3497, 3483, 3506, 3484, 3517, 3492, 3494, + 3494, 3507, 3510, 3524, 3507, 3511, 3511, 3512, 3512, 3518, + 3496, 3513, 3513, 3497, 3520, 3510, 3515, 3515, 3518, 3519, + 3517, 3522, 3525, 3519, 3526, 3527, 3524, 3527, 3528, 3526, - 3527, 3529, 3528, 3516, 3524, 3530, 3531, 3526, 3535, 3520, - 3534, 3533, 3536, 3532, 3538, 3534, 3540, 3529, 3547, 3527, - 3528, 3531, 3532, 3533, 3536, 3546, 3537, 3539, 3539, 3535, - 3530, 3537, 3541, 3538, 3548, 3548, 3540, 3541, 3547, 3546, - 3549, 3550, 3550, 3551, 3551, 3552, 3552, 3553, 3553, 3549, - 3554, 3555, 3556, 3557, 3558, 3556, 3559, 3560, 3557, 3558, - 3561, 3562, 3563, 3564, 3565, 3565, 3561, 3566, 3564, 3554, - 3573, 3555, 3560, 3572, 3563, 3562, 3567, 3567, 3568, 3568, - 3576, 3559, 3569, 3569, 3571, 3571, 3578, 3566, 3572, 3573, - 3574, 3574, 3581, 3581, 3583, 3576, 3582, 3582, 3584, 3585, + 3529, 3529, 3530, 3525, 3520, 3522, 3531, 3533, 3532, 3534, + 3536, 3539, 3535, 3528, 3542, 3530, 3537, 3538, 3540, 3536, + 3543, 3543, 3538, 3533, 3541, 3531, 3532, 3535, 3537, 3541, + 3540, 3544, 3539, 3542, 3534, 3545, 3550, 3551, 3552, 3552, + 3545, 3554, 3554, 3553, 3555, 3555, 3556, 3556, 3557, 3557, + 3550, 3544, 3553, 3558, 3559, 3560, 3561, 3551, 3560, 3562, + 3563, 3561, 3564, 3565, 3562, 3566, 3567, 3570, 3568, 3565, + 3569, 3569, 3558, 3568, 3559, 3571, 3571, 3564, 3567, 3566, + 3572, 3572, 3573, 3573, 3576, 3563, 3577, 3570, 3575, 3575, + 3578, 3578, 3580, 3582, 3585, 3585, 3586, 3586, 3587, 3576, - 3586, 3587, 3583, 3588, 3578, 3585, 3586, 3589, 3590, 3591, - 3591, 3593, 3593, 3590, 3598, 3587, 3588, 3584, 3599, 3601, - 3602, 3604, 3605, 3606, 3602, 3615, 3589, 3605, 3609, 3610, - 3607, 3608, 3611, 3601, 3610, 3598, 3616, 3611, 3599, 3612, - 3612, 3604, 3606, 3607, 3608, 3615, 3617, 3609, 3618, 3618, - 3619, 3620, 3621, 3621, 3616, 3619, 3622, 3620, 3623, 3624, - 3625, 3622, 3626, 3623, 3624, 3617, 3628, 3628, 3626, 3629, - 3630, 3630, 3632, 3633, 3629, 3634, 3632, 3635, 3636, 3625, - 3637, 3638, 3634, 3641, 3641, 3639, 3637, 3643, 3643, 3645, - 3644, 3646, 3633, 3647, 3645, 3648, 3635, 3636, 3639, 3644, + 3588, 3591, 3589, 3590, 3592, 3577, 3587, 3580, 3589, 3590, + 3593, 3582, 3602, 3594, 3603, 3591, 3605, 3592, 3594, 3588, + 3595, 3595, 3597, 3597, 3606, 3608, 3609, 3610, 3606, 3593, + 3605, 3609, 3613, 3602, 3603, 3611, 3612, 3614, 3615, 3616, + 3616, 3619, 3614, 3615, 3620, 3608, 3610, 3621, 3611, 3612, + 3623, 3613, 3622, 3622, 3624, 3623, 3625, 3625, 3626, 3627, + 3624, 3619, 3620, 3626, 3627, 3628, 3621, 3629, 3630, 3637, + 3628, 3632, 3632, 3633, 3630, 3634, 3634, 3636, 3633, 3639, + 3638, 3636, 3640, 3641, 3642, 3657, 3629, 3638, 3637, 3641, + 3648, 3643, 3645, 3645, 3647, 3647, 3650, 3651, 3639, 3648, - 3638, 3650, 3644, 3649, 3649, 3651, 3650, 3653, 3648, 3655, - 3646, 0, 3647, 3654, 3654, 3656, 3656, 3658, 3651, 3657, - 3657, 3660, 3658, 3659, 3661, 3661, 3662, 3663, 3655, 3663, - 3659, 3662, 3665, 3653, 3664, 3664, 3666, 3667, 3669, 3665, - 3660, 3668, 3672, 3666, 3671, 3671, 3668, 3674, 3675, 3676, - 3677, 3681, 3674, 3675, 3678, 3678, 3667, 3669, 3680, 3680, - 3682, 3672, 3683, 3683, 3684, 3684, 3685, 3695, 3676, 3677, - 3681, 3687, 3687, 3685, 3688, 3688, 3689, 3691, 3696, 3682, - 3694, 0, 3691, 3689, 0, 3694, 3695, 3697, 3697, 3698, - 3698, 0, 0, 0, 0, 0, 0, 3696, 3702, 3702, + 3649, 3640, 3648, 3642, 3643, 3649, 3652, 3653, 3653, 3654, + 3655, 3657, 3658, 3658, 3654, 3650, 3651, 3659, 3664, 3652, + 3660, 3660, 3662, 3655, 3661, 3661, 3663, 3662, 3665, 3665, + 3666, 3671, 3667, 3663, 3667, 3666, 3659, 3664, 3668, 3668, + 3669, 3670, 3673, 3676, 3672, 3675, 3675, 3669, 3670, 3672, + 3671, 3678, 3679, 3680, 3681, 3685, 3678, 3679, 3682, 3682, + 3686, 3673, 3676, 3684, 3684, 3687, 3687, 3688, 3688, 3689, + 3691, 3691, 3680, 3681, 3685, 3693, 3689, 3692, 3692, 3686, + 3695, 3698, 3693, 3699, 3700, 3695, 3698, 3701, 3701, 3702, + 3702, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3702, 3702, 3702, 3702, 3702, 3703, 3703, 3703, 3703, 3703, - 3703, 3703, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3706, 3706, 3706, 3706, - 3706, 3706, 3706, 3707, 3707, 3707, 3707, 3707, 3707, 3707, - 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3710, 3710, 0, - 3710, 3710, 3710, 3710, 3711, 3711, 0, 0, 0, 3711, - 3711, 3712, 3712, 0, 0, 3712, 0, 3712, 3713, 0, - 0, 0, 0, 0, 3713, 3714, 3714, 0, 0, 0, - 3714, 3714, 3715, 0, 0, 0, 0, 0, 3715, 3716, - 3716, 0, 3716, 3716, 3716, 3716, 3717, 0, 0, 0, + 0, 0, 3699, 3700, 3706, 3706, 3706, 3706, 3706, 3706, + 3706, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3708, 3708, + 3708, 3708, 3708, 3708, 3708, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3711, + 3711, 3711, 3711, 3711, 3711, 3711, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3714, 3714, 0, 3714, 3714, 3714, 3714, + 3715, 3715, 0, 0, 0, 3715, 3715, 3716, 3716, 0, + 0, 3716, 0, 3716, 3717, 0, 0, 0, 0, 0, + 3717, 3718, 3718, 0, 0, 0, 3718, 3718, 3719, 0, + 0, 0, 0, 0, 3719, 3720, 3720, 0, 3720, 3720, - 0, 0, 3717, 3718, 3718, 0, 0, 0, 3718, 3718, - 3719, 3719, 0, 3719, 3719, 3719, 3719, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701 + 3720, 3720, 3721, 0, 0, 0, 0, 0, 3721, 3722, + 3722, 0, 0, 0, 3722, 3722, 3723, 3723, 0, 3723, + 3723, 3723, 3723, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3705, 3705, 3705, 3705 } ; static yy_state_type yy_last_accepting_state; @@ -3448,7 +3452,7 @@ static void config_end_include(void) } #endif -#line 3449 "" +#line 3453 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3457,9 +3461,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3458 "" +#line 3462 "" -#line 3460 "" +#line 3464 "" #define INITIAL 0 #define quotedstring 1 @@ -3683,7 +3687,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3684 "" +#line 3688 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3716,13 +3720,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 >= 3702 ) + if ( yy_current_state >= 3706 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 7218 ); + while ( yy_base[yy_current_state] != 7224 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5423,98 +5427,103 @@ YY_RULE_SETUP case 333: YY_RULE_SETUP #line 558 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPATH) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 341: YY_RULE_SETUP #line 566 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 342: YY_RULE_SETUP #line 567 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 343: YY_RULE_SETUP #line 568 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_NSID ) } YY_BREAK case 344: YY_RULE_SETUP #line 569 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDE ) } YY_BREAK case 345: -/* rule 345 can match eol */ YY_RULE_SETUP #line 570 "./util/configlexer.lex" +{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } + YY_BREAK +case 346: +/* rule 346 can match eol */ +YY_RULE_SETUP +#line 571 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 346: +case 347: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 574 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 347: -YY_RULE_SETUP -#line 579 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 348: -/* rule 348 can match eol */ YY_RULE_SETUP #line 580 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 349: +/* rule 349 can match eol */ +YY_RULE_SETUP +#line 581 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 349: +case 350: YY_RULE_SETUP -#line 582 "./util/configlexer.lex" +#line 583 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5527,34 +5536,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 350: +case 351: YY_RULE_SETUP -#line 594 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 595 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 351: -YY_RULE_SETUP -#line 600 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 352: -/* rule 352 can match eol */ YY_RULE_SETUP #line 601 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 353: +/* rule 353 can match eol */ +YY_RULE_SETUP +#line 602 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 353: +case 354: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5567,38 +5576,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 354: +case 355: YY_RULE_SETUP -#line 615 "./util/configlexer.lex" +#line 616 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 617 "./util/configlexer.lex" +#line 618 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 355: -YY_RULE_SETUP -#line 621 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 356: -/* rule 356 can match eol */ YY_RULE_SETUP #line 622 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 357: +/* rule 357 can match eol */ YY_RULE_SETUP #line 623 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 358: YY_RULE_SETUP #line 624 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 359: +YY_RULE_SETUP +#line 625 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5606,27 +5615,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 629 "./util/configlexer.lex" +#line 630 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 359: -YY_RULE_SETUP -#line 633 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 360: -/* rule 360 can match eol */ YY_RULE_SETUP #line 634 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 361: +/* rule 361 can match eol */ +YY_RULE_SETUP +#line 635 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 361: +case 362: YY_RULE_SETUP -#line 636 "./util/configlexer.lex" +#line 637 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5636,7 +5645,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 642 "./util/configlexer.lex" +#line 643 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5651,39 +5660,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 362: +case 363: YY_RULE_SETUP -#line 656 "./util/configlexer.lex" +#line 657 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 659 "./util/configlexer.lex" +#line 660 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 363: -YY_RULE_SETUP -#line 663 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 364: -/* rule 364 can match eol */ YY_RULE_SETUP #line 664 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 365: +/* rule 365 can match eol */ YY_RULE_SETUP #line 665 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 366: YY_RULE_SETUP #line 666 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 367: +YY_RULE_SETUP +#line 667 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5692,29 +5701,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 672 "./util/configlexer.lex" +#line 673 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 367: -YY_RULE_SETUP -#line 676 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 368: -/* rule 368 can match eol */ YY_RULE_SETUP #line 677 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 369: +/* rule 369 can match eol */ +YY_RULE_SETUP +#line 678 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 369: +case 370: YY_RULE_SETUP -#line 681 "./util/configlexer.lex" +#line 682 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5723,33 +5732,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 370: +case 371: YY_RULE_SETUP -#line 689 "./util/configlexer.lex" +#line 690 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 371: +case 372: YY_RULE_SETUP -#line 693 "./util/configlexer.lex" +#line 694 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 372: +case 373: YY_RULE_SETUP -#line 697 "./util/configlexer.lex" +#line 698 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 373: +case 374: YY_RULE_SETUP -#line 701 "./util/configlexer.lex" +#line 702 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5750 "" +#line 5759 "" case YY_END_OF_BUFFER: { @@ -6044,7 +6053,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 >= 3702 ) + if ( yy_current_state >= 3706 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6072,11 +6081,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 >= 3702 ) + if ( yy_current_state >= 3706 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3701); + yy_is_jam = (yy_current_state == 3705); return yy_is_jam ? 0 : yy_current_state; } @@ -6715,6 +6724,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 701 "./util/configlexer.lex" +#line 702 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 59ee8874a..55ddf3f8f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -555,6 +555,7 @@ backend{COLON} { YDVAR(1, VAR_CACHEDB_BACKEND) } secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) } redis-server-host{COLON} { YDVAR(1, VAR_CACHEDB_REDISHOST) } redis-server-port{COLON} { YDVAR(1, VAR_CACHEDB_REDISPORT) } +redis-server-path{COLON} { YDVAR(1, VAR_CACHEDB_REDISPATH) } redis-timeout{COLON} { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } redis-expire-records{COLON} { YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } ipset{COLON} { YDVAR(0, VAR_IPSET) } diff --git a/util/configparser.c b/util/configparser.c index fac2d4a72..2b99acd2f 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -408,424 +408,426 @@ enum yysymbol_kind_t YYSYMBOL_VAR_CACHEDB_REDISPORT = 280, /* VAR_CACHEDB_REDISPORT */ YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 281, /* VAR_CACHEDB_REDISTIMEOUT */ YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 282, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 283, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 284, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 285, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 286, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 287, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 288, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 289, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 290, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 291, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 292, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 293, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 294, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 295, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 296, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 297, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 298, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 299, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 300, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 301, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 302, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 303, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 304, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 305, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 306, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 307, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 308, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 309, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 310, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 311, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 312, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 313, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 314, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 315, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 316, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 317, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 318, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 319, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 320, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 321, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 322, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 323, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 324, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 325, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 326, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 327, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 328, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - YYSYMBOL_VAR_EDE = 329, /* VAR_EDE */ - YYSYMBOL_VAR_INTERFACE_ACTION = 330, /* VAR_INTERFACE_ACTION */ - YYSYMBOL_VAR_INTERFACE_VIEW = 331, /* VAR_INTERFACE_VIEW */ - YYSYMBOL_VAR_INTERFACE_TAG = 332, /* VAR_INTERFACE_TAG */ - YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 333, /* VAR_INTERFACE_TAG_ACTION */ - YYSYMBOL_VAR_INTERFACE_TAG_DATA = 334, /* VAR_INTERFACE_TAG_DATA */ - YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 335, /* VAR_PROXY_PROTOCOL_PORT */ - YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 336, /* VAR_STATISTICS_INHIBIT_ZERO */ - YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 337, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ - YYSYMBOL_YYACCEPT = 338, /* $accept */ - YYSYMBOL_toplevelvars = 339, /* toplevelvars */ - YYSYMBOL_toplevelvar = 340, /* toplevelvar */ - YYSYMBOL_force_toplevel = 341, /* force_toplevel */ - YYSYMBOL_serverstart = 342, /* serverstart */ - YYSYMBOL_contents_server = 343, /* contents_server */ - YYSYMBOL_content_server = 344, /* content_server */ - YYSYMBOL_stubstart = 345, /* stubstart */ - YYSYMBOL_contents_stub = 346, /* contents_stub */ - YYSYMBOL_content_stub = 347, /* content_stub */ - YYSYMBOL_forwardstart = 348, /* forwardstart */ - YYSYMBOL_contents_forward = 349, /* contents_forward */ - YYSYMBOL_content_forward = 350, /* content_forward */ - YYSYMBOL_viewstart = 351, /* viewstart */ - YYSYMBOL_contents_view = 352, /* contents_view */ - YYSYMBOL_content_view = 353, /* content_view */ - YYSYMBOL_authstart = 354, /* authstart */ - YYSYMBOL_contents_auth = 355, /* contents_auth */ - YYSYMBOL_content_auth = 356, /* content_auth */ - YYSYMBOL_rpz_tag = 357, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 358, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 359, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 360, /* rpz_log */ - YYSYMBOL_rpz_log_name = 361, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 362, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 363, /* rpzstart */ - YYSYMBOL_contents_rpz = 364, /* contents_rpz */ - YYSYMBOL_content_rpz = 365, /* content_rpz */ - YYSYMBOL_server_num_threads = 366, /* server_num_threads */ - YYSYMBOL_server_verbosity = 367, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 368, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 369, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 370, /* server_extended_statistics */ - YYSYMBOL_server_statistics_inhibit_zero = 371, /* server_statistics_inhibit_zero */ - YYSYMBOL_server_shm_enable = 372, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 373, /* server_shm_key */ - YYSYMBOL_server_port = 374, /* server_port */ - YYSYMBOL_server_send_client_subnet = 375, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 376, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 377, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 378, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 379, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 380, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 381, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 382, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 383, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 384, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 385, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 386, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 387, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 388, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 389, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 390, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 391, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 392, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 393, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 394, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 395, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 396, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 397, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 398, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 399, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 400, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 401, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 402, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 403, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 404, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 405, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 406, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 407, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 408, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 409, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 410, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 411, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 412, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 413, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 414, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 415, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 416, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 417, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 418, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 419, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 420, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 421, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 422, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 423, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 424, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 425, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 426, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 427, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 428, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 429, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 430, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 431, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 432, /* server_log_queries */ - YYSYMBOL_server_log_replies = 433, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 434, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 435, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 436, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 437, /* server_chroot */ - YYSYMBOL_server_username = 438, /* server_username */ - YYSYMBOL_server_directory = 439, /* server_directory */ - YYSYMBOL_server_logfile = 440, /* server_logfile */ - YYSYMBOL_server_pidfile = 441, /* server_pidfile */ - YYSYMBOL_server_root_hints = 442, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 443, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 444, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 445, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 446, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 447, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 448, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 449, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 450, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 451, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 452, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 453, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 454, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 455, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 456, /* server_identity */ - YYSYMBOL_server_version = 457, /* server_version */ - YYSYMBOL_server_http_user_agent = 458, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 459, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 460, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 461, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 462, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 463, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 464, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 465, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 466, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 467, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 468, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 469, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 470, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 471, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 472, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 473, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 474, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 475, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 476, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 477, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 478, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 479, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 480, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 481, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 482, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 483, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 484, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 485, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 486, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 487, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 488, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 489, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 490, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 491, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 492, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 493, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 494, /* server_harden_algo_downgrade */ - YYSYMBOL_server_harden_unknown_additional = 495, /* server_harden_unknown_additional */ - YYSYMBOL_server_use_caps_for_id = 496, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 497, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 498, /* server_private_address */ - YYSYMBOL_server_private_domain = 499, /* server_private_domain */ - YYSYMBOL_server_prefetch = 500, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 501, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 502, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 503, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 504, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 505, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 506, /* server_access_control */ - YYSYMBOL_server_interface_action = 507, /* server_interface_action */ - YYSYMBOL_server_module_conf = 508, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 509, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 510, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 511, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 512, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 513, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 514, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 515, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 516, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 517, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 518, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 519, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 520, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 521, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 522, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 523, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 524, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 525, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 526, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 527, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 528, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 529, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 530, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 531, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 532, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 533, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 534, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 535, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 536, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 537, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 538, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 539, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 540, /* server_local_zone */ - YYSYMBOL_server_local_data = 541, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 542, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 543, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 544, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 545, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 546, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 547, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 548, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 549, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 550, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 551, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 552, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 553, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 554, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 555, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 556, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 557, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 558, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 559, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 560, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 561, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 562, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 563, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 564, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 565, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 566, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 567, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 568, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 569, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 570, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 571, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 572, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 573, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 574, /* server_outbound_msg_retry */ - YYSYMBOL_server_max_sent_count = 575, /* server_max_sent_count */ - YYSYMBOL_server_max_query_restarts = 576, /* server_max_query_restarts */ - YYSYMBOL_server_low_rtt = 577, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 578, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 579, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 580, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 581, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 582, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 583, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 584, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 585, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 586, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 587, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 588, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 589, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 590, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 591, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 592, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 593, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 594, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 595, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 596, /* stub_name */ - YYSYMBOL_stub_host = 597, /* stub_host */ - YYSYMBOL_stub_addr = 598, /* stub_addr */ - YYSYMBOL_stub_first = 599, /* stub_first */ - YYSYMBOL_stub_no_cache = 600, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 601, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 602, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 603, /* stub_prime */ - YYSYMBOL_forward_name = 604, /* forward_name */ - YYSYMBOL_forward_host = 605, /* forward_host */ - YYSYMBOL_forward_addr = 606, /* forward_addr */ - YYSYMBOL_forward_first = 607, /* forward_first */ - YYSYMBOL_forward_no_cache = 608, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 609, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 610, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 611, /* auth_name */ - YYSYMBOL_auth_zonefile = 612, /* auth_zonefile */ - YYSYMBOL_auth_master = 613, /* auth_master */ - YYSYMBOL_auth_url = 614, /* auth_url */ - YYSYMBOL_auth_allow_notify = 615, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 616, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 617, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 618, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 619, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 620, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 621, /* view_name */ - YYSYMBOL_view_local_zone = 622, /* view_local_zone */ - YYSYMBOL_view_response_ip = 623, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 624, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 625, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 626, /* view_local_data_ptr */ - YYSYMBOL_view_first = 627, /* view_first */ - YYSYMBOL_rcstart = 628, /* rcstart */ - YYSYMBOL_contents_rc = 629, /* contents_rc */ - YYSYMBOL_content_rc = 630, /* content_rc */ - YYSYMBOL_rc_control_enable = 631, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 632, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 633, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 634, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 635, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 636, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 637, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 638, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 639, /* dtstart */ - YYSYMBOL_contents_dt = 640, /* contents_dt */ - YYSYMBOL_content_dt = 641, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 642, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 643, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 644, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 645, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 646, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 647, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 648, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 649, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 650, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 651, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 652, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 653, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 654, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 655, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 656, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 657, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 658, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 659, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 660, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 661, /* pythonstart */ - YYSYMBOL_contents_py = 662, /* contents_py */ - YYSYMBOL_content_py = 663, /* content_py */ - YYSYMBOL_py_script = 664, /* py_script */ - YYSYMBOL_dynlibstart = 665, /* dynlibstart */ - YYSYMBOL_contents_dl = 666, /* contents_dl */ - YYSYMBOL_content_dl = 667, /* content_dl */ - YYSYMBOL_dl_file = 668, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 669, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 670, /* server_log_identity */ - YYSYMBOL_server_response_ip = 671, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 672, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 673, /* dnscstart */ - YYSYMBOL_contents_dnsc = 674, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 675, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 676, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 677, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 678, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 679, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 680, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 681, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 682, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 683, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 684, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 685, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 686, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 687, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 688, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 689, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 690, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 691, /* redis_server_host */ - YYSYMBOL_redis_server_port = 692, /* redis_server_port */ - YYSYMBOL_redis_timeout = 693, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 694, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 695, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 696, /* ipsetstart */ - YYSYMBOL_contents_ipset = 697, /* contents_ipset */ - YYSYMBOL_content_ipset = 698, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 699, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 700 /* ipset_name_v6 */ + YYSYMBOL_VAR_CACHEDB_REDISPATH = 283, /* VAR_CACHEDB_REDISPATH */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 284, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 285, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 286, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 287, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 288, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 289, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 290, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 291, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 292, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 293, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 294, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 295, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 296, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 297, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 298, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 299, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 300, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 301, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 302, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 303, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 304, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 305, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 306, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 307, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 308, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 309, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 310, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 311, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 312, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 313, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 314, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 315, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 316, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 317, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 318, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 319, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 320, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 321, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 322, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 323, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 324, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 325, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 326, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 327, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 328, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 329, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + YYSYMBOL_VAR_EDE = 330, /* VAR_EDE */ + YYSYMBOL_VAR_INTERFACE_ACTION = 331, /* VAR_INTERFACE_ACTION */ + YYSYMBOL_VAR_INTERFACE_VIEW = 332, /* VAR_INTERFACE_VIEW */ + YYSYMBOL_VAR_INTERFACE_TAG = 333, /* VAR_INTERFACE_TAG */ + YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 334, /* VAR_INTERFACE_TAG_ACTION */ + YYSYMBOL_VAR_INTERFACE_TAG_DATA = 335, /* VAR_INTERFACE_TAG_DATA */ + YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 336, /* VAR_PROXY_PROTOCOL_PORT */ + YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 337, /* VAR_STATISTICS_INHIBIT_ZERO */ + YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 338, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ + YYSYMBOL_YYACCEPT = 339, /* $accept */ + YYSYMBOL_toplevelvars = 340, /* toplevelvars */ + YYSYMBOL_toplevelvar = 341, /* toplevelvar */ + YYSYMBOL_force_toplevel = 342, /* force_toplevel */ + YYSYMBOL_serverstart = 343, /* serverstart */ + YYSYMBOL_contents_server = 344, /* contents_server */ + YYSYMBOL_content_server = 345, /* content_server */ + YYSYMBOL_stubstart = 346, /* stubstart */ + YYSYMBOL_contents_stub = 347, /* contents_stub */ + YYSYMBOL_content_stub = 348, /* content_stub */ + YYSYMBOL_forwardstart = 349, /* forwardstart */ + YYSYMBOL_contents_forward = 350, /* contents_forward */ + YYSYMBOL_content_forward = 351, /* content_forward */ + YYSYMBOL_viewstart = 352, /* viewstart */ + YYSYMBOL_contents_view = 353, /* contents_view */ + YYSYMBOL_content_view = 354, /* content_view */ + YYSYMBOL_authstart = 355, /* authstart */ + YYSYMBOL_contents_auth = 356, /* contents_auth */ + YYSYMBOL_content_auth = 357, /* content_auth */ + YYSYMBOL_rpz_tag = 358, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 359, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 360, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 361, /* rpz_log */ + YYSYMBOL_rpz_log_name = 362, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 363, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 364, /* rpzstart */ + YYSYMBOL_contents_rpz = 365, /* contents_rpz */ + YYSYMBOL_content_rpz = 366, /* content_rpz */ + YYSYMBOL_server_num_threads = 367, /* server_num_threads */ + YYSYMBOL_server_verbosity = 368, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 369, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 370, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 371, /* server_extended_statistics */ + YYSYMBOL_server_statistics_inhibit_zero = 372, /* server_statistics_inhibit_zero */ + YYSYMBOL_server_shm_enable = 373, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 374, /* server_shm_key */ + YYSYMBOL_server_port = 375, /* server_port */ + YYSYMBOL_server_send_client_subnet = 376, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 377, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 378, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 379, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 380, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 381, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 382, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 383, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 384, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 385, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 386, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 387, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 388, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 389, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 390, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 391, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 392, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 393, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 394, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 395, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 396, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 397, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 398, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 399, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 400, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 401, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 402, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 403, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 404, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 405, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 406, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 407, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 408, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 409, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 410, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 411, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 412, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 413, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 414, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 415, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 416, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 417, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 418, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 419, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 420, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 421, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 422, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 423, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 424, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 425, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 426, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 427, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 428, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 429, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 430, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 431, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 432, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 433, /* server_log_queries */ + YYSYMBOL_server_log_replies = 434, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 435, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 436, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 437, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 438, /* server_chroot */ + YYSYMBOL_server_username = 439, /* server_username */ + YYSYMBOL_server_directory = 440, /* server_directory */ + YYSYMBOL_server_logfile = 441, /* server_logfile */ + YYSYMBOL_server_pidfile = 442, /* server_pidfile */ + YYSYMBOL_server_root_hints = 443, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 444, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 445, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 446, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 447, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 448, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 449, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 450, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 451, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 452, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 453, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 454, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 455, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 456, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 457, /* server_identity */ + YYSYMBOL_server_version = 458, /* server_version */ + YYSYMBOL_server_http_user_agent = 459, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 460, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 461, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 462, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 463, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 464, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 465, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 466, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 467, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 468, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 469, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 470, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 471, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 472, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 473, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 474, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 475, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 476, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 477, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 478, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 479, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 480, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 481, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 482, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 483, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 484, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 485, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 486, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 487, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 488, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 489, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 490, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 491, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 492, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 493, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 494, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 495, /* server_harden_algo_downgrade */ + YYSYMBOL_server_harden_unknown_additional = 496, /* server_harden_unknown_additional */ + YYSYMBOL_server_use_caps_for_id = 497, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 498, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 499, /* server_private_address */ + YYSYMBOL_server_private_domain = 500, /* server_private_domain */ + YYSYMBOL_server_prefetch = 501, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 502, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 503, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 504, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 505, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 506, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 507, /* server_access_control */ + YYSYMBOL_server_interface_action = 508, /* server_interface_action */ + YYSYMBOL_server_module_conf = 509, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 510, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 511, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 512, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 513, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 514, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 515, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 516, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 517, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 518, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 519, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 520, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 521, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 522, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 523, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 524, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 525, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 526, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 527, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 528, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 529, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 530, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 531, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 532, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 533, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 534, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 535, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 536, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 537, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 538, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 539, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 540, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 541, /* server_local_zone */ + YYSYMBOL_server_local_data = 542, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 543, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 544, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 545, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 546, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 547, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 548, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 549, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 550, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 551, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 552, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 553, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 554, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 555, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 556, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 557, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 558, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 559, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 560, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 561, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 562, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 563, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 564, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 565, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 566, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 567, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 568, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 569, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 570, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 571, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 572, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 573, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 574, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 575, /* server_outbound_msg_retry */ + YYSYMBOL_server_max_sent_count = 576, /* server_max_sent_count */ + YYSYMBOL_server_max_query_restarts = 577, /* server_max_query_restarts */ + YYSYMBOL_server_low_rtt = 578, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 579, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 580, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 581, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 582, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 583, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 584, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 585, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 586, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 587, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 588, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 589, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 590, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 591, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 592, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 593, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 594, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 595, /* server_ede */ + YYSYMBOL_server_proxy_protocol_port = 596, /* server_proxy_protocol_port */ + YYSYMBOL_stub_name = 597, /* stub_name */ + YYSYMBOL_stub_host = 598, /* stub_host */ + YYSYMBOL_stub_addr = 599, /* stub_addr */ + YYSYMBOL_stub_first = 600, /* stub_first */ + YYSYMBOL_stub_no_cache = 601, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 602, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 603, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 604, /* stub_prime */ + YYSYMBOL_forward_name = 605, /* forward_name */ + YYSYMBOL_forward_host = 606, /* forward_host */ + YYSYMBOL_forward_addr = 607, /* forward_addr */ + YYSYMBOL_forward_first = 608, /* forward_first */ + YYSYMBOL_forward_no_cache = 609, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 610, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 611, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 612, /* auth_name */ + YYSYMBOL_auth_zonefile = 613, /* auth_zonefile */ + YYSYMBOL_auth_master = 614, /* auth_master */ + YYSYMBOL_auth_url = 615, /* auth_url */ + YYSYMBOL_auth_allow_notify = 616, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 617, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 618, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 619, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 620, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 621, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 622, /* view_name */ + YYSYMBOL_view_local_zone = 623, /* view_local_zone */ + YYSYMBOL_view_response_ip = 624, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 625, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 626, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 627, /* view_local_data_ptr */ + YYSYMBOL_view_first = 628, /* view_first */ + YYSYMBOL_rcstart = 629, /* rcstart */ + YYSYMBOL_contents_rc = 630, /* contents_rc */ + YYSYMBOL_content_rc = 631, /* content_rc */ + YYSYMBOL_rc_control_enable = 632, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 633, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 634, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 635, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 636, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 637, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 638, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 639, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 640, /* dtstart */ + YYSYMBOL_contents_dt = 641, /* contents_dt */ + YYSYMBOL_content_dt = 642, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 643, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 644, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 645, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 646, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 647, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 648, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 649, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 650, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 651, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 652, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 653, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 654, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 655, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 656, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 657, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 658, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 659, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 660, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 661, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 662, /* pythonstart */ + YYSYMBOL_contents_py = 663, /* contents_py */ + YYSYMBOL_content_py = 664, /* content_py */ + YYSYMBOL_py_script = 665, /* py_script */ + YYSYMBOL_dynlibstart = 666, /* dynlibstart */ + YYSYMBOL_contents_dl = 667, /* contents_dl */ + YYSYMBOL_content_dl = 668, /* content_dl */ + YYSYMBOL_dl_file = 669, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 670, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 671, /* server_log_identity */ + YYSYMBOL_server_response_ip = 672, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 673, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 674, /* dnscstart */ + YYSYMBOL_contents_dnsc = 675, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 676, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 677, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 678, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 679, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 680, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 681, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 682, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 683, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 684, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 685, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 686, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 687, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 688, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 689, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 690, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 691, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 692, /* redis_server_host */ + YYSYMBOL_redis_server_port = 693, /* redis_server_port */ + YYSYMBOL_redis_server_path = 694, /* redis_server_path */ + YYSYMBOL_redis_timeout = 695, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 696, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 697, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 698, /* ipsetstart */ + YYSYMBOL_contents_ipset = 699, /* contents_ipset */ + YYSYMBOL_content_ipset = 700, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 701, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 702 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1147,19 +1149,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 722 +#define YYLAST 723 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 338 +#define YYNTOKENS 339 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 363 +#define YYNNTS 364 /* YYNRULES -- Number of rules. */ -#define YYNRULES 703 +#define YYNRULES 705 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1052 +#define YYNSTATES 1055 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 592 +#define YYMAXUTOK 593 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1232,7 +1234,7 @@ static const yytype_int16 yytranslate[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337 + 335, 336, 337, 338 }; #if YYDEBUG @@ -1308,8 +1310,8 @@ static const yytype_int16 yyrline[] = 3544, 3546, 3546, 3546, 3547, 3547, 3548, 3549, 3550, 3551, 3552, 3554, 3564, 3573, 3580, 3589, 3596, 3605, 3613, 3626, 3634, 3647, 3653, 3654, 3655, 3655, 3656, 3656, 3656, 3657, - 3659, 3671, 3683, 3695, 3710, 3723, 3736, 3747, 3753, 3754, - 3755, 3755, 3757, 3772 + 3657, 3659, 3671, 3683, 3695, 3710, 3722, 3735, 3748, 3759, + 3765, 3766, 3767, 3767, 3769, 3784 }; #endif @@ -1433,20 +1435,21 @@ static const char *const yytname[] = "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT", - "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", - "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", - "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", - "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", - "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", - "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", - "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", - "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", - "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", - "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", - "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", - "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", - "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", - "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", + "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_CACHEDB_REDISPATH", + "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM", + "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL", + "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT", + "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL", + "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT", + "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE", + "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT", + "VAR_LOG_TAG_QUERYREPLY", "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", + "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI", "VAR_IPSET", + "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", + "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", + "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", + "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION", @@ -1596,9 +1599,9 @@ static const char *const yytname[] = "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", "cachedbstart", "contents_cachedb", "content_cachedb", "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", - "redis_server_port", "redis_timeout", "redis_expire_records", - "server_tcp_connection_limit", "ipsetstart", "contents_ipset", - "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR + "redis_server_port", "redis_server_path", "redis_timeout", + "redis_expire_records", "server_tcp_connection_limit", "ipsetstart", + "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR }; static const char * @@ -1646,11 +1649,11 @@ static const yytype_int16 yytoknum[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592 + 585, 586, 587, 588, 589, 590, 591, 592, 593 }; #endif -#define YYPACT_NINF (-286) +#define YYPACT_NINF (-287) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1664,112 +1667,112 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -286, 252, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -13, 229, 260, 52, 56, 40, 147, 253, - -81, -285, -95, -191, -278, 29, 30, 31, 73, 74, - 92, 119, 120, 121, 132, 146, 148, 149, 161, 162, - 163, 164, 165, 210, 212, 255, 256, 257, 258, 259, - 261, 262, 263, 265, 270, 273, 276, 286, 287, 290, - 291, 292, 293, 296, 297, 302, 315, 320, 321, 322, - 323, 324, 325, 327, 328, 331, 337, 339, 340, 341, - 343, 349, 350, 351, 352, 353, 354, 355, 358, 359, - 360, 361, 363, 364, 366, 367, 368, 369, 370, 373, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 393, 395, 396, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 412, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 476, 477, 478, + -287, 252, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -13, 222, 254, 289, 52, 39, 145, -14, + -81, -286, 124, -192, -279, 29, 30, 31, 73, 91, + 92, 119, 120, 121, 123, 132, 165, 210, 212, 240, + 241, 255, 256, 258, 262, 263, 264, 265, 266, 267, + 268, 271, 274, 277, 278, 287, 291, 292, 293, 295, + 296, 303, 304, 305, 320, 321, 323, 325, 328, 334, + 335, 336, 337, 340, 341, 342, 343, 349, 350, 351, + 352, 353, 354, 359, 362, 363, 364, 365, 366, 380, + 381, 382, 383, 384, 385, 389, 390, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 471, 472, 473, 474, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 515, 516, 517, 520, 521, - 522, 523, 524, 525, 526, 528, 529, 530, 531, 532, - 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 550, 552, 553, 554, - 556, 557, 558, 559, 560, 562, 563, 564, 565, 566, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, 567, 568, 569, 570, - 571, 572, 573, 574, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 575, 576, 577, 578, 579, 580, 581, - -286, -286, -286, -286, -286, -286, -286, -286, 582, 583, - 584, 585, 586, 587, 588, -286, -286, -286, -286, -286, - -286, -286, -286, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, 599, 600, 601, 602, 603, 604, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 605, 606, 607, 608, 609, 610, 611, - 612, -286, -286, -286, -286, -286, -286, -286, -286, -286, - 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 628, 629, 630, 631, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, 632, - -286, -286, 633, -286, -286, 634, 635, 636, 637, 638, - 639, 640, 641, 642, 643, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, 644, 645, 646, 647, - 648, 649, -286, -286, -286, -286, -286, -286, -286, 650, - 651, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, 652, 653, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, 654, 655, 656, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, 657, 658, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, 659, 660, 661, 662, 663, 664, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, 665, -286, -286, -286, -286, - -286, -286, -286, -286, -286, 666, -286, -286, -286, -286, - -286, 667, 668, 669, 670, 671, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, 672, -286, -286, 673, 674, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 675, 676, 677, -286, -286, -286, -286, - -286, -286, 678, 679, -286, -286, -286, -286, -286, -286, - -286, -286 + 510, 511, 512, 515, 516, 517, 519, 520, 521, 522, + 523, 524, 525, 526, 527, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, + 545, 546, 547, 548, 549, 550, 551, 553, 554, 555, + 557, 558, 559, 560, 561, 563, 564, 565, 566, 567, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, 568, 569, 570, 571, + 572, 573, 574, 575, -287, -287, -287, -287, -287, -287, + -287, -287, -287, 576, 577, 578, 579, 580, 581, 582, + -287, -287, -287, -287, -287, -287, -287, -287, 583, 584, + 585, 586, 587, 588, 589, -287, -287, -287, -287, -287, + -287, -287, -287, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, 600, 601, 602, 603, 604, 605, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, 606, 607, 608, 609, 610, 611, 612, + 613, -287, -287, -287, -287, -287, -287, -287, -287, -287, + 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, + 624, 625, 626, 627, 628, 629, 630, 631, 632, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, 633, + -287, -287, 634, -287, -287, 635, 636, 637, 638, 639, + 640, 641, 642, 643, 644, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, 645, 646, 647, 648, + 649, 650, 651, -287, -287, -287, -287, -287, -287, -287, + -287, 652, 653, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, 654, 655, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, 656, 657, 658, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, 659, 660, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, 661, 662, 663, 664, + 665, 666, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, 667, -287, -287, + -287, -287, -287, -287, -287, -287, -287, 668, -287, -287, + -287, -287, -287, 669, 670, 671, 672, 673, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, 674, -287, -287, + 675, 676, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, 677, 678, 679, -287, + -287, -287, -287, -287, -287, 680, 681, -287, -287, -287, + -287, -287, -287, -287, -287 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1778,9 +1781,9 @@ static const yytype_int16 yypact[] = static const yytype_int16 yydefact[] = { 2, 0, 1, 18, 19, 257, 268, 584, 644, 603, - 278, 658, 681, 288, 697, 307, 649, 3, 17, 21, + 278, 658, 681, 288, 699, 307, 649, 3, 17, 21, 259, 270, 280, 290, 309, 586, 605, 646, 651, 660, - 683, 699, 4, 5, 6, 10, 14, 15, 8, 9, + 683, 701, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1846,85 +1849,85 @@ static const yytype_int16 yydefact[] = 645, 647, 0, 650, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 659, 661, 662, 663, 665, 666, 664, 667, 668, 669, 670, 0, 0, 0, 0, - 0, 0, 682, 684, 685, 686, 687, 688, 689, 0, - 0, 698, 700, 701, 323, 322, 330, 343, 341, 354, - 350, 351, 355, 352, 353, 356, 357, 358, 362, 363, - 393, 394, 395, 396, 397, 425, 426, 427, 433, 434, - 346, 435, 436, 439, 437, 438, 443, 444, 445, 460, - 408, 409, 412, 413, 446, 464, 402, 404, 465, 472, - 473, 474, 347, 424, 493, 494, 403, 487, 386, 342, - 398, 461, 469, 447, 0, 0, 497, 348, 324, 385, - 452, 325, 344, 345, 399, 400, 495, 449, 454, 455, - 360, 359, 326, 498, 428, 459, 387, 407, 466, 467, - 468, 471, 486, 401, 491, 489, 490, 416, 423, 456, - 457, 417, 418, 448, 476, 388, 389, 392, 364, 366, - 361, 367, 368, 369, 370, 377, 378, 379, 380, 381, - 382, 383, 499, 500, 502, 429, 430, 431, 432, 440, - 441, 442, 503, 504, 505, 0, 0, 0, 450, 419, - 421, 654, 518, 522, 520, 519, 523, 521, 530, 531, - 532, 0, 0, 526, 527, 528, 529, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 453, 470, 492, - 536, 537, 420, 506, 0, 0, 0, 0, 0, 0, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 655, - 410, 411, 414, 405, 475, 384, 328, 329, 406, 538, - 539, 540, 541, 542, 544, 543, 545, 546, 547, 365, - 372, 533, 535, 534, 371, 0, 391, 458, 501, 390, - 422, 373, 374, 376, 375, 0, 549, 415, 488, 349, - 550, 0, 0, 0, 0, 0, 551, 327, 451, 552, - 553, 554, 559, 557, 558, 555, 556, 560, 561, 562, - 563, 565, 566, 564, 577, 0, 581, 582, 0, 0, - 583, 567, 575, 568, 569, 570, 574, 576, 571, 572, - 573, 301, 302, 303, 304, 305, 306, 595, 597, 596, - 599, 600, 601, 602, 598, 625, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 626, 636, 637, 638, 639, - 640, 641, 642, 643, 648, 653, 671, 672, 673, 676, - 674, 675, 677, 678, 679, 680, 690, 691, 692, 693, - 694, 695, 702, 703, 462, 496, 517, 656, 657, 524, - 525, 507, 508, 0, 0, 0, 512, 696, 548, 463, - 516, 513, 0, 0, 578, 579, 580, 511, 509, 510, - 514, 515 + 0, 0, 0, 682, 684, 685, 686, 687, 690, 688, + 689, 0, 0, 700, 702, 703, 323, 322, 330, 343, + 341, 354, 350, 351, 355, 352, 353, 356, 357, 358, + 362, 363, 393, 394, 395, 396, 397, 425, 426, 427, + 433, 434, 346, 435, 436, 439, 437, 438, 443, 444, + 445, 460, 408, 409, 412, 413, 446, 464, 402, 404, + 465, 472, 473, 474, 347, 424, 493, 494, 403, 487, + 386, 342, 398, 461, 469, 447, 0, 0, 497, 348, + 324, 385, 452, 325, 344, 345, 399, 400, 495, 449, + 454, 455, 360, 359, 326, 498, 428, 459, 387, 407, + 466, 467, 468, 471, 486, 401, 491, 489, 490, 416, + 423, 456, 457, 417, 418, 448, 476, 388, 389, 392, + 364, 366, 361, 367, 368, 369, 370, 377, 378, 379, + 380, 381, 382, 383, 499, 500, 502, 429, 430, 431, + 432, 440, 441, 442, 503, 504, 505, 0, 0, 0, + 450, 419, 421, 654, 518, 522, 520, 519, 523, 521, + 530, 531, 532, 0, 0, 526, 527, 528, 529, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 453, + 470, 492, 536, 537, 420, 506, 0, 0, 0, 0, + 0, 0, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 655, 410, 411, 414, 405, 475, 384, 328, 329, + 406, 538, 539, 540, 541, 542, 544, 543, 545, 546, + 547, 365, 372, 533, 535, 534, 371, 0, 391, 458, + 501, 390, 422, 373, 374, 376, 375, 0, 549, 415, + 488, 349, 550, 0, 0, 0, 0, 0, 551, 327, + 451, 552, 553, 554, 559, 557, 558, 555, 556, 560, + 561, 562, 563, 565, 566, 564, 577, 0, 581, 582, + 0, 0, 583, 567, 575, 568, 569, 570, 574, 576, + 571, 572, 573, 301, 302, 303, 304, 305, 306, 595, + 597, 596, 599, 600, 601, 602, 598, 625, 627, 628, + 629, 630, 631, 632, 633, 634, 635, 626, 636, 637, + 638, 639, 640, 641, 642, 643, 648, 653, 671, 672, + 673, 676, 674, 675, 677, 678, 679, 680, 691, 692, + 693, 694, 696, 697, 695, 704, 705, 462, 496, 517, + 656, 657, 524, 525, 507, 508, 0, 0, 0, 512, + 698, 548, 463, 516, 513, 0, 0, 578, 579, 580, + 511, 509, 510, 514, 515 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, 680, 681, 682, 683, 684, -286, -286, - 685, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, - -286, -286, -286 + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, 97, 682, 683, 684, 685, -287, -287, + 686, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1965,8 +1968,8 @@ static const yytype_int16 yydefgoto[] = 656, 657, 658, 27, 40, 660, 661, 28, 41, 663, 664, 511, 512, 513, 514, 29, 42, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 30, 43, - 692, 693, 694, 695, 696, 697, 698, 515, 31, 44, - 701, 702, 703 + 693, 694, 695, 696, 697, 698, 699, 700, 515, 31, + 44, 703, 704, 705 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1977,76 +1980,76 @@ static const yytype_int16 yytable[] = 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, 699, 700, 659, 662, 77, 78, 79, 704, - 705, 706, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 701, 702, 659, 662, 77, 78, 79, 706, + 707, 708, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 707, 708, 563, 686, 687, 688, 689, - 690, 691, 121, 122, 123, 124, 125, 548, 126, 127, - 128, 563, 709, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 709, 563, 686, 687, 688, 689, 690, + 691, 692, 121, 122, 123, 124, 125, 563, 126, 127, + 128, 710, 711, 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, 710, - 711, 712, 155, 549, 550, 156, 157, 158, 159, 160, - 161, 162, 713, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 714, 0, 715, 716, - 551, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 717, 718, 719, 720, 721, 176, 177, 178, 179, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 712, + 713, 714, 155, 715, 597, 156, 157, 158, 159, 160, + 161, 162, 716, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 620, 621, 622, 623, + 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, + 634, 635, 636, 637, 638, 717, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 722, 220, 723, 221, 222, 223, 224, 225, 226, 227, + 718, 220, 719, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 552, 553, 603, 604, 605, 606, 607, 608, - 609, 610, 2, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 3, 4, 724, 725, 726, 727, 728, - 250, 729, 730, 731, 516, 732, 517, 518, 251, 252, - 733, 253, 254, 734, 255, 256, 735, 554, 257, 258, - 259, 260, 261, 262, 263, 264, 736, 737, 5, 265, - 738, 739, 740, 741, 6, 533, 742, 743, 266, 267, - 268, 269, 744, 534, 535, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 745, 565, 566, 567, 568, - 746, 747, 748, 749, 750, 751, 570, 752, 753, 519, - 564, 754, 565, 566, 567, 568, 569, 755, 7, 756, - 757, 758, 570, 759, 584, 585, 586, 587, 588, 760, - 761, 762, 763, 764, 765, 766, 8, 589, 767, 768, - 769, 770, 520, 771, 772, 521, 773, 774, 775, 776, - 777, 571, 572, 778, 522, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 795, 536, 796, 537, 797, 798, 538, 799, 800, - 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 9, 812, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, - 637, 638, 813, 814, 815, 816, 817, 818, 819, 820, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 855, 10, 856, 857, 858, 859, - 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, - 870, 871, 872, 873, 874, 875, 876, 11, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 893, 894, 895, 896, 12, 523, - 897, 898, 899, 900, 901, 902, 903, 13, 904, 905, - 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, - 916, 917, 918, 919, 920, 921, 922, 923, 924, 539, - 925, 14, 926, 927, 928, 15, 929, 930, 931, 932, - 933, 16, 934, 935, 936, 937, 938, 939, 940, 941, - 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, - 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, - 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, - 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, - 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, - 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, - 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, - 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, + 238, 239, 603, 604, 605, 606, 607, 608, 609, 610, + 720, 721, 2, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 3, 4, 722, 723, 516, 724, 517, + 518, 250, 725, 726, 727, 728, 729, 730, 731, 251, + 252, 732, 253, 254, 733, 255, 256, 734, 735, 257, + 258, 259, 260, 261, 262, 263, 264, 736, 5, 533, + 265, 737, 738, 739, 6, 740, 741, 534, 535, 266, + 267, 268, 269, 742, 743, 744, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 565, 566, 567, 568, + 745, 746, 519, 747, 548, 748, 570, 564, 749, 565, + 566, 567, 568, 569, 750, 751, 752, 753, 7, 570, + 754, 755, 756, 757, 584, 585, 586, 587, 588, 758, + 759, 760, 761, 762, 763, 520, 8, 589, 521, 764, + 549, 550, 765, 766, 767, 768, 769, 522, 571, 572, + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 770, 771, 772, 773, 774, 775, 536, 551, 537, 776, + 777, 538, 778, 779, 780, 781, 782, 783, 784, 785, + 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, + 796, 9, 797, 798, 799, 800, 801, 802, 803, 804, + 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, + 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, + 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 846, 847, 848, 849, 850, 851, 852, 853, 552, + 553, 854, 855, 856, 857, 10, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, + 872, 873, 874, 875, 876, 877, 878, 11, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, + 891, 892, 893, 523, 554, 894, 895, 896, 12, 897, + 898, 899, 900, 901, 902, 903, 904, 905, 13, 906, + 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 539, 921, 922, 923, 924, 925, + 926, 927, 14, 928, 929, 930, 15, 931, 932, 933, + 934, 935, 16, 936, 937, 938, 939, 940, 941, 942, + 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, + 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, + 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, + 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, + 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, + 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, + 1053, 1054, 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, 597, 598, 599, - 600, 601, 602 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 598, + 599, 600, 601, 602 }; static const yytype_int16 yycheck[] = @@ -2054,61 +2057,61 @@ static const yytype_int16 yycheck[] = 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 310, 311, 115, 320, 49, 50, 51, 10, + 43, 44, 311, 312, 115, 321, 49, 50, 51, 10, 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 10, 10, 45, 277, 278, 279, 280, - 281, 282, 105, 106, 107, 108, 109, 45, 111, 112, - 113, 45, 10, 116, 117, 118, 119, 120, 121, 122, + 93, 94, 95, 10, 45, 277, 278, 279, 280, 281, + 282, 283, 105, 106, 107, 108, 109, 45, 111, 112, + 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 10, - 10, 10, 145, 81, 82, 148, 149, 150, 151, 152, + 10, 10, 145, 10, 37, 148, 149, 150, 151, 152, 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 10, -1, 10, 10, - 108, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 10, 10, 10, 10, 10, 189, 190, 191, 192, + 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 10, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 10, 234, 10, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 190, 191, 97, 98, 99, 100, 101, 102, - 103, 104, 0, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 11, 12, 10, 10, 10, 10, 10, - 283, 10, 10, 10, 45, 10, 47, 48, 291, 292, - 10, 294, 295, 10, 297, 298, 10, 235, 301, 302, - 303, 304, 305, 306, 307, 308, 10, 10, 46, 312, - 10, 10, 10, 10, 52, 45, 10, 10, 321, 322, - 323, 324, 10, 53, 54, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 10, 286, 287, 288, 289, - 10, 10, 10, 10, 10, 10, 296, 10, 10, 110, - 284, 10, 286, 287, 288, 289, 290, 10, 96, 10, - 10, 10, 296, 10, 314, 315, 316, 317, 318, 10, - 10, 10, 10, 10, 10, 10, 114, 327, 10, 10, - 10, 10, 143, 10, 10, 146, 10, 10, 10, 10, - 10, 325, 326, 10, 155, 10, 10, 10, 10, 10, + 253, 254, 97, 98, 99, 100, 101, 102, 103, 104, + 10, 10, 0, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 11, 12, 10, 10, 45, 10, 47, + 48, 284, 10, 10, 10, 10, 10, 10, 10, 292, + 293, 10, 295, 296, 10, 298, 299, 10, 10, 302, + 303, 304, 305, 306, 307, 308, 309, 10, 46, 45, + 313, 10, 10, 10, 52, 10, 10, 53, 54, 322, + 323, 324, 325, 10, 10, 10, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 287, 288, 289, 290, + 10, 10, 110, 10, 45, 10, 297, 285, 10, 287, + 288, 289, 290, 291, 10, 10, 10, 10, 96, 297, + 10, 10, 10, 10, 315, 316, 317, 318, 319, 10, + 10, 10, 10, 10, 10, 143, 114, 328, 146, 10, + 81, 82, 10, 10, 10, 10, 10, 155, 326, 327, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 10, 10, 10, 10, 10, 10, 142, 108, 144, 10, + 10, 147, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 142, 10, 144, 10, 10, 147, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 169, 10, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 169, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 233, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 190, + 191, 10, 10, 10, 10, 233, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 255, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 276, 300, - 10, 10, 10, 10, 10, 10, 10, 285, 10, 10, + 10, 10, 10, 301, 235, 10, 10, 10, 276, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 286, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 299, - 10, 309, 10, 10, 10, 313, 10, 10, 10, 10, - 10, 319, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 300, 10, 10, 10, 10, 10, + 10, 10, 310, 10, 10, 10, 314, 10, 10, 10, + 10, 10, 320, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2120,21 +2123,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 37, 37, - 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 339, 0, 11, 12, 46, 52, 96, 114, 169, - 233, 255, 276, 285, 309, 313, 319, 340, 341, 342, - 345, 348, 351, 354, 363, 628, 639, 661, 665, 673, - 686, 696, 343, 346, 349, 352, 355, 364, 629, 640, - 662, 666, 674, 687, 697, 13, 14, 15, 16, 17, + 0, 340, 0, 11, 12, 46, 52, 96, 114, 169, + 233, 255, 276, 286, 310, 314, 320, 341, 342, 343, + 346, 349, 352, 355, 364, 629, 640, 662, 666, 674, + 687, 698, 344, 347, 350, 353, 356, 365, 630, 641, + 663, 667, 675, 688, 699, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2155,10 +2158,125 @@ static const yytype_int16 yystos[] = 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 283, 291, 292, 294, 295, 297, 298, 301, 302, 303, - 304, 305, 306, 307, 308, 312, 321, 322, 323, 324, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 344, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 284, 292, 293, 295, 296, 298, 299, 302, 303, 304, + 305, 306, 307, 308, 309, 313, 322, 323, 324, 325, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 345, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 670, 671, 672, 673, 697, 45, 47, 48, 110, + 143, 146, 155, 301, 348, 597, 598, 599, 600, 601, + 602, 603, 604, 45, 53, 54, 142, 144, 147, 300, + 351, 605, 606, 607, 608, 609, 610, 611, 45, 81, + 82, 108, 190, 191, 235, 354, 622, 623, 624, 625, + 626, 627, 628, 45, 285, 287, 288, 289, 290, 291, + 297, 326, 327, 357, 612, 613, 614, 615, 616, 617, + 618, 619, 620, 621, 315, 316, 317, 318, 319, 328, + 358, 359, 360, 361, 362, 363, 366, 612, 613, 614, + 615, 616, 619, 97, 98, 99, 100, 101, 102, 103, + 104, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 642, + 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, + 653, 654, 655, 656, 657, 658, 659, 660, 661, 115, + 664, 665, 321, 668, 669, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 676, 677, 678, 679, 680, + 681, 682, 683, 684, 685, 686, 277, 278, 279, 280, + 281, 282, 283, 689, 690, 691, 692, 693, 694, 695, + 696, 311, 312, 700, 701, 702, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_int16 yyr1[] = +{ + 0, 339, 340, 340, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 342, 343, + 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 346, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 349, 350, + 350, 351, 351, 351, 351, 351, 351, 351, 352, 353, + 353, 354, 354, 354, 354, 354, 354, 354, 355, 356, + 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 365, + 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, + 366, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, @@ -2181,137 +2299,22 @@ static const yytype_int16 yystos[] = 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 669, 670, 671, 672, 695, 45, 47, 48, 110, - 143, 146, 155, 300, 347, 596, 597, 598, 599, 600, - 601, 602, 603, 45, 53, 54, 142, 144, 147, 299, - 350, 604, 605, 606, 607, 608, 609, 610, 45, 81, - 82, 108, 190, 191, 235, 353, 621, 622, 623, 624, - 625, 626, 627, 45, 284, 286, 287, 288, 289, 290, - 296, 325, 326, 356, 611, 612, 613, 614, 615, 616, - 617, 618, 619, 620, 314, 315, 316, 317, 318, 327, - 357, 358, 359, 360, 361, 362, 365, 611, 612, 613, - 614, 615, 618, 97, 98, 99, 100, 101, 102, 103, - 104, 630, 631, 632, 633, 634, 635, 636, 637, 638, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 641, - 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 115, - 663, 664, 320, 667, 668, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 277, 278, 279, 280, - 281, 282, 688, 689, 690, 691, 692, 693, 694, 310, - 311, 698, 699, 700, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = -{ - 0, 338, 339, 339, 340, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 341, 342, - 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 345, 346, 346, - 347, 347, 347, 347, 347, 347, 347, 347, 348, 349, - 349, 350, 350, 350, 350, 350, 350, 350, 351, 352, - 352, 353, 353, 353, 353, 353, 353, 353, 354, 355, - 355, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 364, - 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, - 365, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 629, 630, 630, 630, - 630, 630, 630, 630, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 640, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 642, 643, 644, 645, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 660, 661, 662, 662, 663, 664, 665, - 666, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 674, 675, 675, 675, 675, 675, 675, 675, 675, 675, - 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, - 685, 686, 687, 687, 688, 688, 688, 688, 688, 688, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 697, - 698, 698, 699, 700 + 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 630, 631, 631, 631, + 631, 631, 631, 631, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 641, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, + 642, 642, 642, 642, 642, 643, 644, 645, 646, 647, + 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 663, 663, 664, 665, 666, + 667, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 675, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, + 686, 687, 688, 688, 689, 689, 689, 689, 689, 689, + 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, + 699, 699, 700, 700, 701, 702 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2386,8 +2389,8 @@ static const yytype_int8 yyr2[] = 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 3, 1, 2, 0, - 1, 1, 2, 2 + 1, 2, 2, 2, 2, 2, 2, 2, 3, 1, + 2, 0, 1, 1, 2, 2 }; @@ -2860,7 +2863,7 @@ yyreduce: OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2864 "util/configparser.c" +#line 2867 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ @@ -2869,7 +2872,7 @@ yyreduce: OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2873 "util/configparser.c" +#line 2876 "util/configparser.c" break; case 257: /* stubstart: VAR_STUB_ZONE */ @@ -2886,7 +2889,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2890 "util/configparser.c" +#line 2893 "util/configparser.c" break; case 268: /* forwardstart: VAR_FORWARD_ZONE */ @@ -2903,7 +2906,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2907 "util/configparser.c" +#line 2910 "util/configparser.c" break; case 278: /* viewstart: VAR_VIEW */ @@ -2922,7 +2925,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2926 "util/configparser.c" +#line 2929 "util/configparser.c" break; case 288: /* authstart: VAR_AUTH_ZONE */ @@ -2946,7 +2949,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2950 "util/configparser.c" +#line 2953 "util/configparser.c" break; case 301: /* rpz_tag: VAR_TAGS STRING_ARG */ @@ -2967,7 +2970,7 @@ yyreduce: } } -#line 2971 "util/configparser.c" +#line 2974 "util/configparser.c" break; case 302: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ @@ -2986,7 +2989,7 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2990 "util/configparser.c" +#line 2993 "util/configparser.c" break; case 303: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ @@ -2996,7 +2999,7 @@ yyreduce: free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 3000 "util/configparser.c" +#line 3003 "util/configparser.c" break; case 304: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ @@ -3008,7 +3011,7 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3012 "util/configparser.c" +#line 3015 "util/configparser.c" break; case 305: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ @@ -3018,7 +3021,7 @@ yyreduce: free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3022 "util/configparser.c" +#line 3025 "util/configparser.c" break; case 306: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ @@ -3030,7 +3033,7 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" +#line 3037 "util/configparser.c" break; case 307: /* rpzstart: VAR_RPZ */ @@ -3052,7 +3055,7 @@ yyreduce: yyerror("out of memory"); } } -#line 3056 "util/configparser.c" +#line 3059 "util/configparser.c" break; case 322: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ @@ -3064,7 +3067,7 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3068 "util/configparser.c" +#line 3071 "util/configparser.c" break; case 323: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ @@ -3076,7 +3079,7 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3083 "util/configparser.c" break; case 324: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ @@ -3090,7 +3093,7 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3094 "util/configparser.c" +#line 3097 "util/configparser.c" break; case 325: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ @@ -3102,7 +3105,7 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3106 "util/configparser.c" +#line 3109 "util/configparser.c" break; case 326: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ @@ -3114,7 +3117,7 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3118 "util/configparser.c" +#line 3121 "util/configparser.c" break; case 327: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ @@ -3126,7 +3129,7 @@ yyreduce: else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3130 "util/configparser.c" +#line 3133 "util/configparser.c" break; case 328: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ @@ -3138,7 +3141,7 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3142 "util/configparser.c" +#line 3145 "util/configparser.c" break; case 329: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ @@ -3152,7 +3155,7 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" +#line 3159 "util/configparser.c" break; case 330: /* server_port: VAR_PORT STRING_ARG */ @@ -3164,7 +3167,7 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3168 "util/configparser.c" +#line 3171 "util/configparser.c" break; case 331: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ @@ -3179,7 +3182,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3183 "util/configparser.c" +#line 3186 "util/configparser.c" break; case 332: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ @@ -3195,7 +3198,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3199 "util/configparser.c" +#line 3202 "util/configparser.c" break; case 333: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ @@ -3213,7 +3216,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3217 "util/configparser.c" +#line 3220 "util/configparser.c" break; case 334: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ @@ -3227,7 +3230,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3231 "util/configparser.c" +#line 3234 "util/configparser.c" break; case 335: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ @@ -3247,7 +3250,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3251 "util/configparser.c" +#line 3254 "util/configparser.c" break; case 336: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ @@ -3267,7 +3270,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3271 "util/configparser.c" +#line 3274 "util/configparser.c" break; case 337: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ @@ -3287,7 +3290,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3291 "util/configparser.c" +#line 3294 "util/configparser.c" break; case 338: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ @@ -3307,7 +3310,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3311 "util/configparser.c" +#line 3314 "util/configparser.c" break; case 339: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ @@ -3325,7 +3328,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3332 "util/configparser.c" break; case 340: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ @@ -3343,7 +3346,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3347 "util/configparser.c" +#line 3350 "util/configparser.c" break; case 341: /* server_interface: VAR_INTERFACE STRING_ARG */ @@ -3359,7 +3362,7 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3363 "util/configparser.c" +#line 3366 "util/configparser.c" break; case 342: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ @@ -3377,7 +3380,7 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3381 "util/configparser.c" +#line 3384 "util/configparser.c" break; case 343: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ @@ -3389,7 +3392,7 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3396 "util/configparser.c" break; case 344: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ @@ -3401,7 +3404,7 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3405 "util/configparser.c" +#line 3408 "util/configparser.c" break; case 345: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ @@ -3413,7 +3416,7 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3417 "util/configparser.c" +#line 3420 "util/configparser.c" break; case 346: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ @@ -3425,7 +3428,7 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3429 "util/configparser.c" +#line 3432 "util/configparser.c" break; case 347: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ @@ -3437,7 +3440,7 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3444 "util/configparser.c" break; case 348: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ @@ -3449,7 +3452,7 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3456 "util/configparser.c" break; case 349: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ @@ -3459,7 +3462,7 @@ yyreduce: free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3463 "util/configparser.c" +#line 3466 "util/configparser.c" break; case 350: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ @@ -3471,7 +3474,7 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3475 "util/configparser.c" +#line 3478 "util/configparser.c" break; case 351: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ @@ -3483,7 +3486,7 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3487 "util/configparser.c" +#line 3490 "util/configparser.c" break; case 352: /* server_do_udp: VAR_DO_UDP STRING_ARG */ @@ -3495,7 +3498,7 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3502 "util/configparser.c" break; case 353: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ @@ -3507,7 +3510,7 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3511 "util/configparser.c" +#line 3514 "util/configparser.c" break; case 354: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ @@ -3519,7 +3522,7 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3523 "util/configparser.c" +#line 3526 "util/configparser.c" break; case 355: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ @@ -3531,7 +3534,7 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3535 "util/configparser.c" +#line 3538 "util/configparser.c" break; case 356: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ @@ -3543,7 +3546,7 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3547 "util/configparser.c" +#line 3550 "util/configparser.c" break; case 357: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ @@ -3555,7 +3558,7 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3562 "util/configparser.c" break; case 358: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ @@ -3571,7 +3574,7 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3575 "util/configparser.c" +#line 3578 "util/configparser.c" break; case 359: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ @@ -3585,7 +3588,7 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3589 "util/configparser.c" +#line 3592 "util/configparser.c" break; case 360: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ @@ -3599,7 +3602,7 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3603 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 361: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ @@ -3613,7 +3616,7 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3617 "util/configparser.c" +#line 3620 "util/configparser.c" break; case 362: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ @@ -3625,7 +3628,7 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3629 "util/configparser.c" +#line 3632 "util/configparser.c" break; case 363: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ @@ -3641,7 +3644,7 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3645 "util/configparser.c" +#line 3648 "util/configparser.c" break; case 364: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ @@ -3653,7 +3656,7 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3657 "util/configparser.c" +#line 3660 "util/configparser.c" break; case 365: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ @@ -3665,7 +3668,7 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3669 "util/configparser.c" +#line 3672 "util/configparser.c" break; case 366: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ @@ -3677,7 +3680,7 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3681 "util/configparser.c" +#line 3684 "util/configparser.c" break; case 367: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ @@ -3687,7 +3690,7 @@ yyreduce: free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3691 "util/configparser.c" +#line 3694 "util/configparser.c" break; case 368: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ @@ -3697,7 +3700,7 @@ yyreduce: free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3701 "util/configparser.c" +#line 3704 "util/configparser.c" break; case 369: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ @@ -3709,7 +3712,7 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3713 "util/configparser.c" +#line 3716 "util/configparser.c" break; case 370: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ @@ -3719,7 +3722,7 @@ yyreduce: free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3723 "util/configparser.c" +#line 3726 "util/configparser.c" break; case 371: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ @@ -3731,7 +3734,7 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3735 "util/configparser.c" +#line 3738 "util/configparser.c" break; case 372: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ @@ -3742,7 +3745,7 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3746 "util/configparser.c" +#line 3749 "util/configparser.c" break; case 373: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ @@ -3752,7 +3755,7 @@ yyreduce: free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3756 "util/configparser.c" +#line 3759 "util/configparser.c" break; case 374: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ @@ -3762,7 +3765,7 @@ yyreduce: free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3766 "util/configparser.c" +#line 3769 "util/configparser.c" break; case 375: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ @@ -3773,7 +3776,7 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3777 "util/configparser.c" +#line 3780 "util/configparser.c" break; case 376: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ @@ -3785,7 +3788,7 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3789 "util/configparser.c" +#line 3792 "util/configparser.c" break; case 377: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ @@ -3797,7 +3800,7 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3801 "util/configparser.c" +#line 3804 "util/configparser.c" break; case 378: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ @@ -3817,7 +3820,7 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3821 "util/configparser.c" +#line 3824 "util/configparser.c" break; case 379: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ @@ -3829,7 +3832,7 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3833 "util/configparser.c" +#line 3836 "util/configparser.c" break; case 380: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ @@ -3841,7 +3844,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3845 "util/configparser.c" +#line 3848 "util/configparser.c" break; case 381: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ @@ -3853,7 +3856,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3857 "util/configparser.c" +#line 3860 "util/configparser.c" break; case 382: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ @@ -3865,7 +3868,7 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3869 "util/configparser.c" +#line 3872 "util/configparser.c" break; case 383: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ @@ -3877,7 +3880,7 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3881 "util/configparser.c" +#line 3884 "util/configparser.c" break; case 384: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ @@ -3889,7 +3892,7 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3893 "util/configparser.c" +#line 3896 "util/configparser.c" break; case 385: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ @@ -3901,7 +3904,7 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3905 "util/configparser.c" +#line 3908 "util/configparser.c" break; case 386: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ @@ -3918,7 +3921,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3922 "util/configparser.c" +#line 3925 "util/configparser.c" break; case 387: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ @@ -3930,7 +3933,7 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3934 "util/configparser.c" +#line 3937 "util/configparser.c" break; case 388: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ @@ -3942,7 +3945,7 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3946 "util/configparser.c" +#line 3949 "util/configparser.c" break; case 389: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ @@ -3954,7 +3957,7 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3958 "util/configparser.c" +#line 3961 "util/configparser.c" break; case 390: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ @@ -3966,7 +3969,7 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3970 "util/configparser.c" +#line 3973 "util/configparser.c" break; case 391: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ @@ -3978,7 +3981,7 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3982 "util/configparser.c" +#line 3985 "util/configparser.c" break; case 392: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ @@ -3990,7 +3993,7 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3994 "util/configparser.c" +#line 3997 "util/configparser.c" break; case 393: /* server_chroot: VAR_CHROOT STRING_ARG */ @@ -4000,7 +4003,7 @@ yyreduce: free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 4004 "util/configparser.c" +#line 4007 "util/configparser.c" break; case 394: /* server_username: VAR_USERNAME STRING_ARG */ @@ -4010,7 +4013,7 @@ yyreduce: free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 4014 "util/configparser.c" +#line 4017 "util/configparser.c" break; case 395: /* server_directory: VAR_DIRECTORY STRING_ARG */ @@ -4039,7 +4042,7 @@ yyreduce: } } } -#line 4043 "util/configparser.c" +#line 4046 "util/configparser.c" break; case 396: /* server_logfile: VAR_LOGFILE STRING_ARG */ @@ -4050,7 +4053,7 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 4054 "util/configparser.c" +#line 4057 "util/configparser.c" break; case 397: /* server_pidfile: VAR_PIDFILE STRING_ARG */ @@ -4060,7 +4063,7 @@ yyreduce: free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4064 "util/configparser.c" +#line 4067 "util/configparser.c" break; case 398: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ @@ -4070,7 +4073,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4074 "util/configparser.c" +#line 4077 "util/configparser.c" break; case 399: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ @@ -4080,7 +4083,7 @@ yyreduce: log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4084 "util/configparser.c" +#line 4087 "util/configparser.c" break; case 400: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ @@ -4090,7 +4093,7 @@ yyreduce: log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4094 "util/configparser.c" +#line 4097 "util/configparser.c" break; case 401: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ @@ -4101,7 +4104,7 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4105 "util/configparser.c" +#line 4108 "util/configparser.c" break; case 402: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ @@ -4112,7 +4115,7 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4116 "util/configparser.c" +#line 4119 "util/configparser.c" break; case 403: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ @@ -4123,7 +4126,7 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4127 "util/configparser.c" +#line 4130 "util/configparser.c" break; case 404: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ @@ -4133,7 +4136,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4137 "util/configparser.c" +#line 4140 "util/configparser.c" break; case 405: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ @@ -4147,7 +4150,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4151 "util/configparser.c" +#line 4154 "util/configparser.c" break; case 406: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ @@ -4161,7 +4164,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4165 "util/configparser.c" +#line 4168 "util/configparser.c" break; case 407: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ @@ -4171,7 +4174,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4175 "util/configparser.c" +#line 4178 "util/configparser.c" break; case 408: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ @@ -4183,7 +4186,7 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4187 "util/configparser.c" +#line 4190 "util/configparser.c" break; case 409: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ @@ -4195,7 +4198,7 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4199 "util/configparser.c" +#line 4202 "util/configparser.c" break; case 410: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ @@ -4207,7 +4210,7 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4211 "util/configparser.c" +#line 4214 "util/configparser.c" break; case 411: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ @@ -4219,7 +4222,7 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4223 "util/configparser.c" +#line 4226 "util/configparser.c" break; case 412: /* server_identity: VAR_IDENTITY STRING_ARG */ @@ -4229,7 +4232,7 @@ yyreduce: free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4233 "util/configparser.c" +#line 4236 "util/configparser.c" break; case 413: /* server_version: VAR_VERSION STRING_ARG */ @@ -4239,7 +4242,7 @@ yyreduce: free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4243 "util/configparser.c" +#line 4246 "util/configparser.c" break; case 414: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ @@ -4249,7 +4252,7 @@ yyreduce: free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4253 "util/configparser.c" +#line 4256 "util/configparser.c" break; case 415: /* server_nsid: VAR_NSID STRING_ARG */ @@ -4268,7 +4271,7 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4272 "util/configparser.c" +#line 4275 "util/configparser.c" break; case 416: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ @@ -4279,7 +4282,7 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4283 "util/configparser.c" +#line 4286 "util/configparser.c" break; case 417: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ @@ -4290,7 +4293,7 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4294 "util/configparser.c" +#line 4297 "util/configparser.c" break; case 418: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ @@ -4303,7 +4306,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4307 "util/configparser.c" +#line 4310 "util/configparser.c" break; case 419: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ @@ -4316,7 +4319,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" +#line 4323 "util/configparser.c" break; case 420: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ @@ -4329,7 +4332,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 4336 "util/configparser.c" break; case 421: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ @@ -4346,7 +4349,7 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4350 "util/configparser.c" +#line 4353 "util/configparser.c" break; case 422: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ @@ -4357,7 +4360,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4364 "util/configparser.c" break; case 423: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ @@ -4373,7 +4376,7 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4377 "util/configparser.c" +#line 4380 "util/configparser.c" break; case 424: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ @@ -4387,7 +4390,7 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4391 "util/configparser.c" +#line 4394 "util/configparser.c" break; case 425: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ @@ -4398,7 +4401,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" +#line 4405 "util/configparser.c" break; case 426: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ @@ -4414,7 +4417,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4418 "util/configparser.c" +#line 4421 "util/configparser.c" break; case 427: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ @@ -4426,7 +4429,7 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4430 "util/configparser.c" +#line 4433 "util/configparser.c" break; case 428: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ @@ -4438,7 +4441,7 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4442 "util/configparser.c" +#line 4445 "util/configparser.c" break; case 429: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ @@ -4450,7 +4453,7 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4454 "util/configparser.c" +#line 4457 "util/configparser.c" break; case 430: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ @@ -4462,7 +4465,7 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4466 "util/configparser.c" +#line 4469 "util/configparser.c" break; case 431: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ @@ -4475,7 +4478,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4479 "util/configparser.c" +#line 4482 "util/configparser.c" break; case 432: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ @@ -4488,7 +4491,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4492 "util/configparser.c" +#line 4495 "util/configparser.c" break; case 433: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ @@ -4499,7 +4502,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4503 "util/configparser.c" +#line 4506 "util/configparser.c" break; case 434: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ @@ -4515,7 +4518,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4519 "util/configparser.c" +#line 4522 "util/configparser.c" break; case 435: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ @@ -4527,7 +4530,7 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4531 "util/configparser.c" +#line 4534 "util/configparser.c" break; case 436: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ @@ -4538,7 +4541,7 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4545 "util/configparser.c" break; case 437: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ @@ -4550,7 +4553,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" +#line 4557 "util/configparser.c" break; case 438: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ @@ -4561,7 +4564,7 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4565 "util/configparser.c" +#line 4568 "util/configparser.c" break; case 439: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ @@ -4577,7 +4580,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4581 "util/configparser.c" +#line 4584 "util/configparser.c" break; case 440: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ @@ -4589,7 +4592,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 4596 "util/configparser.c" break; case 441: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ @@ -4601,7 +4604,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4605 "util/configparser.c" +#line 4608 "util/configparser.c" break; case 442: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ @@ -4614,7 +4617,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 443: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ @@ -4624,7 +4627,7 @@ yyreduce: free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4628 "util/configparser.c" +#line 4631 "util/configparser.c" break; case 444: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ @@ -4637,7 +4640,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4641 "util/configparser.c" +#line 4644 "util/configparser.c" break; case 445: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ @@ -4650,7 +4653,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 446: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ @@ -4663,7 +4666,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4667 "util/configparser.c" +#line 4670 "util/configparser.c" break; case 447: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ @@ -4676,7 +4679,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4680 "util/configparser.c" +#line 4683 "util/configparser.c" break; case 448: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ @@ -4689,7 +4692,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4693 "util/configparser.c" +#line 4696 "util/configparser.c" break; case 449: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ @@ -4702,7 +4705,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4706 "util/configparser.c" +#line 4709 "util/configparser.c" break; case 450: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ @@ -4715,7 +4718,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4719 "util/configparser.c" +#line 4722 "util/configparser.c" break; case 451: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG */ @@ -4728,7 +4731,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4735 "util/configparser.c" break; case 452: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ @@ -4741,7 +4744,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4745 "util/configparser.c" +#line 4748 "util/configparser.c" break; case 453: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ @@ -4751,7 +4754,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4755 "util/configparser.c" +#line 4758 "util/configparser.c" break; case 454: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ @@ -4761,7 +4764,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4765 "util/configparser.c" +#line 4768 "util/configparser.c" break; case 455: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ @@ -4771,7 +4774,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4775 "util/configparser.c" +#line 4778 "util/configparser.c" break; case 456: /* server_prefetch: VAR_PREFETCH STRING_ARG */ @@ -4783,7 +4786,7 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4787 "util/configparser.c" +#line 4790 "util/configparser.c" break; case 457: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ @@ -4795,7 +4798,7 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4799 "util/configparser.c" +#line 4802 "util/configparser.c" break; case 458: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ @@ -4807,7 +4810,7 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4811 "util/configparser.c" +#line 4814 "util/configparser.c" break; case 459: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ @@ -4819,7 +4822,7 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4823 "util/configparser.c" +#line 4826 "util/configparser.c" break; case 460: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ @@ -4829,7 +4832,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4833 "util/configparser.c" +#line 4836 "util/configparser.c" break; case 461: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ @@ -4842,7 +4845,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4846 "util/configparser.c" +#line 4849 "util/configparser.c" break; case 462: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ @@ -4853,7 +4856,7 @@ yyreduce: if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4857 "util/configparser.c" +#line 4860 "util/configparser.c" break; case 463: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ @@ -4865,7 +4868,7 @@ yyreduce: &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4869 "util/configparser.c" +#line 4872 "util/configparser.c" break; case 464: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ @@ -4875,7 +4878,7 @@ yyreduce: free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4879 "util/configparser.c" +#line 4882 "util/configparser.c" break; case 465: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ @@ -4896,7 +4899,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4900 "util/configparser.c" +#line 4903 "util/configparser.c" break; case 466: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ @@ -4912,7 +4915,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4916 "util/configparser.c" +#line 4919 "util/configparser.c" break; case 467: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ @@ -4928,7 +4931,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4935 "util/configparser.c" break; case 468: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ @@ -4944,7 +4947,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" +#line 4951 "util/configparser.c" break; case 469: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ @@ -4956,7 +4959,7 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4960 "util/configparser.c" +#line 4963 "util/configparser.c" break; case 470: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ @@ -4968,7 +4971,7 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4972 "util/configparser.c" +#line 4975 "util/configparser.c" break; case 471: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ @@ -4980,7 +4983,7 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4984 "util/configparser.c" +#line 4987 "util/configparser.c" break; case 472: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ @@ -4992,7 +4995,7 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4996 "util/configparser.c" +#line 4999 "util/configparser.c" break; case 473: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ @@ -5005,7 +5008,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5009 "util/configparser.c" +#line 5012 "util/configparser.c" break; case 474: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ @@ -5018,7 +5021,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5022 "util/configparser.c" +#line 5025 "util/configparser.c" break; case 475: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ @@ -5032,7 +5035,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5036 "util/configparser.c" +#line 5039 "util/configparser.c" break; case 476: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ @@ -5044,7 +5047,7 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5048 "util/configparser.c" +#line 5051 "util/configparser.c" break; case 477: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ @@ -5056,7 +5059,7 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5060 "util/configparser.c" +#line 5063 "util/configparser.c" break; case 478: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ @@ -5068,7 +5071,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5072 "util/configparser.c" +#line 5075 "util/configparser.c" break; case 479: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ @@ -5080,7 +5083,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5084 "util/configparser.c" +#line 5087 "util/configparser.c" break; case 480: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ @@ -5092,7 +5095,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5096 "util/configparser.c" +#line 5099 "util/configparser.c" break; case 481: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ @@ -5104,7 +5107,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5108 "util/configparser.c" +#line 5111 "util/configparser.c" break; case 482: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ @@ -5116,7 +5119,7 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5120 "util/configparser.c" +#line 5123 "util/configparser.c" break; case 483: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ @@ -5128,7 +5131,7 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5132 "util/configparser.c" +#line 5135 "util/configparser.c" break; case 484: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ @@ -5144,7 +5147,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5148 "util/configparser.c" +#line 5151 "util/configparser.c" break; case 485: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ @@ -5160,7 +5163,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5164 "util/configparser.c" +#line 5167 "util/configparser.c" break; case 486: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ @@ -5172,7 +5175,7 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5176 "util/configparser.c" +#line 5179 "util/configparser.c" break; case 487: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ @@ -5182,7 +5185,7 @@ yyreduce: free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5186 "util/configparser.c" +#line 5189 "util/configparser.c" break; case 488: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ @@ -5194,7 +5197,7 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5198 "util/configparser.c" +#line 5201 "util/configparser.c" break; case 489: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ @@ -5206,7 +5209,7 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5210 "util/configparser.c" +#line 5213 "util/configparser.c" break; case 490: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ @@ -5218,7 +5221,7 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5222 "util/configparser.c" +#line 5225 "util/configparser.c" break; case 491: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ @@ -5230,7 +5233,7 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5234 "util/configparser.c" +#line 5237 "util/configparser.c" break; case 492: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ @@ -5243,7 +5246,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5247 "util/configparser.c" +#line 5250 "util/configparser.c" break; case 493: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ @@ -5254,7 +5257,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5261 "util/configparser.c" break; case 494: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ @@ -5270,7 +5273,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5274 "util/configparser.c" +#line 5277 "util/configparser.c" break; case 495: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ @@ -5281,7 +5284,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5285 "util/configparser.c" +#line 5288 "util/configparser.c" break; case 496: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ @@ -5340,7 +5343,7 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5344 "util/configparser.c" +#line 5347 "util/configparser.c" break; case 497: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ @@ -5350,7 +5353,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5354 "util/configparser.c" +#line 5357 "util/configparser.c" break; case 498: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ @@ -5368,7 +5371,7 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5372 "util/configparser.c" +#line 5375 "util/configparser.c" break; case 499: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ @@ -5381,7 +5384,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 5388 "util/configparser.c" break; case 500: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ @@ -5394,7 +5397,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5398 "util/configparser.c" +#line 5401 "util/configparser.c" break; case 501: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ @@ -5404,7 +5407,7 @@ yyreduce: cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5408 "util/configparser.c" +#line 5411 "util/configparser.c" break; case 502: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ @@ -5414,7 +5417,7 @@ yyreduce: cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5418 "util/configparser.c" +#line 5421 "util/configparser.c" break; case 503: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ @@ -5424,7 +5427,7 @@ yyreduce: free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5428 "util/configparser.c" +#line 5431 "util/configparser.c" break; case 504: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ @@ -5436,7 +5439,7 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5440 "util/configparser.c" +#line 5443 "util/configparser.c" break; case 505: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ @@ -5447,7 +5450,7 @@ yyreduce: (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5451 "util/configparser.c" +#line 5454 "util/configparser.c" break; case 506: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ @@ -5464,7 +5467,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5468 "util/configparser.c" +#line 5471 "util/configparser.c" break; case 507: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ @@ -5488,7 +5491,7 @@ yyreduce: } } } -#line 5492 "util/configparser.c" +#line 5495 "util/configparser.c" break; case 508: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ @@ -5512,7 +5515,7 @@ yyreduce: } } } -#line 5516 "util/configparser.c" +#line 5519 "util/configparser.c" break; case 509: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ @@ -5527,7 +5530,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5531 "util/configparser.c" +#line 5534 "util/configparser.c" break; case 510: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ @@ -5542,7 +5545,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5546 "util/configparser.c" +#line 5549 "util/configparser.c" break; case 511: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ @@ -5557,7 +5560,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5561 "util/configparser.c" +#line 5564 "util/configparser.c" break; case 512: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ @@ -5569,7 +5572,7 @@ yyreduce: yyerror("out of memory"); } } -#line 5573 "util/configparser.c" +#line 5576 "util/configparser.c" break; case 513: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ @@ -5593,7 +5596,7 @@ yyreduce: } } } -#line 5597 "util/configparser.c" +#line 5600 "util/configparser.c" break; case 514: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ @@ -5608,7 +5611,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5612 "util/configparser.c" +#line 5615 "util/configparser.c" break; case 515: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ @@ -5623,7 +5626,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5627 "util/configparser.c" +#line 5630 "util/configparser.c" break; case 516: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ @@ -5635,7 +5638,7 @@ yyreduce: yyerror("out of memory"); } } -#line 5639 "util/configparser.c" +#line 5642 "util/configparser.c" break; case 517: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ @@ -5659,7 +5662,7 @@ yyreduce: } } } -#line 5663 "util/configparser.c" +#line 5666 "util/configparser.c" break; case 518: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ @@ -5671,7 +5674,7 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5675 "util/configparser.c" +#line 5678 "util/configparser.c" break; case 519: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ @@ -5683,7 +5686,7 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5687 "util/configparser.c" +#line 5690 "util/configparser.c" break; case 520: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ @@ -5694,7 +5697,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5698 "util/configparser.c" +#line 5701 "util/configparser.c" break; case 521: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ @@ -5705,7 +5708,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5709 "util/configparser.c" +#line 5712 "util/configparser.c" break; case 522: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ @@ -5721,7 +5724,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5725 "util/configparser.c" +#line 5728 "util/configparser.c" break; case 523: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ @@ -5737,7 +5740,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5741 "util/configparser.c" +#line 5744 "util/configparser.c" break; case 524: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ @@ -5755,7 +5758,7 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5759 "util/configparser.c" +#line 5762 "util/configparser.c" break; case 525: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ @@ -5773,7 +5776,7 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5777 "util/configparser.c" +#line 5780 "util/configparser.c" break; case 526: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ @@ -5785,7 +5788,7 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5789 "util/configparser.c" +#line 5792 "util/configparser.c" break; case 527: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ @@ -5797,7 +5800,7 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5801 "util/configparser.c" +#line 5804 "util/configparser.c" break; case 528: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ @@ -5810,7 +5813,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5814 "util/configparser.c" +#line 5817 "util/configparser.c" break; case 529: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ @@ -5823,7 +5826,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5827 "util/configparser.c" +#line 5830 "util/configparser.c" break; case 530: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ @@ -5835,7 +5838,7 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5839 "util/configparser.c" +#line 5842 "util/configparser.c" break; case 531: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ @@ -5847,7 +5850,7 @@ yyreduce: else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5851 "util/configparser.c" +#line 5854 "util/configparser.c" break; case 532: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ @@ -5859,7 +5862,7 @@ yyreduce: else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5863 "util/configparser.c" +#line 5866 "util/configparser.c" break; case 533: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ @@ -5868,7 +5871,7 @@ yyreduce: OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" +#line 5875 "util/configparser.c" break; case 534: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ @@ -5880,7 +5883,7 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5884 "util/configparser.c" +#line 5887 "util/configparser.c" break; case 535: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ @@ -5892,7 +5895,7 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5896 "util/configparser.c" +#line 5899 "util/configparser.c" break; case 536: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ @@ -5905,7 +5908,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5909 "util/configparser.c" +#line 5912 "util/configparser.c" break; case 537: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ @@ -5918,7 +5921,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5922 "util/configparser.c" +#line 5925 "util/configparser.c" break; case 538: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ @@ -5931,7 +5934,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5935 "util/configparser.c" +#line 5938 "util/configparser.c" break; case 539: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ @@ -5943,7 +5946,7 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5947 "util/configparser.c" +#line 5950 "util/configparser.c" break; case 540: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ @@ -5956,7 +5959,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5963 "util/configparser.c" break; case 541: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ @@ -5968,7 +5971,7 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 5975 "util/configparser.c" break; case 542: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ @@ -5984,7 +5987,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5988 "util/configparser.c" +#line 5991 "util/configparser.c" break; case 543: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ @@ -6000,7 +6003,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6004 "util/configparser.c" +#line 6007 "util/configparser.c" break; case 544: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ @@ -6015,7 +6018,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6019 "util/configparser.c" +#line 6022 "util/configparser.c" break; case 545: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ @@ -6032,7 +6035,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6036 "util/configparser.c" +#line 6039 "util/configparser.c" break; case 546: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ @@ -6047,7 +6050,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6051 "util/configparser.c" +#line 6054 "util/configparser.c" break; case 547: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ @@ -6064,7 +6067,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6068 "util/configparser.c" +#line 6071 "util/configparser.c" break; case 548: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ @@ -6076,7 +6079,7 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6080 "util/configparser.c" +#line 6083 "util/configparser.c" break; case 549: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ @@ -6090,7 +6093,7 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6094 "util/configparser.c" +#line 6097 "util/configparser.c" break; case 550: /* server_ede: VAR_EDE STRING_ARG */ @@ -6102,7 +6105,7 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6106 "util/configparser.c" +#line 6109 "util/configparser.c" break; case 551: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ @@ -6112,7 +6115,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6116 "util/configparser.c" +#line 6119 "util/configparser.c" break; case 552: /* stub_name: VAR_NAME STRING_ARG */ @@ -6125,7 +6128,7 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6129 "util/configparser.c" +#line 6132 "util/configparser.c" break; case 553: /* stub_host: VAR_STUB_HOST STRING_ARG */ @@ -6135,7 +6138,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6139 "util/configparser.c" +#line 6142 "util/configparser.c" break; case 554: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ @@ -6145,7 +6148,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6149 "util/configparser.c" +#line 6152 "util/configparser.c" break; case 555: /* stub_first: VAR_STUB_FIRST STRING_ARG */ @@ -6157,7 +6160,7 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6161 "util/configparser.c" +#line 6164 "util/configparser.c" break; case 556: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ @@ -6169,7 +6172,7 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6173 "util/configparser.c" +#line 6176 "util/configparser.c" break; case 557: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ @@ -6182,7 +6185,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6186 "util/configparser.c" +#line 6189 "util/configparser.c" break; case 558: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ @@ -6195,7 +6198,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6199 "util/configparser.c" +#line 6202 "util/configparser.c" break; case 559: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ @@ -6208,7 +6211,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6212 "util/configparser.c" +#line 6215 "util/configparser.c" break; case 560: /* forward_name: VAR_NAME STRING_ARG */ @@ -6221,7 +6224,7 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6225 "util/configparser.c" +#line 6228 "util/configparser.c" break; case 561: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ @@ -6231,7 +6234,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6235 "util/configparser.c" +#line 6238 "util/configparser.c" break; case 562: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ @@ -6241,7 +6244,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6245 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 563: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ @@ -6253,7 +6256,7 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6257 "util/configparser.c" +#line 6260 "util/configparser.c" break; case 564: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ @@ -6265,7 +6268,7 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6269 "util/configparser.c" +#line 6272 "util/configparser.c" break; case 565: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ @@ -6278,7 +6281,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6282 "util/configparser.c" +#line 6285 "util/configparser.c" break; case 566: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ @@ -6291,7 +6294,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6295 "util/configparser.c" +#line 6298 "util/configparser.c" break; case 567: /* auth_name: VAR_NAME STRING_ARG */ @@ -6304,7 +6307,7 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6308 "util/configparser.c" +#line 6311 "util/configparser.c" break; case 568: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ @@ -6314,7 +6317,7 @@ yyreduce: free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6318 "util/configparser.c" +#line 6321 "util/configparser.c" break; case 569: /* auth_master: VAR_MASTER STRING_ARG */ @@ -6324,7 +6327,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6328 "util/configparser.c" +#line 6331 "util/configparser.c" break; case 570: /* auth_url: VAR_URL STRING_ARG */ @@ -6334,7 +6337,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6338 "util/configparser.c" +#line 6341 "util/configparser.c" break; case 571: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ @@ -6345,7 +6348,7 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 6349 "util/configparser.c" +#line 6352 "util/configparser.c" break; case 572: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ @@ -6358,7 +6361,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6362 "util/configparser.c" +#line 6365 "util/configparser.c" break; case 573: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ @@ -6371,7 +6374,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6375 "util/configparser.c" +#line 6378 "util/configparser.c" break; case 574: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ @@ -6384,7 +6387,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6388 "util/configparser.c" +#line 6391 "util/configparser.c" break; case 575: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ @@ -6397,7 +6400,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6401 "util/configparser.c" +#line 6404 "util/configparser.c" break; case 576: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ @@ -6410,7 +6413,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6417 "util/configparser.c" break; case 577: /* view_name: VAR_NAME STRING_ARG */ @@ -6423,7 +6426,7 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6427 "util/configparser.c" +#line 6430 "util/configparser.c" break; case 578: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ @@ -6482,7 +6485,7 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6486 "util/configparser.c" +#line 6489 "util/configparser.c" break; case 579: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ @@ -6495,7 +6498,7 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6499 "util/configparser.c" +#line 6502 "util/configparser.c" break; case 580: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ @@ -6506,7 +6509,7 @@ yyreduce: &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6510 "util/configparser.c" +#line 6513 "util/configparser.c" break; case 581: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ @@ -6517,7 +6520,7 @@ yyreduce: fatal_exit("out of memory adding local-data"); } } -#line 6521 "util/configparser.c" +#line 6524 "util/configparser.c" break; case 582: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ @@ -6535,7 +6538,7 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6539 "util/configparser.c" +#line 6542 "util/configparser.c" break; case 583: /* view_first: VAR_VIEW_FIRST STRING_ARG */ @@ -6547,7 +6550,7 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6551 "util/configparser.c" +#line 6554 "util/configparser.c" break; case 584: /* rcstart: VAR_REMOTE_CONTROL */ @@ -6556,7 +6559,7 @@ yyreduce: OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6560 "util/configparser.c" +#line 6563 "util/configparser.c" break; case 595: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ @@ -6569,7 +6572,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6573 "util/configparser.c" +#line 6576 "util/configparser.c" break; case 596: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ @@ -6581,7 +6584,7 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6585 "util/configparser.c" +#line 6588 "util/configparser.c" break; case 597: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ @@ -6591,7 +6594,7 @@ yyreduce: if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6595 "util/configparser.c" +#line 6598 "util/configparser.c" break; case 598: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ @@ -6601,7 +6604,7 @@ yyreduce: cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6605 "util/configparser.c" +#line 6608 "util/configparser.c" break; case 599: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ @@ -6611,7 +6614,7 @@ yyreduce: free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6615 "util/configparser.c" +#line 6618 "util/configparser.c" break; case 600: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ @@ -6621,7 +6624,7 @@ yyreduce: free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6625 "util/configparser.c" +#line 6628 "util/configparser.c" break; case 601: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ @@ -6631,7 +6634,7 @@ yyreduce: free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6635 "util/configparser.c" +#line 6638 "util/configparser.c" break; case 602: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ @@ -6641,7 +6644,7 @@ yyreduce: free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6645 "util/configparser.c" +#line 6648 "util/configparser.c" break; case 603: /* dtstart: VAR_DNSTAP */ @@ -6650,7 +6653,7 @@ yyreduce: OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6654 "util/configparser.c" +#line 6657 "util/configparser.c" break; case 625: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ @@ -6662,7 +6665,7 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6666 "util/configparser.c" +#line 6669 "util/configparser.c" break; case 626: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ @@ -6675,7 +6678,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6679 "util/configparser.c" +#line 6682 "util/configparser.c" break; case 627: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ @@ -6685,7 +6688,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6689 "util/configparser.c" +#line 6692 "util/configparser.c" break; case 628: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ @@ -6695,7 +6698,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6699 "util/configparser.c" +#line 6702 "util/configparser.c" break; case 629: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ @@ -6707,7 +6710,7 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6711 "util/configparser.c" +#line 6714 "util/configparser.c" break; case 630: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ @@ -6717,7 +6720,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6721 "util/configparser.c" +#line 6724 "util/configparser.c" break; case 631: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ @@ -6727,7 +6730,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6731 "util/configparser.c" +#line 6734 "util/configparser.c" break; case 632: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ @@ -6737,7 +6740,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6741 "util/configparser.c" +#line 6744 "util/configparser.c" break; case 633: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ @@ -6747,7 +6750,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6751 "util/configparser.c" +#line 6754 "util/configparser.c" break; case 634: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ @@ -6759,7 +6762,7 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6763 "util/configparser.c" +#line 6766 "util/configparser.c" break; case 635: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ @@ -6771,7 +6774,7 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6775 "util/configparser.c" +#line 6778 "util/configparser.c" break; case 636: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ @@ -6781,7 +6784,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6785 "util/configparser.c" +#line 6788 "util/configparser.c" break; case 637: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ @@ -6791,7 +6794,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6795 "util/configparser.c" +#line 6798 "util/configparser.c" break; case 638: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ @@ -6804,7 +6807,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6808 "util/configparser.c" +#line 6811 "util/configparser.c" break; case 639: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ @@ -6817,7 +6820,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6821 "util/configparser.c" +#line 6824 "util/configparser.c" break; case 640: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ @@ -6830,7 +6833,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6834 "util/configparser.c" +#line 6837 "util/configparser.c" break; case 641: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ @@ -6843,7 +6846,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6847 "util/configparser.c" +#line 6850 "util/configparser.c" break; case 642: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ @@ -6856,7 +6859,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6860 "util/configparser.c" +#line 6863 "util/configparser.c" break; case 643: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ @@ -6869,7 +6872,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6873 "util/configparser.c" +#line 6876 "util/configparser.c" break; case 644: /* pythonstart: VAR_PYTHON */ @@ -6878,7 +6881,7 @@ yyreduce: OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6882 "util/configparser.c" +#line 6885 "util/configparser.c" break; case 648: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ @@ -6888,7 +6891,7 @@ yyreduce: if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6892 "util/configparser.c" +#line 6895 "util/configparser.c" break; case 649: /* dynlibstart: VAR_DYNLIB */ @@ -6897,7 +6900,7 @@ yyreduce: OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6901 "util/configparser.c" +#line 6904 "util/configparser.c" break; case 653: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ @@ -6907,7 +6910,7 @@ yyreduce: if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6911 "util/configparser.c" +#line 6914 "util/configparser.c" break; case 654: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ @@ -6920,7 +6923,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6924 "util/configparser.c" +#line 6927 "util/configparser.c" break; case 655: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ @@ -6930,7 +6933,7 @@ yyreduce: free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6934 "util/configparser.c" +#line 6937 "util/configparser.c" break; case 656: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ @@ -6942,7 +6945,7 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6946 "util/configparser.c" +#line 6949 "util/configparser.c" break; case 657: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ @@ -6953,7 +6956,7 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6957 "util/configparser.c" +#line 6960 "util/configparser.c" break; case 658: /* dnscstart: VAR_DNSCRYPT */ @@ -6962,7 +6965,7 @@ yyreduce: OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6966 "util/configparser.c" +#line 6969 "util/configparser.c" break; case 671: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ @@ -6974,7 +6977,7 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6978 "util/configparser.c" +#line 6981 "util/configparser.c" break; case 672: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ @@ -6986,7 +6989,7 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6990 "util/configparser.c" +#line 6993 "util/configparser.c" break; case 673: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ @@ -6996,7 +6999,7 @@ yyreduce: free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 7000 "util/configparser.c" +#line 7003 "util/configparser.c" break; case 674: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ @@ -7008,7 +7011,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 7012 "util/configparser.c" +#line 7015 "util/configparser.c" break; case 675: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ @@ -7018,7 +7021,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 7022 "util/configparser.c" +#line 7025 "util/configparser.c" break; case 676: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ @@ -7030,7 +7033,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 7034 "util/configparser.c" +#line 7037 "util/configparser.c" break; case 677: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ @@ -7041,7 +7044,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7045 "util/configparser.c" +#line 7048 "util/configparser.c" break; case 678: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ @@ -7057,7 +7060,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7061 "util/configparser.c" +#line 7064 "util/configparser.c" break; case 679: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ @@ -7068,7 +7071,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7072 "util/configparser.c" +#line 7075 "util/configparser.c" break; case 680: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ @@ -7084,7 +7087,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7088 "util/configparser.c" +#line 7091 "util/configparser.c" break; case 681: /* cachedbstart: VAR_CACHEDB */ @@ -7093,10 +7096,10 @@ yyreduce: OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 7097 "util/configparser.c" +#line 7100 "util/configparser.c" break; - case 690: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ + case 691: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ #line 3660 "./util/configparser.y" { #ifdef USE_CACHEDB @@ -7108,10 +7111,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7112 "util/configparser.c" +#line 7115 "util/configparser.c" break; - case 691: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ + case 692: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ #line 3672 "./util/configparser.y" { #ifdef USE_CACHEDB @@ -7123,10 +7126,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7127 "util/configparser.c" +#line 7130 "util/configparser.c" break; - case 692: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ + case 693: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ #line 3684 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7138,10 +7141,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7142 "util/configparser.c" +#line 7145 "util/configparser.c" break; - case 693: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ + case 694: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ #line 3696 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7156,11 +7159,26 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7160 "util/configparser.c" +#line 7163 "util/configparser.c" break; - case 694: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ + case 695: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG */ #line 3711 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->redis_server_path); + cfg_parser->cfg->redis_server_path = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 7178 "util/configparser.c" + break; + + case 696: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3723 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7172,11 +7190,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7176 "util/configparser.c" +#line 7194 "util/configparser.c" break; - case 695: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3724 "./util/configparser.y" + case 697: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3736 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7188,11 +7206,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7192 "util/configparser.c" +#line 7210 "util/configparser.c" break; - case 696: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3737 "./util/configparser.y" + case 698: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3749 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7202,20 +7220,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7206 "util/configparser.c" +#line 7224 "util/configparser.c" break; - case 697: /* ipsetstart: VAR_IPSET */ -#line 3748 "./util/configparser.y" + case 699: /* ipsetstart: VAR_IPSET */ +#line 3760 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7215 "util/configparser.c" +#line 7233 "util/configparser.c" break; - case 702: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3758 "./util/configparser.y" + case 704: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3770 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7229,11 +7247,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7233 "util/configparser.c" +#line 7251 "util/configparser.c" break; - case 703: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3773 "./util/configparser.y" + case 705: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3785 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7247,11 +7265,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7251 "util/configparser.c" +#line 7269 "util/configparser.c" break; -#line 7255 "util/configparser.c" +#line 7273 "util/configparser.c" default: break; } @@ -7445,7 +7463,7 @@ yyreturn: return yyresult; } -#line 3787 "./util/configparser.y" +#line 3799 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index e08acea00..7435f9c2e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -334,61 +334,62 @@ extern int yydebug; VAR_CACHEDB_REDISPORT = 535, /* VAR_CACHEDB_REDISPORT */ VAR_CACHEDB_REDISTIMEOUT = 536, /* VAR_CACHEDB_REDISTIMEOUT */ VAR_CACHEDB_REDISEXPIRERECORDS = 537, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 538, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 539, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 540, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 541, /* VAR_ZONEFILE */ - VAR_MASTER = 542, /* VAR_MASTER */ - VAR_URL = 543, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 544, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 545, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 546, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 547, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 548, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 549, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 550, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 551, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 552, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 553, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 554, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 555, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 556, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 557, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 558, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 559, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 560, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 561, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 562, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 563, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 564, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 565, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 566, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 567, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 568, /* VAR_RPZ */ - VAR_TAGS = 569, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 570, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 571, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 572, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 573, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 574, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 575, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 576, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 577, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 578, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 579, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 580, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 581, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 582, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - VAR_INTERFACE_AUTOMATIC_PORTS = 583, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - VAR_EDE = 584, /* VAR_EDE */ - VAR_INTERFACE_ACTION = 585, /* VAR_INTERFACE_ACTION */ - VAR_INTERFACE_VIEW = 586, /* VAR_INTERFACE_VIEW */ - VAR_INTERFACE_TAG = 587, /* VAR_INTERFACE_TAG */ - VAR_INTERFACE_TAG_ACTION = 588, /* VAR_INTERFACE_TAG_ACTION */ - VAR_INTERFACE_TAG_DATA = 589, /* VAR_INTERFACE_TAG_DATA */ - VAR_PROXY_PROTOCOL_PORT = 590, /* VAR_PROXY_PROTOCOL_PORT */ - VAR_STATISTICS_INHIBIT_ZERO = 591, /* VAR_STATISTICS_INHIBIT_ZERO */ - VAR_HARDEN_UNKNOWN_ADDITIONAL = 592 /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ + VAR_CACHEDB_REDISPATH = 538, /* VAR_CACHEDB_REDISPATH */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 539, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 540, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 541, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 542, /* VAR_ZONEFILE */ + VAR_MASTER = 543, /* VAR_MASTER */ + VAR_URL = 544, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 545, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 546, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 547, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 548, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 549, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 550, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 551, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 552, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 553, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 554, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 555, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 556, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 557, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 558, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 559, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 560, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 561, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 562, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 563, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 564, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 565, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 566, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 567, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 568, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 569, /* VAR_RPZ */ + VAR_TAGS = 570, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 571, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 572, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 573, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 574, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 575, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 576, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 577, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 578, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 579, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 580, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 581, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 582, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 583, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_INTERFACE_AUTOMATIC_PORTS = 584, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + VAR_EDE = 585, /* VAR_EDE */ + VAR_INTERFACE_ACTION = 586, /* VAR_INTERFACE_ACTION */ + VAR_INTERFACE_VIEW = 587, /* VAR_INTERFACE_VIEW */ + VAR_INTERFACE_TAG = 588, /* VAR_INTERFACE_TAG */ + VAR_INTERFACE_TAG_ACTION = 589, /* VAR_INTERFACE_TAG_ACTION */ + VAR_INTERFACE_TAG_DATA = 590, /* VAR_INTERFACE_TAG_DATA */ + VAR_PROXY_PROTOCOL_PORT = 591, /* VAR_PROXY_PROTOCOL_PORT */ + VAR_STATISTICS_INHIBIT_ZERO = 592, /* VAR_STATISTICS_INHIBIT_ZERO */ + VAR_HARDEN_UNKNOWN_ADDITIONAL = 593 /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -677,61 +678,62 @@ extern int yydebug; #define VAR_CACHEDB_REDISPORT 535 #define VAR_CACHEDB_REDISTIMEOUT 536 #define VAR_CACHEDB_REDISEXPIRERECORDS 537 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 538 -#define VAR_FOR_UPSTREAM 539 -#define VAR_AUTH_ZONE 540 -#define VAR_ZONEFILE 541 -#define VAR_MASTER 542 -#define VAR_URL 543 -#define VAR_FOR_DOWNSTREAM 544 -#define VAR_FALLBACK_ENABLED 545 -#define VAR_TLS_ADDITIONAL_PORT 546 -#define VAR_LOW_RTT 547 -#define VAR_LOW_RTT_PERMIL 548 -#define VAR_FAST_SERVER_PERMIL 549 -#define VAR_FAST_SERVER_NUM 550 -#define VAR_ALLOW_NOTIFY 551 -#define VAR_TLS_WIN_CERT 552 -#define VAR_TCP_CONNECTION_LIMIT 553 -#define VAR_FORWARD_NO_CACHE 554 -#define VAR_STUB_NO_CACHE 555 -#define VAR_LOG_SERVFAIL 556 -#define VAR_DENY_ANY 557 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 558 -#define VAR_LOG_TAG_QUERYREPLY 559 -#define VAR_STREAM_WAIT_SIZE 560 -#define VAR_TLS_CIPHERS 561 -#define VAR_TLS_CIPHERSUITES 562 -#define VAR_TLS_USE_SNI 563 -#define VAR_IPSET 564 -#define VAR_IPSET_NAME_V4 565 -#define VAR_IPSET_NAME_V6 566 -#define VAR_TLS_SESSION_TICKET_KEYS 567 -#define VAR_RPZ 568 -#define VAR_TAGS 569 -#define VAR_RPZ_ACTION_OVERRIDE 570 -#define VAR_RPZ_CNAME_OVERRIDE 571 -#define VAR_RPZ_LOG 572 -#define VAR_RPZ_LOG_NAME 573 -#define VAR_DYNLIB 574 -#define VAR_DYNLIB_FILE 575 -#define VAR_EDNS_CLIENT_STRING 576 -#define VAR_EDNS_CLIENT_STRING_OPCODE 577 -#define VAR_NSID 578 -#define VAR_ZONEMD_PERMISSIVE_MODE 579 -#define VAR_ZONEMD_CHECK 580 -#define VAR_ZONEMD_REJECT_ABSENCE 581 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 582 -#define VAR_INTERFACE_AUTOMATIC_PORTS 583 -#define VAR_EDE 584 -#define VAR_INTERFACE_ACTION 585 -#define VAR_INTERFACE_VIEW 586 -#define VAR_INTERFACE_TAG 587 -#define VAR_INTERFACE_TAG_ACTION 588 -#define VAR_INTERFACE_TAG_DATA 589 -#define VAR_PROXY_PROTOCOL_PORT 590 -#define VAR_STATISTICS_INHIBIT_ZERO 591 -#define VAR_HARDEN_UNKNOWN_ADDITIONAL 592 +#define VAR_CACHEDB_REDISPATH 538 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 539 +#define VAR_FOR_UPSTREAM 540 +#define VAR_AUTH_ZONE 541 +#define VAR_ZONEFILE 542 +#define VAR_MASTER 543 +#define VAR_URL 544 +#define VAR_FOR_DOWNSTREAM 545 +#define VAR_FALLBACK_ENABLED 546 +#define VAR_TLS_ADDITIONAL_PORT 547 +#define VAR_LOW_RTT 548 +#define VAR_LOW_RTT_PERMIL 549 +#define VAR_FAST_SERVER_PERMIL 550 +#define VAR_FAST_SERVER_NUM 551 +#define VAR_ALLOW_NOTIFY 552 +#define VAR_TLS_WIN_CERT 553 +#define VAR_TCP_CONNECTION_LIMIT 554 +#define VAR_FORWARD_NO_CACHE 555 +#define VAR_STUB_NO_CACHE 556 +#define VAR_LOG_SERVFAIL 557 +#define VAR_DENY_ANY 558 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 559 +#define VAR_LOG_TAG_QUERYREPLY 560 +#define VAR_STREAM_WAIT_SIZE 561 +#define VAR_TLS_CIPHERS 562 +#define VAR_TLS_CIPHERSUITES 563 +#define VAR_TLS_USE_SNI 564 +#define VAR_IPSET 565 +#define VAR_IPSET_NAME_V4 566 +#define VAR_IPSET_NAME_V6 567 +#define VAR_TLS_SESSION_TICKET_KEYS 568 +#define VAR_RPZ 569 +#define VAR_TAGS 570 +#define VAR_RPZ_ACTION_OVERRIDE 571 +#define VAR_RPZ_CNAME_OVERRIDE 572 +#define VAR_RPZ_LOG 573 +#define VAR_RPZ_LOG_NAME 574 +#define VAR_DYNLIB 575 +#define VAR_DYNLIB_FILE 576 +#define VAR_EDNS_CLIENT_STRING 577 +#define VAR_EDNS_CLIENT_STRING_OPCODE 578 +#define VAR_NSID 579 +#define VAR_ZONEMD_PERMISSIVE_MODE 580 +#define VAR_ZONEMD_CHECK 581 +#define VAR_ZONEMD_REJECT_ABSENCE 582 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 583 +#define VAR_INTERFACE_AUTOMATIC_PORTS 584 +#define VAR_EDE 585 +#define VAR_INTERFACE_ACTION 586 +#define VAR_INTERFACE_VIEW 587 +#define VAR_INTERFACE_TAG 588 +#define VAR_INTERFACE_TAG_ACTION 589 +#define VAR_INTERFACE_TAG_DATA 590 +#define VAR_PROXY_PROTOCOL_PORT 591 +#define VAR_STATISTICS_INHIBIT_ZERO 592 +#define VAR_HARDEN_UNKNOWN_ADDITIONAL 593 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -741,7 +743,7 @@ union YYSTYPE char* str; -#line 745 "util/configparser.h" +#line 747 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 141ce9719..046e529fa 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -175,7 +175,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED %token VAR_CACHEDB_REDISHOST VAR_CACHEDB_REDISPORT VAR_CACHEDB_REDISTIMEOUT -%token VAR_CACHEDB_REDISEXPIRERECORDS +%token VAR_CACHEDB_REDISEXPIRERECORDS VAR_CACHEDB_REDISPATH %token VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM VAR_FOR_UPSTREAM %token VAR_AUTH_ZONE VAR_ZONEFILE VAR_MASTER VAR_URL VAR_FOR_DOWNSTREAM %token VAR_FALLBACK_ENABLED VAR_TLS_ADDITIONAL_PORT VAR_LOW_RTT VAR_LOW_RTT_PERMIL @@ -3654,7 +3654,7 @@ contents_cachedb: contents_cachedb content_cachedb | ; content_cachedb: cachedb_backend_name | cachedb_secret_seed | redis_server_host | redis_server_port | redis_timeout | - redis_expire_records + redis_expire_records | redis_server_path ; cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG { @@ -3707,6 +3707,18 @@ redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG free($2); } ; +redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_path:%s)\n", $2)); + free(cfg_parser->cfg->redis_server_path); + cfg_parser->cfg->redis_server_path = $2; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free($2); + #endif + } + ; redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG { #if defined(USE_CACHEDB) && defined(USE_REDIS) From d666e9bd133b4712ebbe6c326a0aa3f85c061249 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Jan 2023 10:10:23 +0100 Subject: [PATCH 059/177] - Fix #835: [FR] Ability to use Redis unix sockets. --- doc/Changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 6717012cd..428ae098f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,5 @@ 23 January 2023: Wouter - - Add #835: [FR] Ability to use Redis unix sockets. + - Fix #835: [FR] Ability to use Redis unix sockets. 20 January 2023: Wouter - Merge #819: Added new static zone type block_a to suppress all A From 6bf677e7de538f8476559e0aef219ce9f4c2b259 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 23 Jan 2023 11:38:57 +0100 Subject: [PATCH 060/177] Fix #833: [FR] Ability to set the Redis password. --- cachedb/redis.c | 12 + doc/Changelog | 3 + doc/example.conf.in | 2 + doc/unbound.conf.5.in | 5 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 2970 +++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 2569 ++++++++++++++++++----------------- util/configparser.h | 228 ++-- util/configparser.y | 16 +- 11 files changed, 2920 insertions(+), 2891 deletions(-) diff --git a/cachedb/redis.c b/cachedb/redis.c index 21b501bf7..f7b2fa532 100644 --- a/cachedb/redis.c +++ b/cachedb/redis.c @@ -57,6 +57,7 @@ struct redis_moddata { const char* server_host; /* server's IP address or host name */ int server_port; /* server's TCP port */ const char* server_path; /* server's unix path, or "", NULL if unused */ + const char* server_password; /* server's AUTH password, or "", NULL if unused */ struct timeval timeout; /* timeout for connection setup and commands */ }; @@ -86,6 +87,16 @@ redis_connect(const struct redis_moddata* moddata) log_err("failed to set redis timeout"); goto fail; } + if(moddata->server_password && moddata->server_password[0]!=0) { + redisReply* rep; + rep = redisCommand(ctx, "AUTH %s", moddata->server_password); + if(!rep || rep->type == REDIS_REPLY_ERROR) { + log_err("failed to authenticate with password"); + freeReplyObject(rep); + goto fail; + } + freeReplyObject(rep); + } return ctx; fail: @@ -119,6 +130,7 @@ redis_init(struct module_env* env, struct cachedb_env* cachedb_env) moddata->server_host = env->cfg->redis_server_host; moddata->server_port = env->cfg->redis_server_port; moddata->server_path = env->cfg->redis_server_path; + moddata->server_password = env->cfg->redis_server_password; moddata->timeout.tv_sec = env->cfg->redis_timeout / 1000; moddata->timeout.tv_usec = (env->cfg->redis_timeout % 1000) * 1000; for(i = 0; i < moddata->numctxs; i++) diff --git a/doc/Changelog b/doc/Changelog index 428ae098f..6136c6b60 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 January 2023: George + - Fix #833: [FR] Ability to set the Redis password. + 23 January 2023: Wouter - Fix #835: [FR] Ability to use Redis unix sockets. diff --git a/doc/example.conf.in b/doc/example.conf.in index a6d4373c4..5b7517052 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1214,6 +1214,8 @@ remote-control: # redis-server-port: 6379 # # if the server uses a unix socket, set its path, or "" when not used. # # redis-server-path: "/var/lib/redis/redis-server.sock" +# # if the server uses an AUTH password, specify here, or "" when not used. +# # redis-server-password: "" # # timeout (in ms) for communication with the redis server # redis-timeout: 100 # # set timeout on redis records based on DNS response TTL diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index dffbe875b..79039d58e 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2604,6 +2604,11 @@ The unix socket path to connect to the redis server. Off by default, and it can be set to "" to turn this off. Unix sockets may have better throughput than the IP address option. .TP +.B redis-server-password: \fI""\fR +The Redis AUTH password to use for the redis server. +Only relevant if Redis is configured for client password authorisation. +Off by default, and it can be set to "" to turn this off. +.TP .B redis-timeout: \fI\fR The period until when Unbound waits for a response from the Redis sever. If this timeout expires Unbound closes the connection, treats it as diff --git a/util/config_file.c b/util/config_file.c index ff0afbee3..475699723 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -374,6 +374,7 @@ config_create(void) #ifdef USE_REDIS if(!(cfg->redis_server_host = strdup("127.0.0.1"))) goto error_exit; cfg->redis_server_path = NULL; + cfg->redis_server_password = NULL; cfg->redis_timeout = 100; cfg->redis_server_port = 6379; cfg->redis_expire_records = 0; @@ -1292,6 +1293,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_STR(opt, "redis-server-host", redis_server_host) else O_DEC(opt, "redis-server-port", redis_server_port) else O_STR(opt, "redis-server-path", redis_server_path) + else O_STR(opt, "redis-server-password", redis_server_password) else O_DEC(opt, "redis-timeout", redis_timeout) else O_YNO(opt, "redis-expire-records", redis_expire_records) #endif /* USE_REDIS */ @@ -1669,6 +1671,7 @@ config_delete(struct config_file* cfg) #ifdef USE_REDIS free(cfg->redis_server_host); free(cfg->redis_server_path); + free(cfg->redis_server_password); #endif /* USE_REDIS */ #endif /* USE_CACHEDB */ #ifdef USE_IPSET diff --git a/util/config_file.h b/util/config_file.h index e3fe61ffe..7e1f5b365 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -696,6 +696,8 @@ struct config_file { int redis_server_port; /** redis server's unix path. Or "", NULL if unused */ char* redis_server_path; + /** redis server's AUTH password. Or "", NULL if unused */ + char* redis_server_password; /** timeout (in ms) for communication with the redis server */ int redis_timeout; /** set timeout on redis records based on DNS response ttl */ diff --git a/util/configlexer.c b/util/configlexer.c index ca976f390..0e3b71ffe 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 374 -#define YY_END_OF_BUFFER 375 +#define YY_NUM_RULES 375 +#define YY_END_OF_BUFFER 376 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,416 +363,417 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3706] = +static const flex_int16_t yy_accept[3713] = { 0, - 1, 1, 348, 348, 352, 352, 356, 356, 360, 360, - 1, 1, 364, 364, 368, 368, 375, 372, 1, 346, - 346, 373, 2, 373, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 348, 349, 349, 350, - 373, 352, 353, 353, 354, 373, 359, 356, 357, 357, - 358, 373, 360, 361, 361, 362, 373, 371, 347, 2, - 351, 373, 371, 367, 364, 365, 365, 366, 373, 368, - 369, 369, 370, 373, 372, 0, 1, 2, 2, 2, - 2, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 1, 1, 349, 349, 353, 353, 357, 357, 361, 361, + 1, 1, 365, 365, 369, 369, 376, 373, 1, 347, + 347, 374, 2, 374, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 349, 350, 350, 351, + 374, 353, 354, 354, 355, 374, 360, 357, 358, 358, + 359, 374, 361, 362, 362, 363, 374, 372, 348, 2, + 352, 374, 372, 368, 365, 366, 366, 367, 374, 369, + 370, 370, 371, 374, 373, 0, 1, 2, 2, 2, + 2, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 348, - 0, 352, 0, 359, 0, 356, 360, 0, 371, 0, - 2, 2, 371, 367, 0, 364, 368, 0, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 349, + 0, 353, 0, 360, 0, 357, 361, 0, 372, 0, + 2, 2, 372, 368, 0, 365, 369, 0, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 371, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 344, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 134, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 144, 372, 372, 372, 372, - 372, 372, 372, 371, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 345, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 134, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 144, 373, 373, 373, 373, + 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 116, 372, 343, 372, - 372, 372, 372, 372, 372, 372, 372, 8, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 116, 373, 344, 373, + 373, 373, 373, 373, 373, 373, 373, 8, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 135, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 149, 372, 372, 371, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 135, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 149, 373, 373, 372, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 336, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 337, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 371, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 69, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 262, 372, 14, 15, 372, 19, 18, 372, 372, - 242, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 69, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 262, 373, 14, 15, 373, 19, 18, 373, 373, + 242, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 142, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 240, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 3, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 142, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 240, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 3, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 371, 372, 372, 372, - 372, 372, 372, 372, 329, 372, 372, 328, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 372, 373, 373, 373, + 373, 373, 373, 373, 329, 373, 373, 328, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 355, - 372, 372, 372, 372, 372, 372, 372, 372, 68, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 72, 372, 298, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 337, - 338, 372, 372, 372, 372, 372, 372, 372, 372, 73, - 372, 372, 143, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 138, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 229, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 356, + 373, 373, 373, 373, 373, 373, 373, 373, 68, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 72, 373, 298, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 338, + 339, 373, 373, 373, 373, 373, 373, 373, 373, 73, + 373, 373, 143, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 138, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 229, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 21, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 170, 372, 372, 372, 372, - 372, 371, 355, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 114, 372, 372, 372, 372, 372, - 372, 372, 306, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 21, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 170, 373, 373, 373, 373, + 373, 372, 356, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 114, 373, 373, 373, 373, 373, + 373, 373, 306, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 197, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 169, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 113, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 197, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 169, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 113, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 35, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 36, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 70, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 141, 372, 372, 372, 371, - 372, 372, 372, 372, 372, 133, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 35, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 36, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 70, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 141, 373, 373, 373, 372, + 373, 373, 373, 373, 373, 133, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 71, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 266, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 198, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 58, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 71, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 266, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 198, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 58, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 284, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 63, 372, 64, 372, 372, 372, 372, 372, 117, 372, - 118, 372, 372, 372, 372, 372, 115, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 284, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 63, 373, 64, 373, 373, 373, 373, 373, 117, 373, + 118, 373, 373, 373, 373, 373, 115, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 7, 372, 372, 372, 372, 371, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 251, 372, 372, 372, 372, 173, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 267, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 49, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 7, 373, 373, 373, 373, 372, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 251, 373, 373, 373, 373, 173, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 267, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 49, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 59, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 220, 372, 219, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 16, 17, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 74, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 228, 372, 372, 372, 372, 372, 372, 120, 372, 119, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, + 59, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 220, 373, 219, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 16, 17, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 74, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 228, 373, 373, 373, 373, 373, 373, 120, 373, 119, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 211, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 150, 372, 372, 372, - 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 108, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 95, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 241, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 100, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 211, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 150, 373, 373, 373, + 372, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 108, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 95, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 241, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 100, 373, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 67, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 214, 215, 372, 372, 372, - 300, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 6, 372, 372, 372, - 372, 372, 372, 372, 319, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 304, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 67, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 214, 215, 373, 373, 373, + 300, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 6, 373, 373, 373, + 373, 373, 373, 373, 319, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 304, 373, 373, 373, 373, 373, - 372, 372, 330, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 46, 372, 372, - 372, 372, 372, 48, 372, 372, 372, 96, 372, 372, - 372, 372, 372, 56, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 371, 372, 207, 372, 372, - 372, 145, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 233, 372, 208, 372, 372, 372, 248, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 57, + 373, 373, 330, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 46, 373, 373, + 373, 373, 373, 48, 373, 373, 373, 96, 373, 373, + 373, 373, 373, 56, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 372, 373, 207, 373, 373, + 373, 145, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 233, 373, 208, 373, 373, 373, 248, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 57, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 147, 126, 372, 127, 372, 372, 372, 372, 125, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 166, 372, 372, 54, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 283, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 209, 372, 372, 372, 372, 372, - 212, 372, 218, 372, 372, 372, 372, 372, 372, 372, - 372, 247, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 112, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 147, 126, 373, 127, 373, 373, 373, 373, 125, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 166, 373, 373, 54, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 283, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 209, 373, 373, 373, 373, 373, + 212, 373, 218, 373, 373, 373, 373, 373, 373, 373, + 373, 247, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 112, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 139, 372, 372, 372, 372, 372, 372, 372, 372, 65, - 372, 372, 372, 29, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 20, 372, 372, 372, - 372, 372, 372, 372, 30, 39, 372, 178, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 205, 372, 372, 371, 372, 372, 372, 372, - 372, 372, 82, 84, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 308, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 139, 373, 373, 373, 373, 373, 373, 373, 373, 65, + 373, 373, 373, 29, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 20, 373, 373, 373, + 373, 373, 373, 373, 30, 39, 373, 178, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 205, 373, 373, 372, 373, 373, 373, 373, + 373, 373, 82, 84, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 308, 373, 373, - 372, 372, 263, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 128, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 165, - 372, 50, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 257, 372, 372, 372, 372, 372, 372, 372, - 323, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 172, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 263, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 128, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 165, + 373, 50, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 257, 373, 373, 373, 373, 373, 373, 373, + 323, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 172, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 372, 372, 317, 372, 372, 372, - 372, 239, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 334, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 190, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 121, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 185, 372, 199, 372, 372, 372, 372, 372, 372, 372, - 371, 372, 153, 372, 372, 372, 372, 372, 107, 372, - 372, 372, 372, 231, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 317, 373, 373, 373, + 373, 239, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 335, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 190, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 121, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 185, 373, 199, 373, 373, 373, 373, 373, 373, 373, + 372, 373, 153, 373, 373, 373, 373, 373, 107, 373, + 373, 373, 373, 231, 373, 373, 373, 373, 373, 373, - 249, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 275, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 146, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 189, 372, - 372, 372, 372, 372, 372, 372, 85, 372, 86, 372, - 372, 372, 372, 372, 260, 372, 372, 372, 372, 66, - 326, 372, 372, 372, 372, 372, 94, 200, 372, 221, - 372, 252, 372, 372, 213, 301, 372, 372, 372, 372, - 296, 372, 372, 372, 78, 372, 202, 372, 372, 372, + 249, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 275, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 146, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 189, 373, + 373, 373, 373, 373, 373, 373, 85, 373, 86, 373, + 373, 373, 373, 373, 260, 373, 373, 373, 373, 66, + 326, 373, 373, 373, 373, 373, 94, 200, 373, 221, + 373, 252, 373, 373, 213, 301, 373, 373, 373, 373, + 296, 373, 373, 373, 78, 373, 202, 373, 373, 373, - 372, 372, 372, 9, 372, 372, 372, 372, 372, 111, - 372, 372, 372, 372, 372, 372, 288, 372, 372, 372, - 372, 372, 230, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 371, 372, - 372, 372, 372, 188, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 174, 372, 307, 372, 372, 372, + 373, 373, 373, 9, 373, 373, 373, 373, 373, 111, + 373, 373, 373, 373, 373, 373, 288, 373, 373, 373, + 373, 373, 230, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 372, 373, + 373, 373, 373, 188, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 174, 373, 307, 373, 373, 373, - 372, 372, 274, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 243, 372, 372, 372, 372, 372, - 372, 299, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 171, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 327, 372, 201, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 77, 79, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 110, 372, 372, 372, 372, - 372, 372, 286, 372, 372, 372, 372, 372, 303, 372, + 373, 373, 274, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 243, 373, 373, 373, 373, 373, + 373, 299, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 171, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 327, 373, 201, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 77, 79, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 110, 373, 373, 373, 373, + 373, 373, 286, 373, 373, 373, 373, 373, 373, 303, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 235, 37, 31, 33, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 38, - 372, 32, 34, 372, 40, 372, 372, 372, 372, 372, - 372, 372, 106, 372, 184, 372, 372, 372, 372, 372, - 372, 372, 371, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 237, 234, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 76, 372, 372, 372, 148, - 372, 129, 372, 372, 372, 372, 372, 372, 372, 372, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 235, 37, 31, 33, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 38, 373, 32, 34, 373, 40, 373, 373, 373, 373, + 373, 373, 373, 106, 373, 184, 373, 373, 373, 373, + 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 237, 234, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 76, 373, 373, 373, + 148, 373, 129, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 372, 167, 51, 372, 372, 372, 363, 13, - 372, 372, 372, 372, 372, 372, 372, 154, 372, 372, - 372, 372, 372, 372, 372, 321, 372, 324, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 12, 372, 372, 22, 372, 372, 372, 372, 372, - 372, 372, 292, 372, 372, 372, 372, 372, 305, 372, - 372, 372, 372, 80, 372, 245, 372, 372, 372, 372, - 372, 236, 372, 372, 372, 75, 372, 372, 372, 372, - 372, 372, 23, 372, 372, 47, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 183, 182, + 373, 373, 373, 373, 167, 51, 373, 373, 373, 364, + 13, 373, 373, 373, 373, 373, 373, 373, 154, 373, + 373, 373, 373, 373, 373, 373, 321, 373, 324, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 12, 373, 373, 22, 373, 373, 373, 373, + 373, 373, 373, 292, 373, 373, 373, 373, 373, 373, + 305, 373, 373, 373, 373, 80, 373, 245, 373, 373, + 373, 373, 373, 236, 373, 373, 373, 75, 373, 373, + 373, 373, 373, 373, 23, 373, 373, 47, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 372, 372, 363, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 238, 232, 372, 250, 372, 372, 309, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 195, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 87, 372, 372, 372, - 372, 372, 372, 372, 287, 372, 372, 372, 372, 217, - 372, 372, 372, 372, 372, 372, 244, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 294, 372, 372, - 372, 331, 333, 332, 180, 372, 372, 372, 81, 372, + 183, 182, 373, 373, 364, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 238, 232, 373, 250, 373, 373, + 309, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 195, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 87, 373, + 373, 373, 373, 373, 373, 373, 287, 373, 373, 373, + 373, 217, 373, 373, 373, 373, 373, 373, 244, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 294, + 373, 373, 373, 331, 373, 333, 332, 180, 373, 373, - 372, 372, 372, 191, 372, 372, 372, 372, 122, 124, - 123, 372, 372, 372, 25, 372, 372, 175, 372, 177, - 372, 222, 372, 372, 372, 372, 181, 372, 372, 372, - 372, 253, 372, 372, 372, 372, 372, 372, 372, 156, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 265, 372, 372, 372, 372, 372, 372, 372, - 341, 372, 27, 372, 302, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 92, 223, 372, 372, 259, 372, 372, - 285, 372, 325, 372, 216, 372, 372, 297, 372, 372, + 373, 81, 373, 373, 373, 373, 191, 373, 373, 373, + 373, 122, 124, 123, 373, 373, 373, 25, 373, 373, + 175, 373, 177, 373, 222, 373, 373, 373, 373, 181, + 373, 373, 373, 373, 253, 373, 373, 373, 373, 373, + 373, 373, 156, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 265, 373, 373, 373, 373, + 373, 373, 373, 342, 373, 27, 373, 302, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 92, 223, 373, 373, + 259, 373, 373, 285, 373, 325, 373, 216, 373, 373, - 372, 295, 60, 372, 372, 372, 372, 372, 372, 372, - 4, 372, 372, 372, 372, 137, 372, 155, 372, 372, - 372, 196, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 256, 41, 42, 372, 372, 372, 372, 372, 372, - 372, 310, 372, 372, 372, 372, 372, 372, 372, 273, - 372, 372, 372, 372, 372, 372, 372, 372, 226, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 91, 90, 372, 372, 61, 372, - 372, 291, 372, 261, 372, 372, 372, 372, 372, 11, + 297, 373, 373, 373, 295, 60, 373, 373, 373, 373, + 373, 373, 373, 4, 373, 373, 373, 373, 373, 137, + 373, 155, 373, 373, 373, 196, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 256, 41, 42, 373, 373, + 373, 373, 373, 373, 373, 310, 373, 373, 373, 373, + 373, 373, 373, 273, 373, 373, 373, 373, 373, 373, + 373, 373, 226, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 91, 90, + 373, 373, 61, 373, 373, 291, 373, 261, 373, 373, - 372, 372, 372, 372, 345, 372, 372, 372, 372, 136, - 372, 372, 372, 372, 372, 372, 224, 97, 372, 372, - 44, 372, 372, 372, 372, 372, 372, 372, 372, 187, - 372, 372, 372, 372, 372, 372, 372, 158, 372, 372, - 372, 372, 264, 372, 372, 372, 372, 372, 272, 372, - 372, 372, 372, 151, 372, 372, 372, 130, 132, 131, - 372, 372, 372, 99, 103, 98, 372, 168, 372, 372, - 372, 372, 88, 372, 258, 293, 372, 372, 372, 372, - 372, 372, 10, 372, 372, 372, 372, 372, 289, 335, - 372, 372, 372, 372, 372, 372, 372, 340, 43, 372, + 373, 373, 373, 11, 373, 373, 373, 373, 346, 373, + 373, 373, 373, 373, 136, 373, 373, 373, 373, 373, + 373, 224, 97, 373, 373, 44, 373, 373, 373, 373, + 373, 373, 373, 373, 187, 373, 373, 373, 373, 373, + 373, 373, 158, 373, 373, 373, 373, 264, 373, 373, + 373, 373, 373, 272, 373, 373, 373, 373, 151, 373, + 373, 373, 130, 132, 131, 373, 373, 373, 99, 103, + 98, 373, 168, 373, 373, 373, 373, 88, 373, 258, + 293, 373, 373, 373, 373, 373, 373, 10, 373, 373, + 373, 373, 373, 289, 336, 373, 373, 373, 373, 373, - 372, 372, 372, 372, 186, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 104, 102, 372, 372, 55, 372, 372, 89, 372, 322, - 372, 372, 372, 372, 24, 372, 372, 372, 372, 372, - 210, 372, 372, 372, 372, 372, 372, 225, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 206, 372, 372, - 176, 83, 372, 372, 372, 372, 372, 311, 372, 372, - 372, 372, 372, 372, 372, 269, 372, 372, 268, 152, - 372, 372, 101, 372, 52, 372, 372, 159, 160, 163, + 373, 373, 373, 341, 43, 373, 373, 373, 373, 373, + 186, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 104, 102, 373, 373, + 55, 373, 373, 89, 373, 322, 373, 373, 373, 373, + 24, 373, 373, 373, 373, 373, 210, 373, 373, 334, + 373, 373, 373, 373, 225, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 206, 373, 373, 176, 83, 373, + 373, 373, 373, 373, 311, 373, 373, 373, 373, 373, + 373, 373, 269, 373, 373, 268, 152, 373, 373, 101, - 164, 161, 162, 93, 320, 372, 372, 290, 140, 372, - 372, 372, 372, 26, 372, 179, 372, 372, 372, 372, - 204, 372, 255, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 193, 192, 227, 45, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 318, 372, 372, 372, 372, 109, 372, - 254, 372, 282, 315, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 342, 372, 105, 53, 62, + 373, 52, 373, 373, 159, 160, 163, 164, 161, 162, + 93, 320, 373, 373, 290, 140, 373, 373, 373, 373, + 26, 373, 179, 373, 373, 373, 373, 204, 373, 255, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 193, 192, 227, 45, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 318, 373, 373, 373, 373, 109, 373, 254, 373, 282, + 315, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 5, 372, 372, 246, 372, 372, 316, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 270, 28, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 271, 372, 372, 372, 157, 372, 372, 372, 372, 372, - 372, 372, 372, 194, 372, 203, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 312, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 339, 372, 372, 278, 372, 372, 372, - 372, 372, 313, 372, 372, 372, 372, 372, 372, 314, - 372, 372, 372, 276, 372, 279, 280, 372, 372, 372, + 373, 373, 343, 373, 105, 53, 62, 5, 373, 373, + 246, 373, 373, 316, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 270, 28, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 271, 373, 373, + 373, 157, 373, 373, 373, 373, 373, 373, 373, 373, + 194, 373, 203, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 312, 373, 373, 373, 373, 373, 373, 373, + 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, + 340, 373, 373, 278, 373, 373, 373, 373, 373, 313, + 373, 373, 373, 373, 373, 373, 314, 373, 373, 373, - 372, 372, 277, 281, 0 + 276, 373, 279, 280, 373, 373, 373, 373, 373, 277, + 281, 0 } ; static const YY_CHAR yy_ec[256] = @@ -815,17 +816,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3724] = +static const flex_int16_t yy_base[3731] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3764, 3709, 81, 7224, - 7224, 7224, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3764, 3709, 81, 7235, + 7235, 7235, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3203, 7224, 7224, 7224, - 107, 3106, 7224, 7224, 7224, 154, 2980, 2776, 7224, 7224, - 7224, 245, 2512, 7224, 7224, 7224, 163, 2418, 7224, 249, - 7224, 253, 148, 2194, 2170, 7224, 7224, 7224, 257, 1798, - 7224, 7224, 7224, 233, 1739, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 3203, 7235, 7235, 7235, + 107, 3106, 7235, 7235, 7235, 154, 2980, 2776, 7235, 7235, + 7235, 245, 2512, 7235, 7235, 7235, 163, 2418, 7235, 249, + 7235, 253, 148, 2194, 2170, 7235, 7235, 7235, 257, 1798, + 7235, 7235, 7235, 233, 1739, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -850,15 +851,15 @@ static const flex_int16_t yy_base[3724] = 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - 704, 705, 710, 711, 708, 7224, 718, 714, 721, 722, + 704, 705, 710, 711, 708, 7235, 718, 714, 721, 722, 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, 770, 765, 772, 785, 767, 773, 777, 806, 778, 774, 780, 786, 796, 798, 800, 793, 807, 814, 815, 808, 812, 819, 826, 834, 836, 816, 828, 839, 830, 838, - 820, 845, 852, 847, 7224, 849, 851, 861, 853, 862, + 820, 845, 852, 847, 7235, 849, 851, 861, 853, 862, 865, 863, 871, 872, 875, 884, 880, 883, 893, 915, - 885, 886, 882, 895, 898, 7224, 900, 899, 939, 908, + 885, 886, 882, 895, 898, 7235, 900, 899, 939, 908, 917, 928, 924, 904, 901, 929, 940, 943, 956, 757, 945, 921, 963, 959, 946, 948, 932, 969, 960, 976, @@ -868,16 +869,16 @@ static const flex_int16_t yy_base[3724] = 1028, 1042, 1035, 1043, 1044, 1047, 1052, 1045, 1060, 1051, 1067, 1063, 1069, 1070, 1078, 1073, 1074, 1075, 1076, 1079, 1085, 1080, 1083, 1087, 1088, 1090, 1091, 1097, 1099, 1106, - 1095, 1108, 1111, 1098, 1113, 1101, 7224, 1117, 7224, 1115, - 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7224, 1129, 1132, + 1095, 1108, 1111, 1098, 1113, 1101, 7235, 1117, 7235, 1115, + 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7235, 1129, 1132, 1133, 1140, 1137, 1141, 1143, 1144, 1154, 1148, 1155, 1157, 1156, 1158, 1165, 1167, 1164, 1168, 1175, 1172, 1176, 1177, - 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7224, + 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7235, 1191, 1195, 1197, 1201, 1194, 1202, 1206, 1214, 1221, 1219, 1227, 1220, 1224, 1237, 1238, 1240, 1241, 1243, 1245, 1246, 1248, 1249, 1254, 1251, 1255, 1257, 1259, 1260, 1262, 1268, - 1261, 1264, 1275, 7224, 1274, 1272, 1284, 1291, 1286, 1287, + 1261, 1264, 1275, 7235, 1274, 1272, 1284, 1291, 1286, 1287, 1271, 1289, 1292, 1293, 1295, 1296, 1304, 1294, 1297, 1301, 1314, 1310, 1319, 1312, 1317, 1315, 1316, 1321, 1325, 1323, 1327, 1336, 1333, 1338, 1341, 1350, 1348, 1352, 1355, 1359, @@ -885,7 +886,7 @@ static const flex_int16_t yy_base[3724] = 1371, 1373, 1382, 1378, 1379, 1384, 1380, 1386, 1391, 1389, 1387, 1394, 1393, 1395, 1396, 1403, 1401, 1405, 1410, 1407, - 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7224, 1436, 1431, + 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7235, 1436, 1431, 1432, 1438, 1439, 1443, 1445, 1437, 1447, 1448, 1449, 1451, 1452, 1458, 1454, 1459, 1461, 1460, 1468, 1467, 1470, 1473, 1475, 1471, 1484, 1491, 1490, 1492, 1476, 1486, 1495, 1496, @@ -899,21 +900,21 @@ static const flex_int16_t yy_base[3724] = 1614, 1633, 1622, 1624, 1634, 1625, 1635, 1638, 1641, 1642, 1644, 1647, 1646, 1648, 1656, 1657, 1649, 1658, 1650, 1663, 1664, 1666, 1674, 1670, 1676, 1680, 1669, 1681, 1671, 1682, - 1685, 1688, 1691, 1694, 1697, 1689, 7224, 1695, 1705, 1701, + 1685, 1688, 1691, 1694, 1697, 1689, 7235, 1695, 1705, 1701, 1703, 1704, 1708, 1709, 1717, 1710, 1712, 1713, 1715, 1722, - 1743, 7224, 1720, 7224, 7224, 1724, 7224, 7224, 1723, 1728, - 7224, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, + 1743, 7235, 1720, 7235, 7235, 1724, 7235, 7235, 1723, 1728, + 7235, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, 1754, 1751, 1767, 1772, 1766, 1764, 1775, 1770, 1777, 1778, 1783, 1780, 1782, 1789, 1792, 1795, 1797, 1805, 1806, 1808, 1810, 1811, 1814, 1812, 1818, 1819, 1823, 1826, 1827, 1829, 1830, 1831, 1833, 1832, 1835, 1838, 1841, 1842, 1844, 1837, - 1845, 1856, 1854, 1847, 1864, 7224, 1860, 1872, 1857, 1861, + 1845, 1856, 1854, 1847, 1864, 7235, 1860, 1872, 1857, 1861, 1868, 1876, 1869, 1877, 1878, 1873, 1882, 1884, 1886, 1887, 1889, 1891, 1893, 1892, 1894, 1898, 1900, 1902, 1904, 1903, - 1906, 1915, 1908, 1910, 7224, 1916, 1918, 1917, 1923, 1921, + 1906, 1915, 1908, 1910, 7235, 1916, 1918, 1917, 1923, 1921, 1931, 1932, 1922, 1920, 1924, 1935, 1944, 1939, 1946, 1940, - 1942, 1949, 1950, 1951, 1954, 7224, 1960, 1964, 1952, 1966, + 1942, 1949, 1950, 1951, 1954, 7235, 1960, 1964, 1952, 1966, 1956, 1959, 1967, 1968, 1972, 1975, 1970, 1976, 1978, 1981, 1988, 1985, 1983, 1986, 1989, 1991, 1997, 1998, 1999, 2004, @@ -921,729 +922,729 @@ static const flex_int16_t yy_base[3724] = 2024, 2025, 2032, 2029, 2041, 2031, 2028, 2046, 2053, 2050, 2030, 2051, 2033, 2052, 2055, 2064, 2065, 2057, 2061, 2062, 2072, 2067, 2069, 2070, 2076, 2074, 2084, 2080, 2082, 2093, - 2085, 2089, 2091, 2097, 7224, 2098, 2099, 7224, 2101, 2100, + 2085, 2089, 2091, 2097, 7235, 2098, 2099, 7235, 2101, 2100, 2102, 2124, 2103, 2106, 2111, 2118, 2105, 2108, 2119, 2125, 2131, 2128, 2138, 2141, 2143, 2144, 2146, 2147, 2151, 2149, 2153, 2155, 2156, 2159, 2164, 2115, 2166, 2178, 2179, 2175, 2182, 2186, 2165, 2181, 2183, 2202, 2184, 2185, 2191, 2192, 2188, 2193, 2199, 2195, 2197, 2206, 2211, 2212, 2217, 2224, - 2214, 2215, 2223, 2226, 2225, 2229, 2235, 2232, 2237, 7224, - 2244, 2245, 2239, 2246, 2240, 2255, 2254, 2250, 7224, 2252, + 2214, 2215, 2223, 2226, 2225, 2229, 2235, 2232, 2237, 7235, + 2244, 2245, 2239, 2246, 2240, 2255, 2254, 2250, 7235, 2252, 2256, 2260, 2268, 2263, 2264, 2266, 2267, 2270, 2273, 2274, - 2279, 2280, 2275, 2277, 2291, 7224, 2282, 7224, 2278, 2290, - 2295, 2296, 2303, 2299, 2300, 2304, 2302, 2306, 2307, 7224, - 7224, 2308, 2315, 2325, 2327, 2329, 2319, 2316, 2330, 7224, - 2332, 2339, 7224, 2336, 2334, 2341, 2342, 2335, 2345, 2346, - 2347, 2350, 2357, 2352, 2359, 2354, 2358, 2362, 7224, 2366, - 2368, 2370, 2373, 2374, 2377, 2375, 2380, 2381, 2382, 7224, + 2279, 2280, 2275, 2277, 2291, 7235, 2282, 7235, 2278, 2290, + 2295, 2296, 2303, 2299, 2300, 2304, 2302, 2306, 2307, 7235, + 7235, 2308, 2315, 2325, 2327, 2329, 2319, 2316, 2330, 7235, + 2332, 2339, 7235, 2336, 2334, 2341, 2342, 2335, 2345, 2346, + 2347, 2350, 2357, 2352, 2359, 2354, 2358, 2362, 7235, 2366, + 2368, 2370, 2373, 2374, 2377, 2375, 2380, 2381, 2382, 7235, 2383, 2387, 2390, 2398, 2400, 2388, 2395, 2401, 2405, 2402, 2407, 2408, 2409, 2410, 2417, 2421, 2422, 2414, 2424, 2431, - 2427, 2436, 7224, 2433, 2434, 2435, 2443, 2439, 2441, 2442, + 2427, 2436, 7235, 2433, 2434, 2435, 2443, 2439, 2441, 2442, 2445, 2448, 2446, 2447, 2456, 2457, 2450, 2458, 2449, 2462, 2465, 2475, 2476, 2468, 2472, 2479, 2471, 2473, 2480, 2481, - 2309, 2482, 2485, 2486, 2488, 7224, 2489, 2496, 2493, 2497, + 2309, 2482, 2485, 2486, 2488, 7235, 2489, 2496, 2493, 2497, 2498, 2491, 171, 2504, 2506, 2507, 2509, 2515, 2517, 2510, 2526, 2528, 2523, 2527, 2529, 2533, 2534, 2535, 2536, 2525, - 2537, 2543, 2542, 2544, 7224, 2546, 2547, 2551, 2552, 2553, - 2554, 2565, 7224, 2558, 2571, 2555, 2576, 2566, 2564, 2577, + 2537, 2543, 2542, 2544, 7235, 2546, 2547, 2551, 2552, 2553, + 2554, 2565, 7235, 2558, 2571, 2555, 2576, 2566, 2564, 2577, 2568, 2582, 2583, 2585, 2586, 2589, 2594, 2591, 2593, 2595, - 2597, 7224, 2599, 2603, 2604, 2602, 2610, 2613, 2611, 2612, + 2597, 7235, 2599, 2603, 2604, 2602, 2610, 2613, 2611, 2612, 2614, 2618, 2621, 2619, 2623, 2626, 2625, 2628, 2632, 2635, 2631, 2636, 2645, 2640, 2642, 2643, 2648, 2651, 2653, 2654, - 2655, 2656, 2664, 2657, 7224, 2667, 2659, 2668, 2675, 2666, + 2655, 2656, 2664, 2657, 7235, 2667, 2659, 2668, 2675, 2666, 2669, 2676, 2672, 2693, 2678, 2688, 2690, 2694, 2704, 2698, 2691, 2707, 2714, 2716, 2699, 2724, 2720, 2726, 2728, 2689, 2732, 2734, 2722, 2730, 2741, 2744, 2740, 2736, 2746, 2747, 2749, 2750, 2757, 2759, 2755, 2754, 2706, 2756, 2762, 2761, - 2777, 2782, 2773, 7224, 2781, 2771, 2769, 2783, 2787, 2794, + 2777, 2782, 2773, 7235, 2781, 2771, 2769, 2783, 2787, 2794, 2790, 2791, 2792, 2795, 2798, 2800, 2802, 2803, 2810, 2805, 2808, 2814, 2811, 2818, 2812, 2815, 2827, 2828, 2816, 2830, - 2832, 2829, 2837, 2838, 7224, 2839, 2843, 2833, 2845, 2850, + 2832, 2829, 2837, 2838, 7235, 2839, 2843, 2833, 2845, 2850, 2847, 2856, 2857, 2859, 2851, 2853, 2860, 2862, 2863, 2679, - 2865, 2866, 2875, 2871, 2870, 2878, 2873, 7224, 2882, 2877, + 2865, 2866, 2875, 2871, 2870, 2878, 2873, 7235, 2882, 2877, 2884, 2888, 2887, 2889, 2890, 2895, 2896, 2902, 2903, 2905, - 2906, 2908, 2909, 2912, 7224, 2917, 2919, 2915, 2918, 2927, - 2922, 2926, 2928, 2930, 2932, 7224, 2933, 2935, 854, 2934, - 2936, 2937, 2946, 2947, 2942, 7224, 2950, 2943, 2951, 2954, + 2906, 2908, 2909, 2912, 7235, 2917, 2919, 2915, 2918, 2927, + 2922, 2926, 2928, 2930, 2932, 7235, 2933, 2935, 854, 2934, + 2936, 2937, 2946, 2947, 2942, 7235, 2950, 2943, 2951, 2954, 2955, 2958, 2959, 2961, 2964, 2965, 2968, 2970, 2979, 2966, - 2976, 7224, 2969, 2993, 2973, 2985, 2995, 2982, 2983, 2997, - 2999, 3000, 3006, 3002, 7224, 3011, 3010, 3013, 3023, 3001, - 3018, 3019, 3021, 3025, 3027, 3028, 3029, 3031, 3033, 7224, + 2976, 7235, 2969, 2993, 2973, 2985, 2995, 2982, 2983, 2997, + 2999, 3000, 3006, 3002, 7235, 3011, 3010, 3013, 3023, 3001, + 3018, 3019, 3021, 3025, 3027, 3028, 3029, 3031, 3033, 7235, 3034, 3038, 3039, 3040, 3043, 3042, 3035, 3051, 3050, 3052, 3055, 3058, 3061, 3063, 3064, 3065, 3059, 3075, 3067, 3073, 3069, 3077, 3081, 3079, 3084, 3071, 3088, 3098, 3101, 3096, 3099, 3103, 3105, 3097, 3104, 3107, 3114, 3115, 3122, 3117, - 3119, 7224, 3124, 3126, 3127, 3128, 3121, 3129, 3132, 3131, + 3119, 7235, 3124, 3126, 3127, 3128, 3121, 3129, 3132, 3131, 3134, 3137, 3140, 3144, 3142, 3145, 3159, 3161, 3150, 3151, 3154, 3162, 3163, 3166, 3165, 3167, 3168, 3175, 3174, 3176, 3177, 3178, 3180, 3188, 3183, 3185, 3195, 3190, 3192, 3196, 3198, 3199, 3200, 3201, 3204, 3207, 3210, 3205, 3212, 3216, - 3221, 3226, 3227, 3229, 3223, 3230, 3234, 3235, 3238, 7224, + 3221, 3226, 3227, 3229, 3223, 3230, 3234, 3235, 3238, 7235, 3237, 3241, 3239, 3242, 3247, 3250, 3251, 3258, 3253, 3259, 3266, 3264, 3261, 3267, 3270, 3273, 3274, 3275, 3282, 3278, - 7224, 3279, 7224, 3280, 3281, 3284, 3293, 3288, 7224, 3299, - 7224, 3289, 3303, 3294, 3296, 3300, 7224, 3304, 3305, 3309, + 7235, 3279, 7235, 3280, 3281, 3284, 3293, 3288, 7235, 3299, + 7235, 3289, 3303, 3294, 3296, 3300, 7235, 3304, 3305, 3309, 3306, 3311, 3313, 3317, 3318, 3319, 3320, 3321, 3328, 3323, 3327, 3330, 3334, 3333, 3337, 3340, 3342, 3343, 3345, 3344, 3347, 3351, 3352, 3353, 3360, 3362, 3363, 3364, 3365, 3366, - 7224, 3370, 3373, 3367, 3378, 3375, 3377, 3379, 3385, 3386, + 7235, 3370, 3373, 3367, 3378, 3375, 3377, 3379, 3385, 3386, 3387, 3388, 3392, 3390, 3394, 3399, 3402, 3396, 3403, 3406, - 3413, 3415, 3407, 3422, 7224, 3417, 3420, 3421, 3424, 7224, + 3413, 3415, 3407, 3422, 7235, 3417, 3420, 3421, 3424, 7235, 3428, 3425, 3434, 3436, 3429, 3426, 3432, 3438, 3445, 3439, - 3442, 3448, 3452, 3456, 3459, 3460, 7224, 3453, 3461, 3451, + 3442, 3448, 3452, 3456, 3459, 3460, 7235, 3453, 3461, 3451, 3469, 3474, 3465, 3477, 3481, 3478, 3484, 3486, 3488, 3490, 3467, 3491, 3492, 3493, 3494, 3502, 3504, 3505, 3501, 3514, 3500, 3507, 3516, 3517, 3503, 3510, 3518, 3519, 3520, 3525, - 3527, 3528, 3526, 3524, 3531, 3532, 3529, 3536, 7224, 3545, + 3527, 3528, 3526, 3524, 3531, 3532, 3529, 3536, 7235, 3545, 3546, 3537, 3553, 3551, 3552, 3554, 3555, 3556, 3560, 3563, - 7224, 3565, 3562, 3570, 3566, 3579, 3573, 3567, 3576, 3583, - 3584, 3587, 3585, 3586, 3589, 7224, 3591, 7224, 3590, 3594, + 7235, 3565, 3562, 3570, 3566, 3579, 3573, 3567, 3576, 3583, + 3584, 3587, 3585, 3586, 3589, 7235, 3591, 7235, 3590, 3594, 3604, 3608, 3609, 3596, 3610, 3617, 3599, 3618, 3619, 3620, 3623, 3622, 3627, 3628, 3629, 3630, 3631, 3640, 3633, 3641, 3654, 3644, 3636, 3646, 3648, 3655, 3657, 3664, 3660, 3662, - 7224, 7224, 3661, 3667, 3670, 3672, 3668, 3678, 3676, 3679, - 3683, 3688, 3682, 3689, 3690, 3697, 7224, 3698, 3699, 3701, + 7235, 7235, 3661, 3667, 3670, 3672, 3668, 3678, 3676, 3679, + 3683, 3688, 3682, 3689, 3690, 3697, 7235, 3698, 3699, 3701, 3702, 3703, 3711, 3704, 3716, 3719, 3720, 3718, 3727, 3724, - 7224, 3706, 3728, 3735, 3731, 3734, 3739, 7224, 3738, 7224, + 7235, 3706, 3728, 3735, 3731, 3734, 3739, 7235, 3738, 7235, 3736, 3740, 3741, 3745, 3747, 3748, 3749, 3754, 3751, 3756, 3758, 3766, 3767, 3774, 3773, 3769, 3778, 3771, 3775, 3779, - 3781, 3783, 3790, 3785, 3786, 3788, 7224, 3795, 3789, 3634, - 3792, 3799, 3800, 3803, 3801, 3804, 7224, 3811, 3812, 3813, + 3781, 3783, 3790, 3785, 3786, 3788, 7235, 3795, 3789, 3634, + 3792, 3799, 3800, 3803, 3801, 3804, 7235, 3811, 3812, 3813, 3814, 3815, 3818, 3820, 3823, 3824, 3829, 3831, 3825, 3834, - 3836, 7224, 3833, 3837, 3844, 3841, 3840, 3849, 3851, 3856, - 3861, 7224, 3842, 3854, 3868, 3865, 3866, 3867, 3870, 3871, + 3836, 7235, 3833, 3837, 3844, 3841, 3840, 3849, 3851, 3856, + 3861, 7235, 3842, 3854, 3868, 3865, 3866, 3867, 3870, 3871, 3872, 3874, 3875, 3876, 3877, 3879, 3883, 3884, 3880, 3887, - 3886, 3898, 3897, 3889, 3901, 3911, 3907, 7224, 3908, 3912, + 3886, 3898, 3897, 3889, 3901, 3911, 3907, 7235, 3908, 3912, 3913, 3914, 3915, 3916, 3920, 3921, 3926, 3938, 3919, 3941, - 3942, 3923, 3927, 3929, 3946, 3947, 3955, 3953, 7224, 3958, + 3942, 3923, 3927, 3929, 3946, 3947, 3955, 3953, 7235, 3958, 3954, 3963, 3959, 3960, 3961, 3964, 3969, 3970, 3966, 3974, 3962, 3975, 3976, 3978, 3979, 3984, 3991, 3987, 3988, 3992, - 3993, 4003, 3994, 3995, 3998, 4002, 7224, 4017, 4004, 4009, + 3993, 4003, 3994, 3995, 3998, 4002, 7235, 4017, 4004, 4009, 4019, 4012, 4020, 4028, 4025, 4026, 4027, 4030, 4031, 4032, - 4036, 4037, 4038, 4041, 4042, 7224, 7224, 4044, 4045, 4049, - 7224, 4051, 4047, 4061, 4050, 3917, 4052, 4054, 4063, 4064, - 4065, 4067, 4071, 4073, 4075, 4077, 7224, 4086, 4078, 4087, - 4082, 4085, 4094, 4089, 7224, 4090, 4104, 4096, 4100, 4099, + 4036, 4037, 4038, 4041, 4042, 7235, 7235, 4044, 4045, 4049, + 7235, 4051, 4047, 4061, 4050, 3917, 4052, 4054, 4063, 4064, + 4065, 4067, 4071, 4073, 4075, 4077, 7235, 4086, 4078, 4087, + 4082, 4085, 4094, 4089, 7235, 4090, 4104, 4096, 4100, 4099, 4103, 4106, 4110, 4111, 4107, 4112, 4113, 4116, 4120, 4123, - 4128, 4124, 4125, 4130, 7224, 4127, 4132, 4133, 4136, 4137, + 4128, 4124, 4125, 4130, 7235, 4127, 4132, 4133, 4136, 4137, - 4139, 4141, 7224, 4143, 4145, 4151, 4153, 4146, 4164, 4165, + 4139, 4141, 7235, 4143, 4145, 4151, 4153, 4146, 4164, 4165, 4157, 4167, 4160, 4170, 4171, 4172, 4174, 4175, 4176, 4185, - 4180, 4178, 4182, 4186, 4189, 4191, 4197, 7224, 4200, 4202, - 4183, 4205, 4207, 7224, 4212, 4220, 4221, 7224, 4222, 4204, - 4223, 4217, 4231, 7224, 4224, 4233, 4226, 4234, 4227, 4245, - 4232, 4246, 4242, 4243, 4244, 4248, 4247, 7224, 4249, 4250, - 4251, 7224, 4255, 4265, 4268, 4271, 4257, 4278, 4273, 4275, - 4276, 4274, 7224, 4281, 7224, 4260, 4284, 4287, 7224, 4285, + 4180, 4178, 4182, 4186, 4189, 4191, 4197, 7235, 4200, 4202, + 4183, 4205, 4207, 7235, 4212, 4220, 4221, 7235, 4222, 4204, + 4223, 4217, 4231, 7235, 4224, 4233, 4226, 4234, 4227, 4245, + 4232, 4246, 4242, 4243, 4244, 4248, 4247, 7235, 4249, 4250, + 4251, 7235, 4255, 4265, 4268, 4271, 4257, 4278, 4273, 4275, + 4276, 4274, 7235, 4281, 7235, 4260, 4284, 4287, 7235, 4285, 4289, 4290, 4292, 4293, 4294, 4298, 4304, 4306, 4300, 4308, - 4309, 4310, 4311, 4313, 4322, 4312, 4314, 4319, 4321, 7224, + 4309, 4310, 4311, 4313, 4322, 4312, 4314, 4319, 4321, 7235, 4324, 4326, 4331, 4332, 4328, 4333, 4338, 4339, 4342, 4345, - 4343, 7224, 7224, 4353, 7224, 4346, 4354, 4355, 4357, 7224, + 4343, 7235, 7235, 4353, 7235, 4346, 4354, 4355, 4357, 7235, 4359, 4358, 4366, 4361, 4364, 4367, 4362, 4368, 4380, 4375, - 7224, 4382, 4384, 7224, 4377, 4387, 4394, 4389, 4390, 4391, + 7235, 4382, 4384, 7235, 4377, 4387, 4394, 4389, 4390, 4391, 4392, 4395, 4398, 4401, 4402, 4404, 4405, 4406, 4408, 4410, - 4409, 4427, 4415, 4423, 7224, 4411, 4417, 4432, 4436, 4428, - 4430, 4445, 4447, 4433, 7224, 4449, 4437, 4441, 4451, 4455, - 7224, 4457, 7224, 4443, 4458, 4460, 4463, 4464, 4468, 4475, - 4470, 7224, 4471, 4477, 4479, 4474, 4476, 4480, 4484, 4487, - 4485, 4486, 4493, 4501, 4494, 4496, 4498, 4508, 4497, 7224, + 4409, 4427, 4415, 4423, 7235, 4411, 4417, 4432, 4436, 4428, + 4430, 4445, 4447, 4433, 7235, 4449, 4437, 4441, 4451, 4455, + 7235, 4457, 7235, 4443, 4458, 4460, 4463, 4464, 4468, 4475, + 4470, 7235, 4471, 4477, 4479, 4474, 4476, 4480, 4484, 4487, + 4485, 4486, 4493, 4501, 4494, 4496, 4498, 4508, 4497, 7235, 4506, 4512, 4511, 4515, 4516, 4518, 4519, 4520, 4527, 4528, 4522, 4530, 4531, 4536, 4532, 4537, 4541, 4543, 4545, 4546, - 7224, 4549, 4551, 4554, 4555, 4567, 4557, 4559, 4558, 7224, - 4562, 4572, 4573, 7224, 4571, 4575, 4579, 4581, 4582, 4585, - 4586, 4589, 4565, 4587, 4591, 4592, 7224, 4596, 4598, 4593, - 4594, 4602, 4609, 4611, 7224, 7224, 4614, 7224, 4615, 4612, + 7235, 4549, 4551, 4554, 4555, 4567, 4557, 4559, 4558, 7235, + 4562, 4572, 4573, 7235, 4571, 4575, 4579, 4581, 4582, 4585, + 4586, 4589, 4565, 4587, 4591, 4592, 7235, 4596, 4598, 4593, + 4594, 4602, 4609, 4611, 7235, 7235, 4614, 7235, 4615, 4612, 4616, 4619, 4617, 4623, 4625, 4627, 4639, 4622, 4626, 4630, - 4641, 4643, 7224, 4628, 4650, 4648, 4655, 4657, 4658, 4659, - 4653, 4660, 7224, 7224, 4664, 4666, 4665, 4669, 4671, 4673, - 4675, 4682, 4678, 4686, 4689, 4679, 4696, 7224, 4691, 4677, + 4641, 4643, 7235, 4628, 4650, 4648, 4655, 4657, 4658, 4659, + 4653, 4660, 7235, 7235, 4664, 4666, 4665, 4669, 4671, 4673, + 4675, 4682, 4678, 4686, 4689, 4679, 4696, 7235, 4691, 4677, - 4694, 4699, 7224, 4700, 4701, 4703, 4702, 4704, 4705, 4708, + 4694, 4699, 7235, 4700, 4701, 4703, 4702, 4704, 4705, 4708, 4707, 4710, 4711, 4713, 4714, 4716, 4729, 4720, 4721, 4722, - 4730, 4732, 4736, 4735, 4728, 4744, 7224, 4737, 4739, 4749, - 4750, 4752, 4753, 4754, 4755, 4759, 4757, 4762, 4766, 7224, - 4764, 7224, 4761, 4767, 4780, 4763, 4770, 4783, 4784, 4785, + 4730, 4732, 4736, 4735, 4728, 4744, 7235, 4737, 4739, 4749, + 4750, 4752, 4753, 4754, 4755, 4759, 4757, 4762, 4766, 7235, + 4764, 7235, 4761, 4767, 4780, 4763, 4770, 4783, 4784, 4785, 4787, 4772, 4791, 4793, 4794, 4798, 4799, 4803, 4792, 4804, - 4808, 4809, 7224, 4812, 4814, 4816, 4818, 4823, 4825, 4826, - 7224, 4828, 4820, 4829, 4832, 4835, 4837, 4838, 4842, 4843, + 4808, 4809, 7235, 4812, 4814, 4816, 4818, 4823, 4825, 4826, + 7235, 4828, 4820, 4829, 4832, 4835, 4837, 4838, 4842, 4843, 4846, 4839, 4847, 4851, 4856, 4848, 4858, 4859, 4853, 4864, - 4865, 4866, 7224, 4868, 4872, 4869, 4875, 4876, 4877, 4878, + 4865, 4866, 7235, 4868, 4872, 4869, 4875, 4876, 4877, 4878, - 4880, 4886, 4890, 4881, 4891, 4893, 7224, 4892, 4896, 4898, - 4905, 7224, 4901, 4903, 4904, 4908, 4909, 4911, 4912, 4914, - 4917, 4924, 7224, 4929, 4916, 4926, 4920, 4922, 4930, 4935, - 4937, 4941, 4938, 4943, 4946, 7224, 4957, 4944, 4953, 4954, - 4952, 4955, 4960, 4961, 4962, 4965, 7224, 4969, 4971, 4973, + 4880, 4886, 4890, 4881, 4891, 4893, 7235, 4892, 4896, 4898, + 4905, 7235, 4901, 4903, 4904, 4908, 4909, 4911, 4912, 4914, + 4917, 4924, 7235, 4929, 4916, 4926, 4920, 4922, 4930, 4935, + 4937, 4941, 4938, 4943, 4946, 7235, 4957, 4944, 4953, 4954, + 4952, 4955, 4960, 4961, 4962, 4965, 7235, 4969, 4971, 4973, 4972, 4985, 4986, 4975, 4982, 4989, 4988, 4990, 4984, 4992, 4998, 4994, 4999, 5002, 5003, 5004, 5006, 5016, 5021, 5018, - 7224, 5007, 7224, 5017, 5019, 5023, 5031, 5029, 5026, 5032, - 5034, 5036, 7224, 5041, 5043, 5045, 5040, 5042, 7224, 5048, - 5046, 5049, 5053, 7224, 5047, 5061, 5052, 5063, 5068, 5069, + 7235, 5007, 7235, 5017, 5019, 5023, 5031, 5029, 5026, 5032, + 5034, 5036, 7235, 5041, 5043, 5045, 5040, 5042, 7235, 5048, + 5046, 5049, 5053, 7235, 5047, 5061, 5052, 5063, 5068, 5069, - 7224, 5074, 5076, 5077, 5084, 5086, 5081, 5088, 5071, 5091, - 5083, 5089, 5093, 5096, 5100, 5099, 5101, 7224, 5098, 5104, - 5109, 5105, 5111, 5114, 5115, 5117, 5118, 5120, 5121, 7224, + 7235, 5074, 5076, 5077, 5084, 5086, 5081, 5088, 5071, 5091, + 5083, 5089, 5093, 5096, 5100, 5099, 5101, 7235, 5098, 5104, + 5109, 5105, 5111, 5114, 5115, 5117, 5118, 5120, 5121, 7235, 5125, 5126, 5127, 5128, 5129, 5131, 5132, 5133, 5142, 5139, - 5140, 5149, 5144, 5151, 5153, 5154, 5155, 5157, 7224, 5161, - 5158, 5160, 5169, 5177, 5167, 5164, 7224, 5178, 7224, 5168, - 5179, 5180, 5183, 5184, 7224, 5188, 5189, 5190, 5194, 7224, - 7224, 5196, 5203, 5198, 5202, 5199, 7224, 7224, 5205, 7224, - 5206, 7224, 5207, 5209, 7224, 7224, 5212, 5211, 5213, 5214, - 7224, 5215, 5218, 5227, 7224, 5229, 7224, 5236, 5219, 5232, + 5140, 5149, 5144, 5151, 5153, 5154, 5155, 5157, 7235, 5161, + 5158, 5160, 5169, 5177, 5167, 5164, 7235, 5178, 7235, 5168, + 5179, 5180, 5183, 5184, 7235, 5188, 5189, 5190, 5194, 7235, + 7235, 5196, 5203, 5198, 5202, 5199, 7235, 7235, 5205, 7235, + 5206, 7235, 5207, 5209, 7235, 7235, 5212, 5211, 5213, 5214, + 7235, 5215, 5218, 5227, 7235, 5229, 7235, 5236, 5219, 5232, - 5222, 5234, 5240, 7224, 5241, 5243, 5242, 5247, 5249, 7224, - 5250, 5244, 5251, 5258, 5255, 5261, 7224, 5263, 5264, 5265, - 5268, 5269, 7224, 5270, 5275, 5272, 5278, 5280, 5279, 5281, - 5283, 5290, 5291, 5282, 5293, 5295, 5297, 5301, 5300, 5303, - 5308, 5310, 5311, 5312, 5313, 5316, 5318, 5324, 5326, 5320, - 5322, 5328, 5329, 5330, 5334, 5336, 5333, 5338, 5344, 5345, - 5347, 5341, 5348, 5354, 5339, 5357, 5358, 5360, 5364, 5361, - 5368, 5365, 5369, 5371, 5372, 5373, 5375, 5374, 5381, 5382, - 5377, 5379, 5385, 7224, 5388, 5390, 5392, 5395, 5399, 5402, - 5403, 5405, 5410, 5416, 7224, 5418, 7224, 5420, 5411, 5414, + 5222, 5234, 5240, 7235, 5241, 5243, 5242, 5247, 5249, 7235, + 5250, 5244, 5251, 5258, 5255, 5261, 7235, 5263, 5264, 5265, + 5268, 5271, 7235, 5269, 5275, 5272, 5278, 5281, 5279, 5280, + 5291, 5283, 5286, 5282, 5298, 5295, 5299, 5301, 5305, 5308, + 5310, 5312, 5302, 5316, 5313, 5317, 5320, 5323, 5325, 5327, + 5328, 5329, 5330, 5332, 5333, 5335, 5336, 5338, 5343, 5340, + 5345, 5346, 5347, 5352, 5356, 5357, 5359, 5360, 5366, 5361, + 5368, 5363, 5371, 5369, 5372, 5373, 5375, 5381, 5374, 5377, + 5384, 5385, 5388, 7235, 5390, 5392, 5394, 5395, 5399, 5401, + 5402, 5405, 5410, 5411, 7235, 5415, 7235, 5418, 5420, 5421, - 5422, 5423, 7224, 5424, 5427, 5426, 5430, 5428, 5431, 5432, - 5433, 5436, 5439, 5442, 7224, 5452, 5447, 5435, 5440, 5455, - 5459, 7224, 5460, 5466, 5461, 5463, 5467, 5468, 5471, 5470, - 5472, 5473, 5474, 5476, 5477, 5483, 5492, 5478, 5487, 5494, - 7224, 5496, 5502, 5503, 5499, 5504, 5506, 5507, 5509, 5508, - 5511, 5512, 5514, 5515, 5516, 5518, 5519, 5528, 5537, 5529, - 5540, 7224, 5525, 7224, 5533, 5541, 5543, 5545, 5546, 5547, - 5548, 5549, 5552, 7224, 7224, 5550, 5554, 5556, 5558, 5561, - 5562, 5564, 5566, 5568, 5574, 7224, 5573, 5575, 5579, 5582, - 5592, 5581, 7224, 5584, 5587, 5589, 5593, 5596, 7224, 5598, + 5422, 5424, 7235, 5423, 5426, 5425, 5428, 5427, 5429, 5431, + 5430, 5434, 5435, 5445, 7235, 5451, 5457, 5440, 5437, 5458, + 5461, 7235, 5462, 5464, 5465, 5466, 5468, 5469, 5470, 5472, + 5473, 5477, 5475, 5474, 5480, 5482, 5489, 5479, 5492, 5495, + 7235, 5497, 5503, 5504, 5500, 5505, 5506, 5507, 5508, 5509, + 5512, 5513, 5515, 5516, 5517, 5519, 5520, 5527, 5531, 5532, + 5538, 7235, 5524, 7235, 5540, 5541, 5542, 5544, 5545, 5546, + 5547, 5548, 5551, 7235, 7235, 5553, 5556, 5555, 5562, 5557, + 5559, 5576, 5567, 5565, 5579, 7235, 5569, 5571, 5581, 5585, + 5591, 5582, 7235, 5588, 5592, 5594, 5593, 5596, 5598, 7235, - 5600, 5601, 5602, 5612, 5604, 5615, 5616, 5608, 5606, 5618, - 5619, 5625, 7224, 7224, 7224, 7224, 5626, 5620, 5628, 5632, - 5633, 5634, 5635, 5636, 5640, 5642, 5638, 5641, 5643, 7224, - 5653, 7224, 7224, 5654, 7224, 5655, 5656, 5657, 5663, 5664, - 5665, 5667, 7224, 5666, 7224, 5668, 5672, 5669, 5679, 5686, - 5682, 5676, 5689, 5690, 5691, 5680, 5692, 5699, 5700, 5701, - 5694, 5703, 5707, 5712, 7224, 7224, 5704, 5714, 5715, 5722, - 5719, 5720, 5723, 5732, 5727, 5728, 5729, 5730, 5734, 5735, - 5746, 5747, 5739, 5736, 5750, 7224, 5751, 5752, 5759, 7224, - 5743, 7224, 5760, 5761, 5763, 5753, 5754, 5764, 5769, 5774, + 5599, 5600, 5602, 5604, 5608, 5610, 5615, 5617, 5618, 5619, + 5620, 5621, 5624, 7235, 7235, 7235, 7235, 5625, 5628, 5630, + 5634, 5631, 5636, 5638, 5639, 5645, 5646, 5643, 5640, 5647, + 7235, 5657, 7235, 7235, 5653, 7235, 5659, 5661, 5663, 5665, + 5650, 5667, 5666, 7235, 5670, 7235, 5672, 5678, 5671, 5680, + 5682, 5684, 5687, 5691, 5688, 5692, 5693, 5694, 5702, 5698, + 5699, 5701, 5704, 5708, 5714, 7235, 7235, 5705, 5720, 5721, + 5723, 5710, 5725, 5726, 5733, 5728, 5729, 5735, 5731, 5737, + 5736, 5747, 5748, 5738, 5739, 5750, 7235, 5752, 5753, 5760, + 7235, 5754, 7235, 5756, 5762, 5764, 5755, 5765, 5768, 5770, - 5770, 5772, 5777, 7224, 7224, 5780, 5787, 5783, 7224, 7224, - 5784, 5785, 5786, 5788, 5791, 5792, 5793, 7224, 5795, 5800, - 5796, 5801, 5802, 5811, 5794, 7224, 5808, 7224, 5814, 5815, - 5821, 5818, 5828, 5830, 5825, 5827, 5832, 5836, 5829, 5831, - 5833, 7224, 5839, 5840, 7224, 5847, 5846, 5850, 5842, 5851, - 5858, 5852, 7224, 5861, 5855, 5864, 5869, 5871, 7224, 5875, - 5872, 5877, 5878, 7224, 5880, 7224, 5866, 5883, 5881, 5890, - 5885, 7224, 5891, 5892, 5894, 7224, 5899, 5901, 5903, 5904, - 5896, 5905, 7224, 5914, 5906, 7224, 5908, 5916, 5919, 5922, - 5910, 5927, 5917, 5923, 5929, 5937, 5933, 5934, 7224, 7224, + 5771, 5774, 5776, 5781, 7235, 7235, 5775, 5788, 5784, 7235, + 7235, 5785, 5787, 5789, 5791, 5795, 5792, 5796, 7235, 5797, + 5802, 5800, 5798, 5803, 5817, 5805, 7235, 5808, 7235, 5812, + 5821, 5820, 5814, 5828, 5833, 5826, 5829, 5836, 5835, 5838, + 5831, 5837, 7235, 5840, 5841, 7235, 5850, 5848, 5853, 5843, + 5852, 5859, 5855, 7235, 5862, 5860, 5865, 5867, 5869, 5872, + 7235, 5874, 5875, 5876, 5877, 7235, 5883, 7235, 5880, 5884, + 5885, 5893, 5891, 7235, 5888, 5894, 5895, 7235, 5899, 5902, + 5905, 5906, 5907, 5910, 7235, 5912, 5913, 7235, 5915, 5917, + 5918, 5922, 5924, 5926, 5927, 5928, 5929, 5936, 5933, 5934, - 5942, 5935, 135, 5945, 5946, 5947, 5948, 5949, 5956, 5951, - 5953, 5959, 7224, 7224, 5960, 7224, 5954, 5961, 7224, 5952, - 5963, 5970, 5972, 5973, 5974, 5975, 5979, 5981, 5982, 5983, - 5984, 5985, 5991, 7224, 6003, 6006, 5988, 6009, 6010, 6012, - 6014, 6016, 6018, 6020, 6021, 6022, 6001, 6023, 6024, 6025, - 6028, 6029, 6031, 6033, 6035, 6037, 7224, 6044, 6046, 6048, - 6039, 6050, 6052, 6041, 7224, 6061, 6056, 6065, 6062, 7224, - 6069, 6066, 6070, 6072, 6073, 6074, 7224, 6076, 6078, 6081, - 6084, 6086, 6085, 6087, 6090, 6089, 6097, 7224, 6093, 6092, - 6099, 7224, 7224, 7224, 7224, 6102, 6111, 6100, 7224, 6113, + 7235, 7235, 5947, 5937, 135, 5950, 5945, 5951, 5952, 5948, + 5959, 5955, 5956, 5958, 7235, 7235, 5961, 7235, 5962, 5964, + 7235, 5963, 5973, 5974, 5965, 5979, 5969, 5977, 5978, 5986, + 5981, 5990, 5989, 5991, 5994, 7235, 6005, 6012, 5996, 6008, + 6013, 6016, 6018, 6020, 6022, 6009, 6024, 6026, 6027, 6028, + 6030, 6031, 6032, 6033, 6034, 6035, 6039, 6040, 7235, 6042, + 6048, 6049, 6050, 6057, 6058, 6045, 7235, 6062, 6066, 6068, + 6069, 7235, 6071, 6072, 6075, 6077, 6078, 6079, 7235, 6080, + 6083, 6086, 6089, 6090, 6091, 6092, 6094, 6095, 6102, 7235, + 6100, 6097, 6104, 7235, 6105, 7235, 7235, 7235, 6107, 6117, - 6108, 6115, 6116, 7224, 6118, 6119, 6126, 6121, 7224, 7224, - 7224, 6123, 6124, 6127, 7224, 6125, 6137, 7224, 6130, 7224, - 6132, 7224, 6138, 6139, 6146, 6141, 7224, 6149, 6151, 6152, - 6155, 7224, 6158, 6161, 6163, 6165, 6167, 6169, 6168, 7224, - 6176, 6172, 6175, 6179, 6171, 6181, 6182, 6185, 6183, 6192, - 6184, 6195, 7224, 6196, 6197, 6199, 6205, 6191, 6198, 6207, - 7224, 6208, 7224, 6212, 7224, 6214, 6216, 6217, 6215, 6223, - 6218, 6220, 6225, 6221, 6224, 6231, 6235, 6237, 6238, 6240, - 6242, 6248, 6243, 7224, 7224, 6255, 6245, 7224, 6252, 6261, - 7224, 6250, 7224, 6264, 7224, 6253, 6257, 7224, 6265, 6267, + 6111, 7235, 6119, 6114, 6121, 6122, 7235, 6124, 6126, 6133, + 6129, 7235, 7235, 7235, 6130, 6131, 6134, 7235, 6132, 6144, + 7235, 6137, 7235, 6139, 7235, 6142, 6145, 6153, 6148, 7235, + 6151, 6158, 6159, 6161, 7235, 6164, 6167, 6169, 6170, 6172, + 6174, 6175, 7235, 6182, 6178, 6181, 6185, 6177, 6187, 6188, + 6189, 6190, 6197, 6196, 6201, 7235, 6198, 6205, 6206, 6203, + 6207, 6212, 6213, 7235, 6214, 7235, 6216, 7235, 6217, 6218, + 6219, 6220, 6229, 6223, 6222, 6225, 6235, 6236, 6237, 6242, + 6244, 6245, 6246, 6248, 6250, 6251, 7235, 7235, 6260, 6252, + 7235, 6255, 6265, 7235, 6258, 7235, 6268, 7235, 6262, 6269, - 6272, 7224, 7224, 6275, 6268, 6276, 6284, 6279, 6281, 6282, - 7224, 6286, 6289, 6290, 6292, 7224, 6299, 7224, 6294, 6304, - 6295, 7224, 6296, 6297, 6306, 6308, 6310, 6311, 6313, 6315, - 6319, 6316, 6327, 6320, 6317, 6322, 6334, 6330, 6335, 6337, - 6343, 7224, 7224, 7224, 6341, 6346, 6354, 6350, 6352, 6357, - 6347, 7224, 6356, 6359, 6362, 6360, 6369, 6364, 6371, 7224, - 6368, 6372, 6373, 6374, 6376, 6377, 6378, 6383, 7224, 6385, - 6389, 6400, 6386, 6393, 6397, 6404, 6406, 6409, 6401, 6412, - 6413, 6395, 6420, 6417, 7224, 7224, 6416, 6418, 7224, 6424, - 6428, 7224, 6419, 7224, 6425, 6429, 6430, 6431, 6432, 7224, + 7235, 6271, 6273, 6275, 7235, 7235, 6282, 6274, 6277, 6290, + 6283, 6288, 6291, 7235, 6292, 6295, 6296, 6298, 6300, 7235, + 6303, 7235, 6301, 6308, 6307, 7235, 6304, 6305, 6314, 6318, + 6319, 6320, 6323, 6324, 6327, 6325, 6338, 6311, 6329, 6328, + 6344, 6337, 6346, 6347, 6353, 7235, 7235, 7235, 6339, 6355, + 6362, 6358, 6360, 6365, 6361, 7235, 6364, 6367, 6368, 6370, + 6377, 6374, 6381, 7235, 6372, 6376, 6378, 6382, 6386, 6383, + 6388, 6387, 7235, 6398, 6400, 6406, 6407, 6401, 6408, 6410, + 6417, 6419, 6411, 6422, 6414, 6423, 6430, 6426, 7235, 7235, + 6429, 6425, 7235, 6433, 6435, 7235, 6436, 7235, 6437, 6438, - 6436, 6437, 6439, 6440, 7224, 6441, 6443, 6445, 6456, 7224, - 6442, 6465, 6446, 6448, 6457, 6464, 7224, 7224, 6450, 6473, - 7224, 6475, 6476, 6468, 6483, 6478, 6479, 6485, 6486, 7224, - 6488, 6489, 6480, 6493, 6496, 6495, 6497, 7224, 6498, 6499, - 6502, 6504, 7224, 6505, 6509, 6510, 6508, 6511, 7224, 6512, - 6514, 6521, 6526, 7224, 6519, 6530, 6532, 7224, 7224, 7224, - 6536, 6538, 6540, 7224, 7224, 7224, 6541, 7224, 6543, 6546, - 6547, 6549, 7224, 6550, 7224, 7224, 6553, 6557, 6561, 6563, - 6570, 6560, 7224, 6569, 6571, 6573, 6575, 6576, 7224, 7224, - 6577, 6579, 6581, 6582, 6584, 6585, 6586, 7224, 7224, 6588, + 6439, 6440, 6442, 7235, 6445, 6446, 6447, 6450, 7235, 6448, + 6452, 6454, 6457, 6463, 7235, 6451, 6471, 6470, 6473, 6474, + 6475, 7235, 7235, 6476, 6478, 7235, 6482, 6483, 6484, 6491, + 6487, 6486, 6496, 6500, 7235, 6489, 6501, 6502, 6503, 6504, + 6507, 6508, 7235, 6510, 6511, 6512, 6513, 7235, 6516, 6515, + 6520, 6521, 6524, 7235, 6535, 6525, 6547, 6539, 7235, 6526, + 6390, 6536, 7235, 7235, 7235, 6528, 6551, 6548, 7235, 7235, + 7235, 6543, 7235, 6554, 6555, 6556, 6562, 7235, 6557, 7235, + 7235, 6564, 6568, 6573, 6577, 6581, 6580, 7235, 6569, 6582, + 6586, 6583, 6588, 7235, 7235, 6590, 6592, 6567, 6594, 6595, - 6589, 6591, 6598, 6594, 7224, 6592, 6597, 6605, 6608, 6611, - 6615, 6619, 6616, 6620, 6621, 6628, 6629, 6624, 6626, 6632, - 6634, 6635, 6636, 6638, 6648, 6644, 6646, 6652, 6643, 6654, - 7224, 7224, 6657, 6647, 7224, 6663, 6660, 7224, 6664, 7224, - 6666, 6668, 6671, 6673, 7224, 6675, 6677, 6679, 6681, 6683, - 7224, 6684, 6686, 6688, 6689, 6690, 6691, 7224, 6692, 6695, - 6696, 6700, 6697, 6701, 6704, 6705, 6718, 7224, 6708, 6720, - 7224, 7224, 6703, 6710, 6722, 6724, 6726, 7224, 6727, 6734, - 6729, 6731, 6732, 6735, 6733, 7224, 6739, 6737, 7224, 7224, - 6738, 6740, 7224, 6756, 7224, 6741, 6750, 7224, 7224, 7224, + 6597, 6598, 6599, 7235, 7235, 6603, 6604, 6605, 6606, 6607, + 7235, 6608, 6612, 6621, 6618, 6623, 6630, 6632, 6610, 6633, + 6634, 6641, 6642, 6637, 6639, 6644, 6645, 6647, 6648, 6656, + 6657, 6653, 6661, 6664, 6658, 6666, 7235, 7235, 6669, 6670, + 7235, 6675, 6672, 7235, 6676, 7235, 6678, 6680, 6683, 6686, + 7235, 6688, 6690, 6692, 6696, 6693, 7235, 6697, 6699, 7235, + 6701, 6702, 6703, 6704, 7235, 6705, 6708, 6709, 6713, 6710, + 6714, 6717, 6721, 6731, 7235, 6718, 6735, 7235, 7235, 6723, + 6736, 6716, 6737, 6726, 7235, 6740, 6751, 6732, 6747, 6748, + 6750, 6749, 7235, 6753, 6754, 7235, 7235, 6756, 6755, 7235, - 7224, 7224, 7224, 7224, 7224, 6747, 6758, 7224, 7224, 6759, - 6763, 6765, 6769, 7224, 6774, 7224, 6754, 6766, 6776, 6771, - 7224, 6778, 7224, 6760, 6779, 6781, 6782, 6785, 6787, 6789, - 6793, 6795, 6794, 6796, 6799, 6797, 6803, 6804, 6798, 6805, - 6811, 6801, 6808, 6818, 6822, 7224, 7224, 7224, 7224, 6823, - 6824, 6826, 6830, 6829, 6831, 6834, 6836, 6840, 6841, 6842, - 6843, 6846, 6847, 6849, 6856, 6852, 6853, 6855, 6858, 6854, - 6863, 6868, 6870, 7224, 6876, 6871, 6873, 6878, 7224, 6879, - 7224, 6880, 7224, 7224, 6882, 6883, 6885, 6887, 6895, 6896, - 6888, 6891, 6897, 6900, 6908, 7224, 6910, 7224, 7224, 7224, + 6757, 7235, 6761, 6762, 7235, 7235, 7235, 7235, 7235, 7235, + 7235, 7235, 6764, 6771, 7235, 7235, 6766, 6773, 6776, 6778, + 7235, 6781, 7235, 6783, 6784, 6785, 6788, 7235, 6786, 7235, + 6790, 6791, 6792, 5998, 6794, 6795, 6798, 6799, 6801, 6804, + 6803, 6807, 6805, 6812, 6810, 6816, 6817, 6821, 6823, 6831, + 6825, 6827, 7235, 7235, 7235, 7235, 6833, 6834, 6836, 6839, + 6841, 6843, 6850, 6852, 6838, 6846, 6853, 6855, 6858, 6859, + 6861, 6868, 6864, 6865, 6867, 6870, 6871, 6874, 6880, 6882, + 7235, 6886, 6875, 6883, 6888, 7235, 6889, 7235, 6892, 7235, + 7235, 6894, 6895, 6897, 6898, 6906, 6907, 6899, 6903, 6908, - 7224, 6899, 6901, 7224, 6903, 6911, 7224, 6912, 6913, 6914, - 6922, 6923, 6919, 6924, 6925, 6927, 7224, 7224, 6928, 6931, - 6934, 6940, 6937, 6947, 6943, 6945, 6946, 6952, 6954, 6961, - 7224, 6959, 6960, 6963, 7224, 6964, 6956, 6967, 6966, 6969, - 6976, 6971, 6978, 7224, 6979, 7224, 6982, 6977, 6987, 6983, - 6984, 6993, 6994, 6996, 6997, 7224, 6972, 6999, 7004, 7007, - 7011, 7009, 7013, 7005, 7016, 7017, 7019, 7026, 7027, 7028, - 7018, 7031, 7029, 7224, 7033, 7030, 7224, 7038, 7039, 7040, - 7041, 7045, 7224, 7051, 7042, 7047, 7052, 7055, 7056, 7224, - 7058, 7065, 7062, 7224, 7067, 7224, 7224, 7068, 7070, 7071, + 6909, 6912, 7235, 6919, 7235, 7235, 7235, 7235, 6915, 6920, + 7235, 6921, 6922, 7235, 6923, 6924, 6925, 6928, 6932, 6930, + 6933, 6934, 6947, 7235, 7235, 6931, 6937, 6942, 6953, 6954, + 6956, 6957, 6960, 6962, 6963, 6964, 6972, 7235, 6970, 6971, + 6974, 7235, 6975, 6977, 6978, 6980, 6981, 6988, 6984, 6989, + 7235, 6986, 7235, 6991, 6992, 6993, 6994, 6995, 6997, 7005, + 7007, 7008, 7235, 7009, 7015, 7011, 7017, 7019, 7022, 7024, + 7023, 7026, 7028, 7032, 7037, 7038, 7039, 7029, 7044, 7040, + 7235, 7051, 7041, 7235, 7047, 7053, 7043, 7054, 7055, 7235, + 7064, 7057, 7061, 7065, 7068, 7070, 7235, 7072, 7075, 7078, - 7075, 7077, 7224, 7224, 7224, 7104, 7111, 7118, 7125, 7132, - 7139, 7146, 88, 7153, 7160, 7167, 7174, 7181, 7188, 7195, - 7202, 7209, 7216 + 7235, 7079, 7235, 7235, 7081, 7069, 7082, 7090, 7092, 7235, + 7235, 7235, 7115, 7122, 7129, 7136, 7143, 7150, 7157, 88, + 7164, 7171, 7178, 7185, 7192, 7199, 7206, 7213, 7220, 7227 } ; -static const flex_int16_t yy_def[3724] = +static const flex_int16_t yy_def[3731] = { 0, - 3705, 1, 3706, 3706, 3707, 3707, 3708, 3708, 3709, 3709, - 3710, 3710, 3711, 3711, 3712, 3712, 3705, 3713, 3705, 3705, - 3705, 3705, 3714, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3715, 3705, 3705, 3705, - 3715, 3716, 3705, 3705, 3705, 3716, 3717, 3705, 3705, 3705, - 3705, 3717, 3718, 3705, 3705, 3705, 3718, 3719, 3705, 3720, - 3705, 3719, 3719, 3721, 3705, 3705, 3705, 3705, 3721, 3722, - 3705, 3705, 3705, 3722, 3713, 3713, 3705, 3723, 3714, 3723, - 3714, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3712, 1, 3713, 3713, 3714, 3714, 3715, 3715, 3716, 3716, + 3717, 3717, 3718, 3718, 3719, 3719, 3712, 3720, 3712, 3712, + 3712, 3712, 3721, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3722, 3712, 3712, 3712, + 3722, 3723, 3712, 3712, 3712, 3723, 3724, 3712, 3712, 3712, + 3712, 3724, 3725, 3712, 3712, 3712, 3725, 3726, 3712, 3727, + 3712, 3726, 3726, 3728, 3712, 3712, 3712, 3712, 3728, 3729, + 3712, 3712, 3712, 3729, 3720, 3720, 3712, 3730, 3721, 3730, + 3721, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3715, - 3715, 3716, 3716, 3717, 3717, 3705, 3718, 3718, 3719, 3719, - 3720, 3720, 3719, 3721, 3721, 3705, 3722, 3722, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3722, + 3722, 3723, 3723, 3724, 3724, 3712, 3725, 3725, 3726, 3726, + 3727, 3727, 3726, 3728, 3728, 3712, 3729, 3729, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3719, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3726, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3705, 3705, 3713, 3705, 3705, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3712, 3712, 3720, 3712, 3712, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3719, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3726, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3719, 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3726, 3726, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3719, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3726, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3705, 3713, 3713, 3713, 3713, 3719, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3712, 3720, 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3726, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3719, 3713, 3705, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3726, 3720, 3712, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3719, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3726, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3719, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3726, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, - 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3705, - 3713, 3705, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, + 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3712, + 3720, 3712, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3719, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3726, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3705, 3705, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3705, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3705, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3712, 3712, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3712, 3712, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3713, 3705, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, + 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3712, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3719, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3705, 3713, 3705, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3705, 3705, 3705, 3705, 3713, 3713, 3713, 3705, 3713, + 3712, 3712, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3712, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3712, 3720, 3712, 3712, 3712, 3720, 3720, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, 3705, - 3705, 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3705, - 3713, 3705, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3705, 3713, 3713, - 3705, 3713, 3705, 3713, 3705, 3713, 3713, 3705, 3713, 3713, + 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, + 3720, 3712, 3712, 3712, 3720, 3720, 3720, 3712, 3720, 3720, + 3712, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, + 3712, 3720, 3720, 3712, 3720, 3712, 3720, 3712, 3720, 3720, - 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, 3705, 3713, - 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, + 3712, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3712, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3712, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3712, + 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3712, 3720, 3720, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3705, 3705, 3705, - 3713, 3713, 3713, 3705, 3705, 3705, 3713, 3705, 3713, 3713, - 3713, 3713, 3705, 3713, 3705, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3705, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3712, 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, + 3720, 3720, 3712, 3712, 3712, 3720, 3720, 3720, 3712, 3712, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3705, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3705, - 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3705, - 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3705, 3705, 3705, + 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, + 3712, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, 3712, 3720, + 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3712, 3712, 3720, 3720, 3712, - 3705, 3705, 3705, 3705, 3705, 3713, 3713, 3705, 3705, 3713, - 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, - 3705, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3705, 3705, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3705, 3713, - 3705, 3713, 3705, 3705, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3705, 3705, 3705, + 3720, 3712, 3720, 3720, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3712, 3712, 3712, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3712, + 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3705, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3705, 3705, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3705, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3705, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3713, 3705, 3713, 3713, 3705, 3713, 3713, 3713, - 3713, 3713, 3705, 3713, 3713, 3713, 3713, 3713, 3713, 3705, - 3713, 3713, 3713, 3705, 3713, 3705, 3705, 3713, 3713, 3713, + 3720, 3720, 3712, 3720, 3712, 3712, 3712, 3712, 3720, 3720, + 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, + 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, + 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, + 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3713, 3713, 3705, 3705, 0, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705 + 3712, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, 3712, + 3712, 0, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712 } ; -static const flex_int16_t yy_nxt[7265] = +static const flex_int16_t yy_nxt[7276] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -2058,7 +2059,7 @@ static const flex_int16_t yy_nxt[7265] = 2000, 86, 86, 86, 2007, 2002, 1998, 86, 2005, 2009, 86, 86, 2011, 2008, 86, 2006, 2015, 86, 86, 86, 2013, 86, 86, 86, 86, 2010, 2014, 2012, 86, 2016, - 86, 86, 86, 3705, 86, 2021, 2020, 86, 2017, 86, + 86, 86, 86, 3712, 86, 2021, 2020, 86, 2017, 86, 2022, 86, 2018, 2019, 2030, 2023, 2024, 2025, 2028, 86, 86, 2031, 86, 2026, 86, 2027, 86, 86, 86, 2032, 2034, 86, 86, 2038, 86, 2033, 86, 2040, 86, 86, @@ -2074,7 +2075,7 @@ static const flex_int16_t yy_nxt[7265] = 86, 86, 2081, 86, 86, 86, 2082, 86, 86, 86, 86, 2080, 86, 86, 2087, 2088, 86, 86, 2092, 86, - 86, 2089, 86, 3705, 2083, 2085, 2086, 2084, 2090, 2093, + 86, 2089, 86, 3712, 2083, 2085, 2086, 2084, 2090, 2093, 86, 86, 2091, 2100, 86, 2098, 2096, 2099, 2101, 2095, 86, 86, 2094, 2097, 86, 86, 86, 86, 86, 86, 86, 2108, 86, 86, 86, 2111, 86, 2103, 2112, 86, @@ -2102,14 +2103,14 @@ static const flex_int16_t yy_nxt[7265] = 2212, 2203, 2207, 86, 2211, 2213, 86, 86, 86, 2204, 86, 86, 2205, 86, 2209, 86, 86, 2216, 2221, 86, 86, 2220, 86, 2215, 86, 2210, 86, 2214, 86, 86, - 2218, 3705, 2226, 2217, 86, 2227, 86, 2219, 2229, 2224, + 2218, 3712, 2226, 2217, 86, 2227, 86, 2219, 2229, 2224, 86, 2223, 2228, 86, 2222, 2225, 2230, 86, 86, 2234, 86, 2232, 2231, 86, 86, 86, 2233, 86, 86, 86, 2238, 86, 2242, 86, 2235, 86, 86, 2236, 86, 86, 2245, 2247, 86, 2237, 86, 2248, 2244, 2239, 2240, 2241, 86, 2243, 2246, 86, 2249, 86, 2253, 86, 86, 2255, - 86, 3705, 2250, 2254, 2256, 86, 2251, 2257, 2259, 2260, + 86, 3712, 2250, 2254, 2256, 86, 2251, 2257, 2259, 2260, 86, 2252, 2258, 86, 86, 86, 86, 86, 2264, 86, 86, 2262, 2263, 2261, 86, 86, 86, 86, 2268, 2265, 2266, 2267, 2270, 2272, 2273, 86, 86, 86, 86, 86, @@ -2196,12 +2197,12 @@ static const flex_int16_t yy_nxt[7265] = 2641, 2649, 2651, 2652, 2643, 86, 2655, 86, 86, 86, 2650, 86, 86, 86, 2646, 86, 2656, 86, 2657, 2653, - 2654, 86, 86, 3705, 2660, 86, 86, 86, 2659, 86, + 2654, 86, 86, 3712, 2660, 86, 86, 86, 2659, 86, 86, 2662, 2658, 2667, 2663, 2664, 2665, 2661, 2668, 86, 86, 86, 86, 2666, 86, 2669, 86, 2673, 2674, 86, 2670, 2672, 86, 2675, 86, 86, 2678, 170, 2677, 86, 2671, 2676, 2679, 86, 86, 86, 86, 2684, 86, 86, - 86, 86, 86, 2691, 2686, 86, 86, 3705, 2685, 2680, + 86, 86, 86, 2691, 2686, 86, 86, 3712, 2685, 2680, 2682, 2681, 2683, 2687, 86, 2688, 86, 2689, 2690, 2692, 2695, 86, 86, 2696, 86, 2693, 2697, 86, 2694, 86, 86, 2700, 2698, 2701, 86, 2699, 86, 86, 2704, 86, @@ -2225,228 +2226,229 @@ static const flex_int16_t yy_nxt[7265] = 2769, 2779, 2777, 86, 86, 86, 86, 86, 2781, 2783, 86, 2786, 86, 86, 86, 2790, 2788, 2784, 86, 2780, 2789, 86, 2785, 2782, 86, 2793, 86, 86, 86, 2787, - 2794, 86, 86, 86, 2798, 86, 2791, 2799, 86, 2792, - 2800, 86, 86, 86, 86, 86, 86, 2795, 2805, 2804, + 2794, 86, 86, 2799, 86, 86, 2791, 2800, 86, 2792, + 2801, 86, 86, 86, 86, 86, 86, 2795, 2805, 86, - 2797, 2796, 2802, 86, 86, 2803, 86, 2808, 86, 2801, - 86, 2809, 2813, 86, 86, 2814, 86, 2806, 2807, 2812, - 2815, 86, 2816, 86, 86, 86, 86, 2818, 2810, 86, - 2811, 86, 2821, 86, 2820, 86, 2817, 86, 2822, 86, - 2823, 86, 86, 86, 2819, 2824, 86, 86, 2830, 86, - 2832, 86, 86, 2826, 86, 2825, 2833, 86, 86, 2835, - 86, 86, 2827, 2829, 2828, 2831, 2836, 86, 2837, 2834, - 86, 86, 2839, 86, 86, 2840, 2843, 86, 86, 2838, - 2845, 86, 86, 2844, 86, 86, 86, 86, 86, 2852, - 86, 2841, 86, 2842, 170, 86, 2854, 2848, 86, 2855, + 2796, 2797, 2798, 2803, 86, 2804, 2806, 2809, 86, 2802, + 2807, 86, 86, 2808, 86, 86, 2810, 2814, 86, 2813, + 2815, 86, 2816, 86, 2817, 86, 86, 2818, 2811, 86, + 86, 2819, 2812, 86, 2822, 2821, 86, 2823, 86, 2824, + 86, 86, 86, 86, 2820, 86, 86, 2831, 86, 86, + 2833, 86, 2825, 86, 2827, 2834, 86, 2836, 86, 86, + 86, 2826, 2830, 2828, 2835, 86, 2829, 2838, 2832, 86, + 86, 2837, 86, 86, 86, 2841, 86, 2839, 2844, 86, + 2846, 86, 86, 2845, 86, 86, 86, 170, 86, 2840, + 86, 2855, 2842, 2843, 86, 2849, 2853, 86, 86, 2854, - 2850, 86, 2847, 86, 2846, 86, 2853, 2856, 86, 2849, - 2851, 2861, 86, 2857, 3705, 86, 86, 2865, 86, 2858, - 2863, 2864, 2866, 86, 86, 2859, 2862, 86, 2860, 86, - 2867, 86, 2868, 86, 2869, 86, 86, 86, 2871, 86, - 86, 86, 2870, 86, 86, 86, 86, 2880, 86, 86, - 2878, 2873, 86, 86, 2872, 86, 2884, 2874, 2875, 2886, - 86, 2876, 2887, 2877, 2879, 86, 2881, 2882, 86, 2885, - 2883, 2890, 86, 86, 86, 2888, 86, 2889, 2892, 86, - 86, 86, 2891, 86, 86, 86, 86, 86, 2896, 86, - 86, 86, 2893, 2902, 2894, 2904, 86, 2903, 2895, 2897, + 2851, 86, 2847, 86, 2848, 86, 2856, 86, 86, 2850, + 2852, 2862, 86, 2857, 86, 86, 2858, 2866, 86, 2864, + 2865, 2859, 2867, 86, 86, 2868, 2863, 2860, 86, 2869, + 2861, 86, 2870, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 2872, 2881, 86, 86, 2879, + 86, 2871, 2874, 86, 2873, 3712, 2875, 2876, 86, 2885, + 2877, 2878, 2880, 2882, 86, 2883, 2884, 2888, 2886, 2887, + 86, 86, 2889, 2891, 86, 86, 2893, 86, 86, 86, + 2890, 86, 86, 86, 2892, 86, 86, 86, 86, 2897, + 86, 2903, 86, 86, 2905, 86, 2894, 2895, 2898, 2896, - 86, 2898, 2900, 2899, 2905, 86, 2901, 86, 2909, 86, - 2911, 2906, 86, 2908, 2910, 86, 86, 86, 2907, 86, - 86, 86, 86, 2918, 86, 86, 2917, 86, 86, 86, - 2912, 86, 86, 3705, 2914, 2913, 2916, 2924, 86, 2915, - 2922, 86, 86, 2925, 2927, 2919, 86, 2920, 2921, 2926, - 86, 2923, 2928, 86, 86, 2930, 86, 2929, 86, 86, - 86, 86, 86, 86, 2934, 86, 2936, 86, 2932, 86, - 2942, 86, 2941, 2931, 86, 86, 2945, 86, 2933, 86, - 2935, 86, 2937, 2939, 2938, 2940, 86, 86, 86, 2943, - 2946, 2948, 86, 2944, 86, 86, 2947, 86, 2951, 2952, + 2904, 2906, 86, 2899, 2900, 86, 2901, 2902, 86, 2910, + 86, 2912, 2907, 86, 2909, 2911, 86, 86, 86, 86, + 86, 86, 86, 2908, 2919, 86, 86, 2918, 86, 86, + 86, 2913, 86, 86, 2915, 2917, 2914, 86, 2925, 2916, + 86, 2923, 2926, 2927, 86, 86, 2920, 2928, 2921, 2922, + 2929, 86, 2924, 86, 86, 86, 2930, 86, 86, 86, + 86, 86, 2931, 2935, 86, 2937, 86, 2933, 86, 86, + 86, 2942, 86, 2932, 2943, 86, 3712, 2934, 86, 2936, + 86, 2938, 86, 2939, 86, 2944, 2940, 2941, 2946, 86, + 2945, 2947, 86, 2948, 86, 86, 2949, 2950, 86, 2951, - 86, 2949, 86, 2950, 2953, 86, 86, 2954, 2959, 86, - 2957, 86, 2955, 86, 86, 86, 2963, 86, 2962, 86, - 2956, 86, 2961, 2960, 2964, 86, 2958, 2966, 86, 86, - 2968, 86, 86, 86, 2967, 2969, 2965, 2972, 86, 86, - 2973, 86, 2974, 2970, 2976, 86, 86, 86, 86, 86, - 2983, 86, 2971, 86, 86, 86, 86, 3705, 2980, 2977, - 2978, 2979, 2981, 2975, 2982, 2986, 86, 86, 86, 86, - 86, 2985, 2987, 2988, 2984, 2990, 86, 86, 86, 86, - 86, 86, 86, 2989, 2991, 86, 2996, 2993, 2994, 86, - 2997, 2999, 86, 86, 2995, 86, 2992, 2998, 3000, 86, + 2952, 86, 2953, 2954, 86, 86, 86, 86, 2955, 86, + 2961, 86, 86, 86, 2959, 86, 2956, 86, 2965, 2964, + 2966, 86, 2963, 86, 2962, 2957, 2958, 2968, 86, 2960, + 86, 86, 86, 86, 86, 2969, 2974, 86, 86, 2975, + 2970, 86, 2967, 86, 86, 2972, 2978, 86, 2971, 86, + 2976, 86, 86, 86, 2973, 2985, 86, 2979, 86, 86, + 86, 2982, 2980, 86, 2981, 2977, 86, 2983, 2984, 2988, + 86, 2989, 86, 2986, 86, 2987, 86, 2990, 86, 86, + 86, 2992, 2994, 86, 86, 86, 2993, 2996, 2991, 2995, + 2998, 86, 3001, 86, 3002, 86, 2999, 86, 2997, 3000, - 3001, 3003, 170, 86, 86, 86, 3008, 86, 3002, 3005, - 3004, 3006, 86, 86, 86, 3010, 86, 86, 3009, 3013, - 86, 3012, 3011, 3007, 3014, 86, 3016, 86, 86, 3018, - 3015, 3017, 86, 86, 3019, 86, 86, 3020, 3021, 3023, - 86, 86, 86, 86, 3024, 86, 3025, 86, 86, 86, - 3022, 3026, 86, 3030, 3031, 3028, 86, 3032, 3027, 86, - 86, 3033, 3034, 86, 86, 86, 86, 86, 3038, 3029, - 3036, 3035, 86, 86, 86, 3037, 86, 86, 3039, 3040, - 3043, 3041, 86, 86, 3042, 86, 3044, 86, 3046, 3048, - 86, 3045, 3047, 86, 3051, 3049, 86, 86, 86, 86, + 86, 86, 3003, 3005, 170, 86, 86, 86, 3006, 3010, + 3007, 86, 86, 3012, 86, 86, 3011, 86, 86, 3004, + 3015, 86, 3014, 86, 3008, 3009, 3016, 86, 3022, 3013, + 3020, 3017, 3018, 86, 86, 3021, 86, 3019, 86, 86, + 3025, 86, 86, 3023, 86, 3026, 86, 3027, 86, 86, + 86, 86, 86, 3024, 3032, 3033, 3034, 3028, 3030, 3029, + 86, 86, 3036, 86, 3035, 86, 86, 86, 86, 86, + 3031, 3038, 3037, 86, 3041, 86, 3039, 86, 86, 3040, + 3042, 86, 3043, 86, 86, 3048, 3044, 86, 86, 86, + 3046, 3045, 3047, 3050, 86, 3053, 3049, 86, 86, 3051, - 86, 86, 3052, 3057, 86, 86, 86, 86, 86, 86, - 3062, 3050, 3058, 86, 86, 86, 3053, 3060, 3054, 3055, - 3056, 86, 3061, 3065, 86, 3059, 3066, 86, 86, 3063, - 3064, 86, 3069, 3070, 86, 3072, 3067, 3073, 86, 3076, - 86, 86, 86, 86, 86, 86, 86, 3068, 3077, 86, - 3078, 3080, 86, 86, 3083, 86, 3071, 3074, 3075, 86, - 86, 3081, 3084, 86, 86, 86, 3082, 3085, 86, 3079, - 3088, 86, 3705, 3086, 86, 3090, 3092, 86, 3087, 86, - 3089, 3093, 86, 3094, 86, 86, 3091, 3095, 86, 3096, - 86, 86, 3099, 86, 86, 3097, 86, 3103, 86, 3100, + 86, 86, 86, 3054, 86, 86, 3052, 3059, 86, 86, + 86, 86, 3060, 86, 3064, 86, 86, 3055, 86, 3062, + 3056, 86, 3057, 3058, 3063, 86, 3065, 86, 3061, 3067, + 86, 3066, 3072, 86, 86, 3074, 3069, 3068, 3071, 86, + 3075, 86, 86, 3078, 86, 3070, 86, 3079, 86, 86, + 86, 86, 3073, 86, 86, 3082, 86, 3085, 3076, 3080, + 3077, 86, 3083, 86, 3086, 86, 86, 3084, 86, 3081, + 3087, 3090, 86, 86, 3088, 86, 3092, 3094, 86, 3089, + 86, 3096, 86, 3091, 3097, 86, 3098, 86, 86, 86, + 86, 3093, 3099, 86, 3100, 3102, 86, 86, 86, 3101, - 3098, 3101, 3104, 86, 86, 86, 3102, 86, 3108, 86, - 3105, 3109, 86, 3110, 86, 3111, 86, 86, 86, 86, - 3112, 86, 3113, 86, 3106, 3107, 3115, 86, 3118, 86, - 86, 3114, 86, 3119, 3120, 86, 86, 3116, 3121, 3122, - 86, 3117, 86, 3123, 3126, 3127, 86, 86, 86, 3129, - 86, 3128, 3131, 3130, 3124, 86, 3125, 3132, 86, 86, - 86, 86, 86, 3137, 86, 86, 86, 86, 3136, 86, - 3139, 3140, 86, 86, 86, 3142, 86, 3143, 3141, 3145, - 3134, 3135, 3133, 86, 3146, 86, 86, 86, 86, 3138, - 3144, 3149, 86, 3153, 86, 86, 86, 86, 86, 3155, + 3106, 86, 3104, 3095, 86, 3107, 86, 86, 86, 3111, + 3105, 3112, 86, 3103, 3113, 86, 3108, 3114, 86, 86, + 86, 3109, 3115, 86, 3118, 86, 86, 3110, 86, 3121, + 86, 86, 3122, 3116, 3123, 86, 3117, 86, 3125, 86, + 86, 86, 86, 3129, 3119, 3130, 86, 86, 3120, 86, + 86, 3131, 3124, 3126, 3132, 3133, 3128, 3134, 86, 3127, + 86, 86, 3135, 86, 86, 86, 3140, 3139, 86, 86, + 3143, 86, 86, 3142, 86, 86, 86, 86, 86, 3144, + 3146, 3136, 86, 3145, 3137, 3138, 86, 86, 3149, 3148, + 86, 86, 86, 3141, 86, 3150, 3151, 3152, 3156, 86, - 3705, 86, 3147, 3148, 86, 3150, 3152, 3156, 3151, 3154, - 3160, 3157, 3159, 3162, 86, 3161, 86, 3158, 3163, 86, - 3164, 3165, 86, 86, 3166, 86, 3167, 86, 3168, 86, - 3169, 86, 3170, 86, 86, 86, 86, 86, 86, 3172, - 3174, 86, 86, 3177, 86, 3175, 86, 3179, 86, 3171, - 86, 3176, 86, 3180, 86, 3173, 3184, 86, 3185, 86, - 3178, 86, 3188, 86, 3186, 86, 3181, 3187, 3182, 86, - 3183, 3189, 3190, 3191, 86, 86, 3192, 3193, 86, 86, - 3194, 3195, 86, 86, 3198, 86, 86, 86, 3196, 86, - 3202, 86, 3197, 3203, 86, 3199, 3200, 86, 86, 86, + 3153, 3147, 86, 86, 86, 3155, 3158, 86, 3157, 86, + 3154, 86, 3163, 3565, 3159, 3162, 3160, 3164, 86, 3165, + 3168, 86, 86, 3161, 3166, 86, 86, 3169, 3167, 86, + 3170, 86, 3171, 86, 3172, 86, 3173, 86, 3174, 86, + 86, 86, 3175, 86, 86, 86, 86, 86, 86, 3180, + 3178, 3182, 86, 86, 3187, 86, 3183, 3179, 86, 3176, + 3188, 86, 86, 86, 3181, 3189, 3177, 3712, 3184, 3191, + 86, 86, 3185, 3186, 3194, 86, 3193, 3192, 3190, 86, + 3196, 86, 86, 3198, 86, 86, 3195, 3197, 86, 3201, + 86, 86, 86, 86, 3199, 3205, 86, 3200, 3206, 86, - 86, 3204, 86, 86, 3210, 86, 86, 3201, 3205, 3211, - 86, 3207, 86, 86, 3213, 86, 3214, 3206, 3208, 3212, - 3215, 86, 3209, 3216, 86, 3218, 86, 3217, 86, 86, - 3222, 86, 86, 3224, 86, 3219, 86, 86, 86, 86, - 86, 3223, 3227, 86, 3230, 86, 3225, 3221, 3705, 3228, - 86, 86, 86, 3220, 86, 3231, 3233, 3234, 3229, 86, - 3235, 3226, 86, 3236, 86, 86, 3232, 3237, 86, 3240, - 3242, 86, 3241, 3243, 86, 3244, 86, 3238, 86, 3239, - 86, 86, 86, 3249, 86, 86, 3248, 3245, 86, 86, - 3250, 3252, 86, 3251, 86, 86, 86, 86, 86, 3258, + 3202, 3203, 86, 86, 86, 86, 3207, 86, 86, 3213, + 86, 3204, 3208, 86, 3214, 86, 3210, 86, 86, 3216, + 86, 3217, 3211, 3209, 86, 3219, 3215, 86, 3212, 3220, + 86, 3222, 86, 3218, 86, 86, 3226, 86, 3221, 86, + 3228, 3223, 86, 86, 86, 86, 86, 86, 3227, 3231, + 86, 3234, 86, 3225, 3229, 86, 3232, 86, 86, 3224, + 3237, 86, 3235, 3238, 86, 3233, 86, 3239, 3230, 3241, + 3240, 86, 86, 3236, 86, 3244, 3246, 86, 3245, 3247, + 86, 3248, 86, 86, 3242, 86, 3243, 86, 86, 3253, + 86, 86, 3249, 3252, 86, 86, 3254, 3256, 86, 3255, - 3246, 3247, 3253, 3256, 86, 86, 3254, 3260, 86, 86, - 86, 86, 86, 3261, 3257, 3262, 3255, 3263, 86, 3264, - 86, 86, 3259, 3265, 3269, 86, 3266, 86, 86, 86, - 86, 86, 3273, 86, 86, 3267, 86, 86, 86, 3278, - 3270, 3268, 3271, 3272, 86, 3274, 3277, 3275, 86, 3281, - 86, 86, 3276, 86, 3285, 86, 86, 3279, 86, 3282, - 3286, 86, 3288, 86, 3280, 86, 86, 3289, 86, 3283, - 86, 3291, 3290, 3292, 86, 3287, 3294, 86, 86, 3284, - 86, 86, 3295, 3297, 3293, 86, 3296, 3300, 86, 86, - 3299, 3303, 86, 3305, 86, 86, 3298, 86, 3302, 86, + 86, 86, 86, 86, 3262, 3250, 3251, 3260, 3257, 86, + 86, 86, 3258, 3264, 86, 3265, 86, 3268, 86, 86, + 86, 3261, 3259, 3266, 3267, 86, 86, 86, 3273, 86, + 86, 86, 86, 86, 3263, 86, 86, 3277, 86, 3269, + 3270, 3271, 86, 3274, 3275, 3276, 3281, 3272, 86, 86, + 86, 3278, 3279, 3282, 3280, 86, 3285, 86, 86, 86, + 3289, 86, 3290, 86, 86, 86, 3286, 3292, 86, 3283, + 3284, 86, 3293, 86, 3295, 86, 3287, 3296, 86, 3294, + 3298, 86, 86, 3291, 86, 3288, 86, 86, 86, 3301, + 86, 3299, 3297, 3303, 3304, 86, 86, 3307, 3300, 3306, - 3307, 3301, 86, 86, 3310, 86, 3311, 86, 86, 86, - 86, 3313, 86, 3314, 3306, 3304, 3308, 86, 3317, 86, - 3318, 86, 3309, 86, 86, 3321, 86, 3312, 86, 86, - 86, 3315, 86, 86, 3326, 86, 3316, 3705, 3319, 3323, - 86, 3324, 3328, 86, 3320, 3322, 3330, 86, 86, 3325, - 86, 3332, 3327, 3333, 86, 3329, 86, 3334, 3331, 86, - 86, 3337, 3338, 86, 3340, 86, 3335, 86, 3339, 86, - 86, 3343, 86, 86, 3342, 86, 3346, 86, 3341, 3336, - 3344, 86, 86, 3349, 86, 86, 86, 86, 3354, 86, - 86, 86, 3345, 3350, 3347, 3348, 86, 3358, 86, 86, + 3309, 86, 3302, 86, 86, 86, 3311, 3305, 86, 86, + 3316, 86, 3315, 86, 86, 3318, 86, 86, 86, 3308, + 86, 86, 3312, 3310, 86, 3319, 3322, 86, 3313, 3314, + 3323, 86, 86, 86, 3317, 3326, 86, 86, 86, 3320, + 86, 86, 86, 3332, 3321, 3331, 3712, 3324, 3328, 3329, + 86, 86, 86, 3325, 3333, 3327, 3335, 86, 3330, 86, + 86, 3334, 3337, 3338, 3340, 3336, 86, 3339, 86, 3342, + 3343, 86, 3345, 86, 86, 86, 3344, 86, 86, 3348, + 86, 86, 3347, 86, 3351, 86, 3349, 86, 3341, 86, + 86, 86, 3346, 3354, 86, 86, 86, 3355, 3359, 86, - 3353, 3359, 86, 3351, 3361, 3357, 86, 3356, 86, 3355, - 86, 3352, 3360, 86, 86, 3363, 3364, 86, 3365, 86, - 3362, 3366, 86, 3367, 3368, 86, 86, 3371, 3373, 86, - 86, 86, 86, 86, 3370, 3372, 3375, 86, 86, 3369, - 3376, 86, 86, 86, 86, 86, 3382, 3374, 3383, 86, - 86, 3377, 86, 86, 86, 86, 86, 3389, 86, 86, - 3378, 86, 3380, 86, 3379, 3388, 3381, 3386, 3390, 86, - 86, 3385, 3392, 3391, 3387, 3395, 3384, 86, 86, 3393, - 3394, 86, 3396, 3705, 3397, 3398, 86, 3399, 86, 86, - 3402, 86, 86, 86, 3400, 3401, 86, 3405, 86, 86, + 86, 86, 3350, 86, 3352, 3353, 3435, 3356, 3358, 3362, + 3363, 86, 3364, 86, 86, 3360, 3357, 3361, 3365, 86, + 86, 86, 3369, 86, 86, 3366, 3368, 86, 3367, 3370, + 86, 3371, 86, 3372, 3373, 86, 86, 3376, 86, 86, + 3374, 3378, 86, 86, 3377, 3380, 86, 3381, 86, 86, + 86, 86, 86, 86, 3379, 86, 3387, 3388, 86, 86, + 86, 86, 3375, 86, 86, 86, 3394, 86, 3382, 3395, + 86, 3385, 3383, 3384, 3393, 3386, 86, 3391, 3398, 3390, + 3396, 3392, 3397, 86, 86, 3389, 86, 86, 86, 86, + 3404, 86, 3401, 3402, 3405, 86, 86, 86, 3408, 86, - 3404, 86, 86, 3403, 3406, 3407, 86, 3408, 86, 86, - 86, 86, 86, 3409, 3411, 86, 3413, 86, 86, 3414, - 3412, 86, 86, 86, 86, 86, 3410, 86, 3426, 3423, - 3424, 3415, 86, 3705, 86, 3416, 3418, 3417, 3419, 86, - 3420, 3421, 3422, 86, 3427, 86, 3429, 3425, 3431, 86, - 3432, 86, 3428, 86, 86, 3435, 86, 3433, 3430, 86, - 86, 3438, 86, 86, 3436, 3440, 86, 3441, 3442, 3434, - 86, 3443, 3444, 86, 86, 3445, 86, 3448, 3439, 3437, - 3446, 3447, 86, 86, 86, 3451, 86, 3449, 86, 86, - 86, 3454, 86, 3450, 86, 86, 3458, 86, 86, 86, + 86, 3406, 86, 3399, 86, 3400, 3413, 3410, 3411, 86, + 3403, 3407, 3409, 86, 86, 86, 86, 86, 3412, 3414, + 86, 86, 3417, 86, 86, 86, 86, 3419, 86, 86, + 3712, 3420, 3418, 86, 86, 3415, 3416, 86, 86, 86, + 3437, 86, 3429, 3421, 3425, 3422, 3423, 3424, 86, 86, + 3426, 3427, 86, 3430, 3432, 3428, 86, 3433, 3431, 3434, + 86, 86, 3436, 3438, 86, 3439, 3441, 86, 86, 86, + 86, 3440, 3712, 3442, 3444, 86, 3446, 86, 3447, 3448, + 86, 86, 86, 3449, 3450, 3445, 86, 3455, 3443, 3451, + 86, 3452, 3453, 86, 86, 86, 86, 3454, 3457, 86, - 3457, 86, 86, 3453, 86, 86, 3452, 86, 3463, 3462, - 86, 86, 3455, 3705, 3456, 3467, 3459, 3468, 86, 3460, - 3464, 86, 3465, 3466, 86, 3470, 3461, 3471, 86, 86, - 3469, 3472, 86, 86, 86, 3477, 3479, 86, 3474, 86, - 3478, 86, 86, 3475, 3473, 86, 3476, 86, 86, 86, - 3486, 86, 3483, 3484, 3481, 3487, 86, 86, 3489, 86, - 86, 86, 3480, 3488, 3490, 86, 3482, 86, 3485, 3493, - 86, 3491, 3492, 86, 3494, 3495, 86, 86, 3498, 86, - 3499, 86, 3496, 3500, 86, 3501, 86, 3502, 86, 3503, - 86, 3504, 86, 3505, 86, 3497, 86, 86, 3508, 86, + 3462, 86, 3460, 86, 3456, 86, 3461, 86, 86, 3465, + 86, 86, 86, 3464, 3458, 3459, 86, 86, 86, 86, + 86, 86, 3470, 86, 3469, 86, 3712, 3463, 3471, 3466, + 3474, 86, 3467, 3475, 86, 3472, 86, 3477, 3480, 3473, + 3476, 3468, 3478, 86, 3479, 86, 86, 86, 3484, 3486, + 86, 3481, 86, 3485, 86, 86, 3482, 86, 86, 3483, + 86, 86, 3712, 3490, 3494, 3491, 86, 3488, 3493, 86, + 86, 86, 3495, 3496, 86, 3487, 3497, 86, 3489, 86, + 3492, 3500, 86, 86, 3499, 86, 3498, 3502, 86, 86, + 3505, 86, 3506, 86, 3503, 3507, 86, 3501, 3508, 86, - 3509, 86, 86, 86, 86, 86, 3507, 3514, 86, 86, - 86, 3510, 3516, 86, 86, 3511, 86, 86, 86, 3520, - 3513, 86, 3506, 86, 3512, 3517, 3525, 3518, 3515, 3519, - 3521, 86, 3523, 86, 3524, 86, 3522, 86, 3527, 86, - 86, 3530, 86, 3529, 86, 86, 86, 86, 86, 3532, - 86, 86, 86, 86, 86, 3538, 3531, 3528, 3536, 3537, - 86, 3526, 3535, 86, 3533, 3543, 3534, 86, 3539, 86, - 3540, 86, 86, 86, 3544, 3546, 86, 3547, 86, 86, - 3541, 3548, 86, 3542, 86, 3545, 3549, 86, 3551, 86, - 3550, 86, 86, 3552, 86, 86, 3555, 3558, 86, 3557, + 3509, 86, 3510, 86, 3511, 86, 86, 3504, 3512, 86, + 86, 3515, 86, 3516, 86, 86, 86, 86, 86, 3514, + 3521, 86, 86, 86, 3517, 3523, 86, 86, 3518, 86, + 86, 86, 3513, 3520, 86, 3527, 86, 3519, 3524, 86, + 3525, 3522, 3526, 3528, 86, 86, 3529, 3530, 86, 86, + 86, 3534, 3532, 86, 3531, 3533, 3536, 3535, 3537, 3538, + 86, 86, 86, 86, 86, 3539, 86, 86, 86, 86, + 86, 3547, 3543, 3545, 86, 86, 3544, 86, 3542, 86, + 3540, 3541, 3550, 3546, 86, 3553, 86, 3551, 3554, 86, + 3555, 86, 3552, 3556, 86, 3549, 86, 86, 86, 86, - 86, 3560, 86, 3556, 3553, 3554, 86, 86, 86, 86, - 86, 86, 86, 3559, 86, 3561, 86, 86, 86, 3567, - 3574, 86, 3569, 3564, 86, 3562, 3563, 3566, 3568, 3572, - 3571, 86, 3570, 3573, 3565, 86, 86, 86, 3579, 86, - 3576, 3581, 86, 86, 86, 3582, 3583, 86, 3584, 86, - 3577, 3575, 3580, 86, 86, 86, 86, 3578, 3587, 86, - 86, 3588, 86, 3592, 3589, 86, 86, 86, 86, 86, - 3596, 86, 3585, 3595, 3586, 3598, 86, 3591, 3594, 3593, - 3599, 86, 3600, 86, 86, 3590, 86, 3597, 3601, 86, - 3604, 86, 86, 86, 3607, 86, 86, 3608, 86, 3602, + 3548, 86, 3559, 86, 86, 86, 3558, 86, 86, 3567, + 3564, 86, 86, 3561, 86, 3563, 86, 86, 86, 3557, + 86, 3560, 3566, 86, 3568, 86, 3562, 3574, 3576, 86, + 86, 3569, 3570, 3571, 86, 3573, 86, 3575, 86, 3579, + 86, 3572, 3578, 3581, 86, 3583, 86, 86, 3586, 86, + 3577, 86, 86, 3588, 86, 3580, 86, 3589, 3582, 86, + 3584, 3587, 3590, 86, 3591, 86, 86, 3585, 86, 3594, + 3592, 86, 86, 3595, 86, 3599, 3596, 86, 86, 3593, + 86, 86, 3603, 86, 86, 3602, 3605, 86, 86, 3598, + 3601, 3600, 3606, 86, 3607, 86, 86, 3597, 3608, 86, - 86, 86, 3611, 3612, 86, 3603, 3609, 3605, 86, 86, - 86, 3606, 86, 86, 86, 3613, 86, 3614, 3616, 3610, - 3617, 86, 3618, 86, 86, 86, 86, 86, 3622, 3615, - 3621, 3624, 86, 3619, 3620, 86, 86, 86, 86, 3631, - 86, 86, 3629, 3630, 86, 3623, 3625, 86, 3626, 3627, - 86, 3628, 3635, 86, 3637, 3636, 86, 3638, 86, 86, - 86, 3632, 3633, 3639, 3640, 86, 3634, 86, 3643, 86, - 3641, 3644, 86, 86, 86, 3646, 86, 86, 3645, 86, - 86, 3647, 86, 3652, 86, 86, 3642, 3649, 3648, 86, - 86, 86, 86, 3655, 3656, 86, 86, 86, 3650, 3657, + 3611, 86, 86, 3609, 3604, 86, 3614, 86, 86, 3615, + 86, 86, 86, 3618, 3619, 3610, 86, 3612, 3616, 86, + 86, 86, 86, 3613, 3624, 86, 3620, 3623, 86, 3621, + 3617, 3625, 86, 86, 86, 86, 86, 86, 86, 3629, + 3622, 86, 3631, 86, 86, 86, 86, 86, 3628, 3626, + 86, 3636, 3637, 3627, 3633, 86, 3630, 3632, 3634, 3638, + 86, 3712, 3635, 3644, 3639, 3642, 86, 86, 3640, 86, + 86, 3645, 3643, 86, 3641, 86, 86, 86, 3646, 3650, + 3647, 3648, 3651, 86, 86, 86, 3653, 86, 86, 3652, + 86, 86, 3654, 86, 86, 3659, 3649, 86, 3656, 86, - 86, 3651, 3658, 3653, 3654, 3659, 86, 86, 3663, 86, - 86, 3666, 86, 3667, 3664, 3660, 3661, 86, 86, 3662, - 86, 3669, 86, 3665, 86, 3670, 86, 3671, 3674, 86, - 86, 86, 86, 3672, 3676, 3675, 3668, 3673, 3677, 86, - 86, 86, 86, 86, 86, 3683, 86, 3678, 3679, 3681, - 3680, 86, 86, 86, 86, 86, 3685, 3686, 86, 3689, - 86, 3682, 3684, 3690, 86, 86, 3693, 3694, 86, 86, - 3696, 86, 3687, 3688, 3691, 86, 3695, 3697, 86, 3692, - 86, 86, 3698, 86, 86, 3699, 3700, 3703, 86, 3704, - 86, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, + 3662, 86, 86, 3663, 86, 86, 86, 86, 86, 3655, + 86, 3666, 3657, 3658, 3664, 3661, 3660, 3665, 86, 3670, + 86, 86, 86, 3669, 86, 3671, 3667, 3668, 86, 3674, + 86, 3676, 86, 3677, 3672, 86, 86, 86, 3681, 86, + 3678, 86, 86, 3675, 3679, 86, 3682, 3683, 3673, 3684, + 86, 86, 86, 86, 86, 3680, 86, 86, 3685, 3686, + 86, 3687, 3688, 3690, 86, 3692, 86, 86, 86, 3696, + 86, 3693, 3689, 3691, 86, 3694, 3697, 86, 86, 3700, + 3701, 86, 86, 86, 3703, 86, 3695, 3704, 86, 3698, + 3702, 86, 86, 3699, 86, 86, 3712, 3706, 3705, 3707, - 3705, 3705, 3701, 3702, 47, 47, 47, 47, 47, 47, - 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, - 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, - 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, - 80, 80, 80, 89, 89, 3705, 89, 89, 89, 89, - 160, 160, 3705, 3705, 3705, 160, 160, 162, 162, 3705, - 3705, 162, 3705, 162, 164, 3705, 3705, 3705, 3705, 3705, - 164, 167, 167, 3705, 3705, 3705, 167, 167, 169, 3705, - 3705, 3705, 3705, 3705, 169, 171, 171, 3705, 171, 171, + 3712, 3708, 3710, 86, 3711, 86, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3709, 47, 47, 47, 47, 47, + 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, + 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, + 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, + 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, + 80, 80, 80, 80, 89, 89, 3712, 89, 89, 89, + 89, 160, 160, 3712, 3712, 3712, 160, 160, 162, 162, + 3712, 3712, 162, 3712, 162, 164, 3712, 3712, 3712, 3712, + 3712, 164, 167, 167, 3712, 3712, 3712, 167, 167, 169, - 171, 171, 174, 3705, 3705, 3705, 3705, 3705, 174, 177, - 177, 3705, 3705, 3705, 177, 177, 90, 90, 3705, 90, - 90, 90, 90, 17, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705 + 3712, 3712, 3712, 3712, 3712, 169, 171, 171, 3712, 171, + 171, 171, 171, 174, 3712, 3712, 3712, 3712, 3712, 174, + 177, 177, 3712, 3712, 3712, 177, 177, 90, 90, 3712, + 90, 90, 90, 90, 17, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712 } ; -static const flex_int16_t yy_chk[7265] = +static const flex_int16_t yy_chk[7276] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2456,14 +2458,14 @@ static const flex_int16_t yy_chk[7265] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3713, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3720, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 3003, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 3005, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, @@ -3028,225 +3030,226 @@ static const flex_int16_t yy_chk[7265] = 2588, 2601, 2599, 2603, 2605, 2607, 2606, 2612, 2603, 2606, 2608, 2609, 2609, 2611, 2613, 2614, 2612, 2607, 2615, 2602, 2613, 2614, 2608, 2605, 2616, 2618, 2618, 2619, 2620, 2611, - 2619, 2621, 2622, 2624, 2624, 2626, 2615, 2625, 2625, 2616, - 2626, 2627, 2629, 2628, 2630, 2634, 2631, 2620, 2631, 2630, + 2619, 2621, 2624, 2624, 2622, 2626, 2615, 2625, 2625, 2616, + 2626, 2627, 2629, 2630, 2628, 2634, 2632, 2620, 2630, 2633, - 2622, 2621, 2628, 2632, 2633, 2629, 2635, 2634, 2636, 2627, - 2637, 2635, 2639, 2639, 2638, 2640, 2640, 2632, 2633, 2638, - 2641, 2641, 2642, 2642, 2643, 2644, 2645, 2644, 2636, 2646, - 2637, 2647, 2647, 2650, 2646, 2651, 2643, 2648, 2648, 2649, - 2649, 2652, 2653, 2654, 2645, 2650, 2657, 2655, 2656, 2656, - 2658, 2658, 2665, 2652, 2662, 2651, 2659, 2659, 2660, 2661, - 2661, 2663, 2653, 2655, 2654, 2657, 2662, 2664, 2663, 2660, - 2666, 2667, 2665, 2668, 2670, 2666, 2669, 2669, 2672, 2664, - 2671, 2671, 2673, 2670, 2674, 2675, 2676, 2678, 2677, 2678, - 2681, 2667, 2682, 2668, 2679, 2680, 2680, 2674, 2683, 2681, + 2621, 2621, 2622, 2628, 2631, 2629, 2631, 2634, 2636, 2627, + 2632, 2635, 2637, 2633, 2638, 2643, 2635, 2639, 2639, 2638, + 2640, 2640, 2641, 2641, 2642, 2642, 2645, 2643, 2636, 2644, + 2646, 2644, 2637, 2647, 2647, 2646, 2648, 2648, 2649, 2649, + 2650, 2651, 2652, 2653, 2645, 2654, 2655, 2656, 2656, 2657, + 2658, 2658, 2650, 2660, 2652, 2659, 2659, 2661, 2661, 2662, + 2663, 2651, 2655, 2653, 2660, 2664, 2654, 2663, 2657, 2665, + 2666, 2662, 2667, 2668, 2670, 2666, 2672, 2664, 2669, 2669, + 2671, 2671, 2674, 2670, 2673, 2675, 2676, 2679, 2677, 2665, + 2680, 2680, 2667, 2668, 2678, 2674, 2678, 2681, 2682, 2679, - 2676, 2685, 2673, 2686, 2672, 2687, 2679, 2682, 2688, 2675, - 2677, 2688, 2689, 2683, 0, 2690, 2691, 2692, 2692, 2685, - 2690, 2691, 2693, 2693, 2699, 2686, 2689, 2700, 2687, 2694, - 2694, 2696, 2696, 2698, 2698, 2701, 2702, 2704, 2700, 2706, - 2705, 2708, 2699, 2707, 2709, 2710, 2711, 2710, 2718, 2712, - 2708, 2702, 2713, 2719, 2701, 2714, 2714, 2704, 2705, 2717, - 2717, 2706, 2718, 2707, 2709, 2716, 2711, 2712, 2720, 2716, - 2713, 2721, 2721, 2723, 2725, 2719, 2726, 2720, 2724, 2724, - 2727, 2728, 2723, 2730, 2729, 2731, 2732, 2733, 2728, 2734, - 2735, 2738, 2725, 2734, 2726, 2736, 2736, 2735, 2727, 2729, + 2676, 2683, 2672, 2685, 2673, 2686, 2681, 2687, 2688, 2675, + 2677, 2688, 2689, 2682, 2690, 2691, 2683, 2692, 2692, 2690, + 2691, 2685, 2693, 2693, 2694, 2694, 2689, 2686, 2696, 2696, + 2687, 2698, 2698, 2699, 2700, 2701, 2704, 2702, 2706, 2705, + 2708, 2707, 2709, 2711, 2710, 2700, 2710, 2712, 2713, 2708, + 2719, 2699, 2702, 2718, 2701, 0, 2704, 2705, 2714, 2714, + 2706, 2707, 2709, 2711, 2716, 2712, 2713, 2718, 2716, 2717, + 2717, 2720, 2719, 2721, 2721, 2723, 2724, 2724, 2725, 2726, + 2720, 2727, 2728, 2729, 2723, 2730, 2731, 2734, 2733, 2728, + 2732, 2734, 2738, 2735, 2736, 2736, 2725, 2726, 2729, 2727, - 2739, 2730, 2732, 2731, 2737, 2737, 2733, 2740, 2742, 2742, - 2744, 2738, 2745, 2740, 2743, 2743, 2744, 2746, 2739, 2747, - 2748, 2750, 2749, 2751, 2751, 2752, 2750, 2753, 2754, 2755, - 2745, 2756, 2757, 0, 2747, 2746, 2749, 2757, 2763, 2748, - 2755, 2758, 2760, 2758, 2760, 2752, 2765, 2753, 2754, 2759, - 2759, 2756, 2761, 2761, 2766, 2765, 2767, 2763, 2768, 2769, - 2770, 2771, 2772, 2776, 2769, 2773, 2771, 2777, 2767, 2778, - 2779, 2779, 2778, 2766, 2780, 2781, 2782, 2782, 2768, 2783, - 2770, 2784, 2772, 2776, 2773, 2777, 2787, 2785, 2788, 2780, - 2783, 2785, 2789, 2781, 2792, 2790, 2784, 2794, 2789, 2790, + 2735, 2737, 2737, 2730, 2731, 2739, 2732, 2733, 2740, 2742, + 2742, 2744, 2738, 2745, 2740, 2743, 2743, 2744, 2746, 2747, + 2748, 2749, 2750, 2739, 2751, 2751, 2752, 2750, 2753, 2754, + 2755, 2745, 2756, 2757, 2747, 2749, 2746, 2763, 2757, 2748, + 2758, 2755, 2758, 2759, 2759, 2760, 2752, 2760, 2753, 2754, + 2761, 2761, 2756, 2765, 2766, 2767, 2763, 2768, 2769, 2770, + 2771, 2772, 2765, 2769, 2773, 2771, 2776, 2767, 2778, 2777, + 2780, 2778, 2781, 2766, 2779, 2779, 0, 2768, 2784, 2770, + 2783, 2772, 2787, 2773, 2788, 2780, 2776, 2777, 2782, 2782, + 2781, 2783, 2785, 2784, 2789, 2792, 2785, 2787, 2790, 2788, - 2795, 2787, 2796, 2788, 2791, 2791, 2797, 2792, 2798, 2798, - 2796, 2800, 2794, 2801, 2802, 2803, 2803, 2805, 2802, 2809, - 2795, 2808, 2801, 2800, 2804, 2804, 2797, 2806, 2806, 2807, - 2808, 2810, 2811, 2818, 2807, 2809, 2805, 2812, 2812, 2817, - 2817, 2819, 2818, 2810, 2820, 2820, 2821, 2822, 2823, 2824, - 2827, 2827, 2811, 2825, 2828, 2826, 2829, 0, 2824, 2821, - 2822, 2823, 2825, 2819, 2826, 2831, 2831, 2834, 2836, 2837, - 2838, 2829, 2834, 2836, 2828, 2838, 2839, 2840, 2841, 2844, - 2842, 2846, 2848, 2837, 2839, 2847, 2846, 2841, 2842, 2852, - 2847, 2849, 2849, 2856, 2844, 2851, 2840, 2848, 2850, 2850, + 2789, 2794, 2790, 2791, 2791, 2795, 2797, 2796, 2792, 2798, + 2799, 2799, 2801, 2802, 2797, 2803, 2794, 2804, 2804, 2803, + 2805, 2805, 2802, 2806, 2801, 2795, 2796, 2807, 2807, 2798, + 2808, 2809, 2810, 2811, 2812, 2808, 2813, 2813, 2818, 2818, + 2809, 2819, 2806, 2820, 2822, 2811, 2821, 2821, 2810, 2823, + 2819, 2824, 2825, 2829, 2812, 2828, 2828, 2822, 2826, 2827, + 2830, 2825, 2823, 2841, 2824, 2820, 2835, 2826, 2827, 2832, + 2832, 2835, 2837, 2829, 2838, 2830, 2839, 2837, 2840, 2843, + 2842, 2839, 2841, 2845, 2849, 2847, 2840, 2843, 2838, 2842, + 2847, 2848, 2850, 2850, 2851, 2851, 2848, 2852, 2845, 2849, - 2851, 2853, 2853, 2854, 2855, 2857, 2858, 2861, 2852, 2855, - 2854, 2856, 2858, 2859, 2860, 2860, 2862, 2867, 2859, 2863, - 2863, 2862, 2861, 2857, 2864, 2864, 2868, 2868, 2869, 2870, - 2867, 2869, 2871, 2872, 2870, 2870, 2873, 2871, 2872, 2874, - 2875, 2876, 2877, 2878, 2875, 2874, 2876, 2879, 2880, 2884, - 2873, 2877, 2883, 2881, 2882, 2879, 2891, 2883, 2878, 2881, - 2882, 2884, 2885, 2885, 2887, 2888, 2896, 2897, 2891, 2880, - 2888, 2887, 2889, 2893, 2894, 2889, 2895, 2898, 2893, 2894, - 2897, 2895, 2899, 2901, 2896, 2902, 2898, 2900, 2900, 2902, - 2903, 2899, 2901, 2906, 2907, 2903, 2908, 2911, 2912, 2913, + 2853, 2855, 2852, 2854, 2854, 2856, 2857, 2858, 2855, 2859, + 2856, 2860, 2861, 2861, 2862, 2859, 2860, 2863, 2868, 2853, + 2864, 2864, 2863, 2872, 2857, 2858, 2865, 2865, 2872, 2862, + 2871, 2868, 2869, 2869, 2870, 2871, 2871, 2870, 2873, 2874, + 2875, 2876, 2877, 2873, 2879, 2876, 2875, 2877, 2878, 2881, + 2880, 2884, 2885, 2874, 2882, 2883, 2884, 2878, 2880, 2879, + 2882, 2883, 2886, 2886, 2885, 2888, 2889, 2892, 2897, 2894, + 2881, 2889, 2888, 2890, 2894, 2895, 2890, 2896, 2898, 2892, + 2895, 2899, 2896, 2900, 2901, 2901, 2897, 2902, 2907, 2903, + 2899, 2898, 2900, 2903, 2904, 2908, 2902, 2909, 2912, 2904, - 2907, 2914, 2908, 2915, 2915, 2916, 2917, 2925, 2919, 2921, - 2921, 2906, 2916, 2920, 2922, 2923, 2911, 2919, 2912, 2913, - 2914, 2927, 2920, 2924, 2924, 2917, 2925, 2929, 2930, 2922, - 2923, 2932, 2930, 2931, 2931, 2933, 2927, 2934, 2935, 2937, - 2936, 2933, 2939, 2934, 2940, 2937, 2941, 2929, 2938, 2938, - 2939, 2941, 2943, 2944, 2946, 2949, 2932, 2935, 2936, 2947, - 2946, 2943, 2947, 2948, 2950, 2952, 2944, 2948, 2955, 2940, - 2951, 2951, 0, 2949, 2954, 2954, 2956, 2956, 2950, 2967, - 2952, 2957, 2957, 2958, 2958, 2961, 2955, 2960, 2960, 2961, - 2962, 2963, 2965, 2965, 2969, 2962, 2968, 2970, 2971, 2967, + 2913, 2908, 2914, 2909, 2915, 2917, 2907, 2916, 2916, 2918, + 2920, 2923, 2917, 2922, 2922, 2921, 2924, 2912, 2926, 2920, + 2913, 2928, 2914, 2915, 2921, 2930, 2923, 2933, 2918, 2925, + 2925, 2924, 2932, 2932, 2931, 2934, 2928, 2926, 2931, 2936, + 2935, 2934, 2937, 2938, 2941, 2930, 2935, 2939, 2939, 2938, + 2942, 2940, 2933, 2944, 2945, 2942, 2950, 2947, 2936, 2940, + 2937, 2948, 2944, 2947, 2948, 2951, 2949, 2945, 2953, 2941, + 2949, 2952, 2952, 2956, 2950, 2955, 2955, 2957, 2957, 2951, + 2958, 2959, 2959, 2953, 2960, 2960, 2962, 2962, 2963, 2964, + 2965, 2956, 2963, 2969, 2964, 2967, 2967, 2970, 2971, 2965, - 2963, 2968, 2970, 2970, 2973, 2974, 2969, 2975, 2975, 2981, - 2971, 2977, 2977, 2978, 2978, 2979, 2979, 2980, 2982, 2985, - 2980, 2987, 2981, 2991, 2973, 2974, 2984, 2984, 2988, 2988, - 2993, 2982, 2989, 2989, 2990, 2990, 2994, 2985, 2991, 2992, - 2992, 2987, 2995, 2993, 2996, 2997, 2997, 2998, 3002, 3001, - 2996, 2998, 3004, 3002, 2994, 3001, 2995, 3004, 3004, 3005, - 3006, 3007, 3008, 3009, 3010, 3020, 3011, 3017, 3008, 3009, - 3011, 3012, 3012, 3015, 3018, 3017, 3021, 3018, 3015, 3021, - 3006, 3007, 3005, 3022, 3022, 3023, 3024, 3025, 3026, 3010, - 3020, 3024, 3027, 3028, 3028, 3029, 3030, 3031, 3032, 3030, + 2972, 2975, 2970, 2958, 2973, 2972, 2972, 2976, 2977, 2977, + 2971, 2979, 2979, 2969, 2980, 2980, 2973, 2981, 2981, 2982, + 2983, 2975, 2982, 2984, 2986, 2986, 2987, 2976, 2989, 2990, + 2990, 2991, 2991, 2983, 2992, 2992, 2984, 2993, 2994, 2994, + 2995, 2996, 2997, 2998, 2987, 2999, 2999, 3000, 2989, 2998, + 3004, 3000, 2993, 2995, 3003, 3004, 2997, 3006, 3007, 2996, + 3003, 3010, 3006, 3006, 3008, 3009, 3011, 3010, 3012, 3013, + 3014, 3014, 3011, 3013, 3017, 3019, 3022, 3020, 3025, 3017, + 3020, 3007, 3027, 3019, 3008, 3009, 3023, 3024, 3024, 3023, + 3028, 3029, 3026, 3012, 3031, 3025, 3025, 3026, 3030, 3030, - 0, 3037, 3023, 3023, 3033, 3025, 3027, 3030, 3026, 3029, - 3035, 3031, 3033, 3036, 3047, 3035, 3035, 3032, 3036, 3036, - 3037, 3038, 3038, 3039, 3039, 3040, 3040, 3041, 3041, 3042, - 3042, 3043, 3043, 3044, 3045, 3046, 3048, 3049, 3050, 3045, - 3047, 3051, 3052, 3050, 3053, 3048, 3054, 3052, 3055, 3044, - 3056, 3049, 3061, 3053, 3064, 3046, 3058, 3058, 3059, 3059, - 3051, 3060, 3062, 3062, 3060, 3063, 3054, 3061, 3055, 3067, - 3056, 3063, 3064, 3066, 3066, 3069, 3067, 3068, 3068, 3072, - 3069, 3071, 3071, 3073, 3074, 3074, 3075, 3076, 3072, 3078, - 3079, 3079, 3073, 3080, 3080, 3075, 3076, 3081, 3083, 3082, + 3027, 3022, 3033, 3032, 3034, 3029, 3032, 3035, 3031, 3039, + 3028, 3534, 3037, 3534, 3032, 3035, 3033, 3037, 3037, 3038, + 3040, 3040, 3046, 3034, 3038, 3038, 3041, 3041, 3039, 3042, + 3042, 3043, 3043, 3044, 3044, 3045, 3045, 3047, 3046, 3048, + 3049, 3050, 3047, 3051, 3052, 3053, 3054, 3055, 3056, 3052, + 3050, 3054, 3057, 3058, 3060, 3060, 3055, 3051, 3066, 3048, + 3061, 3061, 3062, 3063, 3053, 3062, 3049, 0, 3056, 3064, + 3064, 3065, 3057, 3058, 3068, 3068, 3066, 3065, 3063, 3069, + 3070, 3070, 3071, 3073, 3073, 3074, 3069, 3071, 3075, 3076, + 3076, 3077, 3078, 3080, 3074, 3081, 3081, 3075, 3082, 3082, - 3084, 3081, 3086, 3085, 3087, 3090, 3089, 3078, 3082, 3087, - 3087, 3084, 3091, 3098, 3090, 3096, 3091, 3083, 3085, 3089, - 3096, 3101, 3086, 3097, 3097, 3100, 3100, 3098, 3102, 3103, - 3105, 3105, 3106, 3107, 3108, 3101, 3112, 3113, 3116, 3107, - 3114, 3106, 3113, 3119, 3117, 3121, 3108, 3103, 0, 3114, - 3117, 3123, 3124, 3102, 3126, 3119, 3123, 3124, 3116, 3125, - 3125, 3112, 3128, 3126, 3129, 3130, 3121, 3128, 3131, 3131, - 3133, 3133, 3131, 3134, 3134, 3135, 3135, 3129, 3136, 3130, - 3137, 3139, 3138, 3141, 3145, 3142, 3139, 3136, 3143, 3141, - 3142, 3144, 3144, 3143, 3146, 3147, 3149, 3151, 3148, 3150, + 3077, 3078, 3083, 3084, 3085, 3086, 3083, 3087, 3088, 3089, + 3092, 3080, 3084, 3091, 3089, 3089, 3086, 3093, 3095, 3092, + 3099, 3093, 3087, 3085, 3101, 3099, 3091, 3104, 3088, 3100, + 3100, 3103, 3103, 3095, 3105, 3106, 3108, 3108, 3101, 3109, + 3110, 3104, 3111, 3115, 3116, 3119, 3110, 3117, 3109, 3116, + 3122, 3120, 3124, 3106, 3111, 3126, 3117, 3120, 3127, 3105, + 3126, 3129, 3122, 3127, 3131, 3119, 3128, 3128, 3115, 3131, + 3129, 3132, 3133, 3124, 3134, 3134, 3136, 3136, 3134, 3137, + 3137, 3138, 3138, 3139, 3132, 3140, 3133, 3141, 3142, 3144, + 3148, 3145, 3139, 3142, 3146, 3144, 3145, 3147, 3147, 3146, - 3137, 3138, 3145, 3148, 3158, 3150, 3146, 3152, 3152, 3154, - 3155, 3159, 3156, 3154, 3149, 3155, 3147, 3156, 3157, 3157, - 3160, 3162, 3151, 3158, 3164, 3164, 3159, 3166, 3169, 3167, - 3168, 3171, 3169, 3172, 3174, 3160, 3170, 3175, 3173, 3174, - 3166, 3162, 3167, 3168, 3176, 3170, 3173, 3171, 3177, 3177, - 3178, 3179, 3172, 3180, 3181, 3181, 3183, 3175, 3187, 3178, - 3182, 3182, 3186, 3192, 3176, 3189, 3196, 3186, 3186, 3179, - 3197, 3189, 3187, 3190, 3190, 3183, 3194, 3194, 3199, 3180, - 3200, 3205, 3196, 3199, 3192, 3201, 3197, 3204, 3204, 3206, - 3201, 3207, 3208, 3209, 3209, 3210, 3200, 3207, 3206, 3212, + 3149, 3150, 3151, 3152, 3153, 3140, 3141, 3151, 3148, 3154, + 3153, 3157, 3149, 3155, 3155, 3157, 3160, 3160, 3158, 3159, + 3161, 3152, 3150, 3158, 3159, 3162, 3163, 3165, 3167, 3167, + 3169, 3170, 3171, 3172, 3154, 3175, 3174, 3172, 3176, 3161, + 3162, 3163, 3173, 3169, 3170, 3171, 3176, 3165, 3177, 3178, + 3179, 3173, 3174, 3177, 3175, 3180, 3180, 3181, 3182, 3183, + 3184, 3184, 3185, 3185, 3186, 3190, 3181, 3189, 3192, 3178, + 3179, 3195, 3189, 3189, 3192, 3199, 3182, 3193, 3193, 3190, + 3197, 3197, 3200, 3186, 3202, 3183, 3203, 3208, 3204, 3202, + 3209, 3199, 3195, 3204, 3207, 3207, 3211, 3210, 3200, 3209, - 3212, 3205, 3213, 3214, 3215, 3215, 3217, 3219, 3221, 3223, - 3224, 3220, 3217, 3221, 3210, 3208, 3213, 3220, 3225, 3225, - 3226, 3226, 3214, 3227, 3228, 3229, 3229, 3219, 3230, 3232, - 3235, 3223, 3231, 3234, 3233, 3236, 3224, 0, 3227, 3230, - 3233, 3231, 3235, 3238, 3228, 3229, 3237, 3237, 3239, 3232, - 3240, 3239, 3234, 3240, 3245, 3236, 3241, 3241, 3238, 3246, - 3251, 3247, 3248, 3248, 3250, 3249, 3245, 3247, 3249, 3253, - 3250, 3254, 3254, 3256, 3253, 3255, 3257, 3258, 3251, 3246, - 3255, 3261, 3257, 3259, 3259, 3262, 3263, 3264, 3265, 3265, - 3266, 3267, 3256, 3261, 3258, 3258, 3268, 3270, 3270, 3273, + 3212, 3212, 3203, 3210, 3213, 3215, 3215, 3208, 3216, 3217, + 3221, 3218, 3219, 3219, 3223, 3224, 3221, 3227, 3228, 3211, + 3225, 3224, 3216, 3213, 3238, 3225, 3229, 3229, 3217, 3218, + 3230, 3230, 3231, 3232, 3223, 3233, 3233, 3234, 3236, 3227, + 3235, 3240, 3239, 3238, 3228, 3237, 0, 3231, 3234, 3235, + 3242, 3237, 3249, 3232, 3239, 3233, 3241, 3241, 3236, 3243, + 3244, 3240, 3243, 3244, 3249, 3242, 3245, 3245, 3250, 3251, + 3252, 3252, 3254, 3253, 3255, 3251, 3253, 3257, 3254, 3258, + 3258, 3259, 3257, 3260, 3261, 3265, 3259, 3262, 3250, 3266, + 3261, 3267, 3255, 3263, 3263, 3268, 3270, 3265, 3269, 3269, - 3264, 3271, 3271, 3262, 3273, 3268, 3274, 3267, 3282, 3266, - 3275, 3263, 3272, 3272, 3279, 3275, 3276, 3276, 3277, 3277, - 3274, 3278, 3278, 3279, 3280, 3280, 3281, 3283, 3287, 3287, - 3284, 3288, 3293, 3283, 3282, 3284, 3290, 3290, 3295, 3281, - 3291, 3291, 3296, 3297, 3298, 3299, 3299, 3288, 3301, 3301, - 3302, 3293, 3303, 3304, 3306, 3311, 3307, 3308, 3308, 3313, - 3295, 3314, 3297, 3319, 3296, 3307, 3298, 3304, 3309, 3309, - 3315, 3303, 3312, 3311, 3306, 3315, 3302, 3316, 3312, 3313, - 3314, 3324, 3316, 0, 3319, 3320, 3320, 3322, 3322, 3323, - 3325, 3326, 3327, 3333, 3323, 3324, 3325, 3328, 3328, 3329, + 3272, 3271, 3260, 3361, 3262, 3262, 3361, 3266, 3268, 3272, + 3274, 3274, 3275, 3275, 3278, 3270, 3267, 3271, 3276, 3276, + 3277, 3279, 3280, 3280, 3283, 3277, 3279, 3285, 3278, 3281, + 3281, 3282, 3282, 3283, 3284, 3284, 3286, 3287, 3292, 3288, + 3285, 3291, 3291, 3287, 3288, 3294, 3294, 3295, 3295, 3297, + 3299, 3300, 3301, 3302, 3292, 3303, 3303, 3305, 3305, 3306, + 3307, 3310, 3286, 3308, 3316, 3311, 3312, 3312, 3297, 3313, + 3313, 3301, 3299, 3300, 3311, 3302, 3314, 3308, 3317, 3307, + 3314, 3310, 3316, 3318, 3317, 3306, 3319, 3320, 3321, 3324, + 3325, 3325, 3320, 3321, 3327, 3327, 3328, 3329, 3330, 3332, - 3327, 3331, 3332, 3326, 3329, 3331, 3334, 3332, 3336, 3335, - 3337, 3339, 3340, 3333, 3335, 3341, 3337, 3342, 3344, 3339, - 3336, 3347, 3345, 3346, 3348, 3350, 3334, 3351, 3352, 3348, - 3350, 3340, 3355, 0, 3352, 3341, 3344, 3342, 3345, 3353, - 3346, 3346, 3347, 3356, 3353, 3357, 3356, 3351, 3361, 3361, - 3362, 3362, 3355, 3363, 3367, 3369, 3369, 3363, 3357, 3370, - 3371, 3372, 3372, 3374, 3370, 3377, 3377, 3378, 3378, 3367, - 3378, 3379, 3379, 3382, 3379, 3380, 3380, 3382, 3374, 3371, - 3381, 3381, 3384, 3381, 3385, 3386, 3386, 3384, 3387, 3388, - 3391, 3391, 3392, 3385, 3393, 3394, 3395, 3395, 3396, 3397, + 3331, 3328, 3336, 3318, 3330, 3319, 3336, 3332, 3333, 3333, + 3324, 3329, 3331, 3334, 3337, 3338, 3339, 3340, 3334, 3337, + 3341, 3342, 3340, 3344, 3345, 3346, 3347, 3342, 3350, 3349, + 0, 3344, 3341, 3351, 3352, 3338, 3339, 3353, 3356, 3360, + 3366, 3366, 3353, 3345, 3350, 3346, 3347, 3349, 3355, 3362, + 3351, 3351, 3358, 3355, 3357, 3352, 3372, 3358, 3356, 3360, + 3357, 3368, 3362, 3367, 3367, 3368, 3374, 3374, 3375, 3376, + 3379, 3372, 0, 3375, 3377, 3377, 3382, 3382, 3383, 3383, + 3398, 3383, 3389, 3384, 3384, 3379, 3384, 3389, 3376, 3385, + 3385, 3386, 3386, 3387, 3386, 3390, 3392, 3387, 3391, 3391, - 3394, 3400, 3401, 3388, 3402, 3406, 3387, 3404, 3402, 3401, - 3407, 3403, 3392, 0, 3393, 3407, 3396, 3408, 3408, 3397, - 3403, 3409, 3404, 3406, 3410, 3410, 3400, 3411, 3411, 3413, - 3409, 3412, 3412, 3414, 3415, 3416, 3417, 3418, 3414, 3419, - 3416, 3416, 3417, 3415, 3413, 3420, 3415, 3421, 3422, 3423, - 3424, 3424, 3421, 3422, 3419, 3425, 3429, 3426, 3427, 3427, - 3434, 3425, 3418, 3426, 3428, 3428, 3420, 3430, 3423, 3433, - 3433, 3429, 3430, 3437, 3434, 3436, 3436, 3439, 3441, 3441, - 3442, 3442, 3437, 3443, 3443, 3444, 3444, 3446, 3446, 3447, - 3447, 3448, 3448, 3449, 3449, 3439, 3450, 3452, 3453, 3453, + 3398, 3393, 3396, 3396, 3390, 3397, 3397, 3399, 3400, 3401, + 3401, 3402, 3403, 3400, 3392, 3393, 3406, 3407, 3408, 3409, + 3410, 3412, 3408, 3419, 3407, 3413, 0, 3399, 3409, 3402, + 3413, 3415, 3403, 3414, 3414, 3410, 3416, 3416, 3419, 3412, + 3415, 3406, 3417, 3417, 3418, 3418, 3420, 3421, 3422, 3423, + 3424, 3420, 3425, 3422, 3422, 3423, 3421, 3426, 3427, 3421, + 3428, 3429, 0, 3427, 3431, 3428, 3432, 3425, 3430, 3430, + 3431, 3435, 3432, 3433, 3433, 3424, 3434, 3434, 3426, 3436, + 3429, 3439, 3439, 3440, 3436, 3443, 3435, 3442, 3442, 3445, + 3447, 3447, 3448, 3448, 3443, 3449, 3449, 3440, 3450, 3450, - 3454, 3454, 3455, 3456, 3457, 3459, 3452, 3460, 3460, 3461, - 3463, 3455, 3462, 3462, 3464, 3456, 3473, 3465, 3466, 3466, - 3459, 3469, 3450, 3474, 3457, 3463, 3474, 3464, 3461, 3465, - 3467, 3467, 3470, 3470, 3473, 3475, 3469, 3476, 3476, 3477, - 3479, 3480, 3481, 3479, 3482, 3483, 3485, 3480, 3484, 3482, - 3488, 3491, 3487, 3492, 3496, 3491, 3481, 3477, 3487, 3488, - 3506, 3475, 3485, 3497, 3483, 3506, 3484, 3517, 3492, 3494, - 3494, 3507, 3510, 3524, 3507, 3511, 3511, 3512, 3512, 3518, - 3496, 3513, 3513, 3497, 3520, 3510, 3515, 3515, 3518, 3519, - 3517, 3522, 3525, 3519, 3526, 3527, 3524, 3527, 3528, 3526, + 3452, 3452, 3453, 3453, 3454, 3454, 3456, 3445, 3455, 3455, + 3458, 3459, 3459, 3461, 3461, 3462, 3463, 3464, 3466, 3458, + 3467, 3467, 3468, 3470, 3462, 3469, 3469, 3471, 3463, 3482, + 3472, 3476, 3456, 3466, 3473, 3473, 3480, 3464, 3470, 3484, + 3471, 3468, 3472, 3474, 3474, 3488, 3476, 3477, 3477, 3481, + 3483, 3483, 3481, 3486, 3480, 3482, 3486, 3484, 3487, 3488, + 3489, 3490, 3492, 3491, 3487, 3489, 3494, 3495, 3499, 3498, + 3501, 3501, 3494, 3498, 3503, 3504, 3495, 3513, 3492, 3517, + 3490, 3491, 3513, 3499, 3514, 3518, 3518, 3514, 3519, 3519, + 3520, 3520, 3517, 3522, 3522, 3504, 3524, 3525, 3526, 3529, - 3529, 3529, 3530, 3525, 3520, 3522, 3531, 3533, 3532, 3534, - 3536, 3539, 3535, 3528, 3542, 3530, 3537, 3538, 3540, 3536, - 3543, 3543, 3538, 3533, 3541, 3531, 3532, 3535, 3537, 3541, - 3540, 3544, 3539, 3542, 3534, 3545, 3550, 3551, 3552, 3552, - 3545, 3554, 3554, 3553, 3555, 3555, 3556, 3556, 3557, 3557, - 3550, 3544, 3553, 3558, 3559, 3560, 3561, 3551, 3560, 3562, - 3563, 3561, 3564, 3565, 3562, 3566, 3567, 3570, 3568, 3565, - 3569, 3569, 3558, 3568, 3559, 3571, 3571, 3564, 3567, 3566, - 3572, 3572, 3573, 3573, 3576, 3563, 3577, 3570, 3575, 3575, - 3578, 3578, 3580, 3582, 3585, 3585, 3586, 3586, 3587, 3576, + 3503, 3527, 3526, 3531, 3532, 3533, 3525, 3535, 3536, 3536, + 3533, 3537, 3538, 3529, 3539, 3532, 3541, 3540, 3543, 3524, + 3542, 3527, 3535, 3545, 3537, 3544, 3531, 3543, 3545, 3546, + 3547, 3538, 3539, 3540, 3548, 3542, 3549, 3544, 3551, 3548, + 3552, 3541, 3547, 3550, 3550, 3552, 3557, 3558, 3559, 3559, + 3546, 3565, 3560, 3561, 3561, 3549, 3562, 3562, 3551, 3566, + 3557, 3560, 3563, 3563, 3564, 3564, 3567, 3558, 3568, 3567, + 3565, 3569, 3570, 3568, 3571, 3572, 3569, 3573, 3574, 3566, + 3575, 3572, 3576, 3576, 3577, 3575, 3578, 3578, 3583, 3571, + 3574, 3573, 3579, 3579, 3580, 3580, 3584, 3570, 3582, 3582, - 3588, 3591, 3589, 3590, 3592, 3577, 3587, 3580, 3589, 3590, - 3593, 3582, 3602, 3594, 3603, 3591, 3605, 3592, 3594, 3588, - 3595, 3595, 3597, 3597, 3606, 3608, 3609, 3610, 3606, 3593, - 3605, 3609, 3613, 3602, 3603, 3611, 3612, 3614, 3615, 3616, - 3616, 3619, 3614, 3615, 3620, 3608, 3610, 3621, 3611, 3612, - 3623, 3613, 3622, 3622, 3624, 3623, 3625, 3625, 3626, 3627, - 3624, 3619, 3620, 3626, 3627, 3628, 3621, 3629, 3630, 3637, - 3628, 3632, 3632, 3633, 3630, 3634, 3634, 3636, 3633, 3639, - 3638, 3636, 3640, 3641, 3642, 3657, 3629, 3638, 3637, 3641, - 3648, 3643, 3645, 3645, 3647, 3647, 3650, 3651, 3639, 3648, + 3585, 3585, 3587, 3583, 3577, 3589, 3592, 3592, 3593, 3593, + 3594, 3595, 3598, 3596, 3597, 3584, 3599, 3587, 3594, 3596, + 3597, 3600, 3601, 3589, 3602, 3602, 3598, 3601, 3609, 3599, + 3595, 3604, 3604, 3610, 3612, 3613, 3615, 3616, 3617, 3613, + 3600, 3618, 3616, 3620, 3626, 3619, 3621, 3622, 3612, 3609, + 3627, 3621, 3622, 3610, 3618, 3628, 3615, 3617, 3619, 3623, + 3623, 0, 3620, 3631, 3626, 3629, 3629, 3630, 3627, 3631, + 3632, 3632, 3630, 3633, 3628, 3634, 3635, 3636, 3633, 3637, + 3634, 3635, 3639, 3639, 3640, 3637, 3641, 3641, 3643, 3640, + 3644, 3645, 3643, 3646, 3647, 3648, 3636, 3649, 3645, 3652, - 3649, 3640, 3648, 3642, 3643, 3649, 3652, 3653, 3653, 3654, - 3655, 3657, 3658, 3658, 3654, 3650, 3651, 3659, 3664, 3652, - 3660, 3660, 3662, 3655, 3661, 3661, 3663, 3662, 3665, 3665, - 3666, 3671, 3667, 3663, 3667, 3666, 3659, 3664, 3668, 3668, - 3669, 3670, 3673, 3676, 3672, 3675, 3675, 3669, 3670, 3672, - 3671, 3678, 3679, 3680, 3681, 3685, 3678, 3679, 3682, 3682, - 3686, 3673, 3676, 3684, 3684, 3687, 3687, 3688, 3688, 3689, - 3691, 3691, 3680, 3681, 3685, 3693, 3689, 3692, 3692, 3686, - 3695, 3698, 3693, 3699, 3700, 3695, 3698, 3701, 3701, 3702, - 3702, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3652, 3648, 3650, 3654, 3654, 3655, 3656, 3657, 3658, 3644, + 3659, 3656, 3646, 3647, 3655, 3650, 3649, 3655, 3660, 3660, + 3661, 3662, 3664, 3659, 3666, 3661, 3657, 3658, 3665, 3665, + 3667, 3667, 3668, 3668, 3662, 3669, 3671, 3670, 3672, 3672, + 3669, 3673, 3678, 3666, 3670, 3674, 3673, 3674, 3664, 3675, + 3675, 3676, 3677, 3680, 3683, 3671, 3687, 3679, 3676, 3677, + 3685, 3678, 3679, 3682, 3682, 3685, 3686, 3688, 3689, 3689, + 3692, 3686, 3680, 3683, 3693, 3687, 3691, 3691, 3694, 3694, + 3695, 3695, 3706, 3696, 3698, 3698, 3688, 3699, 3699, 3692, + 3696, 3700, 3702, 3693, 3705, 3707, 0, 3702, 3700, 3705, - 0, 0, 3699, 3700, 3706, 3706, 3706, 3706, 3706, 3706, - 3706, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3708, 3708, - 3708, 3708, 3708, 3708, 3708, 3709, 3709, 3709, 3709, 3709, - 3709, 3709, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3711, - 3711, 3711, 3711, 3711, 3711, 3711, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3714, 3714, 0, 3714, 3714, 3714, 3714, - 3715, 3715, 0, 0, 0, 3715, 3715, 3716, 3716, 0, - 0, 3716, 0, 3716, 3717, 0, 0, 0, 0, 0, - 3717, 3718, 3718, 0, 0, 0, 3718, 3718, 3719, 0, - 0, 0, 0, 0, 3719, 3720, 3720, 0, 3720, 3720, + 0, 3706, 3708, 3708, 3709, 3709, 0, 0, 0, 0, + 0, 0, 0, 0, 3707, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3715, + 3715, 3715, 3715, 3715, 3715, 3715, 3716, 3716, 3716, 3716, + 3716, 3716, 3716, 3717, 3717, 3717, 3717, 3717, 3717, 3717, + 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3719, 3719, 3719, + 3719, 3719, 3719, 3719, 3721, 3721, 0, 3721, 3721, 3721, + 3721, 3722, 3722, 0, 0, 0, 3722, 3722, 3723, 3723, + 0, 0, 3723, 0, 3723, 3724, 0, 0, 0, 0, + 0, 3724, 3725, 3725, 0, 0, 0, 3725, 3725, 3726, - 3720, 3720, 3721, 0, 0, 0, 0, 0, 3721, 3722, - 3722, 0, 0, 0, 3722, 3722, 3723, 3723, 0, 3723, - 3723, 3723, 3723, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705 + 0, 0, 0, 0, 0, 3726, 3727, 3727, 0, 3727, + 3727, 3727, 3727, 3728, 0, 0, 0, 0, 0, 3728, + 3729, 3729, 0, 0, 0, 3729, 3729, 3730, 3730, 0, + 3730, 3730, 3730, 3730, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, + 3712, 3712, 3712, 3712, 3712 } ; static yy_state_type yy_last_accepting_state; @@ -3452,7 +3455,7 @@ static void config_end_include(void) } #endif -#line 3453 "" +#line 3456 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3461,9 +3464,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3462 "" +#line 3465 "" -#line 3464 "" +#line 3467 "" #define INITIAL 0 #define quotedstring 1 @@ -3687,7 +3690,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3688 "" +#line 3691 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3720,13 +3723,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 >= 3706 ) + if ( yy_current_state >= 3713 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 7224 ); + while ( yy_base[yy_current_state] != 7235 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5432,98 +5435,103 @@ YY_RULE_SETUP case 334: YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPASSWORD) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 341: YY_RULE_SETUP #line 566 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 342: YY_RULE_SETUP #line 567 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 343: YY_RULE_SETUP #line 568 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 344: YY_RULE_SETUP #line 569 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(1, VAR_NSID ) } YY_BREAK case 345: YY_RULE_SETUP #line 570 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDE ) } YY_BREAK case 346: -/* rule 346 can match eol */ YY_RULE_SETUP #line 571 "./util/configlexer.lex" +{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } + YY_BREAK +case 347: +/* rule 347 can match eol */ +YY_RULE_SETUP +#line 572 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 347: +case 348: YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 575 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 348: -YY_RULE_SETUP -#line 580 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 349: -/* rule 349 can match eol */ YY_RULE_SETUP #line 581 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 350: +/* rule 350 can match eol */ +YY_RULE_SETUP +#line 582 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 350: +case 351: YY_RULE_SETUP -#line 583 "./util/configlexer.lex" +#line 584 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5536,34 +5544,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 351: +case 352: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 596 "./util/configlexer.lex" +#line 597 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 352: -YY_RULE_SETUP -#line 601 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 353: -/* rule 353 can match eol */ YY_RULE_SETUP #line 602 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 354: +/* rule 354 can match eol */ +YY_RULE_SETUP +#line 603 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 354: +case 355: YY_RULE_SETUP -#line 604 "./util/configlexer.lex" +#line 605 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5576,38 +5584,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 355: +case 356: YY_RULE_SETUP -#line 616 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 618 "./util/configlexer.lex" +#line 619 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 356: -YY_RULE_SETUP -#line 622 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 357: -/* rule 357 can match eol */ YY_RULE_SETUP #line 623 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 358: +/* rule 358 can match eol */ YY_RULE_SETUP #line 624 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 359: YY_RULE_SETUP #line 625 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 360: +YY_RULE_SETUP +#line 626 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5615,27 +5623,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 630 "./util/configlexer.lex" +#line 631 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 360: -YY_RULE_SETUP -#line 634 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 361: -/* rule 361 can match eol */ YY_RULE_SETUP #line 635 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 362: +/* rule 362 can match eol */ +YY_RULE_SETUP +#line 636 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 362: +case 363: YY_RULE_SETUP -#line 637 "./util/configlexer.lex" +#line 638 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5645,7 +5653,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 643 "./util/configlexer.lex" +#line 644 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5660,39 +5668,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 363: +case 364: YY_RULE_SETUP -#line 657 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 660 "./util/configlexer.lex" +#line 661 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 364: -YY_RULE_SETUP -#line 664 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 365: -/* rule 365 can match eol */ YY_RULE_SETUP #line 665 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 366: +/* rule 366 can match eol */ YY_RULE_SETUP #line 666 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 367: YY_RULE_SETUP #line 667 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 368: +YY_RULE_SETUP +#line 668 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5701,29 +5709,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 673 "./util/configlexer.lex" +#line 674 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 368: -YY_RULE_SETUP -#line 677 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 369: -/* rule 369 can match eol */ YY_RULE_SETUP #line 678 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 370: +/* rule 370 can match eol */ +YY_RULE_SETUP +#line 679 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 370: +case 371: YY_RULE_SETUP -#line 682 "./util/configlexer.lex" +#line 683 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5732,33 +5740,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 371: +case 372: YY_RULE_SETUP -#line 690 "./util/configlexer.lex" +#line 691 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 372: +case 373: YY_RULE_SETUP -#line 694 "./util/configlexer.lex" +#line 695 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 373: +case 374: YY_RULE_SETUP -#line 698 "./util/configlexer.lex" +#line 699 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 374: +case 375: YY_RULE_SETUP -#line 702 "./util/configlexer.lex" +#line 703 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5759 "" +#line 5767 "" case YY_END_OF_BUFFER: { @@ -6053,7 +6061,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 >= 3706 ) + if ( yy_current_state >= 3713 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6081,11 +6089,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 >= 3706 ) + if ( yy_current_state >= 3713 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3705); + yy_is_jam = (yy_current_state == 3712); return yy_is_jam ? 0 : yy_current_state; } @@ -6724,6 +6732,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 702 "./util/configlexer.lex" +#line 703 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 55ddf3f8f..7e39f1c92 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -556,6 +556,7 @@ secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) } redis-server-host{COLON} { YDVAR(1, VAR_CACHEDB_REDISHOST) } redis-server-port{COLON} { YDVAR(1, VAR_CACHEDB_REDISPORT) } redis-server-path{COLON} { YDVAR(1, VAR_CACHEDB_REDISPATH) } +redis-server-password{COLON} { YDVAR(1, VAR_CACHEDB_REDISPASSWORD) } redis-timeout{COLON} { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } redis-expire-records{COLON} { YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } ipset{COLON} { YDVAR(0, VAR_IPSET) } diff --git a/util/configparser.c b/util/configparser.c index 2b99acd2f..59be1405f 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30706 +#define YYBISON 30802 /* Bison version string. */ -#define YYBISON_VERSION "3.7.6" +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -409,425 +409,427 @@ enum yysymbol_kind_t YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 281, /* VAR_CACHEDB_REDISTIMEOUT */ YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 282, /* VAR_CACHEDB_REDISEXPIRERECORDS */ YYSYMBOL_VAR_CACHEDB_REDISPATH = 283, /* VAR_CACHEDB_REDISPATH */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 284, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 285, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 286, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 287, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 288, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 289, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 290, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 291, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 292, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 293, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 294, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 295, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 296, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 297, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 298, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 299, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 300, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 301, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 302, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 303, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 304, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 305, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 306, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 307, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 308, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 309, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 310, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 311, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 312, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 313, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 314, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 315, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 316, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 317, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 318, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 319, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 320, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 321, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 322, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 323, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 324, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 325, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 326, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 327, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 328, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 329, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - YYSYMBOL_VAR_EDE = 330, /* VAR_EDE */ - YYSYMBOL_VAR_INTERFACE_ACTION = 331, /* VAR_INTERFACE_ACTION */ - YYSYMBOL_VAR_INTERFACE_VIEW = 332, /* VAR_INTERFACE_VIEW */ - YYSYMBOL_VAR_INTERFACE_TAG = 333, /* VAR_INTERFACE_TAG */ - YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 334, /* VAR_INTERFACE_TAG_ACTION */ - YYSYMBOL_VAR_INTERFACE_TAG_DATA = 335, /* VAR_INTERFACE_TAG_DATA */ - YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 336, /* VAR_PROXY_PROTOCOL_PORT */ - YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 337, /* VAR_STATISTICS_INHIBIT_ZERO */ - YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 338, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ - YYSYMBOL_YYACCEPT = 339, /* $accept */ - YYSYMBOL_toplevelvars = 340, /* toplevelvars */ - YYSYMBOL_toplevelvar = 341, /* toplevelvar */ - YYSYMBOL_force_toplevel = 342, /* force_toplevel */ - YYSYMBOL_serverstart = 343, /* serverstart */ - YYSYMBOL_contents_server = 344, /* contents_server */ - YYSYMBOL_content_server = 345, /* content_server */ - YYSYMBOL_stubstart = 346, /* stubstart */ - YYSYMBOL_contents_stub = 347, /* contents_stub */ - YYSYMBOL_content_stub = 348, /* content_stub */ - YYSYMBOL_forwardstart = 349, /* forwardstart */ - YYSYMBOL_contents_forward = 350, /* contents_forward */ - YYSYMBOL_content_forward = 351, /* content_forward */ - YYSYMBOL_viewstart = 352, /* viewstart */ - YYSYMBOL_contents_view = 353, /* contents_view */ - YYSYMBOL_content_view = 354, /* content_view */ - YYSYMBOL_authstart = 355, /* authstart */ - YYSYMBOL_contents_auth = 356, /* contents_auth */ - YYSYMBOL_content_auth = 357, /* content_auth */ - YYSYMBOL_rpz_tag = 358, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 359, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 360, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 361, /* rpz_log */ - YYSYMBOL_rpz_log_name = 362, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 363, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 364, /* rpzstart */ - YYSYMBOL_contents_rpz = 365, /* contents_rpz */ - YYSYMBOL_content_rpz = 366, /* content_rpz */ - YYSYMBOL_server_num_threads = 367, /* server_num_threads */ - YYSYMBOL_server_verbosity = 368, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 369, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 370, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 371, /* server_extended_statistics */ - YYSYMBOL_server_statistics_inhibit_zero = 372, /* server_statistics_inhibit_zero */ - YYSYMBOL_server_shm_enable = 373, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 374, /* server_shm_key */ - YYSYMBOL_server_port = 375, /* server_port */ - YYSYMBOL_server_send_client_subnet = 376, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 377, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 378, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 379, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 380, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 381, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 382, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 383, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 384, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 385, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 386, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 387, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 388, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 389, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 390, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 391, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 392, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 393, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 394, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 395, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 396, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 397, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 398, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 399, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 400, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 401, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 402, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 403, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 404, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 405, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 406, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 407, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 408, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 409, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 410, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 411, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 412, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 413, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 414, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 415, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 416, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 417, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 418, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 419, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 420, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 421, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 422, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 423, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 424, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 425, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 426, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 427, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 428, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 429, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 430, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 431, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 432, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 433, /* server_log_queries */ - YYSYMBOL_server_log_replies = 434, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 435, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 436, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 437, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 438, /* server_chroot */ - YYSYMBOL_server_username = 439, /* server_username */ - YYSYMBOL_server_directory = 440, /* server_directory */ - YYSYMBOL_server_logfile = 441, /* server_logfile */ - YYSYMBOL_server_pidfile = 442, /* server_pidfile */ - YYSYMBOL_server_root_hints = 443, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 444, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 445, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 446, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 447, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 448, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 449, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 450, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 451, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 452, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 453, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 454, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 455, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 456, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 457, /* server_identity */ - YYSYMBOL_server_version = 458, /* server_version */ - YYSYMBOL_server_http_user_agent = 459, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 460, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 461, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 462, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 463, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 464, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 465, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 466, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 467, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 468, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 469, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 470, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 471, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 472, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 473, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 474, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 475, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 476, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 477, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 478, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 479, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 480, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 481, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 482, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 483, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 484, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 485, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 486, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 487, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 488, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 489, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 490, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 491, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 492, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 493, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 494, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 495, /* server_harden_algo_downgrade */ - YYSYMBOL_server_harden_unknown_additional = 496, /* server_harden_unknown_additional */ - YYSYMBOL_server_use_caps_for_id = 497, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 498, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 499, /* server_private_address */ - YYSYMBOL_server_private_domain = 500, /* server_private_domain */ - YYSYMBOL_server_prefetch = 501, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 502, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 503, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 504, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 505, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 506, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 507, /* server_access_control */ - YYSYMBOL_server_interface_action = 508, /* server_interface_action */ - YYSYMBOL_server_module_conf = 509, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 510, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 511, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 512, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 513, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 514, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 515, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 516, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 517, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 518, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 519, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 520, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 521, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 522, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 523, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 524, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 525, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 526, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 527, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 528, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 529, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 530, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 531, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 532, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 533, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 534, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 535, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 536, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 537, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 538, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 539, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 540, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 541, /* server_local_zone */ - YYSYMBOL_server_local_data = 542, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 543, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 544, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 545, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 546, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 547, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 548, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 549, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 550, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 551, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 552, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 553, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 554, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 555, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 556, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 557, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 558, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 559, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 560, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 561, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 562, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 563, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 564, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 565, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 566, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 567, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 568, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 569, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 570, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 571, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 572, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 573, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 574, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 575, /* server_outbound_msg_retry */ - YYSYMBOL_server_max_sent_count = 576, /* server_max_sent_count */ - YYSYMBOL_server_max_query_restarts = 577, /* server_max_query_restarts */ - YYSYMBOL_server_low_rtt = 578, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 579, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 580, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 581, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 582, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 583, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 584, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 585, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 586, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 587, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 588, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 589, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 590, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 591, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 592, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 593, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 594, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 595, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 596, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 597, /* stub_name */ - YYSYMBOL_stub_host = 598, /* stub_host */ - YYSYMBOL_stub_addr = 599, /* stub_addr */ - YYSYMBOL_stub_first = 600, /* stub_first */ - YYSYMBOL_stub_no_cache = 601, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 602, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 603, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 604, /* stub_prime */ - YYSYMBOL_forward_name = 605, /* forward_name */ - YYSYMBOL_forward_host = 606, /* forward_host */ - YYSYMBOL_forward_addr = 607, /* forward_addr */ - YYSYMBOL_forward_first = 608, /* forward_first */ - YYSYMBOL_forward_no_cache = 609, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 610, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 611, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 612, /* auth_name */ - YYSYMBOL_auth_zonefile = 613, /* auth_zonefile */ - YYSYMBOL_auth_master = 614, /* auth_master */ - YYSYMBOL_auth_url = 615, /* auth_url */ - YYSYMBOL_auth_allow_notify = 616, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 617, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 618, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 619, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 620, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 621, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 622, /* view_name */ - YYSYMBOL_view_local_zone = 623, /* view_local_zone */ - YYSYMBOL_view_response_ip = 624, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 625, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 626, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 627, /* view_local_data_ptr */ - YYSYMBOL_view_first = 628, /* view_first */ - YYSYMBOL_rcstart = 629, /* rcstart */ - YYSYMBOL_contents_rc = 630, /* contents_rc */ - YYSYMBOL_content_rc = 631, /* content_rc */ - YYSYMBOL_rc_control_enable = 632, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 633, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 634, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 635, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 636, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 637, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 638, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 639, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 640, /* dtstart */ - YYSYMBOL_contents_dt = 641, /* contents_dt */ - YYSYMBOL_content_dt = 642, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 643, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 644, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 645, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 646, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 647, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 648, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 649, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 650, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 651, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 652, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 653, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 654, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 655, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 656, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 657, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 658, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 659, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 660, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 661, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 662, /* pythonstart */ - YYSYMBOL_contents_py = 663, /* contents_py */ - YYSYMBOL_content_py = 664, /* content_py */ - YYSYMBOL_py_script = 665, /* py_script */ - YYSYMBOL_dynlibstart = 666, /* dynlibstart */ - YYSYMBOL_contents_dl = 667, /* contents_dl */ - YYSYMBOL_content_dl = 668, /* content_dl */ - YYSYMBOL_dl_file = 669, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 670, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 671, /* server_log_identity */ - YYSYMBOL_server_response_ip = 672, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 673, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 674, /* dnscstart */ - YYSYMBOL_contents_dnsc = 675, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 676, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 677, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 678, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 679, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 680, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 681, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 682, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 683, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 684, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 685, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 686, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 687, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 688, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 689, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 690, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 691, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 692, /* redis_server_host */ - YYSYMBOL_redis_server_port = 693, /* redis_server_port */ - YYSYMBOL_redis_server_path = 694, /* redis_server_path */ - YYSYMBOL_redis_timeout = 695, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 696, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 697, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 698, /* ipsetstart */ - YYSYMBOL_contents_ipset = 699, /* contents_ipset */ - YYSYMBOL_content_ipset = 700, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 701, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 702 /* ipset_name_v6 */ + YYSYMBOL_VAR_CACHEDB_REDISPASSWORD = 284, /* VAR_CACHEDB_REDISPASSWORD */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 285, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 286, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 287, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 288, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 289, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 290, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 291, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 292, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 293, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 294, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 295, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 296, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 297, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 298, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 299, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 300, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 301, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 302, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 303, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 304, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 305, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 306, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 307, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 308, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 309, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 310, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 311, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 312, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 313, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 314, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 315, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 316, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 317, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 318, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 319, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 320, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 321, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 322, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 323, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 324, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 325, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 326, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 327, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 328, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 329, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 330, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + YYSYMBOL_VAR_EDE = 331, /* VAR_EDE */ + YYSYMBOL_VAR_INTERFACE_ACTION = 332, /* VAR_INTERFACE_ACTION */ + YYSYMBOL_VAR_INTERFACE_VIEW = 333, /* VAR_INTERFACE_VIEW */ + YYSYMBOL_VAR_INTERFACE_TAG = 334, /* VAR_INTERFACE_TAG */ + YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 335, /* VAR_INTERFACE_TAG_ACTION */ + YYSYMBOL_VAR_INTERFACE_TAG_DATA = 336, /* VAR_INTERFACE_TAG_DATA */ + YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 337, /* VAR_PROXY_PROTOCOL_PORT */ + YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 338, /* VAR_STATISTICS_INHIBIT_ZERO */ + YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 339, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ + YYSYMBOL_YYACCEPT = 340, /* $accept */ + YYSYMBOL_toplevelvars = 341, /* toplevelvars */ + YYSYMBOL_toplevelvar = 342, /* toplevelvar */ + YYSYMBOL_force_toplevel = 343, /* force_toplevel */ + YYSYMBOL_serverstart = 344, /* serverstart */ + YYSYMBOL_contents_server = 345, /* contents_server */ + YYSYMBOL_content_server = 346, /* content_server */ + YYSYMBOL_stubstart = 347, /* stubstart */ + YYSYMBOL_contents_stub = 348, /* contents_stub */ + YYSYMBOL_content_stub = 349, /* content_stub */ + YYSYMBOL_forwardstart = 350, /* forwardstart */ + YYSYMBOL_contents_forward = 351, /* contents_forward */ + YYSYMBOL_content_forward = 352, /* content_forward */ + YYSYMBOL_viewstart = 353, /* viewstart */ + YYSYMBOL_contents_view = 354, /* contents_view */ + YYSYMBOL_content_view = 355, /* content_view */ + YYSYMBOL_authstart = 356, /* authstart */ + YYSYMBOL_contents_auth = 357, /* contents_auth */ + YYSYMBOL_content_auth = 358, /* content_auth */ + YYSYMBOL_rpz_tag = 359, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 360, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 361, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 362, /* rpz_log */ + YYSYMBOL_rpz_log_name = 363, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 364, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 365, /* rpzstart */ + YYSYMBOL_contents_rpz = 366, /* contents_rpz */ + YYSYMBOL_content_rpz = 367, /* content_rpz */ + YYSYMBOL_server_num_threads = 368, /* server_num_threads */ + YYSYMBOL_server_verbosity = 369, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 370, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 371, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 372, /* server_extended_statistics */ + YYSYMBOL_server_statistics_inhibit_zero = 373, /* server_statistics_inhibit_zero */ + YYSYMBOL_server_shm_enable = 374, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 375, /* server_shm_key */ + YYSYMBOL_server_port = 376, /* server_port */ + YYSYMBOL_server_send_client_subnet = 377, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 378, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 379, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 380, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 381, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 382, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 383, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 384, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 385, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 386, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 387, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 388, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 389, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 390, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 391, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 392, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 393, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 394, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 395, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 396, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 397, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 398, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 399, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 400, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 401, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 402, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 403, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 404, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 405, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 406, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 407, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 408, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 409, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 410, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 411, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 412, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 413, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 414, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 415, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 416, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 417, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 418, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 419, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 420, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 421, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 422, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 423, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 424, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 425, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 426, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 427, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 428, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 429, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 430, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 431, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 432, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 433, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 434, /* server_log_queries */ + YYSYMBOL_server_log_replies = 435, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 436, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 437, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 438, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 439, /* server_chroot */ + YYSYMBOL_server_username = 440, /* server_username */ + YYSYMBOL_server_directory = 441, /* server_directory */ + YYSYMBOL_server_logfile = 442, /* server_logfile */ + YYSYMBOL_server_pidfile = 443, /* server_pidfile */ + YYSYMBOL_server_root_hints = 444, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 445, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 446, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 447, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 448, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 449, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 450, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 451, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 452, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 453, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 454, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 455, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 456, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 457, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 458, /* server_identity */ + YYSYMBOL_server_version = 459, /* server_version */ + YYSYMBOL_server_http_user_agent = 460, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 461, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 462, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 463, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 464, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 465, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 466, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 467, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 468, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 469, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 470, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 471, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 472, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 473, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 474, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 475, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 476, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 477, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 478, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 479, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 480, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 481, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 482, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 483, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 484, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 485, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 486, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_cache_max_rtt = 487, /* server_infra_cache_max_rtt */ + YYSYMBOL_server_infra_keep_probing = 488, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 489, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 490, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 491, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 492, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 493, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 494, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 495, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 496, /* server_harden_algo_downgrade */ + YYSYMBOL_server_harden_unknown_additional = 497, /* server_harden_unknown_additional */ + YYSYMBOL_server_use_caps_for_id = 498, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 499, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 500, /* server_private_address */ + YYSYMBOL_server_private_domain = 501, /* server_private_domain */ + YYSYMBOL_server_prefetch = 502, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 503, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 504, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 505, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 506, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 507, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 508, /* server_access_control */ + YYSYMBOL_server_interface_action = 509, /* server_interface_action */ + YYSYMBOL_server_module_conf = 510, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 511, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 512, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 513, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 514, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 515, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 516, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 517, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 518, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 519, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 520, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 521, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 522, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 523, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 524, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 525, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 526, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 527, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_ede_serve_expired = 528, /* server_ede_serve_expired */ + YYSYMBOL_server_serve_original_ttl = 529, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 530, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 531, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 532, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 533, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 534, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 535, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 536, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 537, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 538, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 539, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 540, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 541, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 542, /* server_local_zone */ + YYSYMBOL_server_local_data = 543, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 544, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 545, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 546, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 547, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 548, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 549, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 550, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 551, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 552, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 553, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 554, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 555, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 556, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 557, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 558, /* server_access_control_view */ + YYSYMBOL_server_interface_tag = 559, /* server_interface_tag */ + YYSYMBOL_server_interface_tag_action = 560, /* server_interface_tag_action */ + YYSYMBOL_server_interface_tag_data = 561, /* server_interface_tag_data */ + YYSYMBOL_server_interface_view = 562, /* server_interface_view */ + YYSYMBOL_server_response_ip_tag = 563, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 564, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 565, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 566, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 567, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 568, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 569, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 570, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 571, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 572, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 573, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 574, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 575, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 576, /* server_outbound_msg_retry */ + YYSYMBOL_server_max_sent_count = 577, /* server_max_sent_count */ + YYSYMBOL_server_max_query_restarts = 578, /* server_max_query_restarts */ + YYSYMBOL_server_low_rtt = 579, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 580, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 581, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 582, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 583, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 584, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 585, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 586, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 587, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 588, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 589, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 590, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 591, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 592, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 593, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 594, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 595, /* server_edns_client_string_opcode */ + YYSYMBOL_server_ede = 596, /* server_ede */ + YYSYMBOL_server_proxy_protocol_port = 597, /* server_proxy_protocol_port */ + YYSYMBOL_stub_name = 598, /* stub_name */ + YYSYMBOL_stub_host = 599, /* stub_host */ + YYSYMBOL_stub_addr = 600, /* stub_addr */ + YYSYMBOL_stub_first = 601, /* stub_first */ + YYSYMBOL_stub_no_cache = 602, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 603, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 604, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 605, /* stub_prime */ + YYSYMBOL_forward_name = 606, /* forward_name */ + YYSYMBOL_forward_host = 607, /* forward_host */ + YYSYMBOL_forward_addr = 608, /* forward_addr */ + YYSYMBOL_forward_first = 609, /* forward_first */ + YYSYMBOL_forward_no_cache = 610, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 611, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 612, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 613, /* auth_name */ + YYSYMBOL_auth_zonefile = 614, /* auth_zonefile */ + YYSYMBOL_auth_master = 615, /* auth_master */ + YYSYMBOL_auth_url = 616, /* auth_url */ + YYSYMBOL_auth_allow_notify = 617, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 618, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 619, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 620, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 621, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 622, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 623, /* view_name */ + YYSYMBOL_view_local_zone = 624, /* view_local_zone */ + YYSYMBOL_view_response_ip = 625, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 626, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 627, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 628, /* view_local_data_ptr */ + YYSYMBOL_view_first = 629, /* view_first */ + YYSYMBOL_rcstart = 630, /* rcstart */ + YYSYMBOL_contents_rc = 631, /* contents_rc */ + YYSYMBOL_content_rc = 632, /* content_rc */ + YYSYMBOL_rc_control_enable = 633, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 634, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 635, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 636, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 637, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 638, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 639, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 640, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 641, /* dtstart */ + YYSYMBOL_contents_dt = 642, /* contents_dt */ + YYSYMBOL_content_dt = 643, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 644, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 645, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 646, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 647, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 648, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 649, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 650, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 651, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 652, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 653, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 654, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 655, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 656, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 657, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 658, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 659, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 660, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 661, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 662, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 663, /* pythonstart */ + YYSYMBOL_contents_py = 664, /* contents_py */ + YYSYMBOL_content_py = 665, /* content_py */ + YYSYMBOL_py_script = 666, /* py_script */ + YYSYMBOL_dynlibstart = 667, /* dynlibstart */ + YYSYMBOL_contents_dl = 668, /* contents_dl */ + YYSYMBOL_content_dl = 669, /* content_dl */ + YYSYMBOL_dl_file = 670, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 671, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 672, /* server_log_identity */ + YYSYMBOL_server_response_ip = 673, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 674, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 675, /* dnscstart */ + YYSYMBOL_contents_dnsc = 676, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 677, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 678, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 679, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 680, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 681, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 682, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 683, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 684, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 685, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 686, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 687, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 688, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 689, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 690, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 691, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 692, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 693, /* redis_server_host */ + YYSYMBOL_redis_server_port = 694, /* redis_server_port */ + YYSYMBOL_redis_server_path = 695, /* redis_server_path */ + YYSYMBOL_redis_server_password = 696, /* redis_server_password */ + YYSYMBOL_redis_timeout = 697, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 698, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 699, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 700, /* ipsetstart */ + YYSYMBOL_contents_ipset = 701, /* contents_ipset */ + YYSYMBOL_content_ipset = 702, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 703, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 704 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -985,12 +987,18 @@ typedef int yy_state_fast_t; # define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -1149,19 +1157,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 723 +#define YYLAST 725 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 339 +#define YYNTOKENS 340 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 364 +#define YYNNTS 365 /* YYNRULES -- Number of rules. */ -#define YYNRULES 705 +#define YYNRULES 707 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1055 +#define YYNSTATES 1058 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 593 +#define YYMAXUTOK 594 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1234,11 +1242,11 @@ static const yytype_int16 yytranslate[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338 + 335, 336, 337, 338, 339 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 200, 200, 200, 201, 201, 202, 202, 203, 203, @@ -1310,8 +1318,8 @@ static const yytype_int16 yyrline[] = 3544, 3546, 3546, 3546, 3547, 3547, 3548, 3549, 3550, 3551, 3552, 3554, 3564, 3573, 3580, 3589, 3596, 3605, 3613, 3626, 3634, 3647, 3653, 3654, 3655, 3655, 3656, 3656, 3656, 3657, - 3657, 3659, 3671, 3683, 3695, 3710, 3722, 3735, 3748, 3759, - 3765, 3766, 3767, 3767, 3769, 3784 + 3657, 3657, 3659, 3671, 3683, 3695, 3710, 3722, 3734, 3747, + 3760, 3771, 3777, 3778, 3779, 3779, 3781, 3796 }; #endif @@ -1436,20 +1444,20 @@ static const char *const yytname[] = "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT", "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_CACHEDB_REDISPATH", - "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", "VAR_FOR_UPSTREAM", - "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", "VAR_URL", - "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", "VAR_TLS_ADDITIONAL_PORT", - "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", "VAR_FAST_SERVER_PERMIL", - "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", "VAR_TLS_WIN_CERT", - "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", "VAR_STUB_NO_CACHE", - "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", "VAR_UNKNOWN_SERVER_TIME_LIMIT", - "VAR_LOG_TAG_QUERYREPLY", "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", - "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI", "VAR_IPSET", - "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", - "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", - "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", - "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", + "VAR_CACHEDB_REDISPASSWORD", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", + "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", + "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", + "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", + "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", + "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", + "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", + "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", + "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", + "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", + "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", + "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", + "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", + "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION", @@ -1599,9 +1607,10 @@ static const char *const yytname[] = "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", "cachedbstart", "contents_cachedb", "content_cachedb", "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", - "redis_server_port", "redis_server_path", "redis_timeout", - "redis_expire_records", "server_tcp_connection_limit", "ipsetstart", - "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR + "redis_server_port", "redis_server_path", "redis_server_password", + "redis_timeout", "redis_expire_records", "server_tcp_connection_limit", + "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", + "ipset_name_v6", YY_NULLPTR }; static const char * @@ -1611,49 +1620,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593 -}; -#endif - -#define YYPACT_NINF (-287) +#define YYPACT_NINF (-288) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1663,127 +1630,127 @@ static const yytype_int16 yytoknum[] = #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - -287, 252, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -13, 222, 254, 289, 52, 39, 145, -14, - -81, -286, 124, -192, -279, 29, 30, 31, 73, 91, - 92, 119, 120, 121, 123, 132, 165, 210, 212, 240, - 241, 255, 256, 258, 262, 263, 264, 265, 266, 267, - 268, 271, 274, 277, 278, 287, 291, 292, 293, 295, - 296, 303, 304, 305, 320, 321, 323, 325, 328, 334, - 335, 336, 337, 340, 341, 342, 343, 349, 350, 351, - 352, 353, 354, 359, 362, 363, 364, 365, 366, 380, - 381, 382, 383, 384, 385, 389, 390, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 471, 472, 473, 474, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 491, 492, 493, 494, 495, 496, 498, 499, - 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 515, 516, 517, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 529, 530, 531, 532, 533, + -288, 252, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -13, 221, 254, 197, 52, 39, 147, -14, + -81, -287, 146, 135, -280, 29, 30, 31, 73, 75, + 76, 77, 78, 79, 80, 81, 91, 92, 119, 120, + 121, 123, 124, 132, 165, 210, 212, 233, 255, 257, + 260, 261, 263, 264, 265, 266, 267, 272, 275, 278, + 279, 290, 292, 293, 296, 299, 304, 305, 306, 322, + 323, 324, 325, 326, 329, 335, 336, 337, 339, 341, + 342, 343, 344, 350, 351, 352, 353, 355, 359, 360, + 361, 362, 363, 364, 365, 367, 368, 371, 372, 373, + 374, 375, 376, 379, 380, 381, 382, 383, 384, 385, + 387, 389, 390, 410, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 514, 515, 516, 517, 519, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 545, 546, 547, 548, 549, 550, 551, 553, 554, 555, - 557, 558, 559, 560, 561, 563, 564, 565, 566, 567, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, 568, 569, 570, 571, - 572, 573, 574, 575, -287, -287, -287, -287, -287, -287, - -287, -287, -287, 576, 577, 578, 579, 580, 581, 582, - -287, -287, -287, -287, -287, -287, -287, -287, 583, 584, - 585, 586, 587, 588, 589, -287, -287, -287, -287, -287, - -287, -287, -287, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, 600, 601, 602, 603, 604, 605, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, 606, 607, 608, 609, 610, 611, 612, - 613, -287, -287, -287, -287, -287, -287, -287, -287, -287, + 544, 546, 547, 548, 549, 550, 551, 552, 554, 555, + 556, 558, 559, 560, 561, 562, 564, 565, 566, 567, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, 568, 569, 570, 571, + 572, 573, 574, 575, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 576, 577, 578, 579, 580, 581, 582, + -288, -288, -288, -288, -288, -288, -288, -288, 583, 584, + 585, 586, 587, 588, 589, -288, -288, -288, -288, -288, + -288, -288, -288, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, 600, 601, 602, 603, 604, 605, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 606, 607, 608, 609, 610, 611, 612, + 613, -288, -288, -288, -288, -288, -288, -288, -288, -288, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 630, 631, 632, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, 633, - -287, -287, 634, -287, -287, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, 645, 646, 647, 648, - 649, 650, 651, -287, -287, -287, -287, -287, -287, -287, - -287, 652, 653, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, 654, 655, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, 656, 657, 658, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, 659, 660, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, 661, 662, 663, 664, - 665, 666, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, 667, -287, -287, - -287, -287, -287, -287, -287, -287, -287, 668, -287, -287, - -287, -287, -287, 669, 670, 671, 672, 673, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, 674, -287, -287, - 675, 676, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, 677, 678, 679, -287, - -287, -287, -287, -287, -287, 680, 681, -287, -287, -287, - -287, -287, -287, -287, -287 + 624, 625, 626, 627, 628, 629, 630, 631, 632, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 633, + -288, -288, 634, -288, -288, 635, 636, 637, 638, 639, + 640, 641, 642, 643, 644, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, 645, 646, 647, 648, + 649, 650, 651, 652, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 653, 654, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, 655, 656, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 657, + 658, 659, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, 660, 661, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, 662, 663, + 664, 665, 666, 667, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 668, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 669, + -288, -288, -288, -288, -288, 670, 671, 672, 673, 674, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 675, + -288, -288, 676, 677, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 678, + 679, 680, -288, -288, -288, -288, -288, -288, 681, 682, + -288, -288, -288, -288, -288, -288, -288, -288 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { 2, 0, 1, 18, 19, 257, 268, 584, 644, 603, - 278, 658, 681, 288, 699, 307, 649, 3, 17, 21, + 278, 658, 681, 288, 701, 307, 649, 3, 17, 21, 259, 270, 280, 290, 309, 586, 605, 646, 651, 660, - 683, 701, 4, 5, 6, 10, 14, 15, 8, 9, + 683, 703, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1849,88 +1816,88 @@ static const yytype_int16 yydefact[] = 645, 647, 0, 650, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 659, 661, 662, 663, 665, 666, 664, 667, 668, 669, 670, 0, 0, 0, 0, - 0, 0, 0, 682, 684, 685, 686, 687, 690, 688, - 689, 0, 0, 700, 702, 703, 323, 322, 330, 343, - 341, 354, 350, 351, 355, 352, 353, 356, 357, 358, - 362, 363, 393, 394, 395, 396, 397, 425, 426, 427, - 433, 434, 346, 435, 436, 439, 437, 438, 443, 444, - 445, 460, 408, 409, 412, 413, 446, 464, 402, 404, - 465, 472, 473, 474, 347, 424, 493, 494, 403, 487, - 386, 342, 398, 461, 469, 447, 0, 0, 497, 348, - 324, 385, 452, 325, 344, 345, 399, 400, 495, 449, - 454, 455, 360, 359, 326, 498, 428, 459, 387, 407, - 466, 467, 468, 471, 486, 401, 491, 489, 490, 416, - 423, 456, 457, 417, 418, 448, 476, 388, 389, 392, - 364, 366, 361, 367, 368, 369, 370, 377, 378, 379, - 380, 381, 382, 383, 499, 500, 502, 429, 430, 431, - 432, 440, 441, 442, 503, 504, 505, 0, 0, 0, - 450, 419, 421, 654, 518, 522, 520, 519, 523, 521, - 530, 531, 532, 0, 0, 526, 527, 528, 529, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 453, - 470, 492, 536, 537, 420, 506, 0, 0, 0, 0, - 0, 0, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 655, 410, 411, 414, 405, 475, 384, 328, 329, - 406, 538, 539, 540, 541, 542, 544, 543, 545, 546, - 547, 365, 372, 533, 535, 534, 371, 0, 391, 458, - 501, 390, 422, 373, 374, 376, 375, 0, 549, 415, - 488, 349, 550, 0, 0, 0, 0, 0, 551, 327, - 451, 552, 553, 554, 559, 557, 558, 555, 556, 560, - 561, 562, 563, 565, 566, 564, 577, 0, 581, 582, - 0, 0, 583, 567, 575, 568, 569, 570, 574, 576, - 571, 572, 573, 301, 302, 303, 304, 305, 306, 595, - 597, 596, 599, 600, 601, 602, 598, 625, 627, 628, - 629, 630, 631, 632, 633, 634, 635, 626, 636, 637, - 638, 639, 640, 641, 642, 643, 648, 653, 671, 672, - 673, 676, 674, 675, 677, 678, 679, 680, 691, 692, - 693, 694, 696, 697, 695, 704, 705, 462, 496, 517, - 656, 657, 524, 525, 507, 508, 0, 0, 0, 512, - 698, 548, 463, 516, 513, 0, 0, 578, 579, 580, - 511, 509, 510, 514, 515 + 0, 0, 0, 0, 682, 684, 685, 686, 687, 690, + 691, 688, 689, 0, 0, 702, 704, 705, 323, 322, + 330, 343, 341, 354, 350, 351, 355, 352, 353, 356, + 357, 358, 362, 363, 393, 394, 395, 396, 397, 425, + 426, 427, 433, 434, 346, 435, 436, 439, 437, 438, + 443, 444, 445, 460, 408, 409, 412, 413, 446, 464, + 402, 404, 465, 472, 473, 474, 347, 424, 493, 494, + 403, 487, 386, 342, 398, 461, 469, 447, 0, 0, + 497, 348, 324, 385, 452, 325, 344, 345, 399, 400, + 495, 449, 454, 455, 360, 359, 326, 498, 428, 459, + 387, 407, 466, 467, 468, 471, 486, 401, 491, 489, + 490, 416, 423, 456, 457, 417, 418, 448, 476, 388, + 389, 392, 364, 366, 361, 367, 368, 369, 370, 377, + 378, 379, 380, 381, 382, 383, 499, 500, 502, 429, + 430, 431, 432, 440, 441, 442, 503, 504, 505, 0, + 0, 0, 450, 419, 421, 654, 518, 522, 520, 519, + 523, 521, 530, 531, 532, 0, 0, 526, 527, 528, + 529, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 453, 470, 492, 536, 537, 420, 506, 0, 0, + 0, 0, 0, 0, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 655, 410, 411, 414, 405, 475, 384, + 328, 329, 406, 538, 539, 540, 541, 542, 544, 543, + 545, 546, 547, 365, 372, 533, 535, 534, 371, 0, + 391, 458, 501, 390, 422, 373, 374, 376, 375, 0, + 549, 415, 488, 349, 550, 0, 0, 0, 0, 0, + 551, 327, 451, 552, 553, 554, 559, 557, 558, 555, + 556, 560, 561, 562, 563, 565, 566, 564, 577, 0, + 581, 582, 0, 0, 583, 567, 575, 568, 569, 570, + 574, 576, 571, 572, 573, 301, 302, 303, 304, 305, + 306, 595, 597, 596, 599, 600, 601, 602, 598, 625, + 627, 628, 629, 630, 631, 632, 633, 634, 635, 626, + 636, 637, 638, 639, 640, 641, 642, 643, 648, 653, + 671, 672, 673, 676, 674, 675, 677, 678, 679, 680, + 692, 693, 694, 695, 698, 699, 696, 697, 706, 707, + 462, 496, 517, 656, 657, 524, 525, 507, 508, 0, + 0, 0, 512, 700, 548, 463, 516, 513, 0, 0, + 578, 579, 580, 511, 509, 510, 514, 515 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, 97, 682, 683, 684, 685, -287, -287, - 686, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, - -287, -287, -287, -287 + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 683, 684, 685, 686, 687, -288, -288, + 688, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 1, 17, 18, 19, 32, 280, 20, 33, 524, @@ -1968,88 +1935,88 @@ static const yytype_int16 yydefgoto[] = 656, 657, 658, 27, 40, 660, 661, 28, 41, 663, 664, 511, 512, 513, 514, 29, 42, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 30, 43, - 693, 694, 695, 696, 697, 698, 699, 700, 515, 31, - 44, 703, 704, 705 + 694, 695, 696, 697, 698, 699, 700, 701, 702, 515, + 31, 44, 705, 706, 707 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 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, 701, 702, 659, 662, 77, 78, 79, 706, - 707, 708, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 703, 704, 659, 662, 77, 78, 79, 708, + 709, 710, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 709, 563, 686, 687, 688, 689, 690, - 691, 692, 121, 122, 123, 124, 125, 563, 126, 127, - 128, 710, 711, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 711, 563, 712, 713, 714, 715, 716, + 717, 718, 121, 122, 123, 124, 125, 563, 126, 127, + 128, 719, 720, 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, 712, - 713, 714, 155, 715, 597, 156, 157, 158, 159, 160, - 161, 162, 716, 163, 164, 165, 166, 167, 168, 169, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 721, + 722, 723, 155, 724, 725, 156, 157, 158, 159, 160, + 161, 162, 726, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 717, 176, 177, 178, 179, + 634, 635, 636, 637, 638, 727, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 718, 220, 719, 221, 222, 223, 224, 225, 226, 227, + 728, 220, 729, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 603, 604, 605, 606, 607, 608, 609, 610, - 720, 721, 2, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 3, 4, 722, 723, 516, 724, 517, - 518, 250, 725, 726, 727, 728, 729, 730, 731, 251, - 252, 732, 253, 254, 733, 255, 256, 734, 735, 257, - 258, 259, 260, 261, 262, 263, 264, 736, 5, 533, - 265, 737, 738, 739, 6, 740, 741, 534, 535, 266, - 267, 268, 269, 742, 743, 744, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 565, 566, 567, 568, - 745, 746, 519, 747, 548, 748, 570, 564, 749, 565, - 566, 567, 568, 569, 750, 751, 752, 753, 7, 570, - 754, 755, 756, 757, 584, 585, 586, 587, 588, 758, - 759, 760, 761, 762, 763, 520, 8, 589, 521, 764, - 549, 550, 765, 766, 767, 768, 769, 522, 571, 572, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 770, 771, 772, 773, 774, 775, 536, 551, 537, 776, - 777, 538, 778, 779, 780, 781, 782, 783, 784, 785, - 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, + 238, 239, 548, 730, 603, 604, 605, 606, 607, 608, + 609, 610, 2, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 3, 4, 731, 516, 732, 517, 518, + 733, 734, 250, 735, 736, 737, 738, 739, 549, 550, + 251, 252, 740, 253, 254, 741, 255, 256, 742, 743, + 257, 258, 259, 260, 261, 262, 263, 264, 5, 533, + 744, 265, 745, 746, 6, 551, 747, 534, 535, 748, + 266, 267, 268, 269, 749, 750, 751, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 565, 566, 567, + 568, 519, 752, 753, 754, 755, 756, 570, 564, 757, + 565, 566, 567, 568, 569, 758, 759, 760, 7, 761, + 570, 762, 763, 764, 765, 584, 585, 586, 587, 588, + 766, 767, 768, 769, 520, 770, 8, 521, 589, 771, + 772, 773, 774, 775, 776, 777, 522, 778, 779, 571, + 572, 780, 781, 782, 783, 784, 785, 552, 553, 786, + 787, 788, 789, 790, 791, 792, 536, 793, 537, 794, + 795, 538, 665, 666, 667, 668, 669, 670, 671, 672, + 673, 674, 686, 687, 688, 689, 690, 691, 692, 693, 796, 9, 797, 798, 799, 800, 801, 802, 803, 804, - 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, - 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, - 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 552, - 553, 854, 855, 856, 857, 10, 858, 859, 860, 861, - 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, - 872, 873, 874, 875, 876, 877, 878, 11, 879, 880, - 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 893, 523, 554, 894, 895, 896, 12, 897, - 898, 899, 900, 901, 902, 903, 904, 905, 13, 906, - 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, - 917, 918, 919, 920, 539, 921, 922, 923, 924, 925, - 926, 927, 14, 928, 929, 930, 15, 931, 932, 933, - 934, 935, 16, 936, 937, 938, 939, 940, 941, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, - 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, - 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, - 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, - 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, - 1053, 1054, 0, 0, 0, 0, 0, 0, 0, 0, + 805, 806, 554, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, + 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, + 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, + 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 10, 859, 860, 861, 862, + 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 875, 876, 877, 878, 879, 11, 880, 881, + 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, + 892, 893, 894, 523, 895, 896, 897, 898, 12, 899, + 900, 901, 902, 903, 904, 905, 906, 907, 908, 13, + 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, + 919, 920, 921, 922, 923, 539, 924, 925, 926, 927, + 928, 929, 930, 14, 931, 932, 933, 15, 934, 935, + 936, 937, 938, 16, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, + 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, + 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, + 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, + 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, + 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, + 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, + 1055, 1056, 1057, 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, 598, - 599, 600, 601, 602 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 597, 598, 599, 600, 601, 602 }; static const yytype_int16 yycheck[] = @@ -2057,17 +2024,17 @@ static const yytype_int16 yycheck[] = 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 311, 312, 115, 321, 49, 50, 51, 10, + 43, 44, 312, 313, 115, 322, 49, 50, 51, 10, 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 10, 45, 277, 278, 279, 280, 281, - 282, 283, 105, 106, 107, 108, 109, 45, 111, 112, + 93, 94, 95, 10, 45, 10, 10, 10, 10, 10, + 10, 10, 105, 106, 107, 108, 109, 45, 111, 112, 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 10, - 10, 10, 145, 10, 37, 148, 149, 150, 151, 152, + 10, 10, 145, 10, 10, 148, 149, 150, 151, 152, 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, @@ -2078,40 +2045,40 @@ static const yytype_int16 yycheck[] = 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 10, 234, 10, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 97, 98, 99, 100, 101, 102, 103, 104, - 10, 10, 0, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 11, 12, 10, 10, 45, 10, 47, - 48, 284, 10, 10, 10, 10, 10, 10, 10, 292, - 293, 10, 295, 296, 10, 298, 299, 10, 10, 302, - 303, 304, 305, 306, 307, 308, 309, 10, 46, 45, - 313, 10, 10, 10, 52, 10, 10, 53, 54, 322, - 323, 324, 325, 10, 10, 10, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 287, 288, 289, 290, - 10, 10, 110, 10, 45, 10, 297, 285, 10, 287, - 288, 289, 290, 291, 10, 10, 10, 10, 96, 297, - 10, 10, 10, 10, 315, 316, 317, 318, 319, 10, - 10, 10, 10, 10, 10, 143, 114, 328, 146, 10, - 81, 82, 10, 10, 10, 10, 10, 155, 326, 327, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 10, 10, 10, 10, 10, 10, 142, 108, 144, 10, - 10, 147, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 253, 254, 45, 10, 97, 98, 99, 100, 101, 102, + 103, 104, 0, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 11, 12, 10, 45, 10, 47, 48, + 10, 10, 285, 10, 10, 10, 10, 10, 81, 82, + 293, 294, 10, 296, 297, 10, 299, 300, 10, 10, + 303, 304, 305, 306, 307, 308, 309, 310, 46, 45, + 10, 314, 10, 10, 52, 108, 10, 53, 54, 10, + 323, 324, 325, 326, 10, 10, 10, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 288, 289, 290, + 291, 110, 10, 10, 10, 10, 10, 298, 286, 10, + 288, 289, 290, 291, 292, 10, 10, 10, 96, 10, + 298, 10, 10, 10, 10, 316, 317, 318, 319, 320, + 10, 10, 10, 10, 143, 10, 114, 146, 329, 10, + 10, 10, 10, 10, 10, 10, 155, 10, 10, 327, + 328, 10, 10, 10, 10, 10, 10, 190, 191, 10, + 10, 10, 10, 10, 10, 10, 142, 10, 144, 10, + 10, 147, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 277, 278, 279, 280, 281, 282, 283, 284, 10, 169, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 235, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 190, - 191, 10, 10, 10, 10, 233, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 233, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 255, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 301, 235, 10, 10, 10, 276, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 286, 10, + 10, 10, 10, 302, 10, 10, 10, 10, 276, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 287, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 300, 10, 10, 10, 10, 10, - 10, 10, 310, 10, 10, 10, 314, 10, 10, 10, - 10, 10, 320, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 301, 10, 10, 10, 10, + 10, 10, 10, 311, 10, 10, 10, 315, 10, 10, + 10, 10, 10, 321, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2123,21 +2090,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, + 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 37, 37, 37, 37, 37, 37 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 340, 0, 11, 12, 46, 52, 96, 114, 169, - 233, 255, 276, 286, 310, 314, 320, 341, 342, 343, - 346, 349, 352, 355, 364, 629, 640, 662, 666, 674, - 687, 698, 344, 347, 350, 353, 356, 365, 630, 641, - 663, 667, 675, 688, 699, 13, 14, 15, 16, 17, + 0, 341, 0, 11, 12, 46, 52, 96, 114, 169, + 233, 255, 276, 287, 311, 315, 321, 342, 343, 344, + 347, 350, 353, 356, 365, 630, 641, 663, 667, 675, + 688, 700, 345, 348, 351, 354, 357, 366, 631, 642, + 664, 668, 676, 689, 701, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2158,10 +2125,125 @@ static const yytype_int16 yystos[] = 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 284, 292, 293, 295, 296, 298, 299, 302, 303, 304, - 305, 306, 307, 308, 309, 313, 322, 323, 324, 325, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 345, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 285, 293, 294, 296, 297, 299, 300, 303, 304, 305, + 306, 307, 308, 309, 310, 314, 323, 324, 325, 326, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 346, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 671, 672, 673, 674, 699, 45, 47, 48, 110, + 143, 146, 155, 302, 349, 598, 599, 600, 601, 602, + 603, 604, 605, 45, 53, 54, 142, 144, 147, 301, + 352, 606, 607, 608, 609, 610, 611, 612, 45, 81, + 82, 108, 190, 191, 235, 355, 623, 624, 625, 626, + 627, 628, 629, 45, 286, 288, 289, 290, 291, 292, + 298, 327, 328, 358, 613, 614, 615, 616, 617, 618, + 619, 620, 621, 622, 316, 317, 318, 319, 320, 329, + 359, 360, 361, 362, 363, 364, 367, 613, 614, 615, + 616, 617, 620, 97, 98, 99, 100, 101, 102, 103, + 104, 632, 633, 634, 635, 636, 637, 638, 639, 640, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 643, + 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 115, + 665, 666, 322, 669, 670, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 677, 678, 679, 680, 681, + 682, 683, 684, 685, 686, 687, 277, 278, 279, 280, + 281, 282, 283, 284, 690, 691, 692, 693, 694, 695, + 696, 697, 698, 312, 313, 702, 703, 704, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int16 yyr1[] = +{ + 0, 340, 341, 341, 342, 342, 342, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 342, 343, 344, + 345, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 347, 348, 348, + 349, 349, 349, 349, 349, 349, 349, 349, 350, 351, + 351, 352, 352, 352, 352, 352, 352, 352, 353, 354, + 354, 355, 355, 355, 355, 355, 355, 355, 356, 357, + 357, 358, 358, 358, 358, 358, 358, 358, 358, 358, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 366, + 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, @@ -2184,140 +2266,25 @@ static const yytype_int16 yystos[] = 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 670, 671, 672, 673, 697, 45, 47, 48, 110, - 143, 146, 155, 301, 348, 597, 598, 599, 600, 601, - 602, 603, 604, 45, 53, 54, 142, 144, 147, 300, - 351, 605, 606, 607, 608, 609, 610, 611, 45, 81, - 82, 108, 190, 191, 235, 354, 622, 623, 624, 625, - 626, 627, 628, 45, 285, 287, 288, 289, 290, 291, - 297, 326, 327, 357, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 315, 316, 317, 318, 319, 328, - 358, 359, 360, 361, 362, 363, 366, 612, 613, 614, - 615, 616, 619, 97, 98, 99, 100, 101, 102, 103, - 104, 631, 632, 633, 634, 635, 636, 637, 638, 639, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 642, - 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, - 653, 654, 655, 656, 657, 658, 659, 660, 661, 115, - 664, 665, 321, 668, 669, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 676, 677, 678, 679, 680, - 681, 682, 683, 684, 685, 686, 277, 278, 279, 280, - 281, 282, 283, 689, 690, 691, 692, 693, 694, 695, - 696, 311, 312, 700, 701, 702, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 631, 631, 632, 632, 632, + 632, 632, 632, 632, 632, 633, 634, 635, 636, 637, + 638, 639, 640, 641, 642, 642, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 644, 645, 646, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661, 662, 663, 664, 664, 665, 666, 667, + 668, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 676, 677, 677, 677, 677, 677, 677, 677, 677, 677, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 689, 690, 690, 690, 690, 690, 690, + 690, 690, 691, 692, 693, 694, 695, 696, 697, 698, + 699, 700, 701, 701, 702, 702, 703, 704 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = -{ - 0, 339, 340, 340, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 342, 343, - 344, 344, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 346, 347, 347, - 348, 348, 348, 348, 348, 348, 348, 348, 349, 350, - 350, 351, 351, 351, 351, 351, 351, 351, 352, 353, - 353, 354, 354, 354, 354, 354, 354, 354, 355, 356, - 356, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 365, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 630, 631, 631, 631, - 631, 631, 631, 631, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 640, 641, 641, 642, 642, 642, 642, - 642, 642, 642, 642, 642, 642, 642, 642, 642, 642, - 642, 642, 642, 642, 642, 643, 644, 645, 646, 647, - 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 663, 664, 665, 666, - 667, 667, 668, 669, 670, 671, 672, 673, 674, 675, - 675, 676, 676, 676, 676, 676, 676, 676, 676, 676, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 688, 688, 689, 689, 689, 689, 689, 689, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 699, 700, 700, 701, 702 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, @@ -2389,8 +2356,8 @@ static const yytype_int8 yyr2[] = 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 3, 1, - 2, 0, 1, 1, 2, 2 + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2402,6 +2369,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -2442,10 +2410,7 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif + # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -2472,10 +2437,6 @@ yy_symbol_value_print (FILE *yyo, YY_USE (yyoutput); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END @@ -2660,6 +2621,7 @@ yyparse (void) YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -2685,7 +2647,7 @@ yysetstate: if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -2713,7 +2675,7 @@ yysetstate: # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -2724,7 +2686,7 @@ yysetstate: YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE @@ -2746,6 +2708,7 @@ yysetstate: } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -2863,7 +2826,7 @@ yyreduce: OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2867 "util/configparser.c" +#line 2830 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ @@ -2872,7 +2835,7 @@ yyreduce: OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2876 "util/configparser.c" +#line 2839 "util/configparser.c" break; case 257: /* stubstart: VAR_STUB_ZONE */ @@ -2889,7 +2852,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2893 "util/configparser.c" +#line 2856 "util/configparser.c" break; case 268: /* forwardstart: VAR_FORWARD_ZONE */ @@ -2906,7 +2869,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2910 "util/configparser.c" +#line 2873 "util/configparser.c" break; case 278: /* viewstart: VAR_VIEW */ @@ -2925,7 +2888,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2929 "util/configparser.c" +#line 2892 "util/configparser.c" break; case 288: /* authstart: VAR_AUTH_ZONE */ @@ -2949,7 +2912,7 @@ yyreduce: yyerror("out of memory"); } } -#line 2953 "util/configparser.c" +#line 2916 "util/configparser.c" break; case 301: /* rpz_tag: VAR_TAGS STRING_ARG */ @@ -2970,7 +2933,7 @@ yyreduce: } } -#line 2974 "util/configparser.c" +#line 2937 "util/configparser.c" break; case 302: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ @@ -2989,7 +2952,7 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2993 "util/configparser.c" +#line 2956 "util/configparser.c" break; case 303: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ @@ -2999,7 +2962,7 @@ yyreduce: free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 3003 "util/configparser.c" +#line 2966 "util/configparser.c" break; case 304: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ @@ -3011,7 +2974,7 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3015 "util/configparser.c" +#line 2978 "util/configparser.c" break; case 305: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ @@ -3021,7 +2984,7 @@ yyreduce: free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3025 "util/configparser.c" +#line 2988 "util/configparser.c" break; case 306: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ @@ -3033,7 +2996,7 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3037 "util/configparser.c" +#line 3000 "util/configparser.c" break; case 307: /* rpzstart: VAR_RPZ */ @@ -3055,7 +3018,7 @@ yyreduce: yyerror("out of memory"); } } -#line 3059 "util/configparser.c" +#line 3022 "util/configparser.c" break; case 322: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ @@ -3067,7 +3030,7 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3071 "util/configparser.c" +#line 3034 "util/configparser.c" break; case 323: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ @@ -3079,7 +3042,7 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3083 "util/configparser.c" +#line 3046 "util/configparser.c" break; case 324: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ @@ -3093,7 +3056,7 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3097 "util/configparser.c" +#line 3060 "util/configparser.c" break; case 325: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ @@ -3105,7 +3068,7 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3109 "util/configparser.c" +#line 3072 "util/configparser.c" break; case 326: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ @@ -3117,7 +3080,7 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3121 "util/configparser.c" +#line 3084 "util/configparser.c" break; case 327: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ @@ -3129,7 +3092,7 @@ yyreduce: else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3133 "util/configparser.c" +#line 3096 "util/configparser.c" break; case 328: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ @@ -3141,7 +3104,7 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3108 "util/configparser.c" break; case 329: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ @@ -3155,7 +3118,7 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3159 "util/configparser.c" +#line 3122 "util/configparser.c" break; case 330: /* server_port: VAR_PORT STRING_ARG */ @@ -3167,7 +3130,7 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3171 "util/configparser.c" +#line 3134 "util/configparser.c" break; case 331: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ @@ -3182,7 +3145,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3186 "util/configparser.c" +#line 3149 "util/configparser.c" break; case 332: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ @@ -3198,7 +3161,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3202 "util/configparser.c" +#line 3165 "util/configparser.c" break; case 333: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ @@ -3216,7 +3179,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3220 "util/configparser.c" +#line 3183 "util/configparser.c" break; case 334: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ @@ -3230,7 +3193,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" +#line 3197 "util/configparser.c" break; case 335: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ @@ -3250,7 +3213,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3254 "util/configparser.c" +#line 3217 "util/configparser.c" break; case 336: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ @@ -3270,7 +3233,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3237 "util/configparser.c" break; case 337: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ @@ -3290,7 +3253,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3294 "util/configparser.c" +#line 3257 "util/configparser.c" break; case 338: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ @@ -3310,7 +3273,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3314 "util/configparser.c" +#line 3277 "util/configparser.c" break; case 339: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ @@ -3328,7 +3291,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3332 "util/configparser.c" +#line 3295 "util/configparser.c" break; case 340: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ @@ -3346,7 +3309,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3350 "util/configparser.c" +#line 3313 "util/configparser.c" break; case 341: /* server_interface: VAR_INTERFACE STRING_ARG */ @@ -3362,7 +3325,7 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3366 "util/configparser.c" +#line 3329 "util/configparser.c" break; case 342: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ @@ -3380,7 +3343,7 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3384 "util/configparser.c" +#line 3347 "util/configparser.c" break; case 343: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ @@ -3392,7 +3355,7 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3396 "util/configparser.c" +#line 3359 "util/configparser.c" break; case 344: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ @@ -3404,7 +3367,7 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3408 "util/configparser.c" +#line 3371 "util/configparser.c" break; case 345: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ @@ -3416,7 +3379,7 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3420 "util/configparser.c" +#line 3383 "util/configparser.c" break; case 346: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ @@ -3428,7 +3391,7 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3432 "util/configparser.c" +#line 3395 "util/configparser.c" break; case 347: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ @@ -3440,7 +3403,7 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3444 "util/configparser.c" +#line 3407 "util/configparser.c" break; case 348: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ @@ -3452,7 +3415,7 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3456 "util/configparser.c" +#line 3419 "util/configparser.c" break; case 349: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ @@ -3462,7 +3425,7 @@ yyreduce: free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 3466 "util/configparser.c" +#line 3429 "util/configparser.c" break; case 350: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ @@ -3474,7 +3437,7 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3478 "util/configparser.c" +#line 3441 "util/configparser.c" break; case 351: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ @@ -3486,7 +3449,7 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3490 "util/configparser.c" +#line 3453 "util/configparser.c" break; case 352: /* server_do_udp: VAR_DO_UDP STRING_ARG */ @@ -3498,7 +3461,7 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3502 "util/configparser.c" +#line 3465 "util/configparser.c" break; case 353: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ @@ -3510,7 +3473,7 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3514 "util/configparser.c" +#line 3477 "util/configparser.c" break; case 354: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ @@ -3522,7 +3485,7 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3526 "util/configparser.c" +#line 3489 "util/configparser.c" break; case 355: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ @@ -3534,7 +3497,7 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3538 "util/configparser.c" +#line 3501 "util/configparser.c" break; case 356: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ @@ -3546,7 +3509,7 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3550 "util/configparser.c" +#line 3513 "util/configparser.c" break; case 357: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ @@ -3558,7 +3521,7 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3562 "util/configparser.c" +#line 3525 "util/configparser.c" break; case 358: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ @@ -3574,7 +3537,7 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3578 "util/configparser.c" +#line 3541 "util/configparser.c" break; case 359: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ @@ -3588,7 +3551,7 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3592 "util/configparser.c" +#line 3555 "util/configparser.c" break; case 360: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ @@ -3602,7 +3565,7 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3606 "util/configparser.c" +#line 3569 "util/configparser.c" break; case 361: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ @@ -3616,7 +3579,7 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3620 "util/configparser.c" +#line 3583 "util/configparser.c" break; case 362: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ @@ -3628,7 +3591,7 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3632 "util/configparser.c" +#line 3595 "util/configparser.c" break; case 363: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ @@ -3644,7 +3607,7 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3648 "util/configparser.c" +#line 3611 "util/configparser.c" break; case 364: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ @@ -3656,7 +3619,7 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3660 "util/configparser.c" +#line 3623 "util/configparser.c" break; case 365: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ @@ -3668,7 +3631,7 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3672 "util/configparser.c" +#line 3635 "util/configparser.c" break; case 366: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ @@ -3680,7 +3643,7 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3684 "util/configparser.c" +#line 3647 "util/configparser.c" break; case 367: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ @@ -3690,7 +3653,7 @@ yyreduce: free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3694 "util/configparser.c" +#line 3657 "util/configparser.c" break; case 368: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ @@ -3700,7 +3663,7 @@ yyreduce: free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3704 "util/configparser.c" +#line 3667 "util/configparser.c" break; case 369: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ @@ -3712,7 +3675,7 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3716 "util/configparser.c" +#line 3679 "util/configparser.c" break; case 370: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ @@ -3722,7 +3685,7 @@ yyreduce: free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3726 "util/configparser.c" +#line 3689 "util/configparser.c" break; case 371: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ @@ -3734,7 +3697,7 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3738 "util/configparser.c" +#line 3701 "util/configparser.c" break; case 372: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ @@ -3745,7 +3708,7 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3749 "util/configparser.c" +#line 3712 "util/configparser.c" break; case 373: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ @@ -3755,7 +3718,7 @@ yyreduce: free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3759 "util/configparser.c" +#line 3722 "util/configparser.c" break; case 374: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ @@ -3765,7 +3728,7 @@ yyreduce: free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3769 "util/configparser.c" +#line 3732 "util/configparser.c" break; case 375: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ @@ -3776,7 +3739,7 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3780 "util/configparser.c" +#line 3743 "util/configparser.c" break; case 376: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ @@ -3788,7 +3751,7 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3792 "util/configparser.c" +#line 3755 "util/configparser.c" break; case 377: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ @@ -3800,7 +3763,7 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3804 "util/configparser.c" +#line 3767 "util/configparser.c" break; case 378: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ @@ -3820,7 +3783,7 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3824 "util/configparser.c" +#line 3787 "util/configparser.c" break; case 379: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ @@ -3832,7 +3795,7 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3836 "util/configparser.c" +#line 3799 "util/configparser.c" break; case 380: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ @@ -3844,7 +3807,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3848 "util/configparser.c" +#line 3811 "util/configparser.c" break; case 381: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ @@ -3856,7 +3819,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3860 "util/configparser.c" +#line 3823 "util/configparser.c" break; case 382: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ @@ -3868,7 +3831,7 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3872 "util/configparser.c" +#line 3835 "util/configparser.c" break; case 383: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ @@ -3880,7 +3843,7 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3884 "util/configparser.c" +#line 3847 "util/configparser.c" break; case 384: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ @@ -3892,7 +3855,7 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3896 "util/configparser.c" +#line 3859 "util/configparser.c" break; case 385: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ @@ -3904,7 +3867,7 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3908 "util/configparser.c" +#line 3871 "util/configparser.c" break; case 386: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ @@ -3921,7 +3884,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3925 "util/configparser.c" +#line 3888 "util/configparser.c" break; case 387: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ @@ -3933,7 +3896,7 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3937 "util/configparser.c" +#line 3900 "util/configparser.c" break; case 388: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ @@ -3945,7 +3908,7 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3949 "util/configparser.c" +#line 3912 "util/configparser.c" break; case 389: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ @@ -3957,7 +3920,7 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3961 "util/configparser.c" +#line 3924 "util/configparser.c" break; case 390: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ @@ -3969,7 +3932,7 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3973 "util/configparser.c" +#line 3936 "util/configparser.c" break; case 391: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ @@ -3981,7 +3944,7 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3948 "util/configparser.c" break; case 392: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ @@ -3993,7 +3956,7 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3997 "util/configparser.c" +#line 3960 "util/configparser.c" break; case 393: /* server_chroot: VAR_CHROOT STRING_ARG */ @@ -4003,7 +3966,7 @@ yyreduce: free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 4007 "util/configparser.c" +#line 3970 "util/configparser.c" break; case 394: /* server_username: VAR_USERNAME STRING_ARG */ @@ -4013,7 +3976,7 @@ yyreduce: free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 4017 "util/configparser.c" +#line 3980 "util/configparser.c" break; case 395: /* server_directory: VAR_DIRECTORY STRING_ARG */ @@ -4042,7 +4005,7 @@ yyreduce: } } } -#line 4046 "util/configparser.c" +#line 4009 "util/configparser.c" break; case 396: /* server_logfile: VAR_LOGFILE STRING_ARG */ @@ -4053,7 +4016,7 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 4057 "util/configparser.c" +#line 4020 "util/configparser.c" break; case 397: /* server_pidfile: VAR_PIDFILE STRING_ARG */ @@ -4063,7 +4026,7 @@ yyreduce: free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4067 "util/configparser.c" +#line 4030 "util/configparser.c" break; case 398: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ @@ -4073,7 +4036,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4077 "util/configparser.c" +#line 4040 "util/configparser.c" break; case 399: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ @@ -4083,7 +4046,7 @@ yyreduce: log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4087 "util/configparser.c" +#line 4050 "util/configparser.c" break; case 400: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ @@ -4093,7 +4056,7 @@ yyreduce: log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4097 "util/configparser.c" +#line 4060 "util/configparser.c" break; case 401: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ @@ -4104,7 +4067,7 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4108 "util/configparser.c" +#line 4071 "util/configparser.c" break; case 402: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ @@ -4115,7 +4078,7 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4119 "util/configparser.c" +#line 4082 "util/configparser.c" break; case 403: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ @@ -4126,7 +4089,7 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4130 "util/configparser.c" +#line 4093 "util/configparser.c" break; case 404: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ @@ -4136,7 +4099,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4140 "util/configparser.c" +#line 4103 "util/configparser.c" break; case 405: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ @@ -4150,7 +4113,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4117 "util/configparser.c" break; case 406: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ @@ -4164,7 +4127,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4168 "util/configparser.c" +#line 4131 "util/configparser.c" break; case 407: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ @@ -4174,7 +4137,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4178 "util/configparser.c" +#line 4141 "util/configparser.c" break; case 408: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ @@ -4186,7 +4149,7 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4190 "util/configparser.c" +#line 4153 "util/configparser.c" break; case 409: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ @@ -4198,7 +4161,7 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4202 "util/configparser.c" +#line 4165 "util/configparser.c" break; case 410: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ @@ -4210,7 +4173,7 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4214 "util/configparser.c" +#line 4177 "util/configparser.c" break; case 411: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ @@ -4222,7 +4185,7 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4226 "util/configparser.c" +#line 4189 "util/configparser.c" break; case 412: /* server_identity: VAR_IDENTITY STRING_ARG */ @@ -4232,7 +4195,7 @@ yyreduce: free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4236 "util/configparser.c" +#line 4199 "util/configparser.c" break; case 413: /* server_version: VAR_VERSION STRING_ARG */ @@ -4242,7 +4205,7 @@ yyreduce: free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4246 "util/configparser.c" +#line 4209 "util/configparser.c" break; case 414: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ @@ -4252,7 +4215,7 @@ yyreduce: free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4256 "util/configparser.c" +#line 4219 "util/configparser.c" break; case 415: /* server_nsid: VAR_NSID STRING_ARG */ @@ -4271,7 +4234,7 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4275 "util/configparser.c" +#line 4238 "util/configparser.c" break; case 416: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ @@ -4282,7 +4245,7 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4286 "util/configparser.c" +#line 4249 "util/configparser.c" break; case 417: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ @@ -4293,7 +4256,7 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4297 "util/configparser.c" +#line 4260 "util/configparser.c" break; case 418: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ @@ -4306,7 +4269,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4310 "util/configparser.c" +#line 4273 "util/configparser.c" break; case 419: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ @@ -4319,7 +4282,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4323 "util/configparser.c" +#line 4286 "util/configparser.c" break; case 420: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ @@ -4332,7 +4295,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4336 "util/configparser.c" +#line 4299 "util/configparser.c" break; case 421: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ @@ -4349,7 +4312,7 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4353 "util/configparser.c" +#line 4316 "util/configparser.c" break; case 422: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ @@ -4360,7 +4323,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4364 "util/configparser.c" +#line 4327 "util/configparser.c" break; case 423: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ @@ -4376,7 +4339,7 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" +#line 4343 "util/configparser.c" break; case 424: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ @@ -4390,7 +4353,7 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4394 "util/configparser.c" +#line 4357 "util/configparser.c" break; case 425: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ @@ -4401,7 +4364,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4405 "util/configparser.c" +#line 4368 "util/configparser.c" break; case 426: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ @@ -4417,7 +4380,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4421 "util/configparser.c" +#line 4384 "util/configparser.c" break; case 427: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ @@ -4429,7 +4392,7 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4433 "util/configparser.c" +#line 4396 "util/configparser.c" break; case 428: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ @@ -4441,7 +4404,7 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4445 "util/configparser.c" +#line 4408 "util/configparser.c" break; case 429: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ @@ -4453,7 +4416,7 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4457 "util/configparser.c" +#line 4420 "util/configparser.c" break; case 430: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ @@ -4465,7 +4428,7 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4469 "util/configparser.c" +#line 4432 "util/configparser.c" break; case 431: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ @@ -4478,7 +4441,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 4445 "util/configparser.c" break; case 432: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ @@ -4491,7 +4454,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4495 "util/configparser.c" +#line 4458 "util/configparser.c" break; case 433: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ @@ -4502,7 +4465,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" +#line 4469 "util/configparser.c" break; case 434: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ @@ -4518,7 +4481,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4522 "util/configparser.c" +#line 4485 "util/configparser.c" break; case 435: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ @@ -4530,7 +4493,7 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4534 "util/configparser.c" +#line 4497 "util/configparser.c" break; case 436: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ @@ -4541,7 +4504,7 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4545 "util/configparser.c" +#line 4508 "util/configparser.c" break; case 437: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ @@ -4553,7 +4516,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4557 "util/configparser.c" +#line 4520 "util/configparser.c" break; case 438: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ @@ -4564,7 +4527,7 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4568 "util/configparser.c" +#line 4531 "util/configparser.c" break; case 439: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ @@ -4580,7 +4543,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4584 "util/configparser.c" +#line 4547 "util/configparser.c" break; case 440: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ @@ -4592,7 +4555,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4596 "util/configparser.c" +#line 4559 "util/configparser.c" break; case 441: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ @@ -4604,7 +4567,7 @@ yyreduce: else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4608 "util/configparser.c" +#line 4571 "util/configparser.c" break; case 442: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ @@ -4617,7 +4580,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4584 "util/configparser.c" break; case 443: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ @@ -4627,7 +4590,7 @@ yyreduce: free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4631 "util/configparser.c" +#line 4594 "util/configparser.c" break; case 444: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ @@ -4640,7 +4603,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4644 "util/configparser.c" +#line 4607 "util/configparser.c" break; case 445: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ @@ -4653,7 +4616,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4657 "util/configparser.c" +#line 4620 "util/configparser.c" break; case 446: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ @@ -4666,7 +4629,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4670 "util/configparser.c" +#line 4633 "util/configparser.c" break; case 447: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ @@ -4679,7 +4642,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4683 "util/configparser.c" +#line 4646 "util/configparser.c" break; case 448: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ @@ -4692,7 +4655,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4696 "util/configparser.c" +#line 4659 "util/configparser.c" break; case 449: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ @@ -4705,7 +4668,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4709 "util/configparser.c" +#line 4672 "util/configparser.c" break; case 450: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ @@ -4718,7 +4681,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4722 "util/configparser.c" +#line 4685 "util/configparser.c" break; case 451: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG */ @@ -4731,7 +4694,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4735 "util/configparser.c" +#line 4698 "util/configparser.c" break; case 452: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ @@ -4744,7 +4707,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4748 "util/configparser.c" +#line 4711 "util/configparser.c" break; case 453: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ @@ -4754,7 +4717,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4758 "util/configparser.c" +#line 4721 "util/configparser.c" break; case 454: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ @@ -4764,7 +4727,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4768 "util/configparser.c" +#line 4731 "util/configparser.c" break; case 455: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ @@ -4774,7 +4737,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4778 "util/configparser.c" +#line 4741 "util/configparser.c" break; case 456: /* server_prefetch: VAR_PREFETCH STRING_ARG */ @@ -4786,7 +4749,7 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4790 "util/configparser.c" +#line 4753 "util/configparser.c" break; case 457: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ @@ -4798,7 +4761,7 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4802 "util/configparser.c" +#line 4765 "util/configparser.c" break; case 458: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ @@ -4810,7 +4773,7 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4814 "util/configparser.c" +#line 4777 "util/configparser.c" break; case 459: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ @@ -4822,7 +4785,7 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4826 "util/configparser.c" +#line 4789 "util/configparser.c" break; case 460: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ @@ -4832,7 +4795,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4836 "util/configparser.c" +#line 4799 "util/configparser.c" break; case 461: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ @@ -4845,7 +4808,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4849 "util/configparser.c" +#line 4812 "util/configparser.c" break; case 462: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ @@ -4856,7 +4819,7 @@ yyreduce: if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4860 "util/configparser.c" +#line 4823 "util/configparser.c" break; case 463: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ @@ -4868,7 +4831,7 @@ yyreduce: &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4872 "util/configparser.c" +#line 4835 "util/configparser.c" break; case 464: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ @@ -4878,7 +4841,7 @@ yyreduce: free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4882 "util/configparser.c" +#line 4845 "util/configparser.c" break; case 465: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ @@ -4899,7 +4862,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4903 "util/configparser.c" +#line 4866 "util/configparser.c" break; case 466: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ @@ -4915,7 +4878,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4919 "util/configparser.c" +#line 4882 "util/configparser.c" break; case 467: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ @@ -4931,7 +4894,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4935 "util/configparser.c" +#line 4898 "util/configparser.c" break; case 468: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ @@ -4947,7 +4910,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4951 "util/configparser.c" +#line 4914 "util/configparser.c" break; case 469: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ @@ -4959,7 +4922,7 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4963 "util/configparser.c" +#line 4926 "util/configparser.c" break; case 470: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ @@ -4971,7 +4934,7 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4938 "util/configparser.c" break; case 471: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ @@ -4983,7 +4946,7 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4987 "util/configparser.c" +#line 4950 "util/configparser.c" break; case 472: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ @@ -4995,7 +4958,7 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4999 "util/configparser.c" +#line 4962 "util/configparser.c" break; case 473: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ @@ -5008,7 +4971,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5012 "util/configparser.c" +#line 4975 "util/configparser.c" break; case 474: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ @@ -5021,7 +4984,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5025 "util/configparser.c" +#line 4988 "util/configparser.c" break; case 475: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ @@ -5035,7 +4998,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5039 "util/configparser.c" +#line 5002 "util/configparser.c" break; case 476: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ @@ -5047,7 +5010,7 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5051 "util/configparser.c" +#line 5014 "util/configparser.c" break; case 477: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ @@ -5059,7 +5022,7 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5063 "util/configparser.c" +#line 5026 "util/configparser.c" break; case 478: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ @@ -5071,7 +5034,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5075 "util/configparser.c" +#line 5038 "util/configparser.c" break; case 479: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ @@ -5083,7 +5046,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5087 "util/configparser.c" +#line 5050 "util/configparser.c" break; case 480: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ @@ -5095,7 +5058,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5099 "util/configparser.c" +#line 5062 "util/configparser.c" break; case 481: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ @@ -5107,7 +5070,7 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5111 "util/configparser.c" +#line 5074 "util/configparser.c" break; case 482: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ @@ -5119,7 +5082,7 @@ yyreduce: else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5123 "util/configparser.c" +#line 5086 "util/configparser.c" break; case 483: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ @@ -5131,7 +5094,7 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5135 "util/configparser.c" +#line 5098 "util/configparser.c" break; case 484: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ @@ -5147,7 +5110,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5151 "util/configparser.c" +#line 5114 "util/configparser.c" break; case 485: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ @@ -5163,7 +5126,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5167 "util/configparser.c" +#line 5130 "util/configparser.c" break; case 486: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ @@ -5175,7 +5138,7 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5179 "util/configparser.c" +#line 5142 "util/configparser.c" break; case 487: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ @@ -5185,7 +5148,7 @@ yyreduce: free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5189 "util/configparser.c" +#line 5152 "util/configparser.c" break; case 488: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ @@ -5197,7 +5160,7 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5201 "util/configparser.c" +#line 5164 "util/configparser.c" break; case 489: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ @@ -5209,7 +5172,7 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5213 "util/configparser.c" +#line 5176 "util/configparser.c" break; case 490: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ @@ -5221,7 +5184,7 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5225 "util/configparser.c" +#line 5188 "util/configparser.c" break; case 491: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ @@ -5233,7 +5196,7 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5237 "util/configparser.c" +#line 5200 "util/configparser.c" break; case 492: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ @@ -5246,7 +5209,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5250 "util/configparser.c" +#line 5213 "util/configparser.c" break; case 493: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ @@ -5257,7 +5220,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5261 "util/configparser.c" +#line 5224 "util/configparser.c" break; case 494: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ @@ -5273,7 +5236,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5277 "util/configparser.c" +#line 5240 "util/configparser.c" break; case 495: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ @@ -5284,7 +5247,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5251 "util/configparser.c" break; case 496: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ @@ -5343,7 +5306,7 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5347 "util/configparser.c" +#line 5310 "util/configparser.c" break; case 497: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ @@ -5353,7 +5316,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5357 "util/configparser.c" +#line 5320 "util/configparser.c" break; case 498: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ @@ -5371,7 +5334,7 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5375 "util/configparser.c" +#line 5338 "util/configparser.c" break; case 499: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ @@ -5384,7 +5347,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5388 "util/configparser.c" +#line 5351 "util/configparser.c" break; case 500: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ @@ -5397,7 +5360,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5401 "util/configparser.c" +#line 5364 "util/configparser.c" break; case 501: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ @@ -5407,7 +5370,7 @@ yyreduce: cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5411 "util/configparser.c" +#line 5374 "util/configparser.c" break; case 502: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ @@ -5417,7 +5380,7 @@ yyreduce: cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5421 "util/configparser.c" +#line 5384 "util/configparser.c" break; case 503: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ @@ -5427,7 +5390,7 @@ yyreduce: free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5431 "util/configparser.c" +#line 5394 "util/configparser.c" break; case 504: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ @@ -5439,7 +5402,7 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5443 "util/configparser.c" +#line 5406 "util/configparser.c" break; case 505: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ @@ -5450,7 +5413,7 @@ yyreduce: (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5454 "util/configparser.c" +#line 5417 "util/configparser.c" break; case 506: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ @@ -5467,7 +5430,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5471 "util/configparser.c" +#line 5434 "util/configparser.c" break; case 507: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ @@ -5491,7 +5454,7 @@ yyreduce: } } } -#line 5495 "util/configparser.c" +#line 5458 "util/configparser.c" break; case 508: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ @@ -5515,7 +5478,7 @@ yyreduce: } } } -#line 5519 "util/configparser.c" +#line 5482 "util/configparser.c" break; case 509: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ @@ -5530,7 +5493,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5534 "util/configparser.c" +#line 5497 "util/configparser.c" break; case 510: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ @@ -5545,7 +5508,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5549 "util/configparser.c" +#line 5512 "util/configparser.c" break; case 511: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ @@ -5560,7 +5523,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5564 "util/configparser.c" +#line 5527 "util/configparser.c" break; case 512: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ @@ -5572,7 +5535,7 @@ yyreduce: yyerror("out of memory"); } } -#line 5576 "util/configparser.c" +#line 5539 "util/configparser.c" break; case 513: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ @@ -5596,7 +5559,7 @@ yyreduce: } } } -#line 5600 "util/configparser.c" +#line 5563 "util/configparser.c" break; case 514: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ @@ -5611,7 +5574,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5615 "util/configparser.c" +#line 5578 "util/configparser.c" break; case 515: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ @@ -5626,7 +5589,7 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5630 "util/configparser.c" +#line 5593 "util/configparser.c" break; case 516: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ @@ -5638,7 +5601,7 @@ yyreduce: yyerror("out of memory"); } } -#line 5642 "util/configparser.c" +#line 5605 "util/configparser.c" break; case 517: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ @@ -5662,7 +5625,7 @@ yyreduce: } } } -#line 5666 "util/configparser.c" +#line 5629 "util/configparser.c" break; case 518: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ @@ -5674,7 +5637,7 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5678 "util/configparser.c" +#line 5641 "util/configparser.c" break; case 519: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ @@ -5686,7 +5649,7 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5690 "util/configparser.c" +#line 5653 "util/configparser.c" break; case 520: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ @@ -5697,7 +5660,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5701 "util/configparser.c" +#line 5664 "util/configparser.c" break; case 521: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ @@ -5708,7 +5671,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5712 "util/configparser.c" +#line 5675 "util/configparser.c" break; case 522: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ @@ -5724,7 +5687,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5728 "util/configparser.c" +#line 5691 "util/configparser.c" break; case 523: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ @@ -5740,7 +5703,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5744 "util/configparser.c" +#line 5707 "util/configparser.c" break; case 524: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ @@ -5758,7 +5721,7 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5762 "util/configparser.c" +#line 5725 "util/configparser.c" break; case 525: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ @@ -5776,7 +5739,7 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5780 "util/configparser.c" +#line 5743 "util/configparser.c" break; case 526: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ @@ -5788,7 +5751,7 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5792 "util/configparser.c" +#line 5755 "util/configparser.c" break; case 527: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ @@ -5800,7 +5763,7 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5804 "util/configparser.c" +#line 5767 "util/configparser.c" break; case 528: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ @@ -5813,7 +5776,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5817 "util/configparser.c" +#line 5780 "util/configparser.c" break; case 529: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ @@ -5826,7 +5789,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5830 "util/configparser.c" +#line 5793 "util/configparser.c" break; case 530: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ @@ -5838,7 +5801,7 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5842 "util/configparser.c" +#line 5805 "util/configparser.c" break; case 531: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ @@ -5850,7 +5813,7 @@ yyreduce: else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5854 "util/configparser.c" +#line 5817 "util/configparser.c" break; case 532: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ @@ -5862,7 +5825,7 @@ yyreduce: else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5866 "util/configparser.c" +#line 5829 "util/configparser.c" break; case 533: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ @@ -5871,7 +5834,7 @@ yyreduce: OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5875 "util/configparser.c" +#line 5838 "util/configparser.c" break; case 534: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ @@ -5883,7 +5846,7 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5887 "util/configparser.c" +#line 5850 "util/configparser.c" break; case 535: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ @@ -5895,7 +5858,7 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5899 "util/configparser.c" +#line 5862 "util/configparser.c" break; case 536: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ @@ -5908,7 +5871,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5912 "util/configparser.c" +#line 5875 "util/configparser.c" break; case 537: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ @@ -5921,7 +5884,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5925 "util/configparser.c" +#line 5888 "util/configparser.c" break; case 538: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ @@ -5934,7 +5897,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5938 "util/configparser.c" +#line 5901 "util/configparser.c" break; case 539: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ @@ -5946,7 +5909,7 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5950 "util/configparser.c" +#line 5913 "util/configparser.c" break; case 540: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ @@ -5959,7 +5922,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5963 "util/configparser.c" +#line 5926 "util/configparser.c" break; case 541: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ @@ -5971,7 +5934,7 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5975 "util/configparser.c" +#line 5938 "util/configparser.c" break; case 542: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ @@ -5987,7 +5950,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5991 "util/configparser.c" +#line 5954 "util/configparser.c" break; case 543: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ @@ -6003,7 +5966,7 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6007 "util/configparser.c" +#line 5970 "util/configparser.c" break; case 544: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ @@ -6018,7 +5981,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6022 "util/configparser.c" +#line 5985 "util/configparser.c" break; case 545: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ @@ -6035,7 +5998,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6039 "util/configparser.c" +#line 6002 "util/configparser.c" break; case 546: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ @@ -6050,7 +6013,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6054 "util/configparser.c" +#line 6017 "util/configparser.c" break; case 547: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ @@ -6067,7 +6030,7 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6071 "util/configparser.c" +#line 6034 "util/configparser.c" break; case 548: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ @@ -6079,7 +6042,7 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6083 "util/configparser.c" +#line 6046 "util/configparser.c" break; case 549: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ @@ -6093,7 +6056,7 @@ yyreduce: else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6097 "util/configparser.c" +#line 6060 "util/configparser.c" break; case 550: /* server_ede: VAR_EDE STRING_ARG */ @@ -6105,7 +6068,7 @@ yyreduce: else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6109 "util/configparser.c" +#line 6072 "util/configparser.c" break; case 551: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ @@ -6115,7 +6078,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6119 "util/configparser.c" +#line 6082 "util/configparser.c" break; case 552: /* stub_name: VAR_NAME STRING_ARG */ @@ -6128,7 +6091,7 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6132 "util/configparser.c" +#line 6095 "util/configparser.c" break; case 553: /* stub_host: VAR_STUB_HOST STRING_ARG */ @@ -6138,7 +6101,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6142 "util/configparser.c" +#line 6105 "util/configparser.c" break; case 554: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ @@ -6148,7 +6111,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6152 "util/configparser.c" +#line 6115 "util/configparser.c" break; case 555: /* stub_first: VAR_STUB_FIRST STRING_ARG */ @@ -6160,7 +6123,7 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6164 "util/configparser.c" +#line 6127 "util/configparser.c" break; case 556: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ @@ -6172,7 +6135,7 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6139 "util/configparser.c" break; case 557: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ @@ -6185,7 +6148,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6152 "util/configparser.c" break; case 558: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ @@ -6198,7 +6161,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6165 "util/configparser.c" break; case 559: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ @@ -6211,7 +6174,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6215 "util/configparser.c" +#line 6178 "util/configparser.c" break; case 560: /* forward_name: VAR_NAME STRING_ARG */ @@ -6224,7 +6187,7 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6228 "util/configparser.c" +#line 6191 "util/configparser.c" break; case 561: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ @@ -6234,7 +6197,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6238 "util/configparser.c" +#line 6201 "util/configparser.c" break; case 562: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ @@ -6244,7 +6207,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6248 "util/configparser.c" +#line 6211 "util/configparser.c" break; case 563: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ @@ -6256,7 +6219,7 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6260 "util/configparser.c" +#line 6223 "util/configparser.c" break; case 564: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ @@ -6268,7 +6231,7 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6272 "util/configparser.c" +#line 6235 "util/configparser.c" break; case 565: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ @@ -6281,7 +6244,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6285 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 566: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ @@ -6294,7 +6257,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6298 "util/configparser.c" +#line 6261 "util/configparser.c" break; case 567: /* auth_name: VAR_NAME STRING_ARG */ @@ -6307,7 +6270,7 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6311 "util/configparser.c" +#line 6274 "util/configparser.c" break; case 568: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ @@ -6317,7 +6280,7 @@ yyreduce: free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6321 "util/configparser.c" +#line 6284 "util/configparser.c" break; case 569: /* auth_master: VAR_MASTER STRING_ARG */ @@ -6327,7 +6290,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6331 "util/configparser.c" +#line 6294 "util/configparser.c" break; case 570: /* auth_url: VAR_URL STRING_ARG */ @@ -6337,7 +6300,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6341 "util/configparser.c" +#line 6304 "util/configparser.c" break; case 571: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ @@ -6348,7 +6311,7 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 6352 "util/configparser.c" +#line 6315 "util/configparser.c" break; case 572: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ @@ -6361,7 +6324,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6365 "util/configparser.c" +#line 6328 "util/configparser.c" break; case 573: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ @@ -6374,7 +6337,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6378 "util/configparser.c" +#line 6341 "util/configparser.c" break; case 574: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ @@ -6387,7 +6350,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6391 "util/configparser.c" +#line 6354 "util/configparser.c" break; case 575: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ @@ -6400,7 +6363,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6404 "util/configparser.c" +#line 6367 "util/configparser.c" break; case 576: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ @@ -6413,7 +6376,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6417 "util/configparser.c" +#line 6380 "util/configparser.c" break; case 577: /* view_name: VAR_NAME STRING_ARG */ @@ -6426,7 +6389,7 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6430 "util/configparser.c" +#line 6393 "util/configparser.c" break; case 578: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ @@ -6485,7 +6448,7 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6489 "util/configparser.c" +#line 6452 "util/configparser.c" break; case 579: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ @@ -6498,7 +6461,7 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6502 "util/configparser.c" +#line 6465 "util/configparser.c" break; case 580: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ @@ -6509,7 +6472,7 @@ yyreduce: &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6513 "util/configparser.c" +#line 6476 "util/configparser.c" break; case 581: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ @@ -6520,7 +6483,7 @@ yyreduce: fatal_exit("out of memory adding local-data"); } } -#line 6524 "util/configparser.c" +#line 6487 "util/configparser.c" break; case 582: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ @@ -6538,7 +6501,7 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6542 "util/configparser.c" +#line 6505 "util/configparser.c" break; case 583: /* view_first: VAR_VIEW_FIRST STRING_ARG */ @@ -6550,7 +6513,7 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6554 "util/configparser.c" +#line 6517 "util/configparser.c" break; case 584: /* rcstart: VAR_REMOTE_CONTROL */ @@ -6559,7 +6522,7 @@ yyreduce: OUTYY(("\nP(remote-control:)\n")); cfg_parser->started_toplevel = 1; } -#line 6563 "util/configparser.c" +#line 6526 "util/configparser.c" break; case 595: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ @@ -6572,7 +6535,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6576 "util/configparser.c" +#line 6539 "util/configparser.c" break; case 596: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ @@ -6584,7 +6547,7 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6588 "util/configparser.c" +#line 6551 "util/configparser.c" break; case 597: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ @@ -6594,7 +6557,7 @@ yyreduce: if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6598 "util/configparser.c" +#line 6561 "util/configparser.c" break; case 598: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ @@ -6604,7 +6567,7 @@ yyreduce: cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6608 "util/configparser.c" +#line 6571 "util/configparser.c" break; case 599: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ @@ -6614,7 +6577,7 @@ yyreduce: free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6618 "util/configparser.c" +#line 6581 "util/configparser.c" break; case 600: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ @@ -6624,7 +6587,7 @@ yyreduce: free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6628 "util/configparser.c" +#line 6591 "util/configparser.c" break; case 601: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ @@ -6634,7 +6597,7 @@ yyreduce: free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6638 "util/configparser.c" +#line 6601 "util/configparser.c" break; case 602: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ @@ -6644,7 +6607,7 @@ yyreduce: free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6648 "util/configparser.c" +#line 6611 "util/configparser.c" break; case 603: /* dtstart: VAR_DNSTAP */ @@ -6653,7 +6616,7 @@ yyreduce: OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6657 "util/configparser.c" +#line 6620 "util/configparser.c" break; case 625: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ @@ -6665,7 +6628,7 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6669 "util/configparser.c" +#line 6632 "util/configparser.c" break; case 626: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ @@ -6678,7 +6641,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6682 "util/configparser.c" +#line 6645 "util/configparser.c" break; case 627: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ @@ -6688,7 +6651,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6692 "util/configparser.c" +#line 6655 "util/configparser.c" break; case 628: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ @@ -6698,7 +6661,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6702 "util/configparser.c" +#line 6665 "util/configparser.c" break; case 629: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ @@ -6710,7 +6673,7 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6714 "util/configparser.c" +#line 6677 "util/configparser.c" break; case 630: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ @@ -6720,7 +6683,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6724 "util/configparser.c" +#line 6687 "util/configparser.c" break; case 631: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ @@ -6730,7 +6693,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6734 "util/configparser.c" +#line 6697 "util/configparser.c" break; case 632: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ @@ -6740,7 +6703,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6744 "util/configparser.c" +#line 6707 "util/configparser.c" break; case 633: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ @@ -6750,7 +6713,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6754 "util/configparser.c" +#line 6717 "util/configparser.c" break; case 634: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ @@ -6762,7 +6725,7 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6766 "util/configparser.c" +#line 6729 "util/configparser.c" break; case 635: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ @@ -6774,7 +6737,7 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6778 "util/configparser.c" +#line 6741 "util/configparser.c" break; case 636: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ @@ -6784,7 +6747,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6788 "util/configparser.c" +#line 6751 "util/configparser.c" break; case 637: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ @@ -6794,7 +6757,7 @@ yyreduce: free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6798 "util/configparser.c" +#line 6761 "util/configparser.c" break; case 638: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ @@ -6807,7 +6770,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6811 "util/configparser.c" +#line 6774 "util/configparser.c" break; case 639: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ @@ -6820,7 +6783,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6824 "util/configparser.c" +#line 6787 "util/configparser.c" break; case 640: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ @@ -6833,7 +6796,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6837 "util/configparser.c" +#line 6800 "util/configparser.c" break; case 641: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ @@ -6846,7 +6809,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6850 "util/configparser.c" +#line 6813 "util/configparser.c" break; case 642: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ @@ -6859,7 +6822,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6863 "util/configparser.c" +#line 6826 "util/configparser.c" break; case 643: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ @@ -6872,7 +6835,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6876 "util/configparser.c" +#line 6839 "util/configparser.c" break; case 644: /* pythonstart: VAR_PYTHON */ @@ -6881,7 +6844,7 @@ yyreduce: OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6885 "util/configparser.c" +#line 6848 "util/configparser.c" break; case 648: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ @@ -6891,7 +6854,7 @@ yyreduce: if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6895 "util/configparser.c" +#line 6858 "util/configparser.c" break; case 649: /* dynlibstart: VAR_DYNLIB */ @@ -6900,7 +6863,7 @@ yyreduce: OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6904 "util/configparser.c" +#line 6867 "util/configparser.c" break; case 653: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ @@ -6910,7 +6873,7 @@ yyreduce: if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6914 "util/configparser.c" +#line 6877 "util/configparser.c" break; case 654: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ @@ -6923,7 +6886,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6927 "util/configparser.c" +#line 6890 "util/configparser.c" break; case 655: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ @@ -6933,7 +6896,7 @@ yyreduce: free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6937 "util/configparser.c" +#line 6900 "util/configparser.c" break; case 656: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ @@ -6945,7 +6908,7 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6949 "util/configparser.c" +#line 6912 "util/configparser.c" break; case 657: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ @@ -6956,7 +6919,7 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6960 "util/configparser.c" +#line 6923 "util/configparser.c" break; case 658: /* dnscstart: VAR_DNSCRYPT */ @@ -6965,7 +6928,7 @@ yyreduce: OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6969 "util/configparser.c" +#line 6932 "util/configparser.c" break; case 671: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ @@ -6977,7 +6940,7 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6981 "util/configparser.c" +#line 6944 "util/configparser.c" break; case 672: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ @@ -6989,7 +6952,7 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6993 "util/configparser.c" +#line 6956 "util/configparser.c" break; case 673: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ @@ -6999,7 +6962,7 @@ yyreduce: free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 7003 "util/configparser.c" +#line 6966 "util/configparser.c" break; case 674: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ @@ -7011,7 +6974,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 7015 "util/configparser.c" +#line 6978 "util/configparser.c" break; case 675: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ @@ -7021,7 +6984,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 7025 "util/configparser.c" +#line 6988 "util/configparser.c" break; case 676: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ @@ -7033,7 +6996,7 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 7037 "util/configparser.c" +#line 7000 "util/configparser.c" break; case 677: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ @@ -7044,7 +7007,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7048 "util/configparser.c" +#line 7011 "util/configparser.c" break; case 678: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ @@ -7060,7 +7023,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7064 "util/configparser.c" +#line 7027 "util/configparser.c" break; case 679: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ @@ -7071,7 +7034,7 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 7075 "util/configparser.c" +#line 7038 "util/configparser.c" break; case 680: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ @@ -7087,7 +7050,7 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7091 "util/configparser.c" +#line 7054 "util/configparser.c" break; case 681: /* cachedbstart: VAR_CACHEDB */ @@ -7096,10 +7059,10 @@ yyreduce: OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 7100 "util/configparser.c" +#line 7063 "util/configparser.c" break; - case 691: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ + case 692: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ #line 3660 "./util/configparser.y" { #ifdef USE_CACHEDB @@ -7111,10 +7074,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7115 "util/configparser.c" +#line 7078 "util/configparser.c" break; - case 692: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ + case 693: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ #line 3672 "./util/configparser.y" { #ifdef USE_CACHEDB @@ -7126,10 +7089,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7130 "util/configparser.c" +#line 7093 "util/configparser.c" break; - case 693: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ + case 694: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ #line 3684 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7141,10 +7104,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7145 "util/configparser.c" +#line 7108 "util/configparser.c" break; - case 694: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ + case 695: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ #line 3696 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7159,10 +7122,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7163 "util/configparser.c" +#line 7126 "util/configparser.c" break; - case 695: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG */ + case 696: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG */ #line 3711 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7174,11 +7137,26 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7178 "util/configparser.c" +#line 7141 "util/configparser.c" break; - case 696: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ + case 697: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG */ #line 3723 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->redis_server_password); + cfg_parser->cfg->redis_server_password = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free((yyvsp[0].str)); + #endif + } +#line 7156 "util/configparser.c" + break; + + case 698: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3735 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7190,11 +7168,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7194 "util/configparser.c" +#line 7172 "util/configparser.c" break; - case 697: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3736 "./util/configparser.y" + case 699: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3748 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7206,11 +7184,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7210 "util/configparser.c" +#line 7188 "util/configparser.c" break; - case 698: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3749 "./util/configparser.y" + case 700: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3761 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7220,20 +7198,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7224 "util/configparser.c" +#line 7202 "util/configparser.c" break; - case 699: /* ipsetstart: VAR_IPSET */ -#line 3760 "./util/configparser.y" + case 701: /* ipsetstart: VAR_IPSET */ +#line 3772 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7233 "util/configparser.c" +#line 7211 "util/configparser.c" break; - case 704: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3770 "./util/configparser.y" + case 706: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3782 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7247,11 +7225,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7251 "util/configparser.c" +#line 7229 "util/configparser.c" break; - case 705: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3785 "./util/configparser.y" + case 707: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3797 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7265,11 +7243,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7269 "util/configparser.c" +#line 7247 "util/configparser.c" break; -#line 7273 "util/configparser.c" +#line 7251 "util/configparser.c" default: break; } @@ -7351,6 +7329,7 @@ yyerrorlab: label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -7411,7 +7390,7 @@ yyerrlab1: `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -7419,24 +7398,22 @@ yyacceptlab: `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if !defined yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -7463,7 +7440,7 @@ yyreturn: return yyresult; } -#line 3799 "./util/configparser.y" +#line 3811 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 7435f9c2e..1ce85380b 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C @@ -335,61 +335,62 @@ extern int yydebug; VAR_CACHEDB_REDISTIMEOUT = 536, /* VAR_CACHEDB_REDISTIMEOUT */ VAR_CACHEDB_REDISEXPIRERECORDS = 537, /* VAR_CACHEDB_REDISEXPIRERECORDS */ VAR_CACHEDB_REDISPATH = 538, /* VAR_CACHEDB_REDISPATH */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 539, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 540, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 541, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 542, /* VAR_ZONEFILE */ - VAR_MASTER = 543, /* VAR_MASTER */ - VAR_URL = 544, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 545, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 546, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 547, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 548, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 549, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 550, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 551, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 552, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 553, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 554, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 555, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 556, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 557, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 558, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 559, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 560, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 561, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 562, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 563, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 564, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 565, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 566, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 567, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 568, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 569, /* VAR_RPZ */ - VAR_TAGS = 570, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 571, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 572, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 573, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 574, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 575, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 576, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 577, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 578, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 579, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 580, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 581, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 582, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 583, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - VAR_INTERFACE_AUTOMATIC_PORTS = 584, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - VAR_EDE = 585, /* VAR_EDE */ - VAR_INTERFACE_ACTION = 586, /* VAR_INTERFACE_ACTION */ - VAR_INTERFACE_VIEW = 587, /* VAR_INTERFACE_VIEW */ - VAR_INTERFACE_TAG = 588, /* VAR_INTERFACE_TAG */ - VAR_INTERFACE_TAG_ACTION = 589, /* VAR_INTERFACE_TAG_ACTION */ - VAR_INTERFACE_TAG_DATA = 590, /* VAR_INTERFACE_TAG_DATA */ - VAR_PROXY_PROTOCOL_PORT = 591, /* VAR_PROXY_PROTOCOL_PORT */ - VAR_STATISTICS_INHIBIT_ZERO = 592, /* VAR_STATISTICS_INHIBIT_ZERO */ - VAR_HARDEN_UNKNOWN_ADDITIONAL = 593 /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ + VAR_CACHEDB_REDISPASSWORD = 539, /* VAR_CACHEDB_REDISPASSWORD */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 540, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 541, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 542, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 543, /* VAR_ZONEFILE */ + VAR_MASTER = 544, /* VAR_MASTER */ + VAR_URL = 545, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 546, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 547, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 548, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 549, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 550, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 551, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 552, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 553, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 554, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 555, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 556, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 557, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 558, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 559, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 560, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 561, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 562, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 563, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 564, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 565, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 566, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 567, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 568, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 569, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 570, /* VAR_RPZ */ + VAR_TAGS = 571, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 572, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 573, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 574, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 575, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 576, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 577, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 578, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 579, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 580, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 581, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 582, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 583, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 584, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_INTERFACE_AUTOMATIC_PORTS = 585, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + VAR_EDE = 586, /* VAR_EDE */ + VAR_INTERFACE_ACTION = 587, /* VAR_INTERFACE_ACTION */ + VAR_INTERFACE_VIEW = 588, /* VAR_INTERFACE_VIEW */ + VAR_INTERFACE_TAG = 589, /* VAR_INTERFACE_TAG */ + VAR_INTERFACE_TAG_ACTION = 590, /* VAR_INTERFACE_TAG_ACTION */ + VAR_INTERFACE_TAG_DATA = 591, /* VAR_INTERFACE_TAG_DATA */ + VAR_PROXY_PROTOCOL_PORT = 592, /* VAR_PROXY_PROTOCOL_PORT */ + VAR_STATISTICS_INHIBIT_ZERO = 593, /* VAR_STATISTICS_INHIBIT_ZERO */ + VAR_HARDEN_UNKNOWN_ADDITIONAL = 594 /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -679,61 +680,62 @@ extern int yydebug; #define VAR_CACHEDB_REDISTIMEOUT 536 #define VAR_CACHEDB_REDISEXPIRERECORDS 537 #define VAR_CACHEDB_REDISPATH 538 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 539 -#define VAR_FOR_UPSTREAM 540 -#define VAR_AUTH_ZONE 541 -#define VAR_ZONEFILE 542 -#define VAR_MASTER 543 -#define VAR_URL 544 -#define VAR_FOR_DOWNSTREAM 545 -#define VAR_FALLBACK_ENABLED 546 -#define VAR_TLS_ADDITIONAL_PORT 547 -#define VAR_LOW_RTT 548 -#define VAR_LOW_RTT_PERMIL 549 -#define VAR_FAST_SERVER_PERMIL 550 -#define VAR_FAST_SERVER_NUM 551 -#define VAR_ALLOW_NOTIFY 552 -#define VAR_TLS_WIN_CERT 553 -#define VAR_TCP_CONNECTION_LIMIT 554 -#define VAR_FORWARD_NO_CACHE 555 -#define VAR_STUB_NO_CACHE 556 -#define VAR_LOG_SERVFAIL 557 -#define VAR_DENY_ANY 558 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 559 -#define VAR_LOG_TAG_QUERYREPLY 560 -#define VAR_STREAM_WAIT_SIZE 561 -#define VAR_TLS_CIPHERS 562 -#define VAR_TLS_CIPHERSUITES 563 -#define VAR_TLS_USE_SNI 564 -#define VAR_IPSET 565 -#define VAR_IPSET_NAME_V4 566 -#define VAR_IPSET_NAME_V6 567 -#define VAR_TLS_SESSION_TICKET_KEYS 568 -#define VAR_RPZ 569 -#define VAR_TAGS 570 -#define VAR_RPZ_ACTION_OVERRIDE 571 -#define VAR_RPZ_CNAME_OVERRIDE 572 -#define VAR_RPZ_LOG 573 -#define VAR_RPZ_LOG_NAME 574 -#define VAR_DYNLIB 575 -#define VAR_DYNLIB_FILE 576 -#define VAR_EDNS_CLIENT_STRING 577 -#define VAR_EDNS_CLIENT_STRING_OPCODE 578 -#define VAR_NSID 579 -#define VAR_ZONEMD_PERMISSIVE_MODE 580 -#define VAR_ZONEMD_CHECK 581 -#define VAR_ZONEMD_REJECT_ABSENCE 582 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 583 -#define VAR_INTERFACE_AUTOMATIC_PORTS 584 -#define VAR_EDE 585 -#define VAR_INTERFACE_ACTION 586 -#define VAR_INTERFACE_VIEW 587 -#define VAR_INTERFACE_TAG 588 -#define VAR_INTERFACE_TAG_ACTION 589 -#define VAR_INTERFACE_TAG_DATA 590 -#define VAR_PROXY_PROTOCOL_PORT 591 -#define VAR_STATISTICS_INHIBIT_ZERO 592 -#define VAR_HARDEN_UNKNOWN_ADDITIONAL 593 +#define VAR_CACHEDB_REDISPASSWORD 539 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 540 +#define VAR_FOR_UPSTREAM 541 +#define VAR_AUTH_ZONE 542 +#define VAR_ZONEFILE 543 +#define VAR_MASTER 544 +#define VAR_URL 545 +#define VAR_FOR_DOWNSTREAM 546 +#define VAR_FALLBACK_ENABLED 547 +#define VAR_TLS_ADDITIONAL_PORT 548 +#define VAR_LOW_RTT 549 +#define VAR_LOW_RTT_PERMIL 550 +#define VAR_FAST_SERVER_PERMIL 551 +#define VAR_FAST_SERVER_NUM 552 +#define VAR_ALLOW_NOTIFY 553 +#define VAR_TLS_WIN_CERT 554 +#define VAR_TCP_CONNECTION_LIMIT 555 +#define VAR_FORWARD_NO_CACHE 556 +#define VAR_STUB_NO_CACHE 557 +#define VAR_LOG_SERVFAIL 558 +#define VAR_DENY_ANY 559 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 560 +#define VAR_LOG_TAG_QUERYREPLY 561 +#define VAR_STREAM_WAIT_SIZE 562 +#define VAR_TLS_CIPHERS 563 +#define VAR_TLS_CIPHERSUITES 564 +#define VAR_TLS_USE_SNI 565 +#define VAR_IPSET 566 +#define VAR_IPSET_NAME_V4 567 +#define VAR_IPSET_NAME_V6 568 +#define VAR_TLS_SESSION_TICKET_KEYS 569 +#define VAR_RPZ 570 +#define VAR_TAGS 571 +#define VAR_RPZ_ACTION_OVERRIDE 572 +#define VAR_RPZ_CNAME_OVERRIDE 573 +#define VAR_RPZ_LOG 574 +#define VAR_RPZ_LOG_NAME 575 +#define VAR_DYNLIB 576 +#define VAR_DYNLIB_FILE 577 +#define VAR_EDNS_CLIENT_STRING 578 +#define VAR_EDNS_CLIENT_STRING_OPCODE 579 +#define VAR_NSID 580 +#define VAR_ZONEMD_PERMISSIVE_MODE 581 +#define VAR_ZONEMD_CHECK 582 +#define VAR_ZONEMD_REJECT_ABSENCE 583 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 584 +#define VAR_INTERFACE_AUTOMATIC_PORTS 585 +#define VAR_EDE 586 +#define VAR_INTERFACE_ACTION 587 +#define VAR_INTERFACE_VIEW 588 +#define VAR_INTERFACE_TAG 589 +#define VAR_INTERFACE_TAG_ACTION 590 +#define VAR_INTERFACE_TAG_DATA 591 +#define VAR_PROXY_PROTOCOL_PORT 592 +#define VAR_STATISTICS_INHIBIT_ZERO 593 +#define VAR_HARDEN_UNKNOWN_ADDITIONAL 594 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -743,7 +745,7 @@ union YYSTYPE char* str; -#line 747 "util/configparser.h" +#line 749 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; @@ -754,6 +756,8 @@ typedef union YYSTYPE YYSTYPE; extern YYSTYPE yylval; + int yyparse (void); + #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index 046e529fa..4011bf8c5 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -175,7 +175,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED %token VAR_CACHEDB_REDISHOST VAR_CACHEDB_REDISPORT VAR_CACHEDB_REDISTIMEOUT -%token VAR_CACHEDB_REDISEXPIRERECORDS VAR_CACHEDB_REDISPATH +%token VAR_CACHEDB_REDISEXPIRERECORDS VAR_CACHEDB_REDISPATH VAR_CACHEDB_REDISPASSWORD %token VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM VAR_FOR_UPSTREAM %token VAR_AUTH_ZONE VAR_ZONEFILE VAR_MASTER VAR_URL VAR_FOR_DOWNSTREAM %token VAR_FALLBACK_ENABLED VAR_TLS_ADDITIONAL_PORT VAR_LOW_RTT VAR_LOW_RTT_PERMIL @@ -3654,7 +3654,7 @@ contents_cachedb: contents_cachedb content_cachedb | ; content_cachedb: cachedb_backend_name | cachedb_secret_seed | redis_server_host | redis_server_port | redis_timeout | - redis_expire_records | redis_server_path + redis_expire_records | redis_server_path | redis_server_password ; cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG { @@ -3719,6 +3719,18 @@ redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG #endif } ; +redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_password:%s)\n", $2)); + free(cfg_parser->cfg->redis_server_password); + cfg_parser->cfg->redis_server_password = $2; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free($2); + #endif + } + ; redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG { #if defined(USE_CACHEDB) && defined(USE_REDIS) From c48299989842a26380b3ea61b233aa60674ee079 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 26 Jan 2023 10:54:38 +0100 Subject: [PATCH 061/177] - Fix acx_nlnetlabs.m4 for -Wstrict-prototypes. --- acx_nlnetlabs.m4 | 29 +++++++++++++++-------------- doc/Changelog | 3 +++ 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index cf436ec54..3d745727f 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 44 +# Version 45 +# 2023-01-26 fix -Wstrict-prototypes. # 2022-09-01 fix checking if nonblocking sockets work on OpenBSD. # 2021-08-17 fix sed script in ssldir split handling. # 2021-08-17 fix for openssl to detect split version, with ssldir_include @@ -187,7 +188,7 @@ dnl cache=`echo $1 | sed 'y%.=/+- %___p__%'` AC_CACHE_VAL(cv_prog_cc_flag_needed_$cache, [ echo '$2' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -233,7 +234,7 @@ dnl DEPFLAG: set to flag that generates dependencies. AC_DEFUN([ACX_DEPFLAG], [ AC_MSG_CHECKING([$CC dependency flag]) -echo 'void f(){}' >conftest.c +echo 'void f(void){}' >conftest.c if test "`$CC -MM conftest.c 2>&1`" = "conftest.o: conftest.c"; then DEPFLAG="-MM" else @@ -272,7 +273,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAUL #include #endif -int test() { +int test(void) { int a; char **opts = NULL; struct timeval tv; @@ -309,7 +310,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_DEFAUL #include #endif -int test() { +int test(void) { int a; char **opts = NULL; struct timeval tv; @@ -335,7 +336,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG, [ #include #include -int test() { +int test(void) { int a = 0; return a; } @@ -345,7 +346,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_BSD_SOURCE -D_DEFAULT_SOURCE, [ #include -int test() { +int test(void) { int a; a = isascii(32); return a; @@ -356,7 +357,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_GNU_SOURCE, [ #include -int test() { +int test(void) { struct in6_pktinfo inf; int a = (int)sizeof(inf); return a; @@ -370,7 +371,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_GNU_SOURCE -D_FRSRESGID, [ #include -int test() { +int test(void) { int a = setresgid(0,0,0); a = setresuid(0,0,0); return a; @@ -385,7 +386,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D_POSIX_C_SOURCE=200112, #endif #include -int test() { +int test(void) { int a = 0; char *t; time_t time = 0; @@ -413,7 +414,7 @@ ACX_CHECK_COMPILER_FLAG_NEEDED(-D__EXTENSIONS__, #include #endif -int test() { +int test(void) { int a; char **opts = NULL; struct timeval tv; @@ -834,7 +835,7 @@ dnl try to see if an additional _LARGEFILE_SOURCE 1 is needed to get fseeko ACX_CHECK_COMPILER_FLAG_NEEDED(-D_LARGEFILE_SOURCE=1, [ #include -int test() { +int test(void) { int a = fseeko(stdin, 0, 0); return a; } @@ -859,7 +860,7 @@ char* (*f) () = getaddrinfo; #ifdef __cplusplus } #endif -int main() { +int main(void) { ; return 0; } @@ -923,7 +924,7 @@ cache=`echo $1 | sed 'y%.=/+-%___p_%'` AC_CACHE_VAL(cv_cc_deprecated_$cache, [ echo '$3' >conftest.c -echo 'void f(){ $2 }' >>conftest.c +echo 'void f(void){ $2 }' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS -c conftest.c 2>&1 | grep -e deprecated -e unavailable`"; then eval "cv_cc_deprecated_$cache=no" else diff --git a/doc/Changelog b/doc/Changelog index 6136c6b60..516b69a49 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 January 2023: Wouter + - Fix acx_nlnetlabs.m4 for -Wstrict-prototypes. + 23 January 2023: George - Fix #833: [FR] Ability to set the Redis password. From 8b9382998d85bcdf5df00abec33861ad84edaea7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 26 Jan 2023 10:59:16 +0100 Subject: [PATCH 062/177] Regenerate configure for the fix acx_nlnetlabs.m4 for -Wstrict-prototypes. --- configure | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/configure b/configure index 29bb4d6cf..ad6256735 100755 --- a/configure +++ b/configure @@ -5146,7 +5146,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking $CC dependency flag" >&5 $as_echo_n "checking $CC dependency flag... " >&6; } -echo 'void f(){}' >conftest.c +echo 'void f(void){}' >conftest.c if test "`$CC -MM conftest.c 2>&1`" = "conftest.o: conftest.c"; then DEPFLAG="-MM" else @@ -5328,7 +5328,7 @@ echo ' #include #endif -int test() { +int test(void) { int a; char **opts = NULL; struct timeval tv; @@ -5349,7 +5349,7 @@ int test() { return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5419,7 +5419,7 @@ echo ' #include #endif -int test() { +int test(void) { int a; char **opts = NULL; struct timeval tv; @@ -5440,7 +5440,7 @@ int test() { return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5499,12 +5499,12 @@ else echo ' #include #include -int test() { +int test(void) { int a = 0; return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5563,13 +5563,13 @@ else echo ' #include -int test() { +int test(void) { int a; a = isascii(32); return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5628,13 +5628,13 @@ else echo ' #include -int test() { +int test(void) { struct in6_pktinfo inf; int a = (int)sizeof(inf); return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5696,13 +5696,13 @@ else echo ' #include -int test() { +int test(void) { int a = setresgid(0,0,0); a = setresuid(0,0,0); return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5765,7 +5765,7 @@ echo ' #endif #include -int test() { +int test(void) { int a = 0; char *t; time_t time = 0; @@ -5778,7 +5778,7 @@ int test() { return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -5847,7 +5847,7 @@ echo ' #include #endif -int test() { +int test(void) { int a; char **opts = NULL; struct timeval tv; @@ -5860,7 +5860,7 @@ int test() { return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -15955,12 +15955,12 @@ else echo ' #include -int test() { +int test(void) { int a = fseeko(stdin, 0, 0); return a; } ' > conftest.c -echo 'void f(){}' >>conftest.c +echo 'void f(void){}' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS $ERRFLAG -c conftest.c 2>&1`"; then eval "cv_prog_cc_flag_needed_$cache=no" else @@ -20211,7 +20211,7 @@ char* (*f) () = getaddrinfo; #ifdef __cplusplus } #endif -int main() { +int main(void) { ; return 0; } @@ -20485,7 +20485,7 @@ echo ' #include #include ' >conftest.c -echo 'void f(){ (void)daemon(0, 0); }' >>conftest.c +echo 'void f(void){ (void)daemon(0, 0); }' >>conftest.c if test -z "`$CC $CPPFLAGS $CFLAGS -c conftest.c 2>&1 | grep -e deprecated -e unavailable`"; then eval "cv_cc_deprecated_$cache=no" else From 45142868ecba8823d8c6f69c34502e80f628445d Mon Sep 17 00:00:00 2001 From: "R. Christian McDonald" Date: Sat, 28 Jan 2023 14:02:51 -0500 Subject: [PATCH 063/177] Fix copyright date --- pythonmod/pythonmod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index aa8609c58..74a5d6607 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -3,7 +3,7 @@ * * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) - * Copyright (c) 2022, Rubicon Communications, LLC (Netgate) + * Copyright (c) 2023, Rubicon Communications, LLC (Netgate) * * This software is open source. * From 24e6d1e18ead719ff80b12aebd8c5ad20b8ec76e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 30 Jan 2023 11:33:58 +0100 Subject: [PATCH 064/177] - Add duration variable for speed_local.test. --- doc/Changelog | 3 +++ testdata/speed_local.tdir/speed_local.test | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 516b69a49..fa41e5128 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +30 January 2023: George + - Add duration variable for speed_local.test. + 26 January 2023: Wouter - Fix acx_nlnetlabs.m4 for -Wstrict-prototypes. diff --git a/testdata/speed_local.tdir/speed_local.test b/testdata/speed_local.tdir/speed_local.test index 684b3c522..6ad1ba737 100644 --- a/testdata/speed_local.tdir/speed_local.test +++ b/testdata/speed_local.tdir/speed_local.test @@ -9,8 +9,11 @@ PRE="../.." get_make (cd $PRE; $MAKE perf) +# seconds per test +dur=1 + echo "> perf version.server" -$PRE/perf -d 1 -a "version.server CH TXT -" 127.0.0.1@$UNBOUND_PORT 2>&1 | +$PRE/perf -d $dur -a "version.server CH TXT -" 127.0.0.1@$UNBOUND_PORT 2>&1 | tee outfile echo -n "version-server " > line.txt @@ -25,7 +28,7 @@ fi echo "> perf localhost" -$PRE/perf -d 1 -a "localhost IN A -" 127.0.0.1@$UNBOUND_PORT 2>&1 | +$PRE/perf -d $dur -a "localhost IN A -" 127.0.0.1@$UNBOUND_PORT 2>&1 | tee outfile echo -n "localhost-addr " >> line.txt From 0bf55e60636d3172a9280703f93faab62d8a997a Mon Sep 17 00:00:00 2001 From: Christian McDonald Date: Wed, 1 Feb 2023 15:17:59 -0500 Subject: [PATCH 065/177] set modinfo to null last --- pythonmod/pythonmod.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 74a5d6607..d4042995e 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -566,12 +566,12 @@ void pythonmod_deinit(struct module_env* env, int id) pe->fname = NULL; free(pe); - /* Module is deallocated in Python */ - env->modinfo[id] = NULL; - /* iterate over all possible callback types and clean up each in turn */ for (int cbtype = 0; cbtype < inplace_cb_types_total; cbtype++) inplace_cb_delete(env, cbtype, id); + + /* Module is deallocated in Python */ + env->modinfo[id] = NULL; } void pythonmod_inform_super(struct module_qstate* qstate, int id, struct module_qstate* super) From 5ab5b3b43a7335f735810a6046f3d7c5b44e29b6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Feb 2023 11:36:52 +0100 Subject: [PATCH 066/177] - Fix #841: Unbound won't build with aaaa-filter-iterator.patch. --- contrib/aaaa-filter-iterator.patch | 4 ++-- doc/Changelog | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index 551313372..cb6dabc44 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -105,9 +105,9 @@ index 2482a1f4..bd5ba243 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -177,6 +177,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) - iter_env->supports_ipv6 = cfg->do_ip6; - iter_env->supports_ipv4 = cfg->do_ip4; iter_env->outbound_msg_retry = cfg->outbound_msg_retry; + iter_env->max_sent_count = cfg->max_sent_count; + iter_env->max_query_restarts = cfg->max_query_restarts; + iter_env->aaaa_filter = cfg->aaaa_filter; return 1; } diff --git a/doc/Changelog b/doc/Changelog index fa41e5128..6a95cf4da 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +8 February 2023: Wouter + - Fix #841: Unbound won't build with aaaa-filter-iterator.patch. + 30 January 2023: George - Add duration variable for speed_local.test. From 4953daa016d67f0976655da58deed5fc8ac9a0e7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Feb 2023 09:56:40 +0100 Subject: [PATCH 067/177] - Fix to ignore entirely empty responses, and try at another authority. This turns completely empty responses, a type of noerror/nodata into a servfail, but they do not conform to RFC2308, and the retry can fetch improved content. --- doc/Changelog | 6 + iterator/iter_resptype.c | 7 + testdata/auth_xfr_host.rpl | 2 + testdata/autotrust_revtp_use.rpl | 2 + testdata/iter_dnsseclame_bug.rpl | 14 ++ testdata/iter_dnsseclame_ds.rpl | 11 ++ testdata/iter_dnsseclame_ta.rpl | 9 ++ testdata/iter_donotq127.rpl | 2 + testdata/iter_emptydp.rpl | 9 +- testdata/iter_emptydp_for_glue.rpl | 16 ++- testdata/iter_ignore_empty.rpl | 198 ++++++++++++++++++++++++++ testdata/iter_lame_aaaa.rpl | 4 + testdata/iter_lamescrub.rpl | 2 + testdata/iter_nxns_cached.rpl | 2 + testdata/iter_nxns_fallback.rpl | 2 + testdata/iter_primenoglue.rpl | 33 ++--- testdata/iter_privaddr.rpl | 2 + testdata/iter_reclame_two.rpl | 4 + testdata/iter_scrub_ns.rpl | 2 + testdata/iter_scrub_ns_fwd.rpl | 2 + testdata/iter_scrub_ns_side.rpl | 4 + testdata/iter_stublastresort.rpl | 6 + testdata/nsid_bogus.rpl | 3 + testdata/val_cnametoinsecure.rpl | 11 +- testdata/val_cnametonodata_nonsec.rpl | 10 +- testdata/val_cnametooptout.rpl | 3 + testdata/val_ds_cname.rpl | 2 + testdata/val_faildnskey.rpl | 5 +- testdata/val_faildnskey_ok.rpl | 5 +- testdata/val_nsec3_b2_nodata_nons.rpl | 3 + testdata/val_nsec3_b4_wild_wr.rpl | 8 ++ testdata/val_positive_nosigs.rpl | 5 +- 32 files changed, 366 insertions(+), 28 deletions(-) create mode 100644 testdata/iter_ignore_empty.rpl diff --git a/doc/Changelog b/doc/Changelog index 6a95cf4da..9893e7846 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +9 February 2023: Wouter + - Fix to ignore entirely empty responses, and try at another authority. + This turns completely empty responses, a type of noerror/nodata into + a servfail, but they do not conform to RFC2308, and the retry can + fetch improved content. + 8 February 2023: Wouter - Fix #841: Unbound won't build with aaaa-filter-iterator.patch. diff --git a/iterator/iter_resptype.c b/iterator/iter_resptype.c index c2b824a0f..e85595b84 100644 --- a/iterator/iter_resptype.c +++ b/iterator/iter_resptype.c @@ -284,6 +284,13 @@ response_type_from_server(int rdset, /* If we've gotten this far, this is NOERROR/NODATA (which could * be an entirely empty message) */ + /* but ignore entirely empty messages, noerror/nodata has a soa + * negative ttl value in the authority section, this makes it try + * again at another authority. And turns it from a 5 second empty + * message into a 5 second servfail response. */ + if(msg->rep->an_numrrsets == 0 && msg->rep->ns_numrrsets == 0 && + msg->rep->ar_numrrsets == 0) + return RESPONSE_TYPE_THROWAWAY; /* check if recursive answer; saying it has empty cache */ if( (msg->rep->flags&BIT_RA) && !(msg->rep->flags&BIT_AA) && !rdset) return RESPONSE_TYPE_REC_LAME; diff --git a/testdata/auth_xfr_host.rpl b/testdata/auth_xfr_host.rpl index d052d36a4..f8bd1890e 100644 --- a/testdata/auth_xfr_host.rpl +++ b/testdata/auth_xfr_host.rpl @@ -84,6 +84,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END diff --git a/testdata/autotrust_revtp_use.rpl b/testdata/autotrust_revtp_use.rpl index b43eb60ad..952428a3d 100644 --- a/testdata/autotrust_revtp_use.rpl +++ b/testdata/autotrust_revtp_use.rpl @@ -109,6 +109,8 @@ SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER ; no AAAA +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END diff --git a/testdata/iter_dnsseclame_bug.rpl b/testdata/iter_dnsseclame_bug.rpl index cb17bbf33..c5fd13244 100644 --- a/testdata/iter_dnsseclame_bug.rpl +++ b/testdata/iter_dnsseclame_bug.rpl @@ -117,6 +117,8 @@ REPLY QR AA NOERROR SECTION QUESTION e.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -126,6 +128,8 @@ REPLY QR AA NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; no example.net delegation answers yet. @@ -156,6 +160,8 @@ REPLY QR AA NOERROR SECTION QUESTION e.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -165,6 +171,8 @@ REPLY QR AA NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -287,6 +295,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.sub.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END @@ -321,6 +331,8 @@ ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; fine DNSKEY response. @@ -417,6 +429,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.sub.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; response to query of interest diff --git a/testdata/iter_dnsseclame_ds.rpl b/testdata/iter_dnsseclame_ds.rpl index 78a11cc07..6b2bf653f 100644 --- a/testdata/iter_dnsseclame_ds.rpl +++ b/testdata/iter_dnsseclame_ds.rpl @@ -116,6 +116,8 @@ REPLY QR AA NOERROR SECTION QUESTION e.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -125,6 +127,8 @@ REPLY QR AA NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -245,6 +249,9 @@ REPLY QR AA NOERROR SECTION QUESTION ns.sub.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +sub.example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +sub.example.com. 3600 IN RRSIG SOA 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. o6B6mzZ2pzXRE9qBagNw+U5kZOCViyuYRObCJTMsEQn8kNzSIxOhuqjBoo0ifKmxvUmCxaNtsWaG4eDC+vCBdQ== ENTRY_END RANGE_END @@ -279,6 +286,8 @@ ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; fine DNSKEY response. @@ -375,6 +384,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.sub.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +sub.example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; response to query of interest diff --git a/testdata/iter_dnsseclame_ta.rpl b/testdata/iter_dnsseclame_ta.rpl index 5799a1146..ce4414dda 100644 --- a/testdata/iter_dnsseclame_ta.rpl +++ b/testdata/iter_dnsseclame_ta.rpl @@ -119,6 +119,8 @@ REPLY QR NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -128,6 +130,8 @@ REPLY QR NOERROR SECTION QUESTION e.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -239,6 +243,9 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AC23LvSspto6Zqctz05urK/2OKTnB+7nppMKInYkyjZbZotq2wjJA9s= ENTRY_END RANGE_END @@ -261,6 +268,8 @@ ADJUST copy_id REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; lame DNSKEY response. diff --git a/testdata/iter_donotq127.rpl b/testdata/iter_donotq127.rpl index 3668d7b6f..4b22222d2 100644 --- a/testdata/iter_donotq127.rpl +++ b/testdata/iter_donotq127.rpl @@ -35,6 +35,8 @@ REPLY QR NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/iter_emptydp.rpl b/testdata/iter_emptydp.rpl index 82ddccfad..ecb49b6cd 100644 --- a/testdata/iter_emptydp.rpl +++ b/testdata/iter_emptydp.rpl @@ -108,6 +108,8 @@ REPLY QR NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -156,6 +158,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; example.com. zone @@ -180,7 +184,9 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER -; bogus +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AC23LvSspto6Zqctz05urK/2OKTnB+7nppMKInYkyjZbZotq2wjJA9s= ENTRY_END ; response to DNSKEY priming query @@ -261,6 +267,7 @@ SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL ENTRY_END diff --git a/testdata/iter_emptydp_for_glue.rpl b/testdata/iter_emptydp_for_glue.rpl index 68fad6f15..94dec2bc5 100644 --- a/testdata/iter_emptydp_for_glue.rpl +++ b/testdata/iter_emptydp_for_glue.rpl @@ -135,6 +135,8 @@ REPLY QR NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -211,6 +213,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.org. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.org. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; example.net. zone @@ -244,6 +248,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; example.com. zone @@ -268,7 +274,9 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER -; bogus message. +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AC23LvSspto6Zqctz05urK/2OKTnB+7nppMKInYkyjZbZotq2wjJA9s= ENTRY_END ; response to DNSKEY priming query @@ -343,6 +351,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.org. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.org. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; example.net. zone @@ -376,6 +386,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; example.com. zone @@ -471,6 +483,7 @@ SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL ENTRY_END @@ -490,6 +503,7 @@ SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL ENTRY_END diff --git a/testdata/iter_ignore_empty.rpl b/testdata/iter_ignore_empty.rpl new file mode 100644 index 000000000..c70dd7e8d --- /dev/null +++ b/testdata/iter_ignore_empty.rpl @@ -0,0 +1,198 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + minimal-responses: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test ignore of an empty response. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. IN NS ns2.example2.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example2.com. IN NS +SECTION AUTHORITY +example2.com. IN NS ns2.example2.com. +SECTION ADDITIONAL +ns2.example2.com. IN A 1.2.3.5 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. IN NS ns2.example.net. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN SOA ns root 4 14400 3600 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns2.example2.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example2.com. IN NS +SECTION ANSWER +example2.com. IN NS ns2.example2.com. +SECTION ADDITIONAL +ns2.example2.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns2.example2.com. IN A +SECTION ANSWER +ns2.example2.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns2.example2.com. IN AAAA +SECTION AUTHORITY +example2.com. IN SOA ns2 root 4 14400 3600 604800 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +; wait for pending nameserver lookups. +STEP 20 TRAFFIC + +SCENARIO_END diff --git a/testdata/iter_lame_aaaa.rpl b/testdata/iter_lame_aaaa.rpl index 8afef770f..cef471305 100644 --- a/testdata/iter_lame_aaaa.rpl +++ b/testdata/iter_lame_aaaa.rpl @@ -76,6 +76,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -85,6 +87,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN A SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/iter_lamescrub.rpl b/testdata/iter_lamescrub.rpl index 2de13a655..0ac19d7f8 100644 --- a/testdata/iter_lamescrub.rpl +++ b/testdata/iter_lamescrub.rpl @@ -42,6 +42,8 @@ REPLY QR NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/iter_nxns_cached.rpl b/testdata/iter_nxns_cached.rpl index 7671df663..6cb8866ed 100644 --- a/testdata/iter_nxns_cached.rpl +++ b/testdata/iter_nxns_cached.rpl @@ -152,6 +152,8 @@ RANGE_BEGIN 31 100 REPLY QR NOERROR SECTION QUESTION nameservers.com. IN A + SECTION AUTHORITY + nameservers.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END diff --git a/testdata/iter_nxns_fallback.rpl b/testdata/iter_nxns_fallback.rpl index 324068604..2a6a3fd33 100644 --- a/testdata/iter_nxns_fallback.rpl +++ b/testdata/iter_nxns_fallback.rpl @@ -137,6 +137,8 @@ RANGE_BEGIN 0 100 REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA + SECTION AUTHORITY + example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/iter_primenoglue.rpl b/testdata/iter_primenoglue.rpl index a0be71c78..b9808dd2c 100644 --- a/testdata/iter_primenoglue.rpl +++ b/testdata/iter_primenoglue.rpl @@ -114,15 +114,6 @@ SECTION ADDITIONAL a.gtld-servers.net. IN A 192.5.6.30 ENTRY_END -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -A.ROOT-SERVERS.NET. IN AAAA -SECTION ANSWER -ENTRY_END - ENTRY_BEGIN MATCH opcode qname ADJUST copy_id copy_query @@ -130,29 +121,22 @@ REPLY QR NOERROR SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN -MATCH opcode qname +MATCH opcode subdomain ADJUST copy_id copy_query REPLY QR NOERROR SECTION QUESTION -K.ROOT-SERVERS.NET. IN A +ROOT-SERVERS.NET. IN A SECTION AUTHORITY ROOT-SERVERS.NET. IN NS A.ROOT-SERVERS.NET. SECTION ADDITIONAL A.ROOT-SERVERS.NET. IN A 198.41.0.4 ENTRY_END -ENTRY_BEGIN -MATCH opcode qname -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -K.ROOT-SERVERS.NET. IN AAAA -SECTION ANSWER -ENTRY_END - ENTRY_BEGIN MATCH opcode qname ADJUST copy_id copy_query @@ -213,6 +197,7 @@ K.ROOT-SERVERS.NET. IN A SECTION ANSWER K.ROOT-SERVERS.NET. IN A 193.0.14.129 ENTRY_END + ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id @@ -222,6 +207,8 @@ K.ROOT-SERVERS.NET. IN AAAA SECTION ANSWER ; no ip6 address: we want to use only one address for K. to avoid having ; to duplicate the entries in this file for both addresses. +SECTION AUTHORITY +root-servers.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END @@ -258,6 +245,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; example.com. zone @@ -282,6 +271,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END @@ -363,6 +354,7 @@ SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL ENTRY_END @@ -381,6 +373,7 @@ SECTION QUESTION K.ROOT-SERVERS.NET. IN AAAA SECTION ANSWER SECTION AUTHORITY +root-servers.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL ENTRY_END diff --git a/testdata/iter_privaddr.rpl b/testdata/iter_privaddr.rpl index 93a2a147d..0c87b4b9a 100644 --- a/testdata/iter_privaddr.rpl +++ b/testdata/iter_privaddr.rpl @@ -122,6 +122,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/iter_reclame_two.rpl b/testdata/iter_reclame_two.rpl index 459dcb17f..76c310b28 100644 --- a/testdata/iter_reclame_two.rpl +++ b/testdata/iter_reclame_two.rpl @@ -95,6 +95,8 @@ REPLY QR RA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -104,6 +106,8 @@ REPLY QR RA NOERROR SECTION QUESTION lame.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/iter_scrub_ns.rpl b/testdata/iter_scrub_ns.rpl index 365f0b54e..64f980dcd 100644 --- a/testdata/iter_scrub_ns.rpl +++ b/testdata/iter_scrub_ns.rpl @@ -39,6 +39,7 @@ REPLY QR NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER +www.example.com. IN A 1.2.3.4 ; must be scrubbed www.burritolovers.com. IN A 10.20.30.40 SECTION AUTHORITY @@ -78,6 +79,7 @@ REPLY QR RD RA NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER +www.example.com. IN A 1.2.3.4 SECTION AUTHORITY SECTION ADDITIONAL ENTRY_END diff --git a/testdata/iter_scrub_ns_fwd.rpl b/testdata/iter_scrub_ns_fwd.rpl index 239dc37f9..f7a526c46 100644 --- a/testdata/iter_scrub_ns_fwd.rpl +++ b/testdata/iter_scrub_ns_fwd.rpl @@ -39,6 +39,7 @@ REPLY RD RA QR NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER +www.example.com. IN A 1.2.3.4 ; must be scrubbed www.burritolovers.com. IN A 10.20.30.40 SECTION AUTHORITY @@ -78,6 +79,7 @@ REPLY QR RD RA NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER +www.example.com. IN A 1.2.3.4 SECTION AUTHORITY SECTION ADDITIONAL ENTRY_END diff --git a/testdata/iter_scrub_ns_side.rpl b/testdata/iter_scrub_ns_side.rpl index 98d00fd92..44620ebd1 100644 --- a/testdata/iter_scrub_ns_side.rpl +++ b/testdata/iter_scrub_ns_side.rpl @@ -39,6 +39,7 @@ REPLY QR NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER +www.example.com. IN A 1.2.3.4 ; must be scrubbed www.burritolovers.com. IN A 10.20.30.40 SECTION AUTHORITY @@ -54,6 +55,7 @@ REPLY QR NOERROR SECTION QUESTION mail.example.com. IN A SECTION ANSWER +mail.example.com. IN A 1.2.3.11 SECTION AUTHORITY ; not pertinent to the query www.example.com. IN NS ns.example.com. @@ -78,6 +80,7 @@ REPLY QR RD RA NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER +www.example.com. IN A 1.2.3.4 SECTION AUTHORITY SECTION ADDITIONAL ENTRY_END @@ -96,6 +99,7 @@ REPLY QR RD RA NOERROR SECTION QUESTION mail.example.com. IN A SECTION ANSWER +mail.example.com. IN A 1.2.3.11 SECTION AUTHORITY SECTION ADDITIONAL ENTRY_END diff --git a/testdata/iter_stublastresort.rpl b/testdata/iter_stublastresort.rpl index b60778910..8fac79905 100644 --- a/testdata/iter_stublastresort.rpl +++ b/testdata/iter_stublastresort.rpl @@ -105,6 +105,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -156,6 +158,8 @@ REPLY QR AA SERVFAIL SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -204,6 +208,8 @@ REPLY QR AA SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN diff --git a/testdata/nsid_bogus.rpl b/testdata/nsid_bogus.rpl index 7e92266cf..b92563cf2 100644 --- a/testdata/nsid_bogus.rpl +++ b/testdata/nsid_bogus.rpl @@ -117,6 +117,9 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 1440 0 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AC23LvSspto6Zqctz05urK/2OKTnB+7nppMKInYkyjZbZotq2wjJA9s= SECTION ADDITIONAL ENTRY_END diff --git a/testdata/val_cnametoinsecure.rpl b/testdata/val_cnametoinsecure.rpl index 78d04de97..372a61f21 100644 --- a/testdata/val_cnametoinsecure.rpl +++ b/testdata/val_cnametoinsecure.rpl @@ -50,9 +50,11 @@ SECTION QUESTION unsafe.example.com. IN AAAA SECTION ANSWER ; empty response +SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 5 2 3600 20091012000000 20091010000000 30899 example.com. gJkF06xR3FoD/d+rxcLOwGpT8+DV+nbxED8C6T1qZyhWfKlfpYzISNooKBWD+JQbaGKV/nfm+rT3M0fnIXPpQQ== ENTRY_END - ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id @@ -88,6 +90,9 @@ SECTION QUESTION unsafe.example.org. IN AAAA SECTION ANSWER ; empty response +SECTION AUTHORITY +example.org. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.org. 3600 IN RRSIG SOA 5 2 3600 20091012000000 20091010000000 30899 example.org. lYlSk7saPytwcu6Dp3HKYdyCOIlpTm+T8kjf0hnrLgPDZuksUjw/GLB+d6onTDpWLlasHfi0eoAkNvTeuR0+1w== ENTRY_END RANGE_END @@ -112,6 +117,8 @@ www.example.com. 3600 IN RRSIG CNAME 5 3 3600 20091012000000 20 SECTION AUTHORITY unsafe.example.com. 3600 IN NSEC v.example.com. NS RRSIG NSEC unsafe.example.com. 3600 IN RRSIG NSEC 5 3 3600 20091012000000 20091010000000 30899 example.com. Le9EsRd2MxkOGRCvGtQkXRDAob5ZJOFQlZbDvcWAh5OXVpmcwZmCHctxw/Zyi4LkNYoYCSCc8PiVRrJM3IsGrQ== ;{id = 30899} +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 5 2 3600 20091012000000 20091010000000 30899 example.com. gJkF06xR3FoD/d+rxcLOwGpT8+DV+nbxED8C6T1qZyhWfKlfpYzISNooKBWD+JQbaGKV/nfm+rT3M0fnIXPpQQ== ENTRY_END ; NSEC3 @@ -134,6 +141,8 @@ www.example.org. 3600 IN RRSIG CNAME 5 3 3600 20091012000000 20 SECTION AUTHORITY ltchu0548v0cof8f25u2pj4mjf4shcms.example.org. 3600 IN NSEC3 1 0 1 - ltchu0548v0cof8f25u2pj4mjf4shcmt NS ltchu0548v0cof8f25u2pj4mjf4shcms.example.org. 3600 IN RRSIG NSEC3 5 3 3600 20091012000000 20091010000000 30899 example.org. yxuYgfkg8QTdB5yBMN9Up9GyKu7xjKDScqq95/tsy3lx22tLsdLD9Fojdrq7eB+K7Tr72AejmVJs44v6TmWkZw== ;{id = 30899} +example.org. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.org. 3600 IN RRSIG SOA 5 2 3600 20091012000000 20091010000000 30899 example.org. lYlSk7saPytwcu6Dp3HKYdyCOIlpTm+T8kjf0hnrLgPDZuksUjw/GLB+d6onTDpWLlasHfi0eoAkNvTeuR0+1w== ENTRY_END SCENARIO_END diff --git a/testdata/val_cnametonodata_nonsec.rpl b/testdata/val_cnametonodata_nonsec.rpl index 48158162c..cf743321b 100644 --- a/testdata/val_cnametonodata_nonsec.rpl +++ b/testdata/val_cnametonodata_nonsec.rpl @@ -146,11 +146,13 @@ ENTRY_END ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id -REPLY QR NOERROR +REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER SECTION AUTHORITY +example.com. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +example.com. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.com. AI+pFL3opyI/Mx3pCwnULbwc99bqXrJjRp4ds1lIBPN9X/Pia3wQdkM= ; NSEC here ... SECTION ADDITIONAL ENTRY_END @@ -208,11 +210,13 @@ ENTRY_END ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id -REPLY QR NOERROR +REPLY QR AA NOERROR SECTION QUESTION ns.example.net. IN AAAA SECTION ANSWER SECTION AUTHORITY +example.net. IN NS ns.example.net. +example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} ; NSEC here SECTION ADDITIONAL ENTRY_END @@ -226,6 +230,8 @@ SECTION QUESTION www.example.net. IN A SECTION ANSWER SECTION AUTHORITY +example.net. 3600 IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 +;example.net. 3600 IN RRSIG SOA 3 2 3600 20070926135752 20070829135752 2854 example.net. ADNbj4XoTESBEkbFri3OG7SujbOUAoyrxPNHbULhxbvbB48Y0YAwvNY= ;www.example.net. IN NSEC example.net. MX NSEC RRSIG ;www.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. Z+3/WKJEqhWoMOQLC7Yb1dTVGaqzmU0bZ2cH9jSfNQZiT0O37yzCNNUmMsW4gsJOh3o61iZ+hxpze3aO3aedqQ== ;{id = 30899} SECTION ADDITIONAL diff --git a/testdata/val_cnametooptout.rpl b/testdata/val_cnametooptout.rpl index c9e982253..3528b8b8d 100644 --- a/testdata/val_cnametooptout.rpl +++ b/testdata/val_cnametooptout.rpl @@ -44,6 +44,8 @@ REPLY QR NOERROR SECTION QUESTION www.content.hud.gov. IN AAAA SECTION ANSWER +SECTION AUTHORITY +content.hud.gov. 86400 IN NS drfswitch.hud.gov. ENTRY_END ENTRY_BEGIN @@ -107,6 +109,7 @@ SECTION AUTHORITY 3RUD2HK5O5KA0IC6BF22C1T4R1BJGJ3R.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. APf75Nx4eY9eHov3T9hduDLuG4TJfVfEUEhSgm7HIZRvSPFgajHz2q+Wy6888G3C0T1Zft1qL2PdHMonK6H1OEE+NiOxroDsZaH+aWZjAsbIO86qQ2xcC+/Z9DsddQtONk0zAqpuYxHSn879rAk/BIKeDukNoBChHCSTy8olUFiYt7XEmjz5AOoc8R5VQhMQi/vmbmC0BoFOemDxxowG2MX27Hj2MbVBEJiT8xioFEk41jsdDI0WQtpnory2NT/UM4kWZdmDdxbpwu2F8oixe3oi4AOI9j3EukoOZT9f0Sx+tCg/I9zLNZJi+VuI5oUlpZkSH5EoUyRgK33eO+KJhQ== ;{id = 64775} GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN NSEC3 1 1 5 abcd gvfjd9enpjtet8a14uhb8hlrfeon2b72 A RRSIG ; flags: optout GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. eQFg/RvJ640k+Fa5yIUZwkx8FvsYSivykYFjc6dOiGt7r3VprfxwGWeYpyjYr/+mzu0ugE5ePDjZWtr5naK3dvqmt7qKk4/nEvVDoUmrg7joIUmeTzami9RB9lzCq2O/ddempQ6jpwfjiIDuEKUxHMpBFpw8QQZnZSZHKKQCDB4pOj8U8J/wNJXCS+SP7plU1hEVroC+QXCOYS8NHY2wFyeuW7A+xvg9tyYp9PH6c5MoNMkRQt36Kdvfk1nk3osktwalJNLmMhDr/vtErFieGGD6E9Ud9Pg70bPF2G5nqwwLDRevy7hIFjaMDHfYrcWc4B5hrUSpGtLJkYog9vsd2w== ;{id = 64775} +content.hud.gov. 86400 IN NS drfswitch.hud.gov. ENTRY_END SCENARIO_END diff --git a/testdata/val_ds_cname.rpl b/testdata/val_ds_cname.rpl index 3b88fb5a2..1703601e5 100644 --- a/testdata/val_ds_cname.rpl +++ b/testdata/val_ds_cname.rpl @@ -78,6 +78,8 @@ REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END diff --git a/testdata/val_faildnskey.rpl b/testdata/val_faildnskey.rpl index 528082120..f45080a0b 100644 --- a/testdata/val_faildnskey.rpl +++ b/testdata/val_faildnskey.rpl @@ -143,10 +143,13 @@ ENTRY_END ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id -REPLY QR NOERROR +REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} ENTRY_END RANGE_END diff --git a/testdata/val_faildnskey_ok.rpl b/testdata/val_faildnskey_ok.rpl index d3ac00c47..50f3184b4 100644 --- a/testdata/val_faildnskey_ok.rpl +++ b/testdata/val_faildnskey_ok.rpl @@ -144,10 +144,13 @@ ENTRY_END ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id -REPLY QR NOERROR +REPLY QR AA NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} ENTRY_END RANGE_END diff --git a/testdata/val_nsec3_b2_nodata_nons.rpl b/testdata/val_nsec3_b2_nodata_nons.rpl index b47643b25..7faaafac6 100644 --- a/testdata/val_nsec3_b2_nodata_nons.rpl +++ b/testdata/val_nsec3_b2_nodata_nons.rpl @@ -97,6 +97,9 @@ ADJUST copy_id REPLY QR AA DO NOERROR SECTION QUESTION ns1.example. IN DS +SECTION AUTHORITY +example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) +example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) ENTRY_END ENTRY_BEGIN diff --git a/testdata/val_nsec3_b4_wild_wr.rpl b/testdata/val_nsec3_b4_wild_wr.rpl index 50daf3809..5ca165628 100644 --- a/testdata/val_nsec3_b4_wild_wr.rpl +++ b/testdata/val_nsec3_b4_wild_wr.rpl @@ -129,6 +129,10 @@ SECTION QUESTION ns2.example. IN A SECTION ANSWER ; nothing to make sure the ns1 server is used for queries. +SECTION AUTHORITY +example. NS ns1.example. +example. NS ns2.example. +example. RRSIG NS 7 1 3600 20150420235959 20051021000000 ( 40430 example. PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv CnMXjtz6SyObxA== ) ENTRY_END ENTRY_BEGIN @@ -139,6 +143,10 @@ SECTION QUESTION ns2.example. IN AAAA SECTION ANSWER ; nothing to make sure the ns1 server is used for queries. +SECTION AUTHORITY +example. NS ns1.example. +example. NS ns2.example. +example. RRSIG NS 7 1 3600 20150420235959 20051021000000 ( 40430 example. PVOgtMK1HHeSTau+HwDWC8Ts+6C8qtqd4pQJ qOtdEVgg+MA+ai4fWDEhu3qHJyLcQ9tbD2vv CnMXjtz6SyObxA== ) ENTRY_END diff --git a/testdata/val_positive_nosigs.rpl b/testdata/val_positive_nosigs.rpl index e57836f90..c48b39e6f 100644 --- a/testdata/val_positive_nosigs.rpl +++ b/testdata/val_positive_nosigs.rpl @@ -137,10 +137,13 @@ ENTRY_END ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id -REPLY QR NOERROR +REPLY QR AA NOERROR SECTION QUESTION www.example.com. IN DS SECTION ANSWER +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} ENTRY_END ; response to query of interest From a8977df4d993146d7dfe87a4a3d42f7bfb97948f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Feb 2023 10:38:55 +0100 Subject: [PATCH 068/177] - Fix unit tests for spurious empty messages. --- doc/Changelog | 1 + testdata/iter_ranoaa_lame.rpl | 6 ++++++ testdata/ratelimit.tdir/ratelimit.testns | 2 ++ testdata/stream_ssl.tdir/stream_ssl.serv.conf | 6 ++++++ testdata/subnet_derived.crpl | 3 +++ testdata/subnet_format_ip4.crpl | 3 +++ testdata/subnet_not_whitelisted.crpl | 3 +++ testdata/subnet_without_validator.crpl | 3 +++ 8 files changed, 27 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 9893e7846..7c252a96d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ This turns completely empty responses, a type of noerror/nodata into a servfail, but they do not conform to RFC2308, and the retry can fetch improved content. + - Fix unit tests for spurious empty messages. 8 February 2023: Wouter - Fix #841: Unbound won't build with aaaa-filter-iterator.patch. diff --git a/testdata/iter_ranoaa_lame.rpl b/testdata/iter_ranoaa_lame.rpl index 0e6d98778..8ee82415a 100644 --- a/testdata/iter_ranoaa_lame.rpl +++ b/testdata/iter_ranoaa_lame.rpl @@ -198,6 +198,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END RANGE_END @@ -235,6 +237,8 @@ REPLY QR NOERROR SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER +SECTION AUTHORITY +example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ENTRY_BEGIN @@ -243,6 +247,8 @@ ADJUST copy_id REPLY QR NOERROR SECTION QUESTION ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 ENTRY_END ; the lame response. diff --git a/testdata/ratelimit.tdir/ratelimit.testns b/testdata/ratelimit.tdir/ratelimit.testns index 673bd15a5..563c1db6a 100644 --- a/testdata/ratelimit.tdir/ratelimit.testns +++ b/testdata/ratelimit.tdir/ratelimit.testns @@ -10,4 +10,6 @@ SECTION QUESTION wild IN A SECTION ANSWER wild IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. ENTRY_END diff --git a/testdata/stream_ssl.tdir/stream_ssl.serv.conf b/testdata/stream_ssl.tdir/stream_ssl.serv.conf index a5dfcf364..840334f1e 100644 --- a/testdata/stream_ssl.tdir/stream_ssl.serv.conf +++ b/testdata/stream_ssl.tdir/stream_ssl.serv.conf @@ -9,9 +9,15 @@ server: chroot: "" username: "" do-not-query-localhost: yes + local-zone: "example.com" static + local-zone: "server" static + local-zone: "host" static local-data: "www.example.com. IN A 10.20.30.40" local-data: "unbound.server. IN A 127.0.0.1" local-data: "test.host. IN A 1.2.3.4" + local-data: "example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600" + local-data: "server. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600" + local-data: "host. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600" ssl-port: @SERVPORT@ ssl-service-key: "unbound_server.key" ssl-service-pem: "unbound_server.pem" diff --git a/testdata/subnet_derived.crpl b/testdata/subnet_derived.crpl index 6ff626abd..7acf316fe 100644 --- a/testdata/subnet_derived.crpl +++ b/testdata/subnet_derived.crpl @@ -39,6 +39,7 @@ RANGE_BEGIN 0 100 SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION AUTHORITY + net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty @@ -111,6 +112,8 @@ RANGE_BEGIN 0 100 SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER + SECTION AUTHORITY + example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty diff --git a/testdata/subnet_format_ip4.crpl b/testdata/subnet_format_ip4.crpl index cd1c858fd..1370caee7 100644 --- a/testdata/subnet_format_ip4.crpl +++ b/testdata/subnet_format_ip4.crpl @@ -38,6 +38,7 @@ RANGE_BEGIN 0 100 SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION AUTHORITY + net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty @@ -108,6 +109,8 @@ RANGE_BEGIN 0 100 SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER + SECTION AUTHORITY + example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty diff --git a/testdata/subnet_not_whitelisted.crpl b/testdata/subnet_not_whitelisted.crpl index 545b019ed..5419a5790 100644 --- a/testdata/subnet_not_whitelisted.crpl +++ b/testdata/subnet_not_whitelisted.crpl @@ -39,6 +39,7 @@ RANGE_BEGIN 0 100 SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION AUTHORITY + net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty @@ -109,6 +110,8 @@ RANGE_BEGIN 0 100 SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER + SECTION AUTHORITY + example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty diff --git a/testdata/subnet_without_validator.crpl b/testdata/subnet_without_validator.crpl index 2fbf24239..59c38660f 100644 --- a/testdata/subnet_without_validator.crpl +++ b/testdata/subnet_without_validator.crpl @@ -38,6 +38,7 @@ RANGE_BEGIN 0 100 SECTION QUESTION a.gtld-servers.net. IN AAAA SECTION AUTHORITY + net. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty @@ -108,6 +109,8 @@ RANGE_BEGIN 0 100 SECTION QUESTION ns.example.com. IN AAAA SECTION ANSWER + SECTION AUTHORITY + example.com. IN SOA ns.example.com. root.example.com. 4 14400 3600 604800 3600 SECTION ADDITIONAL HEX_EDNSDATA_BEGIN ;; we expect to receive empty From 87a8c80fcb04b397c8f9b8dc3f34bff4561b89ed Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 9 Feb 2023 10:47:46 +0100 Subject: [PATCH 069/177] - Allow TTL refresh of expired error responses. --- iterator/iterator.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 751179496..a6e0b26ce 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -320,20 +320,35 @@ error_response_cache(struct module_qstate* qstate, int id, int rcode) if((msg=msg_cache_lookup(qstate->env, qstate->qinfo.qname, qstate->qinfo.qname_len, qstate->qinfo.qtype, qstate->qinfo.qclass, - qstate->query_flags, 0, - qstate->env->cfg->serve_expired_ttl_reset)) - != NULL) { + qstate->query_flags, 0, 1)) != NULL) { + struct reply_info* rep = + (struct reply_info*)msg->entry.data; if(qstate->env->cfg->serve_expired_ttl_reset) { - struct reply_info* rep = - (struct reply_info*)msg->entry.data; if(rep && *qstate->env->now + qstate->env->cfg->serve_expired_ttl > rep->serve_expired_ttl) { + verbose(VERB_ALGO, "reset " + "serve-expired-ttl for " + "error response in " + "cache"); rep->serve_expired_ttl = *qstate->env->now + qstate->env->cfg->serve_expired_ttl; } } + /* if the expired record is an error response + * refresh for another NORR_TTL */ + if(rep && *qstate->env->now > rep->ttl && + (FLAGS_GET_RCODE(rep->flags) != + LDNS_RCODE_NOERROR && + FLAGS_GET_RCODE(rep->flags) != + LDNS_RCODE_NXDOMAIN && + FLAGS_GET_RCODE(rep->flags) != + LDNS_RCODE_YXDOMAIN)) { + verbose(VERB_ALGO, "refresh TTL for " + "error response in cache"); + rep->ttl = *qstate->env->now + NORR_TTL; + } lock_rw_unlock(&msg->entry.lock); return error_response(qstate, id, rcode); } From 1c1c5d72d34e4ade5431390f3d29bea079866c46 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 9 Feb 2023 10:52:56 +0100 Subject: [PATCH 070/177] Changelog entry for - Allow TTL refresh of expired error responses. --- doc/Changelog | 3 +++ iterator/iterator.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 7c252a96d..c6accacf9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +9 February 2023: George + - Allow TTL refresh of expired error responses. + 9 February 2023: Wouter - Fix to ignore entirely empty responses, and try at another authority. This turns completely empty responses, a type of noerror/nodata into diff --git a/iterator/iterator.c b/iterator/iterator.c index a6e0b26ce..2d4c43f58 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -329,8 +329,7 @@ error_response_cache(struct module_qstate* qstate, int id, int rcode) rep->serve_expired_ttl) { verbose(VERB_ALGO, "reset " "serve-expired-ttl for " - "error response in " - "cache"); + "response in cache"); rep->serve_expired_ttl = *qstate->env->now + qstate->env->cfg->serve_expired_ttl; From e225e4bcabf8cf0079b06f9d06d69103dee85b4b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Feb 2023 11:46:33 +0100 Subject: [PATCH 071/177] - Fix consistency of unit test without roundrobin answers for the cnametooptout unit test. --- doc/Changelog | 2 ++ testdata/val_cnametooptout.rpl | 3 +++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index c6accacf9..ae38e3b0d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,8 @@ a servfail, but they do not conform to RFC2308, and the retry can fetch improved content. - Fix unit tests for spurious empty messages. + - Fix consistency of unit test without roundrobin answers for the + cnametooptout unit test. 8 February 2023: Wouter - Fix #841: Unbound won't build with aaaa-filter-iterator.patch. diff --git a/testdata/val_cnametooptout.rpl b/testdata/val_cnametooptout.rpl index 3528b8b8d..2ec4889f9 100644 --- a/testdata/val_cnametooptout.rpl +++ b/testdata/val_cnametooptout.rpl @@ -4,6 +4,7 @@ server: val-override-date: "20091113091234" fake-sha1: yes trust-anchor-signaling: no + rrset-roundrobin: no forward-zone: name: "." @@ -46,6 +47,7 @@ www.content.hud.gov. IN AAAA SECTION ANSWER SECTION AUTHORITY content.hud.gov. 86400 IN NS drfswitch.hud.gov. +content.hud.gov. 86400 IN NS lanswitch.hud.gov. ENTRY_END ENTRY_BEGIN @@ -110,6 +112,7 @@ SECTION AUTHORITY GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN NSEC3 1 1 5 abcd gvfjd9enpjtet8a14uhb8hlrfeon2b72 A RRSIG ; flags: optout GO8CPDSLPULIOURE31GBK5JJKA0BKIVN.hud.gov. 86400 IN RRSIG NSEC3 7 3 86400 20091204150200 20091104150200 64775 hud.gov. eQFg/RvJ640k+Fa5yIUZwkx8FvsYSivykYFjc6dOiGt7r3VprfxwGWeYpyjYr/+mzu0ugE5ePDjZWtr5naK3dvqmt7qKk4/nEvVDoUmrg7joIUmeTzami9RB9lzCq2O/ddempQ6jpwfjiIDuEKUxHMpBFpw8QQZnZSZHKKQCDB4pOj8U8J/wNJXCS+SP7plU1hEVroC+QXCOYS8NHY2wFyeuW7A+xvg9tyYp9PH6c5MoNMkRQt36Kdvfk1nk3osktwalJNLmMhDr/vtErFieGGD6E9Ud9Pg70bPF2G5nqwwLDRevy7hIFjaMDHfYrcWc4B5hrUSpGtLJkYog9vsd2w== ;{id = 64775} content.hud.gov. 86400 IN NS drfswitch.hud.gov. +content.hud.gov. 86400 IN NS lanswitch.hud.gov. ENTRY_END SCENARIO_END From 488811157e824d501d404a24a7c3b54ba4c6abac Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Feb 2023 12:08:27 +0100 Subject: [PATCH 072/177] - Fix to git ignore the library symbol file that configure can create. --- .gitignore | 1 + doc/Changelog | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 6c3cfb91d..985e48869 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ /config.status /dnstap/dnstap_config.h /dnscrypt/dnscrypt_config.h +/clubsyms.def /doc/example.conf /doc/libunbound.3 /doc/unbound-anchor.8 diff --git a/doc/Changelog b/doc/Changelog index ae38e3b0d..b520f624c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -9,6 +9,7 @@ - Fix unit tests for spurious empty messages. - Fix consistency of unit test without roundrobin answers for the cnametooptout unit test. + - Fix to git ignore the library symbol file that configure can create. 8 February 2023: Wouter - Fix #841: Unbound won't build with aaaa-filter-iterator.patch. From 96c70d91ca2c09a9415b6d1ee9b47692ab168747 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 9 Feb 2023 12:44:01 +0100 Subject: [PATCH 073/177] - Add testcase for refreshing expired error responses. --- doc/Changelog | 1 + .../serve_expired_cached_servfail_refresh.rpl | 145 ++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 testdata/serve_expired_cached_servfail_refresh.rpl diff --git a/doc/Changelog b/doc/Changelog index b520f624c..64f9db7ab 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 9 February 2023: George - Allow TTL refresh of expired error responses. + - Add testcase for refreshing expired error responses. 9 February 2023: Wouter - Fix to ignore entirely empty responses, and try at another authority. diff --git a/testdata/serve_expired_cached_servfail_refresh.rpl b/testdata/serve_expired_cached_servfail_refresh.rpl new file mode 100644 index 000000000..664de9aa8 --- /dev/null +++ b/testdata/serve_expired_cached_servfail_refresh.rpl @@ -0,0 +1,145 @@ +; config options +server: + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-expired: yes + serve-expired-reply-ttl: 123 + log-servfail: yes + ede: yes + ede-serve-expired: yes + + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-expired with client-timeout and a SERVFAIL upstream reply +; Scenario overview: +; - query for example.com. IN A +; - answer from upstream is SERVFAIL; will be cached for NORR_TTL(5) +; - check that the client gets the SERVFAIL; also cached +; - query again right after the TTL expired +; - cached SERVFAIL should be ignored and upstream queried +; - answer from upstream is still SERVFAIL; the cached error response will be +; refreshed for another NORR_TTL(5) +; - check that the client gets the SERVFAIL +; - query again; the upstream now has the answer available +; - check that we get the refreshed cached response instead + +; ns.example.com. +RANGE_BEGIN 0 50 + ADDRESS 1.2.3.4 + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA SERVFAIL + SECTION QUESTION + example.com. IN A + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 60 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. 10 IN NS + SECTION ANSWER + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 0 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we get the SERVFAIL (will be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we get the cached SERVFAIL +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Wait for the SERVFAIL to expire +STEP 31 TIME_PASSES ELAPSE 6 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we get the SERVFAIL (will be refreshed) +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Query again, upstream has the real answer available +STEP 60 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we get the refreshed cached SERVFAIL +STEP 70 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + example.com. IN A +ENTRY_END + +SCENARIO_END From eb81761b13d1b0078e3452810f3c598a5a54deb8 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 10 Feb 2023 16:51:07 +0100 Subject: [PATCH 074/177] - Clean up iterator/iterator.c::error_response_cache() and allow for better interaction with serve-expired, prefetch and cached error responses. --- iterator/iterator.c | 146 ++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 88 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 2d4c43f58..5f2703f3c 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -302,95 +302,65 @@ error_response(struct module_qstate* qstate, int id, int rcode) static int error_response_cache(struct module_qstate* qstate, int id, int rcode) { - if(!qstate->no_cache_store) { - /* store in cache */ - struct reply_info err; - if(qstate->prefetch_leeway > NORR_TTL) { - verbose(VERB_ALGO, "error response for prefetch in cache"); - /* attempt to adjust the cache entry prefetch */ - if(dns_cache_prefetch_adjust(qstate->env, &qstate->qinfo, - NORR_TTL, qstate->query_flags)) - return error_response(qstate, id, rcode); - /* if that fails (not in cache), fall through to store err */ - } - if(qstate->env->cfg->serve_expired) { - /* if serving expired contents, and such content is - * already available, don't overwrite this servfail */ - struct msgreply_entry* msg; - if((msg=msg_cache_lookup(qstate->env, - qstate->qinfo.qname, qstate->qinfo.qname_len, - qstate->qinfo.qtype, qstate->qinfo.qclass, - qstate->query_flags, 0, 1)) != NULL) { - struct reply_info* rep = - (struct reply_info*)msg->entry.data; - if(qstate->env->cfg->serve_expired_ttl_reset) { - if(rep && *qstate->env->now + - qstate->env->cfg->serve_expired_ttl > - rep->serve_expired_ttl) { - verbose(VERB_ALGO, "reset " - "serve-expired-ttl for " - "response in cache"); - rep->serve_expired_ttl = - *qstate->env->now + - qstate->env->cfg->serve_expired_ttl; - } - } - /* if the expired record is an error response - * refresh for another NORR_TTL */ - if(rep && *qstate->env->now > rep->ttl && - (FLAGS_GET_RCODE(rep->flags) != - LDNS_RCODE_NOERROR && - FLAGS_GET_RCODE(rep->flags) != - LDNS_RCODE_NXDOMAIN && - FLAGS_GET_RCODE(rep->flags) != - LDNS_RCODE_YXDOMAIN)) { - verbose(VERB_ALGO, "refresh TTL for " - "error response in cache"); - rep->ttl = *qstate->env->now + NORR_TTL; - } - lock_rw_unlock(&msg->entry.lock); - return error_response(qstate, id, rcode); - } - /* serving expired contents, but nothing is cached - * at all, so the servfail cache entry is useful - * (stops waste of time on this servfail NORR_TTL) */ - } else { - /* don't overwrite existing (non-expired) data in - * cache with a servfail */ - struct msgreply_entry* msg; - if((msg=msg_cache_lookup(qstate->env, - qstate->qinfo.qname, qstate->qinfo.qname_len, - qstate->qinfo.qtype, qstate->qinfo.qclass, - qstate->query_flags, *qstate->env->now, 0)) - != NULL) { - struct reply_info* rep = (struct reply_info*) - msg->entry.data; - if(FLAGS_GET_RCODE(rep->flags) == - LDNS_RCODE_NOERROR || - FLAGS_GET_RCODE(rep->flags) == - LDNS_RCODE_NXDOMAIN) { - /* we have a good entry, - * don't overwrite */ - lock_rw_unlock(&msg->entry.lock); - return error_response(qstate, id, rcode); - } - lock_rw_unlock(&msg->entry.lock); - } - - } - memset(&err, 0, sizeof(err)); - err.flags = (uint16_t)(BIT_QR | BIT_RA); - FLAGS_SET_RCODE(err.flags, rcode); - err.qdcount = 1; - err.ttl = NORR_TTL; - err.prefetch_ttl = PREFETCH_TTL_CALC(err.ttl); - err.serve_expired_ttl = NORR_TTL; - /* do not waste time trying to validate this servfail */ - err.security = sec_status_indeterminate; - verbose(VERB_ALGO, "store error response in message cache"); - iter_dns_store(qstate->env, &qstate->qinfo, &err, 0, 0, 0, NULL, - qstate->query_flags, qstate->qstarttime); + struct reply_info err; + struct msgreply_entry* msg; + if(qstate->no_cache_store) { + return error_response(qstate, id, rcode); } + if(qstate->prefetch_leeway > NORR_TTL) { + verbose(VERB_ALGO, "error response for prefetch in cache"); + /* attempt to adjust the cache entry prefetch */ + if(dns_cache_prefetch_adjust(qstate->env, &qstate->qinfo, + NORR_TTL, qstate->query_flags)) + return error_response(qstate, id, rcode); + /* if that fails (not in cache), fall through to store err */ + } + if((msg=msg_cache_lookup(qstate->env, + qstate->qinfo.qname, qstate->qinfo.qname_len, + qstate->qinfo.qtype, qstate->qinfo.qclass, + qstate->query_flags, 0, + qstate->env->cfg->serve_expired_ttl_reset)) != NULL) { + struct reply_info* rep = (struct reply_info*)msg->entry.data; + if(qstate->env->cfg->serve_expired && + qstate->env->cfg->serve_expired_ttl_reset && rep && + *qstate->env->now + qstate->env->cfg->serve_expired_ttl + > rep->serve_expired_ttl) { + verbose(VERB_ALGO, "reset serve-expired-ttl for " + "response in cache"); + rep->serve_expired_ttl = *qstate->env->now + + qstate->env->cfg->serve_expired_ttl; + } + if(rep && (FLAGS_GET_RCODE(rep->flags) == + LDNS_RCODE_NOERROR || + FLAGS_GET_RCODE(rep->flags) == + LDNS_RCODE_NXDOMAIN || + FLAGS_GET_RCODE(rep->flags) == + LDNS_RCODE_YXDOMAIN) && + (qstate->env->cfg->serve_expired || + *qstate->env->now <= rep->ttl)) { + /* we have a good entry, don't overwrite */ + lock_rw_unlock(&msg->entry.lock); + return error_response(qstate, id, rcode); + } + lock_rw_unlock(&msg->entry.lock); + /* nothing interesting is cached (already error response or + * expired good record when we don't serve expired), so this + * servfail cache entry is useful (stops waste of time on this + * servfail NORR_TTL) */ + } + /* store in cache */ + memset(&err, 0, sizeof(err)); + err.flags = (uint16_t)(BIT_QR | BIT_RA); + FLAGS_SET_RCODE(err.flags, rcode); + err.qdcount = 1; + err.ttl = NORR_TTL; + err.prefetch_ttl = PREFETCH_TTL_CALC(err.ttl); + err.serve_expired_ttl = NORR_TTL; + /* do not waste time trying to validate this servfail */ + err.security = sec_status_indeterminate; + verbose(VERB_ALGO, "store error response in message cache"); + iter_dns_store(qstate->env, &qstate->qinfo, &err, 0, 0, 0, NULL, + qstate->query_flags, qstate->qstarttime); return error_response(qstate, id, rcode); } From 02a77f0567116aad49df7dd4dbea1374478b117b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 10 Feb 2023 16:54:44 +0100 Subject: [PATCH 075/177] Changelog entry for - Clean up iterator/iterator.c::error_response_cache() and allow for better interaction with serve-expired, prefetch and cached error responses. --- doc/Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 64f9db7ab..60f9f3c47 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +10 February 2023: George + - Clean up iterator/iterator.c::error_response_cache() and allow for + better interaction with serve-expired, prefetch and cached error + responses. + 9 February 2023: George - Allow TTL refresh of expired error responses. - Add testcase for refreshing expired error responses. From fb06364014f19d2592fd0f21851dc534901d446d Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 31 Jan 2023 15:16:38 +0100 Subject: [PATCH 076/177] Fix issue #825: interaction between ECS and serve-expired. --- edns-subnet/subnetmod.c | 5 +++++ services/mesh.c | 18 ++++-------------- util/module.h | 4 ++++ 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 458a89702..5e6d9efd3 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -779,6 +779,11 @@ subnetmod_operate(struct module_qstate *qstate, enum module_ev event, &qstate->mesh_info->reply_list->query_reply.client_addr, &sq->ecs_client_in, qstate->env->cfg); } + else if(qstate->client_addr.ss_family != AF_UNSPEC) { + subnet_option_from_ss( + &qstate->client_addr, + &sq->ecs_client_in, qstate->env->cfg); + } if(sq->ecs_client_in.subnet_validdata == 0) { /* No clients are interested in result or we could not diff --git a/services/mesh.c b/services/mesh.c index 9007b6e08..8321a48b2 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -803,20 +803,10 @@ static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, return; } } else { - /* Fake the ECS data from the client's IP */ - struct ecs_data ecs; - memset(&ecs, 0, sizeof(ecs)); - subnet_option_from_ss(&rep->client_addr, &ecs, mesh->env->cfg); - if(ecs.subnet_validdata == 0) { - log_err("prefetch_subnet subnet_option_from_ss: invalid data"); - return; - } - subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in, - &s->s, s->s.region); - if(!s->s.edns_opts_front_in) { - log_err("prefetch_subnet subnet_ecs_opt_list_append: out of memory"); - return; - } + /* Store the client's address. Later in the subnet module, + * it is decided whether to include an ECS option or not. + */ + s->s.client_addr = rep->client_addr; } #ifdef UNBOUND_DEBUG n = diff --git a/util/module.h b/util/module.h index 013c65b02..3752c8c33 100644 --- a/util/module.h +++ b/util/module.h @@ -619,6 +619,10 @@ struct module_qstate { /** if this is a validation recursion query that does not get * validation itself */ int is_valrec; + /** client network address is needed for the client-subnet option + * when probing, but we want use reply_list in mesh_info, because + * we don't want to send a reply. */ + struct sockaddr_storage client_addr; /** comm_reply contains server replies */ struct comm_reply* reply; From d1f5ded1d98b962605ae16b23439c3879e2a381f Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 21 Feb 2023 09:21:24 +0100 Subject: [PATCH 077/177] ifdef CLIENT_SUBNET --- util/module.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/module.h b/util/module.h index 3752c8c33..7f41bb1ed 100644 --- a/util/module.h +++ b/util/module.h @@ -619,10 +619,12 @@ struct module_qstate { /** if this is a validation recursion query that does not get * validation itself */ int is_valrec; +#ifdef CLIENT_SUBNET /** client network address is needed for the client-subnet option * when probing, but we want use reply_list in mesh_info, because * we don't want to send a reply. */ struct sockaddr_storage client_addr; +#endif /** comm_reply contains server replies */ struct comm_reply* reply; From b89d0d1cce13f92404a1dfe4e945bc1457476549 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Thu, 9 Feb 2023 14:17:39 +0100 Subject: [PATCH 078/177] Test cache update from serve-expired and client-subnet-always-forward --- testdata/subnet_prefetch_always_forward.crpl | 167 +++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 testdata/subnet_prefetch_always_forward.crpl diff --git a/testdata/subnet_prefetch_always_forward.crpl b/testdata/subnet_prefetch_always_forward.crpl new file mode 100644 index 000000000..ccfe5dfd6 --- /dev/null +++ b/testdata/subnet_prefetch_always_forward.crpl @@ -0,0 +1,167 @@ +; Check if the prefetch option works properly when serve-expired is combined +; with client-subnet-always-forward for non-ECS clients. The prefetch query +; needs to result in an outgoing query without ECS. + +server: + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + serve-expired: yes + client-subnet-always-forward: yes + module-config: "subnetcache iterator" + verbosity: 3 + access-control: 127.0.0.1 allow_snoop + qname-minimisation: no + minimal-responses: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test serve-expired and client-subnet-always-forward without ECS in the request + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. 10 IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This answer should be in the global cache +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Wait for the TTL to expire +STEP 3 TIME_PASSES ELAPSE 20 + +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This record came from the global cache and a prefetch was triggered +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 30 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3580 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3580 IN A 1.2.3.4 +ENTRY_END + +STEP 13 CHECK_OUT_QUERY +ENTRY_BEGIN + MATCH all + REPLY NOERROR DO + SECTION QUESTION + www.example.com. IN A +ENTRY_END + +STEP 14 TRAFFIC + +SCENARIO_END From 71e0ddc94a6d4b1be0af550004bd21e511540fbe Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 21 Feb 2023 09:27:03 +0100 Subject: [PATCH 079/177] Improved comment --- util/module.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/module.h b/util/module.h index 7f41bb1ed..bcb0ccb2e 100644 --- a/util/module.h +++ b/util/module.h @@ -620,9 +620,9 @@ struct module_qstate { * validation itself */ int is_valrec; #ifdef CLIENT_SUBNET - /** client network address is needed for the client-subnet option - * when probing, but we want use reply_list in mesh_info, because - * we don't want to send a reply. */ + /** the client network address is needed for the client-subnet option + * when prefetching, but we can't use reply_list in mesh_info, because + * we don't want to send a reply for the internal query. */ struct sockaddr_storage client_addr; #endif From ed07c5424dd67d4eb851b8915b96cde3d7b2c45c Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 21 Feb 2023 09:29:39 +0100 Subject: [PATCH 080/177] Changelog entry for issue #825 --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 60f9f3c47..b8a923bcf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +21 February 2023: Philip + - Fix #825: Unexpected behavior with client-subnet-always-forward + and serve-expired + 10 February 2023: George - Clean up iterator/iterator.c::error_response_cache() and allow for better interaction with serve-expired, prefetch and cached error From d97c174f50da650b0c599038e7f92634eaad2214 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 23 Feb 2023 13:38:29 +0100 Subject: [PATCH 081/177] - Fix for #852: Completion of error handling. --- doc/Changelog | 3 +++ testcode/lock_verify.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b8a923bcf..e95b76bb5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 February 2023: Wouter + - Fix for #852: Completion of error handling. + 21 February 2023: Philip - Fix #825: Unexpected behavior with client-subnet-always-forward and serve-expired diff --git a/testcode/lock_verify.c b/testcode/lock_verify.c index b0cffe292..0958ff0ba 100644 --- a/testcode/lock_verify.c +++ b/testcode/lock_verify.c @@ -177,6 +177,8 @@ static int readup_str(char** str, FILE* in) } buf[len] = 0; *str = strdup(buf); + if(!*str) + fatal_exit("strdup failed: out of memory"); return 1; } From 60304f972ed29b420618070b1f62413f8fe1fd65 Mon Sep 17 00:00:00 2001 From: Christian McDonald Date: Fri, 24 Feb 2023 09:31:19 -0500 Subject: [PATCH 082/177] #827 review response --- pythonmod/pythonmod.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index d4042995e..6d8539bd5 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -3,7 +3,6 @@ * * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) - * Copyright (c) 2023, Rubicon Communications, LLC (Netgate) * * This software is open source. * @@ -254,10 +253,11 @@ cleanup: } /* we only want to unwind Python once at exit */ -void pythonmod_atexit(void) +static void +pythonmod_atexit(void) { - assert(py_mod_count == 0); - assert(maimthr != NULL); + log_assert(py_mod_count == 0); + log_assert(mainthr != NULL); PyEval_RestoreThread(mainthr); Py_Finalize(); @@ -322,7 +322,7 @@ int pythonmod_init(struct module_env* env, int id) SWIG_init(); mainthr = PyEval_SaveThread(); - /* XXX: register callback to unwind Python at exit */ + /* register callback to unwind Python at exit */ atexit(pythonmod_atexit); } @@ -539,6 +539,7 @@ python_init_fail: void pythonmod_deinit(struct module_env* env, int id) { + int cbtype; struct pythonmod_env* pe = env->modinfo[id]; if(pe == NULL) return; @@ -567,7 +568,7 @@ void pythonmod_deinit(struct module_env* env, int id) free(pe); /* iterate over all possible callback types and clean up each in turn */ - for (int cbtype = 0; cbtype < inplace_cb_types_total; cbtype++) + for (cbtype = 0; cbtype < inplace_cb_types_total; cbtype++) inplace_cb_delete(env, cbtype, id); /* Module is deallocated in Python */ From 319119943f018d4725a507f4e389bcf41b5317f3 Mon Sep 17 00:00:00 2001 From: eaglegai Date: Mon, 6 Mar 2023 22:04:06 +0800 Subject: [PATCH 083/177] fix potential memory leak in unbound-host when errors happen ==3709953== HEAP SUMMARY: ==3709953== in use at exit: 276,541 bytes in 23 blocks ==3709953== total heap usage: 29 allocs, 6 frees, 280,682 bytes allocated ==3709953== ==3709953== 1 bytes in 1 blocks are still reachable in loss record 1 of 23 ==3709953== at 0x4866EC0: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so) ==3709953== by 0x48E2BC3: ub_initstate (random.c:85) ==3709953== by 0x489B067: ub_ctx_create_nopipe (libunbound.c:114) ==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180) ==3709953== by 0x10E203: main (unbound-host.c:433) ==3709953== ...... ==3709953== 8,192 bytes in 1 blocks are still reachable in loss record 22 of 23 ==3709953== at 0x4866EC0: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so) ==3709953== by 0x48E427B: regional_create_custom (regional.c:94) ==3709953== by 0x48DEA03: edns_strings_create (edns.c:57) ==3709953== by 0x489B0F3: ub_ctx_create_nopipe (libunbound.c:157) ==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180) ==3709953== by 0x10E203: main (unbound-host.c:433) ==3709953== ==3709953== 262,144 bytes in 1 blocks are still reachable in loss record 23 of 23 ==3709953== at 0x486933C: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-arm64-linux.so) ==3709953== by 0x48C826F: config_create (config_file.c:179) ==3709953== by 0x48C85AF: config_create_forlib (config_file.c:383) ==3709953== by 0x489B0BB: ub_ctx_create_nopipe (libunbound.c:130) ==3709953== by 0x489B31F: ub_ctx_create (libunbound.c:180) ==3709953== by 0x10E203: main (unbound-host.c:433) ==3709953== ==3709953== LEAK SUMMARY: ==3709953== definitely lost: 0 bytes in 0 blocks ==3709953== indirectly lost: 0 bytes in 0 blocks ==3709953== possibly lost: 0 bytes in 0 blocks ==3709953== still reachable: 276,541 bytes in 23 blocks ==3709953== suppressed: 0 bytes in 0 blocks ==3709953== ==3709953== For lists of detected and suppressed errors, rerun with: -s ==3709953== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Signed-off-by: eaglegai --- smallapp/unbound-host.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/smallapp/unbound-host.c b/smallapp/unbound-host.c index d612575f3..8bffe46ce 100644 --- a/smallapp/unbound-host.c +++ b/smallapp/unbound-host.c @@ -482,6 +482,7 @@ int main(int argc, char* argv[]) case '?': case 'h': default: + ub_ctx_delete(ctx); usage(); } } @@ -495,8 +496,10 @@ int main(int argc, char* argv[]) } argc -= optind; argv += optind; - if(argc != 1) + if(argc != 1) { + ub_ctx_delete(ctx); usage(); + } #ifdef HAVE_SSL #ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS From 184248eb0e0f1e95a1c0c19d22289238c127bcf3 Mon Sep 17 00:00:00 2001 From: eaglegai Date: Tue, 7 Mar 2023 21:49:54 +0800 Subject: [PATCH 084/177] fix memory leak in unbound-streamtcp when open_svr failed ==1927474== Memcheck, a memory error detector ==1927474== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==1927474== Using Valgrind-3.16.0 and LibVEX; rerun with -h for copyright info ==1927474== Command: unbound-streamtcp -f localhost ==1927474== fatal: bad server specs 'localhost' ==1927474== ==1927474== HEAP SUMMARY: ==1927474== in use at exit: 131,186 bytes in 4 blocks ==1927474== total heap usage: 5 allocs, 1 frees, 132,210 bytes allocated ==1927474== ==1927474== 40 bytes in 1 blocks are still reachable in loss record 1 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0573: sldns_buffer_new (sbuffer.c:21) ==1927474== by 0x11ECED: send_em (streamtcp.c:374) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== 40 bytes in 1 blocks are still reachable in loss record 2 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0573: sldns_buffer_new (sbuffer.c:21) ==1927474== by 0x11ECFA: send_em (streamtcp.c:375) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== 65,553 bytes in 1 blocks are still reachable in loss record 3 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0583: sldns_buffer_new (sbuffer.c:27) ==1927474== by 0x11ECED: send_em (streamtcp.c:374) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== 65,553 bytes in 1 blocks are still reachable in loss record 4 of 4 ==1927474== at 0x483F751: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==1927474== by 0x1E0583: sldns_buffer_new (sbuffer.c:27) ==1927474== by 0x11ECFA: send_em (streamtcp.c:375) ==1927474== by 0x11E6C1: main (streamtcp.c:585) ==1927474== ==1927474== LEAK SUMMARY: ==1927474== definitely lost: 0 bytes in 0 blocks ==1927474== indirectly lost: 0 bytes in 0 blocks ==1927474== possibly lost: 0 bytes in 0 blocks ==1927474== still reachable: 131,186 bytes in 4 blocks ==1927474== suppressed: 0 bytes in 0 blocks ==1927474== ==1927474== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Signed-off-by: eaglegai --- testcode/streamtcp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index b2c0d5328..36b1edeb8 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -371,15 +371,19 @@ static void send_em(const char* svr, const char* pp2_client, int udp, int usessl, int noanswer, int onarrival, int delay, int num, char** qs) { - sldns_buffer* buf = sldns_buffer_new(65553); - sldns_buffer* proxy_buf = sldns_buffer_new(65553); struct sockaddr_storage svr_addr; socklen_t svr_addrlen; int fd = open_svr(svr, udp, &svr_addr, &svr_addrlen); int i, wait_results = 0, pp2_parsed; SSL_CTX* ctx = NULL; SSL* ssl = NULL; + sldns_buffer* buf = sldns_buffer_new(65553); if(!buf) fatal_exit("out of memory"); + sldns_buffer* proxy_buf = sldns_buffer_new(65553); + if(!proxy_buf) { + sldns_buffer_free(buf); + fatal_exit("out of memory"); + } pp2_parsed = parse_pp2_client(pp2_client, udp, proxy_buf); if(usessl) { ctx = connect_sslctx_create(NULL, NULL, NULL, 0); From 4f25d75d4b236c26badc88e6cbc1dadfa1c4ede0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 14 Mar 2023 16:57:37 +0100 Subject: [PATCH 085/177] - Fix unbound-dnstap-socket test program to reply the finish frame over a TLS connection correctly. --- dnstap/unbound-dnstap-socket.c | 35 +++++++++++++++++++++++----------- doc/Changelog | 4 ++++ 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 3bf889463..618e20fa6 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -789,7 +789,7 @@ static int reply_with_accept(struct tap_data* data) /** reply with FINISH control frame to bidirectional client, * returns 0 on error */ -static int reply_with_finish(int fd) +static int reply_with_finish(struct tap_data* data) { #ifdef USE_DNSTAP size_t len = 0; @@ -799,21 +799,34 @@ static int reply_with_finish(int fd) return 0; } - fd_set_block(fd); - if(send(fd, finishframe, len, 0) == -1) { - log_err("send failed: %s", sock_strerror(errno)); - fd_set_nonblock(fd); - free(finishframe); - return 0; + fd_set_block(data->fd); + if(data->ssl) { + int r; + if((r=SSL_write(data->ssl, finishframe, len)) <= 0) { + if(SSL_get_error(data->ssl, r) == SSL_ERROR_ZERO_RETURN) + log_err("SSL_write, peer closed connection"); + else + log_err("could not SSL_write"); + fd_set_nonblock(data->fd); + free(finishframe); + return 0; + } + } else { + if(send(data->fd, finishframe, len, 0) == -1) { + log_err("send failed: %s", sock_strerror(errno)); + fd_set_nonblock(data->fd); + free(finishframe); + return 0; + } } if(verbosity) log_info("sent control frame(finish)"); - fd_set_nonblock(fd); + fd_set_nonblock(data->fd); free(finishframe); return 1; #else log_err("no dnstap compiled, no reply"); - (void)fd; + (void)data; return 0; #endif } @@ -933,7 +946,7 @@ static int tap_handshake(struct tap_data* data) #endif /* HAVE_SSL */ /** callback for dnstap listener */ -void dtio_tap_callback(int fd, short ATTR_UNUSED(bits), void* arg) +void dtio_tap_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(bits), void* arg) { struct tap_data* data = (struct tap_data*)arg; if(verbosity>=3) log_info("tap callback"); @@ -1016,7 +1029,7 @@ void dtio_tap_callback(int fd, short ATTR_UNUSED(bits), void* arg) } } else if(data->len >= 4 && sldns_read_uint32(data->frame) == FSTRM_CONTROL_FRAME_STOP && data->is_bidirectional) { - if(!reply_with_finish(fd)) { + if(!reply_with_finish(data)) { tap_data_free(data); return; } diff --git a/doc/Changelog b/doc/Changelog index e95b76bb5..399da1473 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +14 March 2023: Wouter + - Fix unbound-dnstap-socket test program to reply the finish frame + over a TLS connection correctly. + 23 February 2023: Wouter - Fix for #852: Completion of error handling. From a97d7175a661a52b6d00f03faf69159fa5f61c63 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 16 Mar 2023 15:40:43 +0100 Subject: [PATCH 086/177] - Fix ssl.h include brackets, instead of quotes. --- compat/getentropy_solaris.c | 2 +- daemon/remote.h | 2 +- doc/Changelog | 3 +++ validator/val_neg.c | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/compat/getentropy_solaris.c b/compat/getentropy_solaris.c index 5e3b1cbbb..1ff816291 100644 --- a/compat/getentropy_solaris.c +++ b/compat/getentropy_solaris.c @@ -47,7 +47,7 @@ #define SHA512_Update SHA512Update #define SHA512_Final SHA512Final #else -#include "openssl/sha.h" +#include #endif #include diff --git a/daemon/remote.h b/daemon/remote.h index 217ea21e8..4902803f5 100644 --- a/daemon/remote.h +++ b/daemon/remote.h @@ -46,7 +46,7 @@ #ifndef DAEMON_REMOTE_H #define DAEMON_REMOTE_H #ifdef HAVE_OPENSSL_SSL_H -#include "openssl/ssl.h" +#include #endif struct config_file; struct listen_list; diff --git a/doc/Changelog b/doc/Changelog index 399da1473..62d2b4c84 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 March 2023: Wouter + - Fix ssl.h include brackets, instead of quotes. + 14 March 2023: Wouter - Fix unbound-dnstap-socket test program to reply the finish frame over a TLS connection correctly. diff --git a/validator/val_neg.c b/validator/val_neg.c index 6990e9a06..52bc68387 100644 --- a/validator/val_neg.c +++ b/validator/val_neg.c @@ -43,7 +43,7 @@ */ #include "config.h" #ifdef HAVE_OPENSSL_SSL_H -#include "openssl/ssl.h" +#include #define NSEC3_SHA_LEN SHA_DIGEST_LENGTH #else #define NSEC3_SHA_LEN 20 From d7e776114114c16816570e48ab3a27eedc401a0e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 17 Mar 2023 14:39:37 +0100 Subject: [PATCH 087/177] - Fix #812, fix #846, by using the SSL_OP_IGNORE_UNEXPECTED_EOF option to ignore the unexpected eof while reading in openssl >= 3. --- doc/Changelog | 4 ++++ util/net_help.c | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 62d2b4c84..25b63ce76 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +17 March 2023: George + - Fix #812, fix #846, by using the SSL_OP_IGNORE_UNEXPECTED_EOF option + to ignore the unexpected eof while reading in openssl >= 3. + 16 March 2023: Wouter - Fix ssl.h include brackets, instead of quotes. diff --git a/util/net_help.c b/util/net_help.c index 54fad6986..de2d771bd 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1005,6 +1005,16 @@ listen_sslctx_setup(void* ctxt) log_crypto_err("could not set cipher list with SSL_CTX_set_cipher_list"); } #endif +#if defined(SSL_OP_IGNORE_UNEXPECTED_EOF) + /* ignore errors when peers do not send the mandatory close_notify + * alert on shutdown. + * Relevant for openssl >= 3 */ + if((SSL_CTX_set_options(ctx, SSL_OP_IGNORE_UNEXPECTED_EOF) & + SSL_OP_IGNORE_UNEXPECTED_EOF) != SSL_OP_IGNORE_UNEXPECTED_EOF) { + log_crypto_err("could not set SSL_OP_IGNORE_UNEXPECTED_EOF"); + return 0; + } +#endif if((SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE) & SSL_OP_CIPHER_SERVER_PREFERENCE) != @@ -1233,6 +1243,17 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem, int wincert) SSL_CTX_free(ctx); return 0; } +#endif +#if defined(SSL_OP_IGNORE_UNEXPECTED_EOF) + /* ignore errors when peers do not send the mandatory close_notify + * alert on shutdown. + * Relevant for openssl >= 3 */ + if((SSL_CTX_set_options(ctx, SSL_OP_IGNORE_UNEXPECTED_EOF) & + SSL_OP_IGNORE_UNEXPECTED_EOF) != SSL_OP_IGNORE_UNEXPECTED_EOF) { + log_crypto_err("could not set SSL_OP_IGNORE_UNEXPECTED_EOF"); + SSL_CTX_free(ctx); + return 0; + } #endif if(key && key[0]) { if(!SSL_CTX_use_certificate_chain_file(ctx, pem)) { From 8f83c0a2cbce0a785708fa77fd16727ac2e02861 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Mar 2023 14:55:55 +0100 Subject: [PATCH 088/177] - iana portlist update. --- doc/Changelog | 3 +++ util/iana_ports.inc | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 25b63ce76..dd5db9b55 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +20 March 2023: Wouter + - iana portlist update. + 17 March 2023: George - Fix #812, fix #846, by using the SSL_OP_IGNORE_UNEXPECTED_EOF option to ignore the unexpected eof while reading in openssl >= 3. diff --git a/util/iana_ports.inc b/util/iana_ports.inc index b816f8a04..49e65dcb7 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -674,6 +674,8 @@ 911, 912, 913, +914, +915, 989, 990, 991, @@ -1901,6 +1903,7 @@ 2256, 2257, 2258, +2259, 2260, 2261, 2262, From 2a100ee9ee02e42e6581b09dabc8289583347350 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 21 Mar 2023 13:51:51 +0100 Subject: [PATCH 089/177] Fix issue #851: reserved identifier violation --- libunbound/unbound-event.h | 6 +++--- libunbound/unbound.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libunbound/unbound-event.h b/libunbound/unbound-event.h index 5fa74df78..5ca81908a 100644 --- a/libunbound/unbound-event.h +++ b/libunbound/unbound-event.h @@ -52,8 +52,8 @@ * unbound was compiled with, otherwise it wouldn't work, the event and * event_base structures would be different. */ -#ifndef _UB_UNBOUND_EVENT_H -#define _UB_UNBOUND_EVENT_H +#ifndef UB_UNBOUND_EVENT_H +#define UB_UNBOUND_EVENT_H #ifdef __cplusplus extern "C" { @@ -262,4 +262,4 @@ int ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype, } #endif -#endif /* _UB_UNBOUND_H */ +#endif /* UB_UNBOUND_EVENT_H */ diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 221ef7f9d..72428fd38 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -94,8 +94,8 @@ * The second calls another worker thread (or process) to perform the work. * And no buffers need to be set up, but a context-switch happens. */ -#ifndef _UB_UNBOUND_H -#define _UB_UNBOUND_H +#ifndef UB_UNBOUND_H +#define UB_UNBOUND_H #ifdef __cplusplus extern "C" { @@ -865,4 +865,4 @@ struct ub_stats_info { } #endif -#endif /* _UB_UNBOUND_H */ +#endif /* UB_UNBOUND_H */ From e850ca67f132a29b64facb8dbdda97bdf855ecc6 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Tue, 21 Mar 2023 13:54:27 +0100 Subject: [PATCH 090/177] Changelog for issue #851 --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index dd5db9b55..ef200acf2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 March 2023: Philip + - Fix issue #851: reserved identifier violation + 20 March 2023: Wouter - iana portlist update. From 9d7b1d3127f7245251adcd01a871d15d267064a3 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Wed, 22 Mar 2023 10:51:56 +0100 Subject: [PATCH 091/177] Fix issue #860: Bad interaction with 0 TTL records and serve-expired --- services/cache/dns.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/services/cache/dns.c b/services/cache/dns.c index 6fc9919ef..1a4fbdd2f 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -134,24 +134,19 @@ msg_cache_remove(struct module_env* env, uint8_t* qname, size_t qnamelen, /** remove servfail msg cache entry */ static void -msg_del_servfail(struct module_env* env, struct query_info* qinfo, +msg_del_for_0ttl(struct module_env* env, struct query_info* qinfo, uint32_t flags) { struct msgreply_entry* e; - /* see if the entry is servfail, and then remove it, so that + /* see if there is an existing entry, and then remove it, so that * lookups move from the cacheresponse stage to the recursionresponse * stage */ e = msg_cache_lookup(env, qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, flags, 0, 0); if(!e) return; - /* we don't check for the ttl here, also expired servfail entries + /* we don't check for the ttl here, also expired entries * are removed. If the user uses serve-expired, they would still be * used to answer from cache */ - if(FLAGS_GET_RCODE(((struct reply_info*)e->entry.data)->flags) - != LDNS_RCODE_SERVFAIL) { - lock_rw_unlock(&e->entry.lock); - return; - } lock_rw_unlock(&e->entry.lock); msg_cache_remove(env, qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, flags); @@ -183,12 +178,18 @@ dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, * which could be useful for delegation information */ verbose(VERB_ALGO, "TTL 0: dropped msg from cache"); free(rep); - /* if the message is SERVFAIL in cache, remove that SERVFAIL, + /* if the message is in then cache, remove that msg, * so that the TTL 0 response can be returned for future - * responses (i.e. don't get answered by the servfail from + * responses (i.e. don't get answered from * cache, but instead go to recursion to get this TTL0 - * response). */ - msg_del_servfail(env, qinfo, flags); + * response). + * Possible messages that could be in the cache: + * - SERVFAIL + * - NXDOMAIN + * - NODATA + * - an older record that is expired + * - an older record that did not yet expire */ + msg_del_for_0ttl(env, qinfo, flags); return; } From 072be3300f49d75a9dfd35c346bc9020f9623f9e Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Wed, 22 Mar 2023 15:21:19 +0100 Subject: [PATCH 092/177] Tests for serve-expired in combination with new 0 TTL data. --- testdata/serve_expired_0ttl_nodata.rpl | 154 +++++++++++++++++++++++ testdata/serve_expired_0ttl_nxdomain.rpl | 154 +++++++++++++++++++++++ testdata/serve_expired_0ttl_servfail.rpl | 129 +++++++++++++++++++ 3 files changed, 437 insertions(+) create mode 100644 testdata/serve_expired_0ttl_nodata.rpl create mode 100644 testdata/serve_expired_0ttl_nxdomain.rpl create mode 100644 testdata/serve_expired_0ttl_servfail.rpl diff --git a/testdata/serve_expired_0ttl_nodata.rpl b/testdata/serve_expired_0ttl_nodata.rpl new file mode 100644 index 000000000..e28e35255 --- /dev/null +++ b/testdata/serve_expired_0ttl_nodata.rpl @@ -0,0 +1,154 @@ +; config options +server: + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-expired: yes + log-servfail: yes + ede: yes + ede-serve-expired: yes + + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-expired with NXDOMAIN followed by 0 TTL +; Scenario overview: +; - query for 0ttl.example.com. IN A +; - answer from upstream is NODATA; will be cached for NORR_TTL(5) +; - check that the client gets the NODATA; also cached +; - query again right after the TTL expired +; - this time the server answers with a 0 TTL RRset +; - check that we get the correct answer + +; ns.example.com. +RANGE_BEGIN 0 20 + ADDRESS 1.2.3.4 + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 30 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. 10 IN NS + SECTION ANSWER + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION ANSWER + 0ttl.example.com. 0 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 0 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the NODATA (will be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 +ENTRY_END + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the cached NODATA +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 +ENTRY_END + +; Wait for the NXDOMAIN to expire +STEP 31 TIME_PASSES ELAPSE 32 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the cached NODATA +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 +ENTRY_END + +; Query again +STEP 60 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we got the correct answer +STEP 70 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION ANSWER + 0ttl.example.com. 0 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/testdata/serve_expired_0ttl_nxdomain.rpl b/testdata/serve_expired_0ttl_nxdomain.rpl new file mode 100644 index 000000000..55b7605ad --- /dev/null +++ b/testdata/serve_expired_0ttl_nxdomain.rpl @@ -0,0 +1,154 @@ +; config options +server: + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-expired: yes + log-servfail: yes + ede: yes + ede-serve-expired: yes + + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-expired with NXDOMAIN followed by 0 TTL +; Scenario overview: +; - query for 0ttl.example.com. IN A +; - answer from upstream is NXDOMAIN; will be cached for NORR_TTL(5) +; - check that the client gets the NXDOMAIN; also cached +; - query again right after the TTL expired +; - this time the server answers with a 0 TTL RRset +; - check that we get the correct answer + +; ns.example.com. +RANGE_BEGIN 0 20 + ADDRESS 1.2.3.4 + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA NXDOMAIN + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 30 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. 10 IN NS + SECTION ANSWER + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION ANSWER + 0ttl.example.com. 0 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 0 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the SERVFAIL (will be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA NXDOMAIN + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 +ENTRY_END + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the cached NXDOMAIN +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA NXDOMAIN + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 +ENTRY_END + +; Wait for the NXDOMAIN to expire +STEP 31 TIME_PASSES ELAPSE 32 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the cached NXDOMAIN +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA NXDOMAIN + SECTION QUESTION + 0ttl.example.com. IN A + SECTION AUTHORITY + example.com IN SOA ns.example.com dns.example.com 1 7200 3600 2419200 10 +ENTRY_END + +; Query again +STEP 60 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we got the correct answer +STEP 70 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION ANSWER + 0ttl.example.com. 0 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/testdata/serve_expired_0ttl_servfail.rpl b/testdata/serve_expired_0ttl_servfail.rpl new file mode 100644 index 000000000..aad7aa8c9 --- /dev/null +++ b/testdata/serve_expired_0ttl_servfail.rpl @@ -0,0 +1,129 @@ +; config options +server: + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-expired: yes + log-servfail: yes + ede: yes + ede-serve-expired: yes + + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-expired with SERVFAIL followed by 0 TTL +; Scenario overview: +; - query for 0ttl.example.com. IN A +; - answer from upstream is SERVFAIL; will be cached for NORR_TTL(5) +; - check that the client gets the SERVFAIL; also cached +; - query again right after the TTL expired +; - this time the server answers with a 0 TTL RRset +; - check that we get the correct answer + +; ns.example.com. +RANGE_BEGIN 0 20 + ADDRESS 1.2.3.4 + ; response to A query + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR AA SERVFAIL + SECTION QUESTION + 0ttl.example.com. IN A + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 30 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. 10 IN NS + SECTION ANSWER + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION ANSWER + 0ttl.example.com. 0 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 0 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the SERVFAIL (will be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we get the cached SERVFAIL +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all + REPLY QR RD RA SERVFAIL + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Wait for the SERVFAIL to expire +STEP 31 TIME_PASSES ELAPSE 32 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + 0ttl.example.com. IN A +ENTRY_END + +; Check that we got the correct answer +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + 0ttl.example.com. IN A + SECTION ANSWER + 0ttl.example.com. 0 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. 10 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 10 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END From eb7eff4fc758d0977f15a7bd74e29504a958b346 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Thu, 23 Mar 2023 15:00:10 +0100 Subject: [PATCH 093/177] Extra consistency check to make sure that when TLS is requested, either we set up a TLS connection or we return an error. --- services/outside_network.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index a4529ade5..250440667 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -620,6 +620,15 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) log_assert(w->addrlen > 0); pend->c->tcp_do_toggle_rw = 0; pend->c->tcp_do_close = 0; + + /* Consistency check, if we have ssl_upstream but no sslctx, then + * log an error and return failure. + */ + if (w->ssl_upstream && !w->outnet->sslctx) { + log_err("SSL upstream requested but no SSL context"); + return 0; + } + /* open socket */ s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss, w->outnet->ip_dscp); From 1ac9b7548b5a5f62cbb05dfa85cdda16677986d3 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Thu, 23 Mar 2023 15:15:54 +0100 Subject: [PATCH 094/177] Small fixes from Wouter's review --- services/cache/dns.c | 2 +- testdata/serve_expired_0ttl_nodata.rpl | 2 +- testdata/serve_expired_0ttl_nxdomain.rpl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/cache/dns.c b/services/cache/dns.c index 1a4fbdd2f..9fbcb5f0f 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -178,7 +178,7 @@ dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, * which could be useful for delegation information */ verbose(VERB_ALGO, "TTL 0: dropped msg from cache"); free(rep); - /* if the message is in then cache, remove that msg, + /* if the message is in the cache, remove that msg, * so that the TTL 0 response can be returned for future * responses (i.e. don't get answered from * cache, but instead go to recursion to get this TTL0 diff --git a/testdata/serve_expired_0ttl_nodata.rpl b/testdata/serve_expired_0ttl_nodata.rpl index e28e35255..45b51444b 100644 --- a/testdata/serve_expired_0ttl_nodata.rpl +++ b/testdata/serve_expired_0ttl_nodata.rpl @@ -17,7 +17,7 @@ CONFIG_END SCENARIO_BEGIN Test serve-expired with NXDOMAIN followed by 0 TTL ; Scenario overview: ; - query for 0ttl.example.com. IN A -; - answer from upstream is NODATA; will be cached for NORR_TTL(5) +; - answer from upstream is NODATA; will be cached for the SOA negative TTL. ; - check that the client gets the NODATA; also cached ; - query again right after the TTL expired ; - this time the server answers with a 0 TTL RRset diff --git a/testdata/serve_expired_0ttl_nxdomain.rpl b/testdata/serve_expired_0ttl_nxdomain.rpl index 55b7605ad..0fcde9f2d 100644 --- a/testdata/serve_expired_0ttl_nxdomain.rpl +++ b/testdata/serve_expired_0ttl_nxdomain.rpl @@ -17,7 +17,7 @@ CONFIG_END SCENARIO_BEGIN Test serve-expired with NXDOMAIN followed by 0 TTL ; Scenario overview: ; - query for 0ttl.example.com. IN A -; - answer from upstream is NXDOMAIN; will be cached for NORR_TTL(5) +; - answer from upstream is NXDOMAIN; will be cached for the SOA negative TTL. ; - check that the client gets the NXDOMAIN; also cached ; - query again right after the TTL expired ; - this time the server answers with a 0 TTL RRset From 7e6a7f310de20fe00cfcb3a40086c5a3bbbf7e0f Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Fri, 24 Mar 2023 14:51:37 +0100 Subject: [PATCH 095/177] Fix issue #676: Unencrypted query is sent when forward-tls-upstream: yes is used without tls-cert-bundle Model the behavior of unbound in unbound-host: always create a SSL context --- libunbound/libworker.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/libunbound/libworker.c b/libunbound/libworker.c index b9ef02217..ebc1df2e5 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -168,14 +168,12 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) hints_delete(w->env->hints); w->env->hints = NULL; } - if(cfg->ssl_upstream || (cfg->tls_cert_bundle && cfg->tls_cert_bundle[0]) || cfg->tls_win_cert) { - w->sslctx = connect_sslctx_create(NULL, NULL, - cfg->tls_cert_bundle, cfg->tls_win_cert); - if(!w->sslctx) { - /* to make the setup fail after unlock */ - hints_delete(w->env->hints); - w->env->hints = NULL; - } + w->sslctx = connect_sslctx_create(NULL, NULL, + cfg->tls_cert_bundle, cfg->tls_win_cert); + if(!w->sslctx) { + /* to make the setup fail after unlock */ + hints_delete(w->env->hints); + w->env->hints = NULL; } if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); From 312035f58aeaa27116baf5dde7bd87061e259478 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Fri, 24 Mar 2023 14:54:14 +0100 Subject: [PATCH 096/177] Changelog for issue #676 --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ef200acf2..e4bc11f90 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +24 March 2023: Philip + - Fix issue #676: Unencrypted query is sent when + forward-tls-upstream: yes is used without tls-cert-bundle + - Extra consistency check to make sure that when TLS is requested, + either we set up a TLS connection or we return an error. + 21 March 2023: Philip - Fix issue #851: reserved identifier violation From c7618a9b80857bd8b651f40324f5731b0e00d5b6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Apr 2023 10:06:16 +0200 Subject: [PATCH 097/177] - Fix #870: NXDOMAIN instead of NOERROR rcode when asked for existing CNAME record. --- doc/Changelog | 4 ++++ iterator/iterator.c | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index e4bc11f90..fe427e7b1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +4 April 2023: Wouter + - Fix #870: NXDOMAIN instead of NOERROR rcode when asked for existing + CNAME record. + 24 March 2023: Philip - Fix issue #676: Unencrypted query is sent when forward-tls-upstream: yes is used without tls-cert-bundle diff --git a/iterator/iterator.c b/iterator/iterator.c index 5f2703f3c..047160e42 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2879,7 +2879,7 @@ static int processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, struct iter_env* ie, int id) { - int dnsseclame = 0; + int dnsseclame = 0, origtypecname = 0; enum response_type type; iq->num_current_queries--; @@ -2962,6 +2962,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* YXDOMAIN is a permanent error, no need to retry */ type = RESPONSE_TYPE_ANSWER; } + if(type == RESPONSE_TYPE_CNAME) + origtypecname = 1; if(type == RESPONSE_TYPE_CNAME && iq->response->rep->an_numrrsets >= 1 && ntohs(iq->response->rep->rrsets[0]->rk.type) == LDNS_RR_TYPE_DNAME) { uint8_t* sname = NULL; @@ -3047,11 +3049,14 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->minimisation_state = DONOT_MINIMISE_STATE; } if(FLAGS_GET_RCODE(iq->response->rep->flags) == - LDNS_RCODE_NXDOMAIN) { + LDNS_RCODE_NXDOMAIN && !origtypecname) { /* Stop resolving when NXDOMAIN is DNSSEC * signed. Based on assumption that nameservers * serving signed zones do not return NXDOMAIN * for empty-non-terminals. */ + /* If this response is actually a CNAME type, + * the nxdomain rcode may not be for the qname, + * and so it is not the final response. */ if(iq->dnssec_expected) return final_state(iq); /* Make subrequest to validate intermediate From 7033234a482169f86751b63d8ec78d3d7c9f01bc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Apr 2023 10:04:04 +0200 Subject: [PATCH 098/177] - Fix for #870: Add test case for the qname minimisation and CNAME. --- doc/Changelog | 3 + testdata/iter_cname_minimise_nx.rpl | 246 ++++++++++++++++++++++++++++ 2 files changed, 249 insertions(+) create mode 100644 testdata/iter_cname_minimise_nx.rpl diff --git a/doc/Changelog b/doc/Changelog index fe427e7b1..0e1f20862 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +6 April 2023: Wouter + - Fix for #870: Add test case for the qname minimisation and CNAME. + 4 April 2023: Wouter - Fix #870: NXDOMAIN instead of NOERROR rcode when asked for existing CNAME record. diff --git a/testdata/iter_cname_minimise_nx.rpl b/testdata/iter_cname_minimise_nx.rpl new file mode 100644 index 000000000..080055208 --- /dev/null +++ b/testdata/iter_cname_minimise_nx.rpl @@ -0,0 +1,246 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: yes + module-config: "validator iterator" + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + fake-sha1: yes + trust-anchor-signaling: no + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cname chain resolution of nxdomain with qname minimisation. +; the qtype CNAME lookup has NXDOMAIN. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION ANSWER +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AAZrcta3WCyz0iq2p78gmcPpXbmXPP9nQXM/czH1R9ilCaEoV8E27UU= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AAZrcta3WCyz0iq2p78gmcPpXbmXPP9nQXM/czH1R9ilCaEoV8E27UU= +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AAZrcta3WCyz0iq2p78gmcPpXbmXPP9nQXM/czH1R9ilCaEoV8E27UU= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. AAZrcta3WCyz0iq2p78gmcPpXbmXPP9nQXM/czH1R9ilCaEoV8E27UU= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION AUTHORITY +example.com. 300 IN SOA a. b. 1 2 3 4 300 +example.com. 300 IN RRSIG SOA 3 2 300 20070926134150 20070829134150 2854 example.com. AFPx1ZhcHixnxfB90ha4zgp7A+EdM8L63tUnVdlI5B14NiRIXONPDB4= +v.example.com. IN NSEC x.example.com. A AAAA RRSIG NSEC +v.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AFT0Ao01lUN8Ppa9QPayQIN9ZtNIj4TzyhUQV31+FhNRK5uSQhiVwMc= +example.com. 3600 IN NSEC abc.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. ABEOu6iietfjKY1MS0TutZZxUtRYA6XKsC1rMTrenwBF2darY3/Emco= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NXDOMAIN +SECTION QUESTION +c.example.com. IN A +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +c.example.com. 10 IN RRSIG CNAME 3 3 10 20070926134150 20070829134150 2854 example.com. ABT7twnK5qkCBKnaOHxFthUOK+3rBge1wEMItoFPdf16OoVdfccYU2U= +SECTION AUTHORITY +example.com. 300 IN SOA a. b. 1 2 3 4 300 +example.com. 300 IN RRSIG SOA 3 2 300 20070926134150 20070829134150 2854 example.com. AFPx1ZhcHixnxfB90ha4zgp7A+EdM8L63tUnVdlI5B14NiRIXONPDB4= +v.example.com. IN NSEC x.example.com. A AAAA RRSIG NSEC +v.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AFT0Ao01lUN8Ppa9QPayQIN9ZtNIj4TzyhUQV31+FhNRK5uSQhiVwMc= +example.com. 3600 IN NSEC abc.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. ABEOu6iietfjKY1MS0TutZZxUtRYA6XKsC1rMTrenwBF2darY3/Emco= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.example.com. IN CNAME +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +c.example.com. 10 IN RRSIG CNAME 3 3 10 20070926134150 20070829134150 2854 example.com. ABT7twnK5qkCBKnaOHxFthUOK+3rBge1wEMItoFPdf16OoVdfccYU2U= +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +c.example.com. IN CNAME +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +c.example.com. IN CNAME +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +c.example.com. 10 IN RRSIG CNAME 3 3 10 20070926134150 20070829134150 2854 example.com. ABT7twnK5qkCBKnaOHxFthUOK+3rBge1wEMItoFPdf16OoVdfccYU2U= +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +c.example.com. IN CNAME +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NOERROR +SECTION QUESTION +c.example.com. IN CNAME +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +c.example.com. 10 IN RRSIG CNAME 3 3 10 20070926134150 20070829134150 2854 example.com. ABT7twnK5qkCBKnaOHxFthUOK+3rBge1wEMItoFPdf16OoVdfccYU2U= +ENTRY_END + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +c.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AD DO NXDOMAIN +SECTION QUESTION +c.example.com. IN A +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +c.example.com. 10 IN RRSIG CNAME 3 3 10 20070926134150 20070829134150 2854 example.com. ABT7twnK5qkCBKnaOHxFthUOK+3rBge1wEMItoFPdf16OoVdfccYU2U= +SECTION AUTHORITY +example.com. 300 IN SOA a. b. 1 2 3 4 300 +example.com. 300 IN RRSIG SOA 3 2 300 20070926134150 20070829134150 2854 example.com. AFPx1ZhcHixnxfB90ha4zgp7A+EdM8L63tUnVdlI5B14NiRIXONPDB4= +v.example.com. IN NSEC x.example.com. A AAAA RRSIG NSEC +v.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 example.com. AFT0Ao01lUN8Ppa9QPayQIN9ZtNIj4TzyhUQV31+FhNRK5uSQhiVwMc= +example.com. 3600 IN NSEC abc.example.com. NS SOA RRSIG NSEC DNSKEY +example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. ABEOu6iietfjKY1MS0TutZZxUtRYA6XKsC1rMTrenwBF2darY3/Emco= +ENTRY_END +ENTRY_END + +SCENARIO_END From d6c33e1757e1fe37e808b10d50ce8b99d4668b82 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 13 Apr 2023 11:22:11 +0200 Subject: [PATCH 099/177] - Fix build badge, from failing travis link to github ci action link. --- README.md | 2 +- doc/Changelog | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c3d9bc249..e5572a8f8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Unbound -[![Travis Build Status](https://travis-ci.org/NLnetLabs/unbound.svg?branch=master)](https://travis-ci.org/NLnetLabs/unbound) +[![Github Build Status](https://github.com/NLnetLabs/unbound/actions/workflows/ci.yml/badge.svg)](https://github.com/NLnetLabs/unbound/actions) [![Packaging status](https://repology.org/badge/tiny-repos/unbound.svg)](https://repology.org/project/unbound/versions) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/unbound.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:unbound) [![Documentation Status](https://readthedocs.org/projects/unbound/badge/?version=latest)](https://unbound.readthedocs.io/en/latest/?badge=latest) diff --git a/doc/Changelog b/doc/Changelog index 0e1f20862..2c0526042 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 April 2023: Wouter + - Fix build badge, from failing travis link to github ci action link. + 6 April 2023: Wouter - Fix for #870: Add test case for the qname minimisation and CNAME. From a3ef9dd53b6b22152c0016d9142aa54cd64ee99b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 13 Apr 2023 11:29:53 +0200 Subject: [PATCH 100/177] - Show build status for branch=master. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e5572a8f8..c220da030 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Unbound -[![Github Build Status](https://github.com/NLnetLabs/unbound/actions/workflows/ci.yml/badge.svg)](https://github.com/NLnetLabs/unbound/actions) +[![Github Build Status](https://github.com/NLnetLabs/unbound/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/NLnetLabs/unbound/actions) [![Packaging status](https://repology.org/badge/tiny-repos/unbound.svg)](https://repology.org/project/unbound/versions) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/unbound.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:unbound) [![Documentation Status](https://readthedocs.org/projects/unbound/badge/?version=latest)](https://unbound.readthedocs.io/en/latest/?badge=latest) From 4954df58593ef3fee0047b46d2192cd3b88da943 Mon Sep 17 00:00:00 2001 From: yunwei <37897161+dyunwei@users.noreply.github.com> Date: Fri, 14 Apr 2023 16:45:11 +0800 Subject: [PATCH 101/177] Changelog entry for #874 unbound-anchor is compliant with RFC 7958, and the XML format remains unchanged between the old draft and RFC 7958. Update the comments to improve clarity. --- smallapp/unbound-anchor.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index 3bc25a10c..20a100cec 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -1589,8 +1589,7 @@ xml_parse_setup(XML_Parser parser, struct xml_data* data, time_t now) /** * Perform XML parsing of the root-anchors file - * Its format description can be read here - * https://data.iana.org/root-anchors/draft-icann-dnssec-trust-anchor.txt + * Its format description can be found in RFC 7958. * It uses libexpat. * @param xml: BIO with xml data. * @param now: the current time for checking DS validity periods. From e11d206a825349ca447ee27b35aeee4f00271483 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 Apr 2023 11:19:25 +0200 Subject: [PATCH 102/177] Changelog entry for #875 and #874. - Merge #875: change obsolete txt URL in unbound-anchor.c to point to RFC 7958, and Fix #874. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2c0526042..2406f569d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +14 April 2023: Wouter + - Merge #875: change obsolete txt URL in unbound-anchor.c to point + to RFC 7958, and Fix #874. + 13 April 2023: Wouter - Fix build badge, from failing travis link to github ci action link. From fe46bc47d7009d3bad8a377932773c0ef33763a3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 19 Apr 2023 09:56:31 +0200 Subject: [PATCH 103/177] - Fix for #878: Invalid IP address in unbound.conf causes Segmentation Fault on OpenBSD. --- doc/Changelog | 4 ++++ services/listen_dnsport.c | 26 +++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2406f569d..a5fb8460e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +19 April 2023: Wouter + - Fix for #878: Invalid IP address in unbound.conf causes Segmentation + Fault on OpenBSD. + 14 April 2023: Wouter - Merge #875: change obsolete txt URL in unbound-anchor.c to point to RFC 7958, and Fix #874. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 95606aff5..0c09ed849 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1018,7 +1018,7 @@ make_sock(int stype, const char* ifname, const char* port, log_err("node %s:%s getaddrinfo: %s %s", ifname?ifname:"default", port, gai_strerror(r), #ifdef EAI_SYSTEM - r==EAI_SYSTEM?(char*)strerror(errno):"" + (r==EAI_SYSTEM?(char*)strerror(errno):"") #else "" #endif @@ -1252,7 +1252,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) { - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); if(noip6) { log_warn("IPv6 protocol not available"); @@ -1263,7 +1264,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, /* getting source addr packet info is highly non-portable */ if(!set_recvpktinfo(s, hints->ai_family)) { sock_close(s); - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); return 0; } @@ -1271,7 +1273,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, ?listen_type_udpancil_dnscrypt:listen_type_udpancil, is_pp2, ub_sock)) { sock_close(s); - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); return 0; } @@ -1283,7 +1286,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) { - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); if(noip6) { log_warn("IPv6 protocol not available"); @@ -1295,7 +1299,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, ?listen_type_udp_dnscrypt:listen_type_udp, is_pp2, ub_sock)) { sock_close(s); - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); return 0; } @@ -1318,7 +1323,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, &noip6, 0, 0, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) { - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); if(noip6) { /*log_warn("IPv6 protocol not available");*/ @@ -1330,7 +1336,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, verbose(VERB_ALGO, "setup TCP for SSL service"); if(!port_insert(list, s, port_type, is_pp2, ub_sock)) { sock_close(s); - freeaddrinfo(ub_sock->addr); + if(ub_sock->addr) + freeaddrinfo(ub_sock->addr); free(ub_sock); return 0; } @@ -1908,7 +1915,8 @@ void listening_ports_free(struct listen_port* list) } /* rc_ports don't have ub_socket */ if(list->socket) { - freeaddrinfo(list->socket->addr); + if(list->socket->addr) + freeaddrinfo(list->socket->addr); free(list->socket); } free(list); From cba1350886b0aa489ca54813e79a48bcdc596851 Mon Sep 17 00:00:00 2001 From: Ilya Shipitsin Date: Mon, 24 Apr 2023 11:45:41 +0200 Subject: [PATCH 104/177] services/authzone.c: remove redundant check found by cppcheck services\authzone.c:7513:12: style: Condition 'rrlist[i]' is always true [knownConditionTrueFalse] --- services/authzone.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/authzone.c b/services/authzone.c index 3898767c7..29087b5b2 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -7510,7 +7510,7 @@ static void add_rrlist_rrsigs_into_data(struct packed_rrset_data* data, size_t j; if(!rrlist[i]) continue; - if(rrlist[i] && rrlist[i]->type == LDNS_RR_TYPE_ZONEMD && + if(rrlist[i]->type == LDNS_RR_TYPE_ZONEMD && query_dname_compare(z->name, node->name)==0) { /* omit RRSIGs over type ZONEMD at apex */ continue; From 648ad4db6fdf3716a4376489998342cf267944ed Mon Sep 17 00:00:00 2001 From: Vadim Fedorenko Date: Thu, 20 Apr 2023 08:39:55 -0700 Subject: [PATCH 105/177] Linting change. Remove config parser/lexer code as it's rebuilded every time but can break adding new config options. Also clean up the code base to avoid mixing actual code changes and lint issues. Signed-off-by: Vadim Fedorenko --- Makefile.in | 10 +- config.h.in | 24 +- configure | 1 - configure.ac | 72 +- daemon/remote.c | 174 +- daemon/stats.c | 20 +- daemon/worker.c | 156 +- libunbound/unbound.h | 92 +- services/listen_dnsport.c | 80 +- services/mesh.c | 86 +- smallapp/unbound-control.c | 14 +- testcode/fake_event.c | 154 +- testcode/replay.c | 68 +- util/config_file.c | 110 +- util/config_file.h | 41 +- util/configlexer.c | 6737 -------------------------------- util/configlexer.lex | 16 +- util/configparser.c | 7479 ------------------------------------ util/configparser.h | 763 ---- util/configparser.y | 14 +- util/netevent.c | 168 +- util/netevent.h | 66 +- util/timehist.c | 26 +- 23 files changed, 694 insertions(+), 15677 deletions(-) delete mode 100644 util/configlexer.c delete mode 100644 util/configparser.c delete mode 100644 util/configparser.h diff --git a/Makefile.in b/Makefile.in index bc021aa1e..3be1ae8a2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -198,7 +198,7 @@ CHECKCONF_OBJ=unbound-checkconf.lo worker_cb.lo CHECKCONF_OBJ_LINK=$(CHECKCONF_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \ $(COMPAT_OBJ) @WIN_CHECKCONF_OBJ_LINK@ CONTROL_SRC=smallapp/unbound-control.c -CONTROL_OBJ=unbound-control.lo +CONTROL_OBJ=unbound-control.lo CONTROL_OBJ_LINK=$(CONTROL_OBJ) worker_cb.lo $(COMMON_OBJ_ALL_SYMBOLS) \ $(SLDNS_OBJ) $(COMPAT_OBJ) @WIN_CONTROL_OBJ_LINK@ HOST_SRC=smallapp/unbound-host.c @@ -516,7 +516,7 @@ distclean: clean rm -f doc/example.conf doc/libunbound.3 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound-control.8 doc/unbound.8 doc/unbound.conf.5 doc/unbound-host.1 rm -f smallapp/unbound-control-setup.sh dnstap/dnstap_config.h dnscrypt/dnscrypt_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service rm -f $(TEST_BIN) - rm -f Makefile + rm -f Makefile maintainer-clean: distclean rm -f util/configlexer.c util/configparser.c util/configparser.h @@ -649,7 +649,7 @@ uninstall: $(PYTHONMOD_UNINSTALL) $(PYUNBOUND_UNINSTALL) $(UNBOUND_EVENT_UNINSTA iana_update: curl -o port-numbers.tmp https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml --compressed - if file port-numbers.tmp | grep 'gzip' >/dev/null; then zcat port-numbers.tmp; else cat port-numbers.tmp; fi | awk '// {p=0;} /udp/ {p=1;} /[^u]/ {p=0;} /Decomissioned|Decommissioned|Removed|De-registered|unassigned|Unassigned|Reserved/ {u=1;} // { if(u==1) {u=0;} else { if(p==1) { match($$0,/[0-9]+/); print substr($$0, RSTART, RLENGTH) ","}}}' | sort -nu > util/iana_ports.inc + if file port-numbers.tmp | grep 'gzip' >/dev/null; then zcat port-numbers.tmp; else cat port-numbers.tmp; fi | awk '// {p=0;} /udp/ {p=1;} /[^u]/ {p=0;} /Decomissioned|Decommissioned|Removed|De-registered|unassigned|Unassigned|Reserved/ {u=1;} // { if(u==1) {u=0;} else { if(p==1) { match($$0,/[0-9]+/); print substr($$0, RSTART, RLENGTH) ","}}}' | sort -nu > util/iana_ports.inc rm -f port-numbers.tmp # dependency generation @@ -877,7 +877,7 @@ rpz.lo rpz.o: $(srcdir)/services/rpz.c config.h $(srcdir)/services/rpz.h $(srcdi outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \ $(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - + outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c config.h \ $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h \ @@ -1186,7 +1186,7 @@ unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/r $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/random.h $(srcdir)/respip/respip.h \ $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/services/outside_network.h + $(srcdir)/services/outside_network.h unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h $(srcdir)/util/log.h \ $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ diff --git a/config.h.in b/config.h.in index 2caecf30d..6f7a062af 100644 --- a/config.h.in +++ b/config.h.in @@ -1068,39 +1068,39 @@ #if defined(OMITTED__D_GNU_SOURCE) && !defined(_GNU_SOURCE) #define _GNU_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_BSD_SOURCE) && !defined(_BSD_SOURCE) #define _BSD_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_DEFAULT_SOURCE) && !defined(_DEFAULT_SOURCE) #define _DEFAULT_SOURCE 1 -#endif +#endif #if defined(OMITTED__D__EXTENSIONS__) && !defined(__EXTENSIONS__) #define __EXTENSIONS__ 1 -#endif +#endif #if defined(OMITTED__D_POSIX_C_SOURCE_200112) && !defined(_POSIX_C_SOURCE) #define _POSIX_C_SOURCE 200112 -#endif +#endif #if defined(OMITTED__D_XOPEN_SOURCE_600) && !defined(_XOPEN_SOURCE) #define _XOPEN_SOURCE 600 -#endif +#endif #if defined(OMITTED__D_XOPEN_SOURCE_EXTENDED_1) && !defined(_XOPEN_SOURCE_EXTENDED) #define _XOPEN_SOURCE_EXTENDED 1 -#endif +#endif #if defined(OMITTED__D_ALL_SOURCE) && !defined(_ALL_SOURCE) #define _ALL_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_LARGEFILE_SOURCE_1) && !defined(_LARGEFILE_SOURCE) #define _LARGEFILE_SOURCE 1 -#endif +#endif @@ -1184,7 +1184,7 @@ #endif - + #ifdef HAVE_ATTR_FORMAT # define ATTR_FORMAT(archetype, string_index, first_to_check) \ __attribute__ ((format (archetype, string_index, first_to_check))) @@ -1294,7 +1294,7 @@ void* reallocarray(void *ptr, size_t nmemb, size_t size); #ifdef HAVE_WINSOCK2_H #define FD_SET_T (u_int) #else -#define FD_SET_T +#define FD_SET_T #endif @@ -1449,5 +1449,3 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, #define UNBOUND_CONTROL_PORT 8953 /** the version of unbound-control that this software implements */ #define UNBOUND_CONTROL_VERSION 1 - - diff --git a/configure b/configure index ad6256735..f7abb5289 100755 --- a/configure +++ b/configure @@ -24273,4 +24273,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi - diff --git a/configure.ac b/configure.ac index 708427d1d..73fef5f87 100644 --- a/configure.ac +++ b/configure.ac @@ -157,7 +157,7 @@ esac # are we on MinGW? if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" -else +else if echo $host | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi @@ -186,9 +186,9 @@ ub_conf_dir=`AS_DIRNAME(["$ub_conf_file"])` AC_SUBST(ub_conf_dir) # Determine run, chroot directory and pidfile locations -AC_ARG_WITH(run-dir, - AS_HELP_STRING([--with-run-dir=path],[set default directory to chdir to (by default dir part of cfg file)]), - UNBOUND_RUN_DIR="$withval", +AC_ARG_WITH(run-dir, + AS_HELP_STRING([--with-run-dir=path],[set default directory to chdir to (by default dir part of cfg file)]), + UNBOUND_RUN_DIR="$withval", if test $on_mingw = no; then UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` else @@ -199,9 +199,9 @@ AC_SUBST(UNBOUND_RUN_DIR) ACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) AC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) -AC_ARG_WITH(chroot-dir, - AS_HELP_STRING([--with-chroot-dir=path],[set default directory to chroot to (by default same as run-dir)]), - UNBOUND_CHROOT_DIR="$withval", +AC_ARG_WITH(chroot-dir, + AS_HELP_STRING([--with-chroot-dir=path],[set default directory to chroot to (by default same as run-dir)]), + UNBOUND_CHROOT_DIR="$withval", if test $on_mingw = no; then UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" else @@ -219,9 +219,9 @@ AC_ARG_WITH(share-dir, AC_SUBST(UNBOUND_SHARE_DIR) AC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) -AC_ARG_WITH(pidfile, - AS_HELP_STRING([--with-pidfile=filename],[set default pathname to unbound pidfile (default run-dir/unbound.pid)]), - UNBOUND_PIDFILE="$withval", +AC_ARG_WITH(pidfile, + AS_HELP_STRING([--with-pidfile=filename],[set default pathname to unbound pidfile (default run-dir/unbound.pid)]), + UNBOUND_PIDFILE="$withval", if test $on_mingw = no; then UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" else @@ -232,9 +232,9 @@ AC_SUBST(UNBOUND_PIDFILE) ACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) AC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) -AC_ARG_WITH(rootkey-file, - AS_HELP_STRING([--with-rootkey-file=filename],[set default pathname to root key file (default run-dir/root.key). This file is read and written.]), - UNBOUND_ROOTKEY_FILE="$withval", +AC_ARG_WITH(rootkey-file, + AS_HELP_STRING([--with-rootkey-file=filename],[set default pathname to root key file (default run-dir/root.key). This file is read and written.]), + UNBOUND_ROOTKEY_FILE="$withval", if test $on_mingw = no; then UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" else @@ -245,9 +245,9 @@ AC_SUBST(UNBOUND_ROOTKEY_FILE) ACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) AC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) -AC_ARG_WITH(rootcert-file, - AS_HELP_STRING([--with-rootcert-file=filename],[set default pathname to root update certificate file (default run-dir/icannbundle.pem). This file need not exist if you are content with the builtin.]), - UNBOUND_ROOTCERT_FILE="$withval", +AC_ARG_WITH(rootcert-file, + AS_HELP_STRING([--with-rootcert-file=filename],[set default pathname to root update certificate file (default run-dir/icannbundle.pem). This file need not exist if you are content with the builtin.]), + UNBOUND_ROOTCERT_FILE="$withval", if test $on_mingw = no; then UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" else @@ -258,9 +258,9 @@ AC_SUBST(UNBOUND_ROOTCERT_FILE) ACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) AC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) -AC_ARG_WITH(username, - AS_HELP_STRING([--with-username=user],[set default user that unbound changes to (default user is unbound)]), - UNBOUND_USERNAME="$withval", +AC_ARG_WITH(username, + AS_HELP_STRING([--with-username=user],[set default user that unbound changes to (default user is unbound)]), + UNBOUND_USERNAME="$withval", UNBOUND_USERNAME="unbound") AC_SUBST(UNBOUND_USERNAME) AC_DEFINE_UNQUOTED(UB_USERNAME, ["$UNBOUND_USERNAME"], [default username]) @@ -286,7 +286,7 @@ ACX_DETERMINE_EXT_FLAGS_UNBOUND # debug mode flags warnings AC_ARG_ENABLE(checking, AS_HELP_STRING([--enable-checking],[Enable warnings, asserts, makefile-dependencies])) AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[same as enable-checking])) -if test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; +if test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; else debug_enabled="$enable_checking"; fi AC_SUBST(debug_enabled) case "$debug_enabled" in @@ -454,7 +454,7 @@ AC_CHECK_HEADERS([netioapi.h],,, [AC_INCLUDES_DEFAULT #endif ]) -# check for types. +# check for types. # Using own tests for int64* because autoconf builtin only give 32bit. AC_CHECK_TYPE(int8_t, signed char) AC_CHECK_TYPE(int16_t, short) @@ -549,11 +549,11 @@ sinclude(systemd.m4) # Include systemd.m4 - end # set memory allocation checking if requested -AC_ARG_ENABLE(alloc-checks, AS_HELP_STRING([--enable-alloc-checks],[ enable to memory allocation statistics, for debug purposes ]), +AC_ARG_ENABLE(alloc-checks, AS_HELP_STRING([--enable-alloc-checks],[ enable to memory allocation statistics, for debug purposes ]), , ) -AC_ARG_ENABLE(alloc-lite, AS_HELP_STRING([--enable-alloc-lite],[ enable for lightweight alloc assertions, for debug purposes ]), +AC_ARG_ENABLE(alloc-lite, AS_HELP_STRING([--enable-alloc-lite],[ enable for lightweight alloc assertions, for debug purposes ]), , ) -AC_ARG_ENABLE(alloc-nonregional, AS_HELP_STRING([--enable-alloc-nonregional],[ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), +AC_ARG_ENABLE(alloc-nonregional, AS_HELP_STRING([--enable-alloc-nonregional],[ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), , ) if test x_$enable_alloc_nonregional = x_yes; then AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) @@ -586,7 +586,7 @@ if test "$on_mingw" = "yes"; then ])], AC_MSG_RESULT(yes) AC_DEFINE(HAVE_WINDOWS_THREADS, 1, [Using Windows threads]) -, +, AC_MSG_RESULT(no) ) @@ -597,7 +597,7 @@ else # check this first, so that the pthread lib does not get linked in via # libssl or libpython, and thus distorts the tests, and we end up using # the non-threadsafe C libraries. -AC_ARG_WITH(pthreads, AS_HELP_STRING([--with-pthreads],[use pthreads library, or --without-pthreads to disable threading support.]), +AC_ARG_WITH(pthreads, AS_HELP_STRING([--with-pthreads],[use pthreads library, or --without-pthreads to disable threading support.]), [ ],[ withval="yes" ]) ub_have_pthreads=no if test x_$withval != x_no; then @@ -624,7 +624,7 @@ int main(void) {return 0;} # first compile echo "$CC $CFLAGS -c conftest.c -o conftest.o" >&AS_MESSAGE_LOG_FD $CC $CFLAGS -c conftest.c -o conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD - if test $? = 0; then + if test $? = 0; then # then link echo "$CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest contest.o" >&AS_MESSAGE_LOG_FD $CC $CFLAGS -Werror $LDFLAGS $LIBS -o conftest conftest.o 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD @@ -645,7 +645,7 @@ int main(void) {return 0;} ]) fi -# check solaris thread library +# check solaris thread library AC_ARG_WITH(solaris-threads, AS_HELP_STRING([--with-solaris-threads],[use solaris native thread library.]), [ ],[ withval="no" ]) ub_have_sol_threads=no if test x_$withval != x_no; then @@ -659,8 +659,8 @@ if test x_$withval != x_no; then ACX_CHECK_COMPILER_FLAG(mt, [CFLAGS="$CFLAGS -mt"], [CFLAGS="$CFLAGS -D_REENTRANT"]) ub_have_sol_threads=yes - ] , [ - AC_MSG_ERROR([no solaris threads found.]) + ] , [ + AC_MSG_ERROR([no solaris threads found.]) ]) fi fi @@ -1093,7 +1093,7 @@ int load_gost_id(void) EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth); return gost_id; } -int main(void) { +int main(void) { EVP_MD_CTX* ctx; const EVP_MD* md; unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */ @@ -1537,7 +1537,7 @@ if test x_$enable_fully_static = x_yes; then fi # set lock checking if requested -AC_ARG_ENABLE(lock_checks, AS_HELP_STRING([--enable-lock-checks],[ enable to check lock and unlock calls, for debug purposes ]), +AC_ARG_ENABLE(lock_checks, AS_HELP_STRING([--enable-lock-checks],[ enable to check lock and unlock calls, for debug purposes ]), , ) if test x_$enable_lock_checks = x_yes; then AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) @@ -1988,11 +1988,11 @@ AC_ARG_WITH(libunbound-only, AS_HELP_STRING([--with-libunbound-only],[do not bui fi ]) if test $ALLTARGET = "alltargets"; then - if test $USE_NSS = "yes"; then - AC_MSG_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) + if test $USE_NSS = "yes"; then + AC_MSG_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) fi if test $USE_NETTLE = "yes"; then - AC_MSG_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) + AC_MSG_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) fi fi @@ -2003,7 +2003,7 @@ ACX_STRIP_EXT_FLAGS if test -n "$LATE_LDFLAGS"; then LDFLAGS="$LATE_LDFLAGS $LDFLAGS" fi -# remove start spaces +# remove start spaces LDFLAGS=`echo "$LDFLAGS"|sed -e 's/^ *//'` LIBS=`echo "$LIBS"|sed -e 's/^ *//'` diff --git a/daemon/remote.c b/daemon/remote.c index 309d46ae9..08c503839 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -4,22 +4,22 @@ * Copyright (c) 2008, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -38,7 +38,7 @@ * * This file contains the remote control functionality for the daemon. * The remote control can be performed using either the commandline - * unbound-control tool, or a TLS capable web browser. + * unbound-control tool, or a TLS capable web browser. * The channel is secured using TLSv1, and certificates. * Both the server and the client(control tool) have their own keys. */ @@ -108,7 +108,7 @@ /** subtract timers and the values do not overflow or become negative */ static void -timeval_subtract(struct timeval* d, const struct timeval* end, +timeval_subtract(struct timeval* d, const struct timeval* end, const struct timeval* start) { #ifndef S_SPLINT_S @@ -201,7 +201,7 @@ remote_setup_ctx(struct daemon_remote* rc, struct config_file* cfg) struct daemon_remote* daemon_remote_create(struct config_file* cfg) { - struct daemon_remote* rc = (struct daemon_remote*)calloc(1, + struct daemon_remote* rc = (struct daemon_remote*)calloc(1, sizeof(*rc)); if(!rc) { log_err("out of memory in daemon_remote_create"); @@ -410,7 +410,7 @@ accept_open(struct daemon_remote* rc, int fd) n->next = rc->accept_list; rc->accept_list = n; /* open commpt */ - n->com = comm_point_create_raw(rc->worker->base, fd, 0, + n->com = comm_point_create_raw(rc->worker->base, fd, 0, &remote_accept_callback, rc); if(!n->com) return 0; @@ -419,7 +419,7 @@ accept_open(struct daemon_remote* rc, int fd) return 1; } -int daemon_remote_open_accept(struct daemon_remote* rc, +int daemon_remote_open_accept(struct daemon_remote* rc, struct listen_port* ports, struct worker* worker) { struct listen_port* p; @@ -437,7 +437,7 @@ void daemon_remote_stop_accept(struct daemon_remote* rc) { struct listen_list* p; for(p=rc->accept_list; p; p=p->next) { - comm_point_stop_listening(p->com); + comm_point_stop_listening(p->com); } } @@ -445,11 +445,11 @@ void daemon_remote_start_accept(struct daemon_remote* rc) { struct listen_list* p; for(p=rc->accept_list; p; p=p->next) { - comm_point_start_listening(p->com, -1, -1); + comm_point_start_listening(p->com, -1, -1); } } -int remote_accept_callback(struct comm_point* c, void* arg, int err, +int remote_accept_callback(struct comm_point* c, void* arg, int err, struct comm_reply* ATTR_UNUSED(rep)) { struct daemon_remote* rc = (struct daemon_remote*)arg; @@ -481,7 +481,7 @@ int remote_accept_callback(struct comm_point* c, void* arg, int err, } n->fd = newfd; /* start in reading state */ - n->c = comm_point_create_raw(rc->worker->base, newfd, 0, + n->c = comm_point_create_raw(rc->worker->base, newfd, 0, &remote_control_callback, n); if(!n->c) { log_err("out of memory"); @@ -521,7 +521,7 @@ int remote_accept_callback(struct comm_point* c, void* arg, int err, rc->busy_list = n; rc->active ++; - /* perform the first nonblocking read already, for windows, + /* perform the first nonblocking read already, for windows, * so it can return wouldblock. could be faster too. */ (void)remote_control_callback(n->c, n, NETEVENT_NOERROR, NULL); return 0; @@ -558,7 +558,7 @@ int ssl_print_text(RES* res, const char* text) { int r; - if(!res) + if(!res) return 0; if(res->ssl) { ERR_clear_error(); @@ -660,7 +660,7 @@ static char* skipwhite(char* str) { /* EOS \0 is not a space */ - while( isspace((unsigned char)*str) ) + while( isspace((unsigned char)*str) ) str++; return str; } @@ -708,20 +708,20 @@ static int print_stats(RES* ssl, const char* nm, struct ub_stats_info* s) { struct timeval sumwait, avg; - if(!ssl_printf(ssl, "%s.num.queries"SQ"%lu\n", nm, + if(!ssl_printf(ssl, "%s.num.queries"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries)) return 0; if(!ssl_printf(ssl, "%s.num.queries_ip_ratelimited"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries_ip_ratelimited)) return 0; - if(!ssl_printf(ssl, "%s.num.cachehits"SQ"%lu\n", nm, - (unsigned long)(s->svr.num_queries + if(!ssl_printf(ssl, "%s.num.cachehits"SQ"%lu\n", nm, + (unsigned long)(s->svr.num_queries - s->svr.num_queries_missed_cache))) return 0; - if(!ssl_printf(ssl, "%s.num.cachemiss"SQ"%lu\n", nm, + if(!ssl_printf(ssl, "%s.num.cachemiss"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries_missed_cache)) return 0; - if(!ssl_printf(ssl, "%s.num.prefetch"SQ"%lu\n", nm, + if(!ssl_printf(ssl, "%s.num.prefetch"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries_prefetch)) return 0; if(!ssl_printf(ssl, "%s.num.expired"SQ"%lu\n", nm, (unsigned long)s->svr.ans_expired)) return 0; - if(!ssl_printf(ssl, "%s.num.recursivereplies"SQ"%lu\n", nm, + if(!ssl_printf(ssl, "%s.num.recursivereplies"SQ"%lu\n", nm, (unsigned long)s->mesh_replies_sent)) return 0; #ifdef USE_DNSCRYPT if(!ssl_printf(ssl, "%s.num.dnscrypt.crypted"SQ"%lu\n", nm, @@ -755,7 +755,7 @@ print_stats(RES* ssl, const char* nm, struct ub_stats_info* s) timeval_divide(&avg, &sumwait, s->mesh_replies_sent); if(!ssl_printf(ssl, "%s.recursion.time.avg"SQ ARG_LL "d.%6.6d\n", nm, (long long)avg.tv_sec, (int)avg.tv_usec)) return 0; - if(!ssl_printf(ssl, "%s.recursion.time.median"SQ"%g\n", nm, + if(!ssl_printf(ssl, "%s.recursion.time.median"SQ"%g\n", nm, s->mesh_time_median)) return 0; if(!ssl_printf(ssl, "%s.tcpusage"SQ"%lu\n", nm, (unsigned long)s->svr.tcp_accept_usage)) return 0; @@ -780,7 +780,7 @@ print_longnum(RES* ssl, const char* desc, size_t x) /* more than a Gb */ size_t front = x / (size_t)1000000; size_t back = x % (size_t)1000000; - return ssl_printf(ssl, "%s%u%6.6u\n", desc, + return ssl_printf(ssl, "%s%u%6.6u\n", desc, (unsigned)front, (unsigned)back); } else { return ssl_printf(ssl, "%s%lu\n", desc, (unsigned long)x); @@ -880,11 +880,11 @@ print_uptime(RES* ssl, struct worker* worker, int reset) timeval_subtract(&dt, &now, &worker->daemon->time_last_stat); if(reset) worker->daemon->time_last_stat = now; - if(!ssl_printf(ssl, "time.now"SQ ARG_LL "d.%6.6d\n", + if(!ssl_printf(ssl, "time.now"SQ ARG_LL "d.%6.6d\n", (long long)now.tv_sec, (unsigned)now.tv_usec)) return 0; - if(!ssl_printf(ssl, "time.up"SQ ARG_LL "d.%6.6d\n", + if(!ssl_printf(ssl, "time.up"SQ ARG_LL "d.%6.6d\n", (long long)up.tv_sec, (unsigned)up.tv_usec)) return 0; - if(!ssl_printf(ssl, "time.elapsed"SQ ARG_LL "d.%6.6d\n", + if(!ssl_printf(ssl, "time.elapsed"SQ ARG_LL "d.%6.6d\n", (long long)dt.tv_sec, (unsigned)dt.tv_usec)) return 0; return 1; } @@ -902,7 +902,7 @@ print_hist(RES* ssl, struct ub_stats_info* s) } timehist_import(hist, s->svr.hist, NUM_BUCKETS_HIST); for(i=0; inum; i++) { - if(!ssl_printf(ssl, + if(!ssl_printf(ssl, "histogram.%6.6d.%6.6d.to.%6.6d.%6.6d=%lu\n", (int)hist->buckets[i].lower.tv_sec, (int)hist->buckets[i].lower.tv_usec, @@ -945,11 +945,11 @@ print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) } else { snprintf(nm, sizeof(nm), "TYPE%d", i); } - if(!ssl_printf(ssl, "num.query.type.%s"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.type.%s"SQ"%lu\n", nm, (unsigned long)s->svr.qtype[i])) return 0; } if(!inhibit_zero || s->svr.qtype_big) { - if(!ssl_printf(ssl, "num.query.type.other"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.type.other"SQ"%lu\n", (unsigned long)s->svr.qtype_big)) return 0; } /* CLASS */ @@ -962,11 +962,11 @@ print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) } else { snprintf(nm, sizeof(nm), "CLASS%d", i); } - if(!ssl_printf(ssl, "num.query.class.%s"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.class.%s"SQ"%lu\n", nm, (unsigned long)s->svr.qclass[i])) return 0; } if(!inhibit_zero || s->svr.qclass_big) { - if(!ssl_printf(ssl, "num.query.class.other"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.class.other"SQ"%lu\n", (unsigned long)s->svr.qclass_big)) return 0; } /* OPCODE */ @@ -979,44 +979,44 @@ print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) } else { snprintf(nm, sizeof(nm), "OPCODE%d", i); } - if(!ssl_printf(ssl, "num.query.opcode.%s"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.opcode.%s"SQ"%lu\n", nm, (unsigned long)s->svr.qopcode[i])) return 0; } /* transport */ - if(!ssl_printf(ssl, "num.query.tcp"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.tcp"SQ"%lu\n", (unsigned long)s->svr.qtcp)) return 0; - if(!ssl_printf(ssl, "num.query.tcpout"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.tcpout"SQ"%lu\n", (unsigned long)s->svr.qtcp_outgoing)) return 0; if(!ssl_printf(ssl, "num.query.udpout"SQ"%lu\n", (unsigned long)s->svr.qudp_outgoing)) return 0; - if(!ssl_printf(ssl, "num.query.tls"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.tls"SQ"%lu\n", (unsigned long)s->svr.qtls)) return 0; - if(!ssl_printf(ssl, "num.query.tls.resume"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.tls.resume"SQ"%lu\n", (unsigned long)s->svr.qtls_resume)) return 0; - if(!ssl_printf(ssl, "num.query.ipv6"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.ipv6"SQ"%lu\n", (unsigned long)s->svr.qipv6)) return 0; if(!ssl_printf(ssl, "num.query.https"SQ"%lu\n", (unsigned long)s->svr.qhttps)) return 0; /* flags */ - if(!ssl_printf(ssl, "num.query.flags.QR"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.QR"SQ"%lu\n", (unsigned long)s->svr.qbit_QR)) return 0; - if(!ssl_printf(ssl, "num.query.flags.AA"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.AA"SQ"%lu\n", (unsigned long)s->svr.qbit_AA)) return 0; - if(!ssl_printf(ssl, "num.query.flags.TC"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.TC"SQ"%lu\n", (unsigned long)s->svr.qbit_TC)) return 0; - if(!ssl_printf(ssl, "num.query.flags.RD"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.RD"SQ"%lu\n", (unsigned long)s->svr.qbit_RD)) return 0; - if(!ssl_printf(ssl, "num.query.flags.RA"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.RA"SQ"%lu\n", (unsigned long)s->svr.qbit_RA)) return 0; - if(!ssl_printf(ssl, "num.query.flags.Z"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.Z"SQ"%lu\n", (unsigned long)s->svr.qbit_Z)) return 0; - if(!ssl_printf(ssl, "num.query.flags.AD"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.AD"SQ"%lu\n", (unsigned long)s->svr.qbit_AD)) return 0; - if(!ssl_printf(ssl, "num.query.flags.CD"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.flags.CD"SQ"%lu\n", (unsigned long)s->svr.qbit_CD)) return 0; - if(!ssl_printf(ssl, "num.query.edns.present"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.edns.present"SQ"%lu\n", (unsigned long)s->svr.qEDNS)) return 0; - if(!ssl_printf(ssl, "num.query.edns.DO"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.edns.DO"SQ"%lu\n", (unsigned long)s->svr.qEDNS_DO)) return 0; /* RCODE */ @@ -1030,31 +1030,31 @@ print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) } else { snprintf(nm, sizeof(nm), "RCODE%d", i); } - if(!ssl_printf(ssl, "num.answer.rcode.%s"SQ"%lu\n", + if(!ssl_printf(ssl, "num.answer.rcode.%s"SQ"%lu\n", nm, (unsigned long)s->svr.ans_rcode[i])) return 0; } if(!inhibit_zero || s->svr.ans_rcode_nodata) { - if(!ssl_printf(ssl, "num.answer.rcode.nodata"SQ"%lu\n", + if(!ssl_printf(ssl, "num.answer.rcode.nodata"SQ"%lu\n", (unsigned long)s->svr.ans_rcode_nodata)) return 0; } /* iteration */ - if(!ssl_printf(ssl, "num.query.ratelimited"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.ratelimited"SQ"%lu\n", (unsigned long)s->svr.queries_ratelimited)) return 0; /* validation */ - if(!ssl_printf(ssl, "num.answer.secure"SQ"%lu\n", + if(!ssl_printf(ssl, "num.answer.secure"SQ"%lu\n", (unsigned long)s->svr.ans_secure)) return 0; - if(!ssl_printf(ssl, "num.answer.bogus"SQ"%lu\n", + if(!ssl_printf(ssl, "num.answer.bogus"SQ"%lu\n", (unsigned long)s->svr.ans_bogus)) return 0; - if(!ssl_printf(ssl, "num.rrset.bogus"SQ"%lu\n", + if(!ssl_printf(ssl, "num.rrset.bogus"SQ"%lu\n", (unsigned long)s->svr.rrset_bogus)) return 0; - if(!ssl_printf(ssl, "num.query.aggressive.NOERROR"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.aggressive.NOERROR"SQ"%lu\n", (unsigned long)s->svr.num_neg_cache_noerror)) return 0; - if(!ssl_printf(ssl, "num.query.aggressive.NXDOMAIN"SQ"%lu\n", + if(!ssl_printf(ssl, "num.query.aggressive.NXDOMAIN"SQ"%lu\n", (unsigned long)s->svr.num_neg_cache_nxdomain)) return 0; /* threat detection */ - if(!ssl_printf(ssl, "unwanted.queries"SQ"%lu\n", + if(!ssl_printf(ssl, "unwanted.queries"SQ"%lu\n", (unsigned long)s->svr.unwanted_queries)) return 0; - if(!ssl_printf(ssl, "unwanted.replies"SQ"%lu\n", + if(!ssl_printf(ssl, "unwanted.replies"SQ"%lu\n", (unsigned long)s->svr.unwanted_replies)) return 0; /* cache counts */ if(!ssl_printf(ssl, "msg.cache.count"SQ"%u\n", @@ -1124,7 +1124,7 @@ do_stats(RES* ssl, struct worker* worker, int reset) } /* print the thread statistics */ total.mesh_time_median /= (double)daemon->num; - if(!print_stats(ssl, "total", &total)) + if(!print_stats(ssl, "total", &total)) return; if(!print_uptime(ssl, worker, reset)) return; @@ -1213,7 +1213,7 @@ perform_zone_add(RES* ssl, struct local_zones* zones, char* arg) return 0; } lock_rw_wrlock(&zones->lock); - if((z=local_zones_find(zones, nm, nmlen, + if((z=local_zones_find(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN))) { /* already present in tree */ lock_rw_wrlock(&z->lock); @@ -1223,7 +1223,7 @@ perform_zone_add(RES* ssl, struct local_zones* zones, char* arg) lock_rw_unlock(&zones->lock); return 1; } - if(!local_zones_add_zone(zones, nm, nmlen, + if(!local_zones_add_zone(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN, t)) { lock_rw_unlock(&zones->lock); ssl_printf(ssl, "error out of memory\n"); @@ -1272,7 +1272,7 @@ perform_zone_remove(RES* ssl, struct local_zones* zones, char* arg) if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) return 0; lock_rw_wrlock(&zones->lock); - if((z=local_zones_find(zones, nm, nmlen, + if((z=local_zones_find(zones, nm, nmlen, nmlabs, LDNS_RR_CLASS_IN))) { /* present in tree */ local_zones_del_zone(zones, z); @@ -1614,7 +1614,7 @@ do_flush_type(RES* ssl, struct worker* worker, char* arg) return; t = sldns_get_rr_type_by_name(arg2); do_cache_remove(worker, nm, nmlen, t, LDNS_RR_CLASS_IN); - + free(nm); send_ok(ssl); } @@ -1724,7 +1724,7 @@ zone_del_rrset(struct lruhash_entry* e, void* arg) struct del_info* inf = (struct del_info*)arg; struct ub_packed_rrset_key* k = (struct ub_packed_rrset_key*)e->key; if(dname_subdomain_c(k->rk.dname, inf->name)) { - struct packed_rrset_data* d = + struct packed_rrset_data* d = (struct packed_rrset_data*)e->data; if(d->ttl > inf->expired) { d->ttl = inf->expired; @@ -1788,21 +1788,21 @@ do_flush_zone(RES* ssl, struct worker* worker, char* arg) inf.num_rrsets = 0; inf.num_msgs = 0; inf.num_keys = 0; - slabhash_traverse(&worker->env.rrset_cache->table, 1, + slabhash_traverse(&worker->env.rrset_cache->table, 1, &zone_del_rrset, &inf); slabhash_traverse(worker->env.msg_cache, 1, &zone_del_msg, &inf); /* and validator cache */ if(worker->env.key_cache) { - slabhash_traverse(worker->env.key_cache->slab, 1, + slabhash_traverse(worker->env.key_cache->slab, 1, &zone_del_kcache, &inf); } free(nm); (void)ssl_printf(ssl, "ok removed %lu rrsets, %lu messages " - "and %lu key entries\n", (unsigned long)inf.num_rrsets, + "and %lu key entries\n", (unsigned long)inf.num_rrsets, (unsigned long)inf.num_msgs, (unsigned long)inf.num_keys); } @@ -1857,19 +1857,19 @@ do_flush_bogus(RES* ssl, struct worker* worker) inf.num_rrsets = 0; inf.num_msgs = 0; inf.num_keys = 0; - slabhash_traverse(&worker->env.rrset_cache->table, 1, + slabhash_traverse(&worker->env.rrset_cache->table, 1, &bogus_del_rrset, &inf); slabhash_traverse(worker->env.msg_cache, 1, &bogus_del_msg, &inf); /* and validator cache */ if(worker->env.key_cache) { - slabhash_traverse(worker->env.key_cache->slab, 1, + slabhash_traverse(worker->env.key_cache->slab, 1, &bogus_del_kcache, &inf); } (void)ssl_printf(ssl, "ok removed %lu rrsets, %lu messages " - "and %lu key entries\n", (unsigned long)inf.num_rrsets, + "and %lu key entries\n", (unsigned long)inf.num_rrsets, (unsigned long)inf.num_msgs, (unsigned long)inf.num_keys); } @@ -1932,19 +1932,19 @@ do_flush_negative(RES* ssl, struct worker* worker) inf.num_rrsets = 0; inf.num_msgs = 0; inf.num_keys = 0; - slabhash_traverse(&worker->env.rrset_cache->table, 1, + slabhash_traverse(&worker->env.rrset_cache->table, 1, &negative_del_rrset, &inf); slabhash_traverse(worker->env.msg_cache, 1, &negative_del_msg, &inf); /* and validator cache */ if(worker->env.key_cache) { - slabhash_traverse(worker->env.key_cache->slab, 1, + slabhash_traverse(worker->env.key_cache->slab, 1, &negative_del_kcache, &inf); } (void)ssl_printf(ssl, "ok removed %lu rrsets, %lu messages " - "and %lu key entries\n", (unsigned long)inf.num_rrsets, + "and %lu key entries\n", (unsigned long)inf.num_rrsets, (unsigned long)inf.num_msgs, (unsigned long)inf.num_keys); } @@ -1969,7 +1969,7 @@ do_flush_name(RES* ssl, struct worker* w, char* arg) do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_NAPTR, LDNS_RR_CLASS_IN); do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_SVCB, LDNS_RR_CLASS_IN); do_cache_remove(w, nm, nmlen, LDNS_RR_TYPE_HTTPS, LDNS_RR_CLASS_IN); - + free(nm); send_ok(ssl); } @@ -2339,7 +2339,7 @@ do_status(RES* ssl, struct worker* worker) uptime = (time_t)time(NULL) - (time_t)worker->daemon->time_boot.tv_sec; if(!ssl_printf(ssl, "uptime: " ARG_LL "d seconds\n", (long long)uptime)) return; - if(!ssl_printf(ssl, "options:%s%s%s%s\n" , + if(!ssl_printf(ssl, "options:%s%s%s%s\n" , (worker->daemon->reuseport?" reuseport":""), (worker->daemon->rc->accept_list?" control":""), (worker->daemon->rc->accept_list && worker->daemon->rc->use_cert?"(ssl)":""), @@ -2353,7 +2353,7 @@ do_status(RES* ssl, struct worker* worker) /** get age for the mesh state */ static void -get_mesh_age(struct mesh_state* m, char* buf, size_t len, +get_mesh_age(struct mesh_state* m, char* buf, size_t len, struct module_env* env) { if(m->reply_list) { @@ -2372,7 +2372,7 @@ get_mesh_age(struct mesh_state* m, char* buf, size_t len, /** get status of a mesh state */ static void -get_mesh_status(struct mesh_area* mesh, struct mesh_state* m, +get_mesh_status(struct mesh_area* mesh, struct mesh_state* m, char* buf, size_t len) { enum module_ext_state s = m->s.ext_state[m->s.curmod]; @@ -2394,7 +2394,7 @@ get_mesh_status(struct mesh_area* mesh, struct mesh_state* m, snprintf(buf, len, " "); l = strlen(buf); buf += l; len -= l; - addr_to_str(&e->qsent->addr, e->qsent->addrlen, + addr_to_str(&e->qsent->addr, e->qsent->addrlen, buf, len); l = strlen(buf); buf += l; len -= l; @@ -2447,7 +2447,7 @@ do_dump_requestlist(RES* ssl, struct worker* worker) dname_str(m->s.qinfo.qname, buf); get_mesh_age(m, timebuf, sizeof(timebuf), &worker->env); get_mesh_status(mesh, m, statbuf, sizeof(statbuf)); - if(!ssl_printf(ssl, "%3d %4s %2s %s %s %s\n", + if(!ssl_printf(ssl, "%3d %4s %2s %s %s %s\n", num, (t?t:"TYPE??"), (c?c:"CLASS??"), buf, timebuf, statbuf)) { free(t); @@ -2637,7 +2637,7 @@ do_auth_zone_transfer(RES* ssl, struct worker* worker, char* arg) free(nm); send_ok(ssl); } - + /** do the set_option command */ static void do_set_option(RES* ssl, struct worker* worker, char* arg) @@ -2775,7 +2775,7 @@ do_list_local_zones(RES* ssl, struct local_zones* zones) RBTREE_FOR(z, struct local_zone*, &zones->ztree) { lock_rw_rdlock(&z->lock); dname_str(z->name, buf); - if(!ssl_printf(ssl, "%s %s\n", buf, + if(!ssl_printf(ssl, "%s %s\n", buf, local_zone_type2str(z->type))) { /* failure to print */ lock_rw_unlock(&z->lock); @@ -3004,7 +3004,7 @@ static void distribute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd) { int i; - if(!cmd || !ssl) + if(!cmd || !ssl) return; /* skip i=0 which is me */ for(i=1; iworker->daemon->num; i++) { @@ -3027,7 +3027,7 @@ cmdcmp(char* p, const char* cmd, size_t len) /** execute a remote control command */ static void -execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, +execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, struct worker* worker) { char* p = skipwhite(cmd); @@ -3211,7 +3211,7 @@ execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, } } -void +void daemon_remote_exec(struct worker* worker) { /* read the cmd string */ @@ -3320,7 +3320,7 @@ remote_handshake_later(struct daemon_remote* rc, struct rc_state* s, return 0; } -int remote_control_callback(struct comm_point* c, void* arg, int err, +int remote_control_callback(struct comm_point* c, void* arg, int err, struct comm_reply* ATTR_UNUSED(rep)) { RES res; @@ -3328,7 +3328,7 @@ int remote_control_callback(struct comm_point* c, void* arg, int err, struct daemon_remote* rc = s->rc; int r; if(err != NETEVENT_NOERROR) { - if(err==NETEVENT_TIMEOUT) + if(err==NETEVENT_TIMEOUT) log_err("remote control timed out"); clean_point(rc, s); return 0; diff --git a/daemon/stats.c b/daemon/stats.c index c00c16be3..4c7fcbe5a 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -116,8 +116,8 @@ void server_stats_log(struct ub_server_stats* stats, struct worker* worker, log_info("server stats for thread %d: %u queries, " "%u answers from cache, %u recursions, %u prefetch, %u rejected by " "ip ratelimiting", - threadnum, (unsigned)stats->num_queries, - (unsigned)(stats->num_queries - + threadnum, (unsigned)stats->num_queries, + (unsigned)(stats->num_queries - stats->num_queries_missed_cache), (unsigned)stats->num_queries_missed_cache, (unsigned)stats->num_queries_prefetch, @@ -279,7 +279,7 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) s->svr.ans_rcode[i] += (long long)worker->env.mesh->ans_rcode[i]; for(i=0; isvr.rpz_action[i] += (long long)worker->env.mesh->rpz_action[i]; - timehist_export(worker->env.mesh->histogram, s->svr.hist, + timehist_export(worker->env.mesh->histogram, s->svr.hist, NUM_BUCKETS_HIST); /* values from outside network */ s->svr.unwanted_replies = (long long)worker->back->unwanted_replies; @@ -421,7 +421,7 @@ void server_stats_reply(struct worker* worker, int reset) struct ub_stats_info s; server_stats_compile(worker, &s, reset); verbose(VERB_ALGO, "write stats replymsg"); - if(!tube_write_msg(worker->daemon->workers[0]->cmd, + if(!tube_write_msg(worker->daemon->workers[0]->cmd, (uint8_t*)&s, sizeof(s), 0)) fatal_exit("could not write stat values over cmd channel"); } @@ -516,7 +516,7 @@ void server_stats_insquery(struct ub_server_stats* stats, struct comm_point* c, if(c->ssl != NULL) { stats->qtls++; #ifdef HAVE_SSL - if(SSL_session_reused(c->ssl)) + if(SSL_session_reused(c->ssl)) stats->qtls_resume++; #endif if(c->type == comm_http) diff --git a/daemon/worker.c b/daemon/worker.c index 99dcf9940..a4d6b8247 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -112,7 +112,7 @@ /** Report on memory usage by this thread and global */ static void -worker_mem_report(struct worker* ATTR_UNUSED(worker), +worker_mem_report(struct worker* ATTR_UNUSED(worker), struct serviced_query* ATTR_UNUSED(cur_serv)) { #ifdef UNBOUND_ALLOC_STATS @@ -125,7 +125,7 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), #ifdef CLIENT_SUBNET size_t subnet = 0; #endif /* CLIENT_SUBNET */ - if(verbosity < VERB_ALGO) + if(verbosity < VERB_ALGO) return; front = listen_get_mem(worker->front); back = outnet_get_mem(worker->back); @@ -154,10 +154,10 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), (&worker->env, i); } me = sizeof(*worker) + sizeof(*worker->base) + sizeof(*worker->comsig) - + comm_point_get_mem(worker->cmd_com) - + sizeof(worker->rndstate) - + regional_get_mem(worker->scratchpad) - + sizeof(*worker->env.scratch_buffer) + + comm_point_get_mem(worker->cmd_com) + + sizeof(worker->rndstate) + + regional_get_mem(worker->scratchpad) + + sizeof(*worker->env.scratch_buffer) + sldns_buffer_capacity(worker->env.scratch_buffer) + forwards_get_mem(worker->env.fwds) + hints_get_mem(worker->env.hints); @@ -172,7 +172,7 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), log_info("Memory conditions: %u front=%u back=%u mesh=%u msg=%u " "rrset=%u infra=%u iter=%u val=%u subnet=%u anchors=%u " "alloccache=%u globalalloccache=%u me=%u", - (unsigned)total, (unsigned)front, (unsigned)back, + (unsigned)total, (unsigned)front, (unsigned)back, (unsigned)mesh, (unsigned)msg, (unsigned)rrset, (unsigned)infra, (unsigned)iter, (unsigned)val, (unsigned)subnet, (unsigned)anch, (unsigned)ac, @@ -181,13 +181,13 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), log_info("Memory conditions: %u front=%u back=%u mesh=%u msg=%u " "rrset=%u infra=%u iter=%u val=%u anchors=%u " "alloccache=%u globalalloccache=%u me=%u", - (unsigned)total, (unsigned)front, (unsigned)back, - (unsigned)mesh, (unsigned)msg, (unsigned)rrset, + (unsigned)total, (unsigned)front, (unsigned)back, + (unsigned)mesh, (unsigned)msg, (unsigned)rrset, (unsigned)infra, (unsigned)iter, (unsigned)val, (unsigned)anch, (unsigned)ac, (unsigned)superac, (unsigned)me); #endif /* CLIENT_SUBNET */ log_info("Total heap memory estimate: %u total-alloc: %u " - "total-free: %u", (unsigned)total, + "total-free: %u", (unsigned)total, (unsigned)unbound_mem_alloc, (unsigned)unbound_mem_freed); #else /* no UNBOUND_ALLOC_STATS */ size_t val = 0; @@ -227,7 +227,7 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), #endif /* UNBOUND_ALLOC_STATS */ } -void +void worker_send_cmd(struct worker* worker, enum worker_commands cmd) { uint32_t c = (uint32_t)htonl(cmd); @@ -236,8 +236,8 @@ worker_send_cmd(struct worker* worker, enum worker_commands cmd) } } -int -worker_handle_service_reply(struct comm_point* c, void* arg, int error, +int +worker_handle_service_reply(struct comm_point* c, void* arg, int error, struct comm_reply* reply_info) { struct outbound_entry* e = (struct outbound_entry*)arg; @@ -252,13 +252,13 @@ worker_handle_service_reply(struct comm_point* c, void* arg, int error, } /* sanity check. */ if(!LDNS_QR_WIRE(sldns_buffer_begin(c->buffer)) - || LDNS_OPCODE_WIRE(sldns_buffer_begin(c->buffer)) != + || LDNS_OPCODE_WIRE(sldns_buffer_begin(c->buffer)) != LDNS_PACKET_QUERY || LDNS_QDCOUNT(sldns_buffer_begin(c->buffer)) > 1) { /* error becomes timeout for the module as if this reply * never arrived. */ verbose(VERB_ALGO, "worker: bad reply handled as timeout"); - mesh_report_reply(worker->env.mesh, e, reply_info, + mesh_report_reply(worker->env.mesh, e, reply_info, NETEVENT_TIMEOUT); worker_mem_report(worker, sq); return 0; @@ -293,14 +293,14 @@ worker_err_ratelimit(struct worker* worker, int err) * @param worker: parameters for checking. * @return error code, 0 OK, or -1 discard. */ -static int +static int worker_check_request(sldns_buffer* pkt, struct worker* worker) { if(sldns_buffer_limit(pkt) < LDNS_HEADER_SIZE) { verbose(VERB_QUERY, "request too short, discarded"); return -1; } - if(sldns_buffer_limit(pkt) > NORMAL_UDP_SIZE && + if(sldns_buffer_limit(pkt) > NORMAL_UDP_SIZE && worker->daemon->cfg->harden_large_queries) { verbose(VERB_QUERY, "request too large, discarded"); return -1; @@ -316,36 +316,36 @@ worker_check_request(sldns_buffer* pkt, struct worker* worker) } if(LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_QUERY && LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_NOTIFY) { - verbose(VERB_QUERY, "request unknown opcode %d", + verbose(VERB_QUERY, "request unknown opcode %d", LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_NOTIMPL); } if(LDNS_QDCOUNT(sldns_buffer_begin(pkt)) != 1) { - verbose(VERB_QUERY, "request wrong nr qd=%d", + verbose(VERB_QUERY, "request wrong nr qd=%d", LDNS_QDCOUNT(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); } - if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 0 && + if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 0 && (LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 1 || LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_NOTIFY)) { - verbose(VERB_QUERY, "request wrong nr an=%d", + verbose(VERB_QUERY, "request wrong nr an=%d", LDNS_ANCOUNT(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); } if(LDNS_NSCOUNT(sldns_buffer_begin(pkt)) != 0) { - verbose(VERB_QUERY, "request wrong nr ns=%d", + verbose(VERB_QUERY, "request wrong nr ns=%d", LDNS_NSCOUNT(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); } if(LDNS_ARCOUNT(sldns_buffer_begin(pkt)) > 1) { - verbose(VERB_QUERY, "request wrong nr ar=%d", + verbose(VERB_QUERY, "request wrong nr ar=%d", LDNS_ARCOUNT(sldns_buffer_begin(pkt))); return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); } return 0; } -void +void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), uint8_t* msg, size_t len, int error, void* arg) { @@ -388,7 +388,7 @@ worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), uint8_t* msg, /** check if a delegation is secure */ static enum sec_status -check_delegation_secure(struct reply_info *rep) +check_delegation_secure(struct reply_info *rep) { /* return smallest security status */ size_t i; @@ -424,10 +424,10 @@ deleg_remove_nonsecure_additional(struct reply_info* rep) s = ((struct packed_rrset_data*)rep->rrsets[i]->entry.data) ->security; if(s != sec_status_secure) { - memmove(rep->rrsets+i, rep->rrsets+i+1, - sizeof(struct ub_packed_rrset_key*)* + memmove(rep->rrsets+i, rep->rrsets+i+1, + sizeof(struct ub_packed_rrset_key*)* (rep->rrset_count - i - 1)); - rep->ar_numrrsets--; + rep->ar_numrrsets--; rep->rrset_count--; i--; } @@ -437,15 +437,15 @@ deleg_remove_nonsecure_additional(struct reply_info* rep) /** answer nonrecursive query from the cache */ static int answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, - uint16_t id, uint16_t flags, struct comm_reply* repinfo, + uint16_t id, uint16_t flags, struct comm_reply* repinfo, struct edns_data* edns) { /* for a nonrecursive query return either: * o an error (servfail; we try to avoid this) * o a delegation (closest we have; this routine tries that) - * o the answer (checked by answer_from_cache) + * o the answer (checked by answer_from_cache) * - * So, grab a delegation from the rrset cache. + * So, grab a delegation from the rrset cache. * Then check if it needs validation, if so, this routine fails, * so that iterator can prime and validator can verify rrsets. */ @@ -457,7 +457,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, struct dns_msg *msg = NULL; struct delegpt *dp; - dp = dns_cache_find_delegation(&worker->env, qinfo->qname, + dp = dns_cache_find_delegation(&worker->env, qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, worker->scratchpad, &msg, timenow, 0, NULL, 0); if(!dp) { /* no delegation, need to reprime */ @@ -470,7 +470,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, if(must_validate) { switch(check_delegation_secure(msg->rep)) { case sec_status_unchecked: - /* some rrsets have not been verified yet, go and + /* some rrsets have not been verified yet, go and * let validator do that */ return 0; case sec_status_bogus: @@ -490,7 +490,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, EDNS_OPT_LIST_APPEND_EDE(&edns->opt_list_out, worker->scratchpad, LDNS_EDE_DNSSEC_BOGUS, ""); } - error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, + error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); if(worker->stats.extended) { worker->stats.ans_bogus++; @@ -529,7 +529,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) edns->opt_list_inplace_cb_out = NULL; - error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, + error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); } if(worker->stats.extended) { @@ -763,7 +763,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, return 1; bail_out: - rrset_array_unlock_touch(worker->env.rrset_cache, + rrset_array_unlock_touch(worker->env.rrset_cache, worker->scratchpad, rep->ref, rep->rrset_count); return 0; } @@ -947,12 +947,12 @@ answer_chaos(struct worker* w, struct query_info* qinfo, struct config_file* cfg = w->env.cfg; if(qinfo->qtype != LDNS_RR_TYPE_ANY && qinfo->qtype != LDNS_RR_TYPE_TXT) return 0; - if(query_dname_compare(qinfo->qname, + if(query_dname_compare(qinfo->qname, (uint8_t*)"\002id\006server") == 0 || - query_dname_compare(qinfo->qname, + query_dname_compare(qinfo->qname, (uint8_t*)"\010hostname\004bind") == 0) { - if(cfg->hide_identity) + if(cfg->hide_identity) return 0; if(cfg->identity==NULL || cfg->identity[0]==0) { char buf[MAXHOSTNAMELEN+1]; @@ -967,12 +967,12 @@ answer_chaos(struct worker* w, struct query_info* qinfo, else chaos_replyonestr(pkt, cfg->identity, edns, w, repinfo); return 1; } - if(query_dname_compare(qinfo->qname, + if(query_dname_compare(qinfo->qname, (uint8_t*)"\007version\006server") == 0 || - query_dname_compare(qinfo->qname, + query_dname_compare(qinfo->qname, (uint8_t*)"\007version\004bind") == 0) { - if(cfg->hide_version) + if(cfg->hide_version) return 0; if(cfg->version==NULL || cfg->version[0]==0) chaos_replyonestr(pkt, PACKAGE_STRING, edns, w, repinfo); @@ -1131,7 +1131,7 @@ deny_refuse(struct comm_point* c, enum acl_access acl, return 1; } LDNS_QR_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_REFUSED); sldns_buffer_skip(c->buffer, (ssize_t)sizeof(uint16_t)); /* skip qtype */ @@ -1146,7 +1146,7 @@ deny_refuse(struct comm_point* c, enum acl_access acl, /* Skip through the RR records */ if(LDNS_ANCOUNT(sldns_buffer_begin(c->buffer)) != 0 || LDNS_NSCOUNT(sldns_buffer_begin(c->buffer)) != 0) { - if(!skip_pkt_rrs(c->buffer, + if(!skip_pkt_rrs(c->buffer, ((int)LDNS_ANCOUNT(sldns_buffer_begin(c->buffer)))+ ((int)LDNS_NSCOUNT(sldns_buffer_begin(c->buffer))))) { LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), @@ -1416,7 +1416,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } sldns_buffer_rewind(c->buffer); LDNS_QR_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_FORMERR); goto send_reply; } @@ -1425,21 +1425,21 @@ worker_handle_request(struct comm_point* c, void* arg, int error, addr_to_str(&repinfo->client_addr, repinfo->client_addrlen, ip, sizeof(ip)); log_query_in(ip, qinfo.qname, qinfo.qtype, qinfo.qclass); } - if(qinfo.qtype == LDNS_RR_TYPE_AXFR || + if(qinfo.qtype == LDNS_RR_TYPE_AXFR || qinfo.qtype == LDNS_RR_TYPE_IXFR) { verbose(VERB_ALGO, "worker request: refused zone transfer."); log_addr(VERB_CLIENT, "from", &repinfo->client_addr, repinfo->client_addrlen); sldns_buffer_rewind(c->buffer); LDNS_QR_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_REFUSED); if(worker->stats.extended) { worker->stats.qtype[qinfo.qtype]++; } goto send_reply; } - if(qinfo.qtype == LDNS_RR_TYPE_OPT || + if(qinfo.qtype == LDNS_RR_TYPE_OPT || qinfo.qtype == LDNS_RR_TYPE_TSIG || qinfo.qtype == LDNS_RR_TYPE_TKEY || qinfo.qtype == LDNS_RR_TYPE_MAILA || @@ -1454,7 +1454,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } sldns_buffer_rewind(c->buffer); LDNS_QR_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_FORMERR); if(worker->stats.extended) { worker->stats.qtype[qinfo.qtype]++; @@ -1523,10 +1523,10 @@ worker_handle_request(struct comm_point* c, void* arg, int error, repinfo->client_addrlen); LDNS_QR_SET(sldns_buffer_begin(c->buffer)); LDNS_TC_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_SERVFAIL); sldns_buffer_set_position(c->buffer, LDNS_HEADER_SIZE); - sldns_buffer_write_at(c->buffer, 4, + sldns_buffer_write_at(c->buffer, 4, (uint8_t*)"\0\0\0\0\0\0\0\0", 8); sldns_buffer_flip(c->buffer); regional_free_all(worker->scratchpad); @@ -1745,8 +1745,8 @@ lookup_cache: if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) { if(answer_norec_from_cache(worker, &qinfo, - *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), - sldns_buffer_read_u16_at(c->buffer, 2), repinfo, + *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + sldns_buffer_read_u16_at(c->buffer, 2), repinfo, &edns)) { regional_free_all(worker->scratchpad); goto send_reply; @@ -1825,10 +1825,10 @@ send_reply_rc: return rc; } -void +void worker_sighandler(int sig, void* arg) { - /* note that log, print, syscalls here give race conditions. + /* note that log, print, syscalls here give race conditions. * And cause hangups if the log-lock is held by the application. */ struct worker* worker = (struct worker*)arg; switch(sig) { @@ -1903,13 +1903,13 @@ void worker_probe_timer_cb(void* arg) comm_timer_set(worker->env.probe_timer, &tv); } -struct worker* +struct worker* worker_create(struct daemon* daemon, int id, int* ports, int n) { unsigned int seed; - struct worker* worker = (struct worker*)calloc(1, + struct worker* worker = (struct worker*)calloc(1, sizeof(struct worker)); - if(!worker) + if(!worker) return NULL; worker->numports = n; worker->ports = (int*)memdup(ports, sizeof(int)*n); @@ -1937,7 +1937,7 @@ worker_create(struct daemon* daemon, int id, int* ports, int n) } int -worker_init(struct worker* worker, struct config_file *cfg, +worker_init(struct worker* worker, struct config_file *cfg, struct listen_port* ports, int do_sigs) { #ifdef USE_DNSTAP @@ -1970,9 +1970,9 @@ worker_init(struct worker* worker, struct config_file *cfg, #endif ub_thread_sig_unblock(SIGTERM); #ifndef LIBEVENT_SIGNAL_PROBLEM - worker->comsig = comm_signal_create(worker->base, + worker->comsig = comm_signal_create(worker->base, worker_sighandler, worker); - if(!worker->comsig + if(!worker->comsig #ifdef SIGHUP || !comm_signal_bind(worker->comsig, SIGHUP) #endif @@ -1989,7 +1989,7 @@ worker_init(struct worker* worker, struct config_file *cfg, return 0; } #endif /* LIBEVENT_SIGNAL_PROBLEM */ - if(!daemon_remote_open_accept(worker->daemon->rc, + if(!daemon_remote_open_accept(worker->daemon->rc, worker->daemon->rc_ports, worker)) { worker_delete(worker); return 0; @@ -2023,8 +2023,8 @@ worker_init(struct worker* worker, struct config_file *cfg, return 0; } worker->back = outside_network_create(worker->base, - cfg->msg_buffer_size, (size_t)cfg->outgoing_num_ports, - cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, + cfg->msg_buffer_size, (size_t)cfg->outgoing_num_ports, + cfg->out_ifs, cfg->num_out_ifs, cfg->do_ip4, cfg->do_ip6, cfg->do_tcp?cfg->outgoing_num_tcp:0, cfg->ip_dscp, worker->daemon->env->infra_cache, worker->rndstate, cfg->use_caps_bits_for_id, worker->ports, worker->numports, @@ -2049,13 +2049,13 @@ worker_init(struct worker* worker, struct config_file *cfg, worker_delete(worker); return 0; } - worker->stat_timer = comm_timer_create(worker->base, + worker->stat_timer = comm_timer_create(worker->base, worker_stat_timer_cb, worker); if(!worker->stat_timer) { log_err("could not create statistics timer"); } - /* we use the msg_buffer_size as a good estimate for what the + /* we use the msg_buffer_size as a good estimate for what the * user wants for memory usage sizes */ worker->scratchpad = regional_create_custom(cfg->msg_buffer_size); if(!worker->scratchpad) { @@ -2164,23 +2164,23 @@ worker_init(struct worker* worker, struct config_file *cfg, worker_mem_report(worker, NULL); /* if statistics enabled start timer */ if(worker->env.cfg->stat_interval > 0) { - verbose(VERB_ALGO, "set statistics interval %d secs", + verbose(VERB_ALGO, "set statistics interval %d secs", worker->env.cfg->stat_interval); worker_restart_timer(worker); } return 1; } -void +void worker_work(struct worker* worker) { comm_base_dispatch(worker->base); } -void +void worker_delete(struct worker* worker) { - if(!worker) + if(!worker) return; if(worker->env.mesh && verbosity >= VERB_OPS) { server_stats_log(&worker->stats, worker, worker->thread_num); @@ -2232,7 +2232,7 @@ worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, struct worker* worker = q->env->worker; struct outbound_entry* e = (struct outbound_entry*)regional_alloc( q->region, sizeof(*e)); - if(!e) + if(!e) return NULL; e->qstate = q; e->qsent = outnet_serviced_query(worker->back, qinfo, flags, dnssec, @@ -2246,7 +2246,7 @@ worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, return e; } -void +void worker_alloc_cleanup(void* arg) { struct worker* worker = (struct worker*)arg; @@ -2294,7 +2294,7 @@ struct outbound_entry* libworker_send_query( return 0; } -int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), +int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) { diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 72428fd38..f65cc2c58 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -36,7 +36,7 @@ /** * \file * - * This file contains functions to resolve DNS queries and + * This file contains functions to resolve DNS queries and * validate the answers. Synchronously and asynchronously. * * Several ways to use this interface from an application wishing @@ -65,7 +65,7 @@ * ... or process() calls my_callback() with results. * * ... if the application has nothing more to do, wait for answer - * ub_wait(ctx); + * ub_wait(ctx); * * Application threaded. Blocking. * Blocking, same as above. The current thread does the work. @@ -83,7 +83,7 @@ * CRYPTO_set_id_callback and CRYPTO_set_locking_callback. * * If no threading is compiled in, the above async example uses fork(2) to - * create a process to perform the work. The forked process exits when the + * create a process to perform the work. The forked process exits when the * calling process exits, or ctx_delete() is called. * Otherwise, for asynchronous with threading, a worker thread is created. * @@ -128,10 +128,10 @@ struct ub_result { /** the class asked for */ int qclass; - /** - * a list of network order DNS rdata items, terminated with a + /** + * a list of network order DNS rdata items, terminated with a * NULL pointer, so that data[0] is the first result entry, - * data[1] the second, and the last entry is NULL. + * data[1] the second, and the last entry is NULL. * If there was no data, data[0] is NULL. */ char** data; @@ -139,8 +139,8 @@ struct ub_result { /** the length in bytes of the data items, len[i] for data[i] */ int* len; - /** - * canonical name for the result (the final cname). + /** + * canonical name for the result (the final cname). * zero terminated string. * May be NULL if no canonical name exists. */ @@ -165,9 +165,9 @@ struct ub_result { */ int havedata; - /** + /** * If there was no data, and the domain did not exist, this is true. - * If it is false, and there was no data, then the domain name + * If it is false, and there was no data, then the domain name * is purported to exist, but the requested data type is not available. */ int nxdomain; @@ -182,19 +182,19 @@ struct ub_result { */ int secure; - /** - * If the result was not secure (secure==0), and this result is due + /** + * If the result was not secure (secure==0), and this result is due * to a security failure, bogus is true. * This means the data has been actively tampered with, signatures - * failed, expected signatures were not present, timestamps on + * failed, expected signatures were not present, timestamps on * signatures were out of date and so on. * - * If !secure and !bogus, this can happen if the data is not secure - * because security is disabled for that domain name. + * If !secure and !bogus, this can happen if the data is not secure + * because security is disabled for that domain name. * This means the data is from a domain where data is not signed. */ int bogus; - + /** * If the result is bogus this contains a string (zero terminated) * that describes the failure. There may be other errors as well @@ -222,7 +222,7 @@ struct ub_result { * The readable function definition looks like: * void my_callback(void* my_arg, int err, struct ub_result* result); * It is called with - * void* my_arg: your pointer to a (struct of) data of your choice, + * void* my_arg: your pointer to a (struct of) data of your choice, * or NULL. * int err: if 0 all is OK, otherwise an error occurred and no results * are forthcoming. @@ -301,8 +301,8 @@ int ub_ctx_set_option(struct ub_ctx* ctx, const char* opt, const char* val); * This is a power-users interface that lets you specify all sorts * of options. * @param str: the string is malloced and returned here. NULL on error. - * The caller must free() the string. In cases with multiple - * entries (auto-trust-anchor-file), a newline delimited list is + * The caller must free() the string. In cases with multiple + * entries (auto-trust-anchor-file), a newline delimited list is * returned in the string. * @return 0 if OK else an error code (malloc failure, syntax error). */ @@ -321,10 +321,10 @@ int ub_ctx_get_option(struct ub_ctx* ctx, const char* opt, char** str); int ub_ctx_config(struct ub_ctx* ctx, const char* fname); /** - * Set machine to forward DNS queries to, the caching resolver to use. - * IP4 or IP6 address. Forwards all DNS requests to that machine, which - * is expected to run a recursive resolver. If the proxy is not - * DNSSEC-capable, validation may fail. Can be called several times, in + * Set machine to forward DNS queries to, the caching resolver to use. + * IP4 or IP6 address. Forwards all DNS requests to that machine, which + * is expected to run a recursive resolver. If the proxy is not + * DNSSEC-capable, validation may fail. Can be called several times, in * that case the addresses are used as backup servers. * * To read the list of nameservers from /etc/resolv.conf (from DHCP or so), @@ -389,7 +389,7 @@ int ub_ctx_resolvconf(struct ub_ctx* ctx, const char* fname); /** * Read list of hosts from the filename given. - * Usually "/etc/hosts". + * Usually "/etc/hosts". * These addresses are not flagged as DNSSEC secure when queried for. * * @param ctx: context. @@ -403,7 +403,7 @@ int ub_ctx_hosts(struct ub_ctx* ctx, const char* fname); /** * Add a trust anchor to the given context. * The trust anchor is a string, on one line, that holds a valid DNSKEY or - * DS RR. + * DS RR. * @param ctx: context. * At this time it is only possible to add trusted keys before the * first resolve is done. @@ -465,7 +465,7 @@ int ub_ctx_debugout(struct ub_ctx* ctx, void* out); * Set debug verbosity for the context * Output is directed to stderr. * @param ctx: context. - * @param d: debug level, 0 is off, 1 is very minimal, 2 is detailed, + * @param d: debug level, 0 is off, 1 is very minimal, 2 is detailed, * and 3 is lots. * @return 0 if OK, else error. */ @@ -474,10 +474,10 @@ int ub_ctx_debuglevel(struct ub_ctx* ctx, int d); /** * Set a context behaviour for asynchronous action. * @param ctx: context. - * @param dothread: if true, enables threading and a call to resolve_async() + * @param dothread: if true, enables threading and a call to resolve_async() * creates a thread to handle work in the background. * If false, a process is forked to handle work in the background. - * Changes to this setting after async() calls have been made have + * Changes to this setting after async() calls have been made have * no effect (delete and re-create the context to change). * @return 0 if OK, else error. */ @@ -495,7 +495,7 @@ int ub_poll(struct ub_ctx* ctx); /** * Wait for a context to finish with results. Calls ub_process() after - * the wait for you. After the wait, there are no more outstanding + * the wait for you. After the wait, there are no more outstanding * asynchronous queries. * @param ctx: context. * @return: 0 if OK, else error. @@ -530,11 +530,11 @@ int ub_process(struct ub_ctx* ctx); * @param rrtype: type of RR in host order, 1 is A (address). * @param rrclass: class of RR in host order, 1 is IN (for internet). * @param result: the result data is returned in a newly allocated result - * structure. May be NULL on return, return value is set to an error + * structure. May be NULL on return, return value is set to an error * in that case (out of memory). * @return 0 if OK, else error. */ -int ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, +int ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, int rrclass, struct ub_result** result); /** @@ -561,11 +561,11 @@ int ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, * If an error happens during processing, your callback will be called * with error set to a nonzero value (and result==NULL). * @param async_id: if you pass a non-NULL value, an identifier number is - * returned for the query as it is in progress. It can be used to + * returned for the query as it is in progress. It can be used to * cancel the query. * @return 0 if OK, else error. */ -int ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype, +int ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype, int rrclass, void* mydata, ub_callback_type callback, int* async_id); /** @@ -589,7 +589,7 @@ int ub_cancel(struct ub_ctx* ctx, int async_id); */ void ub_resolve_free(struct ub_result* result); -/** +/** * Convert error value to a human readable string. * @param err: error code from one of the libunbound functions. * The error codes are from the type enum ub_ctx_err. @@ -605,7 +605,7 @@ const char* ub_strerror(int err); int ub_ctx_print_local_zones(struct ub_ctx* ctx); /** - * Add a new zone with the zonetype to the local authority info of the + * Add a new zone with the zonetype to the local authority info of the * library. * @param ctx: context. Is finalized by the routine. * @param zone_name: name of the zone in text, "example.com" @@ -613,7 +613,7 @@ int ub_ctx_print_local_zones(struct ub_ctx* ctx); * @param zone_type: type of the zone (like for unbound.conf) in text. * @return 0 if OK, else error. */ -int ub_ctx_zone_add(struct ub_ctx* ctx, const char *zone_name, +int ub_ctx_zone_add(struct ub_ctx* ctx, const char *zone_name, const char *zone_type); /** @@ -649,7 +649,7 @@ int ub_ctx_data_remove(struct ub_ctx* ctx, const char *data); */ const char* ub_version(void); -/** +/** * Some global statistics that are not in struct stats_info, * this struct is shared on a shm segment (shm-key in unbound.conf) */ @@ -701,7 +701,7 @@ struct ub_server_stats { long long num_queries_prefetch; /** - * Sum of the querylistsize of the worker for + * Sum of the querylistsize of the worker for * every query that missed cache. To calculate average. */ long long sum_query_list_size; @@ -773,12 +773,12 @@ struct ub_server_stats { long long tcp_accept_usage; /** expired answers served from cache */ long long ans_expired; - /** histogram data exported to array + /** histogram data exported to array * if the array is the same size, no data is lost, and * if all histograms are same size (is so by default) then * adding up works well. */ long long hist[UB_STATS_BUCKET_NUM]; - + /** number of message cache entries */ long long msg_cache_count; /** number of rrset cache entries */ @@ -836,7 +836,7 @@ struct ub_server_stats { long long rpz_action[UB_STATS_RPZ_ACTION_NUM]; }; -/** +/** * Statistics to send over the control pipe when asked * This struct is made to be memcopied, sent in binary. * shm mapped with (number+1) at num_threads+1, with first as total diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 0c09ed849..484529034 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -81,7 +81,7 @@ #endif /** number of queued TCP connections for listen() */ -#define TCP_BACKLOG 256 +#define TCP_BACKLOG 256 #ifndef THREADS_DISABLED /** lock on the counter of stream buffer memory */ @@ -187,7 +187,7 @@ systemd_get_activated(int family, int socktype, int listen, log_err("systemd sd_listen_fds(): %s", strerror(-r)); return -1; } - + for(i = 0; i < r; i++) { if(sd_is_socket(SD_LISTEN_FDS_START + i, family, socktype, listen)) { s = SD_LISTEN_FDS_START + i; @@ -253,7 +253,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, return -1; } #else - if(WSAGetLastError() == WSAEAFNOSUPPORT || + if(WSAGetLastError() == WSAEAFNOSUPPORT || WSAGetLastError() == WSAEPROTONOSUPPORT) { *noproto = 1; return -1; @@ -270,7 +270,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #endif if(listen) { #ifdef SO_REUSEADDR - if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, + if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", sock_strerror(errno)); @@ -368,9 +368,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, socklen_t slen = (socklen_t)sizeof(got); # ifdef SO_RCVBUFFORCE /* Linux specific: try to use root permission to override - * system limits on rcvbuf. The limit is stored in + * system limits on rcvbuf. The limit is stored in * /proc/sys/net/core/rmem_max or sysctl net.core.rmem_max */ - if(setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, (void*)&rcv, + if(setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, (void*)&rcv, (socklen_t)sizeof(rcv)) < 0) { if(errno != EPERM) { log_err("setsockopt(..., SO_RCVBUFFORCE, " @@ -381,7 +381,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, return -1; } # endif /* SO_RCVBUFFORCE */ - if(setsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&rcv, + if(setsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&rcv, (socklen_t)sizeof(rcv)) < 0) { log_err("setsockopt(..., SO_RCVBUF, " "...) failed: %s", sock_strerror(errno)); @@ -392,7 +392,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, } /* check if we got the right thing or if system * reduced to some system max. Warn if so */ - if(getsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&got, + if(getsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&got, &slen) >= 0 && got < rcv/2) { log_warn("so-rcvbuf %u was not granted. " "Got %u. To fix: start with " @@ -413,9 +413,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, socklen_t slen = (socklen_t)sizeof(got); # ifdef SO_SNDBUFFORCE /* Linux specific: try to use root permission to override - * system limits on sndbuf. The limit is stored in + * system limits on sndbuf. The limit is stored in * /proc/sys/net/core/wmem_max or sysctl net.core.wmem_max */ - if(setsockopt(s, SOL_SOCKET, SO_SNDBUFFORCE, (void*)&snd, + if(setsockopt(s, SOL_SOCKET, SO_SNDBUFFORCE, (void*)&snd, (socklen_t)sizeof(snd)) < 0) { if(errno != EPERM) { log_err("setsockopt(..., SO_SNDBUFFORCE, " @@ -426,7 +426,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, return -1; } # endif /* SO_SNDBUFFORCE */ - if(setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&snd, + if(setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&snd, (socklen_t)sizeof(snd)) < 0) { log_err("setsockopt(..., SO_SNDBUF, " "...) failed: %s", sock_strerror(errno)); @@ -437,7 +437,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, } /* check if we got the right thing or if system * reduced to some system max. Warn if so */ - if(getsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&got, + if(getsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&got, &slen) >= 0 && got < snd/2) { log_warn("so-sndbuf %u was not granted. " "Got %u. To fix: start with " @@ -469,7 +469,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # endif ) { int val=(v6only==2)?0:1; - if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, + if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&val, (socklen_t)sizeof(val)) < 0) { log_err("setsockopt(..., IPV6_V6ONLY" ", ...) failed: %s", sock_strerror(errno)); @@ -576,7 +576,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, int action; # if defined(IP_PMTUDISC_OMIT) action = IP_PMTUDISC_OMIT; - if (setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER, + if (setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER, &action, (socklen_t)sizeof(action)) < 0) { if (errno != EINVAL) { @@ -609,7 +609,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, /* the IP_DONTFRAG option if defined in the 11.0 OSX headers, * but does not work on that version, so we exclude it */ int off = 0; - if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG, + if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG, &off, (socklen_t)sizeof(off)) < 0) { log_err("setsockopt(..., IP_DONTFRAG, ...) failed: %s", strerror(errno)); @@ -647,7 +647,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if(WSAGetLastError() != WSAEADDRINUSE && WSAGetLastError() != WSAEADDRNOTAVAIL && !(WSAGetLastError() == WSAEACCES && verbosity < 4 && !listen)) { - log_err_addr("can't bind socket", + log_err_addr("can't bind socket", wsa_strerror(WSAGetLastError()), (struct sockaddr_storage*)addr, addrlen); } @@ -749,7 +749,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, } #endif #ifdef SO_REUSEADDR - if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, + if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", sock_strerror(errno)); @@ -793,7 +793,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, && !got_fd_from_systemd # endif ) { - if(setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, + if(setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&on, (socklen_t)sizeof(on)) < 0) { log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", sock_strerror(errno)); @@ -845,7 +845,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, addr->ai_addrlen); } #else - log_err_addr("can't bind socket", + log_err_addr("can't bind socket", wsa_strerror(WSAGetLastError()), (struct sockaddr_storage*)addr->ai_addr, addr->ai_addrlen); @@ -873,7 +873,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, /* 5 is recommended on linux */ qlen = 5; #endif - if ((setsockopt(s, IPPROTO_TCP, TCP_FASTOPEN, &qlen, + if ((setsockopt(s, IPPROTO_TCP, TCP_FASTOPEN, &qlen, sizeof(qlen))) == -1 ) { #ifdef ENOPROTOOPT /* squelch ENOPROTOOPT: freebsd server mode with kernel support @@ -999,7 +999,7 @@ err: * Create socket from getaddrinfo results */ static int -make_sock(int stype, const char* ifname, const char* port, +make_sock(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, int* reuseport, int transparent, int tcp_mss, int nodelay, int freebind, int use_systemd, int dscp, struct unbound_socket* ub_sock) @@ -1015,7 +1015,7 @@ make_sock(int stype, const char* ifname, const char* port, return -1; } #endif - log_err("node %s:%s getaddrinfo: %s %s", + log_err("node %s:%s getaddrinfo: %s %s", ifname?ifname:"default", port, gai_strerror(r), #ifdef EAI_SYSTEM (r==EAI_SYSTEM?(char*)strerror(errno):"") @@ -1055,7 +1055,7 @@ make_sock(int stype, const char* ifname, const char* port, /** make socket and first see if ifname contains port override info */ static int -make_sock_port(int stype, const char* ifname, const char* port, +make_sock_port(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, int* reuseport, int transparent, int tcp_mss, int nodelay, int freebind, int use_systemd, int dscp, struct unbound_socket* ub_sock) @@ -1116,7 +1116,7 @@ port_insert(struct listen_port** list, int s, enum listen_type ftype, /** set fd to receive source address packet info */ static int -set_recvpktinfo(int s, int family) +set_recvpktinfo(int s, int family) { #if defined(IPV6_RECVPKTINFO) || defined(IPV6_PKTINFO) || (defined(IP_RECVDSTADDR) && defined(IP_SENDSRCADDR)) || defined(IP_PKTINFO) int on = 1; @@ -1345,7 +1345,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, return 1; } -/** +/** * Add items to commpoint list in front. * @param c: commpoint to add. * @param front: listen struct. @@ -1396,7 +1396,7 @@ void listen_desetup_locks(void) } } -struct listen_dnsport* +struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, uint32_t http_max_streams, @@ -1532,10 +1532,10 @@ listen_list_delete(struct listen_list* list) } } -void +void listen_delete(struct listen_dnsport* front) { - if(!front) + if(!front) return; listen_list_delete(front->cps); #ifdef USE_DNSCRYPT @@ -1927,8 +1927,8 @@ void listening_ports_free(struct listen_port* list) size_t listen_get_mem(struct listen_dnsport* listen) { struct listen_list* p; - size_t s = sizeof(*listen) + sizeof(*listen->base) + - sizeof(*listen->udp_buff) + + size_t s = sizeof(*listen) + sizeof(*listen->base) + + sizeof(*listen->udp_buff) + sldns_buffer_capacity(listen->udp_buff); #ifdef USE_DNSCRYPT s += sizeof(*listen->dnscrypt_udp_buff); @@ -2009,7 +2009,7 @@ void tcp_req_info_clear(struct tcp_req_info* req) } req->open_req_list = NULL; req->num_open_req = 0; - + /* free pending writable result packets */ item = req->done_req_list; while(item) { @@ -2068,7 +2068,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) wr = 1; if(!req->read_is_closed) rd = 1; - + if(wr) { req->cp->tcp_is_reading = 0; comm_point_stop_listening(req->cp); @@ -2204,7 +2204,7 @@ tcp_req_info_handle_readdone(struct tcp_req_info* req) } req->in_worker_handle = 0; /* it should be waiting in the mesh for recursion. - * If mesh failed to add a new entry and called commpoint_drop_reply. + * If mesh failed to add a new entry and called commpoint_drop_reply. * Then the mesh state has been cleared. */ if(req->is_drop) { /* the reply has been dropped, stream has been closed. */ @@ -2264,7 +2264,7 @@ tcp_req_info_add_result(struct tcp_req_info* req, uint8_t* buf, size_t len) last = req->done_req_list; while(last && last->next) last = last->next; - + /* create new element */ item = (struct tcp_req_done_item*)malloc(sizeof(*item)); if(!item) { @@ -2623,7 +2623,7 @@ static int http2_query_read_done(struct http2_session* h2_session, "buffer already assigned to stream"); return -1; } - + /* the c->buffer might be used by mesh_send_reply and no be cleard * need to be cleared before use */ sldns_buffer_clear(h2_session->c->buffer); diff --git a/services/mesh.c b/services/mesh.c index 8321a48b2..035ffa694 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -249,7 +249,7 @@ mesh_state_ref_compare(const void* ap, const void* bp) return mesh_state_compare(a->s, b->s); } -struct mesh_area* +struct mesh_area* mesh_create(struct module_stack* stack, struct module_env* env) { struct mesh_area* mesh = calloc(1, sizeof(struct mesh_area)); @@ -298,7 +298,7 @@ mesh_delete_helper(rbnode_type* n) * traversal and rbtree rebalancing do not work together */ } -void +void mesh_delete(struct mesh_area* mesh) { if(!mesh) @@ -341,7 +341,7 @@ int mesh_make_new_space(struct mesh_area* mesh, sldns_buffer* qbuf) if(m && m->reply_list && m->list_select == mesh_jostle_list) { /* how old is it? */ struct timeval age; - timeval_subtract(&age, mesh->env->now_tv, + timeval_subtract(&age, mesh->env->now_tv, &m->reply_list->start_time); if(timeval_smaller(&mesh->jostle_max, &age)) { /* its a goner */ @@ -585,11 +585,11 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, /* move to either the forever or the jostle_list */ if(mesh->num_forever_states < mesh->max_forever_states) { mesh->num_forever_states ++; - mesh_list_insert(s, &mesh->forever_first, + mesh_list_insert(s, &mesh->forever_first, &mesh->forever_last); s->list_select = mesh_forever_list; } else { - mesh_list_insert(s, &mesh->jostle_first, + mesh_list_insert(s, &mesh->jostle_first, &mesh->jostle_last); s->list_select = mesh_jostle_list; } @@ -610,9 +610,9 @@ servfail_mem: return; } -int +int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, - uint16_t qflags, struct edns_data* edns, sldns_buffer* buf, + uint16_t qflags, struct edns_data* edns, sldns_buffer* buf, uint16_t qid, mesh_cb_func_type cb, void* cb_arg, int rpz_passthru) { struct mesh_state* s = NULL; @@ -890,7 +890,7 @@ mesh_state_create(struct module_env* env, struct query_info* qinfo, int i; if(!region) return NULL; - mstate = (struct mesh_state*)regional_alloc(region, + mstate = (struct mesh_state*)regional_alloc(region, sizeof(struct mesh_state)); if(!mstate) { alloc_reg_release(env->alloc, region); @@ -972,7 +972,7 @@ mesh_state_make_unique(struct mesh_state* mstate) mstate->unique = mstate; } -void +void mesh_state_cleanup(struct mesh_state* mstate) { struct mesh_area* mesh; @@ -1018,7 +1018,7 @@ mesh_state_cleanup(struct mesh_state* mstate) alloc_reg_release(mstate->s.env->alloc, mstate->s.region); } -void +void mesh_state_delete(struct module_qstate* qstate) { struct mesh_area* mesh; @@ -1031,10 +1031,10 @@ mesh_state_delete(struct module_qstate* qstate) mesh_detach_subs(&mstate->s); if(mstate->list_select == mesh_forever_list) { mesh->num_forever_states --; - mesh_list_remove(mstate, &mesh->forever_first, + mesh_list_remove(mstate, &mesh->forever_first, &mesh->forever_last); } else if(mstate->list_select == mesh_jostle_list) { - mesh_list_remove(mstate, &mesh->jostle_first, + mesh_list_remove(mstate, &mesh->jostle_first, &mesh->jostle_last); } if(!mstate->reply_list && !mstate->cb_list @@ -1106,7 +1106,7 @@ void mesh_detach_subs(struct module_qstate* qstate) if(!ref->s->reply_list && !ref->s->cb_list && ref->s->super_set.count == 0) { mesh->num_detached_states++; - log_assert(mesh->num_detached_states + + log_assert(mesh->num_detached_states + mesh->num_reply_states <= mesh->all.count); } } @@ -1171,7 +1171,7 @@ int mesh_attach_sub(struct module_qstate* qstate, struct query_info* qinfo, if(!mesh_state_attachment(qstate->mesh_info, sub)) return 0; /* if it was a duplicate attachment, the count was not zero before */ - if(!sub->reply_list && !sub->cb_list && was_detached && + if(!sub->reply_list && !sub->cb_list && was_detached && sub->super_set.count == 1) { /* it used to be detached, before this one got added */ log_assert(mesh->num_detached_states > 0); @@ -1270,10 +1270,10 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_NOERROR, &r->edns, NULL, m->s.region, start_time) || - !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, - r->qflags, r->buf, 0, 1, - m->s.env->scratch, udp_size, &r->edns, - (int)(r->edns.bits & EDNS_DO), secure)) + !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, + r->qflags, r->buf, 0, 1, + m->s.env->scratch, udp_size, &r->edns, + (int)(r->edns.bits & EDNS_DO), secure)) { fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, LDNS_RCODE_SERVFAIL, r->buf, @@ -1336,7 +1336,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, /* examine security status */ if(m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || - m->s.env->cfg->ignore_cd) && rep && + m->s.env->cfg->ignore_cd) && rep && (rep->security <= sec_status_bogus || rep->security == sec_status_secure_sentinel_fail)) { rcode = LDNS_RCODE_SERVFAIL; @@ -1391,7 +1391,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list_inplace_cb_out = NULL; - } else { + } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list_inplace_cb_out = NULL; @@ -1441,10 +1441,10 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.local_alias = r->local_alias; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region, &r->start_time) || - !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, + !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r_buffer, 0, 1, m->s.env->scratch, udp_size, &r->edns, (int)(r->edns.bits & EDNS_DO), - secure)) + secure)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time)) @@ -1601,7 +1601,7 @@ void mesh_walk_supers(struct mesh_area* mesh, struct mesh_state* mstate) /* callback the function to inform super of result */ fptr_ok(fptr_whitelist_mod_inform_super( mesh->mods.mod[ref->s->s.curmod]->inform_super)); - (*mesh->mods.mod[ref->s->s.curmod]->inform_super)(&mstate->s, + (*mesh->mods.mod[ref->s->s.curmod]->inform_super)(&mstate->s, ref->s->s.curmod, &ref->s->s); /* copy state that is always relevant to super */ copy_state_to_super(&mstate->s, ref->s->s.curmod, &ref->s->s); @@ -1625,7 +1625,7 @@ struct mesh_state* mesh_area_find(struct mesh_area* mesh, * desire aggregation).*/ key.unique = NULL; key.s.client_info = cinfo; - + result = (struct mesh_state*)rbtree_search(&mesh->all, &key); return result; } @@ -1634,7 +1634,7 @@ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, sldns_buffer* buf, mesh_cb_func_type cb, void* cb_arg, uint16_t qid, uint16_t qflags) { - struct mesh_cb* r = regional_alloc(s->s.region, + struct mesh_cb* r = regional_alloc(s->s.region, sizeof(struct mesh_cb)); if(!r) return 0; @@ -1766,7 +1766,7 @@ mesh_copy_qinfo(struct mesh_state* mstate, struct query_info** qinfop, * Handles module finished. * @param mesh: the mesh area. * @param mstate: currently active mesh state. - * Deleted if finished, calls _done and _supers to + * Deleted if finished, calls _done and _supers to * send replies to clients and inform other mesh states. * This in turn may create additional runnable mesh states. * @param s: state at which the current module exited. @@ -1800,7 +1800,7 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, } if(s == module_restart_next) { int curmod = mstate->s.curmod; - for(; mstate->s.curmod < mesh->mods.num; + for(; mstate->s.curmod < mesh->mods.num; mstate->s.curmod++) { fptr_ok(fptr_whitelist_mod_clear( mesh->mods.mod[mstate->s.curmod]->clear)); @@ -1878,7 +1878,7 @@ void mesh_run(struct mesh_area* mesh, struct mesh_state* mstate, mstate->s.reply = NULL; regional_free_all(mstate->s.env->scratch); s = mstate->s.ext_state[mstate->s.curmod]; - verbose(VERB_ALGO, "mesh_run: %s module exit state is %s", + verbose(VERB_ALGO, "mesh_run: %s module exit state is %s", mesh->mods.mod[mstate->s.curmod]->name, strextstate(s)); e = NULL; if(mesh_continue(mesh, mstate, s, &ev)) @@ -1898,14 +1898,14 @@ void mesh_run(struct mesh_area* mesh, struct mesh_state* mstate, } } -void +void mesh_log_list(struct mesh_area* mesh) { char buf[30]; struct mesh_state* m; int num = 0; RBTREE_FOR(m, struct mesh_state*, &mesh->all) { - snprintf(buf, sizeof(buf), "%d%s%s%s%s%s%s mod%d %s%s", + snprintf(buf, sizeof(buf), "%d%s%s%s%s%s%s mod%d %s%s", num++, (m->s.is_priming)?"p":"", /* prime */ (m->s.is_valrec)?"v":"", /* prime */ (m->s.query_flags&BIT_RD)?"RD":"", @@ -1914,18 +1914,18 @@ mesh_log_list(struct mesh_area* mesh) (m->sub_set.count!=0)?"c":"", /* children */ m->s.curmod, (m->reply_list)?"rep":"", /*hasreply*/ (m->cb_list)?"cb":"" /* callbacks */ - ); + ); log_query_info(VERB_ALGO, buf, &m->s.qinfo); } } -void +void mesh_stats(struct mesh_area* mesh, const char* str) { verbose(VERB_DETAIL, "%s %u recursion states (%u with reply, " "%u detached), %u waiting replies, %u recursion replies " - "sent, %d replies dropped, %d states jostled out", - str, (unsigned)mesh->all.count, + "sent, %d replies dropped, %d states jostled out", + str, (unsigned)mesh->all.count, (unsigned)mesh->num_reply_states, (unsigned)mesh->num_detached_states, (unsigned)mesh->num_reply_addrs, @@ -1934,7 +1934,7 @@ mesh_stats(struct mesh_area* mesh, const char* str) (unsigned)mesh->stats_jostled); if(mesh->replies_sent > 0) { struct timeval avg; - timeval_divide(&avg, &mesh->replies_sum_wait, + timeval_divide(&avg, &mesh->replies_sum_wait, mesh->replies_sent); log_info("average recursion processing time " ARG_LL "d.%6.6d sec", @@ -1944,7 +1944,7 @@ mesh_stats(struct mesh_area* mesh, const char* str) } } -void +void mesh_stats_clear(struct mesh_area* mesh) { if(!mesh) @@ -1963,7 +1963,7 @@ mesh_stats_clear(struct mesh_area* mesh) mesh->ans_nodata = 0; } -size_t +size_t mesh_get_mem(struct mesh_area* mesh) { struct mesh_state* m; @@ -1977,7 +1977,7 @@ mesh_get_mem(struct mesh_area* mesh) return s; } -int +int mesh_detect_cycle(struct module_qstate* qstate, struct query_info* qinfo, uint16_t flags, int prime, int valrec) { diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index bae8e4e76..141bec492 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -4,22 +4,22 @@ * Copyright (c) 2008, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -226,7 +226,7 @@ static void pr_stats(const char* nm, struct ub_stats_info* s) { struct timeval sumwait, avg; PR_UL_NM("num.queries", s->svr.num_queries); - PR_UL_NM("num.queries_ip_ratelimited", + PR_UL_NM("num.queries_ip_ratelimited", s->svr.num_queries_ip_ratelimited); PR_UL_NM("num.cachehits", s->svr.num_queries - s->svr.num_queries_missed_cache); @@ -992,7 +992,7 @@ int main(int argc, char* argv[]) fatal_exit("could not exec unbound: %s", strerror(ENOSYS)); #else - if(execlp("unbound", "unbound", "-c", cfgfile, + if(execlp("unbound", "unbound", "-c", cfgfile, (char*)NULL) < 0) { fatal_exit("could not exec unbound: %s", strerror(errno)); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index efb22a6fb..618e739d7 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -2,24 +2,24 @@ * testcode/fake_event.c - fake event handling that replays existing scenario. * * Copyright (c) 2007, NLnet Labs. All rights reserved. - * + * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -109,7 +109,7 @@ timeval_add(struct timeval* d, const struct timeval* add) #endif } -void +void fake_temp_file(const char* adj, const char* id, char* buf, size_t len) { #ifdef USE_WINSOCK @@ -121,13 +121,13 @@ fake_temp_file(const char* adj, const char* id, char* buf, size_t len) #endif } -void +void fake_event_init(struct replay_scenario* scen) { saved_scenario = scen; } -void +void fake_event_cleanup(void) { replay_scenario_delete(saved_scenario); @@ -172,7 +172,7 @@ repevt_string(enum replay_event_type t) } /** delete a fake pending */ -static void +static void delete_fake_pending(struct fake_pending* pend) { if(!pend) @@ -200,8 +200,8 @@ delete_replay_answer(struct replay_answer* a) /** * return: true if pending query matches the now event. */ -static int -pending_matches_current(struct replay_runtime* runtime, +static int +pending_matches_current(struct replay_runtime* runtime, struct entry** entry, struct fake_pending **pend) { struct fake_pending* p; @@ -233,7 +233,7 @@ pending_matches_current(struct replay_runtime* runtime, * @return: true if a match is found. */ static int -pending_find_match(struct replay_runtime* runtime, struct entry** entry, +pending_find_match(struct replay_runtime* runtime, struct entry** entry, struct fake_pending* pend) { int timenow = runtime->now->time_step; @@ -245,7 +245,7 @@ pending_find_match(struct replay_runtime* runtime, struct entry** entry, (*entry = find_match(p->match, pend->pkt, pend->pkt_len, pend->transport))) { log_info("matched query time %d in range [%d, %d] " - "with entry line %d", timenow, + "with entry line %d", timenow, p->start_step, p->end_step, (*entry)->lineno); if(p->addrlen != 0) log_addr(0, "matched ip", &p->addr, p->addrlen); @@ -266,8 +266,8 @@ pending_find_match(struct replay_runtime* runtime, struct entry** entry, * @param pend: if true, the outgoing message that matches is returned. * @return: true if pending query matches the now event. */ -static int -pending_matches_range(struct replay_runtime* runtime, +static int +pending_matches_range(struct replay_runtime* runtime, struct entry** entry, struct fake_pending** pend) { struct fake_pending* p = runtime->pending_list; @@ -405,9 +405,9 @@ answer_callback_from_entry(struct replay_runtime* runtime, static void answer_check_it(struct replay_runtime* runtime) { - struct replay_answer* ans = runtime->answer_list, + struct replay_answer* ans = runtime->answer_list, *prev = NULL; - log_assert(runtime && runtime->now && + log_assert(runtime && runtime->now && runtime->now->evt_type == repevt_front_reply); while(ans) { enum transport_type tr = transport_tcp; @@ -420,7 +420,7 @@ answer_check_it(struct replay_runtime* runtime) ans->pkt_len, tr)) { log_info("testbound matched event entry from line %d", runtime->now->match->lineno); - log_info("testbound: do STEP %d %s", + log_info("testbound: do STEP %d %s", runtime->now->time_step, repevt_string(runtime->now->evt_type)); if(prev) @@ -474,7 +474,7 @@ fake_front_query(struct replay_runtime* runtime, struct replay_moment *todo) log_pkt("query pkt", todo->match->reply_list->reply_pkt, todo->match->reply_list->reply_len); /* call the callback for incoming queries */ - if((*runtime->callback_query)(repinfo.c, runtime->cb_arg, + if((*runtime->callback_query)(repinfo.c, runtime->cb_arg, NETEVENT_NOERROR, &repinfo)) { /* send immediate reply */ comm_point_send_reply(&repinfo); @@ -487,7 +487,7 @@ fake_front_query(struct replay_runtime* runtime, struct replay_moment *todo) * Perform callback for fake pending message. */ static void -fake_pending_callback(struct replay_runtime* runtime, +fake_pending_callback(struct replay_runtime* runtime, struct replay_moment* todo, int error) { struct fake_pending* p = runtime->pending_list; @@ -566,7 +566,7 @@ time_passes(struct replay_runtime* runtime, struct replay_moment* mom) timeval_add(&runtime->now_tv, &tv); runtime->now_secs = (time_t)runtime->now_tv.tv_sec; #ifndef S_SPLINT_S - log_info("elapsed %d.%6.6d now %d.%6.6d", + log_info("elapsed %d.%6.6d now %d.%6.6d", (int)tv.tv_sec, (int)tv.tv_usec, (int)runtime->now_tv.tv_sec, (int)runtime->now_tv.tv_usec); #endif @@ -603,7 +603,7 @@ autotrust_check(struct replay_runtime* runtime, struct replay_moment* mom) } strip_end_white(line); expanded = macro_process(runtime->vars, runtime, p->str); - if(!expanded) + if(!expanded) fatal_exit("could not expand macro line %d", lineno); if(verbosity >= 7 && strcmp(p->str, expanded) != 0) log_info("expanded '%s' to '%s'", p->str, expanded); @@ -656,7 +656,7 @@ tempfile_check(struct replay_runtime* runtime, struct replay_moment* mom) } strip_end_white(line); expanded = macro_process(runtime->vars, runtime, p->str); - if(!expanded) + if(!expanded) fatal_exit("could not expand macro line %d", lineno); if(verbosity >= 7 && strcmp(p->str, expanded) != 0) log_info("expanded '%s' to '%s'", p->str, expanded); @@ -746,7 +746,7 @@ do_moment_and_advance(struct replay_runtime* runtime) advance_moment(runtime); return; } - log_info("testbound: do STEP %d %s", runtime->now->time_step, + log_info("testbound: do STEP %d %s", runtime->now->time_step, repevt_string(runtime->now->evt_type)); switch(runtime->now->evt_type) { case repevt_nothing: @@ -761,7 +761,7 @@ do_moment_and_advance(struct replay_runtime* runtime) fake_front_query(runtime, mom); break; case repevt_front_reply: - if(runtime->answer_list) + if(runtime->answer_list) log_err("testbound: There are unmatched answers."); fatal_exit("testbound: query answer not matched"); break; @@ -810,7 +810,7 @@ do_moment_and_advance(struct replay_runtime* runtime) advance_moment(runtime); break; default: - fatal_exit("testbound: unknown event type %d", + fatal_exit("testbound: unknown event type %d", runtime->now->evt_type); } } @@ -831,15 +831,15 @@ run_scenario(struct replay_runtime* runtime) /* else if precoded_range matches pending, do it */ /* else do the current moment */ if(pending_matches_current(runtime, &entry, &pending)) { - log_info("testbound: do STEP %d CHECK_OUT_QUERY", + log_info("testbound: do STEP %d CHECK_OUT_QUERY", runtime->now->time_step); advance_moment(runtime); if(entry->copy_id) - answer_callback_from_entry(runtime, entry, + answer_callback_from_entry(runtime, entry, pending); - } else if(runtime->answer_list && runtime->now && + } else if(runtime->answer_list && runtime->now && runtime->now->evt_type == repevt_front_reply) { - answer_check_it(runtime); + answer_check_it(runtime); advance_moment(runtime); } else if(pending_matches_range(runtime, &entry, &pending)) { answer_callback_from_entry(runtime, entry, pending); @@ -870,7 +870,7 @@ run_scenario(struct replay_runtime* runtime) /*********** Dummy routines ***********/ -struct listen_dnsport* +struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), size_t bufsize, int ATTR_UNUSED(tcp_accept_count), int ATTR_UNUSED(tcp_idle_timeout), @@ -898,7 +898,7 @@ listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), return l; } -void +void listen_delete(struct listen_dnsport* listen) { if(!listen) @@ -907,7 +907,7 @@ listen_delete(struct listen_dnsport* listen) free(listen); } -struct comm_base* +struct comm_base* comm_base_create(int ATTR_UNUSED(sigs)) { /* we return the runtime structure instead. */ @@ -921,7 +921,7 @@ comm_base_create(int ATTR_UNUSED(sigs)) return (struct comm_base*)runtime; } -void +void comm_base_delete(struct comm_base* b) { struct replay_runtime* runtime = (struct replay_runtime*)b; @@ -961,7 +961,7 @@ comm_base_timept(struct comm_base* b, time_t** tt, struct timeval** tv) *tv = &runtime->now_tv; } -void +void comm_base_dispatch(struct comm_base* b) { struct replay_runtime* runtime = (struct replay_runtime*)b; @@ -971,7 +971,7 @@ comm_base_dispatch(struct comm_base* b) else exit(0); /* OK exit when LIBEVENT_SIGNAL_PROBLEM exists */ } -void +void comm_base_exit(struct comm_base* b) { struct replay_runtime* runtime = (struct replay_runtime*)b; @@ -981,7 +981,7 @@ comm_base_exit(struct comm_base* b) } } -struct comm_signal* +struct comm_signal* comm_signal_create(struct comm_base* base, void (*callback)(int, void*), void* cb_arg) { @@ -991,20 +991,20 @@ comm_signal_create(struct comm_base* base, return calloc(1, sizeof(struct comm_signal)); } -int -comm_signal_bind(struct comm_signal* ATTR_UNUSED(comsig), int +int +comm_signal_bind(struct comm_signal* ATTR_UNUSED(comsig), int ATTR_UNUSED(sig)) { return 1; } -void +void comm_signal_delete(struct comm_signal* comsig) { free(comsig); } -void +void comm_point_send_reply(struct comm_reply* repinfo) { struct replay_answer* ans = (struct replay_answer*)calloc(1, @@ -1028,7 +1028,7 @@ comm_point_send_reply(struct comm_reply* repinfo) log_pkt("reply pkt: ", ans->pkt, ans->pkt_len); } -void +void comm_point_drop_reply(struct comm_reply* repinfo) { log_info("comm_point_drop_reply fake"); @@ -1038,14 +1038,14 @@ comm_point_drop_reply(struct comm_reply* repinfo) } } -struct outside_network* -outside_network_create(struct comm_base* base, size_t bufsize, - size_t ATTR_UNUSED(num_ports), char** ATTR_UNUSED(ifs), - int ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4), - int ATTR_UNUSED(do_ip6), size_t ATTR_UNUSED(num_tcp), +struct outside_network* +outside_network_create(struct comm_base* base, size_t bufsize, + size_t ATTR_UNUSED(num_ports), char** ATTR_UNUSED(ifs), + int ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4), + int ATTR_UNUSED(do_ip6), size_t ATTR_UNUSED(num_tcp), int ATTR_UNUSED(dscp), struct infra_cache* infra, - struct ub_randstate* ATTR_UNUSED(rnd), + struct ub_randstate* ATTR_UNUSED(rnd), int ATTR_UNUSED(use_caps_for_id), int* ATTR_UNUSED(availports), int ATTR_UNUSED(numavailports), size_t ATTR_UNUSED(unwanted_threshold), int ATTR_UNUSED(outgoing_tcp_mss), @@ -1057,7 +1057,7 @@ outside_network_create(struct comm_base* base, size_t bufsize, int ATTR_UNUSED(tcp_auth_query_timeout)) { struct replay_runtime* runtime = (struct replay_runtime*)base; - struct outside_network* outnet = calloc(1, + struct outside_network* outnet = calloc(1, sizeof(struct outside_network)); (void)unwanted_action; if(!outnet) @@ -1072,7 +1072,7 @@ outside_network_create(struct comm_base* base, size_t bufsize, return outnet; } -void +void outside_network_delete(struct outside_network* outnet) { if(!outnet) @@ -1081,12 +1081,12 @@ outside_network_delete(struct outside_network* outnet) free(outnet); } -void +void outside_network_quit_prepare(struct outside_network* ATTR_UNUSED(outnet)) { } -struct pending* +struct pending* pending_udp_query(struct serviced_query* sq, sldns_buffer* packet, int timeout, comm_point_callback_type* callback, void* callback_arg) { @@ -1128,7 +1128,7 @@ pending_udp_query(struct serviced_query* sq, sldns_buffer* packet, repevt_string(runtime->now->evt_type)); advance_moment(runtime); /* still create the pending, because we need it to callback */ - } + } log_info("testbound: created fake pending"); /* add to list */ pend->next = runtime->pending_list; @@ -1178,7 +1178,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, repevt_string(runtime->now->evt_type)); advance_moment(runtime); /* still create the pending, because we need it to callback */ - } + } log_info("testbound: created fake pending"); /* add to list */ pend->next = runtime->pending_list; @@ -1202,10 +1202,10 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, sizeof(struct fake_pending)); char z[256]; log_assert(pend); - log_nametypeclass(VERB_OPS, "pending serviced query", + log_nametypeclass(VERB_OPS, "pending serviced query", qinfo->qname, qinfo->qtype, qinfo->qclass); dname_str(zone, z); - verbose(VERB_OPS, "pending serviced query zone %s flags%s%s%s%s", + verbose(VERB_OPS, "pending serviced query zone %s flags%s%s%s%s", z, (flags&BIT_RD)?" RD":"", (flags&BIT_CD)?" CD":"", (flags&~(BIT_RD|BIT_CD))?" MORE":"", (dnssec)?" DO":""); @@ -1301,7 +1301,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, repevt_string(runtime->now->evt_type)); advance_moment(runtime); /* still create the pending, because we need it to callback */ - } + } log_info("testbound: created fake pending"); /* add to list */ pend->next = runtime->pending_list; @@ -1356,7 +1356,7 @@ void listening_ports_free(struct listen_port* list) struct comm_point* comm_point_create_local(struct comm_base* ATTR_UNUSED(base), int ATTR_UNUSED(fd), size_t ATTR_UNUSED(bufsize), - comm_point_callback_type* ATTR_UNUSED(callback), + comm_point_callback_type* ATTR_UNUSED(callback), void* ATTR_UNUSED(callback_arg)) { struct fake_commpoint* fc = (struct fake_commpoint*)calloc(1, @@ -1368,7 +1368,7 @@ struct comm_point* comm_point_create_local(struct comm_base* ATTR_UNUSED(base), struct comm_point* comm_point_create_raw(struct comm_base* ATTR_UNUSED(base), int ATTR_UNUSED(fd), int ATTR_UNUSED(writing), - comm_point_callback_type* ATTR_UNUSED(callback), + comm_point_callback_type* ATTR_UNUSED(callback), void* ATTR_UNUSED(callback_arg)) { /* no pipe comm possible */ @@ -1379,7 +1379,7 @@ struct comm_point* comm_point_create_raw(struct comm_base* ATTR_UNUSED(base), return (struct comm_point*)fc; } -void comm_point_start_listening(struct comm_point* ATTR_UNUSED(c), +void comm_point_start_listening(struct comm_point* ATTR_UNUSED(c), int ATTR_UNUSED(newfd), int ATTR_UNUSED(sec)) { /* no bg write pipe comm possible */ @@ -1424,7 +1424,7 @@ size_t serviced_get_mem(struct serviced_query* ATTR_UNUSED(c)) } /* fake for fptr wlist */ -int outnet_udp_cb(struct comm_point* ATTR_UNUSED(c), +int outnet_udp_cb(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply *ATTR_UNUSED(reply_info)) { @@ -1432,7 +1432,7 @@ int outnet_udp_cb(struct comm_point* ATTR_UNUSED(c), return 0; } -int outnet_tcp_cb(struct comm_point* ATTR_UNUSED(c), +int outnet_tcp_cb(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply *ATTR_UNUSED(reply_info)) { @@ -1460,67 +1460,67 @@ void outnet_tcptimer(void* ATTR_UNUSED(arg)) log_assert(0); } -void comm_point_udp_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), +void comm_point_udp_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_point_udp_ancil_callback(int ATTR_UNUSED(fd), +void comm_point_udp_ancil_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_point_tcp_accept_callback(int ATTR_UNUSED(fd), +void comm_point_tcp_accept_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_point_tcp_handle_callback(int ATTR_UNUSED(fd), +void comm_point_tcp_handle_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_timer_callback(int ATTR_UNUSED(fd), +void comm_timer_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_signal_callback(int ATTR_UNUSED(fd), +void comm_signal_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_point_http_handle_callback(int ATTR_UNUSED(fd), +void comm_point_http_handle_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_point_local_handle_callback(int ATTR_UNUSED(fd), +void comm_point_local_handle_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_point_raw_handle_callback(int ATTR_UNUSED(fd), +void comm_point_raw_handle_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -void comm_base_handle_slow_accept(int ATTR_UNUSED(fd), +void comm_base_handle_slow_accept(int ATTR_UNUSED(fd), short ATTR_UNUSED(event), void* ATTR_UNUSED(arg)) { log_assert(0); } -int serviced_udp_callback(struct comm_point* ATTR_UNUSED(c), +int serviced_udp_callback(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) { @@ -1528,7 +1528,7 @@ int serviced_udp_callback(struct comm_point* ATTR_UNUSED(c), return 0; } -int serviced_tcp_callback(struct comm_point* ATTR_UNUSED(c), +int serviced_tcp_callback(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) { @@ -1561,7 +1561,7 @@ int reuse_id_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) } /* timers in testbound for autotrust. statistics tested in tdir. */ -struct comm_timer* comm_timer_create(struct comm_base* base, +struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) { struct replay_runtime* runtime = (struct replay_runtime*)base; @@ -1589,7 +1589,7 @@ void comm_timer_set(struct comm_timer* timer, struct timeval* tv) struct fake_timer* t = (struct fake_timer*)timer; t->enabled = 1; t->tv = *tv; - log_info("fake timer set %d.%6.6d", + log_info("fake timer set %d.%6.6d", (int)t->tv.tv_sec, (int)t->tv.tv_usec); timeval_add(&t->tv, &t->runtime->now_tv); } diff --git a/testcode/replay.c b/testcode/replay.c index 43101d6ac..3caf98233 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -2,24 +2,24 @@ * testcode/replay.c - store and use a replay of events for the DNS resolver. * * Copyright (c) 2007, NLnet Labs. All rights reserved. - * + * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -59,11 +59,11 @@ * Expand a macro * @param store: value storage * @param runtime: replay runtime for other stuff. - * @param text: the macro text, after the ${, Updated to after the } when + * @param text: the macro text, after the ${, Updated to after the } when * done (successfully). * @return expanded text, malloced. NULL on failure. */ -static char* macro_expand(rbtree_type* store, +static char* macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text); /** compare of time values */ @@ -82,12 +82,12 @@ timeval_smaller(const struct timeval* x, const struct timeval* y) #endif } -/** parse keyword in string. +/** parse keyword in string. * @param line: if found, the line is advanced to after the keyword. * @param keyword: string. - * @return: true if found, false if not. + * @return: true if found, false if not. */ -static int +static int parse_keyword(char** line, const char* keyword) { size_t len = (size_t)strlen(keyword); @@ -135,8 +135,8 @@ strip_end_white(char* p) } } -/** - * Read a range from file. +/** + * Read a range from file. * @param remain: Rest of line (after RANGE keyword). * @param in: file to read from. * @param name: name to print in errors. @@ -181,7 +181,7 @@ replay_range_read(char* remain, FILE* in, const char* name, strip_end_white(parse); if(!extstrtoaddr(parse, &rng->addr, &rng->addrlen, UNBOUND_DNS_PORT)) { - log_err("Line %d: could not read ADDRESS: %s", + log_err("Line %d: could not read ADDRESS: %s", pstate->lineno, parse); free(rng); return NULL; @@ -255,8 +255,8 @@ read_assign_step(char* remain, struct replay_moment* mom) fatal_exit("out of memory"); } -/** - * Read a replay moment 'STEP' from file. +/** + * Read a replay moment 'STEP' from file. * @param remain: Rest of line (after STEP keyword). * @param in: file to read from. * @param name: name to print in errors. @@ -376,18 +376,18 @@ replay_moment_read(char* remain, FILE* in, const char* name, strip_end_white(remain); if(!extstrtoaddr(remain, &mom->addr, &mom->addrlen, UNBOUND_DNS_PORT)) { - log_err("line %d: could not parse ADDRESS: %s", + log_err("line %d: could not parse ADDRESS: %s", pstate->lineno, remain); free(mom); return NULL; } - } + } if(parse_keyword(&remain, "ELAPSE")) { double sec; errno = 0; sec = strtod(remain, &remain); if(sec == 0. && errno != 0) { - log_err("line %d: could not parse ELAPSE: %s (%s)", + log_err("line %d: could not parse ELAPSE: %s (%s)", pstate->lineno, remain, strerror(errno)); free(mom); return NULL; @@ -397,7 +397,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, mom->elapse.tv_usec = (int)((sec - (double)mom->elapse.tv_sec) *1000000. + 0.5); #endif - } + } if(readentry) { mom->match = read_entry(in, name, pstate, 1); @@ -433,7 +433,7 @@ make_scenario(char* line) return scen; } -struct replay_scenario* +struct replay_scenario* replay_scenario_read(FILE* in, const char* name, int* lineno) { char line[MAX_LINE_LEN]; @@ -451,7 +451,7 @@ replay_scenario_read(FILE* in, const char* name, int* lineno) (*lineno)++; while(isspace((unsigned char)*parse)) parse++; - if(!*parse) + if(!*parse) continue; /* empty line */ if(parse_keyword(&parse, ";")) continue; /* comment */ @@ -462,11 +462,11 @@ replay_scenario_read(FILE* in, const char* name, int* lineno) if(!scen) fatal_exit("%d: could not make scen", *lineno); continue; - } + } if(!scen) fatal_exit("%d: expected SCENARIO", *lineno); if(parse_keyword(&parse, "RANGE_BEGIN")) { - struct replay_range* newr = replay_range_read(parse, + struct replay_range* newr = replay_range_read(parse, in, name, &pstate, line); if(!newr) fatal_exit("%d: bad range", pstate.lineno); @@ -474,12 +474,12 @@ replay_scenario_read(FILE* in, const char* name, int* lineno) newr->next_range = scen->range_list; scen->range_list = newr; } else if(parse_keyword(&parse, "STEP")) { - struct replay_moment* mom = replay_moment_read(parse, + struct replay_moment* mom = replay_moment_read(parse, in, name, &pstate); if(!mom) fatal_exit("%d: bad moment", pstate.lineno); *lineno = pstate.lineno; - if(scen->mom_last && + if(scen->mom_last && scen->mom_last->time_step >= mom->time_step) fatal_exit("%d: time goes backwards", *lineno); if(scen->mom_last) @@ -502,7 +502,7 @@ replay_scenario_read(FILE* in, const char* name, int* lineno) return NULL; } -void +void replay_scenario_delete(struct replay_scenario* scen) { struct replay_moment* mom, *momn; @@ -630,7 +630,7 @@ do_macro_recursion(rbtree_type* store, struct replay_runtime* runtime, { char* after = at+2; char* expand = macro_expand(store, runtime, &after); - if(!expand) + if(!expand) return NULL; /* expansion failed */ if(!do_buf_insert(at, remain, after, expand)) { free(expand); @@ -665,7 +665,7 @@ do_macro_variable(rbtree_type* store, char* buf, size_t remain) } /* terminator, we are working in macro_expand() buffer */ sv = *at; - *at = 0; + *at = 0; v = macro_getvar(store, name); *at = sv; @@ -816,7 +816,7 @@ macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text) time_t res = 0; if(runtime) { struct fake_timer* t = first_timer(runtime); - if(t && (time_t)t->tv.tv_sec >= runtime->now_secs) + if(t && (time_t)t->tv.tv_sec >= runtime->now_secs) res = (time_t)t->tv.tv_sec - runtime->now_secs; } snprintf(buf, sizeof(buf), ARG_LL "d", (long long)res); @@ -855,9 +855,9 @@ macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text) if(dofunc) { /* post process functions, buf has the argument(s) */ if(strncmp(buf, "ctime", 5) == 0) { - return do_macro_ctime(buf+6); + return do_macro_ctime(buf+6); } else if(strncmp(buf, "range", 5) == 0) { - return do_macro_range(buf+6); + return do_macro_range(buf+6); } } return strdup(buf); @@ -891,7 +891,7 @@ macro_process(rbtree_type* store, struct replay_runtime* runtime, char* text) return strdup(buf); } -char* +char* macro_lookup(rbtree_type* store, char* name) { struct replay_var* x = macro_getvar(store, name); @@ -907,7 +907,7 @@ void macro_print_debug(rbtree_type* store) } } -int +int macro_assign(rbtree_type* store, char* name, char* value) { struct replay_var* x = macro_getvar(store, name); diff --git a/util/config_file.c b/util/config_file.c index 475699723..8e4d925e9 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -87,7 +87,7 @@ struct config_parser_state* cfg_parser = 0; /** init ports possible for use */ static void init_outgoing_availports(int* array, int num); -struct config_file* +struct config_file* config_create(void) { struct config_file* cfg; @@ -153,7 +153,7 @@ config_create(void) cfg->outgoing_num_ports = 48; /* windows is limited in num fds */ cfg->num_queries_per_thread = 24; cfg->outgoing_num_tcp = 2; /* leaves 64-52=12 for: 4if,1stop,thread4 */ - cfg->incoming_num_tcp = 2; + cfg->incoming_num_tcp = 2; #endif cfg->stream_wait_size = 4 * 1024 * 1024; cfg->edns_buffer_size = 1232; /* from DNS flagday recommendation */ @@ -302,13 +302,13 @@ config_create(void) cfg->rrset_roundrobin = 1; cfg->unknown_server_time_limit = 376; cfg->max_udp_size = 1232; /* value taken from edns_buffer_size */ - if(!(cfg->server_key_file = strdup(RUN_DIR"/unbound_server.key"))) + if(!(cfg->server_key_file = strdup(RUN_DIR"/unbound_server.key"))) goto error_exit; - if(!(cfg->server_cert_file = strdup(RUN_DIR"/unbound_server.pem"))) + if(!(cfg->server_cert_file = strdup(RUN_DIR"/unbound_server.pem"))) goto error_exit; - if(!(cfg->control_key_file = strdup(RUN_DIR"/unbound_control.key"))) + if(!(cfg->control_key_file = strdup(RUN_DIR"/unbound_control.key"))) goto error_exit; - if(!(cfg->control_cert_file = strdup(RUN_DIR"/unbound_control.pem"))) + if(!(cfg->control_cert_file = strdup(RUN_DIR"/unbound_control.pem"))) goto error_exit; #ifdef CLIENT_SUBNET @@ -316,7 +316,7 @@ config_create(void) #else if(!(cfg->module_conf = strdup("validator iterator"))) goto error_exit; #endif - if(!(cfg->val_nsec3_key_iterations = + if(!(cfg->val_nsec3_key_iterations = strdup("1024 150 2048 150 4096 150"))) goto error_exit; #if defined(DNSTAP_SOCKET_PATH) if(!(cfg->dnstap_socket_path = strdup(DNSTAP_SOCKET_PATH))) @@ -490,10 +490,10 @@ int config_set_option(struct config_file* cfg, const char* opt, /* not supported, library must have 1 thread in bgworker */ return 0; } else if(strcmp(opt, "outgoing-port-permit:") == 0) { - return cfg_mark_ports(val, 1, + return cfg_mark_ports(val, 1, cfg->outgoing_avail_ports, 65536); } else if(strcmp(opt, "outgoing-port-avoid:") == 0) { - return cfg_mark_ports(val, 0, + return cfg_mark_ports(val, 0, cfg->outgoing_avail_ports, 65536); } else if(strcmp(opt, "local-zone:") == 0) { return cfg_parse_local_zone(cfg, val); @@ -507,7 +507,7 @@ int config_set_option(struct config_file* cfg, const char* opt, if(atoi(val) == 0) return 0; cfg->val_date_override = (uint32_t)atoi(val); } - } else if(strcmp(opt, "local-data-ptr:") == 0) { + } else if(strcmp(opt, "local-data-ptr:") == 0) { char* ptr = cfg_ptr_reverse((char*)opt); return cfg_strlist_insert(&cfg->local_data, ptr); } else if(strcmp(opt, "logfile:") == 0) { @@ -688,7 +688,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else if(strcmp(opt, "serve-expired-reply-ttl:") == 0) { IS_NUMBER_OR_ZERO; cfg->serve_expired_reply_ttl = atoi(val); SERVE_EXPIRED_REPLY_TTL=(time_t)cfg->serve_expired_reply_ttl;} else S_NUMBER_OR_ZERO("serve-expired-client-timeout:", serve_expired_client_timeout) - else S_YNO("ede:", ede) + else S_YNO("ede:", ede) else S_YNO("ede-serve-expired:", ede_serve_expired) else S_YNO("serve-original-ttl:", serve_original_ttl) else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations) @@ -816,7 +816,7 @@ int config_set_option(struct config_file* cfg, const char* opt, { IS_NUMBER_OR_ZERO; cfg->val_max_restart = (int32_t)atoi(val); } else if (strcmp(opt, "outgoing-interface:") == 0) { char* d = strdup(val); - char** oi = + char** oi = (char**)reallocarray(NULL, (size_t)cfg->num_out_ifs+1, sizeof(char*)); if(!d || !oi) { free(d); free(oi); return -1; } if(cfg->out_ifs && cfg->num_out_ifs) { @@ -911,7 +911,7 @@ config_collate_cat(struct config_strlist* list) for(s=list; s; s=s->next) total += strlen(s->str) + 1; /* len + newline */ left = total+1; /* one extra for nul at end */ - r = malloc(left); + r = malloc(left); if(!r) return NULL; w = r; @@ -990,7 +990,7 @@ config_collate_cat(struct config_strlist* list) } int -config_get_option(struct config_file* cfg, const char* opt, +config_get_option(struct config_file* cfg, const char* opt, void (*func)(char*,void*), void* arg) { char buf[1024], nopt[64]; @@ -1329,7 +1329,7 @@ create_cfg_parser(struct config_file* cfg, char* filename, const char* chroot) init_cfg_parse(); } -int +int config_read(struct config_file* cfg, const char* filename, const char* chroot) { FILE *in; @@ -1369,7 +1369,7 @@ config_read(struct config_file* cfg, const char* filename, const char* chroot) if(r == GLOB_NOMATCH) { verbose(VERB_QUERY, "include: " "no matches for %s", fname); - return 1; + return 1; } else if(r == GLOB_NOSPACE) { log_err("include: %s: " "fnametern out of memory", fname); @@ -1568,7 +1568,7 @@ config_del_strbytelist(struct config_strbytelist* p) } } -void +void config_delete(struct config_file* cfg) { if(!cfg) return; @@ -1681,7 +1681,7 @@ config_delete(struct config_file* cfg) free(cfg); } -static void +static void init_outgoing_availports(int* a, int num) { /* generated with make iana_update */ @@ -1694,7 +1694,7 @@ init_outgoing_availports(int* a, int num) for(i=1024; istr = item; s->next = NULL; - + if (*head==NULL) { *head = s; } else { @@ -1940,11 +1940,11 @@ cfg_strlist_append_ex(struct config_strlist** head, char* item) } last->next = s; } - - return 1; + + return 1; } -int +int cfg_str2list_insert(struct config_str2list** head, char* item, char* i2) { struct config_str2list *s; @@ -1966,7 +1966,7 @@ cfg_str2list_insert(struct config_str2list** head, char* item, char* i2) return 1; } -int +int cfg_str3list_insert(struct config_str3list** head, char* item, char* i2, char* i3) { @@ -2002,7 +2002,7 @@ cfg_strbytelist_insert(struct config_strbytelist** head, char* item, return 1; } -time_t +time_t cfg_convert_timeval(const char* str) { time_t t; @@ -2010,7 +2010,7 @@ cfg_convert_timeval(const char* str) memset(&tm, 0, sizeof(tm)); if(strlen(str) < 14) return 0; - if(sscanf(str, "%4d%2d%2d%2d%2d%2d", &tm.tm_year, &tm.tm_mon, + if(sscanf(str, "%4d%2d%2d%2d%2d%2d", &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) return 0; tm.tm_year -= 1900; @@ -2027,7 +2027,7 @@ cfg_convert_timeval(const char* str) return t; } -int +int cfg_count_numbers(const char* s) { /* format ::= (sp num)+ sp */ @@ -2062,7 +2062,7 @@ static int isalldigit(const char* str, size_t l) return 1; } -int +int cfg_parse_memsize(const char* str, size_t* res) { size_t len; @@ -2078,11 +2078,11 @@ cfg_parse_memsize(const char* str, size_t* res) /* check appended num */ while(len>0 && str[len-1]==' ') len--; - if(len > 1 && str[len-1] == 'b') + if(len > 1 && str[len-1] == 'b') len--; - else if(len > 1 && str[len-1] == 'B') + else if(len > 1 && str[len-1] == 'B') len--; - + if(len > 1 && tolower((unsigned char)str[len-1]) == 'g') mult = 1024*1024*1024; else if(len > 1 && tolower((unsigned char)str[len-1]) == 'm') @@ -2169,7 +2169,7 @@ uint8_t* config_parse_taglist(struct config_file* cfg, char* str, log_err("out of memory"); return 0; } - + /* parse */ s = str; while((p=strsep(&s, " \t\n")) != NULL) { @@ -2255,7 +2255,7 @@ int taglist_intersect(uint8_t* list1, size_t list1len, const uint8_t* list2, return 0; } -void +void config_apply(struct config_file* config) { MAX_TTL = (time_t)config->max_ttl; @@ -2297,7 +2297,7 @@ void config_lookup_uid(struct config_file* cfg) #endif } -/** +/** * Calculate string length of full pathname in original filesys * @param fname: the path name to convert. * Must not be null or empty. @@ -2311,7 +2311,7 @@ strlen_after_chroot(const char* fname, struct config_file* cfg, int use_chdir) { size_t len = 0; int slashit = 0; - if(cfg->chrootdir && cfg->chrootdir[0] && + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(cfg->chrootdir, fname, strlen(cfg->chrootdir)) == 0) { /* already full pathname, return it */ return strlen(fname); @@ -2334,8 +2334,8 @@ strlen_after_chroot(const char* fname, struct config_file* cfg, int use_chdir) /* prepend chdir */ if(slashit && cfg->directory[0] != '/') len++; - if(cfg->chrootdir && cfg->chrootdir[0] && - strncmp(cfg->chrootdir, cfg->directory, + if(cfg->chrootdir && cfg->chrootdir[0] && + strncmp(cfg->chrootdir, cfg->directory, strlen(cfg->chrootdir)) == 0) len += strlen(cfg->directory)-strlen(cfg->chrootdir); else len += strlen(cfg->directory); @@ -2358,7 +2358,7 @@ fname_after_chroot(const char* fname, struct config_file* cfg, int use_chdir) return NULL; buf[0] = 0; /* is fname already in chroot ? */ - if(cfg->chrootdir && cfg->chrootdir[0] && + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(cfg->chrootdir, fname, strlen(cfg->chrootdir)) == 0) { /* already full pathname, return it */ (void)strlcpy(buf, fname, len); @@ -2384,10 +2384,10 @@ fname_after_chroot(const char* fname, struct config_file* cfg, int use_chdir) if(slashit && cfg->directory[0] != '/') (void)strlcat(buf, "/", len); /* is the directory already in the chroot? */ - if(cfg->chrootdir && cfg->chrootdir[0] && - strncmp(cfg->chrootdir, cfg->directory, + if(cfg->chrootdir && cfg->chrootdir[0] && + strncmp(cfg->chrootdir, cfg->directory, strlen(cfg->chrootdir)) == 0) - (void)strlcat(buf, cfg->directory+strlen(cfg->chrootdir), + (void)strlcat(buf, cfg->directory+strlen(cfg->chrootdir), len); else (void)strlcat(buf, cfg->directory, len); slashit = 1; @@ -2424,7 +2424,7 @@ static char* last_space_pos(const char* str) return (sp>tab)?sp:tab; } -int +int cfg_parse_local_zone(struct config_file* cfg, const char* val) { const char *type, *name_end, *name; @@ -2459,11 +2459,11 @@ cfg_parse_local_zone(struct config_file* cfg, const char* val) } if(strcmp(type, "nodefault")==0) { - return cfg_strlist_insert(&cfg->local_zones_nodefault, + return cfg_strlist_insert(&cfg->local_zones_nodefault, strdup(name)); #ifdef USE_IPSET } else if(strcmp(type, "ipset")==0) { - return cfg_strlist_insert(&cfg->local_zones_ipset, + return cfg_strlist_insert(&cfg->local_zones_ipset, strdup(name)); #endif } else { @@ -2518,7 +2518,7 @@ char* cfg_ptr_reverse(char* str) const char* hex = "0123456789abcdef"; char *p = buf; int i; - memmove(ad, &((struct sockaddr_in6*)&addr)->sin6_addr, + memmove(ad, &((struct sockaddr_in6*)&addr)->sin6_addr, sizeof(ad)); for(i=15; i>=0; i--) { uint8_t b = ad[i]; @@ -2530,7 +2530,7 @@ char* cfg_ptr_reverse(char* str) snprintf(buf+16*4, sizeof(buf)-16*4, "ip6.arpa. "); } else { uint8_t ad[4]; - memmove(ad, &((struct sockaddr_in*)&addr)->sin_addr, + memmove(ad, &((struct sockaddr_in*)&addr)->sin_addr, sizeof(ad)); snprintf(buf, sizeof(buf), "%u.%u.%u.%u.in-addr.arpa. ", (unsigned)ad[3], (unsigned)ad[2], diff --git a/util/config_file.h b/util/config_file.h index 7e1f5b365..1590dc460 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -232,7 +232,7 @@ struct config_file { /** interface description strings (IP addresses) */ char **ifs; - /** number of outgoing interfaces to open. + /** number of outgoing interfaces to open. * If 0 default all interfaces. */ int num_out_ifs; /** outgoing interface description strings (IP addresses) */ @@ -251,7 +251,7 @@ struct config_file { /** list of donotquery addresses, linked list */ struct config_strlist* donotqueryaddrs; #ifdef CLIENT_SUBNET - /** list of servers we send edns-client-subnet option to and + /** list of servers we send edns-client-subnet option to and * accept option from, linked list */ struct config_strlist* client_subnet; /** list of zones we send edns-client-subnet option for */ @@ -367,7 +367,7 @@ struct config_file { /** the module configuration string */ char* module_conf; - + /** files with trusted DS and DNSKEYs in zonefile format, list */ struct config_strlist* trust_anchor_file_list; /** list of trustanchor keys, linked list */ @@ -392,7 +392,7 @@ struct config_file { /** max number of query restarts, number of IPs to probe */ int32_t val_max_restart; /** this value sets the number of seconds before revalidating bogus */ - int bogus_ttl; + int bogus_ttl; /** should validator clean additional section for secure msgs */ int val_clean_additional; /** log bogus messages by the validator */ @@ -816,7 +816,7 @@ struct config_view { struct config_strlist* local_zones_ipset; #endif /** Fallback to global local_zones when there is no match in the view - * view specific tree. 1 for yes, 0 for no */ + * view specific tree. 1 for yes, 0 for no */ int isfirst; /** predefined actions for particular IP address responses */ struct config_str2list* respip_actions; @@ -891,7 +891,7 @@ struct config_file* config_create_forlib(void); * @param config: where options are stored into, must be freshly created. * @param filename: name of configfile. If NULL nothing is done. * @param chroot: if not NULL, the chroot dir currently in use (for include). - * @return: false on error. In that case errno is set, ENOENT means + * @return: false on error. In that case errno is set, ENOENT means * file not found. */ int config_read(struct config_file* config, const char* filename, @@ -926,16 +926,16 @@ void config_lookup_uid(struct config_file* config); int config_set_option(struct config_file* config, const char* option, const char* value); -/** +/** * Call print routine for the given option. * @param cfg: config. - * @param opt: option name without trailing :. + * @param opt: option name without trailing :. * This is different from config_set_option. * @param func: print func, called as (str, arg) for every data element. * @param arg: user argument for print func. * @return false if the option name is not supported (syntax error). */ -int config_get_option(struct config_file* cfg, const char* opt, +int config_get_option(struct config_file* cfg, const char* opt, void (*func)(char*,void*), void* arg); /** @@ -955,7 +955,7 @@ int config_get_option_list(struct config_file* cfg, const char* opt, * @param str: string. malloced, caller must free it. * @return 0=OK, 1=syntax error, 2=malloc failed. */ -int config_get_option_collate(struct config_file* cfg, const char* opt, +int config_get_option_collate(struct config_file* cfg, const char* opt, char** str); /** @@ -1150,7 +1150,7 @@ int cfg_count_numbers(const char* str); * k=1024, m=1024*1024, g=1024*1024*1024. * @param str: string * @param res: result is stored here, size in bytes. - * @return: true if parsed correctly, or 0 on a parse error (and an error + * @return: true if parsed correctly, or 0 on a parse error (and an error * is logged). */ int cfg_parse_memsize(const char* str, size_t* res); @@ -1184,7 +1184,7 @@ int find_tag_id(struct config_file* cfg, const char* tag); /** * parse taglist from string into bytestring with bitlist. * @param cfg: the config structure (with tagnames) - * @param str: the string to parse. Parse puts 0 bytes in string. + * @param str: the string to parse. Parse puts 0 bytes in string. * @param listlen: returns length of in bytes. * @return malloced bytes with a bitlist of the tags. or NULL on parse error * or malloc failure. @@ -1227,7 +1227,7 @@ int cfg_parse_local_zone(struct config_file* cfg, const char* val); * @param allow: give true if this range is permitted. * @param avail: the array from cfg. * @param num: size of the array (65536). - * @return: true if parsed correctly, or 0 on a parse error (and an error + * @return: true if parsed correctly, or 0 on a parse error (and an error * is logged). */ int cfg_mark_ports(const char* str, int allow, int* avail, int num); @@ -1255,7 +1255,7 @@ void cfg_apply_local_port_policy(struct config_file* cfg, int num); */ int cfg_scan_ports(int* avail, int num); -/** +/** * Convert a filename to full pathname in original filesys * @param fname: the path name to convert. * Must not be null or empty. @@ -1264,7 +1264,7 @@ int cfg_scan_ports(int* avail, int num); * @return pointer to malloced buffer which is: [chroot][chdir]fname * or NULL on malloc failure. */ -char* fname_after_chroot(const char* fname, struct config_file* cfg, +char* fname_after_chroot(const char* fname, struct config_file* cfg, int use_chdir); /** @@ -1349,4 +1349,3 @@ int if_is_dnscrypt(const char* ifname, const char* port, int dnscrypt_port); #endif #endif /* UTIL_CONFIG_FILE_H */ - diff --git a/util/configlexer.c b/util/configlexer.c deleted file mode 100644 index 0e3b71ffe..000000000 --- a/util/configlexer.c +++ /dev/null @@ -1,6737 +0,0 @@ -#include "config.h" -#include "util/configyyrename.h" - -#line 2 "" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - (yytext_ptr) -= (yy_more_len); \ - yyleng = (int) (yy_cp - (yytext_ptr)); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 375 -#define YY_END_OF_BUFFER 376 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[3713] = - { 0, - 1, 1, 349, 349, 353, 353, 357, 357, 361, 361, - 1, 1, 365, 365, 369, 369, 376, 373, 1, 347, - 347, 374, 2, 374, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 349, 350, 350, 351, - 374, 353, 354, 354, 355, 374, 360, 357, 358, 358, - 359, 374, 361, 362, 362, 363, 374, 372, 348, 2, - 352, 374, 372, 368, 365, 366, 366, 367, 374, 369, - 370, 370, 371, 374, 373, 0, 1, 2, 2, 2, - 2, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 349, - 0, 353, 0, 360, 0, 357, 361, 0, 372, 0, - 2, 2, 372, 368, 0, 365, 369, 0, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 345, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 134, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 144, 373, 373, 373, 373, - 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 116, 373, 344, 373, - 373, 373, 373, 373, 373, 373, 373, 8, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 135, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 149, 373, 373, 372, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 337, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 69, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 262, 373, 14, 15, 373, 19, 18, 373, 373, - 242, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 142, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 240, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 3, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 372, 373, 373, 373, - 373, 373, 373, 373, 329, 373, 373, 328, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 356, - 373, 373, 373, 373, 373, 373, 373, 373, 68, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 72, 373, 298, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 338, - 339, 373, 373, 373, 373, 373, 373, 373, 373, 73, - 373, 373, 143, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 138, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 229, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 21, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 170, 373, 373, 373, 373, - 373, 372, 356, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 114, 373, 373, 373, 373, 373, - 373, 373, 306, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 197, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 169, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 113, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 35, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 36, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 70, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 141, 373, 373, 373, 372, - 373, 373, 373, 373, 373, 133, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 71, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 266, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 198, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 58, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 284, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 63, 373, 64, 373, 373, 373, 373, 373, 117, 373, - 118, 373, 373, 373, 373, 373, 115, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 7, 373, 373, 373, 373, 372, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 251, 373, 373, 373, 373, 173, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 267, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 49, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 59, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 220, 373, 219, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 16, 17, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 74, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 228, 373, 373, 373, 373, 373, 373, 120, 373, 119, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 211, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 150, 373, 373, 373, - 372, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 108, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 95, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 241, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 100, 373, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 67, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 214, 215, 373, 373, 373, - 300, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 6, 373, 373, 373, - 373, 373, 373, 373, 319, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 304, 373, 373, 373, 373, 373, - - 373, 373, 330, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 46, 373, 373, - 373, 373, 373, 48, 373, 373, 373, 96, 373, 373, - 373, 373, 373, 56, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 372, 373, 207, 373, 373, - 373, 145, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 233, 373, 208, 373, 373, 373, 248, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 57, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 147, 126, 373, 127, 373, 373, 373, 373, 125, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 166, 373, 373, 54, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 283, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 209, 373, 373, 373, 373, 373, - 212, 373, 218, 373, 373, 373, 373, 373, 373, 373, - 373, 247, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 112, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 139, 373, 373, 373, 373, 373, 373, 373, 373, 65, - 373, 373, 373, 29, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 20, 373, 373, 373, - 373, 373, 373, 373, 30, 39, 373, 178, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 205, 373, 373, 372, 373, 373, 373, 373, - 373, 373, 82, 84, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 308, 373, 373, - - 373, 373, 263, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 128, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 165, - 373, 50, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 257, 373, 373, 373, 373, 373, 373, 373, - 323, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 172, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 373, 373, 317, 373, 373, 373, - 373, 239, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 335, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 190, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 121, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 185, 373, 199, 373, 373, 373, 373, 373, 373, 373, - 372, 373, 153, 373, 373, 373, 373, 373, 107, 373, - 373, 373, 373, 231, 373, 373, 373, 373, 373, 373, - - 249, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 275, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 146, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 189, 373, - 373, 373, 373, 373, 373, 373, 85, 373, 86, 373, - 373, 373, 373, 373, 260, 373, 373, 373, 373, 66, - 326, 373, 373, 373, 373, 373, 94, 200, 373, 221, - 373, 252, 373, 373, 213, 301, 373, 373, 373, 373, - 296, 373, 373, 373, 78, 373, 202, 373, 373, 373, - - 373, 373, 373, 9, 373, 373, 373, 373, 373, 111, - 373, 373, 373, 373, 373, 373, 288, 373, 373, 373, - 373, 373, 230, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 372, 373, - 373, 373, 373, 188, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 174, 373, 307, 373, 373, 373, - - 373, 373, 274, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 243, 373, 373, 373, 373, 373, - 373, 299, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 171, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 327, 373, 201, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 77, 79, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 110, 373, 373, 373, 373, - 373, 373, 286, 373, 373, 373, 373, 373, 373, 303, - - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 235, 37, 31, 33, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 38, 373, 32, 34, 373, 40, 373, 373, 373, 373, - 373, 373, 373, 106, 373, 184, 373, 373, 373, 373, - 373, 373, 373, 372, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 237, 234, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 76, 373, 373, 373, - 148, 373, 129, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 373, 373, 167, 51, 373, 373, 373, 364, - 13, 373, 373, 373, 373, 373, 373, 373, 154, 373, - 373, 373, 373, 373, 373, 373, 321, 373, 324, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 12, 373, 373, 22, 373, 373, 373, 373, - 373, 373, 373, 292, 373, 373, 373, 373, 373, 373, - 305, 373, 373, 373, 373, 80, 373, 245, 373, 373, - 373, 373, 373, 236, 373, 373, 373, 75, 373, 373, - 373, 373, 373, 373, 23, 373, 373, 47, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 183, 182, 373, 373, 364, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 238, 232, 373, 250, 373, 373, - 309, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 195, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 87, 373, - 373, 373, 373, 373, 373, 373, 287, 373, 373, 373, - 373, 217, 373, 373, 373, 373, 373, 373, 244, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 294, - 373, 373, 373, 331, 373, 333, 332, 180, 373, 373, - - 373, 81, 373, 373, 373, 373, 191, 373, 373, 373, - 373, 122, 124, 123, 373, 373, 373, 25, 373, 373, - 175, 373, 177, 373, 222, 373, 373, 373, 373, 181, - 373, 373, 373, 373, 253, 373, 373, 373, 373, 373, - 373, 373, 156, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 265, 373, 373, 373, 373, - 373, 373, 373, 342, 373, 27, 373, 302, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 92, 223, 373, 373, - 259, 373, 373, 285, 373, 325, 373, 216, 373, 373, - - 297, 373, 373, 373, 295, 60, 373, 373, 373, 373, - 373, 373, 373, 4, 373, 373, 373, 373, 373, 137, - 373, 155, 373, 373, 373, 196, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 256, 41, 42, 373, 373, - 373, 373, 373, 373, 373, 310, 373, 373, 373, 373, - 373, 373, 373, 273, 373, 373, 373, 373, 373, 373, - 373, 373, 226, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 91, 90, - 373, 373, 61, 373, 373, 291, 373, 261, 373, 373, - - 373, 373, 373, 11, 373, 373, 373, 373, 346, 373, - 373, 373, 373, 373, 136, 373, 373, 373, 373, 373, - 373, 224, 97, 373, 373, 44, 373, 373, 373, 373, - 373, 373, 373, 373, 187, 373, 373, 373, 373, 373, - 373, 373, 158, 373, 373, 373, 373, 264, 373, 373, - 373, 373, 373, 272, 373, 373, 373, 373, 151, 373, - 373, 373, 130, 132, 131, 373, 373, 373, 99, 103, - 98, 373, 168, 373, 373, 373, 373, 88, 373, 258, - 293, 373, 373, 373, 373, 373, 373, 10, 373, 373, - 373, 373, 373, 289, 336, 373, 373, 373, 373, 373, - - 373, 373, 373, 341, 43, 373, 373, 373, 373, 373, - 186, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 104, 102, 373, 373, - 55, 373, 373, 89, 373, 322, 373, 373, 373, 373, - 24, 373, 373, 373, 373, 373, 210, 373, 373, 334, - 373, 373, 373, 373, 225, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 206, 373, 373, 176, 83, 373, - 373, 373, 373, 373, 311, 373, 373, 373, 373, 373, - 373, 373, 269, 373, 373, 268, 152, 373, 373, 101, - - 373, 52, 373, 373, 159, 160, 163, 164, 161, 162, - 93, 320, 373, 373, 290, 140, 373, 373, 373, 373, - 26, 373, 179, 373, 373, 373, 373, 204, 373, 255, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 193, 192, 227, 45, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 318, 373, 373, 373, 373, 109, 373, 254, 373, 282, - 315, 373, 373, 373, 373, 373, 373, 373, 373, 373, - - 373, 373, 343, 373, 105, 53, 62, 5, 373, 373, - 246, 373, 373, 316, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 270, 28, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 271, 373, 373, - 373, 157, 373, 373, 373, 373, 373, 373, 373, 373, - 194, 373, 203, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 312, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 340, 373, 373, 278, 373, 373, 373, 373, 373, 313, - 373, 373, 373, 373, 373, 373, 314, 373, 373, 373, - - 276, 373, 279, 280, 373, 373, 373, 373, 373, 277, - 281, 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 5, 6, 1, 1, 1, 7, 1, - 1, 1, 1, 1, 8, 1, 1, 1, 9, 1, - 10, 11, 1, 12, 1, 1, 1, 13, 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, 14, 1, 1, 1, 1, 15, 16, 17, 18, - - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[41] = - { 0, - 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, - 1, 1, 7, 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 - } ; - -static const flex_int16_t yy_base[3731] = - { 0, - 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3764, 3709, 81, 7235, - 7235, 7235, 129, 52, 130, 63, 131, 152, 70, 140, - 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3203, 7235, 7235, 7235, - 107, 3106, 7235, 7235, 7235, 154, 2980, 2776, 7235, 7235, - 7235, 245, 2512, 7235, 7235, 7235, 163, 2418, 7235, 249, - 7235, 253, 148, 2194, 2170, 7235, 7235, 7235, 257, 1798, - 7235, 7235, 7235, 233, 1739, 263, 201, 0, 267, 0, - 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, - - 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, - 283, 286, 276, 285, 295, 293, 306, 314, 297, 313, - 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, - 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, - 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1474, - 419, 1334, 422, 1196, 429, 1065, 933, 433, 713, 437, - 441, 0, 433, 515, 447, 479, 364, 452, 411, 445, - 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, - 470, 234, 463, 473, 481, 479, 476, 483, 486, 493, - - 488, 489, 495, 491, 501, 508, 505, 506, 504, 510, - 512, 513, 460, 514, 517, 529, 518, 516, 526, 538, - 539, 550, 543, 534, 551, 552, 400, 559, 555, 563, - 558, 570, 565, 574, 566, 569, 571, 576, 573, 577, - 580, 581, 578, 584, 585, 587, 589, 598, 599, 590, - 602, 596, 611, 607, 616, 612, 614, 613, 617, 541, - 627, 628, 620, 629, 630, 624, 633, 641, 637, 649, - 644, 635, 645, 647, 648, 652, 651, 656, 653, 668, - 670, 669, 672, 679, 665, 675, 666, 678, 682, 681, - 691, 654, 686, 693, 698, 683, 696, 699, 687, 702, - - 704, 705, 710, 711, 708, 7235, 718, 714, 721, 722, - 729, 726, 731, 733, 740, 741, 716, 725, 737, 739, - 744, 746, 748, 750, 742, 751, 755, 753, 759, 763, - 770, 765, 772, 785, 767, 773, 777, 806, 778, 774, - 780, 786, 796, 798, 800, 793, 807, 814, 815, 808, - 812, 819, 826, 834, 836, 816, 828, 839, 830, 838, - 820, 845, 852, 847, 7235, 849, 851, 861, 853, 862, - 865, 863, 871, 872, 875, 884, 880, 883, 893, 915, - 885, 886, 882, 895, 898, 7235, 900, 899, 939, 908, - 917, 928, 924, 904, 901, 929, 940, 943, 956, 757, - - 945, 921, 963, 959, 946, 948, 932, 969, 960, 976, - 971, 961, 973, 977, 984, 979, 980, 983, 989, 990, - 992, 993, 997, 998, 994, 1003, 1012, 1013, 1001, 995, - 1007, 1015, 891, 1019, 1018, 1041, 1030, 1020, 1034, 1021, - 1028, 1042, 1035, 1043, 1044, 1047, 1052, 1045, 1060, 1051, - 1067, 1063, 1069, 1070, 1078, 1073, 1074, 1075, 1076, 1079, - 1085, 1080, 1083, 1087, 1088, 1090, 1091, 1097, 1099, 1106, - 1095, 1108, 1111, 1098, 1113, 1101, 7235, 1117, 7235, 1115, - 1120, 1121, 1122, 1124, 1125, 1126, 1127, 7235, 1129, 1132, - 1133, 1140, 1137, 1141, 1143, 1144, 1154, 1148, 1155, 1157, - - 1156, 1158, 1165, 1167, 1164, 1168, 1175, 1172, 1176, 1177, - 1179, 1178, 1180, 1183, 1187, 1188, 1189, 1190, 1209, 7235, - 1191, 1195, 1197, 1201, 1194, 1202, 1206, 1214, 1221, 1219, - 1227, 1220, 1224, 1237, 1238, 1240, 1241, 1243, 1245, 1246, - 1248, 1249, 1254, 1251, 1255, 1257, 1259, 1260, 1262, 1268, - 1261, 1264, 1275, 7235, 1274, 1272, 1284, 1291, 1286, 1287, - 1271, 1289, 1292, 1293, 1295, 1296, 1304, 1294, 1297, 1301, - 1314, 1310, 1319, 1312, 1317, 1315, 1316, 1321, 1325, 1323, - 1327, 1336, 1333, 1338, 1341, 1350, 1348, 1352, 1355, 1359, - 1345, 1354, 1356, 1357, 1361, 1362, 1364, 1367, 1369, 1365, - - 1371, 1373, 1382, 1378, 1379, 1384, 1380, 1386, 1391, 1389, - 1387, 1394, 1393, 1395, 1396, 1403, 1401, 1405, 1410, 1407, - 1414, 1409, 1417, 1423, 1424, 1420, 1426, 7235, 1436, 1431, - 1432, 1438, 1439, 1443, 1445, 1437, 1447, 1448, 1449, 1451, - 1452, 1458, 1454, 1459, 1461, 1460, 1468, 1467, 1470, 1473, - 1475, 1471, 1484, 1491, 1490, 1492, 1476, 1486, 1495, 1496, - 1480, 1504, 1502, 1511, 1503, 1508, 1510, 1512, 1519, 1514, - 1516, 1517, 1526, 1521, 1523, 1525, 1524, 1534, 1531, 1539, - 1542, 1547, 1543, 1548, 1557, 1549, 1552, 1559, 1554, 1562, - 1558, 1565, 1566, 1567, 1568, 1575, 1570, 1571, 1572, 1578, - - 1579, 1581, 1582, 1589, 1596, 1591, 1592, 1595, 1598, 1599, - 1602, 1601, 1608, 1603, 1609, 1610, 1612, 1613, 1618, 1616, - 1614, 1633, 1622, 1624, 1634, 1625, 1635, 1638, 1641, 1642, - 1644, 1647, 1646, 1648, 1656, 1657, 1649, 1658, 1650, 1663, - 1664, 1666, 1674, 1670, 1676, 1680, 1669, 1681, 1671, 1682, - 1685, 1688, 1691, 1694, 1697, 1689, 7235, 1695, 1705, 1701, - 1703, 1704, 1708, 1709, 1717, 1710, 1712, 1713, 1715, 1722, - 1743, 7235, 1720, 7235, 7235, 1724, 7235, 7235, 1723, 1728, - 7235, 1725, 1730, 1729, 1737, 1746, 1756, 1758, 1749, 1726, - 1754, 1751, 1767, 1772, 1766, 1764, 1775, 1770, 1777, 1778, - - 1783, 1780, 1782, 1789, 1792, 1795, 1797, 1805, 1806, 1808, - 1810, 1811, 1814, 1812, 1818, 1819, 1823, 1826, 1827, 1829, - 1830, 1831, 1833, 1832, 1835, 1838, 1841, 1842, 1844, 1837, - 1845, 1856, 1854, 1847, 1864, 7235, 1860, 1872, 1857, 1861, - 1868, 1876, 1869, 1877, 1878, 1873, 1882, 1884, 1886, 1887, - 1889, 1891, 1893, 1892, 1894, 1898, 1900, 1902, 1904, 1903, - 1906, 1915, 1908, 1910, 7235, 1916, 1918, 1917, 1923, 1921, - 1931, 1932, 1922, 1920, 1924, 1935, 1944, 1939, 1946, 1940, - 1942, 1949, 1950, 1951, 1954, 7235, 1960, 1964, 1952, 1966, - 1956, 1959, 1967, 1968, 1972, 1975, 1970, 1976, 1978, 1981, - - 1988, 1985, 1983, 1986, 1989, 1991, 1997, 1998, 1999, 2004, - 2011, 2001, 2007, 2012, 2014, 2015, 2016, 2017, 2018, 2022, - 2024, 2025, 2032, 2029, 2041, 2031, 2028, 2046, 2053, 2050, - 2030, 2051, 2033, 2052, 2055, 2064, 2065, 2057, 2061, 2062, - 2072, 2067, 2069, 2070, 2076, 2074, 2084, 2080, 2082, 2093, - 2085, 2089, 2091, 2097, 7235, 2098, 2099, 7235, 2101, 2100, - 2102, 2124, 2103, 2106, 2111, 2118, 2105, 2108, 2119, 2125, - 2131, 2128, 2138, 2141, 2143, 2144, 2146, 2147, 2151, 2149, - 2153, 2155, 2156, 2159, 2164, 2115, 2166, 2178, 2179, 2175, - 2182, 2186, 2165, 2181, 2183, 2202, 2184, 2185, 2191, 2192, - - 2188, 2193, 2199, 2195, 2197, 2206, 2211, 2212, 2217, 2224, - 2214, 2215, 2223, 2226, 2225, 2229, 2235, 2232, 2237, 7235, - 2244, 2245, 2239, 2246, 2240, 2255, 2254, 2250, 7235, 2252, - 2256, 2260, 2268, 2263, 2264, 2266, 2267, 2270, 2273, 2274, - 2279, 2280, 2275, 2277, 2291, 7235, 2282, 7235, 2278, 2290, - 2295, 2296, 2303, 2299, 2300, 2304, 2302, 2306, 2307, 7235, - 7235, 2308, 2315, 2325, 2327, 2329, 2319, 2316, 2330, 7235, - 2332, 2339, 7235, 2336, 2334, 2341, 2342, 2335, 2345, 2346, - 2347, 2350, 2357, 2352, 2359, 2354, 2358, 2362, 7235, 2366, - 2368, 2370, 2373, 2374, 2377, 2375, 2380, 2381, 2382, 7235, - - 2383, 2387, 2390, 2398, 2400, 2388, 2395, 2401, 2405, 2402, - 2407, 2408, 2409, 2410, 2417, 2421, 2422, 2414, 2424, 2431, - 2427, 2436, 7235, 2433, 2434, 2435, 2443, 2439, 2441, 2442, - 2445, 2448, 2446, 2447, 2456, 2457, 2450, 2458, 2449, 2462, - 2465, 2475, 2476, 2468, 2472, 2479, 2471, 2473, 2480, 2481, - 2309, 2482, 2485, 2486, 2488, 7235, 2489, 2496, 2493, 2497, - 2498, 2491, 171, 2504, 2506, 2507, 2509, 2515, 2517, 2510, - 2526, 2528, 2523, 2527, 2529, 2533, 2534, 2535, 2536, 2525, - 2537, 2543, 2542, 2544, 7235, 2546, 2547, 2551, 2552, 2553, - 2554, 2565, 7235, 2558, 2571, 2555, 2576, 2566, 2564, 2577, - - 2568, 2582, 2583, 2585, 2586, 2589, 2594, 2591, 2593, 2595, - 2597, 7235, 2599, 2603, 2604, 2602, 2610, 2613, 2611, 2612, - 2614, 2618, 2621, 2619, 2623, 2626, 2625, 2628, 2632, 2635, - 2631, 2636, 2645, 2640, 2642, 2643, 2648, 2651, 2653, 2654, - 2655, 2656, 2664, 2657, 7235, 2667, 2659, 2668, 2675, 2666, - 2669, 2676, 2672, 2693, 2678, 2688, 2690, 2694, 2704, 2698, - 2691, 2707, 2714, 2716, 2699, 2724, 2720, 2726, 2728, 2689, - 2732, 2734, 2722, 2730, 2741, 2744, 2740, 2736, 2746, 2747, - 2749, 2750, 2757, 2759, 2755, 2754, 2706, 2756, 2762, 2761, - 2777, 2782, 2773, 7235, 2781, 2771, 2769, 2783, 2787, 2794, - - 2790, 2791, 2792, 2795, 2798, 2800, 2802, 2803, 2810, 2805, - 2808, 2814, 2811, 2818, 2812, 2815, 2827, 2828, 2816, 2830, - 2832, 2829, 2837, 2838, 7235, 2839, 2843, 2833, 2845, 2850, - 2847, 2856, 2857, 2859, 2851, 2853, 2860, 2862, 2863, 2679, - 2865, 2866, 2875, 2871, 2870, 2878, 2873, 7235, 2882, 2877, - 2884, 2888, 2887, 2889, 2890, 2895, 2896, 2902, 2903, 2905, - 2906, 2908, 2909, 2912, 7235, 2917, 2919, 2915, 2918, 2927, - 2922, 2926, 2928, 2930, 2932, 7235, 2933, 2935, 854, 2934, - 2936, 2937, 2946, 2947, 2942, 7235, 2950, 2943, 2951, 2954, - 2955, 2958, 2959, 2961, 2964, 2965, 2968, 2970, 2979, 2966, - - 2976, 7235, 2969, 2993, 2973, 2985, 2995, 2982, 2983, 2997, - 2999, 3000, 3006, 3002, 7235, 3011, 3010, 3013, 3023, 3001, - 3018, 3019, 3021, 3025, 3027, 3028, 3029, 3031, 3033, 7235, - 3034, 3038, 3039, 3040, 3043, 3042, 3035, 3051, 3050, 3052, - 3055, 3058, 3061, 3063, 3064, 3065, 3059, 3075, 3067, 3073, - 3069, 3077, 3081, 3079, 3084, 3071, 3088, 3098, 3101, 3096, - 3099, 3103, 3105, 3097, 3104, 3107, 3114, 3115, 3122, 3117, - 3119, 7235, 3124, 3126, 3127, 3128, 3121, 3129, 3132, 3131, - 3134, 3137, 3140, 3144, 3142, 3145, 3159, 3161, 3150, 3151, - 3154, 3162, 3163, 3166, 3165, 3167, 3168, 3175, 3174, 3176, - - 3177, 3178, 3180, 3188, 3183, 3185, 3195, 3190, 3192, 3196, - 3198, 3199, 3200, 3201, 3204, 3207, 3210, 3205, 3212, 3216, - 3221, 3226, 3227, 3229, 3223, 3230, 3234, 3235, 3238, 7235, - 3237, 3241, 3239, 3242, 3247, 3250, 3251, 3258, 3253, 3259, - 3266, 3264, 3261, 3267, 3270, 3273, 3274, 3275, 3282, 3278, - 7235, 3279, 7235, 3280, 3281, 3284, 3293, 3288, 7235, 3299, - 7235, 3289, 3303, 3294, 3296, 3300, 7235, 3304, 3305, 3309, - 3306, 3311, 3313, 3317, 3318, 3319, 3320, 3321, 3328, 3323, - 3327, 3330, 3334, 3333, 3337, 3340, 3342, 3343, 3345, 3344, - 3347, 3351, 3352, 3353, 3360, 3362, 3363, 3364, 3365, 3366, - - 7235, 3370, 3373, 3367, 3378, 3375, 3377, 3379, 3385, 3386, - 3387, 3388, 3392, 3390, 3394, 3399, 3402, 3396, 3403, 3406, - 3413, 3415, 3407, 3422, 7235, 3417, 3420, 3421, 3424, 7235, - 3428, 3425, 3434, 3436, 3429, 3426, 3432, 3438, 3445, 3439, - 3442, 3448, 3452, 3456, 3459, 3460, 7235, 3453, 3461, 3451, - 3469, 3474, 3465, 3477, 3481, 3478, 3484, 3486, 3488, 3490, - 3467, 3491, 3492, 3493, 3494, 3502, 3504, 3505, 3501, 3514, - 3500, 3507, 3516, 3517, 3503, 3510, 3518, 3519, 3520, 3525, - 3527, 3528, 3526, 3524, 3531, 3532, 3529, 3536, 7235, 3545, - 3546, 3537, 3553, 3551, 3552, 3554, 3555, 3556, 3560, 3563, - - 7235, 3565, 3562, 3570, 3566, 3579, 3573, 3567, 3576, 3583, - 3584, 3587, 3585, 3586, 3589, 7235, 3591, 7235, 3590, 3594, - 3604, 3608, 3609, 3596, 3610, 3617, 3599, 3618, 3619, 3620, - 3623, 3622, 3627, 3628, 3629, 3630, 3631, 3640, 3633, 3641, - 3654, 3644, 3636, 3646, 3648, 3655, 3657, 3664, 3660, 3662, - 7235, 7235, 3661, 3667, 3670, 3672, 3668, 3678, 3676, 3679, - 3683, 3688, 3682, 3689, 3690, 3697, 7235, 3698, 3699, 3701, - 3702, 3703, 3711, 3704, 3716, 3719, 3720, 3718, 3727, 3724, - 7235, 3706, 3728, 3735, 3731, 3734, 3739, 7235, 3738, 7235, - 3736, 3740, 3741, 3745, 3747, 3748, 3749, 3754, 3751, 3756, - - 3758, 3766, 3767, 3774, 3773, 3769, 3778, 3771, 3775, 3779, - 3781, 3783, 3790, 3785, 3786, 3788, 7235, 3795, 3789, 3634, - 3792, 3799, 3800, 3803, 3801, 3804, 7235, 3811, 3812, 3813, - 3814, 3815, 3818, 3820, 3823, 3824, 3829, 3831, 3825, 3834, - 3836, 7235, 3833, 3837, 3844, 3841, 3840, 3849, 3851, 3856, - 3861, 7235, 3842, 3854, 3868, 3865, 3866, 3867, 3870, 3871, - 3872, 3874, 3875, 3876, 3877, 3879, 3883, 3884, 3880, 3887, - 3886, 3898, 3897, 3889, 3901, 3911, 3907, 7235, 3908, 3912, - 3913, 3914, 3915, 3916, 3920, 3921, 3926, 3938, 3919, 3941, - 3942, 3923, 3927, 3929, 3946, 3947, 3955, 3953, 7235, 3958, - - 3954, 3963, 3959, 3960, 3961, 3964, 3969, 3970, 3966, 3974, - 3962, 3975, 3976, 3978, 3979, 3984, 3991, 3987, 3988, 3992, - 3993, 4003, 3994, 3995, 3998, 4002, 7235, 4017, 4004, 4009, - 4019, 4012, 4020, 4028, 4025, 4026, 4027, 4030, 4031, 4032, - 4036, 4037, 4038, 4041, 4042, 7235, 7235, 4044, 4045, 4049, - 7235, 4051, 4047, 4061, 4050, 3917, 4052, 4054, 4063, 4064, - 4065, 4067, 4071, 4073, 4075, 4077, 7235, 4086, 4078, 4087, - 4082, 4085, 4094, 4089, 7235, 4090, 4104, 4096, 4100, 4099, - 4103, 4106, 4110, 4111, 4107, 4112, 4113, 4116, 4120, 4123, - 4128, 4124, 4125, 4130, 7235, 4127, 4132, 4133, 4136, 4137, - - 4139, 4141, 7235, 4143, 4145, 4151, 4153, 4146, 4164, 4165, - 4157, 4167, 4160, 4170, 4171, 4172, 4174, 4175, 4176, 4185, - 4180, 4178, 4182, 4186, 4189, 4191, 4197, 7235, 4200, 4202, - 4183, 4205, 4207, 7235, 4212, 4220, 4221, 7235, 4222, 4204, - 4223, 4217, 4231, 7235, 4224, 4233, 4226, 4234, 4227, 4245, - 4232, 4246, 4242, 4243, 4244, 4248, 4247, 7235, 4249, 4250, - 4251, 7235, 4255, 4265, 4268, 4271, 4257, 4278, 4273, 4275, - 4276, 4274, 7235, 4281, 7235, 4260, 4284, 4287, 7235, 4285, - 4289, 4290, 4292, 4293, 4294, 4298, 4304, 4306, 4300, 4308, - 4309, 4310, 4311, 4313, 4322, 4312, 4314, 4319, 4321, 7235, - - 4324, 4326, 4331, 4332, 4328, 4333, 4338, 4339, 4342, 4345, - 4343, 7235, 7235, 4353, 7235, 4346, 4354, 4355, 4357, 7235, - 4359, 4358, 4366, 4361, 4364, 4367, 4362, 4368, 4380, 4375, - 7235, 4382, 4384, 7235, 4377, 4387, 4394, 4389, 4390, 4391, - 4392, 4395, 4398, 4401, 4402, 4404, 4405, 4406, 4408, 4410, - 4409, 4427, 4415, 4423, 7235, 4411, 4417, 4432, 4436, 4428, - 4430, 4445, 4447, 4433, 7235, 4449, 4437, 4441, 4451, 4455, - 7235, 4457, 7235, 4443, 4458, 4460, 4463, 4464, 4468, 4475, - 4470, 7235, 4471, 4477, 4479, 4474, 4476, 4480, 4484, 4487, - 4485, 4486, 4493, 4501, 4494, 4496, 4498, 4508, 4497, 7235, - - 4506, 4512, 4511, 4515, 4516, 4518, 4519, 4520, 4527, 4528, - 4522, 4530, 4531, 4536, 4532, 4537, 4541, 4543, 4545, 4546, - 7235, 4549, 4551, 4554, 4555, 4567, 4557, 4559, 4558, 7235, - 4562, 4572, 4573, 7235, 4571, 4575, 4579, 4581, 4582, 4585, - 4586, 4589, 4565, 4587, 4591, 4592, 7235, 4596, 4598, 4593, - 4594, 4602, 4609, 4611, 7235, 7235, 4614, 7235, 4615, 4612, - 4616, 4619, 4617, 4623, 4625, 4627, 4639, 4622, 4626, 4630, - 4641, 4643, 7235, 4628, 4650, 4648, 4655, 4657, 4658, 4659, - 4653, 4660, 7235, 7235, 4664, 4666, 4665, 4669, 4671, 4673, - 4675, 4682, 4678, 4686, 4689, 4679, 4696, 7235, 4691, 4677, - - 4694, 4699, 7235, 4700, 4701, 4703, 4702, 4704, 4705, 4708, - 4707, 4710, 4711, 4713, 4714, 4716, 4729, 4720, 4721, 4722, - 4730, 4732, 4736, 4735, 4728, 4744, 7235, 4737, 4739, 4749, - 4750, 4752, 4753, 4754, 4755, 4759, 4757, 4762, 4766, 7235, - 4764, 7235, 4761, 4767, 4780, 4763, 4770, 4783, 4784, 4785, - 4787, 4772, 4791, 4793, 4794, 4798, 4799, 4803, 4792, 4804, - 4808, 4809, 7235, 4812, 4814, 4816, 4818, 4823, 4825, 4826, - 7235, 4828, 4820, 4829, 4832, 4835, 4837, 4838, 4842, 4843, - 4846, 4839, 4847, 4851, 4856, 4848, 4858, 4859, 4853, 4864, - 4865, 4866, 7235, 4868, 4872, 4869, 4875, 4876, 4877, 4878, - - 4880, 4886, 4890, 4881, 4891, 4893, 7235, 4892, 4896, 4898, - 4905, 7235, 4901, 4903, 4904, 4908, 4909, 4911, 4912, 4914, - 4917, 4924, 7235, 4929, 4916, 4926, 4920, 4922, 4930, 4935, - 4937, 4941, 4938, 4943, 4946, 7235, 4957, 4944, 4953, 4954, - 4952, 4955, 4960, 4961, 4962, 4965, 7235, 4969, 4971, 4973, - 4972, 4985, 4986, 4975, 4982, 4989, 4988, 4990, 4984, 4992, - 4998, 4994, 4999, 5002, 5003, 5004, 5006, 5016, 5021, 5018, - 7235, 5007, 7235, 5017, 5019, 5023, 5031, 5029, 5026, 5032, - 5034, 5036, 7235, 5041, 5043, 5045, 5040, 5042, 7235, 5048, - 5046, 5049, 5053, 7235, 5047, 5061, 5052, 5063, 5068, 5069, - - 7235, 5074, 5076, 5077, 5084, 5086, 5081, 5088, 5071, 5091, - 5083, 5089, 5093, 5096, 5100, 5099, 5101, 7235, 5098, 5104, - 5109, 5105, 5111, 5114, 5115, 5117, 5118, 5120, 5121, 7235, - 5125, 5126, 5127, 5128, 5129, 5131, 5132, 5133, 5142, 5139, - 5140, 5149, 5144, 5151, 5153, 5154, 5155, 5157, 7235, 5161, - 5158, 5160, 5169, 5177, 5167, 5164, 7235, 5178, 7235, 5168, - 5179, 5180, 5183, 5184, 7235, 5188, 5189, 5190, 5194, 7235, - 7235, 5196, 5203, 5198, 5202, 5199, 7235, 7235, 5205, 7235, - 5206, 7235, 5207, 5209, 7235, 7235, 5212, 5211, 5213, 5214, - 7235, 5215, 5218, 5227, 7235, 5229, 7235, 5236, 5219, 5232, - - 5222, 5234, 5240, 7235, 5241, 5243, 5242, 5247, 5249, 7235, - 5250, 5244, 5251, 5258, 5255, 5261, 7235, 5263, 5264, 5265, - 5268, 5271, 7235, 5269, 5275, 5272, 5278, 5281, 5279, 5280, - 5291, 5283, 5286, 5282, 5298, 5295, 5299, 5301, 5305, 5308, - 5310, 5312, 5302, 5316, 5313, 5317, 5320, 5323, 5325, 5327, - 5328, 5329, 5330, 5332, 5333, 5335, 5336, 5338, 5343, 5340, - 5345, 5346, 5347, 5352, 5356, 5357, 5359, 5360, 5366, 5361, - 5368, 5363, 5371, 5369, 5372, 5373, 5375, 5381, 5374, 5377, - 5384, 5385, 5388, 7235, 5390, 5392, 5394, 5395, 5399, 5401, - 5402, 5405, 5410, 5411, 7235, 5415, 7235, 5418, 5420, 5421, - - 5422, 5424, 7235, 5423, 5426, 5425, 5428, 5427, 5429, 5431, - 5430, 5434, 5435, 5445, 7235, 5451, 5457, 5440, 5437, 5458, - 5461, 7235, 5462, 5464, 5465, 5466, 5468, 5469, 5470, 5472, - 5473, 5477, 5475, 5474, 5480, 5482, 5489, 5479, 5492, 5495, - 7235, 5497, 5503, 5504, 5500, 5505, 5506, 5507, 5508, 5509, - 5512, 5513, 5515, 5516, 5517, 5519, 5520, 5527, 5531, 5532, - 5538, 7235, 5524, 7235, 5540, 5541, 5542, 5544, 5545, 5546, - 5547, 5548, 5551, 7235, 7235, 5553, 5556, 5555, 5562, 5557, - 5559, 5576, 5567, 5565, 5579, 7235, 5569, 5571, 5581, 5585, - 5591, 5582, 7235, 5588, 5592, 5594, 5593, 5596, 5598, 7235, - - 5599, 5600, 5602, 5604, 5608, 5610, 5615, 5617, 5618, 5619, - 5620, 5621, 5624, 7235, 7235, 7235, 7235, 5625, 5628, 5630, - 5634, 5631, 5636, 5638, 5639, 5645, 5646, 5643, 5640, 5647, - 7235, 5657, 7235, 7235, 5653, 7235, 5659, 5661, 5663, 5665, - 5650, 5667, 5666, 7235, 5670, 7235, 5672, 5678, 5671, 5680, - 5682, 5684, 5687, 5691, 5688, 5692, 5693, 5694, 5702, 5698, - 5699, 5701, 5704, 5708, 5714, 7235, 7235, 5705, 5720, 5721, - 5723, 5710, 5725, 5726, 5733, 5728, 5729, 5735, 5731, 5737, - 5736, 5747, 5748, 5738, 5739, 5750, 7235, 5752, 5753, 5760, - 7235, 5754, 7235, 5756, 5762, 5764, 5755, 5765, 5768, 5770, - - 5771, 5774, 5776, 5781, 7235, 7235, 5775, 5788, 5784, 7235, - 7235, 5785, 5787, 5789, 5791, 5795, 5792, 5796, 7235, 5797, - 5802, 5800, 5798, 5803, 5817, 5805, 7235, 5808, 7235, 5812, - 5821, 5820, 5814, 5828, 5833, 5826, 5829, 5836, 5835, 5838, - 5831, 5837, 7235, 5840, 5841, 7235, 5850, 5848, 5853, 5843, - 5852, 5859, 5855, 7235, 5862, 5860, 5865, 5867, 5869, 5872, - 7235, 5874, 5875, 5876, 5877, 7235, 5883, 7235, 5880, 5884, - 5885, 5893, 5891, 7235, 5888, 5894, 5895, 7235, 5899, 5902, - 5905, 5906, 5907, 5910, 7235, 5912, 5913, 7235, 5915, 5917, - 5918, 5922, 5924, 5926, 5927, 5928, 5929, 5936, 5933, 5934, - - 7235, 7235, 5947, 5937, 135, 5950, 5945, 5951, 5952, 5948, - 5959, 5955, 5956, 5958, 7235, 7235, 5961, 7235, 5962, 5964, - 7235, 5963, 5973, 5974, 5965, 5979, 5969, 5977, 5978, 5986, - 5981, 5990, 5989, 5991, 5994, 7235, 6005, 6012, 5996, 6008, - 6013, 6016, 6018, 6020, 6022, 6009, 6024, 6026, 6027, 6028, - 6030, 6031, 6032, 6033, 6034, 6035, 6039, 6040, 7235, 6042, - 6048, 6049, 6050, 6057, 6058, 6045, 7235, 6062, 6066, 6068, - 6069, 7235, 6071, 6072, 6075, 6077, 6078, 6079, 7235, 6080, - 6083, 6086, 6089, 6090, 6091, 6092, 6094, 6095, 6102, 7235, - 6100, 6097, 6104, 7235, 6105, 7235, 7235, 7235, 6107, 6117, - - 6111, 7235, 6119, 6114, 6121, 6122, 7235, 6124, 6126, 6133, - 6129, 7235, 7235, 7235, 6130, 6131, 6134, 7235, 6132, 6144, - 7235, 6137, 7235, 6139, 7235, 6142, 6145, 6153, 6148, 7235, - 6151, 6158, 6159, 6161, 7235, 6164, 6167, 6169, 6170, 6172, - 6174, 6175, 7235, 6182, 6178, 6181, 6185, 6177, 6187, 6188, - 6189, 6190, 6197, 6196, 6201, 7235, 6198, 6205, 6206, 6203, - 6207, 6212, 6213, 7235, 6214, 7235, 6216, 7235, 6217, 6218, - 6219, 6220, 6229, 6223, 6222, 6225, 6235, 6236, 6237, 6242, - 6244, 6245, 6246, 6248, 6250, 6251, 7235, 7235, 6260, 6252, - 7235, 6255, 6265, 7235, 6258, 7235, 6268, 7235, 6262, 6269, - - 7235, 6271, 6273, 6275, 7235, 7235, 6282, 6274, 6277, 6290, - 6283, 6288, 6291, 7235, 6292, 6295, 6296, 6298, 6300, 7235, - 6303, 7235, 6301, 6308, 6307, 7235, 6304, 6305, 6314, 6318, - 6319, 6320, 6323, 6324, 6327, 6325, 6338, 6311, 6329, 6328, - 6344, 6337, 6346, 6347, 6353, 7235, 7235, 7235, 6339, 6355, - 6362, 6358, 6360, 6365, 6361, 7235, 6364, 6367, 6368, 6370, - 6377, 6374, 6381, 7235, 6372, 6376, 6378, 6382, 6386, 6383, - 6388, 6387, 7235, 6398, 6400, 6406, 6407, 6401, 6408, 6410, - 6417, 6419, 6411, 6422, 6414, 6423, 6430, 6426, 7235, 7235, - 6429, 6425, 7235, 6433, 6435, 7235, 6436, 7235, 6437, 6438, - - 6439, 6440, 6442, 7235, 6445, 6446, 6447, 6450, 7235, 6448, - 6452, 6454, 6457, 6463, 7235, 6451, 6471, 6470, 6473, 6474, - 6475, 7235, 7235, 6476, 6478, 7235, 6482, 6483, 6484, 6491, - 6487, 6486, 6496, 6500, 7235, 6489, 6501, 6502, 6503, 6504, - 6507, 6508, 7235, 6510, 6511, 6512, 6513, 7235, 6516, 6515, - 6520, 6521, 6524, 7235, 6535, 6525, 6547, 6539, 7235, 6526, - 6390, 6536, 7235, 7235, 7235, 6528, 6551, 6548, 7235, 7235, - 7235, 6543, 7235, 6554, 6555, 6556, 6562, 7235, 6557, 7235, - 7235, 6564, 6568, 6573, 6577, 6581, 6580, 7235, 6569, 6582, - 6586, 6583, 6588, 7235, 7235, 6590, 6592, 6567, 6594, 6595, - - 6597, 6598, 6599, 7235, 7235, 6603, 6604, 6605, 6606, 6607, - 7235, 6608, 6612, 6621, 6618, 6623, 6630, 6632, 6610, 6633, - 6634, 6641, 6642, 6637, 6639, 6644, 6645, 6647, 6648, 6656, - 6657, 6653, 6661, 6664, 6658, 6666, 7235, 7235, 6669, 6670, - 7235, 6675, 6672, 7235, 6676, 7235, 6678, 6680, 6683, 6686, - 7235, 6688, 6690, 6692, 6696, 6693, 7235, 6697, 6699, 7235, - 6701, 6702, 6703, 6704, 7235, 6705, 6708, 6709, 6713, 6710, - 6714, 6717, 6721, 6731, 7235, 6718, 6735, 7235, 7235, 6723, - 6736, 6716, 6737, 6726, 7235, 6740, 6751, 6732, 6747, 6748, - 6750, 6749, 7235, 6753, 6754, 7235, 7235, 6756, 6755, 7235, - - 6757, 7235, 6761, 6762, 7235, 7235, 7235, 7235, 7235, 7235, - 7235, 7235, 6764, 6771, 7235, 7235, 6766, 6773, 6776, 6778, - 7235, 6781, 7235, 6783, 6784, 6785, 6788, 7235, 6786, 7235, - 6790, 6791, 6792, 5998, 6794, 6795, 6798, 6799, 6801, 6804, - 6803, 6807, 6805, 6812, 6810, 6816, 6817, 6821, 6823, 6831, - 6825, 6827, 7235, 7235, 7235, 7235, 6833, 6834, 6836, 6839, - 6841, 6843, 6850, 6852, 6838, 6846, 6853, 6855, 6858, 6859, - 6861, 6868, 6864, 6865, 6867, 6870, 6871, 6874, 6880, 6882, - 7235, 6886, 6875, 6883, 6888, 7235, 6889, 7235, 6892, 7235, - 7235, 6894, 6895, 6897, 6898, 6906, 6907, 6899, 6903, 6908, - - 6909, 6912, 7235, 6919, 7235, 7235, 7235, 7235, 6915, 6920, - 7235, 6921, 6922, 7235, 6923, 6924, 6925, 6928, 6932, 6930, - 6933, 6934, 6947, 7235, 7235, 6931, 6937, 6942, 6953, 6954, - 6956, 6957, 6960, 6962, 6963, 6964, 6972, 7235, 6970, 6971, - 6974, 7235, 6975, 6977, 6978, 6980, 6981, 6988, 6984, 6989, - 7235, 6986, 7235, 6991, 6992, 6993, 6994, 6995, 6997, 7005, - 7007, 7008, 7235, 7009, 7015, 7011, 7017, 7019, 7022, 7024, - 7023, 7026, 7028, 7032, 7037, 7038, 7039, 7029, 7044, 7040, - 7235, 7051, 7041, 7235, 7047, 7053, 7043, 7054, 7055, 7235, - 7064, 7057, 7061, 7065, 7068, 7070, 7235, 7072, 7075, 7078, - - 7235, 7079, 7235, 7235, 7081, 7069, 7082, 7090, 7092, 7235, - 7235, 7235, 7115, 7122, 7129, 7136, 7143, 7150, 7157, 88, - 7164, 7171, 7178, 7185, 7192, 7199, 7206, 7213, 7220, 7227 - } ; - -static const flex_int16_t yy_def[3731] = - { 0, - 3712, 1, 3713, 3713, 3714, 3714, 3715, 3715, 3716, 3716, - 3717, 3717, 3718, 3718, 3719, 3719, 3712, 3720, 3712, 3712, - 3712, 3712, 3721, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3722, 3712, 3712, 3712, - 3722, 3723, 3712, 3712, 3712, 3723, 3724, 3712, 3712, 3712, - 3712, 3724, 3725, 3712, 3712, 3712, 3725, 3726, 3712, 3727, - 3712, 3726, 3726, 3728, 3712, 3712, 3712, 3712, 3728, 3729, - 3712, 3712, 3712, 3729, 3720, 3720, 3712, 3730, 3721, 3730, - 3721, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3722, - 3722, 3723, 3723, 3724, 3724, 3712, 3725, 3725, 3726, 3726, - 3727, 3727, 3726, 3728, 3728, 3712, 3729, 3729, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3726, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3712, 3712, 3720, 3712, 3712, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3726, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3726, 3726, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3726, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3712, 3720, 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3726, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3726, 3720, 3712, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3726, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3726, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, - 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3712, - 3720, 3712, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, - - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3726, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, - - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3712, 3712, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3712, 3712, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3712, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3712, 3712, 3720, 3720, 3726, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3712, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3712, 3720, 3712, 3712, 3712, 3720, 3720, - - 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - 3720, 3712, 3712, 3712, 3720, 3720, 3720, 3712, 3720, 3720, - 3712, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, - 3712, 3720, 3720, 3712, 3720, 3712, 3720, 3712, 3720, 3720, - - 3712, 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3712, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3712, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3712, - 3720, 3720, 3712, 3720, 3720, 3712, 3720, 3712, 3720, 3720, - - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3712, 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, - 3720, 3720, 3712, 3712, 3712, 3720, 3720, 3720, 3712, 3712, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3712, 3720, 3720, - 3712, 3720, 3720, 3712, 3720, 3712, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3712, 3712, 3720, - 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3712, 3712, 3720, 3720, 3712, - - 3720, 3712, 3720, 3720, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3712, 3712, 3712, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3720, 3720, 3712, 3720, 3712, 3720, 3712, - 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - - 3720, 3720, 3712, 3720, 3712, 3712, 3712, 3712, 3720, 3720, - 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, - 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, 3720, - 3712, 3720, 3720, 3712, 3720, 3720, 3720, 3720, 3720, 3712, - 3720, 3720, 3720, 3720, 3720, 3720, 3712, 3720, 3720, 3720, - - 3712, 3720, 3712, 3712, 3720, 3720, 3720, 3720, 3720, 3712, - 3712, 0, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712 - } ; - -static const flex_int16_t yy_nxt[7276] = - { 0, - 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, - 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, - 18, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 18, 18, 18, 46, - 48, 49, 50, 48, 49, 50, 53, 54, 53, 54, - 55, 51, 55, 85, 51, 85, 85, 56, 85, 56, - 58, 59, 60, 61, 85, 22, 58, 59, 60, 61, - 86, 22, 62, 64, 65, 66, 86, 97, 62, 64, - 65, 66, 87, 86, 67, 119, 88, 108, 85, 86, - 67, 19, 20, 21, 69, 70, 71, 75, 76, 77, - - 78, 86, 22, 72, 121, 86, 120, 109, 86, 79, - 160, 160, 73, 19, 20, 21, 69, 70, 71, 75, - 76, 77, 78, 187, 22, 72, 81, 82, 83, 130, - 90, 79, 90, 90, 73, 90, 86, 84, 81, 82, - 83, 90, 91, 86, 86, 98, 92, 93, 170, 84, - 94, 159, 99, 86, 110, 95, 100, 162, 86, 101, - 162, 170, 86, 112, 96, 86, 167, 167, 111, 86, - 102, 113, 137, 115, 103, 173, 116, 104, 86, 105, - 106, 179, 114, 117, 170, 118, 86, 122, 86, 126, - 107, 86, 156, 127, 86, 123, 157, 184, 86, 138, - - 158, 124, 87, 139, 86, 125, 88, 128, 180, 129, - 86, 131, 86, 140, 141, 132, 142, 143, 86, 133, - 144, 86, 148, 86, 149, 134, 86, 145, 135, 86, - 152, 146, 147, 150, 86, 136, 177, 177, 183, 151, - 153, 181, 196, 189, 154, 155, 164, 86, 164, 164, - 90, 164, 90, 90, 169, 90, 169, 169, 174, 169, - 174, 174, 172, 174, 85, 86, 85, 85, 90, 85, - 90, 90, 291, 90, 86, 85, 86, 182, 86, 90, - 91, 185, 190, 188, 86, 86, 197, 86, 191, 86, - 192, 86, 86, 208, 186, 86, 86, 86, 86, 86, - - 200, 199, 193, 194, 86, 198, 86, 195, 86, 201, - 86, 202, 247, 210, 206, 203, 204, 207, 209, 86, - 211, 216, 212, 205, 86, 213, 86, 86, 86, 218, - 86, 219, 86, 221, 86, 86, 227, 222, 214, 215, - 86, 228, 226, 224, 86, 86, 217, 230, 225, 86, - 86, 220, 86, 223, 231, 233, 234, 229, 86, 86, - 86, 86, 232, 236, 86, 238, 86, 242, 235, 239, - 86, 86, 86, 86, 244, 240, 237, 178, 86, 86, - 86, 241, 86, 245, 243, 250, 253, 254, 86, 246, - 255, 249, 86, 86, 86, 256, 251, 248, 262, 259, - - 252, 263, 86, 86, 261, 265, 86, 86, 86, 86, - 260, 269, 257, 86, 266, 258, 86, 86, 264, 268, - 270, 272, 160, 160, 86, 162, 267, 271, 162, 275, - 164, 273, 164, 164, 341, 164, 167, 167, 169, 86, - 169, 169, 90, 169, 90, 90, 170, 90, 174, 274, - 174, 174, 276, 174, 172, 177, 177, 278, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 277, 280, 86, - 283, 286, 282, 86, 279, 281, 86, 289, 288, 285, - 176, 292, 284, 86, 290, 287, 86, 293, 294, 86, - 295, 321, 86, 298, 86, 296, 86, 303, 299, 86, - - 305, 86, 86, 300, 86, 306, 86, 308, 86, 301, - 302, 304, 297, 309, 86, 312, 310, 86, 86, 86, - 307, 86, 314, 86, 315, 86, 86, 86, 175, 86, - 86, 86, 322, 316, 311, 323, 329, 317, 319, 86, - 318, 320, 86, 324, 313, 332, 325, 86, 326, 330, - 336, 86, 86, 333, 86, 331, 86, 334, 338, 339, - 327, 378, 328, 86, 86, 86, 342, 337, 86, 335, - 344, 86, 86, 343, 340, 345, 86, 346, 86, 86, - 347, 349, 86, 86, 86, 348, 86, 86, 351, 86, - 86, 86, 350, 86, 86, 353, 359, 86, 86, 354, - - 86, 357, 86, 86, 352, 364, 360, 358, 355, 86, - 365, 86, 86, 361, 356, 86, 362, 366, 370, 368, - 86, 367, 363, 373, 86, 86, 86, 86, 376, 86, - 86, 369, 375, 86, 379, 380, 382, 86, 371, 372, - 86, 86, 86, 86, 387, 374, 86, 385, 86, 377, - 86, 384, 381, 386, 86, 383, 389, 86, 86, 390, - 170, 86, 86, 393, 86, 86, 86, 86, 388, 86, - 412, 392, 394, 396, 398, 400, 391, 401, 86, 86, - 395, 86, 86, 86, 397, 86, 404, 402, 86, 399, - 403, 86, 86, 405, 86, 86, 86, 407, 411, 86, - - 86, 413, 406, 409, 86, 408, 86, 414, 415, 86, - 417, 86, 86, 418, 416, 86, 419, 86, 86, 410, - 421, 86, 422, 86, 86, 426, 170, 86, 428, 86, - 420, 86, 423, 424, 86, 86, 430, 429, 86, 86, - 425, 427, 86, 431, 86, 433, 86, 435, 436, 438, - 86, 434, 86, 86, 86, 86, 439, 86, 442, 86, - 432, 86, 443, 86, 86, 441, 86, 445, 86, 448, - 86, 440, 86, 437, 446, 450, 86, 453, 86, 444, - 86, 454, 447, 86, 449, 86, 86, 86, 452, 462, - 86, 86, 451, 86, 471, 464, 563, 455, 86, 86, - - 472, 474, 475, 476, 463, 473, 86, 456, 477, 86, - 457, 86, 479, 86, 478, 458, 459, 460, 461, 86, - 86, 86, 465, 480, 466, 86, 481, 86, 86, 86, - 486, 488, 86, 86, 487, 482, 467, 468, 469, 86, - 470, 86, 483, 86, 489, 484, 485, 86, 490, 86, - 491, 86, 86, 497, 492, 495, 493, 494, 86, 499, - 86, 500, 86, 501, 86, 86, 86, 86, 506, 505, - 496, 507, 502, 498, 86, 86, 86, 1605, 86, 503, - 508, 510, 504, 511, 86, 86, 509, 513, 86, 518, - 512, 519, 520, 86, 517, 86, 86, 86, 86, 86, - - 514, 521, 535, 515, 86, 516, 86, 522, 86, 523, - 537, 86, 86, 86, 86, 524, 540, 170, 534, 525, - 536, 86, 602, 538, 526, 539, 542, 527, 86, 528, - 86, 529, 541, 558, 86, 553, 551, 86, 557, 552, - 554, 86, 86, 555, 530, 86, 168, 531, 565, 532, - 556, 533, 86, 86, 543, 544, 86, 559, 86, 86, - 572, 86, 560, 562, 545, 546, 547, 548, 549, 86, - 566, 550, 86, 86, 86, 561, 86, 568, 564, 570, - 567, 571, 86, 575, 86, 576, 86, 573, 574, 86, - 86, 580, 86, 86, 577, 569, 86, 86, 578, 584, - - 585, 583, 86, 86, 579, 86, 86, 86, 86, 582, - 86, 86, 591, 590, 86, 598, 86, 581, 592, 593, - 86, 587, 588, 586, 589, 86, 86, 599, 86, 595, - 596, 86, 86, 86, 86, 600, 594, 614, 617, 604, - 605, 86, 615, 86, 601, 597, 603, 86, 86, 619, - 618, 606, 616, 607, 86, 86, 86, 86, 86, 608, - 86, 622, 621, 623, 86, 86, 166, 609, 610, 620, - 624, 611, 612, 86, 626, 613, 86, 627, 625, 628, - 86, 629, 86, 86, 631, 632, 86, 86, 86, 86, - 633, 86, 86, 86, 636, 630, 86, 637, 86, 638, - - 86, 86, 634, 86, 86, 640, 644, 639, 86, 635, - 86, 86, 86, 643, 86, 646, 641, 647, 642, 86, - 649, 86, 650, 648, 86, 645, 86, 653, 86, 651, - 86, 655, 652, 86, 86, 86, 654, 86, 86, 86, - 86, 657, 86, 661, 659, 86, 86, 668, 670, 656, - 86, 672, 663, 86, 86, 658, 86, 86, 660, 662, - 664, 86, 665, 666, 669, 671, 667, 86, 86, 86, - 86, 86, 673, 677, 681, 674, 675, 86, 86, 676, - 86, 86, 684, 678, 683, 86, 679, 680, 86, 86, - 86, 86, 86, 86, 687, 690, 86, 682, 691, 686, - - 86, 86, 86, 86, 86, 693, 685, 86, 86, 165, - 86, 692, 688, 689, 86, 86, 696, 694, 708, 86, - 710, 695, 86, 697, 705, 707, 709, 86, 698, 706, - 699, 712, 86, 86, 86, 711, 700, 86, 701, 713, - 86, 702, 703, 714, 721, 716, 720, 715, 704, 718, - 86, 86, 719, 86, 86, 722, 86, 725, 86, 86, - 728, 86, 86, 730, 86, 717, 723, 86, 86, 724, - 86, 734, 86, 86, 86, 86, 732, 86, 727, 726, - 737, 86, 731, 733, 86, 86, 729, 86, 86, 743, - 738, 735, 740, 739, 741, 736, 742, 170, 745, 86, - - 86, 744, 86, 748, 86, 86, 86, 86, 86, 86, - 86, 746, 752, 757, 86, 747, 749, 86, 756, 754, - 750, 758, 753, 86, 751, 86, 760, 86, 86, 86, - 86, 755, 86, 762, 86, 759, 86, 761, 86, 765, - 86, 766, 763, 771, 764, 767, 86, 163, 772, 86, - 774, 86, 768, 775, 86, 769, 770, 776, 86, 773, - 777, 86, 779, 86, 778, 86, 780, 86, 86, 86, - 86, 781, 86, 785, 86, 86, 782, 86, 86, 786, - 86, 784, 86, 789, 86, 788, 86, 790, 783, 794, - 793, 86, 86, 86, 787, 86, 796, 86, 798, 86, - - 86, 791, 86, 792, 86, 800, 86, 86, 86, 86, - 807, 795, 803, 799, 86, 797, 86, 801, 86, 808, - 86, 802, 86, 86, 805, 804, 810, 86, 815, 806, - 86, 811, 809, 86, 812, 813, 86, 86, 814, 86, - 816, 818, 819, 822, 86, 86, 817, 820, 824, 86, - 86, 86, 86, 823, 821, 825, 86, 827, 86, 828, - 86, 86, 86, 829, 86, 86, 830, 86, 832, 834, - 836, 86, 86, 86, 86, 833, 837, 826, 831, 839, - 86, 86, 845, 86, 86, 835, 86, 161, 86, 86, - 846, 838, 843, 86, 840, 841, 842, 86, 844, 86, - - 847, 848, 849, 86, 86, 86, 850, 852, 86, 86, - 851, 857, 856, 853, 855, 86, 86, 86, 859, 860, - 858, 86, 854, 86, 86, 86, 864, 86, 862, 86, - 86, 865, 86, 871, 86, 868, 86, 86, 86, 86, - 866, 863, 867, 874, 86, 873, 861, 86, 876, 869, - 870, 877, 86, 872, 881, 86, 86, 875, 879, 878, - 86, 86, 86, 887, 885, 86, 883, 86, 882, 886, - 86, 86, 86, 880, 889, 86, 884, 891, 86, 86, - 86, 86, 897, 86, 86, 86, 890, 898, 86, 892, - 888, 86, 86, 899, 86, 86, 893, 894, 904, 895, - - 900, 896, 86, 907, 86, 86, 901, 905, 86, 86, - 902, 86, 86, 903, 86, 86, 86, 906, 914, 909, - 910, 86, 86, 86, 908, 86, 86, 86, 924, 86, - 911, 86, 916, 912, 913, 86, 922, 86, 86, 915, - 917, 918, 919, 923, 920, 921, 86, 86, 86, 926, - 925, 86, 929, 930, 86, 86, 927, 86, 928, 86, - 86, 86, 86, 86, 934, 935, 936, 931, 933, 86, - 86, 86, 942, 932, 938, 939, 86, 86, 941, 86, - 940, 946, 86, 170, 86, 937, 944, 86, 947, 86, - 943, 945, 948, 86, 86, 86, 950, 949, 86, 952, - - 955, 86, 86, 951, 86, 956, 958, 86, 86, 953, - 86, 960, 962, 957, 86, 959, 86, 86, 86, 954, - 964, 86, 86, 86, 968, 86, 86, 961, 86, 965, - 86, 969, 970, 86, 963, 86, 86, 86, 86, 86, - 967, 86, 86, 86, 971, 983, 966, 984, 981, 986, - 86, 987, 86, 972, 982, 973, 86, 993, 974, 86, - 985, 975, 86, 989, 86, 976, 988, 86, 977, 86, - 990, 86, 991, 992, 996, 978, 979, 86, 980, 86, - 86, 994, 1006, 86, 995, 86, 997, 998, 86, 999, - 86, 86, 1000, 86, 1009, 86, 86, 1001, 1013, 1005, - - 1011, 1008, 86, 1002, 1003, 86, 1004, 1015, 86, 1007, - 86, 178, 1019, 1018, 1014, 1010, 1012, 1020, 86, 86, - 1016, 86, 1022, 86, 86, 86, 1021, 86, 1025, 1024, - 1026, 86, 86, 1017, 1027, 1029, 86, 1028, 1023, 86, - 86, 1030, 86, 86, 86, 86, 86, 1033, 86, 1037, - 86, 86, 1031, 1036, 86, 86, 1040, 86, 86, 1046, - 86, 1032, 1042, 1044, 1034, 1035, 1038, 86, 1039, 86, - 86, 1047, 1045, 86, 86, 1041, 1048, 86, 1049, 1050, - 1043, 86, 86, 1054, 1056, 86, 86, 1055, 1051, 86, - 86, 86, 1058, 1052, 1057, 86, 1060, 86, 1061, 86, - - 86, 1053, 86, 1059, 86, 86, 86, 86, 1062, 1064, - 1065, 86, 1066, 86, 1070, 86, 86, 86, 1073, 86, - 1063, 86, 1074, 86, 1072, 1067, 1071, 1068, 86, 86, - 86, 86, 1069, 86, 86, 86, 86, 86, 1077, 1075, - 1078, 1080, 1076, 1081, 86, 86, 1086, 1082, 86, 1084, - 1083, 1088, 86, 86, 1079, 86, 1089, 86, 1085, 86, - 1091, 1087, 86, 86, 86, 86, 1090, 86, 1092, 86, - 1097, 1094, 86, 86, 1093, 1099, 1100, 86, 1098, 86, - 86, 86, 1096, 86, 1102, 86, 1101, 1095, 86, 86, - 1103, 86, 1104, 1110, 86, 1113, 86, 1108, 86, 86, - - 1105, 86, 86, 1106, 86, 1107, 1109, 1114, 1115, 1111, - 86, 86, 86, 1112, 86, 1116, 1119, 86, 1118, 1120, - 86, 1117, 1122, 1123, 86, 86, 1121, 86, 86, 86, - 86, 86, 1134, 1124, 1126, 86, 1128, 86, 86, 1135, - 1125, 86, 86, 86, 86, 86, 86, 1127, 1137, 1129, - 1131, 1146, 1130, 1140, 86, 1132, 1136, 1133, 1138, 86, - 1141, 1139, 1143, 86, 86, 86, 86, 1142, 86, 1148, - 86, 1149, 1150, 1151, 86, 86, 1144, 86, 86, 1154, - 86, 1156, 86, 86, 1145, 86, 1147, 86, 1153, 86, - 1159, 1162, 1152, 86, 1158, 86, 1163, 170, 86, 1165, - - 1155, 1157, 86, 1160, 86, 1161, 86, 1166, 1164, 1169, - 86, 86, 86, 86, 86, 86, 86, 1182, 86, 86, - 1167, 86, 1168, 1183, 86, 1187, 1172, 1173, 86, 1170, - 1185, 86, 86, 1174, 1208, 1171, 1175, 86, 86, 1184, - 1176, 86, 1177, 1186, 86, 1192, 1178, 1188, 1179, 1190, - 1193, 86, 1189, 1180, 86, 1191, 86, 86, 1181, 86, - 86, 1196, 86, 1194, 86, 1199, 86, 1202, 86, 86, - 1195, 176, 86, 1197, 1198, 1200, 1201, 86, 86, 86, - 1203, 1206, 1207, 1205, 1209, 1210, 1211, 1212, 86, 1204, - 1213, 86, 86, 1214, 86, 86, 86, 86, 86, 86, - - 1215, 86, 1229, 1226, 86, 86, 86, 175, 86, 1225, - 86, 1230, 86, 1216, 1217, 86, 1218, 1228, 1227, 86, - 1231, 1219, 1232, 1220, 86, 86, 1233, 86, 86, 1221, - 86, 1238, 1239, 1234, 1222, 1223, 86, 86, 86, 86, - 1240, 1224, 86, 1235, 1236, 86, 1237, 1245, 86, 1246, - 86, 1248, 86, 86, 1241, 1242, 1243, 86, 86, 86, - 1244, 1249, 1253, 86, 1251, 86, 1252, 86, 86, 86, - 1247, 1250, 1254, 86, 1256, 1259, 86, 86, 1257, 86, - 86, 86, 1255, 86, 1262, 1260, 86, 86, 86, 1258, - 86, 86, 86, 86, 1269, 86, 1261, 1264, 1271, 1266, - - 1263, 1267, 1268, 86, 86, 1273, 1265, 1270, 86, 86, - 1277, 1272, 86, 86, 1276, 86, 86, 86, 1370, 86, - 86, 86, 86, 1274, 1282, 1283, 1284, 1279, 86, 86, - 1281, 1278, 86, 1275, 1287, 1280, 1288, 1285, 86, 1286, - 86, 1289, 86, 86, 1290, 86, 1293, 86, 86, 86, - 1295, 1294, 86, 1296, 86, 86, 1291, 1298, 86, 86, - 86, 1292, 1297, 86, 1305, 86, 1307, 86, 1300, 1299, - 86, 86, 86, 1303, 1301, 86, 1309, 1302, 1304, 86, - 1311, 86, 1308, 86, 1312, 1306, 86, 86, 86, 1310, - 86, 1314, 1315, 86, 86, 86, 86, 1317, 1318, 1319, - - 86, 86, 1321, 86, 1313, 1324, 1316, 1320, 86, 1323, - 1326, 86, 1325, 86, 86, 86, 1322, 1328, 86, 1329, - 86, 86, 86, 86, 1335, 1333, 1327, 86, 1336, 1337, - 86, 170, 1338, 1330, 86, 86, 1334, 86, 1340, 1331, - 86, 1332, 1339, 1342, 86, 1341, 86, 86, 86, 86, - 1346, 1343, 86, 1348, 86, 86, 86, 1347, 86, 86, - 86, 86, 86, 86, 1349, 1344, 1351, 1350, 1345, 86, - 86, 86, 1354, 1355, 1356, 86, 1357, 1352, 86, 1353, - 1358, 86, 1361, 1362, 86, 86, 86, 1359, 86, 86, - 1364, 1365, 86, 86, 86, 86, 1363, 1360, 86, 86, - - 1367, 86, 86, 1366, 170, 1368, 86, 1372, 1376, 86, - 86, 86, 1369, 1371, 1377, 1378, 1379, 86, 1373, 86, - 86, 1375, 86, 86, 1380, 168, 1374, 1384, 86, 1386, - 86, 1381, 1383, 1388, 1382, 1389, 86, 1385, 86, 86, - 86, 86, 86, 1387, 1392, 1391, 86, 86, 86, 86, - 86, 1393, 1390, 1397, 1396, 86, 86, 86, 1402, 86, - 86, 1394, 1395, 1399, 86, 86, 86, 86, 86, 1398, - 1400, 86, 1406, 1414, 1403, 1412, 1401, 86, 86, 86, - 1405, 86, 1404, 1408, 86, 1413, 1416, 1407, 1415, 86, - 86, 1417, 1409, 1418, 1410, 86, 86, 1411, 86, 86, - - 1419, 1425, 86, 1422, 86, 1421, 86, 86, 86, 1426, - 86, 1430, 86, 1420, 1424, 86, 86, 86, 1423, 1428, - 1427, 1431, 1432, 86, 86, 86, 86, 86, 1434, 1429, - 1435, 86, 86, 1436, 86, 1433, 86, 1440, 86, 86, - 1437, 86, 1438, 1443, 86, 86, 1441, 1442, 86, 86, - 1439, 1444, 1451, 86, 1448, 86, 86, 1445, 86, 1449, - 1450, 86, 1446, 1447, 86, 1454, 86, 86, 86, 86, - 86, 1461, 86, 1452, 1463, 1453, 1455, 86, 1457, 86, - 86, 86, 86, 1456, 1460, 86, 1458, 1464, 86, 86, - 1462, 86, 86, 1459, 1469, 1465, 1466, 1470, 1468, 1467, - - 1471, 86, 86, 86, 86, 1472, 86, 86, 1476, 1569, - 1473, 86, 86, 1485, 1486, 1474, 1475, 86, 1477, 86, - 86, 1489, 1478, 1494, 1484, 1479, 1480, 86, 1487, 86, - 1481, 1490, 1512, 86, 1488, 86, 1482, 86, 1491, 86, - 1483, 86, 1493, 86, 1492, 86, 1495, 86, 1500, 86, - 1496, 1501, 1497, 86, 86, 1498, 1502, 86, 1503, 86, - 86, 1499, 86, 86, 1508, 1505, 1509, 86, 86, 86, - 86, 1511, 86, 1510, 86, 86, 1506, 166, 1513, 1504, - 1518, 1507, 86, 1514, 86, 1515, 86, 1516, 1519, 1517, - 86, 1520, 1521, 1522, 86, 86, 86, 1523, 1524, 1525, - - 86, 1529, 1526, 86, 86, 86, 1530, 86, 86, 1528, - 1533, 86, 1531, 86, 1527, 86, 86, 1539, 86, 1540, - 1535, 86, 1534, 86, 86, 86, 1532, 86, 86, 86, - 1538, 86, 1536, 1541, 1537, 1542, 1544, 1546, 1543, 1545, - 86, 86, 86, 86, 1551, 86, 86, 1547, 1550, 1553, - 86, 86, 86, 1554, 1549, 1555, 86, 1552, 86, 1548, - 86, 1556, 1559, 86, 86, 1557, 86, 1558, 1561, 86, - 86, 1562, 86, 86, 1567, 86, 86, 1563, 86, 86, - 1560, 1570, 1572, 86, 86, 1564, 86, 1565, 86, 1573, - 86, 86, 1574, 1575, 1566, 86, 1568, 86, 1577, 1571, - - 86, 86, 86, 86, 1576, 1578, 1580, 1582, 86, 86, - 1579, 1583, 1585, 1584, 1581, 86, 86, 1587, 86, 86, - 1586, 86, 86, 1588, 1593, 86, 1594, 1590, 86, 1591, - 86, 86, 86, 1595, 1597, 86, 1596, 1589, 1592, 86, - 86, 86, 1601, 86, 1598, 86, 86, 170, 86, 86, - 86, 1603, 1600, 1609, 1610, 86, 86, 1612, 1599, 86, - 86, 1611, 1606, 86, 86, 1602, 1604, 86, 86, 1607, - 1613, 86, 86, 1608, 86, 1620, 1614, 86, 86, 86, - 1617, 86, 86, 86, 1615, 1618, 86, 1616, 1624, 86, - 1619, 1625, 86, 165, 1627, 86, 86, 1621, 86, 1623, - - 1629, 1628, 1626, 1622, 1631, 1630, 86, 1632, 86, 1634, - 86, 1635, 86, 86, 86, 86, 1633, 1638, 1643, 86, - 1639, 1641, 1640, 86, 86, 1636, 86, 1644, 1637, 1642, - 1646, 86, 86, 1648, 86, 1647, 86, 1645, 86, 1651, - 86, 86, 86, 1652, 86, 1653, 86, 86, 86, 1656, - 1650, 86, 86, 86, 1661, 86, 86, 1649, 1665, 1654, - 1662, 1658, 1655, 86, 86, 86, 1657, 1664, 86, 1659, - 1660, 86, 86, 1663, 86, 1666, 86, 86, 86, 1674, - 86, 1667, 86, 1673, 86, 1669, 86, 1668, 86, 1670, - 86, 1671, 86, 1675, 86, 1680, 1672, 86, 1676, 1679, - - 1677, 86, 1684, 1678, 1683, 1685, 1682, 1681, 1686, 86, - 86, 86, 86, 1688, 86, 1689, 86, 86, 86, 163, - 86, 1694, 1695, 1687, 1690, 1693, 1691, 86, 86, 1696, - 86, 1697, 86, 1698, 86, 86, 1701, 86, 1692, 86, - 86, 86, 86, 1702, 86, 86, 1705, 86, 1709, 1703, - 86, 1708, 1699, 86, 1700, 86, 1706, 86, 86, 1704, - 1707, 1711, 1712, 86, 86, 1720, 1715, 86, 1717, 1713, - 1710, 1716, 86, 1718, 86, 86, 86, 1714, 86, 86, - 86, 86, 1728, 1719, 1724, 1723, 1721, 86, 86, 86, - 86, 86, 1729, 86, 1722, 1734, 86, 1725, 86, 1727, - - 1726, 86, 1737, 86, 1736, 86, 1732, 1730, 86, 86, - 1731, 86, 86, 86, 86, 1735, 161, 86, 86, 1733, - 86, 1746, 1738, 86, 1739, 86, 1747, 1743, 1740, 86, - 1741, 1742, 1745, 1751, 86, 1744, 86, 1748, 1752, 86, - 86, 1750, 86, 86, 1749, 1753, 1754, 86, 86, 1755, - 86, 86, 86, 1759, 86, 86, 1757, 1760, 1756, 1763, - 86, 1758, 1767, 86, 86, 1769, 86, 1764, 1762, 1768, - 1761, 86, 86, 1772, 86, 1765, 1766, 86, 1774, 86, - 86, 1770, 1773, 86, 1775, 1771, 86, 86, 86, 1780, - 1781, 86, 86, 86, 86, 86, 1778, 86, 1785, 1784, - - 1786, 86, 86, 1776, 1777, 1789, 86, 86, 1779, 86, - 1782, 1788, 86, 86, 1783, 1790, 86, 86, 86, 86, - 1794, 1787, 86, 1791, 86, 1792, 86, 1799, 1797, 1793, - 86, 86, 86, 86, 86, 1805, 86, 1806, 1803, 1795, - 86, 86, 1796, 86, 1798, 1800, 86, 86, 1804, 1807, - 86, 1802, 1801, 86, 1812, 86, 86, 86, 86, 1817, - 86, 1808, 1809, 1815, 86, 86, 86, 1820, 1818, 1813, - 1811, 1810, 1816, 86, 1814, 86, 86, 86, 86, 86, - 86, 1824, 1827, 86, 1826, 1819, 86, 1823, 170, 1828, - 86, 86, 86, 1829, 1822, 1821, 1830, 1825, 86, 86, - - 86, 86, 1838, 86, 1831, 86, 1833, 86, 1832, 86, - 1839, 1842, 86, 1836, 1844, 86, 86, 1834, 1835, 86, - 86, 1846, 1848, 1840, 1843, 1837, 86, 1841, 86, 1850, - 86, 1847, 1852, 86, 86, 86, 1845, 86, 86, 86, - 1849, 86, 86, 1854, 1851, 86, 1855, 86, 1857, 86, - 1858, 86, 86, 1853, 1862, 86, 1859, 1860, 86, 1863, - 1861, 86, 1856, 1870, 86, 86, 86, 1865, 1867, 86, - 1864, 1868, 86, 86, 86, 1874, 1872, 1871, 86, 1875, - 86, 1866, 86, 1869, 1880, 1877, 1878, 86, 1881, 1876, - 86, 86, 1873, 1887, 86, 1885, 1882, 86, 1883, 86, - - 1884, 86, 1879, 86, 86, 86, 86, 86, 1886, 1892, - 1891, 1893, 1894, 86, 86, 86, 86, 86, 86, 1895, - 86, 1896, 1888, 86, 1889, 1898, 1890, 86, 1899, 86, - 86, 86, 86, 86, 1901, 1900, 1897, 86, 86, 86, - 86, 86, 86, 1902, 86, 86, 1903, 1912, 1911, 86, - 86, 1904, 1906, 1905, 1907, 1908, 1914, 1909, 86, 86, - 1918, 1913, 1910, 1917, 86, 86, 86, 86, 86, 86, - 1915, 1916, 1923, 86, 1925, 86, 86, 1927, 86, 86, - 86, 1920, 1922, 86, 1919, 1926, 86, 1921, 1929, 86, - 1924, 1930, 86, 1931, 1933, 1928, 86, 86, 86, 86, - - 86, 1932, 86, 86, 86, 1938, 1936, 86, 1939, 86, - 1945, 1940, 86, 1934, 1935, 1937, 1946, 86, 1941, 1942, - 1947, 86, 86, 86, 1943, 1952, 1950, 1949, 1944, 1951, - 86, 86, 86, 86, 1948, 86, 86, 1954, 1955, 1956, - 86, 86, 86, 86, 86, 1958, 86, 86, 1966, 86, - 1953, 2046, 1961, 86, 86, 1965, 1957, 86, 1960, 86, - 1959, 86, 1963, 1962, 1968, 1964, 1967, 86, 86, 1969, - 86, 1974, 1970, 86, 86, 86, 1975, 86, 1976, 1971, - 86, 86, 1972, 86, 1980, 86, 1973, 1977, 1981, 86, - 1984, 86, 86, 1986, 1985, 86, 86, 1982, 1979, 1978, - - 1983, 86, 86, 86, 1994, 1988, 1990, 1987, 1989, 1995, - 86, 86, 86, 1991, 86, 86, 86, 86, 2001, 86, - 1999, 1993, 86, 1992, 86, 1996, 2004, 1997, 2003, 86, - 2000, 86, 86, 86, 2007, 2002, 1998, 86, 2005, 2009, - 86, 86, 2011, 2008, 86, 2006, 2015, 86, 86, 86, - 2013, 86, 86, 86, 86, 2010, 2014, 2012, 86, 2016, - 86, 86, 86, 3712, 86, 2021, 2020, 86, 2017, 86, - 2022, 86, 2018, 2019, 2030, 2023, 2024, 2025, 2028, 86, - 86, 2031, 86, 2026, 86, 2027, 86, 86, 86, 2032, - 2034, 86, 86, 2038, 86, 2033, 86, 2040, 86, 86, - - 2029, 86, 86, 86, 2035, 86, 2036, 2044, 86, 2039, - 2047, 2037, 86, 86, 86, 2042, 86, 86, 2049, 2043, - 2041, 2050, 2045, 2051, 86, 86, 86, 170, 86, 2055, - 2058, 86, 2048, 86, 2054, 2053, 86, 86, 86, 2056, - 2052, 2062, 86, 2057, 86, 2064, 86, 86, 2060, 86, - 86, 2069, 2059, 86, 86, 86, 2061, 86, 2063, 2065, - 2076, 2066, 86, 2073, 86, 2067, 2070, 86, 2072, 86, - 2068, 2071, 2074, 2075, 86, 2078, 2077, 2079, 86, 86, - 86, 86, 2081, 86, 86, 86, 2082, 86, 86, 86, - 86, 2080, 86, 86, 2087, 2088, 86, 86, 2092, 86, - - 86, 2089, 86, 3712, 2083, 2085, 2086, 2084, 2090, 2093, - 86, 86, 2091, 2100, 86, 2098, 2096, 2099, 2101, 2095, - 86, 86, 2094, 2097, 86, 86, 86, 86, 86, 86, - 86, 2108, 86, 86, 86, 2111, 86, 2103, 2112, 86, - 86, 2102, 86, 2106, 2104, 2105, 2180, 2109, 2107, 2110, - 2113, 86, 2114, 2115, 86, 86, 2116, 2117, 2120, 86, - 86, 2118, 2122, 2119, 2121, 2124, 86, 86, 86, 2123, - 2126, 86, 86, 86, 86, 86, 86, 86, 2128, 86, - 2130, 2131, 86, 86, 2133, 2125, 2134, 86, 86, 86, - 2135, 86, 86, 2139, 2137, 2127, 2138, 86, 2141, 2129, - - 86, 86, 2140, 2132, 86, 86, 86, 86, 86, 2136, - 2149, 86, 2142, 2143, 2144, 86, 86, 86, 2152, 2145, - 2153, 2146, 86, 2147, 2154, 86, 2148, 2150, 2151, 2155, - 86, 2156, 86, 86, 2158, 2161, 2159, 2157, 86, 86, - 86, 86, 2165, 86, 86, 86, 2167, 2162, 2160, 86, - 86, 86, 2170, 2171, 86, 86, 2173, 86, 86, 2163, - 86, 2164, 86, 86, 86, 86, 2182, 86, 2178, 2168, - 2166, 2175, 2169, 2176, 86, 2172, 86, 86, 86, 2181, - 86, 2177, 2179, 2174, 86, 2185, 86, 2188, 86, 2186, - 86, 86, 2184, 2191, 2193, 86, 2192, 2183, 86, 86, - - 86, 2196, 86, 86, 2197, 2195, 2190, 86, 2200, 86, - 2187, 2199, 86, 86, 2189, 2194, 86, 86, 2201, 86, - 86, 2202, 2198, 86, 86, 86, 86, 2206, 2208, 86, - 2212, 2203, 2207, 86, 2211, 2213, 86, 86, 86, 2204, - 86, 86, 2205, 86, 2209, 86, 86, 2216, 2221, 86, - 86, 2220, 86, 2215, 86, 2210, 86, 2214, 86, 86, - 2218, 3712, 2226, 2217, 86, 2227, 86, 2219, 2229, 2224, - 86, 2223, 2228, 86, 2222, 2225, 2230, 86, 86, 2234, - 86, 2232, 2231, 86, 86, 86, 2233, 86, 86, 86, - 2238, 86, 2242, 86, 2235, 86, 86, 2236, 86, 86, - - 2245, 2247, 86, 2237, 86, 2248, 2244, 2239, 2240, 2241, - 86, 2243, 2246, 86, 2249, 86, 2253, 86, 86, 2255, - 86, 3712, 2250, 2254, 2256, 86, 2251, 2257, 2259, 2260, - 86, 2252, 2258, 86, 86, 86, 86, 86, 2264, 86, - 86, 2262, 2263, 2261, 86, 86, 86, 86, 2268, 2265, - 2266, 2267, 2270, 2272, 2273, 86, 86, 86, 86, 86, - 86, 170, 86, 86, 86, 2269, 2276, 2271, 86, 2280, - 86, 2281, 2277, 86, 2278, 2274, 2292, 2275, 86, 2282, - 2283, 86, 2279, 2284, 86, 2286, 86, 86, 86, 86, - 2285, 86, 2287, 2288, 86, 2289, 2290, 86, 86, 2291, - - 86, 2294, 86, 86, 2298, 86, 86, 86, 2297, 2293, - 2295, 86, 2300, 86, 2296, 2299, 2301, 86, 2303, 86, - 2302, 86, 86, 86, 86, 86, 86, 86, 2308, 2310, - 2305, 2309, 86, 2304, 86, 86, 2312, 86, 2315, 86, - 2306, 86, 2307, 2311, 86, 86, 86, 2321, 2314, 2316, - 2313, 86, 86, 2318, 2319, 86, 86, 2317, 86, 86, - 2322, 2320, 2328, 2325, 2323, 2327, 86, 86, 86, 2326, - 86, 86, 86, 2334, 86, 86, 2324, 86, 2336, 86, - 86, 86, 2337, 2329, 2330, 2333, 2331, 2332, 86, 2338, - 86, 2335, 2340, 86, 2342, 86, 2341, 86, 2343, 2339, - - 86, 2346, 86, 86, 86, 86, 2345, 86, 86, 2351, - 2348, 86, 2352, 2344, 86, 86, 2347, 86, 86, 86, - 2353, 86, 86, 86, 86, 2350, 2349, 2355, 86, 2356, - 86, 2358, 2360, 2357, 2362, 2354, 86, 2361, 2365, 2363, - 86, 86, 2366, 86, 2368, 86, 86, 2359, 2371, 86, - 86, 2364, 2378, 2369, 86, 2367, 86, 2370, 86, 2372, - 86, 2374, 86, 2373, 86, 2375, 2376, 2377, 86, 2380, - 86, 86, 2379, 86, 2383, 2381, 86, 86, 2386, 2382, - 2384, 86, 2389, 86, 86, 2385, 2391, 86, 86, 86, - 86, 2393, 86, 86, 2395, 2396, 2387, 86, 86, 86, - - 86, 2388, 2397, 2390, 2392, 2398, 86, 86, 2402, 86, - 86, 86, 2403, 2394, 86, 2406, 2399, 2400, 2408, 86, - 2407, 86, 2404, 2405, 86, 86, 2401, 2412, 86, 86, - 2413, 86, 86, 86, 2417, 86, 2411, 2419, 2409, 2410, - 86, 86, 2414, 86, 86, 86, 2418, 2415, 2423, 86, - 86, 2425, 2421, 2416, 86, 2426, 86, 2424, 86, 86, - 2422, 2420, 86, 2428, 86, 2427, 2430, 86, 86, 2433, - 86, 86, 86, 2431, 2435, 86, 2432, 2429, 86, 2436, - 86, 2438, 2437, 2439, 86, 86, 86, 2440, 86, 2434, - 2441, 2442, 86, 2447, 86, 86, 2444, 2443, 86, 86, - - 86, 2446, 86, 2452, 86, 86, 86, 86, 2445, 86, - 2455, 86, 2459, 2448, 2453, 86, 2449, 2450, 2451, 2454, - 2460, 2456, 86, 2457, 86, 86, 2458, 86, 86, 86, - 86, 2461, 86, 2463, 2465, 86, 86, 2471, 86, 86, - 86, 86, 2462, 86, 2467, 2470, 2464, 2476, 2466, 2472, - 2468, 2473, 86, 2474, 86, 2469, 86, 2480, 2475, 2477, - 2479, 170, 2482, 86, 2484, 2485, 86, 2483, 86, 2478, - 86, 86, 86, 86, 2487, 2486, 2489, 86, 86, 86, - 2490, 2494, 86, 2481, 86, 2495, 86, 2493, 86, 2498, - 86, 86, 86, 2488, 2491, 86, 2499, 2502, 2496, 86, - - 2500, 2501, 86, 2503, 86, 2492, 2497, 86, 2504, 86, - 2505, 2506, 86, 86, 86, 86, 86, 86, 86, 2509, - 86, 86, 2512, 86, 86, 2518, 86, 86, 2516, 86, - 2511, 2519, 2507, 86, 86, 86, 2513, 2514, 2508, 2510, - 2515, 86, 86, 86, 2520, 86, 2517, 2521, 86, 86, - 86, 2522, 86, 2524, 2527, 2525, 2530, 86, 2531, 2529, - 2523, 2528, 86, 86, 2526, 86, 86, 86, 86, 2541, - 86, 2532, 86, 2542, 86, 86, 86, 86, 2547, 86, - 86, 2533, 2534, 86, 2539, 86, 2537, 2544, 2535, 2538, - 2536, 2540, 2543, 86, 2545, 2549, 86, 86, 86, 2546, - - 86, 2551, 2550, 2548, 86, 86, 86, 86, 2556, 2553, - 2557, 86, 86, 2552, 2558, 2559, 86, 86, 2554, 2555, - 2560, 86, 86, 2563, 2565, 86, 2564, 86, 2566, 86, - 2567, 86, 2561, 86, 2562, 2570, 86, 2571, 86, 86, - 2568, 86, 86, 2569, 2572, 86, 2573, 2577, 86, 2578, - 86, 86, 86, 2574, 2580, 86, 86, 2576, 2582, 86, - 86, 86, 2575, 2585, 86, 2584, 86, 2583, 2586, 86, - 2579, 86, 86, 2589, 2581, 2587, 2591, 86, 86, 86, - 2588, 86, 86, 2590, 2595, 86, 2594, 2597, 86, 86, - 86, 86, 2592, 86, 86, 2599, 2601, 2600, 2593, 86, - - 2602, 2596, 2604, 86, 86, 86, 86, 2598, 2607, 86, - 2610, 86, 2611, 2605, 86, 2603, 86, 86, 86, 2606, - 2608, 86, 86, 2617, 86, 86, 2616, 86, 2609, 86, - 86, 2613, 2619, 86, 2612, 86, 2615, 86, 2621, 86, - 2614, 2623, 86, 86, 2618, 2620, 2625, 2626, 86, 2624, - 86, 86, 2622, 2627, 86, 2631, 86, 86, 2633, 86, - 2632, 2628, 2634, 2629, 2637, 86, 86, 86, 86, 2638, - 86, 2639, 2640, 86, 86, 86, 2630, 2635, 86, 2636, - 2645, 2642, 86, 2644, 86, 86, 86, 2647, 86, 2648, - 2641, 2649, 2651, 2652, 2643, 86, 2655, 86, 86, 86, - - 2650, 86, 86, 86, 2646, 86, 2656, 86, 2657, 2653, - 2654, 86, 86, 3712, 2660, 86, 86, 86, 2659, 86, - 86, 2662, 2658, 2667, 2663, 2664, 2665, 2661, 2668, 86, - 86, 86, 86, 2666, 86, 2669, 86, 2673, 2674, 86, - 2670, 2672, 86, 2675, 86, 86, 2678, 170, 2677, 86, - 2671, 2676, 2679, 86, 86, 86, 86, 2684, 86, 86, - 86, 86, 86, 2691, 2686, 86, 86, 3712, 2685, 2680, - 2682, 2681, 2683, 2687, 86, 2688, 86, 2689, 2690, 2692, - 2695, 86, 86, 2696, 86, 2693, 2697, 86, 2694, 86, - 86, 2700, 2698, 2701, 86, 2699, 86, 86, 2704, 86, - - 2703, 86, 86, 2702, 86, 2705, 86, 2710, 2706, 86, - 2709, 86, 86, 86, 86, 2713, 2707, 86, 86, 2712, - 2714, 2715, 86, 2716, 86, 2708, 2711, 86, 86, 2717, - 86, 86, 2722, 86, 86, 2721, 2718, 2719, 86, 86, - 86, 86, 86, 2724, 86, 86, 86, 2723, 2729, 2732, - 2720, 2731, 86, 86, 2734, 86, 2728, 86, 2733, 2725, - 2726, 2727, 86, 2735, 86, 2730, 86, 86, 86, 2741, - 86, 86, 2739, 86, 86, 2736, 2745, 86, 2744, 2748, - 86, 86, 86, 2737, 2746, 2738, 2742, 2743, 2747, 2740, - 86, 86, 86, 86, 2752, 2750, 86, 86, 2754, 2753, - - 2749, 86, 86, 86, 2755, 2756, 2751, 86, 2758, 86, - 2760, 86, 86, 2759, 2762, 86, 86, 2764, 86, 86, - 86, 2763, 86, 2761, 86, 86, 86, 86, 86, 2757, - 2768, 86, 86, 2772, 2766, 86, 2773, 2765, 2767, 2774, - 86, 2775, 86, 2776, 2770, 86, 2778, 86, 2771, 86, - 2769, 2779, 2777, 86, 86, 86, 86, 86, 2781, 2783, - 86, 2786, 86, 86, 86, 2790, 2788, 2784, 86, 2780, - 2789, 86, 2785, 2782, 86, 2793, 86, 86, 86, 2787, - 2794, 86, 86, 2799, 86, 86, 2791, 2800, 86, 2792, - 2801, 86, 86, 86, 86, 86, 86, 2795, 2805, 86, - - 2796, 2797, 2798, 2803, 86, 2804, 2806, 2809, 86, 2802, - 2807, 86, 86, 2808, 86, 86, 2810, 2814, 86, 2813, - 2815, 86, 2816, 86, 2817, 86, 86, 2818, 2811, 86, - 86, 2819, 2812, 86, 2822, 2821, 86, 2823, 86, 2824, - 86, 86, 86, 86, 2820, 86, 86, 2831, 86, 86, - 2833, 86, 2825, 86, 2827, 2834, 86, 2836, 86, 86, - 86, 2826, 2830, 2828, 2835, 86, 2829, 2838, 2832, 86, - 86, 2837, 86, 86, 86, 2841, 86, 2839, 2844, 86, - 2846, 86, 86, 2845, 86, 86, 86, 170, 86, 2840, - 86, 2855, 2842, 2843, 86, 2849, 2853, 86, 86, 2854, - - 2851, 86, 2847, 86, 2848, 86, 2856, 86, 86, 2850, - 2852, 2862, 86, 2857, 86, 86, 2858, 2866, 86, 2864, - 2865, 2859, 2867, 86, 86, 2868, 2863, 2860, 86, 2869, - 2861, 86, 2870, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 2872, 2881, 86, 86, 2879, - 86, 2871, 2874, 86, 2873, 3712, 2875, 2876, 86, 2885, - 2877, 2878, 2880, 2882, 86, 2883, 2884, 2888, 2886, 2887, - 86, 86, 2889, 2891, 86, 86, 2893, 86, 86, 86, - 2890, 86, 86, 86, 2892, 86, 86, 86, 86, 2897, - 86, 2903, 86, 86, 2905, 86, 2894, 2895, 2898, 2896, - - 2904, 2906, 86, 2899, 2900, 86, 2901, 2902, 86, 2910, - 86, 2912, 2907, 86, 2909, 2911, 86, 86, 86, 86, - 86, 86, 86, 2908, 2919, 86, 86, 2918, 86, 86, - 86, 2913, 86, 86, 2915, 2917, 2914, 86, 2925, 2916, - 86, 2923, 2926, 2927, 86, 86, 2920, 2928, 2921, 2922, - 2929, 86, 2924, 86, 86, 86, 2930, 86, 86, 86, - 86, 86, 2931, 2935, 86, 2937, 86, 2933, 86, 86, - 86, 2942, 86, 2932, 2943, 86, 3712, 2934, 86, 2936, - 86, 2938, 86, 2939, 86, 2944, 2940, 2941, 2946, 86, - 2945, 2947, 86, 2948, 86, 86, 2949, 2950, 86, 2951, - - 2952, 86, 2953, 2954, 86, 86, 86, 86, 2955, 86, - 2961, 86, 86, 86, 2959, 86, 2956, 86, 2965, 2964, - 2966, 86, 2963, 86, 2962, 2957, 2958, 2968, 86, 2960, - 86, 86, 86, 86, 86, 2969, 2974, 86, 86, 2975, - 2970, 86, 2967, 86, 86, 2972, 2978, 86, 2971, 86, - 2976, 86, 86, 86, 2973, 2985, 86, 2979, 86, 86, - 86, 2982, 2980, 86, 2981, 2977, 86, 2983, 2984, 2988, - 86, 2989, 86, 2986, 86, 2987, 86, 2990, 86, 86, - 86, 2992, 2994, 86, 86, 86, 2993, 2996, 2991, 2995, - 2998, 86, 3001, 86, 3002, 86, 2999, 86, 2997, 3000, - - 86, 86, 3003, 3005, 170, 86, 86, 86, 3006, 3010, - 3007, 86, 86, 3012, 86, 86, 3011, 86, 86, 3004, - 3015, 86, 3014, 86, 3008, 3009, 3016, 86, 3022, 3013, - 3020, 3017, 3018, 86, 86, 3021, 86, 3019, 86, 86, - 3025, 86, 86, 3023, 86, 3026, 86, 3027, 86, 86, - 86, 86, 86, 3024, 3032, 3033, 3034, 3028, 3030, 3029, - 86, 86, 3036, 86, 3035, 86, 86, 86, 86, 86, - 3031, 3038, 3037, 86, 3041, 86, 3039, 86, 86, 3040, - 3042, 86, 3043, 86, 86, 3048, 3044, 86, 86, 86, - 3046, 3045, 3047, 3050, 86, 3053, 3049, 86, 86, 3051, - - 86, 86, 86, 3054, 86, 86, 3052, 3059, 86, 86, - 86, 86, 3060, 86, 3064, 86, 86, 3055, 86, 3062, - 3056, 86, 3057, 3058, 3063, 86, 3065, 86, 3061, 3067, - 86, 3066, 3072, 86, 86, 3074, 3069, 3068, 3071, 86, - 3075, 86, 86, 3078, 86, 3070, 86, 3079, 86, 86, - 86, 86, 3073, 86, 86, 3082, 86, 3085, 3076, 3080, - 3077, 86, 3083, 86, 3086, 86, 86, 3084, 86, 3081, - 3087, 3090, 86, 86, 3088, 86, 3092, 3094, 86, 3089, - 86, 3096, 86, 3091, 3097, 86, 3098, 86, 86, 86, - 86, 3093, 3099, 86, 3100, 3102, 86, 86, 86, 3101, - - 3106, 86, 3104, 3095, 86, 3107, 86, 86, 86, 3111, - 3105, 3112, 86, 3103, 3113, 86, 3108, 3114, 86, 86, - 86, 3109, 3115, 86, 3118, 86, 86, 3110, 86, 3121, - 86, 86, 3122, 3116, 3123, 86, 3117, 86, 3125, 86, - 86, 86, 86, 3129, 3119, 3130, 86, 86, 3120, 86, - 86, 3131, 3124, 3126, 3132, 3133, 3128, 3134, 86, 3127, - 86, 86, 3135, 86, 86, 86, 3140, 3139, 86, 86, - 3143, 86, 86, 3142, 86, 86, 86, 86, 86, 3144, - 3146, 3136, 86, 3145, 3137, 3138, 86, 86, 3149, 3148, - 86, 86, 86, 3141, 86, 3150, 3151, 3152, 3156, 86, - - 3153, 3147, 86, 86, 86, 3155, 3158, 86, 3157, 86, - 3154, 86, 3163, 3565, 3159, 3162, 3160, 3164, 86, 3165, - 3168, 86, 86, 3161, 3166, 86, 86, 3169, 3167, 86, - 3170, 86, 3171, 86, 3172, 86, 3173, 86, 3174, 86, - 86, 86, 3175, 86, 86, 86, 86, 86, 86, 3180, - 3178, 3182, 86, 86, 3187, 86, 3183, 3179, 86, 3176, - 3188, 86, 86, 86, 3181, 3189, 3177, 3712, 3184, 3191, - 86, 86, 3185, 3186, 3194, 86, 3193, 3192, 3190, 86, - 3196, 86, 86, 3198, 86, 86, 3195, 3197, 86, 3201, - 86, 86, 86, 86, 3199, 3205, 86, 3200, 3206, 86, - - 3202, 3203, 86, 86, 86, 86, 3207, 86, 86, 3213, - 86, 3204, 3208, 86, 3214, 86, 3210, 86, 86, 3216, - 86, 3217, 3211, 3209, 86, 3219, 3215, 86, 3212, 3220, - 86, 3222, 86, 3218, 86, 86, 3226, 86, 3221, 86, - 3228, 3223, 86, 86, 86, 86, 86, 86, 3227, 3231, - 86, 3234, 86, 3225, 3229, 86, 3232, 86, 86, 3224, - 3237, 86, 3235, 3238, 86, 3233, 86, 3239, 3230, 3241, - 3240, 86, 86, 3236, 86, 3244, 3246, 86, 3245, 3247, - 86, 3248, 86, 86, 3242, 86, 3243, 86, 86, 3253, - 86, 86, 3249, 3252, 86, 86, 3254, 3256, 86, 3255, - - 86, 86, 86, 86, 3262, 3250, 3251, 3260, 3257, 86, - 86, 86, 3258, 3264, 86, 3265, 86, 3268, 86, 86, - 86, 3261, 3259, 3266, 3267, 86, 86, 86, 3273, 86, - 86, 86, 86, 86, 3263, 86, 86, 3277, 86, 3269, - 3270, 3271, 86, 3274, 3275, 3276, 3281, 3272, 86, 86, - 86, 3278, 3279, 3282, 3280, 86, 3285, 86, 86, 86, - 3289, 86, 3290, 86, 86, 86, 3286, 3292, 86, 3283, - 3284, 86, 3293, 86, 3295, 86, 3287, 3296, 86, 3294, - 3298, 86, 86, 3291, 86, 3288, 86, 86, 86, 3301, - 86, 3299, 3297, 3303, 3304, 86, 86, 3307, 3300, 3306, - - 3309, 86, 3302, 86, 86, 86, 3311, 3305, 86, 86, - 3316, 86, 3315, 86, 86, 3318, 86, 86, 86, 3308, - 86, 86, 3312, 3310, 86, 3319, 3322, 86, 3313, 3314, - 3323, 86, 86, 86, 3317, 3326, 86, 86, 86, 3320, - 86, 86, 86, 3332, 3321, 3331, 3712, 3324, 3328, 3329, - 86, 86, 86, 3325, 3333, 3327, 3335, 86, 3330, 86, - 86, 3334, 3337, 3338, 3340, 3336, 86, 3339, 86, 3342, - 3343, 86, 3345, 86, 86, 86, 3344, 86, 86, 3348, - 86, 86, 3347, 86, 3351, 86, 3349, 86, 3341, 86, - 86, 86, 3346, 3354, 86, 86, 86, 3355, 3359, 86, - - 86, 86, 3350, 86, 3352, 3353, 3435, 3356, 3358, 3362, - 3363, 86, 3364, 86, 86, 3360, 3357, 3361, 3365, 86, - 86, 86, 3369, 86, 86, 3366, 3368, 86, 3367, 3370, - 86, 3371, 86, 3372, 3373, 86, 86, 3376, 86, 86, - 3374, 3378, 86, 86, 3377, 3380, 86, 3381, 86, 86, - 86, 86, 86, 86, 3379, 86, 3387, 3388, 86, 86, - 86, 86, 3375, 86, 86, 86, 3394, 86, 3382, 3395, - 86, 3385, 3383, 3384, 3393, 3386, 86, 3391, 3398, 3390, - 3396, 3392, 3397, 86, 86, 3389, 86, 86, 86, 86, - 3404, 86, 3401, 3402, 3405, 86, 86, 86, 3408, 86, - - 86, 3406, 86, 3399, 86, 3400, 3413, 3410, 3411, 86, - 3403, 3407, 3409, 86, 86, 86, 86, 86, 3412, 3414, - 86, 86, 3417, 86, 86, 86, 86, 3419, 86, 86, - 3712, 3420, 3418, 86, 86, 3415, 3416, 86, 86, 86, - 3437, 86, 3429, 3421, 3425, 3422, 3423, 3424, 86, 86, - 3426, 3427, 86, 3430, 3432, 3428, 86, 3433, 3431, 3434, - 86, 86, 3436, 3438, 86, 3439, 3441, 86, 86, 86, - 86, 3440, 3712, 3442, 3444, 86, 3446, 86, 3447, 3448, - 86, 86, 86, 3449, 3450, 3445, 86, 3455, 3443, 3451, - 86, 3452, 3453, 86, 86, 86, 86, 3454, 3457, 86, - - 3462, 86, 3460, 86, 3456, 86, 3461, 86, 86, 3465, - 86, 86, 86, 3464, 3458, 3459, 86, 86, 86, 86, - 86, 86, 3470, 86, 3469, 86, 3712, 3463, 3471, 3466, - 3474, 86, 3467, 3475, 86, 3472, 86, 3477, 3480, 3473, - 3476, 3468, 3478, 86, 3479, 86, 86, 86, 3484, 3486, - 86, 3481, 86, 3485, 86, 86, 3482, 86, 86, 3483, - 86, 86, 3712, 3490, 3494, 3491, 86, 3488, 3493, 86, - 86, 86, 3495, 3496, 86, 3487, 3497, 86, 3489, 86, - 3492, 3500, 86, 86, 3499, 86, 3498, 3502, 86, 86, - 3505, 86, 3506, 86, 3503, 3507, 86, 3501, 3508, 86, - - 3509, 86, 3510, 86, 3511, 86, 86, 3504, 3512, 86, - 86, 3515, 86, 3516, 86, 86, 86, 86, 86, 3514, - 3521, 86, 86, 86, 3517, 3523, 86, 86, 3518, 86, - 86, 86, 3513, 3520, 86, 3527, 86, 3519, 3524, 86, - 3525, 3522, 3526, 3528, 86, 86, 3529, 3530, 86, 86, - 86, 3534, 3532, 86, 3531, 3533, 3536, 3535, 3537, 3538, - 86, 86, 86, 86, 86, 3539, 86, 86, 86, 86, - 86, 3547, 3543, 3545, 86, 86, 3544, 86, 3542, 86, - 3540, 3541, 3550, 3546, 86, 3553, 86, 3551, 3554, 86, - 3555, 86, 3552, 3556, 86, 3549, 86, 86, 86, 86, - - 3548, 86, 3559, 86, 86, 86, 3558, 86, 86, 3567, - 3564, 86, 86, 3561, 86, 3563, 86, 86, 86, 3557, - 86, 3560, 3566, 86, 3568, 86, 3562, 3574, 3576, 86, - 86, 3569, 3570, 3571, 86, 3573, 86, 3575, 86, 3579, - 86, 3572, 3578, 3581, 86, 3583, 86, 86, 3586, 86, - 3577, 86, 86, 3588, 86, 3580, 86, 3589, 3582, 86, - 3584, 3587, 3590, 86, 3591, 86, 86, 3585, 86, 3594, - 3592, 86, 86, 3595, 86, 3599, 3596, 86, 86, 3593, - 86, 86, 3603, 86, 86, 3602, 3605, 86, 86, 3598, - 3601, 3600, 3606, 86, 3607, 86, 86, 3597, 3608, 86, - - 3611, 86, 86, 3609, 3604, 86, 3614, 86, 86, 3615, - 86, 86, 86, 3618, 3619, 3610, 86, 3612, 3616, 86, - 86, 86, 86, 3613, 3624, 86, 3620, 3623, 86, 3621, - 3617, 3625, 86, 86, 86, 86, 86, 86, 86, 3629, - 3622, 86, 3631, 86, 86, 86, 86, 86, 3628, 3626, - 86, 3636, 3637, 3627, 3633, 86, 3630, 3632, 3634, 3638, - 86, 3712, 3635, 3644, 3639, 3642, 86, 86, 3640, 86, - 86, 3645, 3643, 86, 3641, 86, 86, 86, 3646, 3650, - 3647, 3648, 3651, 86, 86, 86, 3653, 86, 86, 3652, - 86, 86, 3654, 86, 86, 3659, 3649, 86, 3656, 86, - - 3662, 86, 86, 3663, 86, 86, 86, 86, 86, 3655, - 86, 3666, 3657, 3658, 3664, 3661, 3660, 3665, 86, 3670, - 86, 86, 86, 3669, 86, 3671, 3667, 3668, 86, 3674, - 86, 3676, 86, 3677, 3672, 86, 86, 86, 3681, 86, - 3678, 86, 86, 3675, 3679, 86, 3682, 3683, 3673, 3684, - 86, 86, 86, 86, 86, 3680, 86, 86, 3685, 3686, - 86, 3687, 3688, 3690, 86, 3692, 86, 86, 86, 3696, - 86, 3693, 3689, 3691, 86, 3694, 3697, 86, 86, 3700, - 3701, 86, 86, 86, 3703, 86, 3695, 3704, 86, 3698, - 3702, 86, 86, 3699, 86, 86, 3712, 3706, 3705, 3707, - - 3712, 3708, 3710, 86, 3711, 86, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3709, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, - 80, 80, 80, 80, 89, 89, 3712, 89, 89, 89, - 89, 160, 160, 3712, 3712, 3712, 160, 160, 162, 162, - 3712, 3712, 162, 3712, 162, 164, 3712, 3712, 3712, 3712, - 3712, 164, 167, 167, 3712, 3712, 3712, 167, 167, 169, - - 3712, 3712, 3712, 3712, 3712, 169, 171, 171, 3712, 171, - 171, 171, 171, 174, 3712, 3712, 3712, 3712, 3712, 174, - 177, 177, 3712, 3712, 3712, 177, 177, 90, 90, 3712, - 90, 90, 90, 90, 17, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712 - } ; - -static const flex_int16_t yy_chk[7276] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, - 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, - 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, - 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3720, 35, - 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, - - 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, - 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, - 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, - 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 3005, 16, - 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, - 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, - 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1163, 32, 36, 36, 37, 37, - 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, - - 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, - 39, 39, 42, 41, 41, 39, 41, 42, 96, 39, - 42, 43, 43, 105, 43, 39, 44, 42, 39, 101, - 44, 42, 42, 43, 94, 39, 84, 84, 96, 43, - 44, 94, 105, 101, 44, 44, 62, 192, 62, 62, - 70, 62, 70, 70, 72, 70, 72, 72, 79, 72, - 79, 79, 70, 79, 86, 95, 86, 86, 89, 86, - 89, 89, 192, 89, 100, 86, 102, 95, 98, 89, - 89, 98, 102, 100, 103, 104, 106, 107, 102, 113, - 102, 109, 106, 113, 98, 108, 111, 140, 114, 112, - - 108, 107, 103, 103, 110, 106, 116, 104, 115, 108, - 119, 109, 140, 115, 111, 110, 110, 112, 114, 117, - 116, 118, 117, 110, 122, 117, 120, 118, 123, 119, - 121, 120, 124, 121, 125, 130, 124, 121, 117, 117, - 127, 125, 123, 122, 126, 128, 118, 127, 122, 129, - 132, 120, 131, 121, 128, 130, 131, 126, 134, 133, - 135, 136, 129, 133, 138, 135, 137, 137, 132, 135, - 139, 141, 142, 144, 139, 135, 134, 177, 146, 150, - 151, 136, 143, 139, 138, 143, 144, 145, 149, 139, - 146, 142, 148, 145, 147, 147, 143, 141, 150, 148, - - 143, 151, 152, 153, 149, 153, 155, 154, 156, 157, - 148, 155, 147, 227, 153, 147, 158, 159, 152, 154, - 156, 158, 161, 161, 179, 163, 153, 157, 163, 179, - 165, 159, 165, 165, 227, 165, 168, 168, 170, 181, - 170, 170, 171, 170, 171, 171, 173, 171, 175, 173, - 175, 175, 180, 175, 171, 178, 178, 181, 180, 182, - 183, 184, 185, 186, 187, 189, 188, 180, 183, 190, - 185, 188, 184, 213, 182, 183, 193, 191, 190, 187, - 176, 193, 186, 191, 191, 189, 194, 194, 195, 197, - 196, 213, 196, 197, 195, 196, 198, 198, 197, 199, - - 200, 201, 202, 197, 204, 200, 200, 202, 203, 197, - 197, 199, 196, 203, 205, 206, 204, 209, 207, 208, - 201, 206, 207, 210, 208, 211, 212, 214, 174, 218, - 215, 217, 214, 209, 205, 215, 217, 210, 212, 219, - 211, 212, 216, 216, 206, 220, 216, 224, 216, 218, - 223, 220, 221, 221, 260, 219, 223, 222, 225, 226, - 216, 260, 216, 222, 225, 226, 228, 224, 229, 222, - 230, 231, 228, 229, 226, 231, 230, 232, 233, 235, - 233, 234, 236, 232, 237, 233, 239, 234, 236, 238, - 240, 243, 235, 241, 242, 238, 243, 244, 245, 239, - - 246, 241, 247, 250, 237, 248, 244, 242, 239, 252, - 248, 248, 249, 245, 240, 251, 246, 249, 253, 251, - 254, 250, 247, 255, 253, 256, 258, 257, 258, 255, - 259, 252, 257, 263, 261, 262, 264, 266, 254, 254, - 261, 262, 264, 265, 269, 256, 267, 267, 272, 259, - 269, 266, 263, 268, 268, 265, 270, 271, 273, 271, - 274, 275, 270, 273, 277, 276, 279, 292, 269, 278, - 292, 272, 274, 276, 278, 280, 271, 281, 285, 287, - 275, 280, 282, 281, 277, 283, 284, 282, 286, 279, - 283, 288, 284, 285, 290, 289, 296, 287, 291, 293, - - 299, 293, 286, 289, 291, 288, 294, 294, 295, 297, - 297, 295, 298, 298, 296, 300, 299, 301, 302, 290, - 301, 305, 302, 303, 304, 307, 169, 308, 309, 317, - 300, 307, 303, 304, 309, 310, 311, 310, 318, 312, - 305, 308, 311, 312, 313, 313, 314, 315, 316, 317, - 319, 314, 320, 315, 316, 325, 318, 321, 321, 322, - 312, 323, 322, 324, 326, 320, 328, 324, 327, 327, - 400, 319, 329, 316, 325, 329, 330, 331, 332, 323, - 335, 332, 326, 331, 328, 333, 336, 340, 330, 335, - 337, 339, 329, 341, 339, 337, 400, 333, 334, 342, - - 340, 342, 342, 343, 336, 341, 346, 334, 343, 343, - 334, 344, 345, 345, 344, 334, 334, 334, 334, 338, - 347, 350, 338, 346, 338, 351, 346, 348, 349, 356, - 350, 352, 352, 361, 351, 347, 338, 338, 338, 353, - 338, 357, 348, 359, 353, 349, 349, 354, 354, 355, - 355, 360, 358, 361, 356, 359, 357, 358, 362, 363, - 364, 364, 366, 364, 367, 363, 369, 1379, 368, 367, - 360, 369, 364, 362, 368, 370, 372, 1379, 371, 364, - 370, 371, 366, 371, 373, 374, 370, 373, 375, 375, - 372, 376, 377, 377, 374, 383, 378, 376, 381, 382, - - 373, 378, 382, 373, 433, 373, 379, 379, 384, 379, - 383, 385, 388, 387, 395, 379, 387, 394, 381, 379, - 382, 390, 433, 384, 379, 385, 388, 379, 380, 380, - 391, 380, 387, 395, 402, 392, 390, 393, 394, 391, - 392, 392, 396, 393, 380, 407, 167, 380, 402, 380, - 393, 380, 389, 397, 389, 389, 398, 396, 401, 405, - 407, 406, 397, 399, 389, 389, 389, 389, 389, 399, - 403, 389, 404, 409, 412, 398, 403, 404, 401, 405, - 403, 406, 408, 410, 411, 411, 413, 408, 409, 410, - 414, 415, 416, 417, 412, 404, 418, 415, 413, 419, - - 419, 418, 419, 420, 414, 421, 422, 425, 430, 417, - 423, 424, 425, 424, 429, 429, 426, 416, 426, 426, - 431, 421, 422, 420, 423, 427, 428, 430, 432, 427, - 428, 435, 434, 438, 440, 431, 426, 437, 440, 435, - 435, 441, 438, 437, 432, 428, 434, 439, 443, 442, - 441, 435, 439, 435, 436, 442, 444, 445, 448, 436, - 446, 445, 444, 446, 450, 447, 166, 436, 436, 443, - 447, 436, 436, 449, 449, 436, 452, 450, 448, 451, - 451, 452, 453, 454, 454, 455, 456, 457, 458, 459, - 456, 455, 460, 462, 459, 453, 463, 460, 461, 461, - - 464, 465, 457, 466, 467, 462, 466, 461, 471, 458, - 468, 474, 469, 465, 476, 468, 463, 469, 464, 470, - 471, 472, 472, 470, 473, 467, 475, 475, 480, 473, - 478, 478, 474, 481, 482, 483, 476, 484, 485, 486, - 487, 481, 489, 485, 483, 490, 491, 492, 494, 480, - 493, 496, 487, 492, 494, 482, 495, 496, 484, 486, - 489, 498, 489, 490, 493, 495, 491, 497, 499, 501, - 500, 502, 497, 500, 504, 498, 499, 505, 503, 499, - 504, 506, 507, 501, 506, 508, 502, 503, 507, 509, - 510, 512, 511, 513, 509, 512, 514, 505, 513, 508, - - 515, 516, 517, 518, 521, 515, 507, 525, 522, 164, - 523, 514, 510, 511, 524, 526, 518, 516, 524, 527, - 526, 517, 519, 519, 521, 523, 525, 528, 519, 522, - 519, 528, 530, 532, 529, 527, 519, 533, 519, 529, - 531, 519, 519, 529, 534, 531, 533, 530, 519, 532, - 534, 535, 532, 536, 537, 534, 538, 537, 539, 540, - 540, 541, 542, 542, 544, 531, 535, 543, 545, 536, - 546, 546, 547, 548, 551, 549, 544, 552, 539, 538, - 549, 550, 543, 545, 561, 556, 541, 555, 553, 556, - 550, 547, 552, 551, 553, 548, 555, 557, 558, 559, - - 560, 557, 562, 561, 558, 563, 564, 568, 565, 566, - 569, 559, 565, 570, 570, 560, 562, 567, 569, 567, - 563, 571, 566, 572, 564, 574, 573, 571, 576, 577, - 575, 568, 573, 575, 578, 572, 580, 574, 579, 578, - 581, 579, 576, 582, 577, 580, 583, 162, 582, 582, - 584, 584, 580, 585, 585, 580, 581, 586, 591, 583, - 587, 587, 589, 586, 588, 588, 590, 592, 589, 593, - 594, 590, 590, 594, 595, 596, 591, 597, 600, 595, - 598, 593, 599, 598, 601, 597, 602, 599, 592, 603, - 602, 604, 605, 607, 596, 603, 605, 606, 607, 608, - - 611, 600, 610, 601, 609, 609, 613, 612, 614, 615, - 616, 604, 612, 608, 617, 606, 616, 610, 618, 617, - 620, 611, 622, 619, 614, 613, 619, 621, 621, 615, - 623, 619, 618, 626, 619, 619, 624, 625, 620, 627, - 622, 624, 625, 629, 630, 631, 623, 626, 631, 629, - 636, 632, 633, 630, 627, 632, 634, 633, 635, 634, - 637, 638, 639, 635, 640, 641, 636, 643, 638, 640, - 642, 642, 644, 646, 645, 639, 643, 632, 637, 645, - 648, 647, 651, 649, 652, 641, 650, 160, 651, 657, - 652, 644, 649, 661, 646, 647, 648, 653, 650, 658, - - 653, 654, 654, 655, 654, 656, 655, 657, 659, 660, - 656, 662, 661, 658, 660, 663, 665, 662, 664, 665, - 663, 666, 659, 667, 664, 668, 669, 670, 667, 671, - 672, 669, 669, 673, 674, 672, 675, 677, 676, 673, - 670, 668, 671, 676, 679, 675, 666, 678, 678, 672, - 672, 679, 680, 674, 682, 681, 683, 677, 681, 680, - 682, 684, 686, 686, 685, 687, 684, 689, 683, 685, - 685, 691, 688, 681, 688, 690, 684, 690, 692, 693, - 694, 695, 696, 697, 698, 699, 689, 697, 696, 691, - 687, 700, 701, 698, 702, 703, 692, 693, 703, 694, - - 699, 695, 704, 705, 706, 707, 700, 703, 708, 705, - 701, 709, 710, 702, 712, 711, 714, 704, 712, 707, - 708, 713, 715, 716, 706, 717, 718, 721, 721, 720, - 709, 719, 714, 710, 711, 723, 719, 724, 726, 713, - 715, 716, 716, 720, 717, 718, 722, 725, 727, 723, - 722, 728, 726, 727, 729, 730, 724, 731, 725, 733, - 732, 734, 737, 739, 731, 732, 733, 728, 730, 735, - 736, 738, 739, 729, 735, 736, 740, 741, 738, 742, - 737, 743, 747, 744, 749, 734, 741, 743, 744, 745, - 740, 742, 745, 746, 748, 750, 747, 746, 751, 749, - - 752, 752, 756, 748, 753, 753, 754, 754, 758, 750, - 755, 756, 759, 753, 760, 755, 761, 762, 759, 751, - 761, 763, 764, 766, 765, 767, 768, 758, 769, 762, - 765, 766, 767, 773, 760, 770, 779, 776, 782, 790, - 764, 780, 784, 783, 768, 779, 763, 780, 773, 783, - 785, 784, 85, 769, 776, 770, 771, 790, 771, 786, - 782, 771, 789, 786, 792, 771, 785, 791, 771, 787, - 787, 788, 788, 789, 793, 771, 771, 796, 771, 795, - 793, 791, 796, 798, 792, 794, 794, 794, 797, 794, - 799, 800, 794, 802, 799, 803, 801, 794, 802, 795, - - 801, 798, 804, 794, 794, 805, 794, 804, 806, 797, - 807, 80, 808, 807, 803, 800, 801, 808, 808, 809, - 805, 810, 810, 811, 812, 814, 809, 813, 813, 812, - 814, 815, 816, 806, 815, 817, 817, 816, 811, 818, - 819, 818, 820, 821, 822, 824, 823, 821, 825, 825, - 830, 826, 819, 824, 827, 828, 828, 829, 831, 834, - 834, 820, 830, 832, 822, 823, 826, 833, 827, 832, - 839, 835, 833, 837, 840, 829, 835, 835, 837, 838, - 831, 841, 843, 842, 844, 838, 846, 843, 839, 842, - 844, 845, 846, 840, 845, 847, 848, 848, 849, 849, - - 850, 841, 851, 847, 852, 854, 853, 855, 850, 852, - 853, 856, 854, 857, 858, 858, 860, 859, 861, 861, - 851, 863, 862, 864, 860, 855, 859, 856, 862, 866, - 868, 867, 857, 874, 870, 873, 869, 875, 866, 863, - 867, 869, 864, 870, 871, 872, 875, 871, 876, 873, - 872, 877, 878, 880, 868, 881, 877, 877, 874, 879, - 879, 876, 882, 883, 884, 889, 878, 885, 880, 891, - 885, 882, 892, 887, 881, 887, 888, 888, 885, 890, - 893, 894, 884, 897, 890, 895, 889, 883, 896, 898, - 891, 899, 892, 898, 900, 901, 903, 896, 902, 904, - - 893, 901, 905, 894, 906, 895, 897, 902, 903, 899, - 907, 908, 909, 900, 912, 904, 907, 910, 906, 908, - 913, 905, 910, 911, 911, 914, 909, 915, 916, 917, - 918, 919, 922, 912, 914, 920, 916, 921, 922, 923, - 913, 927, 924, 931, 926, 923, 933, 915, 925, 917, - 919, 933, 918, 928, 925, 920, 924, 921, 926, 928, - 929, 927, 931, 930, 932, 934, 929, 930, 935, 935, - 938, 936, 937, 938, 939, 940, 932, 936, 937, 941, - 942, 943, 943, 944, 932, 941, 934, 946, 940, 945, - 946, 947, 939, 948, 945, 949, 947, 947, 951, 949, - - 942, 944, 952, 946, 953, 946, 950, 950, 948, 953, - 954, 956, 957, 960, 959, 961, 963, 963, 967, 964, - 951, 968, 952, 964, 965, 968, 957, 959, 986, 954, - 966, 966, 969, 960, 986, 956, 961, 962, 970, 965, - 962, 972, 962, 967, 971, 973, 962, 969, 962, 971, - 973, 973, 970, 962, 974, 972, 975, 976, 962, 977, - 978, 976, 980, 974, 979, 978, 981, 980, 982, 983, - 975, 75, 984, 976, 977, 978, 979, 985, 993, 987, - 981, 984, 985, 983, 987, 988, 989, 990, 990, 982, - 991, 988, 989, 992, 994, 991, 995, 997, 998, 992, - - 993, 1001, 1001, 998, 999, 1000, 1002, 74, 1004, 997, - 1005, 1002, 1003, 994, 995, 996, 996, 1000, 999, 1006, - 1003, 996, 1004, 996, 1007, 1008, 1005, 1011, 1012, 996, - 1009, 1010, 1011, 1006, 996, 996, 1013, 1010, 1015, 1014, - 1012, 996, 1016, 1007, 1008, 1018, 1009, 1017, 1017, 1018, - 1019, 1021, 1023, 1025, 1013, 1014, 1015, 1021, 1022, 1024, - 1016, 1022, 1026, 1028, 1024, 1030, 1025, 1027, 1026, 1031, - 1019, 1023, 1027, 1032, 1030, 1033, 1034, 1035, 1031, 1036, - 1037, 1033, 1028, 1038, 1036, 1034, 1039, 1040, 1043, 1032, - 1044, 1049, 1041, 1042, 1043, 1047, 1035, 1038, 1045, 1040, - - 1037, 1041, 1042, 1050, 1045, 1049, 1039, 1044, 1051, 1052, - 1053, 1047, 1054, 1055, 1052, 1057, 1053, 1056, 1151, 1058, - 1059, 1062, 1151, 1050, 1058, 1059, 1062, 1055, 1063, 1068, - 1057, 1054, 1067, 1051, 1065, 1056, 1066, 1063, 1064, 1064, - 1065, 1067, 1066, 1069, 1068, 1071, 1072, 1075, 1078, 1074, - 1074, 1072, 1072, 1074, 1076, 1077, 1069, 1076, 1079, 1080, - 1081, 1071, 1075, 1082, 1083, 1084, 1085, 1086, 1078, 1077, - 1083, 1087, 1085, 1081, 1079, 1088, 1087, 1080, 1082, 1090, - 1090, 1091, 1086, 1092, 1091, 1084, 1093, 1094, 1096, 1088, - 1095, 1093, 1094, 1097, 1098, 1099, 1101, 1096, 1097, 1098, - - 1102, 1106, 1101, 1103, 1092, 1104, 1095, 1099, 1107, 1103, - 1106, 1104, 1105, 1105, 1108, 1110, 1102, 1108, 1109, 1109, - 1111, 1112, 1113, 1114, 1115, 1113, 1107, 1118, 1116, 1117, - 1115, 68, 1118, 1110, 1116, 1117, 1114, 1119, 1120, 1111, - 1121, 1112, 1119, 1122, 1120, 1121, 1124, 1125, 1126, 1122, - 1127, 1124, 1128, 1129, 1129, 1130, 1127, 1128, 1131, 1133, - 1134, 1132, 1139, 1137, 1130, 1125, 1132, 1131, 1126, 1135, - 1136, 1138, 1135, 1136, 1137, 1140, 1138, 1133, 1141, 1134, - 1139, 1144, 1142, 1143, 1147, 1145, 1148, 1140, 1142, 1143, - 1145, 1146, 1146, 1149, 1150, 1152, 1144, 1141, 1153, 1154, - - 1148, 1155, 1157, 1147, 1162, 1149, 1159, 1153, 1158, 1158, - 1160, 1161, 1150, 1152, 1159, 1160, 1161, 1164, 1154, 1165, - 1166, 1157, 1167, 1170, 1162, 63, 1155, 1167, 1168, 1169, - 1169, 1164, 1166, 1171, 1165, 1172, 1173, 1168, 1180, 1171, - 1174, 1172, 1175, 1170, 1175, 1174, 1176, 1177, 1178, 1179, - 1181, 1176, 1173, 1180, 1179, 1183, 1182, 1184, 1186, 1186, - 1187, 1177, 1178, 1182, 1188, 1189, 1190, 1191, 1196, 1181, - 1183, 1194, 1190, 1196, 1187, 1194, 1184, 1199, 1192, 1198, - 1189, 1201, 1188, 1192, 1195, 1195, 1198, 1191, 1197, 1197, - 1200, 1199, 1192, 1200, 1192, 1202, 1203, 1192, 1204, 1205, - - 1201, 1207, 1206, 1204, 1208, 1203, 1209, 1207, 1210, 1208, - 1211, 1213, 1213, 1202, 1206, 1216, 1214, 1215, 1205, 1210, - 1209, 1214, 1215, 1217, 1219, 1220, 1218, 1221, 1217, 1211, - 1218, 1222, 1224, 1219, 1223, 1216, 1225, 1223, 1227, 1226, - 1220, 1228, 1221, 1225, 1231, 1229, 1223, 1224, 1230, 1232, - 1222, 1226, 1233, 1234, 1230, 1235, 1236, 1227, 1233, 1231, - 1232, 1237, 1228, 1229, 1238, 1236, 1239, 1240, 1241, 1242, - 1244, 1243, 1247, 1234, 1246, 1235, 1237, 1243, 1239, 1250, - 1246, 1248, 1251, 1238, 1242, 1253, 1240, 1247, 1249, 1252, - 1244, 1255, 1340, 1241, 1252, 1248, 1249, 1253, 1251, 1250, - - 1254, 1256, 1270, 1257, 1261, 1254, 1254, 1258, 1258, 1340, - 1255, 1260, 1265, 1261, 1262, 1256, 1257, 1259, 1259, 1287, - 1262, 1265, 1259, 1270, 1260, 1259, 1259, 1263, 1263, 1264, - 1259, 1266, 1287, 1267, 1264, 1273, 1259, 1266, 1267, 1268, - 1259, 1269, 1269, 1274, 1268, 1271, 1271, 1272, 1275, 1278, - 1272, 1276, 1272, 1277, 1275, 1273, 1277, 1276, 1278, 1279, - 1280, 1274, 1281, 1282, 1283, 1280, 1284, 1286, 1285, 1288, - 1283, 1286, 1284, 1285, 1290, 1289, 1281, 58, 1288, 1279, - 1289, 1282, 1297, 1288, 1296, 1288, 1293, 1288, 1290, 1288, - 1291, 1291, 1292, 1292, 1295, 1292, 1298, 1293, 1295, 1296, - - 1299, 1300, 1297, 1301, 1302, 1303, 1300, 1300, 1304, 1299, - 1303, 1305, 1301, 1306, 1298, 1307, 1308, 1309, 1310, 1310, - 1305, 1311, 1304, 1309, 1313, 1315, 1302, 1312, 1316, 1319, - 1308, 1314, 1306, 1311, 1307, 1312, 1314, 1316, 1313, 1315, - 1317, 1318, 1322, 1320, 1321, 1321, 1328, 1317, 1320, 1323, - 1323, 1324, 1326, 1324, 1319, 1326, 1327, 1322, 1329, 1318, - 1331, 1327, 1330, 1330, 1335, 1328, 1336, 1329, 1332, 1332, - 1333, 1333, 1334, 1337, 1338, 1338, 1339, 1334, 1341, 1342, - 1331, 1341, 1343, 1345, 1344, 1335, 1347, 1336, 1343, 1344, - 1350, 1346, 1345, 1346, 1337, 1349, 1339, 1351, 1349, 1342, - - 1353, 1352, 1354, 1355, 1347, 1350, 1352, 1354, 1356, 1357, - 1351, 1355, 1357, 1356, 1353, 1358, 1359, 1359, 1360, 1361, - 1358, 1362, 1363, 1360, 1366, 1364, 1367, 1362, 1368, 1363, - 1366, 1369, 1367, 1368, 1370, 1371, 1369, 1361, 1364, 1372, - 1370, 1373, 1374, 1374, 1371, 1375, 1377, 1380, 1378, 1381, - 1382, 1377, 1373, 1383, 1384, 1385, 1388, 1387, 1372, 1383, - 1384, 1385, 1380, 1387, 1389, 1375, 1378, 1390, 1391, 1381, - 1388, 1392, 1393, 1382, 1394, 1394, 1388, 1395, 1396, 1400, - 1391, 1397, 1403, 1398, 1389, 1392, 1405, 1390, 1398, 1401, - 1393, 1399, 1399, 57, 1401, 1408, 1409, 1395, 1406, 1397, - - 1404, 1403, 1400, 1396, 1405, 1404, 1404, 1406, 1407, 1408, - 1410, 1409, 1411, 1412, 1420, 1414, 1407, 1411, 1416, 1413, - 1411, 1413, 1412, 1417, 1416, 1410, 1418, 1417, 1410, 1414, - 1419, 1421, 1422, 1420, 1423, 1419, 1419, 1418, 1424, 1423, - 1425, 1426, 1427, 1424, 1428, 1425, 1429, 1431, 1437, 1428, - 1422, 1432, 1433, 1434, 1434, 1436, 1435, 1421, 1438, 1426, - 1435, 1431, 1427, 1439, 1438, 1440, 1429, 1437, 1441, 1432, - 1433, 1442, 1447, 1436, 1443, 1439, 1444, 1445, 1446, 1447, - 1449, 1440, 1451, 1446, 1456, 1442, 1450, 1441, 1448, 1443, - 1452, 1444, 1454, 1448, 1453, 1453, 1445, 1455, 1449, 1452, - - 1450, 1457, 1457, 1451, 1456, 1458, 1455, 1454, 1459, 1460, - 1464, 1458, 1461, 1461, 1459, 1462, 1462, 1465, 1463, 52, - 1466, 1467, 1468, 1460, 1463, 1466, 1464, 1467, 1468, 1469, - 1470, 1470, 1471, 1471, 1477, 1469, 1473, 1473, 1465, 1474, - 1475, 1476, 1478, 1474, 1480, 1479, 1477, 1481, 1481, 1475, - 1482, 1480, 1471, 1483, 1471, 1485, 1478, 1484, 1486, 1476, - 1479, 1483, 1484, 1489, 1490, 1490, 1487, 1491, 1488, 1485, - 1482, 1487, 1487, 1488, 1488, 1492, 1493, 1486, 1495, 1494, - 1496, 1497, 1498, 1489, 1494, 1493, 1491, 1499, 1498, 1500, - 1501, 1502, 1499, 1503, 1492, 1504, 1505, 1495, 1506, 1497, - - 1496, 1504, 1507, 1508, 1506, 1509, 1502, 1500, 1507, 1510, - 1501, 1511, 1512, 1513, 1514, 1505, 47, 1515, 1518, 1503, - 1516, 1516, 1508, 1517, 1509, 1519, 1517, 1513, 1510, 1520, - 1511, 1512, 1515, 1521, 1521, 1514, 1525, 1518, 1522, 1522, - 1523, 1520, 1524, 1526, 1519, 1523, 1524, 1527, 1528, 1525, - 1531, 1529, 1533, 1529, 1532, 1534, 1527, 1529, 1526, 1532, - 1535, 1528, 1536, 1536, 1537, 1538, 1539, 1533, 1531, 1537, - 1529, 1538, 1540, 1541, 1543, 1534, 1535, 1542, 1543, 1541, - 1544, 1539, 1542, 1545, 1544, 1540, 1546, 1547, 1548, 1549, - 1550, 1550, 1552, 1554, 1555, 1549, 1547, 1556, 1556, 1555, - - 1557, 1558, 1562, 1545, 1546, 1562, 1557, 1564, 1548, 1565, - 1552, 1560, 1560, 1566, 1554, 1563, 1563, 1568, 1569, 1571, - 1568, 1558, 1570, 1564, 1572, 1565, 1573, 1573, 1571, 1566, - 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1580, 1577, 1569, - 1581, 1579, 1570, 1582, 1572, 1574, 1584, 1583, 1578, 1581, - 1585, 1576, 1575, 1586, 1586, 1587, 1588, 1590, 1589, 1591, - 1591, 1582, 1583, 1589, 1592, 1593, 1594, 1594, 1592, 1587, - 1585, 1584, 1590, 1595, 1588, 1596, 1597, 1598, 1599, 1600, - 1604, 1598, 1602, 1602, 1600, 1593, 1603, 1597, 1606, 1603, - 1607, 1605, 1608, 1604, 1596, 1595, 1605, 1599, 1609, 1610, - - 1611, 1612, 1612, 1614, 1606, 1613, 1608, 1615, 1607, 1618, - 1613, 1616, 1616, 1610, 1618, 1617, 1619, 1609, 1609, 1620, - 1623, 1620, 1622, 1614, 1617, 1611, 1621, 1615, 1622, 1624, - 1626, 1621, 1627, 1627, 1628, 1624, 1619, 1629, 1632, 1636, - 1623, 1631, 1635, 1629, 1626, 1637, 1631, 1633, 1633, 1634, - 1634, 1638, 1640, 1628, 1638, 1641, 1635, 1636, 1639, 1639, - 1637, 1642, 1632, 1644, 1650, 1643, 1648, 1641, 1643, 1644, - 1640, 1643, 1645, 1646, 1649, 1648, 1646, 1645, 1653, 1649, - 1661, 1642, 1651, 1643, 1654, 1651, 1652, 1652, 1655, 1650, - 1654, 1656, 1646, 1661, 1655, 1659, 1656, 1657, 1657, 1658, - - 1658, 1659, 1653, 1660, 1662, 1663, 1664, 1665, 1660, 1666, - 1665, 1667, 1668, 1671, 1669, 1666, 1675, 1667, 1668, 1669, - 1672, 1670, 1662, 1676, 1663, 1672, 1664, 1670, 1673, 1673, - 1674, 1677, 1678, 1679, 1675, 1674, 1671, 1684, 1680, 1683, - 1681, 1682, 1687, 1676, 1685, 1686, 1677, 1686, 1685, 1688, - 1692, 1678, 1680, 1679, 1681, 1682, 1688, 1683, 1690, 1691, - 1693, 1687, 1684, 1692, 1694, 1695, 1693, 1696, 1697, 1698, - 1690, 1691, 1698, 1699, 1699, 1703, 1700, 1702, 1702, 1705, - 1708, 1695, 1697, 1704, 1694, 1700, 1707, 1696, 1704, 1709, - 1698, 1705, 1706, 1706, 1708, 1703, 1710, 1711, 1713, 1714, - - 1712, 1707, 1715, 1719, 1717, 1713, 1711, 1720, 1714, 1724, - 1720, 1714, 1727, 1709, 1710, 1712, 1721, 1721, 1715, 1717, - 1722, 1722, 1723, 1725, 1717, 1727, 1725, 1724, 1719, 1726, - 1726, 1728, 1729, 1730, 1723, 1732, 1731, 1729, 1730, 1731, - 1733, 1734, 1735, 1736, 1737, 1733, 1739, 1820, 1740, 1743, - 1728, 1820, 1736, 1738, 1740, 1739, 1732, 1742, 1735, 1744, - 1734, 1745, 1738, 1737, 1742, 1738, 1741, 1741, 1746, 1743, - 1747, 1748, 1744, 1749, 1753, 1750, 1748, 1748, 1749, 1745, - 1754, 1757, 1746, 1755, 1755, 1756, 1747, 1750, 1756, 1759, - 1759, 1758, 1760, 1760, 1759, 1763, 1761, 1757, 1754, 1753, - - 1758, 1762, 1764, 1765, 1766, 1761, 1762, 1760, 1761, 1766, - 1766, 1768, 1769, 1763, 1770, 1771, 1772, 1774, 1773, 1782, - 1771, 1765, 18, 1764, 1773, 1768, 1776, 1769, 1775, 1775, - 1772, 1778, 1776, 1777, 1779, 1774, 1770, 1780, 1777, 1782, - 1779, 1783, 1784, 1780, 1785, 1778, 1787, 1786, 1784, 1791, - 1786, 1789, 1787, 1792, 1793, 1783, 1786, 1785, 1794, 1789, - 1795, 1796, 1797, 17, 1799, 1795, 1794, 1798, 1791, 1800, - 1796, 1801, 1792, 1793, 1803, 1797, 1798, 1799, 1802, 1802, - 1803, 1804, 1806, 1800, 1808, 1801, 1805, 1804, 1809, 1805, - 1807, 1807, 1810, 1811, 1811, 1806, 1812, 1813, 1814, 1815, - - 1802, 1816, 1819, 1813, 1808, 1821, 1809, 1818, 1818, 1812, - 1821, 1810, 1822, 1823, 1825, 1815, 1824, 1826, 1823, 1816, - 1814, 1824, 1819, 1825, 1828, 1829, 1830, 1831, 1832, 1830, - 1833, 1833, 1822, 1834, 1829, 1828, 1835, 1836, 1839, 1831, - 1826, 1837, 1837, 1832, 1838, 1839, 1843, 1840, 1835, 1841, - 1844, 1845, 1834, 1847, 1846, 1853, 1836, 1845, 1838, 1840, - 1853, 1841, 1848, 1849, 1849, 1843, 1846, 1854, 1848, 1850, - 1844, 1847, 1850, 1851, 1851, 1855, 1854, 1856, 1856, 1857, - 1858, 1855, 1858, 1859, 1860, 1861, 1859, 1862, 1863, 1864, - 1865, 1857, 1866, 1869, 1864, 1865, 1867, 1868, 1869, 1871, - - 1870, 1866, 1874, 0, 1860, 1862, 1863, 1861, 1867, 1870, - 1873, 1872, 1868, 1875, 1875, 1873, 1872, 1874, 1876, 1871, - 1877, 1879, 1870, 1872, 1876, 1880, 1881, 1882, 1883, 1884, - 1956, 1884, 1889, 1885, 1886, 1886, 1892, 1879, 1887, 1887, - 1893, 1877, 1894, 1882, 1880, 1881, 1956, 1885, 1883, 1885, - 1888, 1888, 1889, 1890, 1890, 1891, 1891, 1892, 1895, 1895, - 1896, 1893, 1897, 1894, 1896, 1900, 1898, 1901, 1897, 1898, - 1902, 1900, 1903, 1904, 1905, 1911, 1902, 1906, 1904, 1909, - 1906, 1907, 1907, 1908, 1909, 1901, 1910, 1910, 1912, 1913, - 1911, 1914, 1915, 1915, 1913, 1903, 1914, 1916, 1917, 1905, - - 1918, 1919, 1916, 1908, 1917, 1920, 1921, 1923, 1924, 1912, - 1922, 1925, 1918, 1918, 1918, 1926, 1922, 1929, 1925, 1918, - 1926, 1919, 1930, 1920, 1928, 1932, 1921, 1923, 1924, 1928, - 1928, 1929, 1931, 1933, 1931, 1934, 1932, 1930, 1935, 1936, - 1937, 1934, 1938, 1938, 1939, 1940, 1940, 1935, 1933, 1941, - 1942, 1943, 1943, 1944, 1944, 1945, 1948, 1948, 1949, 1936, - 1953, 1937, 1950, 1955, 1952, 1957, 1958, 1958, 1954, 1941, - 1939, 1950, 1942, 1952, 1954, 1945, 1959, 1960, 1961, 1957, - 1962, 1953, 1955, 1949, 1963, 1961, 1964, 1964, 1965, 1962, - 1966, 1969, 1960, 1968, 1970, 1971, 1969, 1959, 1972, 1968, - - 1970, 1973, 1974, 1976, 1974, 1972, 1966, 1973, 1978, 1978, - 1963, 1977, 1980, 1979, 1965, 1971, 1981, 1977, 1979, 1982, - 1985, 1980, 1976, 1983, 1984, 1986, 1987, 1984, 1986, 1988, - 1990, 1981, 1985, 1989, 1989, 1991, 1990, 1992, 1993, 1982, - 1996, 1991, 1983, 1994, 1987, 1997, 1998, 1994, 1999, 1999, - 2000, 1998, 2001, 1993, 2002, 1988, 2004, 1992, 2005, 2008, - 1996, 0, 2005, 1994, 2006, 2006, 2007, 1997, 2008, 2002, - 2011, 2001, 2007, 2013, 2000, 2004, 2009, 2009, 2010, 2012, - 2012, 2011, 2010, 2014, 2015, 2016, 2011, 2017, 2018, 2019, - 2016, 2022, 2020, 2021, 2013, 2023, 2031, 2014, 2020, 2024, - - 2023, 2025, 2025, 2015, 2026, 2026, 2022, 2017, 2018, 2019, - 2027, 2021, 2024, 2029, 2027, 2030, 2031, 2040, 2032, 2033, - 2033, 0, 2029, 2032, 2035, 2035, 2030, 2036, 2037, 2039, - 2042, 2030, 2036, 2036, 2037, 2039, 2041, 2045, 2043, 2047, - 2049, 2041, 2042, 2040, 2043, 2051, 2046, 2048, 2048, 2045, - 2046, 2047, 2050, 2052, 2053, 2053, 2054, 2055, 2050, 2052, - 2057, 2056, 2059, 2060, 2061, 2049, 2056, 2051, 2063, 2061, - 2067, 2063, 2057, 2076, 2059, 2054, 2076, 2055, 2064, 2064, - 2065, 2065, 2060, 2066, 2066, 2068, 2069, 2072, 2070, 2071, - 2067, 2068, 2069, 2070, 2074, 2071, 2072, 2077, 2080, 2074, - - 2078, 2078, 2081, 2082, 2083, 2083, 2084, 2085, 2082, 2077, - 2080, 2086, 2085, 2089, 2081, 2084, 2086, 2087, 2088, 2088, - 2087, 2090, 2091, 2092, 2093, 2096, 2094, 2097, 2093, 2095, - 2090, 2094, 2098, 2089, 2099, 2095, 2097, 2101, 2101, 2102, - 2091, 2105, 2092, 2096, 2103, 2104, 2106, 2106, 2099, 2101, - 2098, 2107, 2108, 2103, 2104, 2109, 2111, 2102, 2110, 2116, - 2107, 2105, 2116, 2110, 2108, 2114, 2114, 2117, 2118, 2111, - 2119, 2122, 2121, 2123, 2124, 2127, 2109, 2125, 2125, 2123, - 2126, 2128, 2126, 2117, 2118, 2122, 2119, 2121, 2130, 2127, - 2135, 2124, 2129, 2129, 2132, 2132, 2130, 2133, 2133, 2128, - - 2136, 2137, 2138, 2139, 2140, 2141, 2136, 2137, 2142, 2142, - 2139, 2143, 2143, 2135, 2144, 2145, 2138, 2146, 2147, 2148, - 2143, 2149, 2151, 2150, 2156, 2141, 2140, 2145, 2153, 2146, - 2157, 2148, 2150, 2147, 2152, 2144, 2154, 2151, 2154, 2152, - 2152, 2160, 2154, 2161, 2156, 2158, 2164, 2149, 2159, 2159, - 2167, 2153, 2167, 2157, 2168, 2154, 2174, 2158, 2162, 2160, - 2163, 2162, 2166, 2161, 2169, 2163, 2164, 2166, 2170, 2169, - 2172, 2175, 2168, 2176, 2174, 2170, 2177, 2178, 2177, 2172, - 2175, 2179, 2180, 2181, 2183, 2176, 2183, 2186, 2180, 2187, - 2184, 2185, 2185, 2188, 2187, 2188, 2178, 2189, 2191, 2192, - - 2190, 2179, 2189, 2181, 2184, 2190, 2193, 2195, 2194, 2196, - 2199, 2197, 2195, 2186, 2194, 2198, 2191, 2192, 2199, 2201, - 2198, 2198, 2196, 2197, 2203, 2202, 2193, 2204, 2204, 2205, - 2205, 2206, 2207, 2208, 2209, 2211, 2203, 2211, 2201, 2202, - 2209, 2210, 2206, 2212, 2213, 2215, 2210, 2207, 2214, 2214, - 2216, 2216, 2213, 2208, 2217, 2217, 2218, 2215, 2219, 2220, - 2213, 2212, 2222, 2219, 2223, 2218, 2222, 2224, 2225, 2224, - 2227, 2229, 2228, 2223, 2226, 2231, 2223, 2220, 2243, 2226, - 2226, 2228, 2227, 2229, 2235, 2232, 2233, 2231, 2236, 2225, - 2232, 2233, 2237, 2238, 2238, 2239, 2236, 2235, 2240, 2241, - - 2244, 2237, 2242, 2243, 2245, 2246, 2250, 2251, 2236, 2248, - 2246, 2249, 2251, 2239, 2244, 2252, 2240, 2241, 2242, 2245, - 2252, 2248, 2253, 2249, 2254, 2260, 2250, 2257, 2259, 2261, - 2263, 2253, 2262, 2257, 2259, 2268, 2264, 2265, 2265, 2269, - 2266, 2274, 2254, 2270, 2261, 2264, 2257, 2270, 2260, 2266, - 2262, 2267, 2267, 2268, 2271, 2263, 2272, 2275, 2269, 2271, - 2274, 2276, 2277, 2275, 2278, 2279, 2281, 2277, 2277, 2272, - 2278, 2279, 2280, 2282, 2281, 2280, 2285, 2285, 2287, 2286, - 2286, 2288, 2288, 2276, 2289, 2289, 2290, 2287, 2291, 2292, - 2300, 2293, 2296, 2282, 2286, 2292, 2293, 2296, 2290, 2294, - - 2294, 2295, 2295, 2297, 2299, 2286, 2291, 2301, 2299, 2297, - 2300, 2301, 2302, 2304, 2305, 2307, 2306, 2308, 2309, 2305, - 2311, 2310, 2308, 2312, 2313, 2314, 2314, 2315, 2312, 2316, - 2307, 2315, 2302, 2318, 2319, 2320, 2309, 2310, 2304, 2306, - 2311, 2325, 2317, 2321, 2316, 2322, 2313, 2317, 2324, 2323, - 2328, 2318, 2329, 2320, 2323, 2321, 2326, 2326, 2328, 2325, - 2319, 2324, 2330, 2331, 2322, 2332, 2333, 2334, 2335, 2338, - 2337, 2329, 2336, 2339, 2343, 2338, 2346, 2341, 2346, 2339, - 2344, 2330, 2331, 2347, 2336, 2352, 2334, 2343, 2332, 2335, - 2333, 2337, 2341, 2345, 2344, 2348, 2348, 2349, 2350, 2345, - - 2351, 2350, 2349, 2347, 2353, 2359, 2354, 2355, 2355, 2352, - 2356, 2356, 2357, 2351, 2357, 2358, 2358, 2360, 2353, 2354, - 2359, 2361, 2362, 2362, 2364, 2364, 2362, 2365, 2365, 2366, - 2366, 2367, 2360, 2373, 2361, 2368, 2368, 2369, 2369, 2370, - 2367, 2372, 2374, 2367, 2370, 2375, 2372, 2376, 2376, 2377, - 2377, 2378, 2382, 2373, 2379, 2379, 2380, 2375, 2381, 2381, - 2383, 2386, 2374, 2384, 2384, 2383, 2389, 2382, 2385, 2385, - 2378, 2387, 2388, 2388, 2380, 2386, 2390, 2390, 2391, 2392, - 2387, 2394, 2396, 2389, 2395, 2395, 2394, 2397, 2397, 2398, - 2399, 2400, 2391, 2401, 2404, 2399, 2401, 2400, 2392, 2402, - - 2402, 2396, 2403, 2403, 2405, 2408, 2406, 2398, 2406, 2409, - 2410, 2410, 2411, 2404, 2413, 2402, 2414, 2415, 2411, 2405, - 2408, 2416, 2417, 2418, 2418, 2419, 2417, 2420, 2409, 2425, - 2421, 2414, 2420, 2427, 2413, 2428, 2416, 2422, 2422, 2426, - 2415, 2424, 2424, 2429, 2419, 2421, 2426, 2427, 2430, 2425, - 2431, 2433, 2422, 2428, 2432, 2432, 2434, 2438, 2434, 2435, - 2433, 2429, 2435, 2430, 2437, 2441, 2439, 2440, 2442, 2438, - 2437, 2439, 2440, 2443, 2444, 2445, 2431, 2435, 2446, 2435, - 2445, 2442, 2448, 2444, 2449, 2451, 2450, 2448, 2454, 2449, - 2441, 2450, 2452, 2453, 2443, 2455, 2456, 2459, 2452, 2453, - - 2451, 2457, 2456, 2458, 2446, 2460, 2457, 2462, 2458, 2454, - 2455, 2461, 2463, 0, 2461, 2464, 2465, 2466, 2460, 2467, - 2472, 2463, 2459, 2468, 2464, 2465, 2466, 2462, 2469, 2468, - 2474, 2470, 2475, 2467, 2469, 2470, 2476, 2476, 2477, 2479, - 2472, 2475, 2478, 2478, 2477, 2480, 2480, 2481, 2479, 2482, - 2474, 2478, 2481, 2487, 2484, 2488, 2485, 2486, 2486, 2491, - 2495, 2490, 2492, 2495, 2488, 2497, 2493, 0, 2487, 2482, - 2484, 2482, 2485, 2490, 2496, 2491, 2498, 2492, 2493, 2496, - 2499, 2499, 2500, 2500, 2509, 2497, 2502, 2502, 2498, 2503, - 2504, 2505, 2503, 2506, 2507, 2504, 2511, 2505, 2509, 2506, - - 2508, 2508, 2512, 2507, 2510, 2510, 2513, 2515, 2511, 2514, - 2514, 2519, 2516, 2515, 2517, 2519, 2512, 2520, 2522, 2517, - 2520, 2521, 2521, 2522, 2523, 2513, 2516, 2524, 2525, 2523, - 2526, 2527, 2528, 2528, 2529, 2527, 2524, 2525, 2531, 2532, - 2533, 2534, 2535, 2531, 2536, 2537, 2538, 2529, 2536, 2539, - 2526, 2538, 2540, 2541, 2541, 2539, 2535, 2543, 2540, 2532, - 2533, 2534, 2542, 2542, 2544, 2537, 2545, 2546, 2547, 2548, - 2548, 2551, 2546, 2552, 2550, 2543, 2553, 2556, 2552, 2556, - 2555, 2560, 2553, 2544, 2554, 2545, 2550, 2551, 2555, 2547, - 2554, 2558, 2561, 2562, 2562, 2560, 2563, 2564, 2564, 2563, - - 2558, 2566, 2567, 2568, 2566, 2567, 2561, 2569, 2569, 2572, - 2573, 2574, 2576, 2572, 2575, 2575, 2573, 2579, 2579, 2581, - 2583, 2576, 2584, 2574, 2588, 2587, 2589, 2590, 2592, 2568, - 2587, 2593, 2599, 2592, 2583, 2601, 2593, 2581, 2584, 2594, - 2594, 2596, 2596, 2598, 2589, 2600, 2600, 2602, 2590, 2598, - 2588, 2601, 2599, 2603, 2605, 2607, 2606, 2612, 2603, 2606, - 2608, 2609, 2609, 2611, 2613, 2614, 2612, 2607, 2615, 2602, - 2613, 2614, 2608, 2605, 2616, 2618, 2618, 2619, 2620, 2611, - 2619, 2621, 2624, 2624, 2622, 2626, 2615, 2625, 2625, 2616, - 2626, 2627, 2629, 2630, 2628, 2634, 2632, 2620, 2630, 2633, - - 2621, 2621, 2622, 2628, 2631, 2629, 2631, 2634, 2636, 2627, - 2632, 2635, 2637, 2633, 2638, 2643, 2635, 2639, 2639, 2638, - 2640, 2640, 2641, 2641, 2642, 2642, 2645, 2643, 2636, 2644, - 2646, 2644, 2637, 2647, 2647, 2646, 2648, 2648, 2649, 2649, - 2650, 2651, 2652, 2653, 2645, 2654, 2655, 2656, 2656, 2657, - 2658, 2658, 2650, 2660, 2652, 2659, 2659, 2661, 2661, 2662, - 2663, 2651, 2655, 2653, 2660, 2664, 2654, 2663, 2657, 2665, - 2666, 2662, 2667, 2668, 2670, 2666, 2672, 2664, 2669, 2669, - 2671, 2671, 2674, 2670, 2673, 2675, 2676, 2679, 2677, 2665, - 2680, 2680, 2667, 2668, 2678, 2674, 2678, 2681, 2682, 2679, - - 2676, 2683, 2672, 2685, 2673, 2686, 2681, 2687, 2688, 2675, - 2677, 2688, 2689, 2682, 2690, 2691, 2683, 2692, 2692, 2690, - 2691, 2685, 2693, 2693, 2694, 2694, 2689, 2686, 2696, 2696, - 2687, 2698, 2698, 2699, 2700, 2701, 2704, 2702, 2706, 2705, - 2708, 2707, 2709, 2711, 2710, 2700, 2710, 2712, 2713, 2708, - 2719, 2699, 2702, 2718, 2701, 0, 2704, 2705, 2714, 2714, - 2706, 2707, 2709, 2711, 2716, 2712, 2713, 2718, 2716, 2717, - 2717, 2720, 2719, 2721, 2721, 2723, 2724, 2724, 2725, 2726, - 2720, 2727, 2728, 2729, 2723, 2730, 2731, 2734, 2733, 2728, - 2732, 2734, 2738, 2735, 2736, 2736, 2725, 2726, 2729, 2727, - - 2735, 2737, 2737, 2730, 2731, 2739, 2732, 2733, 2740, 2742, - 2742, 2744, 2738, 2745, 2740, 2743, 2743, 2744, 2746, 2747, - 2748, 2749, 2750, 2739, 2751, 2751, 2752, 2750, 2753, 2754, - 2755, 2745, 2756, 2757, 2747, 2749, 2746, 2763, 2757, 2748, - 2758, 2755, 2758, 2759, 2759, 2760, 2752, 2760, 2753, 2754, - 2761, 2761, 2756, 2765, 2766, 2767, 2763, 2768, 2769, 2770, - 2771, 2772, 2765, 2769, 2773, 2771, 2776, 2767, 2778, 2777, - 2780, 2778, 2781, 2766, 2779, 2779, 0, 2768, 2784, 2770, - 2783, 2772, 2787, 2773, 2788, 2780, 2776, 2777, 2782, 2782, - 2781, 2783, 2785, 2784, 2789, 2792, 2785, 2787, 2790, 2788, - - 2789, 2794, 2790, 2791, 2791, 2795, 2797, 2796, 2792, 2798, - 2799, 2799, 2801, 2802, 2797, 2803, 2794, 2804, 2804, 2803, - 2805, 2805, 2802, 2806, 2801, 2795, 2796, 2807, 2807, 2798, - 2808, 2809, 2810, 2811, 2812, 2808, 2813, 2813, 2818, 2818, - 2809, 2819, 2806, 2820, 2822, 2811, 2821, 2821, 2810, 2823, - 2819, 2824, 2825, 2829, 2812, 2828, 2828, 2822, 2826, 2827, - 2830, 2825, 2823, 2841, 2824, 2820, 2835, 2826, 2827, 2832, - 2832, 2835, 2837, 2829, 2838, 2830, 2839, 2837, 2840, 2843, - 2842, 2839, 2841, 2845, 2849, 2847, 2840, 2843, 2838, 2842, - 2847, 2848, 2850, 2850, 2851, 2851, 2848, 2852, 2845, 2849, - - 2853, 2855, 2852, 2854, 2854, 2856, 2857, 2858, 2855, 2859, - 2856, 2860, 2861, 2861, 2862, 2859, 2860, 2863, 2868, 2853, - 2864, 2864, 2863, 2872, 2857, 2858, 2865, 2865, 2872, 2862, - 2871, 2868, 2869, 2869, 2870, 2871, 2871, 2870, 2873, 2874, - 2875, 2876, 2877, 2873, 2879, 2876, 2875, 2877, 2878, 2881, - 2880, 2884, 2885, 2874, 2882, 2883, 2884, 2878, 2880, 2879, - 2882, 2883, 2886, 2886, 2885, 2888, 2889, 2892, 2897, 2894, - 2881, 2889, 2888, 2890, 2894, 2895, 2890, 2896, 2898, 2892, - 2895, 2899, 2896, 2900, 2901, 2901, 2897, 2902, 2907, 2903, - 2899, 2898, 2900, 2903, 2904, 2908, 2902, 2909, 2912, 2904, - - 2913, 2908, 2914, 2909, 2915, 2917, 2907, 2916, 2916, 2918, - 2920, 2923, 2917, 2922, 2922, 2921, 2924, 2912, 2926, 2920, - 2913, 2928, 2914, 2915, 2921, 2930, 2923, 2933, 2918, 2925, - 2925, 2924, 2932, 2932, 2931, 2934, 2928, 2926, 2931, 2936, - 2935, 2934, 2937, 2938, 2941, 2930, 2935, 2939, 2939, 2938, - 2942, 2940, 2933, 2944, 2945, 2942, 2950, 2947, 2936, 2940, - 2937, 2948, 2944, 2947, 2948, 2951, 2949, 2945, 2953, 2941, - 2949, 2952, 2952, 2956, 2950, 2955, 2955, 2957, 2957, 2951, - 2958, 2959, 2959, 2953, 2960, 2960, 2962, 2962, 2963, 2964, - 2965, 2956, 2963, 2969, 2964, 2967, 2967, 2970, 2971, 2965, - - 2972, 2975, 2970, 2958, 2973, 2972, 2972, 2976, 2977, 2977, - 2971, 2979, 2979, 2969, 2980, 2980, 2973, 2981, 2981, 2982, - 2983, 2975, 2982, 2984, 2986, 2986, 2987, 2976, 2989, 2990, - 2990, 2991, 2991, 2983, 2992, 2992, 2984, 2993, 2994, 2994, - 2995, 2996, 2997, 2998, 2987, 2999, 2999, 3000, 2989, 2998, - 3004, 3000, 2993, 2995, 3003, 3004, 2997, 3006, 3007, 2996, - 3003, 3010, 3006, 3006, 3008, 3009, 3011, 3010, 3012, 3013, - 3014, 3014, 3011, 3013, 3017, 3019, 3022, 3020, 3025, 3017, - 3020, 3007, 3027, 3019, 3008, 3009, 3023, 3024, 3024, 3023, - 3028, 3029, 3026, 3012, 3031, 3025, 3025, 3026, 3030, 3030, - - 3027, 3022, 3033, 3032, 3034, 3029, 3032, 3035, 3031, 3039, - 3028, 3534, 3037, 3534, 3032, 3035, 3033, 3037, 3037, 3038, - 3040, 3040, 3046, 3034, 3038, 3038, 3041, 3041, 3039, 3042, - 3042, 3043, 3043, 3044, 3044, 3045, 3045, 3047, 3046, 3048, - 3049, 3050, 3047, 3051, 3052, 3053, 3054, 3055, 3056, 3052, - 3050, 3054, 3057, 3058, 3060, 3060, 3055, 3051, 3066, 3048, - 3061, 3061, 3062, 3063, 3053, 3062, 3049, 0, 3056, 3064, - 3064, 3065, 3057, 3058, 3068, 3068, 3066, 3065, 3063, 3069, - 3070, 3070, 3071, 3073, 3073, 3074, 3069, 3071, 3075, 3076, - 3076, 3077, 3078, 3080, 3074, 3081, 3081, 3075, 3082, 3082, - - 3077, 3078, 3083, 3084, 3085, 3086, 3083, 3087, 3088, 3089, - 3092, 3080, 3084, 3091, 3089, 3089, 3086, 3093, 3095, 3092, - 3099, 3093, 3087, 3085, 3101, 3099, 3091, 3104, 3088, 3100, - 3100, 3103, 3103, 3095, 3105, 3106, 3108, 3108, 3101, 3109, - 3110, 3104, 3111, 3115, 3116, 3119, 3110, 3117, 3109, 3116, - 3122, 3120, 3124, 3106, 3111, 3126, 3117, 3120, 3127, 3105, - 3126, 3129, 3122, 3127, 3131, 3119, 3128, 3128, 3115, 3131, - 3129, 3132, 3133, 3124, 3134, 3134, 3136, 3136, 3134, 3137, - 3137, 3138, 3138, 3139, 3132, 3140, 3133, 3141, 3142, 3144, - 3148, 3145, 3139, 3142, 3146, 3144, 3145, 3147, 3147, 3146, - - 3149, 3150, 3151, 3152, 3153, 3140, 3141, 3151, 3148, 3154, - 3153, 3157, 3149, 3155, 3155, 3157, 3160, 3160, 3158, 3159, - 3161, 3152, 3150, 3158, 3159, 3162, 3163, 3165, 3167, 3167, - 3169, 3170, 3171, 3172, 3154, 3175, 3174, 3172, 3176, 3161, - 3162, 3163, 3173, 3169, 3170, 3171, 3176, 3165, 3177, 3178, - 3179, 3173, 3174, 3177, 3175, 3180, 3180, 3181, 3182, 3183, - 3184, 3184, 3185, 3185, 3186, 3190, 3181, 3189, 3192, 3178, - 3179, 3195, 3189, 3189, 3192, 3199, 3182, 3193, 3193, 3190, - 3197, 3197, 3200, 3186, 3202, 3183, 3203, 3208, 3204, 3202, - 3209, 3199, 3195, 3204, 3207, 3207, 3211, 3210, 3200, 3209, - - 3212, 3212, 3203, 3210, 3213, 3215, 3215, 3208, 3216, 3217, - 3221, 3218, 3219, 3219, 3223, 3224, 3221, 3227, 3228, 3211, - 3225, 3224, 3216, 3213, 3238, 3225, 3229, 3229, 3217, 3218, - 3230, 3230, 3231, 3232, 3223, 3233, 3233, 3234, 3236, 3227, - 3235, 3240, 3239, 3238, 3228, 3237, 0, 3231, 3234, 3235, - 3242, 3237, 3249, 3232, 3239, 3233, 3241, 3241, 3236, 3243, - 3244, 3240, 3243, 3244, 3249, 3242, 3245, 3245, 3250, 3251, - 3252, 3252, 3254, 3253, 3255, 3251, 3253, 3257, 3254, 3258, - 3258, 3259, 3257, 3260, 3261, 3265, 3259, 3262, 3250, 3266, - 3261, 3267, 3255, 3263, 3263, 3268, 3270, 3265, 3269, 3269, - - 3272, 3271, 3260, 3361, 3262, 3262, 3361, 3266, 3268, 3272, - 3274, 3274, 3275, 3275, 3278, 3270, 3267, 3271, 3276, 3276, - 3277, 3279, 3280, 3280, 3283, 3277, 3279, 3285, 3278, 3281, - 3281, 3282, 3282, 3283, 3284, 3284, 3286, 3287, 3292, 3288, - 3285, 3291, 3291, 3287, 3288, 3294, 3294, 3295, 3295, 3297, - 3299, 3300, 3301, 3302, 3292, 3303, 3303, 3305, 3305, 3306, - 3307, 3310, 3286, 3308, 3316, 3311, 3312, 3312, 3297, 3313, - 3313, 3301, 3299, 3300, 3311, 3302, 3314, 3308, 3317, 3307, - 3314, 3310, 3316, 3318, 3317, 3306, 3319, 3320, 3321, 3324, - 3325, 3325, 3320, 3321, 3327, 3327, 3328, 3329, 3330, 3332, - - 3331, 3328, 3336, 3318, 3330, 3319, 3336, 3332, 3333, 3333, - 3324, 3329, 3331, 3334, 3337, 3338, 3339, 3340, 3334, 3337, - 3341, 3342, 3340, 3344, 3345, 3346, 3347, 3342, 3350, 3349, - 0, 3344, 3341, 3351, 3352, 3338, 3339, 3353, 3356, 3360, - 3366, 3366, 3353, 3345, 3350, 3346, 3347, 3349, 3355, 3362, - 3351, 3351, 3358, 3355, 3357, 3352, 3372, 3358, 3356, 3360, - 3357, 3368, 3362, 3367, 3367, 3368, 3374, 3374, 3375, 3376, - 3379, 3372, 0, 3375, 3377, 3377, 3382, 3382, 3383, 3383, - 3398, 3383, 3389, 3384, 3384, 3379, 3384, 3389, 3376, 3385, - 3385, 3386, 3386, 3387, 3386, 3390, 3392, 3387, 3391, 3391, - - 3398, 3393, 3396, 3396, 3390, 3397, 3397, 3399, 3400, 3401, - 3401, 3402, 3403, 3400, 3392, 3393, 3406, 3407, 3408, 3409, - 3410, 3412, 3408, 3419, 3407, 3413, 0, 3399, 3409, 3402, - 3413, 3415, 3403, 3414, 3414, 3410, 3416, 3416, 3419, 3412, - 3415, 3406, 3417, 3417, 3418, 3418, 3420, 3421, 3422, 3423, - 3424, 3420, 3425, 3422, 3422, 3423, 3421, 3426, 3427, 3421, - 3428, 3429, 0, 3427, 3431, 3428, 3432, 3425, 3430, 3430, - 3431, 3435, 3432, 3433, 3433, 3424, 3434, 3434, 3426, 3436, - 3429, 3439, 3439, 3440, 3436, 3443, 3435, 3442, 3442, 3445, - 3447, 3447, 3448, 3448, 3443, 3449, 3449, 3440, 3450, 3450, - - 3452, 3452, 3453, 3453, 3454, 3454, 3456, 3445, 3455, 3455, - 3458, 3459, 3459, 3461, 3461, 3462, 3463, 3464, 3466, 3458, - 3467, 3467, 3468, 3470, 3462, 3469, 3469, 3471, 3463, 3482, - 3472, 3476, 3456, 3466, 3473, 3473, 3480, 3464, 3470, 3484, - 3471, 3468, 3472, 3474, 3474, 3488, 3476, 3477, 3477, 3481, - 3483, 3483, 3481, 3486, 3480, 3482, 3486, 3484, 3487, 3488, - 3489, 3490, 3492, 3491, 3487, 3489, 3494, 3495, 3499, 3498, - 3501, 3501, 3494, 3498, 3503, 3504, 3495, 3513, 3492, 3517, - 3490, 3491, 3513, 3499, 3514, 3518, 3518, 3514, 3519, 3519, - 3520, 3520, 3517, 3522, 3522, 3504, 3524, 3525, 3526, 3529, - - 3503, 3527, 3526, 3531, 3532, 3533, 3525, 3535, 3536, 3536, - 3533, 3537, 3538, 3529, 3539, 3532, 3541, 3540, 3543, 3524, - 3542, 3527, 3535, 3545, 3537, 3544, 3531, 3543, 3545, 3546, - 3547, 3538, 3539, 3540, 3548, 3542, 3549, 3544, 3551, 3548, - 3552, 3541, 3547, 3550, 3550, 3552, 3557, 3558, 3559, 3559, - 3546, 3565, 3560, 3561, 3561, 3549, 3562, 3562, 3551, 3566, - 3557, 3560, 3563, 3563, 3564, 3564, 3567, 3558, 3568, 3567, - 3565, 3569, 3570, 3568, 3571, 3572, 3569, 3573, 3574, 3566, - 3575, 3572, 3576, 3576, 3577, 3575, 3578, 3578, 3583, 3571, - 3574, 3573, 3579, 3579, 3580, 3580, 3584, 3570, 3582, 3582, - - 3585, 3585, 3587, 3583, 3577, 3589, 3592, 3592, 3593, 3593, - 3594, 3595, 3598, 3596, 3597, 3584, 3599, 3587, 3594, 3596, - 3597, 3600, 3601, 3589, 3602, 3602, 3598, 3601, 3609, 3599, - 3595, 3604, 3604, 3610, 3612, 3613, 3615, 3616, 3617, 3613, - 3600, 3618, 3616, 3620, 3626, 3619, 3621, 3622, 3612, 3609, - 3627, 3621, 3622, 3610, 3618, 3628, 3615, 3617, 3619, 3623, - 3623, 0, 3620, 3631, 3626, 3629, 3629, 3630, 3627, 3631, - 3632, 3632, 3630, 3633, 3628, 3634, 3635, 3636, 3633, 3637, - 3634, 3635, 3639, 3639, 3640, 3637, 3641, 3641, 3643, 3640, - 3644, 3645, 3643, 3646, 3647, 3648, 3636, 3649, 3645, 3652, - - 3652, 3648, 3650, 3654, 3654, 3655, 3656, 3657, 3658, 3644, - 3659, 3656, 3646, 3647, 3655, 3650, 3649, 3655, 3660, 3660, - 3661, 3662, 3664, 3659, 3666, 3661, 3657, 3658, 3665, 3665, - 3667, 3667, 3668, 3668, 3662, 3669, 3671, 3670, 3672, 3672, - 3669, 3673, 3678, 3666, 3670, 3674, 3673, 3674, 3664, 3675, - 3675, 3676, 3677, 3680, 3683, 3671, 3687, 3679, 3676, 3677, - 3685, 3678, 3679, 3682, 3682, 3685, 3686, 3688, 3689, 3689, - 3692, 3686, 3680, 3683, 3693, 3687, 3691, 3691, 3694, 3694, - 3695, 3695, 3706, 3696, 3698, 3698, 3688, 3699, 3699, 3692, - 3696, 3700, 3702, 3693, 3705, 3707, 0, 3702, 3700, 3705, - - 0, 3706, 3708, 3708, 3709, 3709, 0, 0, 0, 0, - 0, 0, 0, 0, 3707, 3713, 3713, 3713, 3713, 3713, - 3713, 3713, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3715, - 3715, 3715, 3715, 3715, 3715, 3715, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3717, 3717, 3717, 3717, 3717, 3717, 3717, - 3718, 3718, 3718, 3718, 3718, 3718, 3718, 3719, 3719, 3719, - 3719, 3719, 3719, 3719, 3721, 3721, 0, 3721, 3721, 3721, - 3721, 3722, 3722, 0, 0, 0, 3722, 3722, 3723, 3723, - 0, 0, 3723, 0, 3723, 3724, 0, 0, 0, 0, - 0, 3724, 3725, 3725, 0, 0, 0, 3725, 3725, 3726, - - 0, 0, 0, 0, 0, 3726, 3727, 3727, 0, 3727, - 3727, 3727, 3727, 3728, 0, 0, 0, 0, 0, 3728, - 3729, 3729, 0, 0, 0, 3729, 3729, 3730, 3730, 0, - 3730, 3730, 3730, 3730, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 3712, 3712 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -static int yy_more_flag = 0; -static int yy_more_len = 0; -#define yymore() ((yy_more_flag) = 1) -#define YY_MORE_ADJ (yy_more_len) -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "./util/configlexer.lex" -#line 2 "./util/configlexer.lex" -/* - * configlexer.lex - lexical analyzer for unbound config file - * - * Copyright (c) 2001-2006, NLnet Labs. All rights reserved - * - * See LICENSE for the license. - * - */ - -/* because flex keeps having sign-unsigned compare problems that are unfixed*/ -#if defined(__clang__)||(defined(__GNUC__)&&((__GNUC__ >4)||(defined(__GNUC_MINOR__)&&(__GNUC__ ==4)&&(__GNUC_MINOR__ >=2)))) -#pragma GCC diagnostic ignored "-Wsign-compare" -#endif - -#include -#include -#ifdef HAVE_GLOB_H -# include -#endif - -#include "util/config_file.h" -#include "util/configparser.h" -void ub_c_error(const char *message); - -#if 0 -#define LEXOUT(s) printf s /* used ONLY when debugging */ -#else -#define LEXOUT(s) -#endif - -/** avoid warning in about fwrite return value */ -#define ECHO ub_c_error_msg("syntax error at text: %s", yytext) - -/** A parser variable, this is a statement in the config file which is - * of the form variable: value1 value2 ... nargs is the number of values. */ -#define YDVAR(nargs, var) \ - num_args=(nargs); \ - LEXOUT(("v(%s%d) ", yytext, num_args)); \ - if(num_args > 0) { BEGIN(val); } \ - return (var); - -struct inc_state { - char* filename; - int line; - YY_BUFFER_STATE buffer; - struct inc_state* next; - int inc_toplevel; -}; -static struct inc_state* config_include_stack = NULL; -static int inc_depth = 0; -static int inc_prev = 0; -static int num_args = 0; -static int inc_toplevel = 0; - -void init_cfg_parse(void) -{ - config_include_stack = NULL; - inc_depth = 0; - inc_prev = 0; - num_args = 0; - inc_toplevel = 0; -} - -static void config_start_include(const char* filename, int toplevel) -{ - FILE *input; - struct inc_state* s; - char* nm; - if(inc_depth+1 > 100000) { - ub_c_error_msg("too many include files"); - return; - } - if(*filename == '\0') { - ub_c_error_msg("empty include file name"); - return; - } - s = (struct inc_state*)malloc(sizeof(*s)); - if(!s) { - ub_c_error_msg("include %s: malloc failure", filename); - return; - } - if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, - strlen(cfg_parser->chroot)) == 0) { - filename += strlen(cfg_parser->chroot); - } - nm = strdup(filename); - if(!nm) { - ub_c_error_msg("include %s: strdup failure", filename); - free(s); - return; - } - input = fopen(filename, "r"); - if(!input) { - ub_c_error_msg("cannot open include file '%s': %s", - filename, strerror(errno)); - free(s); - free(nm); - return; - } - LEXOUT(("switch_to_include_file(%s)\n", filename)); - inc_depth++; - s->filename = cfg_parser->filename; - s->line = cfg_parser->line; - s->buffer = YY_CURRENT_BUFFER; - s->inc_toplevel = inc_toplevel; - s->next = config_include_stack; - config_include_stack = s; - cfg_parser->filename = nm; - cfg_parser->line = 1; - inc_toplevel = toplevel; - yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); -} - -static void config_start_include_glob(const char* filename, int toplevel) -{ - - /* check for wildcards */ -#ifdef HAVE_GLOB - glob_t g; - int i, r, flags; - if(!(!strchr(filename, '*') && !strchr(filename, '?') && !strchr(filename, '[') && - !strchr(filename, '{') && !strchr(filename, '~'))) { - flags = 0 -#ifdef GLOB_ERR - | GLOB_ERR -#endif - /* do not set GLOB_NOSORT so the results are sorted - and in a predictable order. */ -#ifdef GLOB_BRACE - | GLOB_BRACE -#endif -#ifdef GLOB_TILDE - | GLOB_TILDE -#endif - ; - memset(&g, 0, sizeof(g)); - if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, - strlen(cfg_parser->chroot)) == 0) { - filename += strlen(cfg_parser->chroot); - } - r = glob(filename, flags, NULL, &g); - if(r) { - /* some error */ - globfree(&g); - if(r == GLOB_NOMATCH) - return; /* no matches for pattern */ - config_start_include(filename, toplevel); /* let original deal with it */ - return; - } - /* process files found, if any */ - for(i=(int)g.gl_pathc-1; i>=0; i--) { - config_start_include(g.gl_pathv[i], toplevel); - } - globfree(&g); - return; - } -#endif /* HAVE_GLOB */ - - config_start_include(filename, toplevel); -} - -static void config_end_include(void) -{ - struct inc_state* s = config_include_stack; - --inc_depth; - if(!s) return; - free(cfg_parser->filename); - cfg_parser->filename = s->filename; - cfg_parser->line = s->line; - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(s->buffer); - config_include_stack = s->next; - inc_toplevel = s->inc_toplevel; - free(s); -} - -#ifndef yy_set_bol /* compat definition, for flex 2.4.6 */ -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ - } -#endif - -#line 3456 "" -#define YY_NO_INPUT 1 -#line 191 "./util/configlexer.lex" -#ifndef YY_NO_UNPUT -#define YY_NO_UNPUT 1 -#endif -#ifndef YY_NO_INPUT -#define YY_NO_INPUT 1 -#endif -#line 3465 "" - -#line 3467 "" - -#define INITIAL 0 -#define quotedstring 1 -#define singlequotedstr 2 -#define include 3 -#define include_quoted 4 -#define val 5 -#define include_toplevel 6 -#define include_toplevel_quoted 7 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { -#line 211 "./util/configlexer.lex" - -#line 3691 "" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - (yy_more_len) = 0; - if ( (yy_more_flag) ) - { - (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr)); - (yy_more_flag) = 0; - } - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - 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 >= 3713 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 7235 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 212 "./util/configlexer.lex" -{ - LEXOUT(("SP ")); /* ignore */ } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 214 "./util/configlexer.lex" -{ - /* note that flex makes the longest match and '.' is any but not nl */ - LEXOUT(("comment(%s) ", yytext)); /* ignore */ } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 217 "./util/configlexer.lex" -{ YDVAR(0, VAR_SERVER) } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 218 "./util/configlexer.lex" -{ YDVAR(1, VAR_QNAME_MINIMISATION) } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 219 "./util/configlexer.lex" -{ YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 220 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_THREADS) } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 221 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERBOSITY) } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 222 "./util/configlexer.lex" -{ YDVAR(1, VAR_PORT) } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 223 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_RANGE) } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 224 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 225 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 226 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 227 "./util/configlexer.lex" -{ YDVAR(1, VAR_INCOMING_NUM_TCP) } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 228 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP4) } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 229 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP6) } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 230 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFER_IP4) } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 231 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFER_IP6) } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 232 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_UDP) } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 233 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_TCP) } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 234 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_UPSTREAM) } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 235 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_MSS) } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 236 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_TCP_MSS) } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 237 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 238 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 239 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 240 "./util/configlexer.lex" -{ YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 241 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 242 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 243 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 244 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 245 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 246 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 247 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 248 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 249 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 250 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_WIN_CERT) } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 254 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_WIN_CERT) } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERS) } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERSUITES) } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_USE_SNI) } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTPS_PORT) } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_ENDPOINT) } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } - YY_BREAK -case 52: -YY_RULE_SETUP -#line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NODELAY) } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } - YY_BREAK -case 59: -YY_RULE_SETUP -#line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } - YY_BREAK -case 60: -YY_RULE_SETUP -#line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } - YY_BREAK -case 62: -YY_RULE_SETUP -#line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC_PORTS) } - YY_BREAK -case 63: -YY_RULE_SETUP -#line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } - YY_BREAK -case 64: -YY_RULE_SETUP -#line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } - YY_BREAK -case 65: -YY_RULE_SETUP -#line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } - YY_BREAK -case 67: -YY_RULE_SETUP -#line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } - YY_BREAK -case 84: -YY_RULE_SETUP -#line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } - YY_BREAK -case 85: -YY_RULE_SETUP -#line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } - YY_BREAK -case 86: -YY_RULE_SETUP -#line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } - YY_BREAK -case 88: -YY_RULE_SETUP -#line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } - YY_BREAK -case 90: -YY_RULE_SETUP -#line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MAX_RTT) } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } - YY_BREAK -case 94: -YY_RULE_SETUP -#line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } - YY_BREAK -case 95: -YY_RULE_SETUP -#line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } - YY_BREAK -case 96: -YY_RULE_SETUP -#line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_CONNECT) } - YY_BREAK -case 97: -YY_RULE_SETUP -#line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } - YY_BREAK -case 98: -YY_RULE_SETUP -#line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } - YY_BREAK -case 99: -YY_RULE_SETUP -#line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } - YY_BREAK -case 100: -YY_RULE_SETUP -#line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } - YY_BREAK -case 101: -YY_RULE_SETUP -#line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } - YY_BREAK -case 102: -YY_RULE_SETUP -#line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } - YY_BREAK -case 103: -YY_RULE_SETUP -#line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } - YY_BREAK -case 104: -YY_RULE_SETUP -#line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_UNKNOWN_ADDITIONAL) } - YY_BREAK -case 106: -YY_RULE_SETUP -#line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } - YY_BREAK -case 107: -YY_RULE_SETUP -#line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } - YY_BREAK -case 108: -YY_RULE_SETUP -#line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } - YY_BREAK -case 109: -YY_RULE_SETUP -#line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } - YY_BREAK -case 110: -YY_RULE_SETUP -#line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } - YY_BREAK -case 111: -YY_RULE_SETUP -#line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } - YY_BREAK -case 112: -YY_RULE_SETUP -#line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } - YY_BREAK -case 113: -YY_RULE_SETUP -#line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } - YY_BREAK -case 114: -YY_RULE_SETUP -#line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } - YY_BREAK -case 115: -YY_RULE_SETUP -#line 329 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } - YY_BREAK -case 116: -YY_RULE_SETUP -#line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } - YY_BREAK -case 117: -YY_RULE_SETUP -#line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } - YY_BREAK -case 118: -YY_RULE_SETUP -#line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } - YY_BREAK -case 119: -YY_RULE_SETUP -#line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } - YY_BREAK -case 120: -YY_RULE_SETUP -#line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } - YY_BREAK -case 121: -YY_RULE_SETUP -#line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } - YY_BREAK -case 122: -YY_RULE_SETUP -#line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } - YY_BREAK -case 123: -YY_RULE_SETUP -#line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } - YY_BREAK -case 124: -YY_RULE_SETUP -#line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) } - YY_BREAK -case 125: -YY_RULE_SETUP -#line 339 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } - YY_BREAK -case 126: -YY_RULE_SETUP -#line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } - YY_BREAK -case 127: -YY_RULE_SETUP -#line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } - YY_BREAK -case 128: -YY_RULE_SETUP -#line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } - YY_BREAK -case 129: -YY_RULE_SETUP -#line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } - YY_BREAK -case 130: -YY_RULE_SETUP -#line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } - YY_BREAK -case 131: -YY_RULE_SETUP -#line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } - YY_BREAK -case 132: -YY_RULE_SETUP -#line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } - YY_BREAK -case 133: -YY_RULE_SETUP -#line 347 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } - YY_BREAK -case 134: -YY_RULE_SETUP -#line 348 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } - YY_BREAK -case 135: -YY_RULE_SETUP -#line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } - YY_BREAK -case 136: -YY_RULE_SETUP -#line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } - YY_BREAK -case 137: -YY_RULE_SETUP -#line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } - YY_BREAK -case 138: -YY_RULE_SETUP -#line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } - YY_BREAK -case 139: -YY_RULE_SETUP -#line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } - YY_BREAK -case 140: -YY_RULE_SETUP -#line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } - YY_BREAK -case 141: -YY_RULE_SETUP -#line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } - YY_BREAK -case 142: -YY_RULE_SETUP -#line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } - YY_BREAK -case 143: -YY_RULE_SETUP -#line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } - YY_BREAK -case 144: -YY_RULE_SETUP -#line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } - YY_BREAK -case 145: -YY_RULE_SETUP -#line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } - YY_BREAK -case 146: -YY_RULE_SETUP -#line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } - YY_BREAK -case 147: -YY_RULE_SETUP -#line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } - YY_BREAK -case 148: -YY_RULE_SETUP -#line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } - YY_BREAK -case 149: -YY_RULE_SETUP -#line 363 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } - YY_BREAK -case 150: -YY_RULE_SETUP -#line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } - YY_BREAK -case 151: -YY_RULE_SETUP -#line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } - YY_BREAK -case 152: -YY_RULE_SETUP -#line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } - YY_BREAK -case 153: -YY_RULE_SETUP -#line 367 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } - YY_BREAK -case 154: -YY_RULE_SETUP -#line 368 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_ACTION) } - YY_BREAK -case 155: -YY_RULE_SETUP -#line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } - YY_BREAK -case 156: -YY_RULE_SETUP -#line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } - YY_BREAK -case 157: -YY_RULE_SETUP -#line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } - YY_BREAK -case 158: -YY_RULE_SETUP -#line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } - YY_BREAK -case 159: -YY_RULE_SETUP -#line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } - YY_BREAK -case 160: -YY_RULE_SETUP -#line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } - YY_BREAK -case 161: -YY_RULE_SETUP -#line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } - YY_BREAK -case 162: -YY_RULE_SETUP -#line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } - YY_BREAK -case 163: -YY_RULE_SETUP -#line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } - YY_BREAK -case 164: -YY_RULE_SETUP -#line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } - YY_BREAK -case 165: -YY_RULE_SETUP -#line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } - YY_BREAK -case 166: -YY_RULE_SETUP -#line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } - YY_BREAK -case 167: -YY_RULE_SETUP -#line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } - YY_BREAK -case 168: -YY_RULE_SETUP -#line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } - YY_BREAK -case 169: -YY_RULE_SETUP -#line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } - YY_BREAK -case 170: -YY_RULE_SETUP -#line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } - YY_BREAK -case 171: -YY_RULE_SETUP -#line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_USER_AGENT) } - YY_BREAK -case 172: -YY_RULE_SETUP -#line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } - YY_BREAK -case 173: -YY_RULE_SETUP -#line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } - YY_BREAK -case 174: -YY_RULE_SETUP -#line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } - YY_BREAK -case 175: -YY_RULE_SETUP -#line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } - YY_BREAK -case 176: -YY_RULE_SETUP -#line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } - YY_BREAK -case 177: -YY_RULE_SETUP -#line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } - YY_BREAK -case 178: -YY_RULE_SETUP -#line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } - YY_BREAK -case 179: -YY_RULE_SETUP -#line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } - YY_BREAK -case 180: -YY_RULE_SETUP -#line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } - YY_BREAK -case 181: -YY_RULE_SETUP -#line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } - YY_BREAK -case 182: -YY_RULE_SETUP -#line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } - YY_BREAK -case 183: -YY_RULE_SETUP -#line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } - YY_BREAK -case 184: -YY_RULE_SETUP -#line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } - YY_BREAK -case 185: -YY_RULE_SETUP -#line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } - YY_BREAK -case 186: -YY_RULE_SETUP -#line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } - YY_BREAK -case 187: -YY_RULE_SETUP -#line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } - YY_BREAK -case 188: -YY_RULE_SETUP -#line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } - YY_BREAK -case 189: -YY_RULE_SETUP -#line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } - YY_BREAK -case 190: -YY_RULE_SETUP -#line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } - YY_BREAK -case 191: -YY_RULE_SETUP -#line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } - YY_BREAK -case 192: -YY_RULE_SETUP -#line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } - YY_BREAK -case 193: -YY_RULE_SETUP -#line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } - YY_BREAK -case 194: -YY_RULE_SETUP -#line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } - YY_BREAK -case 195: -YY_RULE_SETUP -#line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) } - YY_BREAK -case 196: -YY_RULE_SETUP -#line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } - YY_BREAK -case 197: -YY_RULE_SETUP -#line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } - YY_BREAK -case 198: -YY_RULE_SETUP -#line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } - YY_BREAK -case 199: -YY_RULE_SETUP -#line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } - YY_BREAK -case 200: -YY_RULE_SETUP -#line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } - YY_BREAK -case 201: -YY_RULE_SETUP -#line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } - YY_BREAK -case 202: -YY_RULE_SETUP -#line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } - YY_BREAK -case 203: -YY_RULE_SETUP -#line 417 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } - YY_BREAK -case 204: -YY_RULE_SETUP -#line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } - YY_BREAK -case 205: -YY_RULE_SETUP -#line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } - YY_BREAK -case 206: -YY_RULE_SETUP -#line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } - YY_BREAK -case 207: -YY_RULE_SETUP -#line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } - YY_BREAK -case 208: -YY_RULE_SETUP -#line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } - YY_BREAK -case 209: -YY_RULE_SETUP -#line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } - YY_BREAK -case 210: -YY_RULE_SETUP -#line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } - YY_BREAK -case 211: -YY_RULE_SETUP -#line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } - YY_BREAK -case 212: -YY_RULE_SETUP -#line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } - YY_BREAK -case 213: -YY_RULE_SETUP -#line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } - YY_BREAK -case 214: -YY_RULE_SETUP -#line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } - YY_BREAK -case 215: -YY_RULE_SETUP -#line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } - YY_BREAK -case 216: -YY_RULE_SETUP -#line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } - YY_BREAK -case 217: -YY_RULE_SETUP -#line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } - YY_BREAK -case 218: -YY_RULE_SETUP -#line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } - YY_BREAK -case 219: -YY_RULE_SETUP -#line 434 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } - YY_BREAK -case 220: -YY_RULE_SETUP -#line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } - YY_BREAK -case 221: -YY_RULE_SETUP -#line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } - YY_BREAK -case 222: -YY_RULE_SETUP -#line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } - YY_BREAK -case 223: -YY_RULE_SETUP -#line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } - YY_BREAK -case 224: -YY_RULE_SETUP -#line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } - YY_BREAK -case 225: -YY_RULE_SETUP -#line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } - YY_BREAK -case 226: -YY_RULE_SETUP -#line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } - YY_BREAK -case 227: -YY_RULE_SETUP -#line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) } - YY_BREAK -case 228: -YY_RULE_SETUP -#line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } - YY_BREAK -case 229: -YY_RULE_SETUP -#line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } - YY_BREAK -case 230: -YY_RULE_SETUP -#line 445 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } - YY_BREAK -case 231: -YY_RULE_SETUP -#line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } - YY_BREAK -case 232: -YY_RULE_SETUP -#line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } - YY_BREAK -case 233: -YY_RULE_SETUP -#line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } - YY_BREAK -case 234: -YY_RULE_SETUP -#line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } - YY_BREAK -case 235: -YY_RULE_SETUP -#line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } - YY_BREAK -case 236: -YY_RULE_SETUP -#line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } - YY_BREAK -case 237: -YY_RULE_SETUP -#line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } - YY_BREAK -case 238: -YY_RULE_SETUP -#line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } - YY_BREAK -case 239: -YY_RULE_SETUP -#line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } - YY_BREAK -case 240: -YY_RULE_SETUP -#line 455 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } - YY_BREAK -case 241: -YY_RULE_SETUP -#line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } - YY_BREAK -case 242: -YY_RULE_SETUP -#line 457 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } - YY_BREAK -case 243: -YY_RULE_SETUP -#line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } - YY_BREAK -case 244: -YY_RULE_SETUP -#line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } - YY_BREAK -case 245: -YY_RULE_SETUP -#line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } - YY_BREAK -case 246: -YY_RULE_SETUP -#line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } - YY_BREAK -case 247: -YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } - YY_BREAK -case 248: -YY_RULE_SETUP -#line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } - YY_BREAK -case 249: -YY_RULE_SETUP -#line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } - YY_BREAK -case 250: -YY_RULE_SETUP -#line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } - YY_BREAK -case 251: -YY_RULE_SETUP -#line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } - YY_BREAK -case 252: -YY_RULE_SETUP -#line 467 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } - YY_BREAK -case 253: -YY_RULE_SETUP -#line 468 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } - YY_BREAK -case 254: -YY_RULE_SETUP -#line 469 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } - YY_BREAK -case 255: -YY_RULE_SETUP -#line 470 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } - YY_BREAK -case 256: -YY_RULE_SETUP -#line 471 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } - YY_BREAK -case 257: -YY_RULE_SETUP -#line 472 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_TAG) } - YY_BREAK -case 258: -YY_RULE_SETUP -#line 473 "./util/configlexer.lex" -{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) } - YY_BREAK -case 259: -YY_RULE_SETUP -#line 474 "./util/configlexer.lex" -{ YDVAR(3, VAR_INTERFACE_TAG_DATA) } - YY_BREAK -case 260: -YY_RULE_SETUP -#line 475 "./util/configlexer.lex" -{ YDVAR(2, VAR_INTERFACE_VIEW) } - YY_BREAK -case 261: -YY_RULE_SETUP -#line 476 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } - YY_BREAK -case 262: -YY_RULE_SETUP -#line 477 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } - YY_BREAK -case 263: -YY_RULE_SETUP -#line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } - YY_BREAK -case 264: -YY_RULE_SETUP -#line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } - YY_BREAK -case 265: -YY_RULE_SETUP -#line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } - YY_BREAK -case 266: -YY_RULE_SETUP -#line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } - YY_BREAK -case 267: -YY_RULE_SETUP -#line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } - YY_BREAK -case 268: -YY_RULE_SETUP -#line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } - YY_BREAK -case 269: -YY_RULE_SETUP -#line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } - YY_BREAK -case 270: -YY_RULE_SETUP -#line 485 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } - YY_BREAK -case 271: -YY_RULE_SETUP -#line 487 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } - YY_BREAK -case 272: -YY_RULE_SETUP -#line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } - YY_BREAK -case 273: -YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } - YY_BREAK -case 274: -YY_RULE_SETUP -#line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } - YY_BREAK -case 275: -YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } - YY_BREAK -case 276: -YY_RULE_SETUP -#line 493 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } - YY_BREAK -case 277: -YY_RULE_SETUP -#line 495 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } - YY_BREAK -case 278: -YY_RULE_SETUP -#line 497 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } - YY_BREAK -case 279: -YY_RULE_SETUP -#line 499 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } - YY_BREAK -case 280: -YY_RULE_SETUP -#line 501 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } - YY_BREAK -case 281: -YY_RULE_SETUP -#line 503 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } - YY_BREAK -case 282: -YY_RULE_SETUP -#line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } - YY_BREAK -case 283: -YY_RULE_SETUP -#line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } - YY_BREAK -case 284: -YY_RULE_SETUP -#line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } - YY_BREAK -case 285: -YY_RULE_SETUP -#line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } - YY_BREAK -case 286: -YY_RULE_SETUP -#line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } - YY_BREAK -case 287: -YY_RULE_SETUP -#line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } - YY_BREAK -case 288: -YY_RULE_SETUP -#line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } - YY_BREAK -case 289: -YY_RULE_SETUP -#line 512 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } - YY_BREAK -case 290: -YY_RULE_SETUP -#line 513 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } - YY_BREAK -case 291: -YY_RULE_SETUP -#line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } - YY_BREAK -case 292: -YY_RULE_SETUP -#line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } - YY_BREAK -case 293: -YY_RULE_SETUP -#line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } - YY_BREAK -case 294: -YY_RULE_SETUP -#line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } - YY_BREAK -case 295: -YY_RULE_SETUP -#line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } - YY_BREAK -case 296: -YY_RULE_SETUP -#line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_SENT_COUNT) } - YY_BREAK -case 297: -YY_RULE_SETUP -#line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) } - YY_BREAK -case 298: -YY_RULE_SETUP -#line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } - YY_BREAK -case 299: -YY_RULE_SETUP -#line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } - YY_BREAK -case 300: -YY_RULE_SETUP -#line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } - YY_BREAK -case 301: -YY_RULE_SETUP -#line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } - YY_BREAK -case 302: -YY_RULE_SETUP -#line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } - YY_BREAK -case 303: -YY_RULE_SETUP -#line 526 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } - YY_BREAK -case 304: -YY_RULE_SETUP -#line 527 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } - YY_BREAK -case 305: -YY_RULE_SETUP -#line 528 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } - YY_BREAK -case 306: -YY_RULE_SETUP -#line 529 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } - YY_BREAK -case 307: -YY_RULE_SETUP -#line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } - YY_BREAK -case 308: -YY_RULE_SETUP -#line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } - YY_BREAK -case 309: -YY_RULE_SETUP -#line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } - YY_BREAK -case 310: -YY_RULE_SETUP -#line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } - YY_BREAK -case 311: -YY_RULE_SETUP -#line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } - YY_BREAK -case 312: -YY_RULE_SETUP -#line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } - YY_BREAK -case 313: -YY_RULE_SETUP -#line 536 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } - YY_BREAK -case 314: -YY_RULE_SETUP -#line 538 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } - YY_BREAK -case 315: -YY_RULE_SETUP -#line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } - YY_BREAK -case 316: -YY_RULE_SETUP -#line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } - YY_BREAK -case 317: -YY_RULE_SETUP -#line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } - YY_BREAK -case 318: -YY_RULE_SETUP -#line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } - YY_BREAK -case 319: -YY_RULE_SETUP -#line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } - YY_BREAK -case 320: -YY_RULE_SETUP -#line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } - YY_BREAK -case 321: -YY_RULE_SETUP -#line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } - YY_BREAK -case 322: -YY_RULE_SETUP -#line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } - YY_BREAK -case 323: -YY_RULE_SETUP -#line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } - YY_BREAK -case 324: -YY_RULE_SETUP -#line 549 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } - YY_BREAK -case 325: -YY_RULE_SETUP -#line 550 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } - YY_BREAK -case 326: -YY_RULE_SETUP -#line 551 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } - YY_BREAK -case 327: -YY_RULE_SETUP -#line 552 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } - YY_BREAK -case 328: -YY_RULE_SETUP -#line 553 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } - YY_BREAK -case 329: -YY_RULE_SETUP -#line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } - YY_BREAK -case 330: -YY_RULE_SETUP -#line 555 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } - YY_BREAK -case 331: -YY_RULE_SETUP -#line 556 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } - YY_BREAK -case 332: -YY_RULE_SETUP -#line 557 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } - YY_BREAK -case 333: -YY_RULE_SETUP -#line 558 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPATH) } - YY_BREAK -case 334: -YY_RULE_SETUP -#line 559 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPASSWORD) } - YY_BREAK -case 335: -YY_RULE_SETUP -#line 560 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } - YY_BREAK -case 336: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } - YY_BREAK -case 337: -YY_RULE_SETUP -#line 562 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } - YY_BREAK -case 338: -YY_RULE_SETUP -#line 563 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } - YY_BREAK -case 339: -YY_RULE_SETUP -#line 564 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } - YY_BREAK -case 340: -YY_RULE_SETUP -#line 565 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } - YY_BREAK -case 341: -YY_RULE_SETUP -#line 566 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } - YY_BREAK -case 342: -YY_RULE_SETUP -#line 567 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } - YY_BREAK -case 343: -YY_RULE_SETUP -#line 568 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } - YY_BREAK -case 344: -YY_RULE_SETUP -#line 569 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } - YY_BREAK -case 345: -YY_RULE_SETUP -#line 570 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } - YY_BREAK -case 346: -YY_RULE_SETUP -#line 571 "./util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } - YY_BREAK -case 347: -/* rule 347 can match eol */ -YY_RULE_SETUP -#line 572 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ -case 348: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ BEGIN(quotedstring); LEXOUT(("QS ")); } - YY_BREAK -case YY_STATE_EOF(quotedstring): -#line 576 "./util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } -} - YY_BREAK -case 349: -YY_RULE_SETUP -#line 581 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK -case 350: -/* rule 350 can match eol */ -YY_RULE_SETUP -#line 582 "./util/configlexer.lex" -{ yyerror("newline inside quoted string, no end \""); - cfg_parser->line++; BEGIN(INITIAL); } - YY_BREAK -case 351: -YY_RULE_SETUP -#line 584 "./util/configlexer.lex" -{ - LEXOUT(("QE ")); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } - yytext[yyleng - 1] = '\0'; - yylval.str = strdup(yytext); - if(!yylval.str) - yyerror("out of memory"); - return STRING_ARG; -} - YY_BREAK -/* Single Quoted strings. Strip leading and ending quotes */ -case 352: -YY_RULE_SETUP -#line 596 "./util/configlexer.lex" -{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); } - YY_BREAK -case YY_STATE_EOF(singlequotedstr): -#line 597 "./util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } -} - YY_BREAK -case 353: -YY_RULE_SETUP -#line 602 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK -case 354: -/* rule 354 can match eol */ -YY_RULE_SETUP -#line 603 "./util/configlexer.lex" -{ yyerror("newline inside quoted string, no end '"); - cfg_parser->line++; BEGIN(INITIAL); } - YY_BREAK -case 355: -YY_RULE_SETUP -#line 605 "./util/configlexer.lex" -{ - LEXOUT(("SQE ")); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } - yytext[yyleng - 1] = '\0'; - yylval.str = strdup(yytext); - if(!yylval.str) - yyerror("out of memory"); - return STRING_ARG; -} - YY_BREAK -/* include: directive */ -case 356: -YY_RULE_SETUP -#line 617 "./util/configlexer.lex" -{ - LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } - YY_BREAK -case YY_STATE_EOF(include): -#line 619 "./util/configlexer.lex" -{ - yyerror("EOF inside include directive"); - BEGIN(inc_prev); -} - YY_BREAK -case 357: -YY_RULE_SETUP -#line 623 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 358: -/* rule 358 can match eol */ -YY_RULE_SETUP -#line 624 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK -case 359: -YY_RULE_SETUP -#line 625 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } - YY_BREAK -case 360: -YY_RULE_SETUP -#line 626 "./util/configlexer.lex" -{ - LEXOUT(("Iunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext, 0); - BEGIN(inc_prev); -} - YY_BREAK -case YY_STATE_EOF(include_quoted): -#line 631 "./util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - BEGIN(inc_prev); -} - YY_BREAK -case 361: -YY_RULE_SETUP -#line 635 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK -case 362: -/* rule 362 can match eol */ -YY_RULE_SETUP -#line 636 "./util/configlexer.lex" -{ yyerror("newline before \" in include name"); - cfg_parser->line++; BEGIN(inc_prev); } - YY_BREAK -case 363: -YY_RULE_SETUP -#line 638 "./util/configlexer.lex" -{ - LEXOUT(("IQE ")); - yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext, 0); - BEGIN(inc_prev); -} - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(val): -#line 644 "./util/configlexer.lex" -{ - LEXOUT(("LEXEOF ")); - yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ - if (!config_include_stack) { - yyterminate(); - } else { - int prev_toplevel = inc_toplevel; - fclose(yyin); - config_end_include(); - if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); - } -} - YY_BREAK -/* include-toplevel: directive */ -case 364: -YY_RULE_SETUP -#line 658 "./util/configlexer.lex" -{ - LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); -} - YY_BREAK -case YY_STATE_EOF(include_toplevel): -#line 661 "./util/configlexer.lex" -{ - yyerror("EOF inside include_toplevel directive"); - BEGIN(inc_prev); -} - YY_BREAK -case 365: -YY_RULE_SETUP -#line 665 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 366: -/* rule 366 can match eol */ -YY_RULE_SETUP -#line 666 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK -case 367: -YY_RULE_SETUP -#line 667 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } - YY_BREAK -case 368: -YY_RULE_SETUP -#line 668 "./util/configlexer.lex" -{ - LEXOUT(("ITunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext, 1); - BEGIN(inc_prev); - return (VAR_FORCE_TOPLEVEL); -} - YY_BREAK -case YY_STATE_EOF(include_toplevel_quoted): -#line 674 "./util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - BEGIN(inc_prev); -} - YY_BREAK -case 369: -YY_RULE_SETUP -#line 678 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK -case 370: -/* rule 370 can match eol */ -YY_RULE_SETUP -#line 679 "./util/configlexer.lex" -{ - yyerror("newline before \" in include name"); - cfg_parser->line++; BEGIN(inc_prev); -} - YY_BREAK -case 371: -YY_RULE_SETUP -#line 683 "./util/configlexer.lex" -{ - LEXOUT(("ITQE ")); - yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext, 1); - BEGIN(inc_prev); - return (VAR_FORCE_TOPLEVEL); -} - YY_BREAK -case 372: -YY_RULE_SETUP -#line 691 "./util/configlexer.lex" -{ LEXOUT(("unquotedstr(%s) ", yytext)); - if(--num_args == 0) { BEGIN(INITIAL); } - yylval.str = strdup(yytext); return STRING_ARG; } - YY_BREAK -case 373: -YY_RULE_SETUP -#line 695 "./util/configlexer.lex" -{ - ub_c_error_msg("unknown keyword '%s'", yytext); - } - YY_BREAK -case 374: -YY_RULE_SETUP -#line 699 "./util/configlexer.lex" -{ - ub_c_error_msg("stray '%s'", yytext); - } - YY_BREAK -case 375: -YY_RULE_SETUP -#line 703 "./util/configlexer.lex" -ECHO; - YY_BREAK -#line 5767 "" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - 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 >= 3713 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - 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 >= 3713 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3712); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 703 "./util/configlexer.lex" - - diff --git a/util/configlexer.lex b/util/configlexer.lex index 7e39f1c92..31b69779d 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -209,9 +209,9 @@ SQANY [^\'\n\r\\]|\\. %x quotedstring singlequotedstr include include_quoted val include_toplevel include_toplevel_quoted %% -{SPACE}* { +{SPACE}* { LEXOUT(("SP ")); /* ignore */ } -{SPACE}*{COMMENT}.* { +{SPACE}*{COMMENT}.* { /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } server{COLON} { YDVAR(0, VAR_SERVER) } @@ -414,7 +414,7 @@ val-log-level{COLON} { YDVAR(1, VAR_VAL_LOG_LEVEL) } key-cache-size{COLON} { YDVAR(1, VAR_KEY_CACHE_SIZE) } key-cache-slabs{COLON} { YDVAR(1, VAR_KEY_CACHE_SLABS) } neg-cache-size{COLON} { YDVAR(1, VAR_NEG_CACHE_SIZE) } -val-nsec3-keysize-iterations{COLON} { +val-nsec3-keysize-iterations{COLON} { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } zonemd-permissive-mode{COLON} { YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } zonemd-check{COLON} { YDVAR(1, VAR_ZONEMD_CHECK) } @@ -579,7 +579,7 @@ proxy-protocol-port{COLON} { YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } else { BEGIN(val); } } {DQANY}* { LEXOUT(("STR(%s) ", yytext)); yymore(); } -{NEWLINE} { yyerror("newline inside quoted string, no end \""); +{NEWLINE} { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } \" { LEXOUT(("QE ")); @@ -600,7 +600,7 @@ proxy-protocol-port{COLON} { YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } else { BEGIN(val); } } {SQANY}* { LEXOUT(("STR(%s) ", yytext)); yymore(); } -{NEWLINE} { yyerror("newline inside quoted string, no end '"); +{NEWLINE} { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } \' { LEXOUT(("SQE ")); @@ -614,7 +614,7 @@ proxy-protocol-port{COLON} { YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } } /* include: directive */ -include{COLON} { +include{COLON} { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } <> { yyerror("EOF inside include directive"); @@ -633,7 +633,7 @@ proxy-protocol-port{COLON} { YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } BEGIN(inc_prev); } {DQANY}* { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } -{NEWLINE} { yyerror("newline before \" in include name"); +{NEWLINE} { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } \" { LEXOUT(("IQE ")); @@ -688,7 +688,7 @@ proxy-protocol-port{COLON} { YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } return (VAR_FORCE_TOPLEVEL); } -{UNQUOTEDLETTER}* { LEXOUT(("unquotedstr(%s) ", yytext)); +{UNQUOTEDLETTER}* { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } diff --git a/util/configparser.c b/util/configparser.c deleted file mode 100644 index 59be1405f..000000000 --- a/util/configparser.c +++ /dev/null @@ -1,7479 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.8.2. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output, and Bison version. */ -#define YYBISON 30802 - -/* Bison version string. */ -#define YYBISON_VERSION "3.8.2" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* First part of user prologue. */ -#line 38 "./util/configparser.y" - -#include "config.h" - -#include -#include -#include -#include -#include - -#include "util/configyyrename.h" -#include "util/config_file.h" -#include "util/net_help.h" - -int ub_c_lex(void); -void ub_c_error(const char *message); - -static void validate_respip_action(const char* action); -static void validate_acl_action(const char* action); - -/* these need to be global, otherwise they cannot be used inside yacc */ -extern struct config_parser_state* cfg_parser; - -#if 0 -#define OUTYY(s) printf s /* used ONLY when debugging */ -#else -#define OUTYY(s) -#endif - - -#line 101 "util/configparser.c" - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -#include "configparser.h" -/* Symbol kind. */ -enum yysymbol_kind_t -{ - YYSYMBOL_YYEMPTY = -2, - YYSYMBOL_YYEOF = 0, /* "end of file" */ - YYSYMBOL_YYerror = 1, /* error */ - YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ - YYSYMBOL_SPACE = 3, /* SPACE */ - YYSYMBOL_LETTER = 4, /* LETTER */ - YYSYMBOL_NEWLINE = 5, /* NEWLINE */ - YYSYMBOL_COMMENT = 6, /* COMMENT */ - YYSYMBOL_COLON = 7, /* COLON */ - YYSYMBOL_ANY = 8, /* ANY */ - YYSYMBOL_ZONESTR = 9, /* ZONESTR */ - YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ - YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ - YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ - YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ - YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ - YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ - YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ - YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ - YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ - YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ - YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ - YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ - YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ - YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ - YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ - YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ - YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ - YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ - YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ - YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ - YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ - YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ - YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ - YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ - YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ - YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ - YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ - YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ - YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ - YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ - YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ - YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ - YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ - YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ - YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ - YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ - YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ - YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ - YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ - YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ - YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ - YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ - YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ - YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ - YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ - YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ - YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ - YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ - YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ - YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ - YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ - YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ - YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ - YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ - YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ - YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ - YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ - YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ - YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ - YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ - YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ - YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ - YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ - YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ - YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ - YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ - YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ - YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ - YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ - YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ - YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ - YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ - YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ - YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ - YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ - YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ - YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ - YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ - YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ - YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ - YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ - YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ - YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ - YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ - YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ - YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105, /* VAR_TCP_REUSE_TIMEOUT */ - YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES */ - YYSYMBOL_VAR_EXTENDED_STATISTICS = 107, /* VAR_EXTENDED_STATISTICS */ - YYSYMBOL_VAR_LOCAL_DATA_PTR = 108, /* VAR_LOCAL_DATA_PTR */ - YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109, /* VAR_JOSTLE_TIMEOUT */ - YYSYMBOL_VAR_STUB_PRIME = 110, /* VAR_STUB_PRIME */ - YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD */ - YYSYMBOL_VAR_LOG_TIME_ASCII = 112, /* VAR_LOG_TIME_ASCII */ - YYSYMBOL_VAR_DOMAIN_INSECURE = 113, /* VAR_DOMAIN_INSECURE */ - YYSYMBOL_VAR_PYTHON = 114, /* VAR_PYTHON */ - YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_VAL_MAX_RESTART = 118, /* VAR_VAL_MAX_RESTART */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 119, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 120, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 121, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 122, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 123, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 124, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 125, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 126, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 127, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 128, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 129, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 130, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 131, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 132, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 133, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 134, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 135, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 136, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 137, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 138, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 139, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 140, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 141, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 142, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 143, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 144, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 145, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 146, /* VAR_STUB_TCP_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 147, /* VAR_FORWARD_TCP_UPSTREAM */ - YYSYMBOL_VAR_HTTPS_PORT = 148, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 149, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 150, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 151, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 152, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 153, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 154, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 155, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 156, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 157, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 158, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 159, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 160, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 161, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 162, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 163, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_CACHE_MAX_RTT = 164, /* VAR_INFRA_CACHE_MAX_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 165, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 166, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 167, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 168, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 169, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 170, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 171, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 172, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 173, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 174, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 175, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 176, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 177, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 178, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 179, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 180, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 181, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 182, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 183, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 184, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 185, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 186, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 187, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 188, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 189, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 190, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 191, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 192, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 193, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 194, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 195, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 196, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 197, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 198, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 199, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 200, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 201, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_OUTBOUND_MSG_RETRY = 202, /* VAR_OUTBOUND_MSG_RETRY */ - YYSYMBOL_VAR_MAX_SENT_COUNT = 203, /* VAR_MAX_SENT_COUNT */ - YYSYMBOL_VAR_MAX_QUERY_RESTARTS = 204, /* VAR_MAX_QUERY_RESTARTS */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 205, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 206, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 207, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 208, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 209, /* VAR_IP_RATELIMIT_BACKOFF */ - YYSYMBOL_VAR_RATELIMIT_BACKOFF = 210, /* VAR_RATELIMIT_BACKOFF */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 211, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 212, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 213, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 214, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 215, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 216, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 217, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 218, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 219, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 220, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 221, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 222, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 223, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 224, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 225, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 226, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 227, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 228, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 229, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 230, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 231, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 232, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 233, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 234, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 235, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 236, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 237, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 238, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 239, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 240, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_EDE_SERVE_EXPIRED = 241, /* VAR_EDE_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 242, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 243, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 244, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 245, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 246, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 247, /* VAR_HIDE_HTTP_USER_AGENT */ - YYSYMBOL_VAR_HTTP_USER_AGENT = 248, /* VAR_HTTP_USER_AGENT */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 249, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 250, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 251, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 252, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 253, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 254, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 255, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 256, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 257, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 258, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 259, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 260, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 261, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 262, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 263, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 264, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 265, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 266, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 267, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 268, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 269, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 270, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 271, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 272, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 273, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 274, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 275, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 276, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 277, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 278, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 279, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 280, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 281, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 282, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_CACHEDB_REDISPATH = 283, /* VAR_CACHEDB_REDISPATH */ - YYSYMBOL_VAR_CACHEDB_REDISPASSWORD = 284, /* VAR_CACHEDB_REDISPASSWORD */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 285, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 286, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 287, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 288, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 289, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 290, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 291, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 292, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 293, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 294, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 295, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 296, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 297, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 298, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 299, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 300, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 301, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 302, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 303, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 304, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 305, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 306, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 307, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 308, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 309, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 310, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 311, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 312, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 313, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 314, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 315, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 316, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 317, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 318, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 319, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 320, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 321, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 322, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 323, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 324, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 325, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 326, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 327, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 328, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 329, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 330, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - YYSYMBOL_VAR_EDE = 331, /* VAR_EDE */ - YYSYMBOL_VAR_INTERFACE_ACTION = 332, /* VAR_INTERFACE_ACTION */ - YYSYMBOL_VAR_INTERFACE_VIEW = 333, /* VAR_INTERFACE_VIEW */ - YYSYMBOL_VAR_INTERFACE_TAG = 334, /* VAR_INTERFACE_TAG */ - YYSYMBOL_VAR_INTERFACE_TAG_ACTION = 335, /* VAR_INTERFACE_TAG_ACTION */ - YYSYMBOL_VAR_INTERFACE_TAG_DATA = 336, /* VAR_INTERFACE_TAG_DATA */ - YYSYMBOL_VAR_PROXY_PROTOCOL_PORT = 337, /* VAR_PROXY_PROTOCOL_PORT */ - YYSYMBOL_VAR_STATISTICS_INHIBIT_ZERO = 338, /* VAR_STATISTICS_INHIBIT_ZERO */ - YYSYMBOL_VAR_HARDEN_UNKNOWN_ADDITIONAL = 339, /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ - YYSYMBOL_YYACCEPT = 340, /* $accept */ - YYSYMBOL_toplevelvars = 341, /* toplevelvars */ - YYSYMBOL_toplevelvar = 342, /* toplevelvar */ - YYSYMBOL_force_toplevel = 343, /* force_toplevel */ - YYSYMBOL_serverstart = 344, /* serverstart */ - YYSYMBOL_contents_server = 345, /* contents_server */ - YYSYMBOL_content_server = 346, /* content_server */ - YYSYMBOL_stubstart = 347, /* stubstart */ - YYSYMBOL_contents_stub = 348, /* contents_stub */ - YYSYMBOL_content_stub = 349, /* content_stub */ - YYSYMBOL_forwardstart = 350, /* forwardstart */ - YYSYMBOL_contents_forward = 351, /* contents_forward */ - YYSYMBOL_content_forward = 352, /* content_forward */ - YYSYMBOL_viewstart = 353, /* viewstart */ - YYSYMBOL_contents_view = 354, /* contents_view */ - YYSYMBOL_content_view = 355, /* content_view */ - YYSYMBOL_authstart = 356, /* authstart */ - YYSYMBOL_contents_auth = 357, /* contents_auth */ - YYSYMBOL_content_auth = 358, /* content_auth */ - YYSYMBOL_rpz_tag = 359, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 360, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 361, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 362, /* rpz_log */ - YYSYMBOL_rpz_log_name = 363, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 364, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 365, /* rpzstart */ - YYSYMBOL_contents_rpz = 366, /* contents_rpz */ - YYSYMBOL_content_rpz = 367, /* content_rpz */ - YYSYMBOL_server_num_threads = 368, /* server_num_threads */ - YYSYMBOL_server_verbosity = 369, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 370, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 371, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 372, /* server_extended_statistics */ - YYSYMBOL_server_statistics_inhibit_zero = 373, /* server_statistics_inhibit_zero */ - YYSYMBOL_server_shm_enable = 374, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 375, /* server_shm_key */ - YYSYMBOL_server_port = 376, /* server_port */ - YYSYMBOL_server_send_client_subnet = 377, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 378, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 379, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 380, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 381, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 382, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 383, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 384, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 385, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 386, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 387, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 388, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 389, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 390, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 391, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 392, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 393, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 394, /* server_interface_automatic */ - YYSYMBOL_server_interface_automatic_ports = 395, /* server_interface_automatic_ports */ - YYSYMBOL_server_do_ip4 = 396, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 397, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 398, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 399, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 400, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 401, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 402, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 403, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 404, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 405, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 406, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 407, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 408, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 409, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 410, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 411, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 412, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 413, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 414, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 415, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 416, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 417, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 418, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 419, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 420, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 421, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 422, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 423, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 424, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 425, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 426, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 427, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 428, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 429, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 430, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 431, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 432, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 433, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 434, /* server_log_queries */ - YYSYMBOL_server_log_replies = 435, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 436, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 437, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 438, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 439, /* server_chroot */ - YYSYMBOL_server_username = 440, /* server_username */ - YYSYMBOL_server_directory = 441, /* server_directory */ - YYSYMBOL_server_logfile = 442, /* server_logfile */ - YYSYMBOL_server_pidfile = 443, /* server_pidfile */ - YYSYMBOL_server_root_hints = 444, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 445, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 446, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 447, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 448, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 449, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 450, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 451, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 452, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 453, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 454, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 455, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 456, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 457, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 458, /* server_identity */ - YYSYMBOL_server_version = 459, /* server_version */ - YYSYMBOL_server_http_user_agent = 460, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 461, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 462, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 463, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 464, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 465, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 466, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 467, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 468, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 469, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 470, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 471, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 472, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 473, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 474, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 475, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 476, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 477, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 478, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 479, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 480, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 481, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 482, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 483, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 484, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 485, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 486, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_cache_max_rtt = 487, /* server_infra_cache_max_rtt */ - YYSYMBOL_server_infra_keep_probing = 488, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 489, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 490, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 491, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 492, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 493, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 494, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 495, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 496, /* server_harden_algo_downgrade */ - YYSYMBOL_server_harden_unknown_additional = 497, /* server_harden_unknown_additional */ - YYSYMBOL_server_use_caps_for_id = 498, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 499, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 500, /* server_private_address */ - YYSYMBOL_server_private_domain = 501, /* server_private_domain */ - YYSYMBOL_server_prefetch = 502, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 503, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 504, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 505, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 506, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 507, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 508, /* server_access_control */ - YYSYMBOL_server_interface_action = 509, /* server_interface_action */ - YYSYMBOL_server_module_conf = 510, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 511, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 512, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 513, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 514, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 515, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 516, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 517, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 518, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 519, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 520, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 521, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 522, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 523, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 524, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 525, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 526, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 527, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_ede_serve_expired = 528, /* server_ede_serve_expired */ - YYSYMBOL_server_serve_original_ttl = 529, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 530, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 531, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 532, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 533, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 534, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 535, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 536, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 537, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 538, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 539, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 540, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 541, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 542, /* server_local_zone */ - YYSYMBOL_server_local_data = 543, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 544, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 545, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 546, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 547, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 548, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 549, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 550, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 551, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 552, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 553, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 554, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 555, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 556, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 557, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 558, /* server_access_control_view */ - YYSYMBOL_server_interface_tag = 559, /* server_interface_tag */ - YYSYMBOL_server_interface_tag_action = 560, /* server_interface_tag_action */ - YYSYMBOL_server_interface_tag_data = 561, /* server_interface_tag_data */ - YYSYMBOL_server_interface_view = 562, /* server_interface_view */ - YYSYMBOL_server_response_ip_tag = 563, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 564, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 565, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 566, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 567, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 568, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 569, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 570, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 571, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 572, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 573, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 574, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 575, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 576, /* server_outbound_msg_retry */ - YYSYMBOL_server_max_sent_count = 577, /* server_max_sent_count */ - YYSYMBOL_server_max_query_restarts = 578, /* server_max_query_restarts */ - YYSYMBOL_server_low_rtt = 579, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 580, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 581, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 582, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 583, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 584, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 585, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 586, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 587, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 588, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 589, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 590, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 591, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 592, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 593, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 594, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 595, /* server_edns_client_string_opcode */ - YYSYMBOL_server_ede = 596, /* server_ede */ - YYSYMBOL_server_proxy_protocol_port = 597, /* server_proxy_protocol_port */ - YYSYMBOL_stub_name = 598, /* stub_name */ - YYSYMBOL_stub_host = 599, /* stub_host */ - YYSYMBOL_stub_addr = 600, /* stub_addr */ - YYSYMBOL_stub_first = 601, /* stub_first */ - YYSYMBOL_stub_no_cache = 602, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 603, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 604, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 605, /* stub_prime */ - YYSYMBOL_forward_name = 606, /* forward_name */ - YYSYMBOL_forward_host = 607, /* forward_host */ - YYSYMBOL_forward_addr = 608, /* forward_addr */ - YYSYMBOL_forward_first = 609, /* forward_first */ - YYSYMBOL_forward_no_cache = 610, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 611, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 612, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 613, /* auth_name */ - YYSYMBOL_auth_zonefile = 614, /* auth_zonefile */ - YYSYMBOL_auth_master = 615, /* auth_master */ - YYSYMBOL_auth_url = 616, /* auth_url */ - YYSYMBOL_auth_allow_notify = 617, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 618, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 619, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 620, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 621, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 622, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 623, /* view_name */ - YYSYMBOL_view_local_zone = 624, /* view_local_zone */ - YYSYMBOL_view_response_ip = 625, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 626, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 627, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 628, /* view_local_data_ptr */ - YYSYMBOL_view_first = 629, /* view_first */ - YYSYMBOL_rcstart = 630, /* rcstart */ - YYSYMBOL_contents_rc = 631, /* contents_rc */ - YYSYMBOL_content_rc = 632, /* content_rc */ - YYSYMBOL_rc_control_enable = 633, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 634, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 635, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 636, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 637, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 638, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 639, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 640, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 641, /* dtstart */ - YYSYMBOL_contents_dt = 642, /* contents_dt */ - YYSYMBOL_content_dt = 643, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 644, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 645, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 646, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 647, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 648, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 649, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 650, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 651, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 652, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 653, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 654, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 655, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 656, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 657, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 658, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 659, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 660, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 661, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 662, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 663, /* pythonstart */ - YYSYMBOL_contents_py = 664, /* contents_py */ - YYSYMBOL_content_py = 665, /* content_py */ - YYSYMBOL_py_script = 666, /* py_script */ - YYSYMBOL_dynlibstart = 667, /* dynlibstart */ - YYSYMBOL_contents_dl = 668, /* contents_dl */ - YYSYMBOL_content_dl = 669, /* content_dl */ - YYSYMBOL_dl_file = 670, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 671, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 672, /* server_log_identity */ - YYSYMBOL_server_response_ip = 673, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 674, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 675, /* dnscstart */ - YYSYMBOL_contents_dnsc = 676, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 677, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 678, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 679, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 680, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 681, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 682, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 683, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 684, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 685, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 686, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 687, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 688, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 689, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 690, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 691, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 692, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 693, /* redis_server_host */ - YYSYMBOL_redis_server_port = 694, /* redis_server_port */ - YYSYMBOL_redis_server_path = 695, /* redis_server_path */ - YYSYMBOL_redis_server_password = 696, /* redis_server_password */ - YYSYMBOL_redis_timeout = 697, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 698, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 699, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 700, /* ipsetstart */ - YYSYMBOL_contents_ipset = 701, /* contents_ipset */ - YYSYMBOL_content_ipset = 702, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 703, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 704 /* ipset_name_v6 */ -}; -typedef enum yysymbol_kind_t yysymbol_kind_t; - - - - -#ifdef short -# undef short -#endif - -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif -#endif - -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; -#else -typedef short yytype_int16; -#endif - -/* Work around bug in HP-UX 11.23, which defines these macros - incorrectly for preprocessor constants. This workaround can likely - be removed in 2023, as HPE has promised support for HP-UX 11.23 - (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of - . */ -#ifdef __hpux -# undef UINT_LEAST8_MAX -# undef UINT_LEAST16_MAX -# define UINT_LEAST8_MAX 255 -# define UINT_LEAST16_MAX 65535 -#endif - -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned -# endif -#endif - -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define YY_ATTRIBUTE_PURE -# endif -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YY_USE(E) ((void) (E)) -#else -# define YY_USE(E) /* empty */ -#endif - -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ -# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") -# else -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# endif -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - - -#define YY_ASSERT(E) ((void) (0 && (E))) - -#if !defined yyoverflow - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* !defined yyoverflow */ - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yy_state_t yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYPTRDIFF_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYPTRDIFF_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 725 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 340 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 365 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 707 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 1058 - -/* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 594 - - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK \ - ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ - : YYSYMBOL_YYUNDEF) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_int16 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 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, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 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, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 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, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339 -}; - -#if YYDEBUG -/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = -{ - 0, 200, 200, 200, 201, 201, 202, 202, 203, 203, - 203, 204, 204, 205, 205, 206, 206, 207, 209, 216, - 222, 223, 224, 224, 224, 225, 225, 226, 226, 226, - 227, 227, 228, 228, 228, 229, 229, 230, 230, 230, - 231, 231, 231, 232, 232, 233, 233, 234, 234, 235, - 235, 236, 236, 237, 237, 238, 238, 239, 239, 240, - 240, 240, 241, 241, 242, 242, 242, 243, 243, 243, - 244, 244, 245, 245, 246, 246, 247, 247, 248, 248, - 248, 249, 249, 250, 250, 251, 251, 251, 252, 252, - 253, 253, 254, 254, 255, 255, 255, 256, 256, 257, - 257, 258, 258, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 264, 264, 264, 265, 265, 265, 266, - 266, 266, 267, 267, 267, 267, 268, 269, 269, 269, - 270, 270, 270, 271, 271, 272, 272, 273, 273, 273, - 274, 274, 274, 275, 275, 276, 276, 276, 277, 277, - 277, 278, 278, 278, 279, 279, 280, 280, 281, 281, - 282, 283, 283, 284, 284, 285, 285, 286, 286, 287, - 287, 288, 288, 289, 289, 290, 290, 291, 291, 292, - 292, 293, 293, 294, 294, 294, 295, 295, 296, 296, - 297, 297, 298, 298, 298, 299, 299, 300, 301, 301, - 302, 302, 303, 304, 304, 305, 305, 306, 306, 306, - 307, 307, 308, 308, 308, 309, 309, 309, 310, 310, - 311, 312, 312, 313, 313, 314, 314, 315, 315, 316, - 316, 316, 317, 317, 317, 318, 318, 318, 319, 319, - 320, 320, 321, 321, 322, 322, 323, 323, 324, 324, - 325, 325, 326, 326, 327, 327, 328, 330, 344, 345, - 346, 346, 346, 346, 346, 347, 347, 347, 349, 363, - 364, 365, 365, 365, 365, 366, 366, 366, 368, 384, - 385, 386, 386, 386, 386, 387, 387, 387, 389, 410, - 411, 412, 412, 412, 412, 413, 413, 413, 414, 414, - 414, 417, 436, 453, 461, 471, 478, 488, 507, 508, - 509, 509, 509, 509, 509, 510, 510, 510, 511, 511, - 511, 511, 513, 522, 531, 542, 551, 560, 569, 578, - 589, 598, 610, 624, 639, 650, 667, 684, 701, 718, - 733, 748, 761, 776, 785, 794, 803, 812, 821, 830, - 837, 846, 855, 864, 873, 882, 891, 900, 909, 922, - 933, 944, 955, 964, 977, 986, 995, 1004, 1011, 1018, - 1027, 1034, 1043, 1051, 1058, 1065, 1073, 1082, 1090, 1106, - 1114, 1122, 1130, 1138, 1146, 1155, 1164, 1178, 1187, 1196, - 1205, 1214, 1223, 1232, 1239, 1246, 1272, 1280, 1287, 1294, - 1301, 1308, 1316, 1324, 1332, 1339, 1350, 1361, 1368, 1377, - 1386, 1395, 1404, 1411, 1418, 1425, 1441, 1449, 1457, 1467, - 1477, 1487, 1501, 1509, 1522, 1533, 1541, 1554, 1563, 1572, - 1581, 1590, 1600, 1610, 1618, 1631, 1640, 1648, 1657, 1665, - 1678, 1687, 1696, 1706, 1713, 1723, 1733, 1743, 1753, 1763, - 1773, 1783, 1793, 1803, 1810, 1817, 1824, 1833, 1842, 1851, - 1860, 1867, 1877, 1885, 1894, 1901, 1919, 1932, 1945, 1958, - 1967, 1976, 1985, 1994, 2004, 2014, 2025, 2034, 2043, 2052, - 2061, 2070, 2079, 2088, 2097, 2110, 2123, 2132, 2139, 2148, - 2157, 2166, 2175, 2184, 2192, 2205, 2213, 2269, 2276, 2291, - 2301, 2311, 2318, 2325, 2332, 2341, 2349, 2363, 2384, 2405, - 2417, 2429, 2441, 2450, 2471, 2483, 2495, 2504, 2525, 2534, - 2543, 2551, 2559, 2572, 2585, 2600, 2615, 2624, 2633, 2643, - 2653, 2662, 2671, 2680, 2686, 2695, 2704, 2714, 2724, 2734, - 2743, 2753, 2762, 2775, 2788, 2800, 2814, 2826, 2840, 2849, - 2860, 2869, 2876, 2886, 2893, 2900, 2909, 2918, 2928, 2938, - 2948, 2958, 2965, 2972, 2981, 2990, 3000, 3010, 3020, 3027, - 3034, 3041, 3049, 3059, 3069, 3079, 3089, 3099, 3109, 3165, - 3175, 3183, 3191, 3206, 3215, 3221, 3222, 3223, 3223, 3223, - 3224, 3224, 3224, 3225, 3225, 3227, 3237, 3246, 3253, 3260, - 3267, 3274, 3281, 3288, 3294, 3295, 3296, 3296, 3296, 3297, - 3297, 3297, 3298, 3299, 3299, 3300, 3300, 3301, 3301, 3302, - 3303, 3304, 3305, 3306, 3307, 3309, 3318, 3328, 3335, 3342, - 3351, 3358, 3365, 3372, 3379, 3388, 3397, 3404, 3411, 3421, - 3431, 3441, 3451, 3461, 3471, 3477, 3478, 3479, 3481, 3487, - 3493, 3494, 3495, 3497, 3503, 3513, 3520, 3529, 3537, 3543, - 3544, 3546, 3546, 3546, 3547, 3547, 3548, 3549, 3550, 3551, - 3552, 3554, 3564, 3573, 3580, 3589, 3596, 3605, 3613, 3626, - 3634, 3647, 3653, 3654, 3655, 3655, 3656, 3656, 3656, 3657, - 3657, 3657, 3659, 3671, 3683, 3695, 3710, 3722, 3734, 3747, - 3760, 3771, 3777, 3778, 3779, 3779, 3781, 3796 -}; -#endif - -/** Accessing symbol of state STATE. */ -#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) - -#if YYDEBUG || 0 -/* The user-facing name of the symbol whose (internal) number is - YYSYMBOL. No bounds checking. */ -static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; - -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", - "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", - "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", - "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", - "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", - "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", - "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", - "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", - "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS", - "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE", - "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL", - "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", - "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME", - "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR", - "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE", - "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST", - "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY", - "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE", - "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR", - "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL", - "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE", - "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE", - "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG", - "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST", - "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL", - "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC", - "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID", - "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT", - "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR", - "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS", - "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE", - "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE", - "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE", - "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT", - "VAR_MAX_REUSE_TCP_QUERIES", "VAR_EXTENDED_STATISTICS", - "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", - "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII", - "VAR_DOMAIN_INSECURE", "VAR_PYTHON", "VAR_PYTHON_SCRIPT", - "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART", - "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", - "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", - "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", - "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", - "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", - "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", - "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY", - "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", - "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", - "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM", - "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT", - "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", - "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY", - "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", - "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", - "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", - "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_CACHE_MAX_RTT", - "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", - "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", - "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", - "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", - "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_BIDIRECTIONAL", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", - "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", - "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG", - "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE", - "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK", - "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", - "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", - "VAR_OUTBOUND_MSG_RETRY", "VAR_MAX_SENT_COUNT", "VAR_MAX_QUERY_RESTARTS", - "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", - "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR", - "VAR_IP_RATELIMIT_BACKOFF", "VAR_RATELIMIT_BACKOFF", - "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE", - "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE", - "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6", - "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6", - "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6", - "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", - "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", - "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", - "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", - "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", - "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", - "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", - "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", - "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_EDE_SERVE_EXPIRED", - "VAR_SERVE_ORIGINAL_TTL", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", - "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT", - "VAR_HTTP_USER_AGENT", "VAR_TRUST_ANCHOR_SIGNALING", - "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", - "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", - "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", - "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT", - "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED", - "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", - "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS", - "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS", - "VAR_PAD_RESPONSES", "VAR_PAD_RESPONSES_BLOCK_SIZE", "VAR_PAD_QUERIES", - "VAR_PAD_QUERIES_BLOCK_SIZE", "VAR_IPSECMOD_ENABLED", - "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL", - "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB", - "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "VAR_CACHEDB_REDISHOST", - "VAR_CACHEDB_REDISPORT", "VAR_CACHEDB_REDISTIMEOUT", - "VAR_CACHEDB_REDISEXPIRERECORDS", "VAR_CACHEDB_REDISPATH", - "VAR_CACHEDB_REDISPASSWORD", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", - "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", - "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", - "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", - "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", - "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", - "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", - "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", - "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", - "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", - "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", - "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", - "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", - "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", - "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", - "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", - "VAR_INTERFACE_AUTOMATIC_PORTS", "VAR_EDE", "VAR_INTERFACE_ACTION", - "VAR_INTERFACE_VIEW", "VAR_INTERFACE_TAG", "VAR_INTERFACE_TAG_ACTION", - "VAR_INTERFACE_TAG_DATA", "VAR_PROXY_PROTOCOL_PORT", - "VAR_STATISTICS_INHIBIT_ZERO", "VAR_HARDEN_UNKNOWN_ADDITIONAL", - "$accept", "toplevelvars", "toplevelvar", "force_toplevel", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "viewstart", "contents_view", "content_view", - "authstart", "contents_auth", "content_auth", "rpz_tag", - "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_statistics_inhibit_zero", "server_shm_enable", "server_shm_key", - "server_port", "server_send_client_subnet", "server_client_subnet_zone", - "server_client_subnet_always_forward", "server_client_subnet_opcode", - "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", - "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", - "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6", - "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_interface_automatic_ports", - "server_do_ip4", "server_do_ip6", "server_do_udp", "server_do_tcp", - "server_prefer_ip4", "server_prefer_ip6", "server_tcp_mss", - "server_outgoing_tcp_mss", "server_tcp_idle_timeout", - "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout", - "server_tcp_auth_query_timeout", "server_tcp_keepalive", - "server_tcp_keepalive_timeout", "server_tcp_upstream", - "server_udp_upstream_without_downstream", "server_ssl_upstream", - "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", - "server_tls_cert_bundle", "server_tls_win_cert", - "server_tls_additional_port", "server_tls_ciphers", - "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_tls_use_sni", "server_https_port", "server_http_endpoint", - "server_http_max_streams", "server_http_query_buffer_size", - "server_http_response_buffer_size", "server_http_nodelay", - "server_http_notls_downstream", "server_use_systemd", - "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", - "server_log_queries", "server_log_replies", "server_log_tag_queryreply", - "server_log_servfail", "server_log_local_actions", "server_chroot", - "server_username", "server_directory", "server_logfile", - "server_pidfile", "server_root_hints", "server_dlv_anchor_file", - "server_dlv_anchor", "server_auto_trust_anchor_file", - "server_trust_anchor_file", "server_trusted_keys_file", - "server_trust_anchor", "server_trust_anchor_signaling", - "server_root_key_sentinel", "server_domain_insecure", - "server_hide_identity", "server_hide_version", "server_hide_trustanchor", - "server_hide_http_user_agent", "server_identity", "server_version", - "server_http_user_agent", "server_nsid", "server_so_rcvbuf", - "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", - "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", - "server_edns_buffer_size", "server_msg_buffer_size", - "server_msg_cache_size", "server_msg_cache_slabs", - "server_num_queries_per_thread", "server_jostle_timeout", - "server_delay_close", "server_udp_connect", "server_unblock_lan_zones", - "server_insecure_lan_zones", "server_rrset_cache_size", - "server_rrset_cache_slabs", "server_infra_host_ttl", - "server_infra_lame_ttl", "server_infra_cache_numhosts", - "server_infra_cache_lame_size", "server_infra_cache_slabs", - "server_infra_cache_min_rtt", "server_infra_cache_max_rtt", - "server_infra_keep_probing", "server_target_fetch_policy", - "server_harden_short_bufsize", "server_harden_large_queries", - "server_harden_glue", "server_harden_dnssec_stripped", - "server_harden_below_nxdomain", "server_harden_referral_path", - "server_harden_algo_downgrade", "server_harden_unknown_additional", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_interface_action", "server_module_conf", - "server_val_override_date", "server_val_sig_skew_min", - "server_val_sig_skew_max", "server_val_max_restart", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_ede_serve_expired", - "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1", - "server_val_log_level", "server_val_nsec3_keysize_iterations", - "server_zonemd_permissive_mode", "server_add_holddown", - "server_del_holddown", "server_keep_missing", - "server_permit_small_holddown", "server_key_cache_size", - "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", - "server_local_data", "server_local_data_ptr", "server_minimal_responses", - "server_rrset_roundrobin", "server_unknown_server_time_limit", - "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall", - "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag", - "server_access_control_tag", "server_access_control_tag_action", - "server_access_control_tag_data", "server_local_zone_override", - "server_access_control_view", "server_interface_tag", - "server_interface_tag_action", "server_interface_tag_data", - "server_interface_view", "server_response_ip_tag", "server_ip_ratelimit", - "server_ratelimit", "server_ip_ratelimit_size", "server_ratelimit_size", - "server_ip_ratelimit_slabs", "server_ratelimit_slabs", - "server_ratelimit_for_domain", "server_ratelimit_below_domain", - "server_ip_ratelimit_factor", "server_ratelimit_factor", - "server_ip_ratelimit_backoff", "server_ratelimit_backoff", - "server_outbound_msg_retry", "server_max_sent_count", - "server_max_query_restarts", "server_low_rtt", "server_fast_server_num", - "server_fast_server_permil", "server_qname_minimisation", - "server_qname_minimisation_strict", "server_pad_responses", - "server_pad_responses_block_size", "server_pad_queries", - "server_pad_queries_block_size", "server_ipsecmod_enabled", - "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", - "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "server_edns_client_string", - "server_edns_client_string_opcode", "server_ede", - "server_proxy_protocol_port", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_tcp_upstream", - "stub_prime", "forward_name", "forward_host", "forward_addr", - "forward_first", "forward_no_cache", "forward_ssl_upstream", - "forward_tcp_upstream", "auth_name", "auth_zonefile", "auth_master", - "auth_url", "auth_allow_notify", "auth_zonemd_check", - "auth_zonemd_reject_absence", "auth_for_downstream", "auth_for_upstream", - "auth_fallback_enabled", "view_name", "view_local_zone", - "view_response_ip", "view_response_ip_data", "view_local_data", - "view_local_data_ptr", "view_first", "rcstart", "contents_rc", - "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip", - "dt_dnstap_tls", "dt_dnstap_tls_server_name", - "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file", - "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity", - "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", - "dt_dnstap_log_resolver_query_messages", - "dt_dnstap_log_resolver_response_messages", - "dt_dnstap_log_client_query_messages", - "dt_dnstap_log_client_response_messages", - "dt_dnstap_log_forwarder_query_messages", - "dt_dnstap_log_forwarder_response_messages", "pythonstart", - "contents_py", "content_py", "py_script", "dynlibstart", "contents_dl", - "content_dl", "dl_file", "server_disable_dnssec_lame_check", - "server_log_identity", "server_response_ip", "server_response_ip_data", - "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", - "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider", - "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated", - "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size", - "dnsc_dnscrypt_shared_secret_cache_slabs", - "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", - "cachedbstart", "contents_cachedb", "content_cachedb", - "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", - "redis_server_port", "redis_server_path", "redis_server_password", - "redis_timeout", "redis_expire_records", "server_tcp_connection_limit", - "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", - "ipset_name_v6", YY_NULLPTR -}; - -static const char * -yysymbol_name (yysymbol_kind_t yysymbol) -{ - return yytname[yysymbol]; -} -#endif - -#define YYPACT_NINF (-288) - -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) - -#define YYTABLE_NINF (-1) - -#define yytable_value_is_error(Yyn) \ - 0 - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - -288, 252, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -13, 221, 254, 197, 52, 39, 147, -14, - -81, -287, 146, 135, -280, 29, 30, 31, 73, 75, - 76, 77, 78, 79, 80, 81, 91, 92, 119, 120, - 121, 123, 124, 132, 165, 210, 212, 233, 255, 257, - 260, 261, 263, 264, 265, 266, 267, 272, 275, 278, - 279, 290, 292, 293, 296, 299, 304, 305, 306, 322, - 323, 324, 325, 326, 329, 335, 336, 337, 339, 341, - 342, 343, 344, 350, 351, 352, 353, 355, 359, 360, - 361, 362, 363, 364, 365, 367, 368, 371, 372, 373, - 374, 375, 376, 379, 380, 381, 382, 383, 384, 385, - 387, 389, 390, 410, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 476, 477, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 490, 491, 492, 493, 494, 495, 496, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 514, 515, 516, 517, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 546, 547, 548, 549, 550, 551, 552, 554, 555, - 556, 558, 559, 560, 561, 562, 564, 565, 566, 567, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, 568, 569, 570, 571, - 572, 573, 574, 575, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 576, 577, 578, 579, 580, 581, 582, - -288, -288, -288, -288, -288, -288, -288, -288, 583, 584, - 585, 586, 587, 588, 589, -288, -288, -288, -288, -288, - -288, -288, -288, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, 600, 601, 602, 603, 604, 605, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 606, 607, 608, 609, 610, 611, 612, - 613, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 630, 631, 632, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 633, - -288, -288, 634, -288, -288, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 644, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, 645, 646, 647, 648, - 649, 650, 651, 652, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 653, 654, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 655, 656, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 657, - 658, 659, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, 660, 661, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 662, 663, - 664, 665, 666, 667, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 668, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 669, - -288, -288, -288, -288, -288, 670, 671, 672, 673, 674, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 675, - -288, -288, 676, 677, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 678, - 679, 680, -288, -288, -288, -288, -288, -288, 681, 682, - -288, -288, -288, -288, -288, -288, -288, -288 -}; - -/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_int16 yydefact[] = -{ - 2, 0, 1, 18, 19, 257, 268, 584, 644, 603, - 278, 658, 681, 288, 701, 307, 649, 3, 17, 21, - 259, 270, 280, 290, 309, 586, 605, 646, 651, 660, - 683, 703, 4, 5, 6, 10, 14, 15, 8, 9, - 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 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, - 20, 22, 23, 88, 91, 100, 255, 215, 216, 24, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 37, 79, 25, 92, 93, 48, 72, 87, 252, 26, - 27, 30, 31, 28, 29, 32, 33, 34, 249, 250, - 251, 35, 36, 124, 227, 125, 127, 128, 129, 229, - 234, 230, 241, 242, 243, 244, 130, 131, 132, 133, - 134, 135, 136, 211, 89, 78, 104, 122, 123, 239, - 236, 126, 38, 39, 40, 41, 42, 80, 94, 95, - 111, 66, 76, 67, 219, 220, 105, 58, 59, 218, - 62, 60, 61, 63, 247, 115, 119, 140, 151, 183, - 154, 240, 116, 73, 43, 44, 45, 102, 141, 142, - 143, 144, 46, 47, 49, 50, 52, 53, 51, 148, - 149, 155, 54, 55, 56, 64, 83, 120, 97, 150, - 256, 90, 179, 98, 99, 117, 118, 237, 103, 57, - 81, 84, 192, 65, 68, 106, 107, 108, 82, 180, - 109, 69, 70, 71, 228, 121, 202, 203, 204, 205, - 206, 207, 208, 209, 217, 110, 77, 248, 112, 113, - 114, 181, 74, 75, 96, 85, 86, 101, 137, 138, - 238, 139, 145, 146, 147, 184, 185, 187, 189, 190, - 188, 191, 194, 195, 196, 193, 212, 152, 153, 158, - 159, 156, 157, 160, 161, 163, 162, 165, 164, 166, - 167, 168, 231, 233, 232, 182, 197, 198, 199, 200, - 201, 221, 223, 222, 224, 225, 226, 245, 246, 253, - 254, 186, 210, 213, 214, 235, 0, 0, 0, 0, - 0, 0, 0, 0, 258, 260, 261, 262, 264, 265, - 266, 267, 263, 0, 0, 0, 0, 0, 0, 0, - 269, 271, 272, 273, 274, 275, 276, 277, 0, 0, - 0, 0, 0, 0, 0, 279, 281, 282, 285, 286, - 283, 287, 284, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 289, 291, 292, 293, 294, 298, 299, - 300, 295, 296, 297, 0, 0, 0, 0, 0, 0, - 312, 316, 317, 318, 319, 320, 308, 310, 311, 313, - 314, 315, 321, 0, 0, 0, 0, 0, 0, 0, - 0, 585, 587, 589, 588, 594, 590, 591, 592, 593, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 604, - 606, 608, 607, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 621, 622, 623, 624, 0, - 645, 647, 0, 650, 652, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 659, 661, 662, 663, 665, - 666, 664, 667, 668, 669, 670, 0, 0, 0, 0, - 0, 0, 0, 0, 682, 684, 685, 686, 687, 690, - 691, 688, 689, 0, 0, 702, 704, 705, 323, 322, - 330, 343, 341, 354, 350, 351, 355, 352, 353, 356, - 357, 358, 362, 363, 393, 394, 395, 396, 397, 425, - 426, 427, 433, 434, 346, 435, 436, 439, 437, 438, - 443, 444, 445, 460, 408, 409, 412, 413, 446, 464, - 402, 404, 465, 472, 473, 474, 347, 424, 493, 494, - 403, 487, 386, 342, 398, 461, 469, 447, 0, 0, - 497, 348, 324, 385, 452, 325, 344, 345, 399, 400, - 495, 449, 454, 455, 360, 359, 326, 498, 428, 459, - 387, 407, 466, 467, 468, 471, 486, 401, 491, 489, - 490, 416, 423, 456, 457, 417, 418, 448, 476, 388, - 389, 392, 364, 366, 361, 367, 368, 369, 370, 377, - 378, 379, 380, 381, 382, 383, 499, 500, 502, 429, - 430, 431, 432, 440, 441, 442, 503, 504, 505, 0, - 0, 0, 450, 419, 421, 654, 518, 522, 520, 519, - 523, 521, 530, 531, 532, 0, 0, 526, 527, 528, - 529, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 453, 470, 492, 536, 537, 420, 506, 0, 0, - 0, 0, 0, 0, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 655, 410, 411, 414, 405, 475, 384, - 328, 329, 406, 538, 539, 540, 541, 542, 544, 543, - 545, 546, 547, 365, 372, 533, 535, 534, 371, 0, - 391, 458, 501, 390, 422, 373, 374, 376, 375, 0, - 549, 415, 488, 349, 550, 0, 0, 0, 0, 0, - 551, 327, 451, 552, 553, 554, 559, 557, 558, 555, - 556, 560, 561, 562, 563, 565, 566, 564, 577, 0, - 581, 582, 0, 0, 583, 567, 575, 568, 569, 570, - 574, 576, 571, 572, 573, 301, 302, 303, 304, 305, - 306, 595, 597, 596, 599, 600, 601, 602, 598, 625, - 627, 628, 629, 630, 631, 632, 633, 634, 635, 626, - 636, 637, 638, 639, 640, 641, 642, 643, 648, 653, - 671, 672, 673, 676, 674, 675, 677, 678, 679, 680, - 692, 693, 694, 695, 698, 699, 696, 697, 706, 707, - 462, 496, 517, 656, 657, 524, 525, 507, 508, 0, - 0, 0, 512, 700, 548, 463, 516, 513, 0, 0, - 578, 579, 580, 511, 509, 510, 514, 515 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 683, 684, 685, 686, 687, -288, -288, - 688, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - 0, 1, 17, 18, 19, 32, 280, 20, 33, 524, - 21, 34, 540, 22, 35, 555, 23, 36, 573, 590, - 591, 592, 593, 594, 595, 24, 37, 596, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 525, 526, - 527, 528, 529, 530, 531, 532, 541, 542, 543, 544, - 545, 546, 547, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 556, 557, 558, 559, 560, 561, 562, - 25, 38, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 26, 39, 639, 640, 641, 642, 643, 644, 645, - 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, - 656, 657, 658, 27, 40, 660, 661, 28, 41, 663, - 664, 511, 512, 513, 514, 29, 42, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 684, 685, 30, 43, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 515, - 31, 44, 705, 706, 707 -}; - -/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 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, 703, 704, 659, 662, 77, 78, 79, 708, - 709, 710, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 711, 563, 712, 713, 714, 715, 716, - 717, 718, 121, 122, 123, 124, 125, 563, 126, 127, - 128, 719, 720, 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, 721, - 722, 723, 155, 724, 725, 156, 157, 158, 159, 160, - 161, 162, 726, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 727, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 728, 220, 729, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 548, 730, 603, 604, 605, 606, 607, 608, - 609, 610, 2, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 3, 4, 731, 516, 732, 517, 518, - 733, 734, 250, 735, 736, 737, 738, 739, 549, 550, - 251, 252, 740, 253, 254, 741, 255, 256, 742, 743, - 257, 258, 259, 260, 261, 262, 263, 264, 5, 533, - 744, 265, 745, 746, 6, 551, 747, 534, 535, 748, - 266, 267, 268, 269, 749, 750, 751, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 565, 566, 567, - 568, 519, 752, 753, 754, 755, 756, 570, 564, 757, - 565, 566, 567, 568, 569, 758, 759, 760, 7, 761, - 570, 762, 763, 764, 765, 584, 585, 586, 587, 588, - 766, 767, 768, 769, 520, 770, 8, 521, 589, 771, - 772, 773, 774, 775, 776, 777, 522, 778, 779, 571, - 572, 780, 781, 782, 783, 784, 785, 552, 553, 786, - 787, 788, 789, 790, 791, 792, 536, 793, 537, 794, - 795, 538, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 686, 687, 688, 689, 690, 691, 692, 693, - 796, 9, 797, 798, 799, 800, 801, 802, 803, 804, - 805, 806, 554, 807, 808, 809, 810, 811, 812, 813, - 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, - 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, - 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, - 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 10, 859, 860, 861, 862, - 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, - 873, 874, 875, 876, 877, 878, 879, 11, 880, 881, - 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, - 892, 893, 894, 523, 895, 896, 897, 898, 12, 899, - 900, 901, 902, 903, 904, 905, 906, 907, 908, 13, - 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, - 919, 920, 921, 922, 923, 539, 924, 925, 926, 927, - 928, 929, 930, 14, 931, 932, 933, 15, 934, 935, - 936, 937, 938, 16, 939, 940, 941, 942, 943, 944, - 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, - 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, - 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, - 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, - 1055, 1056, 1057, 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, - 597, 598, 599, 600, 601, 602 -}; - -static const yytype_int16 yycheck[] = -{ - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 312, 313, 115, 322, 49, 50, 51, 10, - 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 10, 45, 10, 10, 10, 10, 10, - 10, 10, 105, 106, 107, 108, 109, 45, 111, 112, - 113, 10, 10, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 10, - 10, 10, 145, 10, 10, 148, 149, 150, 151, 152, - 153, 154, 10, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 10, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 10, 234, 10, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 45, 10, 97, 98, 99, 100, 101, 102, - 103, 104, 0, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 11, 12, 10, 45, 10, 47, 48, - 10, 10, 285, 10, 10, 10, 10, 10, 81, 82, - 293, 294, 10, 296, 297, 10, 299, 300, 10, 10, - 303, 304, 305, 306, 307, 308, 309, 310, 46, 45, - 10, 314, 10, 10, 52, 108, 10, 53, 54, 10, - 323, 324, 325, 326, 10, 10, 10, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 288, 289, 290, - 291, 110, 10, 10, 10, 10, 10, 298, 286, 10, - 288, 289, 290, 291, 292, 10, 10, 10, 96, 10, - 298, 10, 10, 10, 10, 316, 317, 318, 319, 320, - 10, 10, 10, 10, 143, 10, 114, 146, 329, 10, - 10, 10, 10, 10, 10, 10, 155, 10, 10, 327, - 328, 10, 10, 10, 10, 10, 10, 190, 191, 10, - 10, 10, 10, 10, 10, 10, 142, 10, 144, 10, - 10, 147, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 277, 278, 279, 280, 281, 282, 283, 284, - 10, 169, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 235, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 233, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 255, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 302, 10, 10, 10, 10, 276, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 287, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 301, 10, 10, 10, 10, - 10, 10, 10, 311, 10, 10, 10, 315, 10, 10, - 10, 10, 10, 321, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 37, 37, 37, 37, 37 -}; - -/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of - state STATE-NUM. */ -static const yytype_int16 yystos[] = -{ - 0, 341, 0, 11, 12, 46, 52, 96, 114, 169, - 233, 255, 276, 287, 311, 315, 321, 342, 343, 344, - 347, 350, 353, 356, 365, 630, 641, 663, 667, 675, - 688, 700, 345, 348, 351, 354, 357, 366, 631, 642, - 664, 668, 676, 689, 701, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 105, 106, 107, 108, 109, 111, 112, 113, 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, 145, 148, 149, 150, 151, - 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 285, 293, 294, 296, 297, 299, 300, 303, 304, 305, - 306, 307, 308, 309, 310, 314, 323, 324, 325, 326, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 346, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 671, 672, 673, 674, 699, 45, 47, 48, 110, - 143, 146, 155, 302, 349, 598, 599, 600, 601, 602, - 603, 604, 605, 45, 53, 54, 142, 144, 147, 301, - 352, 606, 607, 608, 609, 610, 611, 612, 45, 81, - 82, 108, 190, 191, 235, 355, 623, 624, 625, 626, - 627, 628, 629, 45, 286, 288, 289, 290, 291, 292, - 298, 327, 328, 358, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 316, 317, 318, 319, 320, 329, - 359, 360, 361, 362, 363, 364, 367, 613, 614, 615, - 616, 617, 620, 97, 98, 99, 100, 101, 102, 103, - 104, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 643, - 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 115, - 665, 666, 322, 669, 670, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 277, 278, 279, 280, - 281, 282, 283, 284, 690, 691, 692, 693, 694, 695, - 696, 697, 698, 312, 313, 702, 703, 704, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10 -}; - -/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ -static const yytype_int16 yyr1[] = -{ - 0, 340, 341, 341, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 343, 344, - 345, 345, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 347, 348, 348, - 349, 349, 349, 349, 349, 349, 349, 349, 350, 351, - 351, 352, 352, 352, 352, 352, 352, 352, 353, 354, - 354, 355, 355, 355, 355, 355, 355, 355, 356, 357, - 357, 358, 358, 358, 358, 358, 358, 358, 358, 358, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 366, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 631, 632, 632, 632, - 632, 632, 632, 632, 632, 633, 634, 635, 636, 637, - 638, 639, 640, 641, 642, 642, 643, 643, 643, 643, - 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, - 643, 643, 643, 643, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 660, 661, 662, 663, 664, 664, 665, 666, 667, - 668, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 676, 677, 677, 677, 677, 677, 677, 677, 677, 677, - 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 689, 690, 690, 690, 690, 690, 690, - 690, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 700, 701, 701, 702, 702, 703, 704 -}; - -/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ -static const yytype_int8 yyr2[] = -{ - 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 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, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, - 4, 4, 3, 3, 4, 4, 3, 3, 2, 2, - 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 3, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 2, 1, - 2, 0, 1, 2, 2, 2, 3, 3, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 1, 2, 0, 1, 1, 2, 2 -}; - - -enum { YYENOMEM = -2 }; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab -#define YYNOMEM goto yyexhaustedlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Backward compatibility with an undocumented macro. - Use YYerror or YYUNDEF. */ -#define YYERRCODE YYUNDEF - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - - - - -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Kind, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) -{ - FILE *yyoutput = yyo; - YY_USE (yyoutput); - if (!yyvaluep) - return; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ - -static void -yy_symbol_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyo, "%s %s (", - yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - - yy_symbol_value_print (yyo, yykind, yyvaluep); - YYFPRINTF (yyo, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, - int yyrule) -{ - int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), - &yyvsp[(yyi + 1) - (yynrhs)]); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) ((void) 0) -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - - - - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, - yysymbol_kind_t yykind, YYSTYPE *yyvaluep) -{ - YY_USE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - -/* Lookahead token kind. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - yy_state_fast_t yystate = 0; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus = 0; - - /* Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* Their size. */ - YYPTRDIFF_T yystacksize = YYINITDEPTH; - - /* The state stack: array, bottom, top. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss = yyssa; - yy_state_t *yyssp = yyss; - - /* The semantic value stack: array, bottom, top. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp = yyvs; - - int yyn; - /* The return value of yyparse. */ - int yyresult; - /* Lookahead symbol kind. */ - yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yychar = YYEMPTY; /* Cause a token to be read. */ - - goto yysetstate; - - -/*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | -`------------------------------------------------------------*/ -yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - YY_STACK_PRINT (yyss, yyssp); - - if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - YYNOMEM; -#else - { - /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; - -# if defined yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - yy_state_t *yyss1 = yyss; - YYSTYPE *yyvs1 = yyvs; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - } -# else /* defined YYSTACK_RELOCATE */ - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - YYNOMEM; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yy_state_t *yyss1 = yyss; - union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); - if (! yyptr) - YYNOMEM; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token\n")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = YYEOF; - yytoken = YYSYMBOL_YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else if (yychar == YYerror) - { - /* The scanner already issued an error message, process directly - to error recovery. But do not keep the error token as - lookahead, it is too special and may lead us to an endless - loop in error recovery. */ - yychar = YYUNDEF; - yytoken = YYSYMBOL_YYerror; - goto yyerrlab1; - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ -#line 210 "./util/configparser.y" - { - OUTYY(("\nP(force-toplevel)\n")); - cfg_parser->started_toplevel = 0; - } -#line 2830 "util/configparser.c" - break; - - case 19: /* serverstart: VAR_SERVER */ -#line 217 "./util/configparser.y" - { - OUTYY(("\nP(server:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 2839 "util/configparser.c" - break; - - case 257: /* stubstart: VAR_STUB_ZONE */ -#line 331 "./util/configparser.y" - { - struct config_stub* s; - OUTYY(("\nP(stub_zone:)\n")); - cfg_parser->started_toplevel = 1; - s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); - if(s) { - s->next = cfg_parser->cfg->stubs; - cfg_parser->cfg->stubs = s; - } else { - yyerror("out of memory"); - } - } -#line 2856 "util/configparser.c" - break; - - case 268: /* forwardstart: VAR_FORWARD_ZONE */ -#line 350 "./util/configparser.y" - { - struct config_stub* s; - OUTYY(("\nP(forward_zone:)\n")); - cfg_parser->started_toplevel = 1; - s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); - if(s) { - s->next = cfg_parser->cfg->forwards; - cfg_parser->cfg->forwards = s; - } else { - yyerror("out of memory"); - } - } -#line 2873 "util/configparser.c" - break; - - case 278: /* viewstart: VAR_VIEW */ -#line 369 "./util/configparser.y" - { - struct config_view* s; - OUTYY(("\nP(view:)\n")); - cfg_parser->started_toplevel = 1; - s = (struct config_view*)calloc(1, sizeof(struct config_view)); - if(s) { - s->next = cfg_parser->cfg->views; - if(s->next && !s->next->name) - yyerror("view without name"); - cfg_parser->cfg->views = s; - } else { - yyerror("out of memory"); - } - } -#line 2892 "util/configparser.c" - break; - - case 288: /* authstart: VAR_AUTH_ZONE */ -#line 390 "./util/configparser.y" - { - struct config_auth* s; - OUTYY(("\nP(auth_zone:)\n")); - cfg_parser->started_toplevel = 1; - s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); - if(s) { - s->next = cfg_parser->cfg->auths; - cfg_parser->cfg->auths = s; - /* defaults for auth zone */ - s->for_downstream = 1; - s->for_upstream = 1; - s->fallback_enabled = 0; - s->zonemd_check = 0; - s->zonemd_reject_absence = 0; - s->isrpz = 0; - } else { - yyerror("out of memory"); - } - } -#line 2916 "util/configparser.c" - break; - - case 301: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 418 "./util/configparser.y" - { - uint8_t* bitlist; - size_t len = 0; - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); - bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - } - if(bitlist) { - cfg_parser->cfg->auths->rpz_taglist = bitlist; - cfg_parser->cfg->auths->rpz_taglistlen = len; - - } - } -#line 2937 "util/configparser.c" - break; - - case 302: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 437 "./util/configparser.y" - { - OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && - strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && - strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) { - yyerror("rpz-action-override action: expected nxdomain, " - "nodata, passthru, drop, cname or disabled"); - free((yyvsp[0].str)); - cfg_parser->cfg->auths->rpz_action_override = NULL; - } - else { - cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); - } - } -#line 2956 "util/configparser.c" - break; - - case 303: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 454 "./util/configparser.y" - { - OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->rpz_cname); - cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); - } -#line 2966 "util/configparser.c" - break; - - case 304: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 462 "./util/configparser.y" - { - OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2978 "util/configparser.c" - break; - - case 305: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 472 "./util/configparser.y" - { - OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->rpz_log_name); - cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); - } -#line 2988 "util/configparser.c" - break; - - case 306: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ -#line 479 "./util/configparser.y" - { - OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3000 "util/configparser.c" - break; - - case 307: /* rpzstart: VAR_RPZ */ -#line 489 "./util/configparser.y" - { - struct config_auth* s; - OUTYY(("\nP(rpz:)\n")); - cfg_parser->started_toplevel = 1; - s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); - if(s) { - s->next = cfg_parser->cfg->auths; - cfg_parser->cfg->auths = s; - /* defaults for RPZ auth zone */ - s->for_downstream = 0; - s->for_upstream = 0; - s->fallback_enabled = 0; - s->isrpz = 1; - } else { - yyerror("out of memory"); - } - } -#line 3022 "util/configparser.c" - break; - - case 322: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 514 "./util/configparser.y" - { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3034 "util/configparser.c" - break; - - case 323: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 523 "./util/configparser.y" - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3046 "util/configparser.c" - break; - - case 324: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 532 "./util/configparser.y" - { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->stat_interval = 0; - else if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3060 "util/configparser.c" - break; - - case 325: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 543 "./util/configparser.y" - { - OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3072 "util/configparser.c" - break; - - case 326: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 552 "./util/configparser.y" - { - OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3084 "util/configparser.c" - break; - - case 327: /* server_statistics_inhibit_zero: VAR_STATISTICS_INHIBIT_ZERO STRING_ARG */ -#line 561 "./util/configparser.y" - { - OUTYY(("P(server_statistics_inhibit_zero:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3096 "util/configparser.c" - break; - - case 328: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 570 "./util/configparser.y" - { - OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3108 "util/configparser.c" - break; - - case 329: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 579 "./util/configparser.y" - { - OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->shm_key = 0; - else if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3122 "util/configparser.c" - break; - - case 330: /* server_port: VAR_PORT STRING_ARG */ -#line 590 "./util/configparser.y" - { - OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3134 "util/configparser.c" - break; - - case 331: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 599 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) - fatal_exit("out of memory adding client-subnet"); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 3149 "util/configparser.c" - break; - - case 332: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 611 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, - (yyvsp[0].str))) - fatal_exit("out of memory adding client-subnet-zone"); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 3165 "util/configparser.c" - break; - - case 333: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 625 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->client_subnet_always_forward = - (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3183 "util/configparser.c" - break; - - case 334: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 640 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); - OUTYY(("P(Deprecated option, ignoring)\n")); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3197 "util/configparser.c" - break; - - case 335: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 651 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) - cfg_parser->cfg->max_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_client_subnet_ipv4 = 0; - else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3217 "util/configparser.c" - break; - - case 336: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 668 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) - cfg_parser->cfg->max_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_client_subnet_ipv6 = 0; - else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3237 "util/configparser.c" - break; - - case 337: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 685 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) - cfg_parser->cfg->min_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->min_client_subnet_ipv4 = 0; - else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3257 "util/configparser.c" - break; - - case 338: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 702 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) - cfg_parser->cfg->min_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->min_client_subnet_ipv6 = 0; - else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3277 "util/configparser.c" - break; - - case 339: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 719 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3295 "util/configparser.c" - break; - - case 340: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 734 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv6 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3313 "util/configparser.c" - break; - - case 341: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 749 "./util/configparser.y" - { - OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->num_ifs == 0) - cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); - else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, - (cfg_parser->cfg->num_ifs+1)*sizeof(char*)); - if(!cfg_parser->cfg->ifs) - yyerror("out of memory"); - else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); - } -#line 3329 "util/configparser.c" - break; - - case 342: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 762 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->num_out_ifs == 0) - cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); - else cfg_parser->cfg->out_ifs = realloc( - cfg_parser->cfg->out_ifs, - (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*)); - if(!cfg_parser->cfg->out_ifs) - yyerror("out of memory"); - else - cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); - } -#line 3347 "util/configparser.c" - break; - - case 343: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 777 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3359 "util/configparser.c" - break; - - case 344: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 786 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 1, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); - } -#line 3371 "util/configparser.c" - break; - - case 345: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 795 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 0, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); - } -#line 3383 "util/configparser.c" - break; - - case 346: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 804 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3395 "util/configparser.c" - break; - - case 347: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 813 "./util/configparser.y" - { - OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3407 "util/configparser.c" - break; - - case 348: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 822 "./util/configparser.y" - { - OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3419 "util/configparser.c" - break; - - case 349: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ -#line 831 "./util/configparser.y" - { - OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->if_automatic_ports); - cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); - } -#line 3429 "util/configparser.c" - break; - - case 350: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 838 "./util/configparser.y" - { - OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3441 "util/configparser.c" - break; - - case 351: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 847 "./util/configparser.y" - { - OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3453 "util/configparser.c" - break; - - case 352: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 856 "./util/configparser.y" - { - OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3465 "util/configparser.c" - break; - - case 353: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 865 "./util/configparser.y" - { - OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3477 "util/configparser.c" - break; - - case 354: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 874 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3489 "util/configparser.c" - break; - - case 355: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 883 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3501 "util/configparser.c" - break; - - case 356: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 892 "./util/configparser.y" - { - OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3513 "util/configparser.c" - break; - - case 357: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 901 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3525 "util/configparser.c" - break; - - case 358: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 910 "./util/configparser.y" - { - OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 120000) - cfg_parser->cfg->tcp_idle_timeout = 120000; - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_idle_timeout = 1; - else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3541 "util/configparser.c" - break; - - case 359: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 923 "./util/configparser.y" - { - OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->max_reuse_tcp_queries = 0; - else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3555 "util/configparser.c" - break; - - case 360: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 934 "./util/configparser.y" - { - OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_reuse_timeout = 0; - else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3569 "util/configparser.c" - break; - - case 361: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 945 "./util/configparser.y" - { - OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_auth_query_timeout = 0; - else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3583 "util/configparser.c" - break; - - case 362: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 956 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3595 "util/configparser.c" - break; - - case 363: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 965 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 6553500) - cfg_parser->cfg->tcp_keepalive_timeout = 6553500; - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_keepalive_timeout = 0; - else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3611 "util/configparser.c" - break; - - case 364: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 978 "./util/configparser.y" - { - OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3623 "util/configparser.c" - break; - - case 365: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 987 "./util/configparser.y" - { - OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3635 "util/configparser.c" - break; - - case 366: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 996 "./util/configparser.y" - { - OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3647 "util/configparser.c" - break; - - case 367: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 1005 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ssl_service_key); - cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); - } -#line 3657 "util/configparser.c" - break; - - case 368: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 1012 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ssl_service_pem); - cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); - } -#line 3667 "util/configparser.c" - break; - - case 369: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 1019 "./util/configparser.y" - { - OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3679 "util/configparser.c" - break; - - case 370: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 1028 "./util/configparser.y" - { - OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_cert_bundle); - cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); - } -#line 3689 "util/configparser.c" - break; - - case 371: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1035 "./util/configparser.y" - { - OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3701 "util/configparser.c" - break; - - case 372: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1044 "./util/configparser.y" - { - OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3712 "util/configparser.c" - break; - - case 373: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1052 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_ciphers); - cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); - } -#line 3722 "util/configparser.c" - break; - - case 374: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1059 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_ciphersuites); - cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); - } -#line 3732 "util/configparser.c" - break; - - case 375: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1066 "./util/configparser.y" - { - OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3743 "util/configparser.c" - break; - - case 376: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1074 "./util/configparser.y" - { - OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3755 "util/configparser.c" - break; - - case 377: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1083 "./util/configparser.y" - { - OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3767 "util/configparser.c" - break; - - case 378: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1091 "./util/configparser.y" - { - OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->http_endpoint); - if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { - cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2); - if(!cfg_parser->cfg->http_endpoint) - yyerror("out of memory"); - cfg_parser->cfg->http_endpoint[0] = '/'; - memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str), - strlen((yyvsp[0].str))+1); - free((yyvsp[0].str)); - } else { - cfg_parser->cfg->http_endpoint = (yyvsp[0].str); - } - } -#line 3787 "util/configparser.c" - break; - - case 379: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1107 "./util/configparser.y" - { - OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3799 "util/configparser.c" - break; - - case 380: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1115 "./util/configparser.y" - { - OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), - &cfg_parser->cfg->http_query_buffer_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 3811 "util/configparser.c" - break; - - case 381: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1123 "./util/configparser.y" - { - OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), - &cfg_parser->cfg->http_response_buffer_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 3823 "util/configparser.c" - break; - - case 382: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1131 "./util/configparser.y" - { - OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3835 "util/configparser.c" - break; - - case 383: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1139 "./util/configparser.y" - { - OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3847 "util/configparser.c" - break; - - case 384: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1147 "./util/configparser.y" - { - OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3859 "util/configparser.c" - break; - - case 385: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1156 "./util/configparser.y" - { - OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3871 "util/configparser.c" - break; - - case 386: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1165 "./util/configparser.y" - { - OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); -#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) - if(strcmp((yyvsp[0].str), "yes") == 0) - yyerror("no syslog services are available. " - "(reconfigure and compile to add)"); -#endif - free((yyvsp[0].str)); - } -#line 3888 "util/configparser.c" - break; - - case 387: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1179 "./util/configparser.y" - { - OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3900 "util/configparser.c" - break; - - case 388: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1188 "./util/configparser.y" - { - OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3912 "util/configparser.c" - break; - - case 389: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1197 "./util/configparser.y" - { - OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3924 "util/configparser.c" - break; - - case 390: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1206 "./util/configparser.y" - { - OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3936 "util/configparser.c" - break; - - case 391: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1215 "./util/configparser.y" - { - OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3948 "util/configparser.c" - break; - - case 392: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1224 "./util/configparser.y" - { - OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3960 "util/configparser.c" - break; - - case 393: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1233 "./util/configparser.y" - { - OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->chrootdir); - cfg_parser->cfg->chrootdir = (yyvsp[0].str); - } -#line 3970 "util/configparser.c" - break; - - case 394: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1240 "./util/configparser.y" - { - OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->username); - cfg_parser->cfg->username = (yyvsp[0].str); - } -#line 3980 "util/configparser.c" - break; - - case 395: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1247 "./util/configparser.y" - { - OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[0].str); - /* change there right away for includes relative to this */ - if((yyvsp[0].str)[0]) { - char* d; -#ifdef UB_ON_WINDOWS - w_config_adjust_directory(cfg_parser->cfg); -#endif - d = cfg_parser->cfg->directory; - /* adjust directory if we have already chroot, - * like, we reread after sighup */ - if(cfg_parser->chroot && cfg_parser->chroot[0] && - strncmp(d, cfg_parser->chroot, strlen( - cfg_parser->chroot)) == 0) - d += strlen(cfg_parser->chroot); - if(d[0]) { - if(chdir(d)) - log_err("cannot chdir to directory: %s (%s)", - d, strerror(errno)); - } - } - } -#line 4009 "util/configparser.c" - break; - - case 396: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1273 "./util/configparser.y" - { - OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->logfile); - cfg_parser->cfg->logfile = (yyvsp[0].str); - cfg_parser->cfg->use_syslog = 0; - } -#line 4020 "util/configparser.c" - break; - - case 397: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1281 "./util/configparser.y" - { - OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->pidfile); - cfg_parser->cfg->pidfile = (yyvsp[0].str); - } -#line 4030 "util/configparser.c" - break; - - case 398: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1288 "./util/configparser.y" - { - OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4040 "util/configparser.c" - break; - - case 399: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1295 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); - log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); - free((yyvsp[0].str)); - } -#line 4050 "util/configparser.c" - break; - - case 400: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1302 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); - log_warn("option dlv-anchor ignored: DLV is decommissioned"); - free((yyvsp[0].str)); - } -#line 4060 "util/configparser.c" - break; - - case 401: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1309 "./util/configparser.y" - { - OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - auto_trust_anchor_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4071 "util/configparser.c" - break; - - case 402: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1317 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - trust_anchor_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4082 "util/configparser.c" - break; - - case 403: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1325 "./util/configparser.y" - { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - trusted_keys_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4093 "util/configparser.c" - break; - - case 404: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1333 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4103 "util/configparser.c" - break; - - case 405: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1340 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->trust_anchor_signaling = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4117 "util/configparser.c" - break; - - case 406: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1351 "./util/configparser.y" - { - OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->root_key_sentinel = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4131 "util/configparser.c" - break; - - case 407: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1362 "./util/configparser.y" - { - OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4141 "util/configparser.c" - break; - - case 408: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1369 "./util/configparser.y" - { - OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4153 "util/configparser.c" - break; - - case 409: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1378 "./util/configparser.y" - { - OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4165 "util/configparser.c" - break; - - case 410: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1387 "./util/configparser.y" - { - OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4177 "util/configparser.c" - break; - - case 411: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1396 "./util/configparser.y" - { - OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4189 "util/configparser.c" - break; - - case 412: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1405 "./util/configparser.y" - { - OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->identity); - cfg_parser->cfg->identity = (yyvsp[0].str); - } -#line 4199 "util/configparser.c" - break; - - case 413: /* server_version: VAR_VERSION STRING_ARG */ -#line 1412 "./util/configparser.y" - { - OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->version); - cfg_parser->cfg->version = (yyvsp[0].str); - } -#line 4209 "util/configparser.c" - break; - - case 414: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1419 "./util/configparser.y" - { - OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->http_user_agent); - cfg_parser->cfg->http_user_agent = (yyvsp[0].str); - } -#line 4219 "util/configparser.c" - break; - - case 415: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1426 "./util/configparser.y" - { - OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->nsid_cfg_str); - cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str); - free(cfg_parser->cfg->nsid); - cfg_parser->cfg->nsid = NULL; - cfg_parser->cfg->nsid_len = 0; - if (*(yyvsp[0].str) == 0) - ; /* pass; empty string is not setting nsid */ - else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( - (yyvsp[0].str), &cfg_parser->cfg->nsid_len))) - yyerror("the NSID must be either a hex string or an " - "ascii character string prepended with ascii_."); - } -#line 4238 "util/configparser.c" - break; - - case 416: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1442 "./util/configparser.y" - { - OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) - yyerror("buffer size expected"); - free((yyvsp[0].str)); - } -#line 4249 "util/configparser.c" - break; - - case 417: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1450 "./util/configparser.y" - { - OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) - yyerror("buffer size expected"); - free((yyvsp[0].str)); - } -#line 4260 "util/configparser.c" - break; - - case 418: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1458 "./util/configparser.y" - { - OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->so_reuseport = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4273 "util/configparser.c" - break; - - case 419: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1468 "./util/configparser.y" - { - OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_transparent = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4286 "util/configparser.c" - break; - - case 420: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1478 "./util/configparser.y" - { - OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_freebind = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4299 "util/configparser.c" - break; - - case 421: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1488 "./util/configparser.y" - { - OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 63) - yyerror("value too large (max 63)"); - else if (atoi((yyvsp[0].str)) < 0) - yyerror("value too small (min 0)"); - else - cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4316 "util/configparser.c" - break; - - case 422: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1502 "./util/configparser.y" - { - OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4327 "util/configparser.c" - break; - - case 423: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1510 "./util/configparser.y" - { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 12) - yyerror("edns buffer size too small"); - else if (atoi((yyvsp[0].str)) > 65535) - cfg_parser->cfg->edns_buffer_size = 65535; - else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4343 "util/configparser.c" - break; - - case 424: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1523 "./util/configparser.y" - { - OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 4096) - yyerror("message buffer size too small (use 4096)"); - else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4357 "util/configparser.c" - break; - - case 425: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1534 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4368 "util/configparser.c" - break; - - case 426: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1542 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4384 "util/configparser.c" - break; - - case 427: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1555 "./util/configparser.y" - { - OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4396 "util/configparser.c" - break; - - case 428: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1564 "./util/configparser.y" - { - OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4408 "util/configparser.c" - break; - - case 429: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1573 "./util/configparser.y" - { - OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4420 "util/configparser.c" - break; - - case 430: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1582 "./util/configparser.y" - { - OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4432 "util/configparser.c" - break; - - case 431: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1591 "./util/configparser.y" - { - OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->unblock_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4445 "util/configparser.c" - break; - - case 432: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1601 "./util/configparser.y" - { - OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->insecure_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4458 "util/configparser.c" - break; - - case 433: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1611 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4469 "util/configparser.c" - break; - - case 434: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1619 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4485 "util/configparser.c" - break; - - case 435: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1632 "./util/configparser.y" - { - OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4497 "util/configparser.c" - break; - - case 436: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1641 "./util/configparser.y" - { - OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); - verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " - "removed, use infra-host-ttl)", (yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4508 "util/configparser.c" - break; - - case 437: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1649 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4520 "util/configparser.c" - break; - - case 438: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1658 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); - verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " - "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4531 "util/configparser.c" - break; - - case 439: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1666 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4547 "util/configparser.c" - break; - - case 440: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1679 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4559 "util/configparser.c" - break; - - case 441: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ -#line 1688 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_max_rtt:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4571 "util/configparser.c" - break; - - case 442: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1697 "./util/configparser.y" - { - OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->infra_keep_probing = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4584 "util/configparser.c" - break; - - case 443: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1707 "./util/configparser.y" - { - OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->target_fetch_policy); - cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); - } -#line 4594 "util/configparser.c" - break; - - case 444: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1714 "./util/configparser.y" - { - OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_short_bufsize = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4607 "util/configparser.c" - break; - - case 445: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1724 "./util/configparser.y" - { - OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_large_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4620 "util/configparser.c" - break; - - case 446: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1734 "./util/configparser.y" - { - OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_glue = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4633 "util/configparser.c" - break; - - case 447: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1744 "./util/configparser.y" - { - OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_dnssec_stripped = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4646 "util/configparser.c" - break; - - case 448: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1754 "./util/configparser.y" - { - OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_below_nxdomain = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4659 "util/configparser.c" - break; - - case 449: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1764 "./util/configparser.y" - { - OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_referral_path = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4672 "util/configparser.c" - break; - - case 450: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1774 "./util/configparser.y" - { - OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_algo_downgrade = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4685 "util/configparser.c" - break; - - case 451: /* server_harden_unknown_additional: VAR_HARDEN_UNKNOWN_ADDITIONAL STRING_ARG */ -#line 1784 "./util/configparser.y" - { - OUTYY(("P(server_harden_unknown_additional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_unknown_additional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4698 "util/configparser.c" - break; - - case 452: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1794 "./util/configparser.y" - { - OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_caps_bits_for_id = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4711 "util/configparser.c" - break; - - case 453: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1804 "./util/configparser.y" - { - OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4721 "util/configparser.c" - break; - - case 454: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1811 "./util/configparser.y" - { - OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4731 "util/configparser.c" - break; - - case 455: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1818 "./util/configparser.y" - { - OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4741 "util/configparser.c" - break; - - case 456: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1825 "./util/configparser.y" - { - OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4753 "util/configparser.c" - break; - - case 457: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1834 "./util/configparser.y" - { - OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4765 "util/configparser.c" - break; - - case 458: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1843 "./util/configparser.y" - { - OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4777 "util/configparser.c" - break; - - case 459: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1852 "./util/configparser.y" - { - OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4789 "util/configparser.c" - break; - - case 460: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1861 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4799 "util/configparser.c" - break; - - case 461: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1868 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->donotquery_localhost = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4812 "util/configparser.c" - break; - - case 462: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1878 "./util/configparser.y" - { - OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_acl_action((yyvsp[0].str)); - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding acl"); - } -#line 4823 "util/configparser.c" - break; - - case 463: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ -#line 1886 "./util/configparser.y" - { - OUTYY(("P(server_interface_action:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_acl_action((yyvsp[0].str)); - if(!cfg_str2list_insert( - &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding acl"); - } -#line 4835 "util/configparser.c" - break; - - case 464: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1895 "./util/configparser.y" - { - OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->module_conf); - cfg_parser->cfg->module_conf = (yyvsp[0].str); - } -#line 4845 "util/configparser.c" - break; - - case 465: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1902 "./util/configparser.y" - { - OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_date_override = 0; - } else if(strlen((yyvsp[0].str)) == 14) { - cfg_parser->cfg->val_date_override = - cfg_convert_timeval((yyvsp[0].str)); - if(!cfg_parser->cfg->val_date_override) - yyerror("bad date/time specification"); - } else { - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); - } - free((yyvsp[0].str)); - } -#line 4866 "util/configparser.c" - break; - - case 466: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1920 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_sig_skew_min = 0; - } else { - cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_min) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4882 "util/configparser.c" - break; - - case 467: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1933 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_sig_skew_max = 0; - } else { - cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_max) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4898 "util/configparser.c" - break; - - case 468: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1946 "./util/configparser.y" - { - OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_max_restart = 0; - } else { - cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_max_restart) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4914 "util/configparser.c" - break; - - case 469: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1959 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4926 "util/configparser.c" - break; - - case 470: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1968 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4938 "util/configparser.c" - break; - - case 471: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1977 "./util/configparser.y" - { - OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4950 "util/configparser.c" - break; - - case 472: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1986 "./util/configparser.y" - { - OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4962 "util/configparser.c" - break; - - case 473: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1995 "./util/configparser.y" - { - OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->val_clean_additional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4975 "util/configparser.c" - break; - - case 474: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 2005 "./util/configparser.y" - { - OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->val_permissive_mode = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4988 "util/configparser.c" - break; - - case 475: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 2015 "./util/configparser.y" - { - OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->aggressive_nsec = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5002 "util/configparser.c" - break; - - case 476: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 2026 "./util/configparser.y" - { - OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5014 "util/configparser.c" - break; - - case 477: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 2035 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5026 "util/configparser.c" - break; - - case 478: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 2044 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5038 "util/configparser.c" - break; - - case 479: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2053 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5050 "util/configparser.c" - break; - - case 480: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2062 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5062 "util/configparser.c" - break; - - case 481: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2071 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5074 "util/configparser.c" - break; - - case 482: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ -#line 2080 "./util/configparser.y" - { - OUTYY(("P(server_ede_serve_expired:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5086 "util/configparser.c" - break; - - case 483: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2089 "./util/configparser.y" - { - OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5098 "util/configparser.c" - break; - - case 484: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2098 "./util/configparser.y" - { - OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); -#if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0); - if(fake_dsa) - log_warn("test option fake_dsa is enabled"); -#endif - free((yyvsp[0].str)); - } -#line 5114 "util/configparser.c" - break; - - case 485: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2111 "./util/configparser.y" - { - OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); -#if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0); - if(fake_sha1) - log_warn("test option fake_sha1 is enabled"); -#endif - free((yyvsp[0].str)); - } -#line 5130 "util/configparser.c" - break; - - case 486: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2124 "./util/configparser.y" - { - OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5142 "util/configparser.c" - break; - - case 487: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2133 "./util/configparser.y" - { - OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->val_nsec3_key_iterations); - cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); - } -#line 5152 "util/configparser.c" - break; - - case 488: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2140 "./util/configparser.y" - { - OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5164 "util/configparser.c" - break; - - case 489: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2149 "./util/configparser.y" - { - OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5176 "util/configparser.c" - break; - - case 490: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2158 "./util/configparser.y" - { - OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5188 "util/configparser.c" - break; - - case 491: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2167 "./util/configparser.y" - { - OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5200 "util/configparser.c" - break; - - case 492: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2176 "./util/configparser.y" - { - OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->permit_small_holddown = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5213 "util/configparser.c" - break; - - case 493: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2185 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5224 "util/configparser.c" - break; - - case 494: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2193 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5240 "util/configparser.c" - break; - - case 495: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2206 "./util/configparser.y" - { - OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5251 "util/configparser.c" - break; - - case 496: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2214 "./util/configparser.y" - { - OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "block_a")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "always_nodata")!=0 - && strcmp((yyvsp[0].str), "always_deny")!=0 - && strcmp((yyvsp[0].str), "always_null")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0 - && strcmp((yyvsp[0].str), "ipset") != 0) { - yyerror("local-zone type: expected static, deny, " - "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny, " - "inform_redirect, always_transparent, block_a," - "always_refuse, always_nxdomain, " - "always_nodata, always_deny, always_null, " - "noview, nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_nodefault, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { - size_t len = strlen((yyvsp[-1].str)); - /* Make sure to add the trailing dot. - * These are str compared to domain names. */ - if((yyvsp[-1].str)[len-1] != '.') { - if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) { - fatal_exit("out of memory adding local-zone"); - } - (yyvsp[-1].str)[len] = '.'; - (yyvsp[-1].str)[len+1] = 0; - } - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_ipset, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#endif - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding local-zone"); - } - } -#line 5310 "util/configparser.c" - break; - - case 497: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2270 "./util/configparser.y" - { - OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) - fatal_exit("out of memory adding local-data"); - } -#line 5320 "util/configparser.c" - break; - - case 498: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2277 "./util/configparser.y" - { - char* ptr; - OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); - if(ptr) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_data, ptr)) - fatal_exit("out of memory adding local-data"); - } else { - yyerror("local-data-ptr could not be reversed"); - } - } -#line 5338 "util/configparser.c" - break; - - case 499: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2292 "./util/configparser.y" - { - OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->minimal_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5351 "util/configparser.c" - break; - - case 500: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2302 "./util/configparser.y" - { - OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->rrset_roundrobin = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5364 "util/configparser.c" - break; - - case 501: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2312 "./util/configparser.y" - { - OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5374 "util/configparser.c" - break; - - case 502: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2319 "./util/configparser.y" - { - OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5384 "util/configparser.c" - break; - - case 503: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2326 "./util/configparser.y" - { - OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dns64_prefix); - cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); - } -#line 5394 "util/configparser.c" - break; - - case 504: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2333 "./util/configparser.y" - { - OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5406 "util/configparser.c" - break; - - case 505: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2342 "./util/configparser.y" - { - OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, - (yyvsp[0].str))) - fatal_exit("out of memory adding dns64-ignore-aaaa"); - } -#line 5417 "util/configparser.c" - break; - - case 506: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2350 "./util/configparser.y" - { - char* p, *s = (yyvsp[0].str); - OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); - while((p=strsep(&s, " \t\n")) != NULL) { - if(*p) { - if(!config_add_tag(cfg_parser->cfg, p)) - yyerror("could not define-tag, " - "out of memory"); - } - } - free((yyvsp[0].str)); - } -#line 5434 "util/configparser.c" - break; - - case 507: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2364 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->local_zone_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 5458 "util/configparser.c" - break; - - case 508: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2385 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->acl_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 5482 "util/configparser.c" - break; - - case 509: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2406 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5497 "util/configparser.c" - break; - - case 510: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2418 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5512 "util/configparser.c" - break; - - case 511: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2430 "./util/configparser.y" - { - OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5527 "util/configparser.c" - break; - - case 512: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2442 "./util/configparser.y" - { - OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, - (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - } - } -#line 5539 "util/configparser.c" - break; - - case 513: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ -#line 2451 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(server_interface_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->interface_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 5563 "util/configparser.c" - break; - - case 514: /* server_interface_tag_action: VAR_INTERFACE_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2472 "./util/configparser.y" - { - OUTYY(("P(server_interface_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_actions, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5578 "util/configparser.c" - break; - - case 515: /* server_interface_tag_data: VAR_INTERFACE_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2484 "./util/configparser.y" - { - OUTYY(("P(server_interface_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->interface_tag_datas, - (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } - } -#line 5593 "util/configparser.c" - break; - - case 516: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ -#line 2496 "./util/configparser.y" - { - OUTYY(("P(server_interface_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str2list_insert(&cfg_parser->cfg->interface_view, - (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - } - } -#line 5605 "util/configparser.c" - break; - - case 517: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2505 "./util/configparser.y" - { - size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str))); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); - } - if(bitlist) { - if(!cfg_strbytelist_insert( - &cfg_parser->cfg->respip_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 5629 "util/configparser.c" - break; - - case 518: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2526 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5641 "util/configparser.c" - break; - - case 519: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2535 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5653 "util/configparser.c" - break; - - case 520: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2544 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5664 "util/configparser.c" - break; - - case 521: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2552 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5675 "util/configparser.c" - break; - - case 522: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2560 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5691 "util/configparser.c" - break; - - case 523: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2573 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5707 "util/configparser.c" - break; - - case 524: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2586 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { - yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "ratelimit-for-domain"); - } - } -#line 5725 "util/configparser.c" - break; - - case 525: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2601 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { - yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "ratelimit-below-domain"); - } - } -#line 5743 "util/configparser.c" - break; - - case 526: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2616 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5755 "util/configparser.c" - break; - - case 527: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2625 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5767 "util/configparser.c" - break; - - case 528: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2634 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_ratelimit_backoff = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5780 "util/configparser.c" - break; - - case 529: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2644 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ratelimit_backoff = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5793 "util/configparser.c" - break; - - case 530: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2654 "./util/configparser.y" - { - OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5805 "util/configparser.c" - break; - - case 531: /* server_max_sent_count: VAR_MAX_SENT_COUNT STRING_ARG */ -#line 2663 "./util/configparser.y" - { - OUTYY(("P(server_max_sent_count:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5817 "util/configparser.c" - break; - - case 532: /* server_max_query_restarts: VAR_MAX_QUERY_RESTARTS STRING_ARG */ -#line 2672 "./util/configparser.y" - { - OUTYY(("P(server_max_query_restarts:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_query_restarts = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5829 "util/configparser.c" - break; - - case 533: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2681 "./util/configparser.y" - { - OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[0].str)); - } -#line 5838 "util/configparser.c" - break; - - case 534: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2687 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) <= 0) - yyerror("number expected"); - else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5850 "util/configparser.c" - break; - - case 535: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2696 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5862 "util/configparser.c" - break; - - case 536: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2705 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5875 "util/configparser.c" - break; - - case 537: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2715 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation_strict = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5888 "util/configparser.c" - break; - - case 538: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2725 "./util/configparser.y" - { - OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->pad_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5901 "util/configparser.c" - break; - - case 539: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2735 "./util/configparser.y" - { - OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5913 "util/configparser.c" - break; - - case 540: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2744 "./util/configparser.y" - { - OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->pad_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5926 "util/configparser.c" - break; - - case 541: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2754 "./util/configparser.y" - { - OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5938 "util/configparser.c" - break; - - case 542: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2763 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 5954 "util/configparser.c" - break; - - case 543: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2776 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 5970 "util/configparser.c" - break; - - case 544: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2789 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ipsecmod_hook); - cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5985 "util/configparser.c" - break; - - case 545: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2801 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6002 "util/configparser.c" - break; - - case 546: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2815 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) - yyerror("out of memory"); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6017 "util/configparser.c" - break; - - case 547: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2827 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6034 "util/configparser.c" - break; - - case 548: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2841 "./util/configparser.y" - { - OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "edns-client-string"); - } -#line 6046 "util/configparser.c" - break; - - case 549: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2850 "./util/configparser.y" - { - OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("option code expected"); - else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) - yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 6060 "util/configparser.c" - break; - - case 550: /* server_ede: VAR_EDE STRING_ARG */ -#line 2861 "./util/configparser.y" - { - OUTYY(("P(server_ede:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6072 "util/configparser.c" - break; - - case 551: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2870 "./util/configparser.y" - { - OUTYY(("P(server_proxy_protocol_port:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->proxy_protocol_port, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6082 "util/configparser.c" - break; - - case 552: /* stub_name: VAR_NAME STRING_ARG */ -#line 2877 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->stubs->name) - yyerror("stub name override, there must be one name " - "for one stub-zone"); - free(cfg_parser->cfg->stubs->name); - cfg_parser->cfg->stubs->name = (yyvsp[0].str); - } -#line 6095 "util/configparser.c" - break; - - case 553: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2887 "./util/configparser.y" - { - OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6105 "util/configparser.c" - break; - - case 554: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2894 "./util/configparser.y" - { - OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6115 "util/configparser.c" - break; - - case 555: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2901 "./util/configparser.y" - { - OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6127 "util/configparser.c" - break; - - case 556: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2910 "./util/configparser.y" - { - OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6139 "util/configparser.c" - break; - - case 557: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2919 "./util/configparser.y" - { - OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6152 "util/configparser.c" - break; - - case 558: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2929 "./util/configparser.y" - { - OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->tcp_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6165 "util/configparser.c" - break; - - case 559: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2939 "./util/configparser.y" - { - OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isprime = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6178 "util/configparser.c" - break; - - case 560: /* forward_name: VAR_NAME STRING_ARG */ -#line 2949 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->forwards->name) - yyerror("forward name override, there must be one " - "name for one forward-zone"); - free(cfg_parser->cfg->forwards->name); - cfg_parser->cfg->forwards->name = (yyvsp[0].str); - } -#line 6191 "util/configparser.c" - break; - - case 561: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2959 "./util/configparser.y" - { - OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6201 "util/configparser.c" - break; - - case 562: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2966 "./util/configparser.y" - { - OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6211 "util/configparser.c" - break; - - case 563: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2973 "./util/configparser.y" - { - OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6223 "util/configparser.c" - break; - - case 564: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2982 "./util/configparser.y" - { - OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6235 "util/configparser.c" - break; - - case 565: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2991 "./util/configparser.y" - { - OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6248 "util/configparser.c" - break; - - case 566: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 3001 "./util/configparser.y" - { - OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->tcp_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6261 "util/configparser.c" - break; - - case 567: /* auth_name: VAR_NAME STRING_ARG */ -#line 3011 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->auths->name) - yyerror("auth name override, there must be one name " - "for one auth-zone"); - free(cfg_parser->cfg->auths->name); - cfg_parser->cfg->auths->name = (yyvsp[0].str); - } -#line 6274 "util/configparser.c" - break; - - case 568: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 3021 "./util/configparser.y" - { - OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->zonefile); - cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); - } -#line 6284 "util/configparser.c" - break; - - case 569: /* auth_master: VAR_MASTER STRING_ARG */ -#line 3028 "./util/configparser.y" - { - OUTYY(("P(master:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6294 "util/configparser.c" - break; - - case 570: /* auth_url: VAR_URL STRING_ARG */ -#line 3035 "./util/configparser.y" - { - OUTYY(("P(url:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6304 "util/configparser.c" - break; - - case 571: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3042 "./util/configparser.y" - { - OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6315 "util/configparser.c" - break; - - case 572: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3050 "./util/configparser.y" - { - OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->zonemd_check = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6328 "util/configparser.c" - break; - - case 573: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3060 "./util/configparser.y" - { - OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->zonemd_reject_absence = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6341 "util/configparser.c" - break; - - case 574: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3070 "./util/configparser.y" - { - OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_downstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6354 "util/configparser.c" - break; - - case 575: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3080 "./util/configparser.y" - { - OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6367 "util/configparser.c" - break; - - case 576: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3090 "./util/configparser.y" - { - OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->fallback_enabled = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6380 "util/configparser.c" - break; - - case 577: /* view_name: VAR_NAME STRING_ARG */ -#line 3100 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->views->name) - yyerror("view name override, there must be one " - "name for one view"); - free(cfg_parser->cfg->views->name); - cfg_parser->cfg->views->name = (yyvsp[0].str); - } -#line 6393 "util/configparser.c" - break; - - case 578: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3110 "./util/configparser.y" - { - OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "always_nodata")!=0 - && strcmp((yyvsp[0].str), "always_deny")!=0 - && strcmp((yyvsp[0].str), "always_null")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0 - && strcmp((yyvsp[0].str), "ipset") != 0) { - yyerror("local-zone type: expected static, deny, " - "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny, " - "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, " - "always_nodata, always_deny, always_null, " - "noview, nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_nodefault, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { - size_t len = strlen((yyvsp[-1].str)); - /* Make sure to add the trailing dot. - * These are str compared to domain names. */ - if((yyvsp[-1].str)[len-1] != '.') { - if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) { - fatal_exit("out of memory adding local-zone"); - } - (yyvsp[-1].str)[len] = '.'; - (yyvsp[-1].str)[len+1] = 0; - } - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_ipset, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#endif - } else { - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding local-zone"); - } - } -#line 6452 "util/configparser.c" - break; - - case 579: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3166 "./util/configparser.y" - { - OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding per-view " - "response-ip action"); - } -#line 6465 "util/configparser.c" - break; - - case 580: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3176 "./util/configparser.y" - { - OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip-data"); - } -#line 6476 "util/configparser.c" - break; - - case 581: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3184 "./util/configparser.y" - { - OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { - fatal_exit("out of memory adding local-data"); - } - } -#line 6487 "util/configparser.c" - break; - - case 582: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3192 "./util/configparser.y" - { - char* ptr; - OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); - if(ptr) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_data, ptr)) - fatal_exit("out of memory adding local-data"); - } else { - yyerror("local-data-ptr could not be reversed"); - } - } -#line 6505 "util/configparser.c" - break; - - case 583: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3207 "./util/configparser.y" - { - OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6517 "util/configparser.c" - break; - - case 584: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3216 "./util/configparser.y" - { - OUTYY(("\nP(remote-control:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 6526 "util/configparser.c" - break; - - case 595: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3228 "./util/configparser.y" - { - OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_enable = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6539 "util/configparser.c" - break; - - case 596: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3238 "./util/configparser.y" - { - OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("control port number expected"); - else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 6551 "util/configparser.c" - break; - - case 597: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3247 "./util/configparser.y" - { - OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6561 "util/configparser.c" - break; - - case 598: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3254 "./util/configparser.y" - { - OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6571 "util/configparser.c" - break; - - case 599: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3261 "./util/configparser.y" - { - OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->server_key_file); - cfg_parser->cfg->server_key_file = (yyvsp[0].str); - } -#line 6581 "util/configparser.c" - break; - - case 600: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3268 "./util/configparser.y" - { - OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->server_cert_file); - cfg_parser->cfg->server_cert_file = (yyvsp[0].str); - } -#line 6591 "util/configparser.c" - break; - - case 601: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3275 "./util/configparser.y" - { - OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->control_key_file); - cfg_parser->cfg->control_key_file = (yyvsp[0].str); - } -#line 6601 "util/configparser.c" - break; - - case 602: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3282 "./util/configparser.y" - { - OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->control_cert_file); - cfg_parser->cfg->control_cert_file = (yyvsp[0].str); - } -#line 6611 "util/configparser.c" - break; - - case 603: /* dtstart: VAR_DNSTAP */ -#line 3289 "./util/configparser.y" - { - OUTYY(("\nP(dnstap:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 6620 "util/configparser.c" - break; - - case 625: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3310 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6632 "util/configparser.c" - break; - - case 626: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3319 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_bidirectional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6645 "util/configparser.c" - break; - - case 627: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3329 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_socket_path); - cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); - } -#line 6655 "util/configparser.c" - break; - - case 628: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3336 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_ip); - cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); - } -#line 6665 "util/configparser.c" - break; - - case 629: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3343 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6677 "util/configparser.c" - break; - - case 630: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3352 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_server_name); - cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); - } -#line 6687 "util/configparser.c" - break; - - case 631: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3359 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_cert_bundle); - cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); - } -#line 6697 "util/configparser.c" - break; - - case 632: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3366 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_client_key_file); - cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); - } -#line 6707 "util/configparser.c" - break; - - case 633: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3373 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_client_cert_file); - cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); - } -#line 6717 "util/configparser.c" - break; - - case 634: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3380 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6729 "util/configparser.c" - break; - - case 635: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3389 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6741 "util/configparser.c" - break; - - case 636: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3398 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_identity); - cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); - } -#line 6751 "util/configparser.c" - break; - - case 637: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3405 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_version); - cfg_parser->cfg->dnstap_version = (yyvsp[0].str); - } -#line 6761 "util/configparser.c" - break; - - case 638: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3412 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_resolver_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6774 "util/configparser.c" - break; - - case 639: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3422 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_resolver_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6787 "util/configparser.c" - break; - - case 640: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3432 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6800 "util/configparser.c" - break; - - case 641: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3442 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6813 "util/configparser.c" - break; - - case 642: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3452 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6826 "util/configparser.c" - break; - - case 643: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3462 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6839 "util/configparser.c" - break; - - case 644: /* pythonstart: VAR_PYTHON */ -#line 3472 "./util/configparser.y" - { - OUTYY(("\nP(python:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 6848 "util/configparser.c" - break; - - case 648: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3482 "./util/configparser.y" - { - OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6858 "util/configparser.c" - break; - - case 649: /* dynlibstart: VAR_DYNLIB */ -#line 3488 "./util/configparser.y" - { - OUTYY(("\nP(dynlib:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 6867 "util/configparser.c" - break; - - case 653: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3498 "./util/configparser.y" - { - OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6877 "util/configparser.c" - break; - - case 654: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3504 "./util/configparser.y" - { - OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); - if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->disable_dnssec_lame_check = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6890 "util/configparser.c" - break; - - case 655: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3514 "./util/configparser.y" - { - OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->log_identity); - cfg_parser->cfg->log_identity = (yyvsp[0].str); - } -#line 6900 "util/configparser.c" - break; - - case 656: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3521 "./util/configparser.y" - { - OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); - if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip"); - } -#line 6912 "util/configparser.c" - break; - - case 657: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3530 "./util/configparser.y" - { - OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); - if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip-data"); - } -#line 6923 "util/configparser.c" - break; - - case 658: /* dnscstart: VAR_DNSCRYPT */ -#line 3538 "./util/configparser.y" - { - OUTYY(("\nP(dnscrypt:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 6932 "util/configparser.c" - break; - - case 671: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3555 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6944 "util/configparser.c" - break; - - case 672: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3565 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 6956 "util/configparser.c" - break; - - case 673: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3574 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnscrypt_provider); - cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); - } -#line 6966 "util/configparser.c" - break; - - case 674: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3581 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-provider-cert"); - } -#line 6978 "util/configparser.c" - break; - - case 675: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3590 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); - } -#line 6988 "util/configparser.c" - break; - - case 676: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3597 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-secret-key"); - } -#line 7000 "util/configparser.c" - break; - - case 677: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3606 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 7011 "util/configparser.c" - break; - - case 678: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3614 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 7027 "util/configparser.c" - break; - - case 679: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3627 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 7038 "util/configparser.c" - break; - - case 680: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3635 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) { - yyerror("number expected"); - } else { - cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 7054 "util/configparser.c" - break; - - case 681: /* cachedbstart: VAR_CACHEDB */ -#line 3648 "./util/configparser.y" - { - OUTYY(("\nP(cachedb:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 7063 "util/configparser.c" - break; - - case 692: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3660 "./util/configparser.y" - { - #ifdef USE_CACHEDB - OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->cachedb_backend); - cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7078 "util/configparser.c" - break; - - case 693: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3672 "./util/configparser.y" - { - #ifdef USE_CACHEDB - OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->cachedb_secret); - cfg_parser->cfg->cachedb_secret = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7093 "util/configparser.c" - break; - - case 694: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3684 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->redis_server_host); - cfg_parser->cfg->redis_server_host = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7108 "util/configparser.c" - break; - - case 695: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3696 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - int port; - OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); - port = atoi((yyvsp[0].str)); - if(port == 0 || port < 0 || port > 65535) - yyerror("valid redis server port number expected"); - else cfg_parser->cfg->redis_server_port = port; - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 7126 "util/configparser.c" - break; - - case 696: /* redis_server_path: VAR_CACHEDB_REDISPATH STRING_ARG */ -#line 3711 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_path:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->redis_server_path); - cfg_parser->cfg->redis_server_path = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7141 "util/configparser.c" - break; - - case 697: /* redis_server_password: VAR_CACHEDB_REDISPASSWORD STRING_ARG */ -#line 3723 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_password:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->redis_server_password); - cfg_parser->cfg->redis_server_password = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7156 "util/configparser.c" - break; - - case 698: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3735 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("redis timeout value expected"); - else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 7172 "util/configparser.c" - break; - - case 699: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3748 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 7188 "util/configparser.c" - break; - - case 700: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3761 "./util/configparser.y" - { - OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if (atoi((yyvsp[0].str)) < 0) - yyerror("positive number expected"); - else { - if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding tcp connection limit"); - } - } -#line 7202 "util/configparser.c" - break; - - case 701: /* ipsetstart: VAR_IPSET */ -#line 3772 "./util/configparser.y" - { - OUTYY(("\nP(ipset:)\n")); - cfg_parser->started_toplevel = 1; - } -#line 7211 "util/configparser.c" - break; - - case 706: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3782 "./util/configparser.y" - { - #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->ipset_name_v4) - yyerror("ipset name v4 override, there must be one " - "name for ip v4"); - free(cfg_parser->cfg->ipset_name_v4); - cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7229 "util/configparser.c" - break; - - case 707: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3797 "./util/configparser.y" - { - #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->ipset_name_v6) - yyerror("ipset name v6 override, there must be one " - "name for ip v6"); - free(cfg_parser->cfg->ipset_name_v6); - cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 7247 "util/configparser.c" - break; - - -#line 7251 "util/configparser.c" - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; - yyerror (YY_("syntax error")); - } - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - ++yynerrs; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - /* Pop stack until we find a state that shifts the error token. */ - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYSYMBOL_YYerror; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - YY_ACCESSING_SYMBOL (yystate), yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturnlab; - - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturnlab; - - -/*-----------------------------------------------------------. -| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | -`-----------------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - goto yyreturnlab; - - -/*----------------------------------------------------------. -| yyreturnlab -- parsing is finished, clean up and return. | -`----------------------------------------------------------*/ -yyreturnlab: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - - return yyresult; -} - -#line 3811 "./util/configparser.y" - - -/* parse helper routines could be here */ -static void -validate_respip_action(const char* action) -{ - if(strcmp(action, "deny")!=0 && - strcmp(action, "redirect")!=0 && - strcmp(action, "inform")!=0 && - strcmp(action, "inform_deny")!=0 && - strcmp(action, "always_transparent")!=0 && - strcmp(action, "always_refuse")!=0 && - strcmp(action, "always_nxdomain")!=0) - { - yyerror("response-ip action: expected deny, redirect, " - "inform, inform_deny, always_transparent, " - "always_refuse or always_nxdomain"); - } -} - -static void -validate_acl_action(const char* action) -{ - if(strcmp(action, "deny")!=0 && - strcmp(action, "refuse")!=0 && - strcmp(action, "deny_non_local")!=0 && - strcmp(action, "refuse_non_local")!=0 && - strcmp(action, "allow_setrd")!=0 && - strcmp(action, "allow")!=0 && - strcmp(action, "allow_snoop")!=0) - { - yyerror("expected deny, refuse, deny_non_local, " - "refuse_non_local, allow, allow_setrd or " - "allow_snoop as access control action"); - } -} diff --git a/util/configparser.h b/util/configparser.h deleted file mode 100644 index 1ce85380b..000000000 --- a/util/configparser.h +++ /dev/null @@ -1,763 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.8.2. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_VAL_MAX_RESTART = 373, /* VAR_VAL_MAX_RESTART */ - VAR_CACHE_MIN_TTL = 374, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 375, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 377, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 378, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 379, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 380, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 381, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 382, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 383, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 384, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 385, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 387, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 388, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 389, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 390, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 391, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 392, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 394, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 395, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 396, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 397, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ - VAR_STUB_TCP_UPSTREAM = 401, /* VAR_STUB_TCP_UPSTREAM */ - VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM */ - VAR_HTTPS_PORT = 403, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 404, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 405, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 408, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 410, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 411, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 412, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 413, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 414, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 415, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 416, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 417, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_CACHE_MAX_RTT = 419, /* VAR_INFRA_CACHE_MAX_RTT */ - VAR_INFRA_KEEP_PROBING = 420, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 421, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 422, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 423, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 424, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 425, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 426, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 427, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 428, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 429, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 430, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 432, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 433, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 434, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 435, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 436, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 437, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 441, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 443, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 444, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 445, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 446, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 447, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 448, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 449, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 450, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 451, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 452, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 453, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 454, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 455, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 456, /* VAR_RATELIMIT_SIZE */ - VAR_OUTBOUND_MSG_RETRY = 457, /* VAR_OUTBOUND_MSG_RETRY */ - VAR_MAX_SENT_COUNT = 458, /* VAR_MAX_SENT_COUNT */ - VAR_MAX_QUERY_RESTARTS = 459, /* VAR_MAX_QUERY_RESTARTS */ - VAR_RATELIMIT_FOR_DOMAIN = 460, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 461, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 462, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 463, /* VAR_RATELIMIT_FACTOR */ - VAR_IP_RATELIMIT_BACKOFF = 464, /* VAR_IP_RATELIMIT_BACKOFF */ - VAR_RATELIMIT_BACKOFF = 465, /* VAR_RATELIMIT_BACKOFF */ - VAR_SEND_CLIENT_SUBNET = 466, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 467, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 468, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 469, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 470, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 471, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 472, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 473, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 474, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 475, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 476, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 477, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 478, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 479, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 480, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 481, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 482, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 483, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 484, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 485, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 486, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 487, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 488, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 489, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 490, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 491, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 492, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 493, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 494, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 495, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_EDE_SERVE_EXPIRED = 496, /* VAR_EDE_SERVE_EXPIRED */ - VAR_SERVE_ORIGINAL_TTL = 497, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 498, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 499, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 500, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 501, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 502, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 503, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 504, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 505, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 506, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 507, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 508, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 509, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 510, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 511, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 512, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 513, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 514, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 515, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 516, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 517, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 518, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 519, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 520, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 521, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 522, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 523, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 524, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 525, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 526, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 527, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 528, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 529, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 530, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 531, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 532, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 533, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 534, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 535, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 536, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 537, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_CACHEDB_REDISPATH = 538, /* VAR_CACHEDB_REDISPATH */ - VAR_CACHEDB_REDISPASSWORD = 539, /* VAR_CACHEDB_REDISPASSWORD */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 540, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 541, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 542, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 543, /* VAR_ZONEFILE */ - VAR_MASTER = 544, /* VAR_MASTER */ - VAR_URL = 545, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 546, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 547, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 548, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 549, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 550, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 551, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 552, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 553, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 554, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 555, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 556, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 557, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 558, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 559, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 560, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 561, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 562, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 563, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 564, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 565, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 566, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 567, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 568, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 569, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 570, /* VAR_RPZ */ - VAR_TAGS = 571, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 572, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 573, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 574, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 575, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 576, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 577, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 578, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 579, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 580, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 581, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 582, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 583, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 584, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - VAR_INTERFACE_AUTOMATIC_PORTS = 585, /* VAR_INTERFACE_AUTOMATIC_PORTS */ - VAR_EDE = 586, /* VAR_EDE */ - VAR_INTERFACE_ACTION = 587, /* VAR_INTERFACE_ACTION */ - VAR_INTERFACE_VIEW = 588, /* VAR_INTERFACE_VIEW */ - VAR_INTERFACE_TAG = 589, /* VAR_INTERFACE_TAG */ - VAR_INTERFACE_TAG_ACTION = 590, /* VAR_INTERFACE_TAG_ACTION */ - VAR_INTERFACE_TAG_DATA = 591, /* VAR_INTERFACE_TAG_DATA */ - VAR_PROXY_PROTOCOL_PORT = 592, /* VAR_PROXY_PROTOCOL_PORT */ - VAR_STATISTICS_INHIBIT_ZERO = 593, /* VAR_STATISTICS_INHIBIT_ZERO */ - VAR_HARDEN_UNKNOWN_ADDITIONAL = 594 /* VAR_HARDEN_UNKNOWN_ADDITIONAL */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEMPTY -2 -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_FORCE_TOPLEVEL 266 -#define VAR_SERVER 267 -#define VAR_VERBOSITY 268 -#define VAR_NUM_THREADS 269 -#define VAR_PORT 270 -#define VAR_OUTGOING_RANGE 271 -#define VAR_INTERFACE 272 -#define VAR_PREFER_IP4 273 -#define VAR_DO_IP4 274 -#define VAR_DO_IP6 275 -#define VAR_PREFER_IP6 276 -#define VAR_DO_UDP 277 -#define VAR_DO_TCP 278 -#define VAR_TCP_MSS 279 -#define VAR_OUTGOING_TCP_MSS 280 -#define VAR_TCP_IDLE_TIMEOUT 281 -#define VAR_EDNS_TCP_KEEPALIVE 282 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 -#define VAR_CHROOT 284 -#define VAR_USERNAME 285 -#define VAR_DIRECTORY 286 -#define VAR_LOGFILE 287 -#define VAR_PIDFILE 288 -#define VAR_MSG_CACHE_SIZE 289 -#define VAR_MSG_CACHE_SLABS 290 -#define VAR_NUM_QUERIES_PER_THREAD 291 -#define VAR_RRSET_CACHE_SIZE 292 -#define VAR_RRSET_CACHE_SLABS 293 -#define VAR_OUTGOING_NUM_TCP 294 -#define VAR_INFRA_HOST_TTL 295 -#define VAR_INFRA_LAME_TTL 296 -#define VAR_INFRA_CACHE_SLABS 297 -#define VAR_INFRA_CACHE_NUMHOSTS 298 -#define VAR_INFRA_CACHE_LAME_SIZE 299 -#define VAR_NAME 300 -#define VAR_STUB_ZONE 301 -#define VAR_STUB_HOST 302 -#define VAR_STUB_ADDR 303 -#define VAR_TARGET_FETCH_POLICY 304 -#define VAR_HARDEN_SHORT_BUFSIZE 305 -#define VAR_HARDEN_LARGE_QUERIES 306 -#define VAR_FORWARD_ZONE 307 -#define VAR_FORWARD_HOST 308 -#define VAR_FORWARD_ADDR 309 -#define VAR_DO_NOT_QUERY_ADDRESS 310 -#define VAR_HIDE_IDENTITY 311 -#define VAR_HIDE_VERSION 312 -#define VAR_IDENTITY 313 -#define VAR_VERSION 314 -#define VAR_HARDEN_GLUE 315 -#define VAR_MODULE_CONF 316 -#define VAR_TRUST_ANCHOR_FILE 317 -#define VAR_TRUST_ANCHOR 318 -#define VAR_VAL_OVERRIDE_DATE 319 -#define VAR_BOGUS_TTL 320 -#define VAR_VAL_CLEAN_ADDITIONAL 321 -#define VAR_VAL_PERMISSIVE_MODE 322 -#define VAR_INCOMING_NUM_TCP 323 -#define VAR_MSG_BUFFER_SIZE 324 -#define VAR_KEY_CACHE_SIZE 325 -#define VAR_KEY_CACHE_SLABS 326 -#define VAR_TRUSTED_KEYS_FILE 327 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 -#define VAR_USE_SYSLOG 329 -#define VAR_OUTGOING_INTERFACE 330 -#define VAR_ROOT_HINTS 331 -#define VAR_DO_NOT_QUERY_LOCALHOST 332 -#define VAR_CACHE_MAX_TTL 333 -#define VAR_HARDEN_DNSSEC_STRIPPED 334 -#define VAR_ACCESS_CONTROL 335 -#define VAR_LOCAL_ZONE 336 -#define VAR_LOCAL_DATA 337 -#define VAR_INTERFACE_AUTOMATIC 338 -#define VAR_STATISTICS_INTERVAL 339 -#define VAR_DO_DAEMONIZE 340 -#define VAR_USE_CAPS_FOR_ID 341 -#define VAR_STATISTICS_CUMULATIVE 342 -#define VAR_OUTGOING_PORT_PERMIT 343 -#define VAR_OUTGOING_PORT_AVOID 344 -#define VAR_DLV_ANCHOR_FILE 345 -#define VAR_DLV_ANCHOR 346 -#define VAR_NEG_CACHE_SIZE 347 -#define VAR_HARDEN_REFERRAL_PATH 348 -#define VAR_PRIVATE_ADDRESS 349 -#define VAR_PRIVATE_DOMAIN 350 -#define VAR_REMOTE_CONTROL 351 -#define VAR_CONTROL_ENABLE 352 -#define VAR_CONTROL_INTERFACE 353 -#define VAR_CONTROL_PORT 354 -#define VAR_SERVER_KEY_FILE 355 -#define VAR_SERVER_CERT_FILE 356 -#define VAR_CONTROL_KEY_FILE 357 -#define VAR_CONTROL_CERT_FILE 358 -#define VAR_CONTROL_USE_CERT 359 -#define VAR_TCP_REUSE_TIMEOUT 360 -#define VAR_MAX_REUSE_TCP_QUERIES 361 -#define VAR_EXTENDED_STATISTICS 362 -#define VAR_LOCAL_DATA_PTR 363 -#define VAR_JOSTLE_TIMEOUT 364 -#define VAR_STUB_PRIME 365 -#define VAR_UNWANTED_REPLY_THRESHOLD 366 -#define VAR_LOG_TIME_ASCII 367 -#define VAR_DOMAIN_INSECURE 368 -#define VAR_PYTHON 369 -#define VAR_PYTHON_SCRIPT 370 -#define VAR_VAL_SIG_SKEW_MIN 371 -#define VAR_VAL_SIG_SKEW_MAX 372 -#define VAR_VAL_MAX_RESTART 373 -#define VAR_CACHE_MIN_TTL 374 -#define VAR_VAL_LOG_LEVEL 375 -#define VAR_AUTO_TRUST_ANCHOR_FILE 376 -#define VAR_KEEP_MISSING 377 -#define VAR_ADD_HOLDDOWN 378 -#define VAR_DEL_HOLDDOWN 379 -#define VAR_SO_RCVBUF 380 -#define VAR_EDNS_BUFFER_SIZE 381 -#define VAR_PREFETCH 382 -#define VAR_PREFETCH_KEY 383 -#define VAR_SO_SNDBUF 384 -#define VAR_SO_REUSEPORT 385 -#define VAR_HARDEN_BELOW_NXDOMAIN 386 -#define VAR_IGNORE_CD_FLAG 387 -#define VAR_LOG_QUERIES 388 -#define VAR_LOG_REPLIES 389 -#define VAR_LOG_LOCAL_ACTIONS 390 -#define VAR_TCP_UPSTREAM 391 -#define VAR_SSL_UPSTREAM 392 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 393 -#define VAR_SSL_SERVICE_KEY 394 -#define VAR_SSL_SERVICE_PEM 395 -#define VAR_SSL_PORT 396 -#define VAR_FORWARD_FIRST 397 -#define VAR_STUB_SSL_UPSTREAM 398 -#define VAR_FORWARD_SSL_UPSTREAM 399 -#define VAR_TLS_CERT_BUNDLE 400 -#define VAR_STUB_TCP_UPSTREAM 401 -#define VAR_FORWARD_TCP_UPSTREAM 402 -#define VAR_HTTPS_PORT 403 -#define VAR_HTTP_ENDPOINT 404 -#define VAR_HTTP_MAX_STREAMS 405 -#define VAR_HTTP_QUERY_BUFFER_SIZE 406 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407 -#define VAR_HTTP_NODELAY 408 -#define VAR_HTTP_NOTLS_DOWNSTREAM 409 -#define VAR_STUB_FIRST 410 -#define VAR_MINIMAL_RESPONSES 411 -#define VAR_RRSET_ROUNDROBIN 412 -#define VAR_MAX_UDP_SIZE 413 -#define VAR_DELAY_CLOSE 414 -#define VAR_UDP_CONNECT 415 -#define VAR_UNBLOCK_LAN_ZONES 416 -#define VAR_INSECURE_LAN_ZONES 417 -#define VAR_INFRA_CACHE_MIN_RTT 418 -#define VAR_INFRA_CACHE_MAX_RTT 419 -#define VAR_INFRA_KEEP_PROBING 420 -#define VAR_DNS64_PREFIX 421 -#define VAR_DNS64_SYNTHALL 422 -#define VAR_DNS64_IGNORE_AAAA 423 -#define VAR_DNSTAP 424 -#define VAR_DNSTAP_ENABLE 425 -#define VAR_DNSTAP_SOCKET_PATH 426 -#define VAR_DNSTAP_IP 427 -#define VAR_DNSTAP_TLS 428 -#define VAR_DNSTAP_TLS_SERVER_NAME 429 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 430 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 431 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 432 -#define VAR_DNSTAP_SEND_IDENTITY 433 -#define VAR_DNSTAP_SEND_VERSION 434 -#define VAR_DNSTAP_BIDIRECTIONAL 435 -#define VAR_DNSTAP_IDENTITY 436 -#define VAR_DNSTAP_VERSION 437 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 438 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 439 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 440 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 441 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 442 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 443 -#define VAR_RESPONSE_IP_TAG 444 -#define VAR_RESPONSE_IP 445 -#define VAR_RESPONSE_IP_DATA 446 -#define VAR_HARDEN_ALGO_DOWNGRADE 447 -#define VAR_IP_TRANSPARENT 448 -#define VAR_IP_DSCP 449 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 450 -#define VAR_IP_RATELIMIT 451 -#define VAR_IP_RATELIMIT_SLABS 452 -#define VAR_IP_RATELIMIT_SIZE 453 -#define VAR_RATELIMIT 454 -#define VAR_RATELIMIT_SLABS 455 -#define VAR_RATELIMIT_SIZE 456 -#define VAR_OUTBOUND_MSG_RETRY 457 -#define VAR_MAX_SENT_COUNT 458 -#define VAR_MAX_QUERY_RESTARTS 459 -#define VAR_RATELIMIT_FOR_DOMAIN 460 -#define VAR_RATELIMIT_BELOW_DOMAIN 461 -#define VAR_IP_RATELIMIT_FACTOR 462 -#define VAR_RATELIMIT_FACTOR 463 -#define VAR_IP_RATELIMIT_BACKOFF 464 -#define VAR_RATELIMIT_BACKOFF 465 -#define VAR_SEND_CLIENT_SUBNET 466 -#define VAR_CLIENT_SUBNET_ZONE 467 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 468 -#define VAR_CLIENT_SUBNET_OPCODE 469 -#define VAR_MAX_CLIENT_SUBNET_IPV4 470 -#define VAR_MAX_CLIENT_SUBNET_IPV6 471 -#define VAR_MIN_CLIENT_SUBNET_IPV4 472 -#define VAR_MIN_CLIENT_SUBNET_IPV6 473 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 474 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 475 -#define VAR_CAPS_WHITELIST 476 -#define VAR_CACHE_MAX_NEGATIVE_TTL 477 -#define VAR_PERMIT_SMALL_HOLDDOWN 478 -#define VAR_QNAME_MINIMISATION 479 -#define VAR_QNAME_MINIMISATION_STRICT 480 -#define VAR_IP_FREEBIND 481 -#define VAR_DEFINE_TAG 482 -#define VAR_LOCAL_ZONE_TAG 483 -#define VAR_ACCESS_CONTROL_TAG 484 -#define VAR_LOCAL_ZONE_OVERRIDE 485 -#define VAR_ACCESS_CONTROL_TAG_ACTION 486 -#define VAR_ACCESS_CONTROL_TAG_DATA 487 -#define VAR_VIEW 488 -#define VAR_ACCESS_CONTROL_VIEW 489 -#define VAR_VIEW_FIRST 490 -#define VAR_SERVE_EXPIRED 491 -#define VAR_SERVE_EXPIRED_TTL 492 -#define VAR_SERVE_EXPIRED_TTL_RESET 493 -#define VAR_SERVE_EXPIRED_REPLY_TTL 494 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 495 -#define VAR_EDE_SERVE_EXPIRED 496 -#define VAR_SERVE_ORIGINAL_TTL 497 -#define VAR_FAKE_DSA 498 -#define VAR_FAKE_SHA1 499 -#define VAR_LOG_IDENTITY 500 -#define VAR_HIDE_TRUSTANCHOR 501 -#define VAR_HIDE_HTTP_USER_AGENT 502 -#define VAR_HTTP_USER_AGENT 503 -#define VAR_TRUST_ANCHOR_SIGNALING 504 -#define VAR_AGGRESSIVE_NSEC 505 -#define VAR_USE_SYSTEMD 506 -#define VAR_SHM_ENABLE 507 -#define VAR_SHM_KEY 508 -#define VAR_ROOT_KEY_SENTINEL 509 -#define VAR_DNSCRYPT 510 -#define VAR_DNSCRYPT_ENABLE 511 -#define VAR_DNSCRYPT_PORT 512 -#define VAR_DNSCRYPT_PROVIDER 513 -#define VAR_DNSCRYPT_SECRET_KEY 514 -#define VAR_DNSCRYPT_PROVIDER_CERT 515 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 516 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 517 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 518 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 519 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 520 -#define VAR_PAD_RESPONSES 521 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 522 -#define VAR_PAD_QUERIES 523 -#define VAR_PAD_QUERIES_BLOCK_SIZE 524 -#define VAR_IPSECMOD_ENABLED 525 -#define VAR_IPSECMOD_HOOK 526 -#define VAR_IPSECMOD_IGNORE_BOGUS 527 -#define VAR_IPSECMOD_MAX_TTL 528 -#define VAR_IPSECMOD_WHITELIST 529 -#define VAR_IPSECMOD_STRICT 530 -#define VAR_CACHEDB 531 -#define VAR_CACHEDB_BACKEND 532 -#define VAR_CACHEDB_SECRETSEED 533 -#define VAR_CACHEDB_REDISHOST 534 -#define VAR_CACHEDB_REDISPORT 535 -#define VAR_CACHEDB_REDISTIMEOUT 536 -#define VAR_CACHEDB_REDISEXPIRERECORDS 537 -#define VAR_CACHEDB_REDISPATH 538 -#define VAR_CACHEDB_REDISPASSWORD 539 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 540 -#define VAR_FOR_UPSTREAM 541 -#define VAR_AUTH_ZONE 542 -#define VAR_ZONEFILE 543 -#define VAR_MASTER 544 -#define VAR_URL 545 -#define VAR_FOR_DOWNSTREAM 546 -#define VAR_FALLBACK_ENABLED 547 -#define VAR_TLS_ADDITIONAL_PORT 548 -#define VAR_LOW_RTT 549 -#define VAR_LOW_RTT_PERMIL 550 -#define VAR_FAST_SERVER_PERMIL 551 -#define VAR_FAST_SERVER_NUM 552 -#define VAR_ALLOW_NOTIFY 553 -#define VAR_TLS_WIN_CERT 554 -#define VAR_TCP_CONNECTION_LIMIT 555 -#define VAR_FORWARD_NO_CACHE 556 -#define VAR_STUB_NO_CACHE 557 -#define VAR_LOG_SERVFAIL 558 -#define VAR_DENY_ANY 559 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 560 -#define VAR_LOG_TAG_QUERYREPLY 561 -#define VAR_STREAM_WAIT_SIZE 562 -#define VAR_TLS_CIPHERS 563 -#define VAR_TLS_CIPHERSUITES 564 -#define VAR_TLS_USE_SNI 565 -#define VAR_IPSET 566 -#define VAR_IPSET_NAME_V4 567 -#define VAR_IPSET_NAME_V6 568 -#define VAR_TLS_SESSION_TICKET_KEYS 569 -#define VAR_RPZ 570 -#define VAR_TAGS 571 -#define VAR_RPZ_ACTION_OVERRIDE 572 -#define VAR_RPZ_CNAME_OVERRIDE 573 -#define VAR_RPZ_LOG 574 -#define VAR_RPZ_LOG_NAME 575 -#define VAR_DYNLIB 576 -#define VAR_DYNLIB_FILE 577 -#define VAR_EDNS_CLIENT_STRING 578 -#define VAR_EDNS_CLIENT_STRING_OPCODE 579 -#define VAR_NSID 580 -#define VAR_ZONEMD_PERMISSIVE_MODE 581 -#define VAR_ZONEMD_CHECK 582 -#define VAR_ZONEMD_REJECT_ABSENCE 583 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 584 -#define VAR_INTERFACE_AUTOMATIC_PORTS 585 -#define VAR_EDE 586 -#define VAR_INTERFACE_ACTION 587 -#define VAR_INTERFACE_VIEW 588 -#define VAR_INTERFACE_TAG 589 -#define VAR_INTERFACE_TAG_ACTION 590 -#define VAR_INTERFACE_TAG_DATA 591 -#define VAR_PROXY_PROTOCOL_PORT 592 -#define VAR_STATISTICS_INHIBIT_ZERO 593 -#define VAR_HARDEN_UNKNOWN_ADDITIONAL 594 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 67 "./util/configparser.y" - - char* str; - -#line 749 "util/configparser.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - - -int yyparse (void); - - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index 4011bf8c5..4f00ecc0d 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -303,7 +303,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_serve_expired | server_serve_expired_ttl | server_serve_expired_ttl_reset | server_serve_expired_reply_ttl | server_serve_expired_client_timeout | - server_ede_serve_expired | server_serve_original_ttl | server_fake_dsa | + server_ede_serve_expired | server_serve_original_ttl | server_fake_dsa | server_log_identity | server_use_systemd | server_response_ip_tag | server_response_ip | server_response_ip_data | server_shm_enable | server_shm_key | server_fake_sha1 | @@ -488,7 +488,7 @@ rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG rpzstart: VAR_RPZ { struct config_auth* s; - OUTYY(("\nP(rpz:)\n")); + OUTYY(("\nP(rpz:)\n")); cfg_parser->started_toplevel = 1; s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); if(s) { @@ -504,7 +504,7 @@ rpzstart: VAR_RPZ } } ; -contents_rpz: contents_rpz content_rpz +contents_rpz: contents_rpz content_rpz | ; content_rpz: auth_name | auth_zonefile | rpz_tag | auth_master | auth_url | auth_allow_notify | rpz_action_override | rpz_cname_override | @@ -2726,7 +2726,7 @@ server_pad_responses: VAR_PAD_RESPONSES STRING_ARG OUTYY(("P(server_pad_responses:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->pad_responses = + else cfg_parser->cfg->pad_responses = (strcmp($2, "yes")==0); free($2); } @@ -2745,7 +2745,7 @@ server_pad_queries: VAR_PAD_QUERIES STRING_ARG OUTYY(("P(server_pad_queries:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->pad_queries = + else cfg_parser->cfg->pad_queries = (strcmp($2, "yes")==0); free($2); } @@ -3485,8 +3485,8 @@ py_script: VAR_PYTHON_SCRIPT STRING_ARG yyerror("out of memory"); } dynlibstart: VAR_DYNLIB - { - OUTYY(("\nP(dynlib:)\n")); + { + OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } ; diff --git a/util/netevent.c b/util/netevent.c index fe3d51164..a98d12ccc 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -177,7 +177,7 @@ static struct comm_point* comm_point_create_tcp_handler( /* -------- End of local definitions -------- */ -struct comm_base* +struct comm_base* comm_base_create(int sigs) { struct comm_base* b = (struct comm_base*)calloc(1, @@ -220,7 +220,7 @@ comm_base_create_event(struct ub_event_base* base) return b; } -void +void comm_base_delete(struct comm_base* b) { if(!b) @@ -237,7 +237,7 @@ comm_base_delete(struct comm_base* b) free(b); } -void +void comm_base_delete_no_base(struct comm_base* b) { if(!b) @@ -253,14 +253,14 @@ comm_base_delete_no_base(struct comm_base* b) free(b); } -void +void comm_base_timept(struct comm_base* b, time_t** tt, struct timeval** tv) { *tt = &b->eb->secs; *tv = &b->eb->now; } -void +void comm_base_dispatch(struct comm_base* b) { int retval; @@ -470,7 +470,7 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, (struct sockaddr_storage*)addr, addrlen); return 0; } else if((size_t)sent != sldns_buffer_remaining(packet)) { - log_err("sent %d in place of %d bytes", + log_err("sent %d in place of %d bytes", (int)sent, (int)sldns_buffer_remaining(packet)); return 0; } @@ -489,7 +489,7 @@ static void p_ancil(const char* str, struct comm_reply* r) if(r->srctype == 6) { #ifdef IPV6_PKTINFO char buf[1024]; - if(inet_ntop(AF_INET6, &r->pktinfo.v6info.ipi6_addr, + if(inet_ntop(AF_INET6, &r->pktinfo.v6info.ipi6_addr, buf, (socklen_t)sizeof(buf)) == 0) { (void)strlcpy(buf, "(inet_ntop error)", sizeof(buf)); } @@ -499,13 +499,13 @@ static void p_ancil(const char* str, struct comm_reply* r) } else if(r->srctype == 4) { #ifdef IP_PKTINFO char buf1[1024], buf2[1024]; - if(inet_ntop(AF_INET, &r->pktinfo.v4info.ipi_addr, + if(inet_ntop(AF_INET, &r->pktinfo.v4info.ipi_addr, buf1, (socklen_t)sizeof(buf1)) == 0) { (void)strlcpy(buf1, "(inet_ntop error)", sizeof(buf1)); } buf1[sizeof(buf1)-1]=0; #ifdef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST - if(inet_ntop(AF_INET, &r->pktinfo.v4info.ipi_spec_dst, + if(inet_ntop(AF_INET, &r->pktinfo.v4info.ipi_spec_dst, buf2, (socklen_t)sizeof(buf2)) == 0) { (void)strlcpy(buf2, "(inet_ntop error)", sizeof(buf2)); } @@ -517,7 +517,7 @@ static void p_ancil(const char* str, struct comm_reply* r) buf1, buf2); #elif defined(IP_RECVDSTADDR) char buf1[1024]; - if(inet_ntop(AF_INET, &r->pktinfo.v4addr, + if(inet_ntop(AF_INET, &r->pktinfo.v4addr, buf1, (socklen_t)sizeof(buf1)) == 0) { (void)strlcpy(buf1, "(inet_ntop error)", sizeof(buf1)); } @@ -531,7 +531,7 @@ static void p_ancil(const char* str, struct comm_reply* r) /** send a UDP reply over specified interface*/ static int comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, - struct sockaddr* addr, socklen_t addrlen, struct comm_reply* r) + struct sockaddr* addr, socklen_t addrlen, struct comm_reply* r) { #if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_SENDMSG) ssize_t sent; @@ -695,7 +695,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, if(!udp_send_errno_needs_log(addr, addrlen)) return 0; verbose(VERB_OPS, "sendmsg failed: %s", strerror(errno)); - log_addr(VERB_OPS, "remote address is", + log_addr(VERB_OPS, "remote address is", (struct sockaddr_storage*)addr, addrlen); #ifdef __NetBSD__ /* netbsd 7 has IP_PKTINFO for recv but not send */ @@ -705,7 +705,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, #endif return 0; } else if((size_t)sent != sldns_buffer_remaining(packet)) { - log_err("sent %d in place of %d bytes", + log_err("sent %d in place of %d bytes", (int)sent, (int)sldns_buffer_remaining(packet)); return 0; } @@ -817,7 +817,7 @@ done: return 1; } -void +void comm_point_udp_ancil_callback(int fd, short event, void* arg) { #if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG) @@ -930,7 +930,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) #endif /* AF_INET6 && IPV6_PKTINFO && HAVE_RECVMSG */ } -void +void comm_point_udp_callback(int fd, short event, void* arg) { struct comm_reply rep; @@ -950,14 +950,14 @@ comm_point_udp_callback(int fd, short event, void* arg) rep.remote_addrlen = (socklen_t)sizeof(rep.remote_addr); log_assert(fd != -1); log_assert(sldns_buffer_remaining(rep.c->buffer) > 0); - rcv = recvfrom(fd, (void*)sldns_buffer_begin(rep.c->buffer), + rcv = recvfrom(fd, (void*)sldns_buffer_begin(rep.c->buffer), sldns_buffer_remaining(rep.c->buffer), MSG_DONTWAIT, (struct sockaddr*)&rep.remote_addr, &rep.remote_addrlen); if(rcv == -1) { #ifndef USE_WINSOCK if(errno != EAGAIN && errno != EINTR && udp_recv_needs_log(errno)) - log_err("recvfrom %d failed: %s", + log_err("recvfrom %d failed: %s", fd, strerror(errno)); #else if(WSAGetLastError() != WSAEINPROGRESS && @@ -1012,7 +1012,7 @@ int adjusted_tcp_timeout(struct comm_point* c) /** Use a new tcp handler for new query fd, set to read query */ static void -setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) +setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) { int handler_usage; log_assert(c->type == comm_tcp || c->type == comm_http); @@ -1076,10 +1076,10 @@ int comm_point_perform_accept(struct comm_point* c, /* EINTR is signal interrupt. others are closed connection. */ if( errno == EINTR || errno == EAGAIN #ifdef EWOULDBLOCK - || errno == EWOULDBLOCK + || errno == EWOULDBLOCK #endif #ifdef ECONNABORTED - || errno == ECONNABORTED + || errno == ECONNABORTED #endif #ifdef EPROTO || errno == EPROTO @@ -1253,7 +1253,7 @@ static int http2_submit_settings(struct http2_session* h2_session) #endif /* HAVE_NGHTTP2 */ -void +void comm_point_tcp_accept_callback(int fd, short event, void* arg) { struct comm_point* c = (struct comm_point*)arg, *c_hdl; @@ -2161,7 +2161,7 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) log_err("in comm_point_tcp_handle_read buffer_remaining is " "not > 0 as expected, continuing with (harmless) 0 " "length recv"); - r = recv(fd, (void*)sldns_buffer_current(c->buffer), + r = recv(fd, (void*)sldns_buffer_current(c->buffer), sldns_buffer_remaining(c->buffer), MSG_DONTWAIT); if(r == 0) { if(c->tcp_req_info) @@ -2252,8 +2252,8 @@ recv_error: return 0; } -/** - * Handle tcp writing callback. +/** + * Handle tcp writing callback. * @param fd: file descriptor of socket. * @param c: comm point to write buffer out of. * @return: 0 on error @@ -2277,7 +2277,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) /* from Stevens, unix network programming, vol1, 3rd ed, p450*/ int error = 0; socklen_t len = (socklen_t)sizeof(error); - if(getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&error, + if(getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len) < 0){ #ifndef USE_WINSOCK error = errno; /* on solaris errno is error */ @@ -2318,7 +2318,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) return ssl_handle_it(c, 1); #ifdef USE_MSG_FASTOPEN - /* Only try this on first use of a connection that uses tfo, + /* Only try this on first use of a connection that uses tfo, otherwise fall through to normal write */ /* Also, TFO support on WINDOWS not implemented at the moment */ if(c->tcp_do_fastopen == 1) { @@ -2473,7 +2473,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(WSAGetLastError() == WSAEWOULDBLOCK) { ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); - return 1; + return 1; } if(WSAGetLastError() == WSAECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ @@ -2522,7 +2522,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) return 1; if(WSAGetLastError() == WSAEWOULDBLOCK) { ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); - return 1; + return 1; } if(WSAGetLastError() == WSAECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ @@ -2541,7 +2541,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) { tcp_callback_writer(c); } - + return 1; } @@ -2561,7 +2561,7 @@ tcp_req_info_read_again(int fd, struct comm_point* c) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } return 0; @@ -2618,7 +2618,7 @@ tcp_more_write_again(int fd, struct comm_point* c) } } -void +void comm_point_tcp_handle_callback(int fd, short event, void* arg) { struct comm_point* c = (struct comm_point*)arg; @@ -2783,7 +2783,7 @@ http_read_more(int fd, struct comm_point* c) { ssize_t r; log_assert(sldns_buffer_remaining(c->buffer) > 0); - r = recv(fd, (void*)sldns_buffer_current(c->buffer), + r = recv(fd, (void*)sldns_buffer_current(c->buffer), sldns_buffer_remaining(c->buffer), MSG_DONTWAIT); if(r == 0) { return 0; @@ -3052,7 +3052,7 @@ http_chunked_segment(struct comm_point* c) /* return and wait to read more */ return 1; } - + /* callback of http reader for a new part of the data */ c->http_stored = 0; sldns_buffer_set_position(c->buffer, 0); @@ -3402,7 +3402,7 @@ http_check_connect(int fd, struct comm_point* c) /* from Stevens, unix network programming, vol1, 3rd ed, p450*/ int error = 0; socklen_t len = (socklen_t)sizeof(error); - if(getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&error, + if(getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len) < 0){ #ifndef USE_WINSOCK error = errno; /* on solaris errno is error */ @@ -3487,7 +3487,7 @@ http_write_more(int fd, struct comm_point* c) { ssize_t r; log_assert(sldns_buffer_remaining(c->buffer) > 0); - r = send(fd, (void*)sldns_buffer_current(c->buffer), + r = send(fd, (void*)sldns_buffer_current(c->buffer), sldns_buffer_remaining(c->buffer), 0); if(r == -1) { #ifndef USE_WINSOCK @@ -3498,7 +3498,7 @@ http_write_more(int fd, struct comm_point* c) return 1; if(WSAGetLastError() == WSAEWOULDBLOCK) { ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); - return 1; + return 1; } #endif log_err_addr("http send r", sock_strerror(errno), @@ -3619,8 +3619,8 @@ comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c) #endif } -/** - * Handle http writing callback. +/** + * Handle http writing callback. * @param fd: file descriptor of socket. * @param c: comm point to write buffer out of. * @return: 0 on error @@ -3686,7 +3686,7 @@ comm_point_http_handle_write(int fd, struct comm_point* c) return 1; } -void +void comm_point_http_handle_callback(int fd, short event, void* arg) { struct comm_point* c = (struct comm_point*)arg; @@ -3739,7 +3739,7 @@ void comm_point_local_handle_callback(int fd, short event, void* arg) if(event&UB_EV_READ) { if(!comm_point_tcp_handle_read(fd, c, 1)) { fptr_ok(fptr_whitelist_comm_point(c->callback)); - (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } return; @@ -3747,21 +3747,21 @@ void comm_point_local_handle_callback(int fd, short event, void* arg) log_err("Ignored event %d for localhdl.", event); } -void comm_point_raw_handle_callback(int ATTR_UNUSED(fd), +void comm_point_raw_handle_callback(int ATTR_UNUSED(fd), short event, void* arg) { struct comm_point* c = (struct comm_point*)arg; int err = NETEVENT_NOERROR; log_assert(c->type == comm_raw); ub_comm_base_now(c->ev->base); - + if(event&UB_EV_TIMEOUT) err = NETEVENT_TIMEOUT; fptr_ok(fptr_whitelist_comm_point_raw(c->callback)); (void)(*c->callback)(c, c->cb_arg, err, NULL); } -struct comm_point* +struct comm_point* comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, int pp2_enabled, comm_point_callback_type* callback, void* callback_arg, struct unbound_socket* socket) @@ -3824,7 +3824,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, return c; } -struct comm_point* +struct comm_point* comm_point_create_udp_ancil(struct comm_base *base, int fd, sldns_buffer* buffer, int pp2_enabled, comm_point_callback_type* callback, void* callback_arg, struct unbound_socket* socket) @@ -3887,8 +3887,8 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd, return c; } -static struct comm_point* -comm_point_create_tcp_handler(struct comm_base *base, +static struct comm_point* +comm_point_create_tcp_handler(struct comm_base *base, struct comm_point* parent, size_t bufsize, struct sldns_buffer* spoolbuf, comm_point_callback_type* callback, void* callback_arg, struct unbound_socket* socket) @@ -3985,8 +3985,8 @@ comm_point_create_tcp_handler(struct comm_base *base, return c; } -static struct comm_point* -comm_point_create_http_handler(struct comm_base *base, +static struct comm_point* +comm_point_create_http_handler(struct comm_base *base, struct comm_point* parent, size_t bufsize, int harden_large_queries, uint32_t http_max_streams, char* http_endpoint, comm_point_callback_type* callback, void* callback_arg, @@ -4083,7 +4083,7 @@ comm_point_create_http_handler(struct comm_base *base, return NULL; } #endif - + /* add to parent free list */ c->tcp_free = parent->tcp_free; parent->tcp_free = c; @@ -4105,7 +4105,7 @@ comm_point_create_http_handler(struct comm_base *base, return c; } -struct comm_point* +struct comm_point* comm_point_create_tcp(struct comm_base *base, int fd, int num, int idle_timeout, int harden_large_queries, uint32_t http_max_streams, char* http_endpoint, @@ -4203,11 +4203,11 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, return NULL; } } - + return c; } -struct comm_point* +struct comm_point* comm_point_create_tcp_out(struct comm_base *base, size_t bufsize, comm_point_callback_type* callback, void* callback_arg) { @@ -4274,7 +4274,7 @@ comm_point_create_tcp_out(struct comm_base *base, size_t bufsize, return c; } -struct comm_point* +struct comm_point* comm_point_create_http_out(struct comm_base *base, size_t bufsize, comm_point_callback_type* callback, void* callback_arg, sldns_buffer* temp) @@ -4345,7 +4345,7 @@ comm_point_create_http_out(struct comm_base *base, size_t bufsize, return c; } -struct comm_point* +struct comm_point* comm_point_create_local(struct comm_base *base, int fd, size_t bufsize, comm_point_callback_type* callback, void* callback_arg) { @@ -4413,8 +4413,8 @@ comm_point_create_local(struct comm_base *base, int fd, size_t bufsize, return c; } -struct comm_point* -comm_point_create_raw(struct comm_base* base, int fd, int writing, +struct comm_point* +comm_point_create_raw(struct comm_base* base, int fd, int writing, comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, @@ -4478,7 +4478,7 @@ comm_point_create_raw(struct comm_base* base, int fd, int writing, return c; } -void +void comm_point_close(struct comm_point* c) { if(!c) @@ -4518,10 +4518,10 @@ comm_point_close(struct comm_point* c) c->fd = -1; } -void +void comm_point_delete(struct comm_point* c) { - if(!c) + if(!c) return; if((c->type == comm_tcp || c->type == comm_http) && c->ssl) { #ifdef HAVE_SSL @@ -4560,7 +4560,7 @@ comm_point_delete(struct comm_point* c) free(c); } -void +void comm_point_send_reply(struct comm_reply *repinfo) { struct sldns_buffer* buffer; @@ -4624,7 +4624,7 @@ comm_point_send_reply(struct comm_reply *repinfo) } } -void +void comm_point_drop_reply(struct comm_reply* repinfo) { if(!repinfo) @@ -4648,7 +4648,7 @@ comm_point_drop_reply(struct comm_reply* repinfo) reclaim_tcp_handler(repinfo->c); } -void +void comm_point_stop_listening(struct comm_point* c) { verbose(VERB_ALGO, "comm point stop listening %d", c->fd); @@ -4660,10 +4660,10 @@ comm_point_stop_listening(struct comm_point* c) } } -void +void comm_point_start_listening(struct comm_point* c, int newfd, int msec) { - verbose(VERB_ALGO, "comm point start listening %d (%d msec)", + verbose(VERB_ALGO, "comm point start listening %d (%d msec)", c->fd==-1?newfd:c->fd, msec); if(c->type == comm_tcp_accept && !c->tcp_free) { /* no use to start listening no free slots. */ @@ -4747,10 +4747,10 @@ void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) size_t comm_point_get_mem(struct comm_point* c) { size_t s; - if(!c) + if(!c) return 0; s = sizeof(*c) + sizeof(*c->ev); - if(c->timeout) + if(c->timeout) s += sizeof(*c->timeout); if(c->type == comm_tcp || c->type == comm_local) { s += sizeof(*c->buffer) + sldns_buffer_capacity(c->buffer); @@ -4769,7 +4769,7 @@ size_t comm_point_get_mem(struct comm_point* c) return s; } -struct comm_timer* +struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) { struct internal_timer *tm = (struct internal_timer*)calloc(1, @@ -4782,7 +4782,7 @@ comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) tm->base = base; tm->super.callback = cb; tm->super.cb_arg = cb_arg; - tm->ev = ub_event_new(base->eb->base, -1, UB_EV_TIMEOUT, + tm->ev = ub_event_new(base->eb->base, -1, UB_EV_TIMEOUT, comm_timer_callback, &tm->super); if(tm->ev == NULL) { log_err("timer_create: event_base_set failed."); @@ -4792,7 +4792,7 @@ comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) return &tm->super; } -void +void comm_timer_disable(struct comm_timer* timer) { if(!timer) @@ -4801,7 +4801,7 @@ comm_timer_disable(struct comm_timer* timer) timer->ev_timer->enabled = 0; } -void +void comm_timer_set(struct comm_timer* timer, struct timeval* tv) { log_assert(tv); @@ -4813,7 +4813,7 @@ comm_timer_set(struct comm_timer* timer, struct timeval* tv) timer->ev_timer->enabled = 1; } -void +void comm_timer_delete(struct comm_timer* timer) { if(!timer) @@ -4826,7 +4826,7 @@ comm_timer_delete(struct comm_timer* timer) free(timer->ev_timer); } -void +void comm_timer_callback(int ATTR_UNUSED(fd), short event, void* arg) { struct comm_timer* tm = (struct comm_timer*)arg; @@ -4838,19 +4838,19 @@ comm_timer_callback(int ATTR_UNUSED(fd), short event, void* arg) (*tm->callback)(tm->cb_arg); } -int +int comm_timer_is_set(struct comm_timer* timer) { return (int)timer->ev_timer->enabled; } -size_t +size_t comm_timer_get_mem(struct comm_timer* ATTR_UNUSED(timer)) { return sizeof(struct internal_timer); } -struct comm_signal* +struct comm_signal* comm_signal_create(struct comm_base* base, void (*callback)(int, void*), void* cb_arg) { @@ -4867,7 +4867,7 @@ comm_signal_create(struct comm_base* base, return com; } -void +void comm_signal_callback(int sig, short event, void* arg) { struct comm_signal* comsig = (struct comm_signal*)arg; @@ -4878,10 +4878,10 @@ comm_signal_callback(int sig, short event, void* arg) (*comsig->callback)(sig, comsig->cb_arg); } -int +int comm_signal_bind(struct comm_signal* comsig, int sig) { - struct internal_signal* entry = (struct internal_signal*)calloc(1, + struct internal_signal* entry = (struct internal_signal*)calloc(1, sizeof(struct internal_signal)); if(!entry) { log_err("malloc failed"); @@ -4908,7 +4908,7 @@ comm_signal_bind(struct comm_signal* comsig, int sig) return 1; } -void +void comm_signal_delete(struct comm_signal* comsig) { struct internal_signal* p, *np; diff --git a/util/netevent.h b/util/netevent.h index 3e7849c13..433c14c3c 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -83,7 +83,7 @@ struct internal_timer; /* A sub struct of the comm_timer super struct */ enum listen_type; /** callback from communication point function type */ -typedef int comm_point_callback_type(struct comm_point*, void*, int, +typedef int comm_point_callback_type(struct comm_point*, void*, int, struct comm_reply*); /** to pass no_error to callback function */ @@ -91,7 +91,7 @@ typedef int comm_point_callback_type(struct comm_point*, void*, int, /** to pass closed connection to callback function */ #define NETEVENT_CLOSED -1 /** to pass timeout happened to callback function */ -#define NETEVENT_TIMEOUT -2 +#define NETEVENT_TIMEOUT -2 /** to pass fallback from capsforID to callback function; 0x20 failed */ #define NETEVENT_CAPSFAIL -3 /** to pass done transfer to callback function; http file is complete */ @@ -165,8 +165,8 @@ struct comm_reply { socklen_t client_addrlen; }; -/** - * Communication point to the network +/** + * Communication point to the network * These behaviours can be accomplished by setting the flags * and passing return values from the callback. * udp frontside: called after readdone. sendafter. @@ -206,7 +206,7 @@ struct comm_point { int max_tcp_count; /** current number of tcp handler in-use for this accept socket */ int cur_tcp_count; - /** malloced array of tcp handlers for a tcp-accept, + /** malloced array of tcp handlers for a tcp-accept, of size max_tcp_count. */ struct comm_point** tcp_handlers; /** linked list of free tcp_handlers to use for new queries. @@ -271,9 +271,9 @@ struct comm_point { /** is this a UDP, TCP-accept or TCP socket. */ enum comm_point_type { /** UDP socket - handle datagrams. */ - comm_udp, + comm_udp, /** TCP accept socket - only creates handlers if readable. */ - comm_tcp_accept, + comm_tcp_accept, /** TCP handler socket - handle byteperbyte readwrite. */ comm_tcp, /** HTTP handler socket */ @@ -282,7 +282,7 @@ struct comm_point { comm_local, /** raw - not DNS format - for pipe readers and writers */ comm_raw - } + } /** variable with type of socket, UDP,TCP-accept,TCP,pipe */ type; @@ -303,7 +303,7 @@ struct comm_point { /** if set the connection is NOT closed on delete. */ int do_not_close; - /** if set, the connection is closed on error, on timeout, + /** if set, the connection is closed on error, on timeout, and after read/write completes. No callback is done. */ int tcp_do_close; @@ -387,11 +387,11 @@ struct comm_point { /** callback when done. tcp_accept does not get called back, is NULL then. If a timeout happens, callback with timeout=1 is called. - If an error happens, callback is called with error set + If an error happens, callback is called with error set nonzero. If not NETEVENT_NOERROR, it is an errno value. If the connection is closed (by remote end) then the callback is called with error set to NETEVENT_CLOSED=-1. - If a timeout happens on the connection, the error is set to + If a timeout happens on the connection, the error is set to NETEVENT_TIMEOUT=-2. The reply_info can be copied if the reply needs to happen at a later time. It consists of a struct with commpoint and address. @@ -399,7 +399,7 @@ struct comm_point { Note the reply information is temporary and must be copied. NULL is passed for_reply info, in cases where error happened. - declare as: + declare as: int my_callback(struct comm_point* c, void* my_arg, int error, struct comm_reply *reply_info); @@ -446,14 +446,14 @@ struct comm_signal { /** * Create a new comm base. - * @param sigs: if true it attempts to create a default loop for + * @param sigs: if true it attempts to create a default loop for * signal handling. * @return: the new comm base. NULL on error. */ struct comm_base* comm_base_create(int sigs); /** - * Create comm base that uses the given ub_event_base (underlying pluggable + * Create comm base that uses the given ub_event_base (underlying pluggable * event mechanism pointer). * @param base: underlying pluggable event base. * @return: the new comm base. NULL on error. @@ -619,7 +619,7 @@ struct comm_point* comm_point_create_http_out(struct comm_base* base, * @return: the commpoint or NULL on error. */ struct comm_point* comm_point_create_local(struct comm_base* base, - int fd, size_t bufsize, + int fd, size_t bufsize, comm_point_callback_type* callback, void* callback_arg); /** @@ -632,7 +632,7 @@ struct comm_point* comm_point_create_local(struct comm_base* base, * @return: the commpoint or NULL on error. */ struct comm_point* comm_point_create_raw(struct comm_base* base, - int fd, int writing, + int fd, int writing, comm_point_callback_type* callback, void* callback_arg); /** @@ -722,7 +722,7 @@ size_t comm_point_get_mem(struct comm_point* c); * @param cb_arg: user callback argument. * @return: the new timer or NULL on error. */ -struct comm_timer* comm_timer_create(struct comm_base* base, +struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg); /** @@ -792,7 +792,7 @@ void comm_signal_delete(struct comm_signal* comsig); * if -1, error message has been printed if necessary, simply drop * out of the reading handler. */ -int comm_point_perform_accept(struct comm_point* c, +int comm_point_perform_accept(struct comm_point* c, struct sockaddr_storage* addr, socklen_t* addrlen); /**** internal routines ****/ @@ -801,7 +801,7 @@ int comm_point_perform_accept(struct comm_point* c, * This routine is published for checks and tests, and is only used internally. * handle libevent callback for udp comm point. * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -811,7 +811,7 @@ void comm_point_udp_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * handle libevent callback for udp ancillary data comm point. * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -821,7 +821,7 @@ void comm_point_udp_ancil_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * handle libevent callback for tcp accept comm point * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -831,7 +831,7 @@ void comm_point_tcp_accept_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * handle libevent callback for tcp data comm point * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -841,7 +841,7 @@ void comm_point_tcp_handle_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * handle libevent callback for tcp data comm point * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -955,7 +955,7 @@ void http2_stream_add_meshstate(struct http2_stream* h2_stream, * This routine is published for checks and tests, and is only used internally. * handle libevent callback for timer comm. * @param fd: file descriptor (always -1). - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_timer structure. */ @@ -965,7 +965,7 @@ void comm_timer_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * handle libevent callback for signal comm. * @param fd: file descriptor (used for the signal number). - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the internal commsignal structure. */ @@ -975,7 +975,7 @@ void comm_signal_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * libevent callback for AF_UNIX fds * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -985,7 +985,7 @@ void comm_point_local_handle_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * libevent callback for raw fd access. * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ @@ -995,7 +995,7 @@ void comm_point_raw_handle_callback(int fd, short event, void* arg); * This routine is published for checks and tests, and is only used internally. * libevent callback for timeout on slow accept. * @param fd: file descriptor. - * @param event: event bits from libevent: + * @param event: event bits from libevent: * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. * @param arg: the comm_point structure. */ diff --git a/util/timehist.c b/util/timehist.c index 61cc995fd..515cf61f3 100644 --- a/util/timehist.c +++ b/util/timehist.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -83,12 +83,12 @@ dosetup(struct timehist* hist) struct timehist* timehist_setup(void) { - struct timehist* hist = (struct timehist*)calloc(1, + struct timehist* hist = (struct timehist*)calloc(1, sizeof(struct timehist)); if(!hist) return NULL; hist->num = NUM_BUCKETS_HIST; - hist->buckets = (struct th_buck*)calloc(hist->num, + hist->buckets = (struct th_buck*)calloc(hist->num, sizeof(struct th_buck)); if(!hist->buckets) { free(hist); @@ -194,7 +194,7 @@ timehist_count(struct timehist* hist) return res; } -double +double timehist_quartile(struct timehist* hist, double q) { double lookfor, passed, res; @@ -209,22 +209,22 @@ timehist_quartile(struct timehist* hist, double q) lookfor *= q; passed = 0; i = 0; - while(i+1 < hist->num && + while(i+1 < hist->num && passed+(double)hist->buckets[i].count < lookfor) { passed += (double)hist->buckets[i++].count; } /* got the right bucket */ #ifndef S_SPLINT_S - low = (double)hist->buckets[i].lower.tv_sec + + low = (double)hist->buckets[i].lower.tv_sec + (double)hist->buckets[i].lower.tv_usec/1000000.; - up = (double)hist->buckets[i].upper.tv_sec + + up = (double)hist->buckets[i].upper.tv_sec + (double)hist->buckets[i].upper.tv_usec/1000000.; #endif res = (lookfor - passed)*(up-low)/((double)hist->buckets[i].count); return low+res; } -void +void timehist_export(struct timehist* hist, long long* array, size_t sz) { size_t i; @@ -235,7 +235,7 @@ timehist_export(struct timehist* hist, long long* array, size_t sz) array[i] = (long long)hist->buckets[i].count; } -void +void timehist_import(struct timehist* hist, long long* array, size_t sz) { size_t i; From a197aac2f6c7bee4b615f50e2af48256be083771 Mon Sep 17 00:00:00 2001 From: Vadim Fedorenko Date: Tue, 18 Apr 2023 06:50:12 -0700 Subject: [PATCH 106/177] timeval_func: move all timeval manipulation to separate file There are several definitions of the same functions manipulating timeval structures. Let's move them to separate file and arrange the code preperly. Signed-off-by: Vadim Fedorenko --- Makefile.in | 19 ++++--- daemon/remote.c | 42 +------------- services/mesh.c | 71 +---------------------- smallapp/unbound-control.c | 26 +-------- testcode/fake_event.c | 15 +---- testcode/replay.c | 17 +----- util/netevent.c | 2 +- util/timehist.c | 18 +----- util/timeval_func.c | 112 +++++++++++++++++++++++++++++++++++++ util/timeval_func.h | 53 ++++++++++++++++++ 10 files changed, 182 insertions(+), 193 deletions(-) create mode 100644 util/timeval_func.c create mode 100644 util/timeval_func.h diff --git a/Makefile.in b/Makefile.in index 3be1ae8a2..2f16220d3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -130,7 +130,7 @@ util/fptr_wlist.c util/locks.c util/log.c util/mini_event.c util/module.c \ util/netevent.c util/net_help.c util/random.c util/rbtree.c util/regional.c \ util/rtt.c util/edns.c util/storage/dnstree.c util/storage/lookup3.c \ util/storage/lruhash.c util/storage/slabhash.c util/tcp_conn_limit.c \ -util/timehist.c util/tube.c util/proxy_protocol.c \ +util/timehist.c util/tube.c util/proxy_protocol.c util/timeval_func.c \ util/ub_event.c util/ub_event_pluggable.c util/winsock_event.c \ validator/autotrust.c validator/val_anchor.c validator/validator.c \ validator/val_kcache.c validator/val_kentry.c validator/val_neg.c \ @@ -152,7 +152,7 @@ autotrust.lo val_anchor.lo rpz.lo proxy_protocol.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo $(CACHEDB_OBJ) authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ -$(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo +$(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo timeval_func.lo COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo @@ -455,6 +455,7 @@ unbound-dnstap-socket.lo unbound-dnstap-socket.o: $(srcdir)/dnstap/unbound-dnsta dynlibmod.lo dynlibdmod.o: $(srcdir)/dynlibmod/dynlibmod.c config.h $(srcdir)/dynlibmod/dynlibmod.h cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h $(srcdir)/cachedb/cachedb.h redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h $(srcdir)/cachedb/redis.h +timeval_func.lo timeval_func.o: $(srcdir)/util/timeval_func.c $(srcdir)/util/timeval_func.h # dnscrypt dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ @@ -928,7 +929,7 @@ shm_main.lo shm_main.o: $(srcdir)/util/shm_side/shm_main.c config.h $(srcdir)/ut $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h \ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h + $(srcdir)/util/tube.h $(srcdir)/util/timeval_func.h authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ @@ -983,7 +984,7 @@ netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/neteve $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/timeval_func.h proxy_protocol.lo proxy_protocol.o: $(srcdir)/util/proxy_protocol.c config.h \ $(srcdir)/util/proxy_protocol.h $(srcdir)/sldns/sbuffer.h net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ @@ -1321,7 +1322,7 @@ unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/timeval_func.h \ $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ @@ -1343,7 +1344,7 @@ testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/test $(srcdir)/daemon/remote.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/daemon/daemon.h \ - $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/timeval_func.h $(srcdir)/services/modstack.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ @@ -1357,7 +1358,7 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/timeval_func.h \ $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ @@ -1409,7 +1410,7 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h \ + $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h $(srcdir)/util/timeval_func.h \ $(srcdir)/testcode/fake_event.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/testcode/fake_event.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -1417,7 +1418,7 @@ fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/t $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/edns.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h $(srcdir)/util/timeval_func.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ diff --git a/daemon/remote.c b/daemon/remote.c index 08c503839..1d0a58714 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -87,6 +87,7 @@ #include "sldns/parseutil.h" #include "sldns/wire2str.h" #include "sldns/sbuffer.h" +#include "util/timeval_func.h" #ifdef HAVE_SYS_TYPES_H # include @@ -106,47 +107,6 @@ /** what to put on statistics lines between var and value, ": " or "=" */ #define SQ "=" -/** subtract timers and the values do not overflow or become negative */ -static void -timeval_subtract(struct timeval* d, const struct timeval* end, - const struct timeval* start) -{ -#ifndef S_SPLINT_S - time_t end_usec = end->tv_usec; - d->tv_sec = end->tv_sec - start->tv_sec; - if(end_usec < start->tv_usec) { - end_usec += 1000000; - d->tv_sec--; - } - d->tv_usec = end_usec - start->tv_usec; -#endif -} - -/** divide sum of timers to get average */ -static void -timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) -{ -#ifndef S_SPLINT_S - size_t leftover; - if(d <= 0) { - avg->tv_sec = 0; - avg->tv_usec = 0; - return; - } - avg->tv_sec = sum->tv_sec / d; - avg->tv_usec = sum->tv_usec / d; - /* handle fraction from seconds divide */ - leftover = sum->tv_sec - avg->tv_sec*d; - if(leftover <= 0) - leftover = 0; - avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; - if(avg->tv_sec < 0) - avg->tv_sec = 0; - if(avg->tv_usec < 0) - avg->tv_usec = 0; -#endif -} - static int remote_setup_ctx(struct daemon_remote* rc, struct config_file* cfg) { diff --git a/services/mesh.c b/services/mesh.c index 035ffa694..bff0c03e6 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -63,82 +63,13 @@ #include "util/data/dname.h" #include "respip/respip.h" #include "services/listen_dnsport.h" +#include "util/timeval_func.h" #ifdef CLIENT_SUBNET #include "edns-subnet/subnetmod.h" #include "edns-subnet/edns-subnet.h" #endif -/** subtract timers and the values do not overflow or become negative */ -static void -timeval_subtract(struct timeval* d, const struct timeval* end, const struct timeval* start) -{ -#ifndef S_SPLINT_S - time_t end_usec = end->tv_usec; - d->tv_sec = end->tv_sec - start->tv_sec; - if(end_usec < start->tv_usec) { - end_usec += 1000000; - d->tv_sec--; - } - d->tv_usec = end_usec - start->tv_usec; -#endif -} - -/** add timers and the values do not overflow or become negative */ -static void -timeval_add(struct timeval* d, const struct timeval* add) -{ -#ifndef S_SPLINT_S - d->tv_sec += add->tv_sec; - d->tv_usec += add->tv_usec; - if(d->tv_usec >= 1000000 ) { - d->tv_usec -= 1000000; - d->tv_sec++; - } -#endif -} - -/** divide sum of timers to get average */ -static void -timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d) -{ -#ifndef S_SPLINT_S - size_t leftover; - if(d <= 0) { - avg->tv_sec = 0; - avg->tv_usec = 0; - return; - } - avg->tv_sec = sum->tv_sec / d; - avg->tv_usec = sum->tv_usec / d; - /* handle fraction from seconds divide */ - leftover = sum->tv_sec - avg->tv_sec*d; - if(leftover <= 0) - leftover = 0; - avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; - if(avg->tv_sec < 0) - avg->tv_sec = 0; - if(avg->tv_usec < 0) - avg->tv_usec = 0; -#endif -} - -/** histogram compare of time values */ -static int -timeval_smaller(const struct timeval* x, const struct timeval* y) -{ -#ifndef S_SPLINT_S - if(x->tv_sec < y->tv_sec) - return 1; - else if(x->tv_sec == y->tv_sec) { - if(x->tv_usec <= y->tv_usec) - return 1; - else return 0; - } - else return 0; -#endif -} - /** * Compare two response-ip client info entries for the purpose of mesh state * compare. It returns 0 if ci_a and ci_b are considered equal; otherwise diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 141bec492..89cb16b96 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -59,6 +59,7 @@ #include "util/locks.h" #include "util/net_help.h" #include "util/shm_side/shm_main.h" +#include "util/timeval_func.h" #include "daemon/stats.h" #include "sldns/wire2str.h" #include "sldns/pkthdr.h" @@ -186,31 +187,6 @@ usage(void) #ifdef HAVE_SHMGET /** what to put on statistics lines between var and value, ": " or "=" */ #define SQ "=" -/** divide sum of timers to get average */ -static void -timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) -{ -#ifndef S_SPLINT_S - size_t leftover; - if(d <= 0) { - avg->tv_sec = 0; - avg->tv_usec = 0; - return; - } - avg->tv_sec = sum->tv_sec / d; - avg->tv_usec = sum->tv_usec / d; - /* handle fraction from seconds divide */ - leftover = sum->tv_sec - avg->tv_sec*d; - if(leftover <= 0) - leftover = 0; - avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; - if(avg->tv_sec < 0) - avg->tv_sec = 0; - if(avg->tv_usec < 0) - avg->tv_usec = 0; -#endif -} - /** print unsigned long stats value */ #define PR_UL_NM(str, var) printf("%s."str SQ"%lu\n", nm, (unsigned long)(var)); #define PR_UL(str, var) printf(str SQ"%lu\n", (unsigned long)(var)); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 618e739d7..9d65b3c49 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -65,6 +65,7 @@ #include "sldns/wire2str.h" #include "sldns/str2wire.h" #include "daemon/remote.h" +#include "util/timeval_func.h" #include struct worker; struct daemon_remote; @@ -95,20 +96,6 @@ struct fake_commpoint { /** Global variable: the scenario. Saved here for when event_init is done. */ static struct replay_scenario* saved_scenario = NULL; -/** add timers and the values do not overflow or become negative */ -static void -timeval_add(struct timeval* d, const struct timeval* add) -{ -#ifndef S_SPLINT_S - d->tv_sec += add->tv_sec; - d->tv_usec += add->tv_usec; - if(d->tv_usec >= 1000000) { - d->tv_usec -= 1000000; - d->tv_sec++; - } -#endif -} - void fake_temp_file(const char* adj, const char* id, char* buf, size_t len) { diff --git a/testcode/replay.c b/testcode/replay.c index 3caf98233..f896a5512 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -51,6 +51,7 @@ #include "testcode/testpkts.h" #include "testcode/fake_event.h" #include "sldns/str2wire.h" +#include "util/timeval_func.h" /** max length of lines in file */ #define MAX_LINE_LEN 10240 @@ -66,22 +67,6 @@ static char* macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text); -/** compare of time values */ -static int -timeval_smaller(const struct timeval* x, const struct timeval* y) -{ -#ifndef S_SPLINT_S - if(x->tv_sec < y->tv_sec) - return 1; - else if(x->tv_sec == y->tv_sec) { - if(x->tv_usec <= y->tv_usec) - return 1; - else return 0; - } - else return 0; -#endif -} - /** parse keyword in string. * @param line: if found, the line is advanced to after the keyword. * @param keyword: string. diff --git a/util/netevent.c b/util/netevent.c index a98d12ccc..5558e52ca 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -833,7 +833,6 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) #ifndef S_SPLINT_S struct cmsghdr* cmsg; #endif /* S_SPLINT_S */ - rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); @@ -843,6 +842,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) ub_comm_base_now(rep.c->ev->base); for(i=0; ibuffer); + memset(&rep.c->recv_tv, 0, sizeof(rep.c->recv_tv)); rep.remote_addrlen = (socklen_t)sizeof(rep.remote_addr); log_assert(fd != -1); log_assert(sldns_buffer_remaining(rep.c->buffer) > 0); diff --git a/util/timehist.c b/util/timehist.c index 515cf61f3..2063fe80e 100644 --- a/util/timehist.c +++ b/util/timehist.c @@ -46,6 +46,7 @@ #include #include "util/timehist.h" #include "util/log.h" +#include "util/timeval_func.h" /** special timestwo operation for time values in histogram setup */ static void @@ -114,23 +115,6 @@ void timehist_clear(struct timehist* hist) hist->buckets[i].count = 0; } -/** histogram compare of time values */ -static int -timeval_smaller(const struct timeval* x, const struct timeval* y) -{ -#ifndef S_SPLINT_S - if(x->tv_sec < y->tv_sec) - return 1; - else if(x->tv_sec == y->tv_sec) { - if(x->tv_usec <= y->tv_usec) - return 1; - else return 0; - } - else return 0; -#endif -} - - void timehist_insert(struct timehist* hist, struct timeval* tv) { size_t i; diff --git a/util/timeval_func.c b/util/timeval_func.c new file mode 100644 index 000000000..83e963dc8 --- /dev/null +++ b/util/timeval_func.c @@ -0,0 +1,112 @@ +/* + * util/timeval_func.c - helpers to work with struct timeval values. + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains helpers to manipulate struct timeval values. + */ + +#include "timeval_func.h" + +/** subtract timers and the values do not overflow or become negative */ +void +timeval_subtract(struct timeval* d, const struct timeval* end, const struct timeval* start) +{ +#ifndef S_SPLINT_S + time_t end_usec = end->tv_usec; + d->tv_sec = end->tv_sec - start->tv_sec; + if(end_usec < start->tv_usec) { + end_usec += 1000000; + d->tv_sec--; + } + d->tv_usec = end_usec - start->tv_usec; +#endif +} + +/** add timers and the values do not overflow or become negative */ +void +timeval_add(struct timeval* d, const struct timeval* add) +{ +#ifndef S_SPLINT_S + d->tv_sec += add->tv_sec; + d->tv_usec += add->tv_usec; + if(d->tv_usec >= 1000000 ) { + d->tv_usec -= 1000000; + d->tv_sec++; + } +#endif +} + +/** divide sum of timers to get average */ +void +timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) +{ +#ifndef S_SPLINT_S + long long leftover; + if(d <= 0) { + avg->tv_sec = 0; + avg->tv_usec = 0; + return; + } + avg->tv_sec = sum->tv_sec / d; + avg->tv_usec = sum->tv_usec / d; + /* handle fraction from seconds divide */ + leftover = sum->tv_sec - avg->tv_sec*d; + if(leftover <= 0) + leftover = 0; + avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; + if(avg->tv_sec < 0) + avg->tv_sec = 0; + if(avg->tv_usec < 0) + avg->tv_usec = 0; +#endif +} + +/** histogram compare of time values */ +int +timeval_smaller(const struct timeval* x, const struct timeval* y) +{ +#ifndef S_SPLINT_S + if(x->tv_sec < y->tv_sec) + return 1; + else if(x->tv_sec == y->tv_sec) { + if(x->tv_usec <= y->tv_usec) + return 1; + else return 0; + } + else return 0; +#endif +} diff --git a/util/timeval_func.h b/util/timeval_func.h new file mode 100644 index 000000000..afc35c7e9 --- /dev/null +++ b/util/timeval_func.h @@ -0,0 +1,53 @@ +/* + * util/timeval)func.h - definitions of helpers for strcut timeval values. + * + * Copyright (c) 2007, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * This file contains definitions of helpers to manipulate struct timeval + * values, implemented in the corresponding C file. + */ +#include + +#ifndef timeval_isset +#define timeval_isset(tv) ((tv)->tv_sec || (tv)->tv_usec) +#endif +#ifndef timeval_clear +#define timeval_clear(tv) ((tv)->tv_sec = (tv)->tv_usec = 0) +#endif +void timeval_subtract(struct timeval* d, const struct timeval* end, const struct timeval* start); +void timeval_add(struct timeval* d, const struct timeval* add); +void timeval_divide(struct timeval* avg, const struct timeval* sum, long long d); +int timeval_smaller(const struct timeval* x, const struct timeval* y); From 2e6ddd603279cab26e3ee344a1ba26a7ba428e2c Mon Sep 17 00:00:00 2001 From: Vadim Fedorenko Date: Thu, 13 Apr 2023 07:11:00 -0700 Subject: [PATCH 107/177] netevent: parse and store rcv timestamp from sock Add special field in comm_point to store the software receive timestamp for every particular UDP packet. Aux data parser is updated to read values and the whole callback is switched to use recvmsg form. Signed-off-by: Vadim Fedorenko --- daemon/worker.c | 1 + util/netevent.c | 31 ++++++++++++++++++++++++++++++- util/netevent.h | 3 ++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index a4d6b8247..85709af6e 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -68,6 +68,7 @@ #include "util/fptr_wlist.h" #include "util/tube.h" #include "util/edns.h" +#include "util/timeval_func.h" #include "iterator/iter_fwd.h" #include "iterator/iter_hints.h" #include "iterator/iter_utils.h" diff --git a/util/netevent.c b/util/netevent.c index 5558e52ca..ca5b9e165 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -46,6 +46,7 @@ #include "util/tcp_conn_limit.h" #include "util/fptr_wlist.h" #include "util/proxy_protocol.h" +#include "util/timeval_func.h" #include "sldns/pkthdr.h" #include "sldns/sbuffer.h" #include "sldns/str2wire.h" @@ -114,6 +115,16 @@ /** timeout in millisec to wait for write to unblock, packets dropped after.*/ #define SEND_BLOCKED_WAIT_TIMEOUT 200 +/** Let's make timestamping code cleaner and redefine SO_TIMESTAMP* */ +#ifndef SO_TIMESTAMP +#define SO_TIMESTAMP 29 +#endif +#ifndef SO_TIMESTAMPNS +#define SO_TIMESTAMPNS 35 +#endif +#ifndef SO_TIMESTAMPING +#define SO_TIMESTAMPING 37 +#endif /** * The internal event structure for keeping ub_event info for the event. * Possibly other structures (list, tree) this is part of. @@ -833,6 +844,8 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) #ifndef S_SPLINT_S struct cmsghdr* cmsg; #endif /* S_SPLINT_S */ + struct timespec *ts; + rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); @@ -842,7 +855,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) ub_comm_base_now(rep.c->ev->base); for(i=0; ibuffer); - memset(&rep.c->recv_tv, 0, sizeof(rep.c->recv_tv)); + timeval_clear(&rep.c->recv_tv); rep.remote_addrlen = (socklen_t)sizeof(rep.remote_addr); log_assert(fd != -1); log_assert(sldns_buffer_remaining(rep.c->buffer) > 0); @@ -894,8 +907,20 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) sizeof(struct in_addr)); break; #endif /* IP_PKTINFO or IP_RECVDSTADDR */ + } else if( cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SO_TIMESTAMPNS) { + ts = (struct timespec *)CMSG_DATA(cmsg); + TIMESPEC_TO_TIMEVAL(&rep.c->recv_tv, ts); + } else if( cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SO_TIMESTAMPING) { + ts = (struct timespec *)CMSG_DATA(cmsg); + TIMESPEC_TO_TIMEVAL(&rep.c->recv_tv, ts); + } else if( cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SO_TIMESTAMP) { + memmove(&rep.c->recv_tv, CMSG_DATA(cmsg), sizeof(struct timeval)); } } + if(verbosity >= VERB_ALGO) p_ancil("receive_udp on interface", &rep); #endif /* S_SPLINT_S */ @@ -3809,7 +3834,11 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, evbits = UB_EV_READ | UB_EV_PERSIST; /* ub_event stuff */ c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, +#ifdef USE_WINSOCK comm_point_udp_callback, c); +#else + comm_point_udp_ancil_callback, c); +#endif if(c->ev->ev == NULL) { log_err("could not baseset udp event"); comm_point_delete(c); diff --git a/util/netevent.h b/util/netevent.h index 433c14c3c..761b8539c 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -383,7 +383,8 @@ struct comm_point { /** number of queries outstanding on this socket, used by * outside network for udp ports */ int inuse; - + /** the timestamp when the packet was received by the kernel */ + struct timeval recv_tv; /** callback when done. tcp_accept does not get called back, is NULL then. If a timeout happens, callback with timeout=1 is called. From 04540f82e56283c54c4cc169158a14b4d9c0de61 Mon Sep 17 00:00:00 2001 From: Vadim Fedorenko Date: Thu, 13 Apr 2023 07:49:32 -0700 Subject: [PATCH 108/177] config: add sock_queue_timeout configuration Add sock_queue_timeout config option to have queue timeout configurable. Signed-off-by: Vadim Fedorenko --- config.h.in | 3 +++ configure | 29 ++++++++++++++------------ configure.ac | 5 ++++- services/listen_dnsport.c | 43 +++++++++++++++++++++++++++++++-------- util/config_file.c | 3 +++ util/config_file.h | 2 ++ util/configlexer.lex | 1 + util/configparser.y | 15 ++++++++++++++ util/netevent.c | 6 +++++- 9 files changed, 84 insertions(+), 23 deletions(-) diff --git a/config.h.in b/config.h.in index 6f7a062af..e7a44bf60 100644 --- a/config.h.in +++ b/config.h.in @@ -671,6 +671,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_NET_TSTAMP_H + /* Define to 1 if you have the `tzset' function. */ #undef HAVE_TZSET diff --git a/configure b/configure index f7abb5289..491228b54 100755 --- a/configure +++ b/configure @@ -813,7 +813,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -965,7 +964,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1218,15 +1216,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1364,7 +1353,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1517,7 +1506,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -14878,6 +14866,21 @@ fi done +# Check for Linux timestamping headers +for ac_header in linux/net_tstamp.h +do : + ac_fn_c_check_header_compile "$LINENO" "linux/net_tstamp.h" "ac_cv_header_linux_net_tstamp_h" "$ac_includes_default +" +if test "x$ac_cv_header_linux_net_tstamp_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LINUX_NET_TSTAMP_H 1 +_ACEOF + +fi + +done + + # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default" diff --git a/configure.ac b/configure.ac index 73fef5f87..fa5ca1018 100644 --- a/configure.ac +++ b/configure.ac @@ -454,7 +454,10 @@ AC_CHECK_HEADERS([netioapi.h],,, [AC_INCLUDES_DEFAULT #endif ]) -# check for types. +# Check for Linux timestamping headers +AC_CHECK_HEADERS([linux/net_tstamp.h],,, [AC_INCLUDES_DEFAULT]) + +# check for types. # Using own tests for int64* because autoconf builtin only give 32bit. AC_CHECK_TYPE(int8_t, signed char) AC_CHECK_TYPE(int16_t, short) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 484529034..2163a949d 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -79,7 +79,9 @@ #ifdef HAVE_NET_IF_H #include #endif - +#ifdef HAVE_LINUX_NET_TSTAMP_H +#include +#endif /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 @@ -1114,6 +1116,24 @@ port_insert(struct listen_port** list, int s, enum listen_type ftype, return 1; } +/** set fd to receive software timestamps */ +static int +set_recvtimestamp(int s) +{ +#ifdef HAVE_LINUX_NET_TSTAMP_H + int opt = SOF_TIMESTAMPING_RX_SOFTWARE | SOF_TIMESTAMPING_SOFTWARE; + if (setsockopt(s, SOL_SOCKET, SO_TIMESTAMPNS, (void*)&opt, (socklen_t)sizeof(opt)) < 0) { + log_err("setsockopt(..., SO_TIMESTAMPNS, ...) failed: %s", + strerror(errno)); + return 0; + } + return 1; +#else + log_err("packets timestamping is not supported on this platform"); + return 0; +#endif +} + /** set fd to receive source address packet info */ static int set_recvpktinfo(int s, int family) @@ -1223,7 +1243,8 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, struct config_strlist* tls_additional_port, int https_port, struct config_strlist* proxy_protocol_port, int* reuseport, int transparent, int tcp_mss, int freebind, - int http2_nodelay, int use_systemd, int dnscrypt_port, int dscp) + int http2_nodelay, int use_systemd, int dnscrypt_port, int dscp, + int sock_queue_timeout) { int s, noip6=0; int is_https = if_is_https(ifname, port, https_port); @@ -1269,6 +1290,9 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, free(ub_sock); return 0; } + if (sock_queue_timeout && !set_recvtimestamp(s)) { + log_warn("socket timestamping is not available"); + } if(!port_insert(list, s, is_dnscrypt ?listen_type_udpancil_dnscrypt:listen_type_udpancil, is_pp2, ub_sock)) { @@ -1295,6 +1319,9 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } return 0; } + if (sock_queue_timeout && !set_recvtimestamp(s)) { + log_warn("socket timestamping is not available"); + } if(!port_insert(list, s, is_dnscrypt ?listen_type_udp_dnscrypt:listen_type_udp, is_pp2, ub_sock)) { @@ -1809,7 +1836,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->http_nodelay, cfg->use_systemd, - cfg->dnscrypt_port, cfg->ip_dscp)) { + cfg->dnscrypt_port, cfg->ip_dscp, cfg->sock_queue_timeout)) { listening_ports_free(list); return NULL; } @@ -1826,7 +1853,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->http_nodelay, cfg->use_systemd, - cfg->dnscrypt_port, cfg->ip_dscp)) { + cfg->dnscrypt_port, cfg->ip_dscp, cfg->sock_queue_timeout)) { listening_ports_free(list); return NULL; } @@ -1845,7 +1872,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->http_nodelay, cfg->use_systemd, - cfg->dnscrypt_port, cfg->ip_dscp)) { + cfg->dnscrypt_port, cfg->ip_dscp, cfg->sock_queue_timeout)) { listening_ports_free(list); return NULL; } @@ -1861,7 +1888,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->http_nodelay, cfg->use_systemd, - cfg->dnscrypt_port, cfg->ip_dscp)) { + cfg->dnscrypt_port, cfg->ip_dscp, cfg->sock_queue_timeout)) { listening_ports_free(list); return NULL; } @@ -1879,7 +1906,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->http_nodelay, cfg->use_systemd, - cfg->dnscrypt_port, cfg->ip_dscp)) { + cfg->dnscrypt_port, cfg->ip_dscp, cfg->sock_queue_timeout)) { listening_ports_free(list); return NULL; } @@ -1895,7 +1922,7 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->http_nodelay, cfg->use_systemd, - cfg->dnscrypt_port, cfg->ip_dscp)) { + cfg->dnscrypt_port, cfg->ip_dscp, cfg->sock_queue_timeout)) { listening_ports_free(list); return NULL; } diff --git a/util/config_file.c b/util/config_file.c index 8e4d925e9..a04c8cf09 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -116,6 +116,7 @@ config_create(void) cfg->tcp_auth_query_timeout = 3 * 1000; /* 3s in millisecs */ cfg->do_tcp_keepalive = 0; cfg->tcp_keepalive_timeout = 120 * 1000; /* 120s in millisecs */ + cfg->sock_queue_timeout = 0; /* do not check timeout */ cfg->ssl_service_key = NULL; cfg->ssl_service_pem = NULL; cfg->ssl_port = UNBOUND_DNS_OVER_TLS_PORT; @@ -543,6 +544,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_NUMBER_NONZERO("tcp-reuse-timeout:", tcp_reuse_timeout) else S_YNO("edns-tcp-keepalive:", do_tcp_keepalive) else S_NUMBER_NONZERO("edns-tcp-keepalive-timeout:", tcp_keepalive_timeout) + else S_NUMBER_OR_ZERO("sock-queue-timeout:", sock_queue_timeout) else S_YNO("ssl-upstream:", ssl_upstream) else S_YNO("tls-upstream:", ssl_upstream) else S_STR("ssl-service-key:", ssl_service_key) @@ -1066,6 +1068,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "tcp-reuse-timeout", tcp_reuse_timeout) else O_YNO(opt, "edns-tcp-keepalive", do_tcp_keepalive) else O_DEC(opt, "edns-tcp-keepalive-timeout", tcp_keepalive_timeout) + else O_DEC(opt, "sock-queue-timeout", sock_queue_timeout) else O_YNO(opt, "ssl-upstream", ssl_upstream) else O_YNO(opt, "tls-upstream", ssl_upstream) else O_STR(opt, "ssl-service-key", ssl_service_key) diff --git a/util/config_file.h b/util/config_file.h index 1590dc460..fc19790ca 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -116,6 +116,8 @@ struct config_file { int do_tcp_keepalive; /** tcp keepalive timeout, in msec */ int tcp_keepalive_timeout; + /** timeout of packets sitting in the socket queue */ + int sock_queue_timeout; /** proxy protocol ports */ struct config_strlist* proxy_protocol_port; diff --git a/util/configlexer.lex b/util/configlexer.lex index 31b69779d..dd85ecd26 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -240,6 +240,7 @@ tcp-reuse-timeout{COLON} { YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } tcp-auth-query-timeout{COLON} { YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } edns-tcp-keepalive{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } edns-tcp-keepalive-timeout{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } +sock-queue-timeout{COLON} { YDVAR(1, VAR_SOCK_QUEUE_TIMEOUT) } ssl-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } tls-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } ssl-service-key{COLON} { YDVAR(1, VAR_SSL_SERVICE_KEY) } diff --git a/util/configparser.y b/util/configparser.y index 4f00ecc0d..06118e04a 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -76,6 +76,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DO_IP4 VAR_DO_IP6 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP %token VAR_TCP_MSS VAR_OUTGOING_TCP_MSS VAR_TCP_IDLE_TIMEOUT %token VAR_EDNS_TCP_KEEPALIVE VAR_EDNS_TCP_KEEPALIVE_TIMEOUT +%token VAR_SOCK_QUEUE_TIMEOUT %token VAR_CHROOT VAR_USERNAME VAR_DIRECTORY VAR_LOGFILE VAR_PIDFILE %token VAR_MSG_CACHE_SIZE VAR_MSG_CACHE_SLABS VAR_NUM_QUERIES_PER_THREAD %token VAR_RRSET_CACHE_SIZE VAR_RRSET_CACHE_SLABS VAR_OUTGOING_NUM_TCP @@ -227,6 +228,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_do_udp | server_do_tcp | server_tcp_mss | server_outgoing_tcp_mss | server_tcp_idle_timeout | server_tcp_keepalive | server_tcp_keepalive_timeout | + server_sock_queue_timeout | server_interface | server_chroot | server_username | server_directory | server_logfile | server_pidfile | server_msg_cache_size | server_msg_cache_slabs | @@ -974,6 +976,19 @@ server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG free($2); } ; +server_sock_queue_timeout: VAR_SOCK_QUEUE_TIMEOUT STRING_ARG + { + OUTYY(("P(server_sock_queue_timeout:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else if (atoi($2) > 6553500) + cfg_parser->cfg->sock_queue_timeout = 6553500; + else if (atoi($2) < 1) + cfg_parser->cfg->sock_queue_timeout = 0; + else cfg_parser->cfg->sock_queue_timeout = atoi($2); + free($2); + } + ; server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG { OUTYY(("P(server_tcp_upstream:%s)\n", $2)); diff --git a/util/netevent.c b/util/netevent.c index ca5b9e165..6ca51622b 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -72,7 +72,9 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif - +#ifdef HAVE_LINUX_NET_TSTAMP_H +#include +#endif /* -------- Start of local definitions -------- */ /** if CMSG_ALIGN is not defined on this platform, a workaround */ #ifndef CMSG_ALIGN @@ -907,6 +909,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) sizeof(struct in_addr)); break; #endif /* IP_PKTINFO or IP_RECVDSTADDR */ +#ifdef HAVE_LINUX_NET_TSTAMP_H } else if( cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SO_TIMESTAMPNS) { ts = (struct timespec *)CMSG_DATA(cmsg); @@ -918,6 +921,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) } else if( cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SO_TIMESTAMP) { memmove(&rep.c->recv_tv, CMSG_DATA(cmsg), sizeof(struct timeval)); +#endif } } From e577ab105e9741d861669827b743c3fbb854c5d2 Mon Sep 17 00:00:00 2001 From: Vadim Fedorenko Date: Mon, 17 Apr 2023 07:02:13 -0700 Subject: [PATCH 109/177] stats: add counter for timed out queries Add counter `num_queries_timed_out` meaning queries that were sitting in the socket queue and waiting to being processed too long. There is no reason to process such queries, so let's drop it in the very beginning of the pipeline. Signed-off-by: Vadim Fedorenko --- daemon/remote.c | 2 ++ daemon/stats.c | 1 + daemon/worker.c | 10 ++++++++++ libunbound/unbound.h | 2 ++ smallapp/unbound-control.c | 1 + 5 files changed, 16 insertions(+) diff --git a/daemon/remote.c b/daemon/remote.c index 1d0a58714..d8a3a6caf 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -679,6 +679,8 @@ print_stats(RES* ssl, const char* nm, struct ub_stats_info* s) (unsigned long)s->svr.num_queries_missed_cache)) return 0; if(!ssl_printf(ssl, "%s.num.prefetch"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries_prefetch)) return 0; + if(!ssl_printf(ssl, "%s.num.queries_timed_out"SQ"%lu\n", nm, + (unsigned long)s->svr.num_queries_timed_out)) return 0; if(!ssl_printf(ssl, "%s.num.expired"SQ"%lu\n", nm, (unsigned long)s->svr.ans_expired)) return 0; if(!ssl_printf(ssl, "%s.num.recursivereplies"SQ"%lu\n", nm, diff --git a/daemon/stats.c b/daemon/stats.c index 4c7fcbe5a..38f4597b3 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -432,6 +432,7 @@ void server_stats_add(struct ub_stats_info* total, struct ub_stats_info* a) total->svr.num_queries_ip_ratelimited += a->svr.num_queries_ip_ratelimited; total->svr.num_queries_missed_cache += a->svr.num_queries_missed_cache; total->svr.num_queries_prefetch += a->svr.num_queries_prefetch; + total->svr.num_queries_timed_out += a->svr.num_queries_timed_out; total->svr.sum_query_list_size += a->svr.sum_query_list_size; total->svr.ans_expired += a->svr.ans_expired; #ifdef USE_DNSCRYPT diff --git a/daemon/worker.c b/daemon/worker.c index 85709af6e..63b8678e3 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1296,6 +1296,16 @@ worker_handle_request(struct comm_point* c, void* arg, int error, verbose(VERB_ALGO, "handle request called with err=%d", error); return 0; } + + if (worker->env.cfg->sock_queue_timeout && timeval_isset(c->recv_tv)) { + c->recv_tv.tv_sec += worker->env.cfg->sock_queue_timeout; + if (timeval_smaller(c->recv_tv, worker->env.now_tv)) { + /* count and drop queries that were sitting in the socket queue too long */ + worker->stats.num_queries_timed_out++; + return 0; + } + } + #ifdef USE_DNSCRYPT repinfo->max_udp_size = worker->daemon->cfg->max_udp_size; if(!dnsc_handle_curved_request(worker->daemon->dnscenv, repinfo)) { diff --git a/libunbound/unbound.h b/libunbound/unbound.h index f65cc2c58..f83a38f8f 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -699,6 +699,8 @@ struct ub_server_stats { long long num_queries_missed_cache; /** number of prefetch queries - cachehits with prefetch */ long long num_queries_prefetch; + /** number of queries which are too late to process */ + long long num_queries_timed_out; /** * Sum of the querylistsize of the worker for diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 89cb16b96..d5f124b49 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -208,6 +208,7 @@ static void pr_stats(const char* nm, struct ub_stats_info* s) s->svr.num_queries - s->svr.num_queries_missed_cache); PR_UL_NM("num.cachemiss", s->svr.num_queries_missed_cache); PR_UL_NM("num.prefetch", s->svr.num_queries_prefetch); + PR_UL_NM("num.queries_timed_out", s->svr.num_queries_timed_out); PR_UL_NM("num.expired", s->svr.ans_expired); PR_UL_NM("num.recursivereplies", s->mesh_replies_sent); #ifdef USE_DNSCRYPT From 263096d1f6e1f21a71b0ffeeb408e1448ed51e6c Mon Sep 17 00:00:00 2001 From: Vadim Fedorenko Date: Fri, 21 Apr 2023 09:23:21 -0700 Subject: [PATCH 110/177] stats: add query max wait time metric Add new statistic value to know the size of the queue in microseconds. Signed-off-by: Vadim Fedorenko --- daemon/remote.c | 2 ++ daemon/stats.c | 2 ++ daemon/worker.c | 12 +++++++++--- libunbound/unbound.h | 3 ++- smallapp/unbound-control.c | 1 + 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index d8a3a6caf..03daa935e 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -681,6 +681,8 @@ print_stats(RES* ssl, const char* nm, struct ub_stats_info* s) (unsigned long)s->svr.num_queries_prefetch)) return 0; if(!ssl_printf(ssl, "%s.num.queries_timed_out"SQ"%lu\n", nm, (unsigned long)s->svr.num_queries_timed_out)) return 0; + if(!ssl_printf(ssl, "%s.query.queue_time_us.max"SQ"%lu\n", nm, + (unsigned long)s->svr.max_query_time_us)) return 0; if(!ssl_printf(ssl, "%s.num.expired"SQ"%lu\n", nm, (unsigned long)s->svr.ans_expired)) return 0; if(!ssl_printf(ssl, "%s.num.recursivereplies"SQ"%lu\n", nm, diff --git a/daemon/stats.c b/daemon/stats.c index 38f4597b3..cef7de827 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -433,6 +433,8 @@ void server_stats_add(struct ub_stats_info* total, struct ub_stats_info* a) total->svr.num_queries_missed_cache += a->svr.num_queries_missed_cache; total->svr.num_queries_prefetch += a->svr.num_queries_prefetch; total->svr.num_queries_timed_out += a->svr.num_queries_timed_out; + if (total->svr.max_query_time_us < a->svr.max_query_time_us) + total->svr.max_query_time_us = a->svr.max_query_time_us; total->svr.sum_query_list_size += a->svr.sum_query_list_size; total->svr.ans_expired += a->svr.ans_expired; #ifdef USE_DNSCRYPT diff --git a/daemon/worker.c b/daemon/worker.c index 63b8678e3..5c373b79b 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1281,6 +1281,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, int is_expired_answer = 0; int is_secure_answer = 0; int rpz_passthru = 0; + long long wait_queue_time = 0; /* We might have to chase a CNAME chain internally, in which case * we'll have up to two replies and combine them to build a complete * answer. These variables control this case. */ @@ -1289,6 +1290,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, struct query_info* lookup_qinfo = &qinfo; struct query_info qinfo_tmp; /* placeholder for lookup_qinfo */ struct respip_client_info* cinfo = NULL, cinfo_tmp; + struct timeval wait_time; memset(&qinfo, 0, sizeof(qinfo)); if((error != NETEVENT_NOERROR && error != NETEVENT_DONE)|| !repinfo) { @@ -1297,9 +1299,13 @@ worker_handle_request(struct comm_point* c, void* arg, int error, return 0; } - if (worker->env.cfg->sock_queue_timeout && timeval_isset(c->recv_tv)) { - c->recv_tv.tv_sec += worker->env.cfg->sock_queue_timeout; - if (timeval_smaller(c->recv_tv, worker->env.now_tv)) { + if (worker->env.cfg->sock_queue_timeout && timeval_isset(&c->recv_tv)) { + timeval_subtract(&wait_time, worker->env.now_tv, &c->recv_tv); + wait_queue_time = wait_time.tv_sec * 1000000 + wait_time.tv_usec; + if (worker->stats.max_query_time_us < wait_queue_time) + worker->stats.max_query_time_us = wait_queue_time; + c->recv_tv.tv_sec += worker->env.cfg->sock_queue_timeout; + if (timeval_smaller(&c->recv_tv, worker->env.now_tv)) { /* count and drop queries that were sitting in the socket queue too long */ worker->stats.num_queries_timed_out++; return 0; diff --git a/libunbound/unbound.h b/libunbound/unbound.h index f83a38f8f..8a97b16fe 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -701,7 +701,8 @@ struct ub_server_stats { long long num_queries_prefetch; /** number of queries which are too late to process */ long long num_queries_timed_out; - + /** the longest wait time in the queue */ + long long max_query_time_us; /** * Sum of the querylistsize of the worker for * every query that missed cache. To calculate average. diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index d5f124b49..bbc09659f 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -209,6 +209,7 @@ static void pr_stats(const char* nm, struct ub_stats_info* s) PR_UL_NM("num.cachemiss", s->svr.num_queries_missed_cache); PR_UL_NM("num.prefetch", s->svr.num_queries_prefetch); PR_UL_NM("num.queries_timed_out", s->svr.num_queries_timed_out); + PR_UL_NM("query.queue_time_us.max", s->svr.max_query_time_us); PR_UL_NM("num.expired", s->svr.ans_expired); PR_UL_NM("num.recursivereplies", s->mesh_replies_sent); #ifdef USE_DNSCRYPT From 144f29638c789fa7118273f4e54fc2c83a5e9db6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 26 Apr 2023 13:49:33 +0200 Subject: [PATCH 111/177] - Fix for #882: small changes, date updated in Copyright for util/timeval_func.c and util/timeval_func.h. Man page entries and example entry. --- doc/Changelog | 9 +++++++++ doc/example.conf.in | 4 ++++ doc/unbound-control.8.in | 14 ++++++++++++++ doc/unbound.conf.5.in | 8 ++++++++ util/timeval_func.c | 3 ++- util/timeval_func.h | 4 ++-- 6 files changed, 39 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index a5fb8460e..4371e3044 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,12 @@ +26 April 2023: Wouter + - Merge #882 from vvfedorenko: Features/dropqueuedpackets, with + sock-queue-timeout option that drops packets that have been in the + socket queue for too long. Added statistics num.queries_timed_out + and query.queue_time_us.max that track the socket queue timeouts. + - Fix for #882: small changes, date updated in Copyright for + util/timeval_func.c and util/timeval_func.h. Man page entries and + example entry. + 19 April 2023: Wouter - Fix for #878: Invalid IP address in unbound.conf causes Segmentation Fault on OpenBSD. diff --git a/doc/example.conf.in b/doc/example.conf.in index 5b7517052..0523bc756 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -274,6 +274,10 @@ server: # Timeout for EDNS TCP keepalive, in msec. # edns-tcp-keepalive-timeout: 120000 + # UDP queries that have waited in the socket buffer for a long time + # can be dropped. Default is 0, disabled. In seconds, such as 3. + # sock-queue-timeout: 0 + # Use systemd socket activation for UDP, TCP, and control sockets. # use-systemd: no diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 18bfd44d8..8ab221456 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -398,6 +398,14 @@ as a cache response was sent. .I threadX.num.expired number of replies that served an expired cache entry. .TP +.I threadX.num.queries_timed_out +number of queries that are dropped because they waited in the UDP socket buffer +for too long. +.TP +.I threadX.query.queue_time_us.max +The maximum wait time for packets in the socket buffer, in microseconds. This +is only reported when sock-queue-timeout is enabled. +.TP .I threadX.num.recursivereplies The number of replies sent to queries that needed recursive processing. Could be smaller than threadX.num.cachemiss if due to timeouts no replies were sent for some queries. .TP @@ -462,6 +470,12 @@ summed over threads. .I total.num.expired summed over threads. .TP +.I total.num.queries_timed_out +summed over threads. +.TP +.I total.query.queue_time_us.max +the maximum of the thread values. +.TP .I total.num.recursivereplies summed over threads. .TP diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 79039d58e..33c15e282 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -505,6 +505,14 @@ configured, and finally to 0 if the number of free buffers falls below A minimum actual timeout of 200 milliseconds is observed regardless of the advertised timeout. .TP +.B sock\-queue\-timeout: \fI\fR +UDP queries that have waited in the socket buffer for a long time can be +dropped. Default is 0, disabled. The time is set in seconds, 3 could be a +good value to ignore old queries that likely the client does not need a reply +for any more. This could happen if the host has not been able to service +the queries for a while, i.e. Unbound is not running, and then is enabled +again. It uses timestamp socket options. +.TP .B tcp\-upstream: \fI Enable or disable whether the upstream queries use TCP only for transport. Default is no. Useful in tunneling scenarios. If set to no you can specify diff --git a/util/timeval_func.c b/util/timeval_func.c index 83e963dc8..90250e153 100644 --- a/util/timeval_func.c +++ b/util/timeval_func.c @@ -1,7 +1,7 @@ /* * util/timeval_func.c - helpers to work with struct timeval values. * - * Copyright (c) 2007, NLnet Labs. All rights reserved. + * Copyright (c) 2023, NLnet Labs. All rights reserved. * * This software is open source. * @@ -39,6 +39,7 @@ * This file contains helpers to manipulate struct timeval values. */ +#include "config.h" #include "timeval_func.h" /** subtract timers and the values do not overflow or become negative */ diff --git a/util/timeval_func.h b/util/timeval_func.h index afc35c7e9..819d1dd80 100644 --- a/util/timeval_func.h +++ b/util/timeval_func.h @@ -1,7 +1,7 @@ /* - * util/timeval)func.h - definitions of helpers for strcut timeval values. + * util/timeval_func.h - definitions of helpers for struct timeval values. * - * Copyright (c) 2007, NLnet Labs. All rights reserved. + * Copyright (c) 2023, NLnet Labs. All rights reserved. * * This software is open source. * From 8058dc9127f4bc295a745aeaa2ed0a4f0e4b74ab Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 26 Apr 2023 14:07:33 +0200 Subject: [PATCH 112/177] - Fix for #882: document variable to stop doxygen warning. --- doc/Changelog | 1 + services/listen_dnsport.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4371e3044..cdd74bd41 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Fix for #882: small changes, date updated in Copyright for util/timeval_func.c and util/timeval_func.h. Man page entries and example entry. + - Fix for #882: document variable to stop doxygen warning. 19 April 2023: Wouter - Fix for #878: Invalid IP address in unbound.conf causes Segmentation diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 2163a949d..9389b352a 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1234,6 +1234,9 @@ if_is_ssl(const char* ifname, const char* port, int ssl_port, * @param use_systemd: if true, fetch sockets from systemd. * @param dnscrypt_port: dnscrypt service port number * @param dscp: DSCP to use. + * @param sock_queue_timeout: the sock_queue_timeout from config. Seconds to + * wait to discard if UDP packets have waited for long in the socket + * buffer. * @return: returns false on error. */ static int From 1aa2c318e7f3720e54f401c0945a3093a5b7fbcb Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Wed, 26 Apr 2023 17:11:29 +0200 Subject: [PATCH 113/177] Remove msg_del_for_0ttl, call msg_cache_remove directly --- services/cache/dns.c | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/services/cache/dns.c b/services/cache/dns.c index 9fbcb5f0f..11ea40b7f 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -132,26 +132,6 @@ msg_cache_remove(struct module_env* env, uint8_t* qname, size_t qnamelen, slabhash_remove(env->msg_cache, h, &k); } -/** remove servfail msg cache entry */ -static void -msg_del_for_0ttl(struct module_env* env, struct query_info* qinfo, - uint32_t flags) -{ - struct msgreply_entry* e; - /* see if there is an existing entry, and then remove it, so that - * lookups move from the cacheresponse stage to the recursionresponse - * stage */ - e = msg_cache_lookup(env, qinfo->qname, qinfo->qname_len, - qinfo->qtype, qinfo->qclass, flags, 0, 0); - if(!e) return; - /* we don't check for the ttl here, also expired entries - * are removed. If the user uses serve-expired, they would still be - * used to answer from cache */ - lock_rw_unlock(&e->entry.lock); - msg_cache_remove(env, qinfo->qname, qinfo->qname_len, qinfo->qtype, - qinfo->qclass, flags); -} - void dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, hashvalue_type hash, struct reply_info* rep, time_t leeway, int pside, @@ -189,7 +169,8 @@ dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, * - NODATA * - an older record that is expired * - an older record that did not yet expire */ - msg_del_for_0ttl(env, qinfo, flags); + msg_cache_remove(env, qinfo->qname, qinfo->qname_len, + qinfo->qtype, qinfo->qclass, flags); return; } From a50ddd7ab918cbbd307cef4ae42e1b8e1b4dd3a9 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Wed, 26 Apr 2023 17:15:59 +0200 Subject: [PATCH 114/177] Changelog for #860 --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index cdd74bd41..e6ec25b1b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 April 2023: Philip + - Fix issue #860: Bad interaction with 0 TTL records and serve-expired + 26 April 2023: Wouter - Merge #882 from vvfedorenko: Features/dropqueuedpackets, with sock-queue-timeout option that drops packets that have been in the From 70c2b587fcb73b6584c698569c9ba1d198a5ee07 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 1 May 2023 09:26:17 +0200 Subject: [PATCH 115/177] - Fix RPZ IP responses with trigger rpz-drop on cache entries, that they are dropped. --- daemon/worker.c | 5 +++-- doc/Changelog | 4 ++++ testdata/rpz_respip.rpl | 17 ++++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 5c373b79b..e73ae1d94 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -566,9 +566,10 @@ apply_respip_action(struct worker* worker, const struct query_info* qinfo, /* xxx_deny actions mean dropping the reply, unless the original reply * was redirected to response-ip data. */ - if((actinfo.action == respip_deny || + if(actinfo.action == respip_always_deny || + ((actinfo.action == respip_deny || actinfo.action == respip_inform_deny) && - *encode_repp == rep) + *encode_repp == rep)) *encode_repp = NULL; /* If address info is returned, it means the action should be an diff --git a/doc/Changelog b/doc/Changelog index e6ec25b1b..bec4ab742 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +1 May 2023: Wouter + - Fix RPZ IP responses with trigger rpz-drop on cache entries, that + they are dropped. + 26 April 2023: Philip - Fix issue #860: Bad interaction with 0 TTL records and serve-expired diff --git a/testdata/rpz_respip.rpl b/testdata/rpz_respip.rpl index 894a7cc5f..795bb25c8 100644 --- a/testdata/rpz_respip.rpl +++ b/testdata/rpz_respip.rpl @@ -458,14 +458,29 @@ e. IN AAAA ENTRY_END STEP 29 TIME_PASSES ELAPSE 12 +; should be dropped, with cache entry too. STEP 30 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION +e. IN A +ENTRY_END +STEP 31 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +e. IN AAAA +ENTRY_END +STEP 32 TIME_PASSES ELAPSE 12 + +STEP 33 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION y. IN A ENTRY_END -STEP 31 CHECK_ANSWER +STEP 34 CHECK_ANSWER ENTRY_BEGIN MATCH all REPLY QR TC RD RA NOERROR From adb4aeb60983f01e58dfce9f7a45fc6e1461e893 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 1 May 2023 18:23:13 +0200 Subject: [PATCH 116/177] - For #722: Minor fixes, formatting and refactoring. --- dns64/dns64.c | 2 +- doc/example.conf.in | 2 ++ doc/unbound.conf.5.in | 7 +++-- iterator/iter_utils.c | 27 +++++++++-------- iterator/iter_utils.h | 4 ++- iterator/iterator.c | 53 ++++++++++------------------------ iterator/iterator.h | 2 +- smallapp/unbound-checkconf.c | 2 +- testdata/iter_nat64_prefix.rpl | 1 + util/config_file.c | 1 + util/net_help.c | 49 +++++++++++++++++++++++++++++-- util/net_help.h | 24 +++++++++++++++ 12 files changed, 114 insertions(+), 60 deletions(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index 4b98b609e..cd53df278 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -59,7 +59,7 @@ ******************************************************************************/ /** - * This is the default DNS64 prefix that is used whent he dns64 module is listed + * This is the default DNS64 prefix that is used when the dns64 module is listed * in module-config but when the dns64-prefix variable is not present. */ static const char DEFAULT_DNS64_PREFIX[] = "64:ff9b::/96"; diff --git a/doc/example.conf.in b/doc/example.conf.in index 279bcccdd..0980212e1 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -248,6 +248,8 @@ server: # the network, unbound can use NAT64 to reach these servers with # the following option. This is NOT needed for enabling DNS64 on a # system that has IPv4 connectivity. + # Consider also enabling prefer-ip6 to prefer native IPv6 connections + # to nameservers. # do-nat64: no # NAT64 prefix. Defaults to using dns64-prefix value. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 9e2edaba6..76ffde9bd 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2318,12 +2318,15 @@ NAT64 operation allows using a NAT64 prefix for outbound requests to IPv4-only servers. It is controlled by two options in the \fBserver:\fR section: .TP .B do\-nat64: \fI\fR -Use NAT64 to reach IPv4-only servers. Default no. +Use NAT64 to reach IPv4-only servers. +Consider also enabling \fBprefer\-ip6\fR to prefer native IPv6 connections to +nameservers. +Default no. .TP .B nat64\-prefix: \fI\fR Use a specific NAT64 prefix to reach IPv4-only servers. Defaults to using the prefix configured in \fBdns64\-prefix\fR, which in turn defaults to -64:ff9b::/96. Must be /96 or shorter. +64:ff9b::/96. The prefix length must be one of /32, /40, /48, /56, /64 or /96. .SS "DNSCrypt Options" .LP The diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index c8c41a196..961f76241 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -180,25 +180,23 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) } nat64_prefix = cfg->nat64_prefix; - if (!nat64_prefix) + if(!nat64_prefix) nat64_prefix = cfg->dns64_prefix; - if (!nat64_prefix) + if(!nat64_prefix) nat64_prefix = DEFAULT_NAT64_PREFIX; - if (!netblockstrtoaddr(nat64_prefix, 0, &iter_env->nat64_prefix_addr, - &iter_env->nat64_prefix_addrlen, - &iter_env->nat64_prefix_net)) { + if(!netblockstrtoaddr(nat64_prefix, 0, &iter_env->nat64_prefix_addr, + &iter_env->nat64_prefix_addrlen, + &iter_env->nat64_prefix_net)) { log_err("cannot parse nat64-prefix netblock: %s", nat64_prefix); return 0; } - if (!addr_is_ip6(&iter_env->nat64_prefix_addr, - iter_env->nat64_prefix_addrlen)) { - log_err("nat64_prefix is not IPv6: %s", cfg->nat64_prefix); + if(!addr_is_ip6(&iter_env->nat64_prefix_addr, + iter_env->nat64_prefix_addrlen)) { + log_err("nat64-prefix is not IPv6: %s", cfg->nat64_prefix); return 0; } - if (iter_env->nat64_prefix_net != 32 && iter_env->nat64_prefix_net != 40 && - iter_env->nat64_prefix_net != 48 && iter_env->nat64_prefix_net != 56 && - iter_env->nat64_prefix_net != 64 && iter_env->nat64_prefix_net != 96 ) { - log_err("dns64-prefix length it not 32, 40, 48, 56, 64 or 96: %s", + if(!prefixnet_is_nat64(iter_env->nat64_prefix_net)) { + log_err("nat64-prefix length it not 32, 40, 48, 56, 64 or 96: %s", nat64_prefix); return 0; } @@ -780,12 +778,13 @@ iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp, int supports_ipv4, int supports_ipv6, int use_nat64) + struct delegpt* dp, int supports_ipv4, int supports_ipv6, + int use_nat64) { struct delegpt_ns* ns; struct delegpt_addr* a; - if (supports_ipv6 && use_nat64) + if(supports_ipv6 && use_nat64) supports_ipv4 = 1; /* check: diff --git a/iterator/iter_utils.h b/iterator/iter_utils.h index 48ea8316b..fa860fa68 100644 --- a/iterator/iter_utils.h +++ b/iterator/iter_utils.h @@ -189,9 +189,11 @@ void iter_mark_pside_cycle_targets(struct module_qstate* qstate, * if not, then the IPv4 addresses are useless. * @param supports_ipv6: if we support ipv6 for lookups to the target. * if not, then the IPv6 addresses are useless. + * @param use_nat64: if we support NAT64 for lookups to the target. + * if yes, IPv4 addresses are useful even if we don't support IPv4. * @return true if dp is useless. */ -int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, +int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, struct delegpt* dp, int supports_ipv4, int supports_ipv6, int use_nat64); diff --git a/iterator/iterator.c b/iterator/iterator.c index 3e0ee035e..e7365c566 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1557,17 +1557,17 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, /* see if this dp not useless. * It is useless if: - * o all NS items are required glue. + * o all NS items are required glue. * or the query is for NS item that is required glue. * o no addresses are provided. * o RD qflag is on. * Instead, go up one level, and try to get even further - * If the root was useless, use safety belt information. + * If the root was useless, use safety belt information. * Only check cache returns, because replies for servers * could be useless but lead to loops (bumping into the * same server reply) if useless-checked. */ - if(iter_dp_is_useless(&qstate->qinfo, qstate->query_flags, + if(iter_dp_is_useless(&qstate->qinfo, qstate->query_flags, iq->dp, ie->supports_ipv4, ie->supports_ipv6, ie->use_nat64)) { struct delegpt* retdp = NULL; @@ -1930,7 +1930,7 @@ query_for_targets(struct module_qstate* qstate, struct iter_qstate* iq, break; } /* Send the A request. */ - if(ie->supports_ipv4 && + if((ie->supports_ipv4 || ie->use_nat64) && ((ns->lame && !ns->done_pside4) || (!ns->lame && !ns->got4))) { if(!generate_target_query(qstate, iq, id, @@ -2257,6 +2257,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, int tf_policy; struct delegpt_addr* target; struct outbound_entry* outq; + struct sockaddr_storage real_addr; + socklen_t real_addrlen; int auth_fallback = 0; uint8_t* qout_orig = NULL; size_t qout_orig_len = 0; @@ -2803,45 +2805,22 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, /* We have a valid target. */ if(verbosity >= VERB_QUERY) { log_query_info(VERB_QUERY, "sending query:", &iq->qinfo_out); - log_name_addr(VERB_QUERY, "sending to target:", iq->dp->name, + log_name_addr(VERB_QUERY, "sending to target:", iq->dp->name, &target->addr, target->addrlen); verbose(VERB_ALGO, "dnssec status: %s%s", iq->dnssec_expected?"expected": "not expected", iq->dnssec_lame_query?" but lame_query anyway": ""); } - struct sockaddr_storage real_addr = target->addr; - socklen_t real_addrlen = target->addrlen; + real_addr = target->addr; + real_addrlen = target->addrlen; - if (ie->use_nat64 && real_addr.ss_family == AF_INET) { - struct sockaddr_in *sin = (struct sockaddr_in *)&target->addr; - struct sockaddr_in6 *sin6; - int plen = ie->nat64_prefix_net; - uint8_t *v4_byte; - - real_addr = ie->nat64_prefix_addr; - real_addrlen = ie->nat64_prefix_addrlen; - - sin6 = (struct sockaddr_in6 *)&real_addr; - sin6->sin6_flowinfo = 0; - sin6->sin6_port = sin->sin_port; - - /* config validation enforces these prefix lengths too */ - log_assert(plen == 32 || plen == 40 || plen == 48 || plen == 56 - || plen == 64 || plen == 96); - plen = plen / 8; - - v4_byte = (uint8_t *)&sin->sin_addr.s_addr; - for (int i = 0; i < 4; i++) { - if (plen == 8) - /* bits 64...72 are MBZ */ - sin6->sin6_addr.s6_addr[plen++] = 0; - - sin6->sin6_addr.s6_addr[plen++] = *v4_byte++; - } - - log_name_addr(VERB_QUERY, "applied NAT64:", iq->dp->name, - &real_addr, real_addrlen); + if(ie->use_nat64 && target->addr.ss_family == AF_INET) { + addr_to_nat64(&target->addr, &ie->nat64_prefix_addr, + ie->nat64_prefix_addrlen, ie->nat64_prefix_net, + &real_addr, &real_addrlen); + log_name_addr(VERB_QUERY, "applied NAT64:", + iq->dp->name, &real_addr, real_addrlen); } fptr_ok(fptr_whitelist_modenv_send_query(qstate->env->send_query)); @@ -2871,7 +2850,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } log_addr(VERB_QUERY, "error sending query to auth server", - &target->addr, target->addrlen); + &real_addr, real_addrlen); if(qstate->env->cfg->qname_minimisation) iq->minimisation_state = SKIP_MINIMISE_STATE; return next_state(iq, QUERYTARGETS_STATE); diff --git a/iterator/iterator.h b/iterator/iterator.h index 9171ff60e..74299e05a 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -103,7 +103,7 @@ extern int BLACKLIST_PENALTY; #define RTT_BAND 400 /** - * Global state for the iterator. + * Global state for the iterator. */ struct iter_env { /** A flag to indicate whether or not we have an IPv6 route */ diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index f850469ba..ff8043711 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -714,7 +714,7 @@ morechecks(struct config_file* cfg) cfg->chrootdir, cfg); } #endif - /* remove chroot setting so that modules are not stripping pathnames*/ + /* remove chroot setting so that modules are not stripping pathnames */ free(cfg->chrootdir); cfg->chrootdir = NULL; diff --git a/testdata/iter_nat64_prefix.rpl b/testdata/iter_nat64_prefix.rpl index afc317e85..ecb6508dc 100644 --- a/testdata/iter_nat64_prefix.rpl +++ b/testdata/iter_nat64_prefix.rpl @@ -3,6 +3,7 @@ server: do-nat64: yes nat64-prefix: 2001:db8:1234::/96 target-fetch-policy: "0 0 0 0 0" + do-ip4: no stub-zone: name: "." diff --git a/util/config_file.c b/util/config_file.c index a04c8cf09..54bd5f952 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -1648,6 +1648,7 @@ config_delete(struct config_file* cfg) free(cfg->server_cert_file); free(cfg->control_key_file); free(cfg->control_cert_file); + free(cfg->nat64_prefix); free(cfg->dns64_prefix); config_delstrlist(cfg->dns64_ignore_aaaa); free(cfg->dnstap_socket_path); diff --git a/util/net_help.c b/util/net_help.c index de2d771bd..e559c9b2f 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -779,8 +779,8 @@ addr_in_common(struct sockaddr_storage* addr1, int net1, return match; } -void -addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen, +void +addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen, char* buf, size_t len) { int af = (int)((struct sockaddr_in*)addr)->sin_family; @@ -792,7 +792,50 @@ addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen, } } -int +int +prefixnet_is_nat64(int prefixnet) +{ + return (prefixnet == 32 || prefixnet == 40 || + prefixnet == 48 || prefixnet == 56 || + prefixnet == 64 || prefixnet == 96); +} + +void +addr_to_nat64(const struct sockaddr_storage* addr, + const struct sockaddr_storage* nat64_prefix, + socklen_t nat64_prefixlen, int nat64_prefixnet, + struct sockaddr_storage* nat64_addr, socklen_t* nat64_addrlen) +{ + struct sockaddr_in *sin = (struct sockaddr_in *)addr; + struct sockaddr_in6 *sin6; + uint8_t *v4_byte; + + /* This needs to be checked by the caller */ + log_assert(addr->ss_family == AF_INET); + /* Current usage is only from config values; prefix lengths enforced + * during config validation */ + log_assert(prefixnet_is_nat64(nat64_prefixnet)); + + *nat64_addr = *nat64_prefix; + *nat64_addrlen = nat64_prefixlen; + + sin6 = (struct sockaddr_in6 *)nat64_addr; + sin6->sin6_flowinfo = 0; + sin6->sin6_port = sin->sin_port; + + nat64_prefixnet = nat64_prefixnet / 8; + + v4_byte = (uint8_t *)&sin->sin_addr.s_addr; + for(int i = 0; i < 4; i++) { + if(nat64_prefixnet == 8) { + /* bits 64...71 are MBZ */ + sin6->sin6_addr.s6_addr[nat64_prefixnet++] = 0; + } + sin6->sin6_addr.s6_addr[nat64_prefixnet++] = *v4_byte++; + } +} + +int addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen) { /* prefix for ipv4 into ipv6 mapping is ::ffff:x.x.x.x */ diff --git a/util/net_help.h b/util/net_help.h index f1881b3ed..e931ed8a6 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -331,6 +331,30 @@ int addr_in_common(struct sockaddr_storage* addr1, int net1, void addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen, char* buf, size_t len); +/** + * Check if the prefix network length is one of the allowed 32, 40, 48, 56, 64, + * or 96. + * @param prefixnet: prefix network length to check. + * @return 1 on success, 0 on failure. + */ +int prefixnet_is_nat64(int prefixnet); + +/** + * Create a NAT64 address from a given address (needs to be IPv4) and a given + * NAT64 prefix. The NAT64 prefix net needs to be one of 32, 40, 48, 56, 64, 96. + * @param addr: IPv4 address. + * @param nat64_prefix: NAT64 prefix. + * @param nat64_prefixlen: NAT64 prefix len. + * @param nat64_prefixnet: NAT64 prefix mask. + * @param nat64_addr: the resulting NAT64 address. + * @param nat64_addrlen: the resulting NAT64 address length. + * @return: 1 on success, 0 on input error. + */ +void addr_to_nat64(const struct sockaddr_storage* addr, + const struct sockaddr_storage* nat64_prefix, + socklen_t nat64_prefixlen, int nat64_prefixnet, + struct sockaddr_storage* nat64_addr, socklen_t* nat64_addrlen); + /** * See if sockaddr is an ipv6 mapped ipv4 address, "::ffff:0.0.0.0" * @param addr: address From 2695eb9d1a85d910086c7b4f9d6f9288e99c3a1d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 1 May 2023 18:30:47 +0200 Subject: [PATCH 117/177] Changelog entry for #722: - Merge #722 from David 'eqvinox' Lamparter: NAT64 support. - For #722: minor fixes, formatting, refactoring. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index bec4ab742..51f285984 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +1 May 2023: George + - Merge #722 from David 'eqvinox' Lamparter: NAT64 support. + - For #722: minor fixes, formatting, refactoring. + 1 May 2023: Wouter - Fix RPZ IP responses with trigger rpz-drop on cache entries, that they are dropped. From 806c3d7330aae9b93c1624c8ed09f60e14288ee0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 4 May 2023 11:12:11 +0200 Subject: [PATCH 118/177] - Fix #885: Error: util/configlexer.c: No such file or directory, adds error messages explaining to install flex and bison. --- Makefile.in | 1 + config.h.in | 30 ++++++++++++++++-------------- configure | 25 ++++++++++++++++++++++++- configure.ac | 10 ++++++++++ doc/Changelog | 4 ++++ 5 files changed, 55 insertions(+), 15 deletions(-) diff --git a/Makefile.in b/Makefile.in index 2f16220d3..74e45bc5e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -499,6 +499,7 @@ util/configlexer.c: $(srcdir)/util/configlexer.lex util/configparser.h echo "#include \"util/configyyrename.h\"" >> $@ ;\ $(LEX) -t $(srcdir)/util/configlexer.lex >> $@ ;\ fi + @if test ! -f $@; then echo "No $@ : need flex and bison to compile from source repository"; exit 1; fi util/configparser.c util/configparser.h: $(srcdir)/util/configparser.y @-if test ! -d util; then $(INSTALL) -d util; fi diff --git a/config.h.in b/config.h.in index e7a44bf60..2c999d358 100644 --- a/config.h.in +++ b/config.h.in @@ -364,6 +364,9 @@ /* Define if we have LibreSSL */ #undef HAVE_LIBRESSL +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_NET_TSTAMP_H + /* Define to 1 if you have the `localtime_r' function. */ #undef HAVE_LOCALTIME_R @@ -671,9 +674,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H -/* Define to 1 if you have the header file. */ -#undef HAVE_LINUX_NET_TSTAMP_H - /* Define to 1 if you have the `tzset' function. */ #undef HAVE_TZSET @@ -1071,39 +1071,39 @@ #if defined(OMITTED__D_GNU_SOURCE) && !defined(_GNU_SOURCE) #define _GNU_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_BSD_SOURCE) && !defined(_BSD_SOURCE) #define _BSD_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_DEFAULT_SOURCE) && !defined(_DEFAULT_SOURCE) #define _DEFAULT_SOURCE 1 -#endif +#endif #if defined(OMITTED__D__EXTENSIONS__) && !defined(__EXTENSIONS__) #define __EXTENSIONS__ 1 -#endif +#endif #if defined(OMITTED__D_POSIX_C_SOURCE_200112) && !defined(_POSIX_C_SOURCE) #define _POSIX_C_SOURCE 200112 -#endif +#endif #if defined(OMITTED__D_XOPEN_SOURCE_600) && !defined(_XOPEN_SOURCE) #define _XOPEN_SOURCE 600 -#endif +#endif #if defined(OMITTED__D_XOPEN_SOURCE_EXTENDED_1) && !defined(_XOPEN_SOURCE_EXTENDED) #define _XOPEN_SOURCE_EXTENDED 1 -#endif +#endif #if defined(OMITTED__D_ALL_SOURCE) && !defined(_ALL_SOURCE) #define _ALL_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_LARGEFILE_SOURCE_1) && !defined(_LARGEFILE_SOURCE) #define _LARGEFILE_SOURCE 1 -#endif +#endif @@ -1187,7 +1187,7 @@ #endif - + #ifdef HAVE_ATTR_FORMAT # define ATTR_FORMAT(archetype, string_index, first_to_check) \ __attribute__ ((format (archetype, string_index, first_to_check))) @@ -1297,7 +1297,7 @@ void* reallocarray(void *ptr, size_t nmemb, size_t size); #ifdef HAVE_WINSOCK2_H #define FD_SET_T (u_int) #else -#define FD_SET_T +#define FD_SET_T #endif @@ -1452,3 +1452,5 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, #define UNBOUND_CONTROL_PORT 8953 /** the version of unbound-control that this software implements */ #define UNBOUND_CONTROL_VERSION 1 + + diff --git a/configure b/configure index 491228b54..9c9103734 100755 --- a/configure +++ b/configure @@ -813,6 +813,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -964,6 +965,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1216,6 +1218,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1353,7 +1364,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1506,6 +1517,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -6599,6 +6611,11 @@ $as_echo "no" >&6; }; fi fi +if test "$LEX" = "" -o "$LEX" = ":"; then + if test ! -f util/configlexer.c; then + as_fn_error $? "no lex and no util/configlexer.c: need flex and bison to compile from source repository." "$LINENO" 5 + fi +fi for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -6642,6 +6659,11 @@ fi done test -n "$YACC" || YACC="yacc" +if test "$YACC" = "" -o "$YACC" = ":"; then + if test ! -f util/configparser.c; then + as_fn_error $? "no yacc and no util/configparser.c: need flex and bison to compile from source repository." "$LINENO" 5 + fi +fi # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -24276,3 +24298,4 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff --git a/configure.ac b/configure.ac index fa5ca1018..86b4fbc7d 100644 --- a/configure.ac +++ b/configure.ac @@ -389,7 +389,17 @@ fi if test "$LEX" != "" -a "$LEX" != ":"; then ACX_YYLEX_OPTION fi +if test "$LEX" = "" -o "$LEX" = ":"; then + if test ! -f util/configlexer.c; then + AC_MSG_ERROR([no lex and no util/configlexer.c: need flex and bison to compile from source repository.]) + fi +fi AC_PROG_YACC +if test "$YACC" = "" -o "$YACC" = ":"; then + if test ! -f util/configparser.c; then + AC_MSG_ERROR([no yacc and no util/configparser.c: need flex and bison to compile from source repository.]) + fi +fi AC_CHECK_PROG(doxygen, doxygen, doxygen) AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY diff --git a/doc/Changelog b/doc/Changelog index 51f285984..74b16d17b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +4 May 2023: Wouter + - Fix #885: Error: util/configlexer.c: No such file or directory, + adds error messages explaining to install flex and bison. + 1 May 2023: George - Merge #722 from David 'eqvinox' Lamparter: NAT64 support. - For #722: minor fixes, formatting, refactoring. From 8dd09e31d24eee2878460248208829dbc205d127 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 4 May 2023 11:17:06 +0200 Subject: [PATCH 119/177] - Fix to remove unused whitespace from acx_nlnetlabs.m4 and config.h. --- acx_nlnetlabs.m4 | 9 +++++---- config.h.in | 22 +++++++++++----------- doc/Changelog | 1 + 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 3d745727f..f27615bd8 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 45 +# Version 46 +# 2023-05-04 fix to remove unused whitespace. # 2023-01-26 fix -Wstrict-prototypes. # 2022-09-01 fix checking if nonblocking sockets work on OpenBSD. # 2021-08-17 fix sed script in ssldir split handling. @@ -476,7 +477,7 @@ fi dnl Setup ATTR_FORMAT config.h parts. dnl make sure you call ACX_CHECK_FORMAT_ATTRIBUTE also. AC_DEFUN([AHX_CONFIG_FORMAT_ATTRIBUTE], -[ +[ #ifdef HAVE_ATTR_FORMAT # define ATTR_FORMAT(archetype, string_index, first_to_check) \ __attribute__ ((format (archetype, string_index, first_to_check))) @@ -1318,7 +1319,7 @@ AC_DEFUN([AHX_CONFIG_W32_FD_SET_T], #ifdef HAVE_WINSOCK2_H #define FD_SET_T (u_int) #else -#define FD_SET_T +#define FD_SET_T #endif ]) @@ -1356,7 +1357,7 @@ dnl $3: define value, 1 AC_DEFUN([AHX_CONFIG_FLAG_OMITTED], [#if defined($1) && !defined($2) #define $2 $3 -[#]endif ]) +[#]endif]) dnl Wrapper for AHX_CONFIG_FLAG_OMITTED for -D style flags dnl $1: the -DNAME or -DNAME=value string. diff --git a/config.h.in b/config.h.in index 2c999d358..f31354d01 100644 --- a/config.h.in +++ b/config.h.in @@ -1071,39 +1071,39 @@ #if defined(OMITTED__D_GNU_SOURCE) && !defined(_GNU_SOURCE) #define _GNU_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_BSD_SOURCE) && !defined(_BSD_SOURCE) #define _BSD_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_DEFAULT_SOURCE) && !defined(_DEFAULT_SOURCE) #define _DEFAULT_SOURCE 1 -#endif +#endif #if defined(OMITTED__D__EXTENSIONS__) && !defined(__EXTENSIONS__) #define __EXTENSIONS__ 1 -#endif +#endif #if defined(OMITTED__D_POSIX_C_SOURCE_200112) && !defined(_POSIX_C_SOURCE) #define _POSIX_C_SOURCE 200112 -#endif +#endif #if defined(OMITTED__D_XOPEN_SOURCE_600) && !defined(_XOPEN_SOURCE) #define _XOPEN_SOURCE 600 -#endif +#endif #if defined(OMITTED__D_XOPEN_SOURCE_EXTENDED_1) && !defined(_XOPEN_SOURCE_EXTENDED) #define _XOPEN_SOURCE_EXTENDED 1 -#endif +#endif #if defined(OMITTED__D_ALL_SOURCE) && !defined(_ALL_SOURCE) #define _ALL_SOURCE 1 -#endif +#endif #if defined(OMITTED__D_LARGEFILE_SOURCE_1) && !defined(_LARGEFILE_SOURCE) #define _LARGEFILE_SOURCE 1 -#endif +#endif @@ -1187,7 +1187,7 @@ #endif - + #ifdef HAVE_ATTR_FORMAT # define ATTR_FORMAT(archetype, string_index, first_to_check) \ __attribute__ ((format (archetype, string_index, first_to_check))) @@ -1297,7 +1297,7 @@ void* reallocarray(void *ptr, size_t nmemb, size_t size); #ifdef HAVE_WINSOCK2_H #define FD_SET_T (u_int) #else -#define FD_SET_T +#define FD_SET_T #endif diff --git a/doc/Changelog b/doc/Changelog index 74b16d17b..55f2de292 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 4 May 2023: Wouter - Fix #885: Error: util/configlexer.c: No such file or directory, adds error messages explaining to install flex and bison. + - Fix to remove unused whitespace from acx_nlnetlabs.m4 and config.h. 1 May 2023: George - Merge #722 from David 'eqvinox' Lamparter: NAT64 support. From b2cba7b707f5eac7098d0f5a9c91f14e73d810ad Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 4 May 2023 15:53:05 +0200 Subject: [PATCH 120/177] - Fix doxygen in addr_to_nat64 header definition. --- doc/Changelog | 1 + util/net_help.h | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 55f2de292..b9fb9331e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix #885: Error: util/configlexer.c: No such file or directory, adds error messages explaining to install flex and bison. - Fix to remove unused whitespace from acx_nlnetlabs.m4 and config.h. + - Fix doxygen in addr_to_nat64 header definition. 1 May 2023: George - Merge #722 from David 'eqvinox' Lamparter: NAT64 support. diff --git a/util/net_help.h b/util/net_help.h index e931ed8a6..a9de910d5 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -348,7 +348,6 @@ int prefixnet_is_nat64(int prefixnet); * @param nat64_prefixnet: NAT64 prefix mask. * @param nat64_addr: the resulting NAT64 address. * @param nat64_addrlen: the resulting NAT64 address length. - * @return: 1 on success, 0 on input error. */ void addr_to_nat64(const struct sockaddr_storage* addr, const struct sockaddr_storage* nat64_prefix, From 1fb78afc291a72f2a69f2c8215e36428d5bfb8f8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 11 May 2023 09:32:59 +0200 Subject: [PATCH 121/177] - Fix warning in windows compile, in set_recvtimestamp. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b9fb9331e..9c5f7dea9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +11 May 2023: Wouter + - Fix warning in windows compile, in set_recvtimestamp. + 4 May 2023: Wouter - Fix #885: Error: util/configlexer.c: No such file or directory, adds error messages explaining to install flex and bison. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 9389b352a..60f9b41e5 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1130,6 +1130,7 @@ set_recvtimestamp(int s) return 1; #else log_err("packets timestamping is not supported on this platform"); + (void)s; return 0; #endif } From 2a2598dbf2b078329964ea52f815a959f10ebb4d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 16 May 2023 08:50:38 +0200 Subject: [PATCH 122/177] - Fix #888: [FR] Use kernel timestamps for dnstap. --- daemon/worker.c | 9 +++++---- dnstap/dnstap.c | 7 +++++-- dnstap/dnstap.h | 4 +++- doc/Changelog | 3 +++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index e73ae1d94..ef9624b8b 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1305,9 +1305,9 @@ worker_handle_request(struct comm_point* c, void* arg, int error, wait_queue_time = wait_time.tv_sec * 1000000 + wait_time.tv_usec; if (worker->stats.max_query_time_us < wait_queue_time) worker->stats.max_query_time_us = wait_queue_time; - c->recv_tv.tv_sec += worker->env.cfg->sock_queue_timeout; - if (timeval_smaller(&c->recv_tv, worker->env.now_tv)) { - /* count and drop queries that were sitting in the socket queue too long */ + if(wait_queue_time > + (long long)(worker->env.cfg->sock_queue_timeout * 1000000)) { + /* count and drop queries that were sitting in the socket queue too long */ worker->stats.num_queries_timed_out++; return 0; } @@ -1364,7 +1364,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, if(worker->dtenv.log_client_query_messages) { log_addr(VERB_ALGO, "request from client", &repinfo->client_addr, repinfo->client_addrlen); log_addr(VERB_ALGO, "to local addr", (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->socket->addr->ai_addrlen); - dt_msg_send_client_query(&worker->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr->ai_addr, c->type, c->buffer); + dt_msg_send_client_query(&worker->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr->ai_addr, c->type, c->buffer, + ((worker->env.cfg->sock_queue_timeout && timeval_isset(&c->recv_tv))?&c->recv_tv:NULL)); } #endif /* Check deny/refuse ACLs */ diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index 5c0cde1d5..d15eb9b00 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -388,12 +388,15 @@ dt_msg_send_client_query(struct dt_env *env, struct sockaddr_storage *qsock, struct sockaddr_storage *rsock, enum comm_point_type cptype, - sldns_buffer *qmsg) + sldns_buffer *qmsg, + struct timeval* tstamp) { struct dt_msg dm; struct timeval qtime; - gettimeofday(&qtime, NULL); + if(tstamp) + memcpy(&qtime, tstamp, sizeof(qtime)); + else gettimeofday(&qtime, NULL); /* type */ dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__CLIENT_QUERY); diff --git a/dnstap/dnstap.h b/dnstap/dnstap.h index 449fae727..169bdc2c6 100644 --- a/dnstap/dnstap.h +++ b/dnstap/dnstap.h @@ -126,13 +126,15 @@ dt_delete(struct dt_env *env); * @param rsock: local (service) address/port. * @param cptype: comm_udp or comm_tcp. * @param qmsg: query message. + * @param tstamp: timestamp or NULL if none provided. */ void dt_msg_send_client_query(struct dt_env *env, struct sockaddr_storage *qsock, struct sockaddr_storage *rsock, enum comm_point_type cptype, - struct sldns_buffer *qmsg); + struct sldns_buffer *qmsg, + struct timeval* tstamp); /** * Create and send a new dnstap "Message" event of type CLIENT_RESPONSE. diff --git a/doc/Changelog b/doc/Changelog index 9c5f7dea9..5d18fb7cc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 May 2023: Wouter + - Fix #888: [FR] Use kernel timestamps for dnstap. + 11 May 2023: Wouter - Fix warning in windows compile, in set_recvtimestamp. From a07ccbae9aad7f2d3e119d26e58c0cfde34920a1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 16 May 2023 09:21:21 +0200 Subject: [PATCH 123/177] - Fix to print debug log for ancillary data with correct IP address. --- doc/Changelog | 1 + util/netevent.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 5d18fb7cc..8923aa857 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 16 May 2023: Wouter - Fix #888: [FR] Use kernel timestamps for dnstap. + - Fix to print debug log for ancillary data with correct IP address. 11 May 2023: Wouter - Fix warning in windows compile, in set_recvtimestamp. diff --git a/util/netevent.c b/util/netevent.c index 6ca51622b..75bbae35c 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -626,7 +626,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo)); } #endif /* S_SPLINT_S */ - if(verbosity >= VERB_ALGO) + if(verbosity >= VERB_ALGO && r->srctype != 0) p_ancil("send_udp over interface", r); sent = sendmsg(c->fd, &msg, 0); if(sent == -1) { @@ -925,7 +925,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) } } - if(verbosity >= VERB_ALGO) + if(verbosity >= VERB_ALGO && rep.srctype != 0) p_ancil("receive_udp on interface", &rep); #endif /* S_SPLINT_S */ From da78c42f889a9ae5b5aa89ae015fec9f2376ea60 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 May 2023 14:38:41 +0200 Subject: [PATCH 124/177] - Fix RPZ removal of client-ip, nsip, nsdname triggers from IXFR. --- doc/Changelog | 3 + services/authzone.c | 4 +- services/rpz.c | 221 +++++++++++++++++++++++++++++++----- services/rpz.h | 7 +- testdata/rpz_ixfr.rpl | 256 +++++++++++++++++++++++++++++++++++++++++- 5 files changed, 458 insertions(+), 33 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8923aa857..8d07f417d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +19 May 2023: Wouter + - Fix RPZ removal of client-ip, nsip, nsdname triggers from IXFR. + 16 May 2023: Wouter - Fix #888: [FR] Use kernel timestamps for dnstap. - Fix to print debug log for ancillary data with correct IP address. diff --git a/services/authzone.c b/services/authzone.c index 3898767c7..31ab510e2 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1306,8 +1306,8 @@ az_remove_rr(struct auth_zone* z, uint8_t* rr, size_t rr_len, auth_data_delete(node); } if(z->rpz) { - rpz_remove_rr(z->rpz, z->namelen, dname, dname_len, rr_type, - rr_class, rdata, rdatalen); + rpz_remove_rr(z->rpz, z->name, z->namelen, dname, dname_len, + rr_type, rr_class, rdata, rdatalen); } return 1; } diff --git a/services/rpz.c b/services/rpz.c index e876f3f94..d0931f44b 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1188,6 +1188,22 @@ rpz_find_zone(struct local_zones* zones, uint8_t* qname, size_t qname_len, uint1 return z; } +/** Find entry for RR type in the list of rrsets for the clientip. */ +static struct local_rrset* +rpz_find_synthesized_rrset(uint16_t qtype, + struct clientip_synthesized_rr* data) +{ + struct local_rrset* cursor = data->data; + while( cursor != NULL) { + struct packed_rrset_key* packed_rrset = &cursor->rrset->rk; + if(htons(qtype) == packed_rrset->type) { + return cursor; + } + cursor = cursor->next; + } + return NULL; +} + /** * Remove RR from RPZ's local-data * @param z: local-zone for RPZ, holding write lock @@ -1270,15 +1286,15 @@ rpz_rrset_delete_rr(struct resp_addr* raddr, uint16_t rr_type, uint8_t* rdata, } -/** Remove RR from RPZ's local-zone */ +/** Remove RR from rpz localzones structure */ static void -rpz_remove_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, - enum rpz_action a, uint16_t rr_type, uint16_t rr_class, - uint8_t* rdatawl, size_t rdatalen) +rpz_remove_local_zones_trigger(struct local_zones* zones, uint8_t* dname, + size_t dnamelen, enum rpz_action a, uint16_t rr_type, + uint16_t rr_class, uint8_t* rdatawl, size_t rdatalen) { struct local_zone* z; int delete_zone = 1; - z = rpz_find_zone(r->local_zones, dname, dnamelen, rr_class, + z = rpz_find_zone(zones, dname, dnamelen, rr_class, 1 /* only exact */, 1 /* wr lock */, 1 /* keep lock*/); if(!z) { verbose(VERB_ALGO, "rpz: cannot remove RR from IXFR, " @@ -1290,15 +1306,24 @@ rpz_remove_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, dnamelen, rr_type, rdatawl, rdatalen); else if(a != localzone_type_to_rpz_action(z->type)) { lock_rw_unlock(&z->lock); - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); return; } lock_rw_unlock(&z->lock); if(delete_zone) { - local_zones_del_zone(r->local_zones, z); + local_zones_del_zone(zones, z); } - lock_rw_unlock(&r->local_zones->lock); - return; + lock_rw_unlock(&zones->lock); +} + +/** Remove RR from RPZ's local-zone */ +static void +rpz_remove_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rr_type, uint16_t rr_class, + uint8_t* rdatawl, size_t rdatalen) +{ + rpz_remove_local_zones_trigger(r->local_zones, dname, dnamelen, + a, rr_type, rr_class, rdatawl, rdatalen); } static void @@ -1335,15 +1360,159 @@ rpz_remove_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, lock_rw_unlock(&r->respip_set->lock); } +/** find and remove type from list of local_rrset entries*/ +static void +del_local_rrset_from_list(struct local_rrset** list_head, uint16_t dtype) +{ + struct local_rrset* prev=NULL, *p=*list_head; + while(p && ntohs(p->rrset->rk.type) != dtype) { + prev = p; + p = p->next; + } + if(!p) + return; /* rrset type not found */ + /* unlink it */ + if(prev) prev->next = p->next; + else *list_head = p->next; + /* no memory recycling for zone deletions ... */ +} + +/** Delete client-ip trigger RR from its RRset and perhaps also the rrset + * from the linked list. Returns if the local data is empty and the node can + * be deleted too, or not. */ +static int rpz_remove_clientip_rr(struct clientip_synthesized_rr* node, + uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen) +{ + struct local_rrset* rrset; + struct packed_rrset_data* d; + size_t index; + rrset = rpz_find_synthesized_rrset(rr_type, node); + if(rrset == NULL) + return 0; /* type not found, ignore */ + d = (struct packed_rrset_data*)rrset->rrset->entry.data; + if(!packed_rrset_find_rr(d, rdatawl, rdatalen, &index)) + return 0; /* RR not found, ignore */ + if(d->count == 1) { + /* regional alloc'd */ + /* delete the type entry from the list */ + del_local_rrset_from_list(&node->data, rr_type); + /* if the list is empty, the node can be removed too */ + if(node->data == NULL) + return 1; + } else if (d->count > 1) { + if(!local_rrset_remove_rr(d, index)) + return 0; + } + return 0; +} + +/** remove trigger RR from clientip_syntheized set tree. */ +static void +rpz_clientip_remove_trigger_rr(struct clientip_synthesized_rrset* set, + struct sockaddr_storage* addr, socklen_t addrlen, int net, + enum rpz_action a, uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen) +{ + struct clientip_synthesized_rr* node; + int delete_node = 1; + + lock_rw_wrlock(&set->lock); + node = (struct clientip_synthesized_rr*)addr_tree_find(&set->entries, + addr, addrlen, net); + if(node == NULL) { + /* netblock not found */ + verbose(VERB_ALGO, "rpz: cannot remove RR from IXFR, " + "RPZ address, netblock not found"); + lock_rw_unlock(&set->lock); + return; + } + lock_rw_wrlock(&node->lock); + if(a == RPZ_LOCAL_DATA_ACTION) { + /* remove RR, signal whether entry can be removed */ + delete_node = rpz_remove_clientip_rr(node, rr_type, rdatawl, + rdatalen); + } else if(a != node->action) { + /* ignore the RR with different action specification */ + delete_node = 0; + } + if(delete_node) { + rbtree_delete(&set->entries, node->node.node.key); + } + lock_rw_unlock(&set->lock); + lock_rw_unlock(&node->lock); + if(delete_node) { + lock_rw_destroy(&node->lock); + } +} + +/** Remove clientip trigger RR from RPZ. */ +static void +rpz_remove_clientip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen) +{ + struct sockaddr_storage addr; + socklen_t addrlen; + int net, af; + if(a == RPZ_INVALID_ACTION) + return; + if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) + return; + rpz_clientip_remove_trigger_rr(r->client_set, &addr, addrlen, net, + a, rr_type, rdatawl, rdatalen); +} + +/** Remove nsip trigger RR from RPZ. */ +static void +rpz_remove_nsip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen) +{ + struct sockaddr_storage addr; + socklen_t addrlen; + int net, af; + if(a == RPZ_INVALID_ACTION) + return; + if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) + return; + rpz_clientip_remove_trigger_rr(r->ns_set, &addr, addrlen, net, + a, rr_type, rdatawl, rdatalen); +} + +/** Remove nsdname trigger RR from RPZ. */ +static void +rpz_remove_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rr_type, uint16_t rr_class, + uint8_t* rdatawl, size_t rdatalen) +{ + uint8_t* dname_stripped = NULL; + size_t dnamelen_stripped = 0; + if(a == RPZ_INVALID_ACTION) + return; + if(!rpz_strip_nsdname_suffix(dname, dnamelen, &dname_stripped, + &dnamelen_stripped)) + return; + rpz_remove_local_zones_trigger(r->nsdname_zones, dname_stripped, + dnamelen_stripped, a, rr_type, rr_class, rdatawl, rdatalen); + free(dname_stripped); +} + void -rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, size_t dnamelen, - uint16_t rr_type, uint16_t rr_class, uint8_t* rdatawl, size_t rdatalen) +rpz_remove_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, + size_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint8_t* rdatawl, + size_t rdatalen) { size_t policydnamelen; enum rpz_trigger t; enum rpz_action a; uint8_t* policydname; + if(rpz_type_ignored(rr_type)) { + /* this rpz action is not valid, eg. this is the SOA or NS RR */ + return; + } + if(!dname_subdomain_c(dname, azname)) { + /* not subdomain of the RPZ zone. */ + return; + } + if(!(policydname = calloc(1, LDNS_MAX_DOMAINLEN + 1))) return; @@ -1358,13 +1527,28 @@ rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, size_t dnamelen, return; } t = rpz_dname_to_trigger(policydname, policydnamelen); + if(t == RPZ_INVALID_TRIGGER) { + /* skipping invalid trigger */ + free(policydname); + return; + } if(t == RPZ_QNAME_TRIGGER) { rpz_remove_qname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rdatawl, rdatalen); } else if(t == RPZ_RESPONSE_IP_TRIGGER) { rpz_remove_response_ip_trigger(r, policydname, policydnamelen, a, rr_type, rdatawl, rdatalen); + } else if(t == RPZ_CLIENT_IP_TRIGGER) { + rpz_remove_clientip_trigger(r, policydname, policydnamelen, a, + rr_type, rdatawl, rdatalen); + } else if(t == RPZ_NSIP_TRIGGER) { + rpz_remove_nsip_trigger(r, policydname, policydnamelen, a, + rr_type, rdatawl, rdatalen); + } else if(t == RPZ_NSDNAME_TRIGGER) { + rpz_remove_nsdname_trigger(r, policydname, policydnamelen, a, + rr_type, rr_class, rdatawl, rdatalen); } + /* else it was an unsupported trigger, also skipped. */ free(policydname); } @@ -1563,21 +1747,6 @@ rpz_local_encode(struct module_env* env, struct query_info* qinfo, return 1; } -static struct local_rrset* -rpz_find_synthesized_rrset(uint16_t qtype, - struct clientip_synthesized_rr* data) -{ - struct local_rrset* cursor = data->data; - while( cursor != NULL) { - struct packed_rrset_key* packed_rrset = &cursor->rrset->rk; - if(htons(qtype) == packed_rrset->type) { - return cursor; - } - cursor = cursor->next; - } - return NULL; -} - /** allocate SOA record ubrrsetkey in region */ static struct ub_packed_rrset_key* make_soa_ubrrset(struct auth_zone* auth_zone, struct auth_rrset* soa, diff --git a/services/rpz.h b/services/rpz.h index 53781197a..ae93af9a8 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -152,6 +152,7 @@ int rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dna /** * Delete policy matching RR, used for IXFR. * @param r: the rpz to add the policy to. + * @param azname: dname of the auth-zone * @param aznamelen: the length of the auth-zone name * @param dname: dname of the RR * @param dnamelen: length of the dname @@ -160,9 +161,9 @@ int rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dna * @param rdatawl: rdata of the RR, prepended with the rdata size * @param rdatalen: length if the RR, including the prepended rdata size */ -void rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, - size_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint8_t* rdatawl, - size_t rdatalen); +void rpz_remove_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, + uint8_t* dname, size_t dnamelen, uint16_t rr_type, uint16_t rr_class, + uint8_t* rdatawl, size_t rdatalen); /** * Walk over the RPZ zones to find and apply a QNAME trigger policy. diff --git a/testdata/rpz_ixfr.rpl b/testdata/rpz_ixfr.rpl index ca2b62335..356663157 100644 --- a/testdata/rpz_ixfr.rpl +++ b/testdata/rpz_ixfr.rpl @@ -4,6 +4,7 @@ server: target-fetch-policy: "0 0 0 0 0" qname-minimisation: no rrset-roundrobin: no + access-control: 192.0.0.0/8 allow rpz: name: "rpz.example.com." @@ -22,6 +23,11 @@ d.rpz.example.com. IN CNAME . 32.3.123.0.10.rpz-ip.rpz.example.com. A 10.66.0.3 32.3.123.0.10.rpz-ip.rpz.example.com. A 10.66.0.4 32.4.123.0.10.rpz-ip.rpz.example.com. CNAME . +; also test client-ip, and remove it later with an IXFR. +24.0.5.0.192.rpz-client-ip A 127.0.0.5 +24.0.6.0.192.rpz-client-ip CNAME *. +32.41.30.20.10.rpz-nsip A 127.0.0.1 +ns.gotham.com.rpz-nsdname A 127.0.0.1 TEMPFILE_END stub-zone: @@ -97,6 +103,42 @@ SECTION ANSWER d.rpz-ip. IN A 10.0.123.4 ENTRY_END +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +a.a. IN A +SECTION ANSWER +a.a. IN A 10.0.123.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +foo.com. IN NS +SECTION ANSWER +SECTION AUTHORITY +foo.com. 10 IN NS ns.foo.com. +SECTION ADDITIONAL +ns.foo.com. 10 IN A 10.20.30.41 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.com. IN NS +SECTION ANSWER +SECTION AUTHORITY +gotham.com. 10 IN NS ns.gotham.com. +SECTION ADDITIONAL +ns.gotham.com. 10 IN A 10.20.30.42 +ENTRY_END + ENTRY_BEGIN MATCH opcode qname qtype ADJUST copy_id @@ -124,6 +166,10 @@ d.rpz.example.com. IN CNAME . 32.3.123.0.10.rpz-ip.rpz.example.com. A 10.66.0.3 32.3.123.0.10.rpz-ip.rpz.example.com. A 10.66.0.4 32.4.123.0.10.rpz-ip.rpz.example.com. CNAME . +24.0.5.0.192.rpz-client-ip.rpz.example.com. A 127.0.0.5 +24.0.6.0.192.rpz-client-ip.rpz.example.com. CNAME *. +32.41.30.20.10.rpz-nsip.rpz.example.com. A 127.0.0.1 +ns.gotham.com.rpz-nsdname.rpz.example.com. A 127.0.0.1 rpz.example.com. IN SOA ns.rpz.example.com. hostmaster.rpz.example.com. 2 3600 900 86400 3600 b.rpz.example.com. TXT "hello from RPZ" c.rpz.example.com. TXT "hello from RPZ" @@ -136,6 +182,78 @@ ENTRY_END RANGE_END +; ns.foo.com +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.41 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +ns.foo.com. IN A +SECTION ANSWER +ns.foo.com. 10 IN A 10.20.30.41 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +ns.foo.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +foo.com. 10 IN SOA ns.foo.com. root.foo.com. 1 2 3 4 10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +www.foo.com. 10 IN A 10.20.30.42 +ENTRY_END + +RANGE_END + +; ns.gotham.com +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.42 +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +ns.gotham.com. IN A +SECTION ANSWER +ns.gotham.com. 10 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +ns.gotham.com. IN AAAA +SECTION ANSWER +SECTION AUTHORITY +gotham.com. 10 IN SOA ns.gotham.com. root.gotham.com. 1 2 3 4 10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR NOERROR AA +SECTION QUESTION +www.gotham.com. IN A +SECTION ANSWER +www.gotham.com. 10 IN A 10.20.30.43 +ENTRY_END + +RANGE_END + STEP 1 QUERY ENTRY_BEGIN REPLY RD @@ -244,7 +362,6 @@ SECTION QUESTION d.rpz-ip. IN A ENTRY_END - STEP 15 CHECK_ANSWER ENTRY_BEGIN MATCH all @@ -253,7 +370,74 @@ SECTION QUESTION d.rpz-ip. IN A ENTRY_END -STEP 16 TIME_PASSES ELAPSE 1 +STEP 16 QUERY ADDRESS 192.0.5.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN A +ENTRY_END + +STEP 17 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +a.a. IN A +SECTION ANSWER +a.a. IN A 127.0.0.5 +ENTRY_END + +STEP 18 QUERY ADDRESS 192.0.6.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN A +ENTRY_END + +STEP 19 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +a.a. IN A +SECTION ANSWER +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.foo.com. IN A +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +www.foo.com. IN A 127.0.0.1 +ENTRY_END + +STEP 22 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.gotham.com. IN A +ENTRY_END + +STEP 23 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA AA NOERROR +SECTION QUESTION +www.gotham.com. IN A +SECTION ANSWER +www.gotham.com. IN A 127.0.0.1 +ENTRY_END + +STEP 24 TIME_PASSES ELAPSE 1 STEP 30 TIME_PASSES ELAPSE 3600 STEP 40 TRAFFIC @@ -376,4 +560,72 @@ SECTION ANSWER d.rpz-ip. IN A 10.0.123.4 ENTRY_END +STEP 64 QUERY ADDRESS 192.0.5.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN A +ENTRY_END + +STEP 65 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a.a. IN A +SECTION ANSWER +a.a. IN A 10.0.123.5 +ENTRY_END + +STEP 66 QUERY ADDRESS 192.0.6.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN A +ENTRY_END + +STEP 67 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a.a. IN A +SECTION ANSWER +a.a. IN A 10.0.123.5 +ENTRY_END + +STEP 68 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.foo.com. IN A +ENTRY_END + +STEP 69 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.foo.com. IN A +SECTION ANSWER +www.foo.com. 10 IN A 10.20.30.42 +ENTRY_END + +STEP 70 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.gotham.com. IN A +ENTRY_END + +STEP 71 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.gotham.com. IN A +SECTION ANSWER +www.gotham.com. 10 IN A 10.20.30.43 +ENTRY_END + SCENARIO_END From 59fd48c2266c2da6c4f8a1791a366a9a56378fd6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 May 2023 16:36:31 +0200 Subject: [PATCH 125/177] - Fix to remove unused variables from RPZ clientip data structure. --- doc/Changelog | 1 + services/rpz.h | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8d07f417d..4e647d4df 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 19 May 2023: Wouter - Fix RPZ removal of client-ip, nsip, nsdname triggers from IXFR. + - Fix to remove unused variables from RPZ clientip data structure. 16 May 2023: Wouter - Fix #888: [FR] Use kernel timestamps for dnstap. diff --git a/services/rpz.h b/services/rpz.h index ae93af9a8..e6d8bf566 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -84,10 +84,11 @@ enum rpz_action { RPZ_CNAME_OVERRIDE_ACTION, /* RPZ CNAME action override*/ }; -struct clientip_synthesized_rrset{ +struct clientip_synthesized_rrset { struct regional* region; struct rbtree_type entries; - lock_rw_type lock; /* lock on the respip tree */ + /** lock on the entries tree */ + lock_rw_type lock; }; struct clientip_synthesized_rr { @@ -95,10 +96,6 @@ struct clientip_synthesized_rr { struct addr_tree_node node; /** lock on the node item */ lock_rw_type lock; - /** tag bitlist */ - uint8_t* taglist; - /** length of the taglist (in bytes) */ - size_t taglen; /** action for this address span */ enum rpz_action action; /** "local data" for this node */ From 17559c737b93ce41eaee8b5d6ae1d0f965cff7f8 Mon Sep 17 00:00:00 2001 From: Boris VANHOOF Date: Tue, 23 May 2023 09:21:58 +0200 Subject: [PATCH 126/177] typo in comments --- iterator/iterator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index e7365c566..d04a1c3b5 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1121,7 +1121,7 @@ generate_a_aaaa_check(struct module_qstate* qstate, struct iter_qstate* iq, * Generate a NS check request to obtain authoritative information * on an NS rrset. * - * @param qstate: the qtstate that triggered the need to prime. + * @param qstate: the qstate that triggered the need to prime. * @param iq: iterator query state. * @param id: module id. */ From 62d54d8091263b4dc24c9c3715bc7a0a52e24e92 Mon Sep 17 00:00:00 2001 From: Boris VANHOOF Date: Tue, 23 May 2023 09:22:35 +0200 Subject: [PATCH 127/177] remove unused function --- services/mesh.c | 6 ------ services/mesh.h | 8 -------- 2 files changed, 14 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index bff0c03e6..d7323bf58 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -891,12 +891,6 @@ mesh_state_create(struct module_env* env, struct query_info* qinfo, return mstate; } -int -mesh_state_is_unique(struct mesh_state* mstate) -{ - return mstate->unique != NULL; -} - void mesh_state_make_unique(struct mesh_state* mstate) { diff --git a/services/mesh.h b/services/mesh.h index 25121a67b..e4072a69c 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -478,14 +478,6 @@ struct mesh_state* mesh_state_create(struct module_env* env, struct query_info* qinfo, struct respip_client_info* cinfo, uint16_t qflags, int prime, int valrec); -/** - * Check if the mesh state is unique. - * A unique mesh state uses it's unique member to point to itself, else NULL. - * @param mstate: mesh state to check. - * @return true if the mesh state is unique, false otherwise. - */ -int mesh_state_is_unique(struct mesh_state* mstate); - /** * Make a mesh state unique. * A unique mesh state uses it's unique member to point to itself. From a21bc231393ea8266ba0ea069ec460f033905ad4 Mon Sep 17 00:00:00 2001 From: Boris VANHOOF Date: Tue, 23 May 2023 09:23:03 +0200 Subject: [PATCH 128/177] free memory in error case --- services/mesh.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/mesh.c b/services/mesh.c index d7323bf58..f9a44fd5e 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -456,13 +456,14 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); if(!s->s.edns_opts_front_in) { - log_err("mesh_state_create: out of memory; SERVFAIL"); + log_err("edns_opt_copy_region: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) edns->opt_list_inplace_cb_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); + mesh_state_delete(&s->s); return; } } @@ -575,6 +576,7 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); if(!s->s.edns_opts_front_in) { + mesh_state_delete(&s->s); return 0; } } From 4e39d3dfe15e2f8348f36592989d65e4da040dfa Mon Sep 17 00:00:00 2001 From: Boris VANHOOF Date: Tue, 23 May 2023 10:11:07 +0200 Subject: [PATCH 129/177] could not find package netcat for docker container --- contrib/Dockerfile.tests | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/contrib/Dockerfile.tests b/contrib/Dockerfile.tests index 417daccb2..6cc3e4c1e 100644 --- a/contrib/Dockerfile.tests +++ b/contrib/Dockerfile.tests @@ -1,10 +1,8 @@ FROM gcc:latest WORKDIR /usr/src/unbound -RUN apt-get update # install semantic parser & lexical analyzer -RUN apt-get install -y bison flex # install packages used in tests -RUN apt-get install -y ldnsutils dnsutils xxd splint doxygen netcat +RUN apt-get update && apt-get install -y bison flex ldnsutils dnsutils xxd splint doxygen netcat-traditional # accept short rsa keys, which are used in tests RUN sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf From d57986724e49fd877b1b0669123860e91d23bc26 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 May 2023 14:30:25 +0200 Subject: [PATCH 130/177] - Fix unbound-dnstap-socket printout when no query is present. --- dnstap/unbound-dnstap-socket.c | 2 ++ doc/Changelog | 3 +++ 2 files changed, 5 insertions(+) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 618e20fa6..1927451fe 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -61,6 +61,7 @@ #include "services/listen_dnsport.h" #include "sldns/sbuffer.h" #include "sldns/wire2str.h" +#include "sldns/pkthdr.h" #ifdef USE_DNSTAP #include #include "dnstap/dnstap.pb-c.h" @@ -448,6 +449,7 @@ static char* q_of_msg(ProtobufCBinaryData message) char buf[300]; /* header, name, type, class minimum to get the query tuple */ if(message.len < 12 + 1 + 4 + 4) return NULL; + if(LDNS_QDCOUNT(message.data) < 1) return NULL; if(sldns_wire2str_rrquestion_buf(message.data+12, message.len-12, buf, sizeof(buf)) != 0) { /* remove trailing newline, tabs to spaces */ diff --git a/doc/Changelog b/doc/Changelog index 4e647d4df..320803f09 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +25 May 2023: Wouter + - Fix unbound-dnstap-socket printout when no query is present. + 19 May 2023: Wouter - Fix RPZ removal of client-ip, nsip, nsdname triggers from IXFR. - Fix to remove unused variables from RPZ clientip data structure. From 512236d7059880dabfd566bfa550a7b7b5b51bfd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 May 2023 16:27:19 +0200 Subject: [PATCH 131/177] - Fix unbound-dnstap-socket time fraction conversion for printout. --- dnstap/unbound-dnstap-socket.c | 2 +- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 1927451fe..d172a6744 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -504,7 +504,7 @@ static char* tv_to_str(protobuf_c_boolean has_time_sec, uint64_t time_sec, time_t time_t_sec; memset(&tv, 0, sizeof(tv)); if(has_time_sec) tv.tv_sec = time_sec; - if(has_time_nsec) tv.tv_usec = time_nsec; + if(has_time_nsec) tv.tv_usec = time_nsec/1000; buf[0]=0; time_t_sec = tv.tv_sec; diff --git a/doc/Changelog b/doc/Changelog index 320803f09..07c2e81ac 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 25 May 2023: Wouter - Fix unbound-dnstap-socket printout when no query is present. + - Fix unbound-dnstap-socket time fraction conversion for printout. 19 May 2023: Wouter - Fix RPZ removal of client-ip, nsip, nsdname triggers from IXFR. From 4f52be4db977aae9f20faba057a17580630045f9 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 30 May 2023 17:49:50 +0200 Subject: [PATCH 132/177] - Introduce num.query.cachedb to track cache hits for the external cache. --- cachedb/cachedb.c | 10 +- daemon/remote.c | 4 + daemon/stats.c | 8 ++ doc/unbound-control.8.in | 7 +- libunbound/unbound.h | 2 + services/mesh.c | 15 +++ services/mesh.h | 2 + smallapp/unbound-control.c | 3 + testdata/stat_values.tdir/stat_values.pre | 9 +- testdata/stat_values.tdir/stat_values.test | 96 ++++++++++++++++++- testdata/stat_values.tdir/stat_values.testns | 10 ++ .../stat_values.tdir/stat_values_cachedb.conf | 36 +++++++ util/module.h | 2 + 13 files changed, 196 insertions(+), 8 deletions(-) create mode 100644 testdata/stat_values.tdir/stat_values_cachedb.conf diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 245daa986..36995d6c5 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -228,7 +228,7 @@ cachedb_apply_cfg(struct cachedb_env* cachedb_env, struct config_file* cfg) return 1; } -int +int cachedb_init(struct module_env* env, int id) { struct cachedb_env* cachedb_env = (struct cachedb_env*)calloc(1, @@ -267,19 +267,16 @@ cachedb_init(struct module_env* env, int id) return 1; } -void +void cachedb_deinit(struct module_env* env, int id) { struct cachedb_env* cachedb_env; if(!env || !env->modinfo[id]) return; cachedb_env = (struct cachedb_env*)env->modinfo[id]; - /* free contents */ - /* TODO */ if(cachedb_env->enabled) { (*cachedb_env->backend->deinit)(env, cachedb_env); } - free(cachedb_env); env->modinfo[id] = NULL; } @@ -693,6 +690,7 @@ cachedb_handle_query(struct module_qstate* qstate, struct cachedb_qstate* ATTR_UNUSED(iq), struct cachedb_env* ie, int id) { + qstate->is_cachedb_answer = 0; /* check if we are enabled, and skip if so */ if(!ie->enabled) { /* pass request to next module */ @@ -746,6 +744,7 @@ cachedb_handle_query(struct module_qstate* qstate, qstate->ext_state[id] = module_wait_module; return; } + qstate->is_cachedb_answer = 1; /* we are done with the query */ qstate->ext_state[id] = module_finished; return; @@ -768,6 +767,7 @@ static void cachedb_handle_response(struct module_qstate* qstate, struct cachedb_qstate* ATTR_UNUSED(iq), struct cachedb_env* ie, int id) { + qstate->is_cachedb_answer = 0; /* check if we are not enabled or instructed to not cache, and skip */ if(!ie->enabled || qstate->no_cache_store) { /* we are done with the query */ diff --git a/daemon/remote.c b/daemon/remote.c index 03daa935e..d89ecd165 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1064,6 +1064,10 @@ print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero) if(!ssl_printf(ssl, "num.query.subnet_cache"SQ"%lu\n", (unsigned long)s->svr.num_query_subnet_cache)) return 0; #endif /* CLIENT_SUBNET */ +#ifdef USE_CACHEDB + if(!ssl_printf(ssl, "num.query.cachedb"SQ"%lu\n", + (unsigned long)s->svr.num_query_cachedb)) return 0; +#endif /* USE_CACHEDB */ return 1; } diff --git a/daemon/stats.c b/daemon/stats.c index cef7de827..405d8589e 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -356,6 +356,11 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) s->svr.num_query_subnet = 0; s->svr.num_query_subnet_cache = 0; #endif +#ifdef USE_CACHEDB + s->svr.num_query_cachedb += (long long)worker->env.mesh->ans_cachedb; +#else + s->svr.num_query_cachedb = 0; +#endif /* get tcp accept usage */ s->svr.tcp_accept_usage = 0; @@ -476,6 +481,9 @@ void server_stats_add(struct ub_stats_info* total, struct ub_stats_info* a) total->svr.unwanted_replies += a->svr.unwanted_replies; total->svr.unwanted_queries += a->svr.unwanted_queries; total->svr.tcp_accept_usage += a->svr.tcp_accept_usage; +#ifdef USE_CACHEDB + total->svr.num_query_cachedb += a->svr.num_query_cachedb; +#endif for(i=0; isvr.qtype[i] += a->svr.qtype[i]; for(i=0; i Number of queries answered using configured RPZ policy, per RPZ action type. diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 8a97b16fe..97be66a88 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -827,6 +827,8 @@ struct ub_server_stats { /** number of queries answered from edns-subnet specific data, and * the answer was from the edns-subnet cache. */ long long num_query_subnet_cache; + /** number of queries served from cachedb */ + long long num_query_cachedb; /** number of bytes in the stream wait buffers */ long long mem_stream_wait; /** number of bytes in the HTTP2 query buffers */ diff --git a/services/mesh.c b/services/mesh.c index bff0c03e6..22defd580 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -206,6 +206,7 @@ mesh_create(struct module_stack* stack, struct module_env* env) mesh->stats_jostled = 0; mesh->stats_dropped = 0; mesh->ans_expired = 0; + mesh->ans_cachedb = 0; mesh->max_reply_states = env->cfg->num_queries_per_thread; mesh->max_forever_states = (mesh->max_reply_states+1)/2; #ifndef S_SPLINT_S @@ -1492,6 +1493,12 @@ void mesh_query_done(struct mesh_state* mstate) } prev = r; prev_buffer = r_buffer; + + /* Account for each reply sent. */ + if(mstate->s.env->cfg->stat_extended + && mstate->s.is_cachedb_answer) { + mstate->s.env->mesh->ans_cachedb++; + } } } if(mstate->reply_list) { @@ -1518,6 +1525,11 @@ void mesh_query_done(struct mesh_state* mstate) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) mstate->s.env->mesh->num_detached_states++; + /* Account for each callback. */ + if(mstate->s.env->cfg->stat_extended + && mstate->s.is_cachedb_answer) { + mstate->s.env->mesh->ans_cachedb++; + } mesh_do_callback(mstate, mstate->s.return_rcode, rep, c, &tv); } } @@ -1889,6 +1901,7 @@ mesh_stats_clear(struct mesh_area* mesh) mesh->ans_secure = 0; mesh->ans_bogus = 0; mesh->ans_expired = 0; + mesh->ans_cachedb = 0; memset(&mesh->ans_rcode[0], 0, sizeof(size_t)*UB_STATS_RCODE_NUM); memset(&mesh->rpz_action[0], 0, sizeof(size_t)*UB_STATS_RPZ_ACTION_NUM); mesh->ans_nodata = 0; @@ -2161,6 +2174,8 @@ mesh_serve_expired_callback(void* arg) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) qstate->env->mesh->num_detached_states++; + /* Account for each callback. */ + mesh->ans_expired++; mesh_do_callback(mstate, LDNS_RCODE_NOERROR, msg->rep, c, &tv); } } diff --git a/services/mesh.h b/services/mesh.h index 25121a67b..b83a3df5c 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -114,6 +114,8 @@ struct mesh_area { size_t stats_dropped; /** stats, number of expired replies sent */ size_t ans_expired; + /** stats, number of cached replies from cachedb */ + size_t ans_cachedb; /** number of replies sent */ size_t replies_sent; /** sum of waiting times for the replies */ diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index bbc09659f..891ce23ac 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -407,6 +407,9 @@ static void print_extended(struct ub_stats_info* s, int inhibit_zero) PR_UL("num.query.subnet", s->svr.num_query_subnet); PR_UL("num.query.subnet_cache", s->svr.num_query_subnet_cache); #endif +#ifdef USE_CACHEDB + PR_UL("num.query.cachedb", s->svr.num_query_cachedb); +#endif } /** print statistics out of memory structures */ diff --git a/testdata/stat_values.tdir/stat_values.pre b/testdata/stat_values.tdir/stat_values.pre index 2db4a17e0..ad1166a06 100644 --- a/testdata/stat_values.tdir/stat_values.pre +++ b/testdata/stat_values.tdir/stat_values.pre @@ -5,6 +5,13 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test . ../common.sh + +PRE="../.." +if grep "define USE_CACHEDB 1" $PRE/config.h; then + USE_CACHEDB=1 + echo "USE_CACHEDB=1" >> .tpkg.var.test +fi + get_random_port 4 UNBOUND_PORT=$RND_PORT FWD_PORT=$(($RND_PORT + 1)) @@ -29,8 +36,8 @@ echo "FWD_EXPIRED_PID=$FWD_EXPIRED_PID" >> .tpkg.var.test # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@EXPIREDPORT\@/'$FWD_EXPIRED_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < stat_values.conf > ub.conf +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@EXPIREDPORT\@/'$FWD_EXPIRED_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < stat_values_cachedb.conf > ub_cachedb.conf # start unbound in the background -PRE="../.." $PRE/unbound -d -c ub.conf >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test index ef86a0471..60b625279 100644 --- a/testdata/stat_values.tdir/stat_values.test +++ b/testdata/stat_values.tdir/stat_values.test @@ -50,7 +50,7 @@ FILTERED_STATS_FILE=filtered_stats.$$ FOUND_STATS_FILE=found_stats.$$ REST_STATS_FILE=rest_stats.$$ -DEBUG=0 +DEBUG=1 # Write stats to $STATS_FILE. # Call this when you want to get stats from unbound. @@ -414,4 +414,98 @@ rrset.cache.count=3 infra.cache.count=2" +if test x$USE_CACHEDB == "x1"; then + +# Bring the cachedb configured Unbound up +kill_pid $UNBOUND_PID # kill current Unbound +$PRE/unbound -d -c ub_cachedb.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test +wait_unbound_up unbound.log + +echo +echo "[ Check cachedb cache miss. ]" +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 0ttl.example.com. | tee outfile +echo "> check answer" +if grep "0.0.0.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.cachemiss=1 +total.num.cachehits=0 +total.num.recursivereplies=1 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +num.query.udpout=1 +num.query.cachedb=0 +msg.cache.count=0 +rrset.cache.count=1 +infra.cache.count=1 +num.answer.rcode.NOERROR=1" + +echo +echo "[ Check cachedb cache hit. ]" +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 0ttl.example.com. | tee outfile +echo "> check answer" +if grep "0.0.0.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.cachemiss=1 +total.num.cachehits=0 +total.num.recursivereplies=1 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +num.query.udpout=0 +num.query.cachedb=1 +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1 +num.answer.rcode.NOERROR=1" + +echo +echo "[ Check cachedb cache hit with stat reset ]" +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 0ttl.example.com. | tee outfile +echo "> check answer" +if grep "0.0.0.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.cachemiss=0 +total.num.cachehits=1 +total.num.recursivereplies=0 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +num.query.cachedb=0 +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1 +num.answer.rcode.NOERROR=1" + +fi # USE_CACHEDB + end 0 diff --git a/testdata/stat_values.tdir/stat_values.testns b/testdata/stat_values.tdir/stat_values.testns index 6691b0199..12df8a939 100644 --- a/testdata/stat_values.tdir/stat_values.testns +++ b/testdata/stat_values.tdir/stat_values.testns @@ -21,3 +21,13 @@ SECTION QUESTION SECTION ANSWER 1ttl 1 IN A 1.1.1.1 ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +0ttl IN A +SECTION ANSWER +0ttl 0 IN A 0.0.0.1 +ENTRY_END diff --git a/testdata/stat_values.tdir/stat_values_cachedb.conf b/testdata/stat_values.tdir/stat_values_cachedb.conf new file mode 100644 index 000000000..b5e9b0e02 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values_cachedb.conf @@ -0,0 +1,36 @@ +server: + verbosity: 5 + module-config: "cachedb iterator" + serve-expired: yes + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + extended-statistics: yes + identity: "stat_values" + outbound-msg-retry: 0 + root-key-sentinel: no + trust-anchor-signaling: no + + local-zone: local.zone static + local-data: "www.local.zone A 192.0.2.1" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" +forward-zone: + name: "expired." + forward-addr: "127.0.0.1@@EXPIREDPORT@" diff --git a/util/module.h b/util/module.h index bcb0ccb2e..dc6835364 100644 --- a/util/module.h +++ b/util/module.h @@ -677,6 +677,8 @@ struct module_qstate { * those servers. By comparing expiry time with qstarttime for type NS. */ time_t qstarttime; + /** whether a message from cachedb will be used for the reply */ + int is_cachedb_answer; /** * Attributes of clients that share the qstate that may affect IP-based From 3c3fd7a795698bbae764167653d06d62e1d4e420 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 30 May 2023 23:33:48 +0200 Subject: [PATCH 133/177] - More predictable testing for cachedb. --- cachedb/cachedb.c | 17 +++++++++++-- sldns/rrdef.h | 3 ++- testdata/stat_values.tdir/stat_values.test | 28 +++++++++++----------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 36995d6c5..f40f4e15d 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -111,6 +111,15 @@ testframe_init(struct module_env* env, struct cachedb_env* cachedb_env) log_err("out of memory"); return 0; } + /* Register an EDNS option (65534) to bypass the worker cache lookup + * for testing */ + if(!edns_register_option(LDNS_EDNS_UNBOUND_CACHEDB_TESTFRAME_TEST, + 1 /* bypass cache */, + 0 /* no aggregation */, env)) { + log_err("testframe_init, could not register test opcode"); + free(d); + return 0; + } lock_basic_init(&d->lock); lock_protect(&d->lock, d, sizeof(*d)); return 1; @@ -627,11 +636,15 @@ cachedb_extcache_store(struct module_qstate* qstate, struct cachedb_env* ie) * See if unbound's internal cache can answer the query */ static int -cachedb_intcache_lookup(struct module_qstate* qstate) +cachedb_intcache_lookup(struct module_qstate* qstate, struct cachedb_env* cde) { uint8_t* dpname=NULL; size_t dpnamelen=0; struct dns_msg* msg; + /* for testframe bypass this lookup */ + if(cde->backend == &testframe_backend) { + return 0; + } if(iter_stub_fwd_no_cache(qstate, &qstate->qinfo, &dpname, &dpnamelen)) return 0; /* no cache for these queries */ @@ -707,7 +720,7 @@ cachedb_handle_query(struct module_qstate* qstate, /* lookup inside unbound's internal cache. * This does not look for expired entries. */ - if(cachedb_intcache_lookup(qstate)) { + if(cachedb_intcache_lookup(qstate, ie)) { if(verbosity >= VERB_ALGO) { if(qstate->return_msg->rep) log_dns_msg("cachedb internal cache lookup", diff --git a/sldns/rrdef.h b/sldns/rrdef.h index 98fb257dc..bfe3960a6 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -436,7 +436,8 @@ enum sldns_enum_edns_option LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/ LDNS_EDNS_PADDING = 12, /* RFC7830 */ LDNS_EDNS_EDE = 15, /* RFC8914 */ - LDNS_EDNS_CLIENT_TAG = 16 /* draft-bellis-dnsop-edns-tags-01 */ + LDNS_EDNS_CLIENT_TAG = 16, /* draft-bellis-dnsop-edns-tags-01 */ + LDNS_EDNS_UNBOUND_CACHEDB_TESTFRAME_TEST = 65534 }; typedef enum sldns_enum_edns_option sldns_edns_option; diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test index 60b625279..ca19a3827 100644 --- a/testdata/stat_values.tdir/stat_values.test +++ b/testdata/stat_values.tdir/stat_values.test @@ -50,7 +50,7 @@ FILTERED_STATS_FILE=filtered_stats.$$ FOUND_STATS_FILE=found_stats.$$ REST_STATS_FILE=rest_stats.$$ -DEBUG=1 +DEBUG=0 # Write stats to $STATS_FILE. # Call this when you want to get stats from unbound. @@ -95,7 +95,7 @@ check_expected_stats () { else echo "! bad expected stats:" cat $FILTERED_STATS_FILE - exit 1 + end 1 fi } @@ -109,7 +109,7 @@ check_rest_stats () { fi if grep -v "=0$" $REST_STATS_FILE; then echo "! bad rest stats" - exit 1 + end 1 else echo "OK" fi @@ -426,9 +426,9 @@ wait_unbound_up unbound.log echo echo "[ Check cachedb cache miss. ]" echo "> dig www.example.com." -dig @127.0.0.1 -p $UNBOUND_PORT 0ttl.example.com. | tee outfile +dig @127.0.0.1 +ednsopt=65534 -p $UNBOUND_PORT www.example.com. | tee outfile echo "> check answer" -if grep "0.0.0.1" outfile; then +if grep "10.20.30.40" outfile; then echo "OK" else end 1 @@ -446,7 +446,7 @@ num.query.flags.AD=1 num.query.edns.present=1 num.query.udpout=1 num.query.cachedb=0 -msg.cache.count=0 +msg.cache.count=1 rrset.cache.count=1 infra.cache.count=1 num.answer.rcode.NOERROR=1" @@ -454,9 +454,9 @@ num.answer.rcode.NOERROR=1" echo echo "[ Check cachedb cache hit. ]" echo "> dig www.example.com." -dig @127.0.0.1 -p $UNBOUND_PORT 0ttl.example.com. | tee outfile +dig @127.0.0.1 +ednsopt=65534 -p $UNBOUND_PORT www.example.com. | tee outfile echo "> check answer" -if grep "0.0.0.1" outfile; then +if grep "10.20.30.40" outfile; then echo "OK" else end 1 @@ -482,25 +482,25 @@ num.answer.rcode.NOERROR=1" echo echo "[ Check cachedb cache hit with stat reset ]" echo "> dig www.example.com." -dig @127.0.0.1 -p $UNBOUND_PORT 0ttl.example.com. | tee outfile +dig @127.0.0.1 +ednsopt=65534 -p $UNBOUND_PORT www.example.com. | tee outfile echo "> check answer" -if grep "0.0.0.1" outfile; then +if grep "10.20.30.40" outfile; then echo "OK" else end 1 fi check_stats "\ total.num.queries=1 -total.num.cachemiss=0 -total.num.cachehits=1 -total.num.recursivereplies=0 +total.num.cachemiss=1 +total.num.cachehits=0 +total.num.recursivereplies=1 num.query.type.A=1 num.query.class.IN=1 num.query.opcode.QUERY=1 num.query.flags.RD=1 num.query.flags.AD=1 num.query.edns.present=1 -num.query.cachedb=0 +num.query.cachedb=1 msg.cache.count=1 rrset.cache.count=1 infra.cache.count=1 From db5cf5851db53bb5677fcb59c427df81dbd5a99c Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 30 May 2023 23:34:31 +0200 Subject: [PATCH 134/177] - More efficient mesh accounting per client. --- services/mesh.c | 80 ++++++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index 22defd580..53bbbfc21 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1425,6 +1425,7 @@ void mesh_query_done(struct mesh_state* mstate) struct reply_info* rep = (mstate->s.return_msg? mstate->s.return_msg->rep:NULL); struct timeval tv = {0, 0}; + int i = 0; /* No need for the serve expired timer anymore; we are going to reply. */ if(mstate->s.serve_expired_data) { comm_timer_delete(mstate->s.serve_expired_data->timer); @@ -1444,6 +1445,7 @@ void mesh_query_done(struct mesh_state* mstate) } } for(r = mstate->reply_list; r; r = r->next) { + i++; tv = r->start_time; /* if a response-ip address block has been stored the @@ -1455,16 +1457,6 @@ void mesh_query_done(struct mesh_state* mstate) mstate->s.qinfo.qclass, r->local_alias, &r->query_reply.client_addr, r->query_reply.client_addrlen); - if(mstate->s.env->cfg->stat_extended && - mstate->s.respip_action_info->rpz_used) { - if(mstate->s.respip_action_info->rpz_disabled) - mstate->s.env->mesh->rpz_action[RPZ_DISABLED_ACTION]++; - if(mstate->s.respip_action_info->rpz_cname_override) - mstate->s.env->mesh->rpz_action[RPZ_CNAME_OVERRIDE_ACTION]++; - else - mstate->s.env->mesh->rpz_action[respip_action_to_rpz_action( - mstate->s.respip_action_info->action)]++; - } } /* if this query is determined to be dropped during the @@ -1493,14 +1485,29 @@ void mesh_query_done(struct mesh_state* mstate) } prev = r; prev_buffer = r_buffer; - - /* Account for each reply sent. */ - if(mstate->s.env->cfg->stat_extended - && mstate->s.is_cachedb_answer) { - mstate->s.env->mesh->ans_cachedb++; - } } } + /* Account for each reply sent. */ + if(i > 0 && mstate->s.respip_action_info && + mstate->s.respip_action_info->addrinfo && + mstate->s.env->cfg->stat_extended && + mstate->s.respip_action_info->rpz_used) { + if(mstate->s.respip_action_info->rpz_disabled) + mstate->s.env->mesh->rpz_action[RPZ_DISABLED_ACTION] += i; + if(mstate->s.respip_action_info->rpz_cname_override) + mstate->s.env->mesh->rpz_action[RPZ_CNAME_OVERRIDE_ACTION] += i; + else + mstate->s.env->mesh->rpz_action[respip_action_to_rpz_action( + mstate->s.respip_action_info->action)] += i; + } + if(!mstate->s.is_drop && i > 0) { + if(mstate->s.env->cfg->stat_extended + && mstate->s.is_cachedb_answer) { + mstate->s.env->mesh->ans_cachedb += i; + } + } + + /* Mesh area accounting */ if(mstate->reply_list) { mstate->reply_list = NULL; if(!mstate->reply_list && !mstate->cb_list) { @@ -1513,6 +1520,7 @@ void mesh_query_done(struct mesh_state* mstate) mstate->s.env->mesh->num_detached_states++; } mstate->replies_sent = 1; + while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be * changed, eg. by adds from the callback routine */ @@ -1525,11 +1533,6 @@ void mesh_query_done(struct mesh_state* mstate) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) mstate->s.env->mesh->num_detached_states++; - /* Account for each callback. */ - if(mstate->s.env->cfg->stat_extended - && mstate->s.is_cachedb_answer) { - mstate->s.env->mesh->ans_cachedb++; - } mesh_do_callback(mstate, mstate->s.return_rcode, rep, c, &tv); } } @@ -2038,6 +2041,7 @@ mesh_serve_expired_callback(void* arg) struct timeval tv = {0, 0}; int must_validate = (!(qstate->query_flags&BIT_CD) || qstate->env->cfg->ignore_cd) && qstate->env->need_to_validate; + int i = 0; if(!qstate->serve_expired_data) return; verbose(VERB_ALGO, "Serve expired: Trying to reply with expired data"); comm_timer_delete(qstate->serve_expired_data->timer); @@ -2109,6 +2113,7 @@ mesh_serve_expired_callback(void* arg) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); for(r = mstate->reply_list; r; r = r->next) { + i++; tv = r->start_time; /* If address info is returned, it means the action should be an @@ -2118,16 +2123,6 @@ mesh_serve_expired_callback(void* arg) qstate->qinfo.qtype, qstate->qinfo.qclass, r->local_alias, &r->query_reply.client_addr, r->query_reply.client_addrlen); - - if(qstate->env->cfg->stat_extended && actinfo.rpz_used) { - if(actinfo.rpz_disabled) - qstate->env->mesh->rpz_action[RPZ_DISABLED_ACTION]++; - if(actinfo.rpz_cname_override) - qstate->env->mesh->rpz_action[RPZ_CNAME_OVERRIDE_ACTION]++; - else - qstate->env->mesh->rpz_action[ - respip_action_to_rpz_action(actinfo.action)]++; - } } /* Add EDE Stale Answer (RCF8914). Ignore global ede as this is @@ -2147,11 +2142,23 @@ mesh_serve_expired_callback(void* arg) tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); prev = r; prev_buffer = r_buffer; - - /* Account for each reply sent. */ - mesh->ans_expired++; - } + /* Account for each reply sent. */ + if(i > 0) { + mesh->ans_expired += i; + if(actinfo.addrinfo && qstate->env->cfg->stat_extended && + actinfo.rpz_used) { + if(actinfo.rpz_disabled) + qstate->env->mesh->rpz_action[RPZ_DISABLED_ACTION] += i; + if(actinfo.rpz_cname_override) + qstate->env->mesh->rpz_action[RPZ_CNAME_OVERRIDE_ACTION] += i; + else + qstate->env->mesh->rpz_action[ + respip_action_to_rpz_action(actinfo.action)] += i; + } + } + + /* Mesh area accounting */ if(mstate->reply_list) { mstate->reply_list = NULL; if(!mstate->reply_list && !mstate->cb_list) { @@ -2162,6 +2169,7 @@ mesh_serve_expired_callback(void* arg) } } } + while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be * changed, eg. by adds from the callback routine */ @@ -2174,8 +2182,6 @@ mesh_serve_expired_callback(void* arg) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) qstate->env->mesh->num_detached_states++; - /* Account for each callback. */ - mesh->ans_expired++; mesh_do_callback(mstate, LDNS_RCODE_NOERROR, msg->rep, c, &tv); } } From 65230bd1177fc16960645e41058fd3cb28c038ef Mon Sep 17 00:00:00 2001 From: Yorgos Thessalonikefs Date: Wed, 31 May 2023 17:09:16 +0200 Subject: [PATCH 135/177] Review comment for testdata/stat_values.tdir/stat_values.test Co-authored-by: Wouter Wijngaards --- testdata/stat_values.tdir/stat_values.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test index ca19a3827..c9ed66d82 100644 --- a/testdata/stat_values.tdir/stat_values.test +++ b/testdata/stat_values.tdir/stat_values.test @@ -414,7 +414,7 @@ rrset.cache.count=3 infra.cache.count=2" -if test x$USE_CACHEDB == "x1"; then +if test x$USE_CACHEDB = "x1"; then # Bring the cachedb configured Unbound up kill_pid $UNBOUND_PID # kill current Unbound From 9412b9c2ca75b47fc431088d930480a1d628abda Mon Sep 17 00:00:00 2001 From: Yorgos Thessalonikefs Date: Fri, 2 Jun 2023 12:39:23 +0200 Subject: [PATCH 136/177] Review comment for daemon/stats.c Co-authored-by: Wouter Wijngaards --- daemon/stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/stats.c b/daemon/stats.c index 405d8589e..fabbd9f60 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -357,7 +357,7 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) s->svr.num_query_subnet_cache = 0; #endif #ifdef USE_CACHEDB - s->svr.num_query_cachedb += (long long)worker->env.mesh->ans_cachedb; + s->svr.num_query_cachedb = (long long)worker->env.mesh->ans_cachedb; #else s->svr.num_query_cachedb = 0; #endif From 52581f86447daa8d7a093bf0552acc8bd3edb1e3 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Fri, 9 Jun 2023 13:59:31 +0200 Subject: [PATCH 137/177] Fix for issue #887 (Timeouts to forward servers on BSD based system with ASLR) and proabbly #516 (Stream reuse does not work on Windows) --- services/outside_network.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index 250440667..2a219cbc6 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -551,8 +551,27 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, log_assert(&key_p != ((struct reuse_tcp*)result)->pending); } /* not found, return null */ + + /* It is possible that we search for something before the first element + * in the tree. Replace a null pointer with the first element. + */ + if (!result) { + verbose(VERB_CLIENT, "reuse_tcp_find: taking first"); + result = rbtree_first(&outnet->tcp_reuse); + } + if(!result || result == RBTREE_NULL) return NULL; + + /* It is possible that we got the previous address, but that the + * address we are looking for is in the tree. If the address we got + * is less than the address we are looking, then take the next entry. + */ + if (reuse_cmp_addrportssl(result->key, &key_p.reuse) < 0) { + verbose(VERB_CLIENT, "reuse_tcp_find: key too low"); + result = rbtree_next(result); + } + verbose(VERB_CLIENT, "reuse_tcp_find check inexact match"); /* inexact match, find one of possibly several connections to the * same destination address, with the correct port, ssl, and From a25fc5281811c7f480026fe701c3b0ae2581c037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D1=80=D0=B5=D0=BD=D0=B1=D0=B5=D1=80=D0=B3=20?= =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=BA?= Date: Sun, 11 Jun 2023 09:59:36 +0300 Subject: [PATCH 138/177] Fix: #895: pythonmodule: add all site-packages directories to sys.path --- pythonmod/pythonmod.c | 40 ++++------------------------------------ 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 28ce0eec4..3aa1c80f6 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -328,44 +328,12 @@ int pythonmod_init(struct module_env* env, int id) env->cfg->directory); PyRun_SimpleString(wdir); } - /* Check if sysconfig is there and use that instead of distutils; - * distutils.sysconfig is deprecated in Python 3.10. */ -#if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION <= 9) - /* For older versions, first try distutils.sysconfig because the - * sysconfig paths may contain wrong values, eg. on Debian10 for - * python 2.7 and 3.7. */ - if(PyRun_SimpleString("import distutils.sysconfig \n") < 0) { - log_info("pythonmod: module distutils.sysconfig not available; " - "falling back to sysconfig."); - if(PyRun_SimpleString("import sysconfig \n") < 0 - || PyRun_SimpleString("sys.path.append(" - "sysconfig.get_path('platlib')) \n") < 0) { - goto python_init_fail; - } - } else { - if(PyRun_SimpleString("sys.path.append(" - "distutils.sysconfig.get_python_lib(1,0)) \n") < 0) { - goto python_init_fail; - } + if(PyRun_SimpleString("import site\n") < 0) { + goto python_init_fail; } -#else - /* Python 3.10 and higher, check sysconfig first, - * distutils is deprecated. */ - if(PyRun_SimpleString("import sysconfig \n") < 0) { - log_info("pythonmod: module sysconfig not available; " - "falling back to distutils.sysconfig."); - if(PyRun_SimpleString("import distutils.sysconfig \n") < 0 - || PyRun_SimpleString("sys.path.append(" - "distutils.sysconfig.get_python_lib(1,0)) \n") < 0) { - goto python_init_fail; - } - } else { - if(PyRun_SimpleString("sys.path.append(" - "sysconfig.get_path('platlib')) \n") < 0) { - goto python_init_fail; - } + if(PyRun_SimpleString("sys.path.extend(site.getsitepackages())\n") < 0) { + goto python_init_fail; } -#endif if(PyRun_SimpleString("from unboundmodule import *\n") < 0) { goto python_init_fail; From 35885e5a707136efe43e1eea2268bcaf6da7d957 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 12 Jun 2023 10:30:50 +0200 Subject: [PATCH 139/177] - Merge #896: Fix: #895: pythonmodule: add all site-packages directories to sys.path. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 07c2e81ac..751dcce7d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 June 2023: Wouter + - Merge #896: Fix: #895: pythonmodule: add all site-packages + directories to sys.path. + 25 May 2023: Wouter - Fix unbound-dnstap-socket printout when no query is present. - Fix unbound-dnstap-socket time fraction conversion for printout. From 2cf0359ffe43b7b99f0a9ebca80fb35c64c08166 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 12 Jun 2023 10:39:44 +0200 Subject: [PATCH 140/177] Changelog note for #895 - Fix #895: python + sysconfig gives ANOTHER path comparing to distutils. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 751dcce7d..e6d323e84 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 12 June 2023: Wouter - Merge #896: Fix: #895: pythonmodule: add all site-packages directories to sys.path. + - Fix #895: python + sysconfig gives ANOTHER path comparing to + distutils. 25 May 2023: Wouter - Fix unbound-dnstap-socket printout when no query is present. From f9317d65b36e31ed79939313ae90abb94f9894ab Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 12 Jun 2023 12:39:00 +0200 Subject: [PATCH 141/177] - Fix for uncertain unit test for doh buffer size events. --- doc/Changelog | 1 + .../doh_downstream_buffer_size.test | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e6d323e84..7b3b65bb9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ directories to sys.path. - Fix #895: python + sysconfig gives ANOTHER path comparing to distutils. + - Fix for uncertain unit test for doh buffer size events. 25 May 2023: Wouter - Fix unbound-dnstap-socket printout when no query is present. diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test index bbeb9eb2b..45bde6564 100644 --- a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test @@ -23,15 +23,26 @@ if test "$?" -ne 0; then fi num=$(grep "ANSWER SEC" outfile | wc -l) # 58 byte answers, 500 byte max response buffer -> 8 answers + +# Sometimes unbound is scheduled to be able to respond very quickly, +# before all the queries are sent, and then writes some of the queries +# back already, emptying the buffer, which then does not overflow. +# The attempt is to detect this test flakyness with 'mode w' write lines. +nummodew=$(grep "mode w" unbound.log | wc -l) +echo "num answers $num and num write events $nummodew" if [ $num -eq 8 ]; then echo "content OK" else + if [ "(" $num -eq 9 -o $num -eq 10 ")" -a $nummodew -eq 2 ]; then + echo "skip buffer emptied event" + else echo "result contents not OK" echo "> cat logfiles" cat outfile cat unbound.log echo "result contents not OK" exit 1 + fi fi echo "OK" From 0f1ea7e490381b64e62a2fe9dfafadec8c57ba98 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 14 Jun 2023 11:40:59 +0200 Subject: [PATCH 142/177] - Properly handle all return values of worker_check_request during early EDE code. - Do not check the incoming request more than once. --- daemon/worker.c | 90 ++++++++++++++++++++++++++++++++++--------------- doc/Changelog | 5 +++ 2 files changed, 68 insertions(+), 27 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index ef9624b8b..d70e08e8f 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -289,61 +289,83 @@ worker_err_ratelimit(struct worker* worker, int err) return err; } +/** + * Structure holding the result of the worker_check_request function. + * Based on configuration it could be called up to four times; ideally should + * be called once. + */ +struct check_request_result { + int checked; + int value; +}; /** check request sanity. * @param pkt: the wire packet to examine for sanity. * @param worker: parameters for checking. - * @return error code, 0 OK, or -1 discard. + * @param out: struct to update with the result. */ -static int -worker_check_request(sldns_buffer* pkt, struct worker* worker) +static void +worker_check_request(sldns_buffer* pkt, struct worker* worker, + struct check_request_result* out) { + if(out->checked) return; + out->checked = 1; if(sldns_buffer_limit(pkt) < LDNS_HEADER_SIZE) { verbose(VERB_QUERY, "request too short, discarded"); - return -1; + out->value = -1; + return; } if(sldns_buffer_limit(pkt) > NORMAL_UDP_SIZE && worker->daemon->cfg->harden_large_queries) { verbose(VERB_QUERY, "request too large, discarded"); - return -1; + out->value = -1; + return; } if(LDNS_QR_WIRE(sldns_buffer_begin(pkt))) { verbose(VERB_QUERY, "request has QR bit on, discarded"); - return -1; + out->value = -1; + return; } if(LDNS_TC_WIRE(sldns_buffer_begin(pkt))) { LDNS_TC_CLR(sldns_buffer_begin(pkt)); verbose(VERB_QUERY, "request bad, has TC bit on"); - return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + out->value = worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + return; } if(LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_QUERY && LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_NOTIFY) { verbose(VERB_QUERY, "request unknown opcode %d", LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt))); - return worker_err_ratelimit(worker, LDNS_RCODE_NOTIMPL); + out->value = worker_err_ratelimit(worker, LDNS_RCODE_NOTIMPL); + return; } if(LDNS_QDCOUNT(sldns_buffer_begin(pkt)) != 1) { verbose(VERB_QUERY, "request wrong nr qd=%d", LDNS_QDCOUNT(sldns_buffer_begin(pkt))); - return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + out->value = worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + return; } if(LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 0 && (LDNS_ANCOUNT(sldns_buffer_begin(pkt)) != 1 || LDNS_OPCODE_WIRE(sldns_buffer_begin(pkt)) != LDNS_PACKET_NOTIFY)) { verbose(VERB_QUERY, "request wrong nr an=%d", LDNS_ANCOUNT(sldns_buffer_begin(pkt))); - return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + out->value = worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + return; } if(LDNS_NSCOUNT(sldns_buffer_begin(pkt)) != 0) { verbose(VERB_QUERY, "request wrong nr ns=%d", LDNS_NSCOUNT(sldns_buffer_begin(pkt))); - return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + out->value = worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + return; } if(LDNS_ARCOUNT(sldns_buffer_begin(pkt)) > 1) { verbose(VERB_QUERY, "request wrong nr ar=%d", LDNS_ARCOUNT(sldns_buffer_begin(pkt))); - return worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + out->value = worker_err_ratelimit(worker, LDNS_RCODE_FORMERR); + return; } - return 0; + out->value = 0; + return; } void @@ -1058,7 +1080,8 @@ static int deny_refuse(struct comm_point* c, enum acl_access acl, enum acl_access deny, enum acl_access refuse, struct worker* worker, struct comm_reply* repinfo, - struct acl_addr* acladdr, int ede) + struct acl_addr* acladdr, int ede, + struct check_request_result* check_result) { if(acl == deny) { if(verbosity >= VERB_ALGO) { @@ -1081,9 +1104,16 @@ deny_refuse(struct comm_point* c, enum acl_access acl, if(worker->stats.extended) worker->stats.unwanted_queries++; - if(worker_check_request(c->buffer, worker) == -1) { + worker_check_request(c->buffer, worker, check_result); + if(check_result->value != 0) { + if(check_result->value != -1) { + LDNS_QR_SET(sldns_buffer_begin(c->buffer)); + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + check_result->value); + return 1; + } comm_point_drop_reply(repinfo); - return 0; /* discard this */ + return 0; } /* worker_check_request() above guarantees that the buffer contains at * least a header and that qdcount == 1 @@ -1237,7 +1267,8 @@ deny_refuse(struct comm_point* c, enum acl_access acl, static int deny_refuse_all(struct comm_point* c, enum acl_access* acl, struct worker* worker, struct comm_reply* repinfo, - struct acl_addr** acladdr, int ede, int check_proxy) + struct acl_addr** acladdr, int ede, int check_proxy, + struct check_request_result* check_result) { if(check_proxy) { *acladdr = acl_addr_lookup(worker->daemon->acl, @@ -1252,16 +1283,17 @@ deny_refuse_all(struct comm_point* c, enum acl_access* acl, } *acl = acl_get_control(*acladdr); return deny_refuse(c, *acl, acl_deny, acl_refuse, worker, repinfo, - *acladdr, ede); + *acladdr, ede, check_result); } static int deny_refuse_non_local(struct comm_point* c, enum acl_access acl, struct worker* worker, struct comm_reply* repinfo, - struct acl_addr* acladdr, int ede) + struct acl_addr* acladdr, int ede, + struct check_request_result* check_result) { return deny_refuse(c, acl, acl_deny_non_local, acl_refuse_non_local, - worker, repinfo, acladdr, ede); + worker, repinfo, acladdr, ede, check_result); } int @@ -1292,6 +1324,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, struct query_info qinfo_tmp; /* placeholder for lookup_qinfo */ struct respip_client_info* cinfo = NULL, cinfo_tmp; struct timeval wait_time; + struct check_request_result check_result = {0,0}; memset(&qinfo, 0, sizeof(qinfo)); if((error != NETEVENT_NOERROR && error != NETEVENT_DONE)|| !repinfo) { @@ -1322,7 +1355,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, if(c->dnscrypt && !repinfo->is_dnscrypted) { char buf[LDNS_MAX_DOMAINLEN+1]; /* Check if this is unencrypted and asking for certs */ - if(worker_check_request(c->buffer, worker) != 0) { + worker_check_request(c->buffer, worker, &check_result); + if(check_result.value != 0) { verbose(VERB_ALGO, "dnscrypt: worker check request: bad query."); log_addr(VERB_CLIENT,"from",&repinfo->client_addr, @@ -1371,25 +1405,27 @@ worker_handle_request(struct comm_point* c, void* arg, int error, /* Check deny/refuse ACLs */ if(repinfo->is_proxied) { if((ret=deny_refuse_all(c, &acl, worker, repinfo, &acladdr, - worker->env.cfg->ede, 1)) != -1) { + worker->env.cfg->ede, 1, &check_result)) != -1) { if(ret == 1) goto send_reply; return ret; } } if((ret=deny_refuse_all(c, &acl, worker, repinfo, &acladdr, - worker->env.cfg->ede, 0)) != -1) { + worker->env.cfg->ede, 0, &check_result)) != -1) { if(ret == 1) goto send_reply; return ret; } - if((ret=worker_check_request(c->buffer, worker)) != 0) { + worker_check_request(c->buffer, worker, &check_result); + if(check_result.value != 0) { verbose(VERB_ALGO, "worker check request: bad query."); log_addr(VERB_CLIENT,"from",&repinfo->client_addr, repinfo->client_addrlen); - if(ret != -1) { + if(check_result.value != -1) { LDNS_QR_SET(sldns_buffer_begin(c->buffer)); - LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), ret); + LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), + check_result.value); return 1; } comm_point_drop_reply(repinfo); @@ -1612,7 +1648,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, /* We've looked in our local zones. If the answer isn't there, we * might need to bail out based on ACLs now. */ if((ret=deny_refuse_non_local(c, acl, worker, repinfo, acladdr, - worker->env.cfg->ede)) != -1) + worker->env.cfg->ede, &check_result)) != -1) { regional_free_all(worker->scratchpad); if(ret == 1) diff --git a/doc/Changelog b/doc/Changelog index 7b3b65bb9..dc3013854 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +14 June 2023: George + - Properly handle all return values of worker_check_request during + early EDE code. + - Do not check the incoming request more than once. + 12 June 2023: Wouter - Merge #896: Fix: #895: pythonmodule: add all site-packages directories to sys.path. From 64476280ed511a44505a398866cba2204c46b435 Mon Sep 17 00:00:00 2001 From: Philip Homburg Date: Thu, 15 Jun 2023 11:09:08 +0200 Subject: [PATCH 143/177] Changelog for #887 and #516 --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index dc3013854..1b9f3466c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +15 June 2023: Philip + - Fix for issue #887 (Timeouts to forward servers on BSD based + system with ASLR) + - Probably fixes #516 (Stream reuse does not work on Windows) as well 14 June 2023: George - Properly handle all return values of worker_check_request during early EDE code. From d10a889a686175ad48ab95ed190ab877047196ee Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Mon, 19 Jun 2023 17:52:49 +0100 Subject: [PATCH 144/177] config: improve handling of unknown modules The change fixes module print when specified module is unknown. On example config: server: module-config: "respip valdator iterator" Before the change printed error looked like: error: Unknown value in module-config, module: ''. This module is not present (not compiled in), See the list of linked modules with unbound -V After the change module is printed as expected: error: Unknown value in module-config, module: 'valdator'. This module is not present (not compiled in), See the list of linked modules with unbound -V Module truncation happens because parse error does not guarantee that leading whitespace is removed by `module_factory()` call. The change always removes leading whitespace (if present). --- services/modstack.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/services/modstack.c b/services/modstack.c index da8e623c1..a90d7178c 100644 --- a/services/modstack.c +++ b/services/modstack.c @@ -120,12 +120,16 @@ modstack_config(struct module_stack* stack, const char* module_conf) stack->mod[i] = module_factory(&module_conf); if(!stack->mod[i]) { char md[256]; + char * s = md; snprintf(md, sizeof(md), "%s", module_conf); - if(strchr(md, ' ')) *(strchr(md, ' ')) = 0; - if(strchr(md, '\t')) *(strchr(md, '\t')) = 0; + /* Leading spaces are present on errors. */ + while (*s && isspace((unsigned char)*s)) + s++; + if(strchr(s, ' ')) *(strchr(s, ' ')) = 0; + if(strchr(s, '\t')) *(strchr(s, '\t')) = 0; log_err("Unknown value in module-config, module: '%s'." " This module is not present (not compiled in)," - " See the list of linked modules with unbound -V", md); + " See the list of linked modules with unbound -V", s); return 0; } } From 0d13b4ec4c27e7dba7bbfcc7cd1ff86a1d46ed38 Mon Sep 17 00:00:00 2001 From: Beniamin Sandu Date: Thu, 22 Jun 2023 14:18:45 +0300 Subject: [PATCH 145/177] contrib: add yocto compatible init script Signed-off-by: Beniamin Sandu --- contrib/unbound.init_yocto | 139 +++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 contrib/unbound.init_yocto diff --git a/contrib/unbound.init_yocto b/contrib/unbound.init_yocto new file mode 100644 index 000000000..4eba752bc --- /dev/null +++ b/contrib/unbound.init_yocto @@ -0,0 +1,139 @@ +#!/bin/sh +# +# unbound This shell script takes care of starting and stopping +# unbound (DNS server). +# +# chkconfig: - 14 86 +# description: unbound is a Domain Name Server (DNS) \ +# that is used to resolve host names to IP addresses. + +### BEGIN INIT INFO +# Provides: $named unbound +# Required-Start: $network $local_fs +# Required-Stop: $network $local_fs +# Should-Start: $syslog +# Should-Stop: $syslog +# Short-Description: unbound recursive Domain Name Server. +# Description: unbound is a Domain Name Server (DNS) +# that is used to resolve host names to IP addresses. +### END INIT INFO + +# Source function library. +. /etc/init.d/functions + +exec="/usr/sbin/unbound" +prog="unbound" +config="/etc/unbound/unbound.conf" +pidfile="/var/unbound/unbound.pid" +rootdir="/var/unbound" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + + # setup root jail + if [ -s /etc/localtime ]; then + [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; + if [ ! -e ${rootdir}/etc/localtime ] || ! /usr/bin/cmp -s /etc/localtime ${rootdir}/etc/localtime; then + cp -fp /etc/localtime ${rootdir}/etc/localtime + fi; + fi; + if [ -s /etc/resolv.conf ]; then + [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; + if [ ! -e ${rootdir}/etc/resolv.conf ] || ! /usr/bin/cmp -s /etc/resolv.conf ${rootdir}/etc/resolv.conf; then + cp -fp /etc/resolv.conf ${rootdir}/etc/resolv.conf + fi; + fi; + if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then + [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; + [ -e ${rootdir}/dev/log ] || touch ${rootdir}/dev/log + mount --bind -n /dev/log ${rootdir}/dev/log >/dev/null 2>&1; + fi; + if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then + [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; + [ -e ${rootdir}/dev/random ] || touch ${rootdir}/dev/random + mount --bind -n /dev/random ${rootdir}/dev/random >/dev/null 2>&1; + fi; + + # if not running, start it up here + daemonize $exec + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + # stop it here, often "killproc $prog" + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then + umount ${rootdir}/dev/log >/dev/null 2>&1 + fi; + if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then + umount ${rootdir}/dev/random >/dev/null 2>&1 + fi; + return $retval +} + +restart() { + stop + start +} + +reload() { + kill -HUP `cat $pidfile` +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status -p $pidfile >/dev/null 2>&1 +} + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? From 2207a551074d617f86557318c55d14e2b83d5e08 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Jun 2023 15:41:17 +0200 Subject: [PATCH 146/177] Add changelog and contrib/README mention for #903 - Merge #903: contrib: add yocto compatible init script. --- contrib/README | 3 +++ doc/Changelog | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/contrib/README b/contrib/README index ef2a0ab88..2427a0294 100644 --- a/contrib/README +++ b/contrib/README @@ -55,3 +55,6 @@ distribution but may be helpful. contributed by Andreas Schulze. * metrics.awk: awk script that can convert unbound-control stats to Prometheus metrics format output. +* unbound.init_yocto: An init script to start and stop the server. Put it + in /etc/init.d/unbound to use it. It is for the Yocto Project, in + embedded systems, contributed by beni-sandu. diff --git a/doc/Changelog b/doc/Changelog index 1b9f3466c..298a0eb3b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,7 +1,11 @@ +22 June 2023: Wouter + - Merge #903: contrib: add yocto compatible init script. + 15 June 2023: Philip - Fix for issue #887 (Timeouts to forward servers on BSD based system with ASLR) - Probably fixes #516 (Stream reuse does not work on Windows) as well + 14 June 2023: George - Properly handle all return values of worker_check_request during early EDE code. From bea61fc37c34d28ec1d48117871f3d95e125191a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 27 Jun 2023 16:44:29 +0200 Subject: [PATCH 147/177] - Remove warning about unknown cast-function-type warning pragma. --- doc/Changelog | 1 + libunbound/python/libunbound.i | 3 +++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 887fed721..33f156261 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 27 June 2023: George - Merge #892: Add cachedb hit stat. Introduces 'num.query.cachedb' as a new statistical counter. + - Remove warning about unknown cast-function-type warning pragma. 22 June 2023: Wouter - Merge #903: contrib: add yocto compatible init script. diff --git a/libunbound/python/libunbound.i b/libunbound/python/libunbound.i index c9549bf90..0cdb3d7e5 100644 --- a/libunbound/python/libunbound.i +++ b/libunbound/python/libunbound.i @@ -36,6 +36,9 @@ %begin %{ /* store state of warning output, restored at later pop */ #pragma GCC diagnostic push +/* ignore warnings for pragma below, where for older GCC it can produce a + warning if the cast-function-type warning is absent. */ +#pragma GCC diagnostic ignored "-Wpragmas" /* ignore gcc8 METH_NOARGS function cast warnings for swig function pointers */ #pragma GCC diagnostic ignored "-Wcast-function-type" %} From 7696074fa9c69611baa4aacabccea7e19e62980b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 29 Jun 2023 10:16:37 +0200 Subject: [PATCH 148/177] - Fix python modules with multiple scripts, by incrementing reference counts. --- doc/Changelog | 4 ++++ pythonmod/pythonmod.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 33f156261..7831c81ba 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 June 2023: Wouter + - Fix python modules with multiple scripts, by incrementing reference + counts. + 27 June 2023: George - Merge #892: Add cachedb hit stat. Introduces 'num.query.cachedb' as a new statistical counter. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 3aa1c80f6..b73dc2d53 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -440,24 +440,28 @@ int pythonmod_init(struct module_env* env, int id) return 0; } } + Py_XINCREF(pe->func_init); if ((pe->func_deinit = PyDict_GetItemString(pe->dict, "deinit")) == NULL) { log_err("pythonmod: function deinit is missing in %s", pe->fname); PyGILState_Release(gil); return 0; } + Py_XINCREF(pe->func_deinit); if ((pe->func_operate = PyDict_GetItemString(pe->dict, "operate")) == NULL) { log_err("pythonmod: function operate is missing in %s", pe->fname); PyGILState_Release(gil); return 0; } + Py_XINCREF(pe->func_operate); if ((pe->func_inform = PyDict_GetItemString(pe->dict, "inform_super")) == NULL) { log_err("pythonmod: function inform_super is missing in %s", pe->fname); PyGILState_Release(gil); return 0; } + Py_XINCREF(pe->func_inform); if (init_standard) { @@ -513,6 +517,10 @@ void pythonmod_deinit(struct module_env* env, int id) Py_XDECREF(res); /* Free shared data if any */ Py_XDECREF(pe->data); + Py_XDECREF(pe->func_init); + Py_XDECREF(pe->func_deinit); + Py_XDECREF(pe->func_inform); + Py_XDECREF(pe->func_operate); PyGILState_Release(gil); if(--py_mod_count==0) { From fc8bf269e91a05a3c05801a9dcfb93cc70405e9f Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 29 Jun 2023 12:26:49 +0200 Subject: [PATCH 149/177] - More fixes for reference counting for python module and clean up failure code. --- doc/Changelog | 4 ++ pythonmod/pythonmod.c | 87 +++++++++++++++++++++++++++++-------------- 2 files changed, 63 insertions(+), 28 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 7831c81ba..639c99ca6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 June 2023: George + - More fixes for reference counting for python module and clean up + failure code. + 29 June 2023: Wouter - Fix python modules with multiple scripts, by incrementing reference counts. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index b73dc2d53..b5a6936fb 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -258,7 +258,7 @@ int pythonmod_init(struct module_env* env, int id) /* Initialize module */ FILE* script_py = NULL; - PyObject* py_init_arg, *res; + PyObject* py_init_arg = NULL, *res = NULL; PyGILState_STATE gil; int init_standard = 1, i = 0; #if PY_MAJOR_VERSION < 3 @@ -317,6 +317,7 @@ int pythonmod_init(struct module_env* env, int id) if (py_mod_count==1) { /* Initialize Python */ if(PyRun_SimpleString("import sys \n") < 0 ) { + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); goto python_init_fail; } PyRun_SimpleString("sys.path.append('.') \n"); @@ -329,13 +330,16 @@ int pythonmod_init(struct module_env* env, int id) PyRun_SimpleString(wdir); } if(PyRun_SimpleString("import site\n") < 0) { + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); goto python_init_fail; } if(PyRun_SimpleString("sys.path.extend(site.getsitepackages())\n") < 0) { + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); goto python_init_fail; } if(PyRun_SimpleString("from unboundmodule import *\n") < 0) { + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); goto python_init_fail; } } @@ -352,18 +356,22 @@ int pythonmod_init(struct module_env* env, int id) if (script_py == NULL) { log_err("pythonmod: can't open file %s for reading", pe->fname); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } /* Load file */ pe->module = PyImport_AddModule("__main__"); + Py_XINCREF(pe->module); pe->dict = PyModule_GetDict(pe->module); + Py_XINCREF(pe->dict); pe->data = PyDict_New(); - Py_XINCREF(pe->data); - PyModule_AddObject(pe->module, "mod_env", pe->data); - - /* TODO: deallocation of pe->... if an error occurs */ + Py_XINCREF(pe->data); /* reference will be stolen below */ + if(PyModule_AddObject(pe->module, "mod_env", pe->data) < 0) { + log_err("pythonmod: could not add mod_env object"); + Py_XDECREF(pe->data); /* 2 times, here and on python_init_fail; */ + /* on failure the reference is not stolen */ + goto python_init_fail; + } if (PyRun_SimpleFile(script_py, pe->fname) < 0) { #if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) @@ -394,18 +402,30 @@ int pythonmod_init(struct module_env* env, int id) fstr = malloc(flen+1); if(!fstr) { log_err("malloc failure to print parse error"); - PyGILState_Release(gil); + +/* close the file */ +#if PY_MAJOR_VERSION < 3 + Py_XDECREF(PyFileObject); +#else fclose(script_py); - return 0; +#endif + + goto python_init_fail; } fseek(script_py, 0, SEEK_SET); if(fread(fstr, flen, 1, script_py) < 1) { log_err("file read failed to print parse error: %s: %s", pe->fname, strerror(errno)); - PyGILState_Release(gil); - fclose(script_py); free(fstr); - return 0; + +/* close the file */ +#if PY_MAJOR_VERSION < 3 + Py_XDECREF(PyFileObject); +#else + fclose(script_py); +#endif + + goto python_init_fail; } fstr[flen] = 0; /* we compile the string, but do not run it, to stop side-effects */ @@ -413,17 +433,26 @@ int pythonmod_init(struct module_env* env, int id) * that we are expecting */ (void)Py_CompileString(fstr, pe->fname, Py_file_input); #endif + log_py_err(); - PyGILState_Release(gil); + +/* close the file */ +#if PY_MAJOR_VERSION < 3 + Py_XDECREF(PyFileObject); +#else fclose(script_py); +#endif + #if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) /* no cleanup needed for python before 3.9 */ #else /* cleanup for python 3.9 and newer */ free(fstr); #endif - return 0; + goto python_init_fail; } + +/* close the file */ #if PY_MAJOR_VERSION < 3 Py_XDECREF(PyFileObject); #else @@ -436,30 +465,26 @@ int pythonmod_init(struct module_env* env, int id) if ((pe->func_init = PyDict_GetItemString(pe->dict, "init")) == NULL) { log_err("pythonmod: function init is missing in %s", pe->fname); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } } Py_XINCREF(pe->func_init); if ((pe->func_deinit = PyDict_GetItemString(pe->dict, "deinit")) == NULL) { log_err("pythonmod: function deinit is missing in %s", pe->fname); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } Py_XINCREF(pe->func_deinit); if ((pe->func_operate = PyDict_GetItemString(pe->dict, "operate")) == NULL) { log_err("pythonmod: function operate is missing in %s", pe->fname); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } Py_XINCREF(pe->func_operate); if ((pe->func_inform = PyDict_GetItemString(pe->dict, "inform_super")) == NULL) { log_err("pythonmod: function inform_super is missing in %s", pe->fname); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } Py_XINCREF(pe->func_inform); @@ -477,20 +502,24 @@ int pythonmod_init(struct module_env* env, int id) { log_err("pythonmod: Exception occurred in function init"); log_py_err(); - Py_XDECREF(res); - Py_XDECREF(py_init_arg); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } Py_XDECREF(res); Py_XDECREF(py_init_arg); PyGILState_Release(gil); - return 1; python_init_fail: - log_err("pythonmod: cannot initialize core module: unboundmodule.py"); + Py_XDECREF(pe->module); + Py_XDECREF(pe->dict); + Py_XDECREF(pe->data); + Py_XDECREF(pe->func_init); + Py_XDECREF(pe->func_deinit); + Py_XDECREF(pe->func_operate); + Py_XDECREF(pe->func_inform); + Py_XDECREF(res); + Py_XDECREF(py_init_arg); PyGILState_Release(gil); return 0; } @@ -516,6 +545,8 @@ void pythonmod_deinit(struct module_env* env, int id) /* Free result if any */ Py_XDECREF(res); /* Free shared data if any */ + Py_XDECREF(pe->module); + Py_XDECREF(pe->dict); Py_XDECREF(pe->data); Py_XDECREF(pe->func_init); Py_XDECREF(pe->func_deinit); From ade710a9fd95092e1590a93e097c8512fc278e7e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 3 Jul 2023 10:10:16 +0200 Subject: [PATCH 150/177] - For #739: minor cleanup for testcases. --- testdata/svcb.tdir/svcb.failure-cases-01 | 2 +- testdata/svcb.tdir/svcb.success-cases.zone | 7 +++++++ testdata/svcb.tdir/svcb.success-cases.zone.cmp | 4 ++++ testdata/svcb.tdir/svcb.test | 7 +------ 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/testdata/svcb.tdir/svcb.failure-cases-01 b/testdata/svcb.tdir/svcb.failure-cases-01 index 49b83651a..6d57584f3 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-01 +++ b/testdata/svcb.tdir/svcb.failure-cases-01 @@ -3,7 +3,7 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; These cases should be bnase64 encoded but aren't +; These cases should be base64 encoded but aren't f21 HTTPS 1 foo.example.com. ech="123" f21 HTTPS 1 foo.example.com. echconfig="123" diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index fbe1fcb5f..c3d015ec0 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -47,7 +47,14 @@ s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a ke s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) ; dohpath can be (non-)quoted and MUST contain "?dns" +; currently there is no validation from Unbound, it can be anything +; maybe needs changing if Unbound is the primary authoritative for SVCB records. +; Then SVCB_SEMANTIC_CHECKS parts of the code could be used per authoritative role. +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath= +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="" +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/dns-query{?dns}" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcd}{!abcd}{?dns} _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcdabcd?dns?defedf} diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp index 91ea71682..3a42393ba 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone.cmp +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -8,6 +8,10 @@ s06.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +_dns.doh.example. 7200 IN SVCB \# 26 000103646F68076578616D706C65000001000302683200070000 +_dns.doh.example. 7200 IN SVCB \# 26 000103646F68076578616D706C65000001000302683200070000 +_dns.doh.example. 7200 IN SVCB \# 26 000103646F68076578616D706C65000001000302683200070000 +_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns}" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?abcd}{!abcd}{?dns}" _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?abcdabcd?dns?defedf}" diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index 88a9e95ff..280c58fc8 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -66,7 +66,7 @@ then elif $PRE/readzone svcb.failure-cases-03 then - echo "Failure case 02: 65 SvcParams is too many SvcParams; the limit is 64" + echo "Failure case 03: 65 SvcParams is too many SvcParams; the limit is 64" echo "Incorrectly succeeded" exit 1 @@ -76,11 +76,6 @@ then echo "Incorrectly succeeded" exit 1 -elif $PRE/readzone svcb.failure-cases-05 -then - echo "Dohpath must have '?dns' in the URI template variable" - echo "Incorrectly succeeded" - exit 1 else echo "All failure cases test successfully" fi From 48a6ff14a431dbcab30a53322fe7bdc0a6925556 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 3 Jul 2023 10:23:37 +0200 Subject: [PATCH 151/177] =?UTF-8?q?-=20Fix=20#906:=20warning:=20=E2=80=98P?= =?UTF-8?q?y=5FSetProgramName=E2=80=99=20is=20deprecated.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 3 +++ pythonmod/pythonmod.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 0eb1c9ef1..7ecbe01e0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 July 2023: Wouter + - Fix #906: warning: ‘Py_SetProgramName’ is deprecated. + 29 June 2023: George - More fixes for reference counting for python module and clean up failure code. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 5d30b1f87..628308612 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -303,18 +303,58 @@ int pythonmod_init(struct module_env* env, int id) /* Initialize Python libraries */ if (py_mod_count==1 && !Py_IsInitialized()) { +#if PY_VERSION_HEX >= 0x03080000 + PyStatus status; + PyPreConfig preconfig; + PyConfig config; +#endif #if PY_MAJOR_VERSION >= 3 wchar_t progname[8]; mbstowcs(progname, "unbound", 8); #else char *progname = "unbound"; #endif +#if PY_VERSION_HEX < 0x03080000 Py_SetProgramName(progname); +#else + /* Python must be preinitialized, before the PyImport_AppendInittab + * call. */ + PyPreConfig_InitPythonConfig(&preconfig); + status = Py_PreInitialize(&preconfig); + if(PyStatus_Exception(status)) { + log_err("python exception in Py_PreInitialize: %s%s%s", + (status.func?status.func:""), (status.func?": ":""), + (status.err_msg?status.err_msg:"")); + return 0; + } +#endif Py_NoSiteFlag = 1; #if PY_MAJOR_VERSION >= 3 PyImport_AppendInittab(SWIG_name, (void*)SWIG_init); #endif +#if PY_VERSION_HEX < 0x03080000 Py_Initialize(); +#else + PyConfig_InitPythonConfig(&config); + status = PyConfig_SetString(&config, &config.program_name, progname); + if(PyStatus_Exception(status)) { + log_err("python exception in PyConfig_SetString(.. program_name ..): %s%s%s", + (status.func?status.func:""), (status.func?": ":""), + (status.err_msg?status.err_msg:"")); + PyConfig_Clear(&config); + return 0; + } + config.site_import = 0; + status = Py_InitializeFromConfig(&config); + if(PyStatus_Exception(status)) { + log_err("python exception in Py_InitializeFromConfig: %s%s%s", + (status.func?status.func:""), (status.func?": ":""), + (status.err_msg?status.err_msg:"")); + PyConfig_Clear(&config); + return 0; + } + PyConfig_Clear(&config); +#endif #if PY_MAJOR_VERSION <= 2 || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION <= 6) /* initthreads only for python 3.6 and older */ PyEval_InitThreads(); From 5be7f1ef8aa9731ae30ffbfc9c9a0a239763ece7 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 3 Jul 2023 10:51:34 +0200 Subject: [PATCH 152/177] - Code cleanup for sldns_str2wire_svcparam_key_lookup. --- sldns/str2wire.c | 51 ++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 5633f5428..45e247613 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1123,41 +1123,40 @@ sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) return key_value; } else switch (key_len) { - case sizeof("mandatory")-1: - if (!strncmp(key, "mandatory", sizeof("mandatory")-1)) - return SVCB_KEY_MANDATORY; - if (!strncmp(key, "echconfig", sizeof("echconfig")-1)) - return SVCB_KEY_ECH; /* allow "echconfig" as well as "ech" */ + case 3: + if (!strncmp(key, "ech", key_len)) + return SVCB_KEY_ECH; break; - case sizeof("alpn")-1: - if (!strncmp(key, "alpn", sizeof("alpn")-1)) + case 4: + if (!strncmp(key, "alpn", key_len)) return SVCB_KEY_ALPN; - if (!strncmp(key, "port", sizeof("port")-1)) + if (!strncmp(key, "port", key_len)) return SVCB_KEY_PORT; break; - case sizeof("no-default-alpn")-1: - if (!strncmp( key , "no-default-alpn" - , sizeof("no-default-alpn")-1)) - return SVCB_KEY_NO_DEFAULT_ALPN; - break; - - case sizeof("ipv4hint")-1: - if (!strncmp(key, "ipv4hint", sizeof("ipv4hint")-1)) - return SVCB_KEY_IPV4HINT; - if (!strncmp(key, "ipv6hint", sizeof("ipv6hint")-1)) - return SVCB_KEY_IPV6HINT; - break; - - case sizeof("dohpath")-1: - if (!strncmp(key, "dohpath", sizeof("dohpath")-1)) + case 7: + if (!strncmp(key, "dohpath", key_len)) return SVCB_KEY_DOHPATH; break; - case sizeof("ech")-1: - if (!strncmp(key, "ech", sizeof("ech")-1)) - return SVCB_KEY_ECH; + case 8: + if (!strncmp(key, "ipv4hint", key_len)) + return SVCB_KEY_IPV4HINT; + if (!strncmp(key, "ipv6hint", key_len)) + return SVCB_KEY_IPV6HINT; + break; + + case 9: + if (!strncmp(key, "mandatory", key_len)) + return SVCB_KEY_MANDATORY; + if (!strncmp(key, "echconfig", key_len)) + return SVCB_KEY_ECH; /* allow "echconfig" as well as "ech" */ + break; + + case 15: + if (!strncmp(key, "no-default-alpn", key_len)) + return SVCB_KEY_NO_DEFAULT_ALPN; break; default: From 5aa47fb1fafe62f132fa858aae262fd541300ae9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 3 Jul 2023 13:50:39 +0200 Subject: [PATCH 153/177] - Fix dereference of NULL variable warning in mesh_do_callback. --- doc/Changelog | 1 + services/mesh.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index b383b023c..34fcb1fba 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ 3 July 2023: Wouter - Fix #906: warning: ‘Py_SetProgramName’ is deprecated. + - Fix dereference of NULL variable warning in mesh_do_callback. 29 June 2023: George - More fixes for reference counting for python module and clean up diff --git a/services/mesh.c b/services/mesh.c index 53bbbfc21..0c920a16a 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1173,7 +1173,7 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, else secure = 0; if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; - if(!rcode && (rep->security == sec_status_bogus || + if(!rcode && rep && (rep->security == sec_status_bogus || rep->security == sec_status_secure_sentinel_fail)) { if(!(reason = errinf_to_str_bogus(&m->s))) rcode = LDNS_RCODE_SERVFAIL; @@ -1213,7 +1213,8 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, } else { fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, LDNS_RCODE_NOERROR, r->buf, - rep->security, reason, was_ratelimited); + (rep?rep->security:sec_status_unchecked), + reason, was_ratelimited); } } free(reason); From 014db3fb03a8cf47e096af9ee82af7816d2619b8 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 3 Jul 2023 14:40:01 +0200 Subject: [PATCH 154/177] - For #802: Cleanup comments and add RCODE check for CD bit test case. --- services/mesh.c | 3 --- testdata/ede.tdir/ede.test | 7 +++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index dcaa3cc32..23d59f9f9 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1479,9 +1479,6 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); } - - /* Send along EDE BOGUS EDNS0 option when validation is bogus */ - m->reply_list = NULL; comm_point_send_reply(&r->query_reply); m->reply_list = rlist; diff --git a/testdata/ede.tdir/ede.test b/testdata/ede.tdir/ede.test index 0ce8b92a5..7ce05faf9 100644 --- a/testdata/ede.tdir/ede.test +++ b/testdata/ede.tdir/ede.test @@ -71,6 +71,12 @@ fi # EDE with CD bit set (EDE but no SERVFAIL) dig @127.0.0.1 -p $UNBOUND_PORT cd.dnskey-failures.test +cd > cd_bit_ede.txt +if ! grep -q -e "NXDOMAIN" cd_bit_ede.txt +then + echo "No NXDOMAIN reply with CD bit set" + cat cd_bit_ede.txt + exit 1 +fi if ! grep -q -e "OPT=15: 00 09" -e "EDE: 9" cd_bit_ede.txt then echo "No EDE attached with CD bit set" @@ -78,4 +84,5 @@ then exit 1 fi +# TODO EDE with CD bit set (EDE but no SERVFAIL) for a cached answer # TODO DNSSEC indeterminate when implemented From 0afe58a06ee445f815e49b5caa2ac55a48e6cb43 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 3 Jul 2023 15:36:30 +0200 Subject: [PATCH 155/177] - Skip the 00-lint test. splint is not maintained; it either does not work or produces false positives. Static analysis is handled in the clang test. --- doc/Changelog | 3 +++ testdata/00-lint.tdir/00-lint.dsc | 10 +++++----- testdata/00-lint.tdir/00-lint.pre | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 testdata/00-lint.tdir/00-lint.pre diff --git a/doc/Changelog b/doc/Changelog index befbfcaab..41fe08450 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ - Code cleanup for sldns_str2wire_svcparam_key_lookup. - Merge #802: add validation EDEs to queries where the CD bit is set. - For #802: Cleanup comments and add RCODE check for CD bit test case. + - Skip the 00-lint test. splint is not maintained; it either does not + work or produces false positives. Static analysis is handled in the + clang test. 3 July 2023: Wouter - Fix #906: warning: ‘Py_SetProgramName’ is deprecated. diff --git a/testdata/00-lint.tdir/00-lint.dsc b/testdata/00-lint.tdir/00-lint.dsc index 4778f7a81..814a53717 100644 --- a/testdata/00-lint.tdir/00-lint.dsc +++ b/testdata/00-lint.tdir/00-lint.dsc @@ -3,14 +3,14 @@ Version: 1.0 Description: Put source into lint. CreationDate: Wed Jan 3 14:12:02 CET 2007 Maintainer: dr. W.C.A. Wijngaards -Category: +Category: Component: -CmdDepends: -Depends: +CmdDepends: +Depends: Help: -Pre: +Pre: 00-lint.pre Post: Test: 00-lint.test -AuxFiles: +AuxFiles: Passed: Failure: diff --git a/testdata/00-lint.tdir/00-lint.pre b/testdata/00-lint.tdir/00-lint.pre new file mode 100644 index 000000000..507f5e1e9 --- /dev/null +++ b/testdata/00-lint.tdir/00-lint.pre @@ -0,0 +1,14 @@ +# #-- 00-lint.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +PRE="../.." + +if test -f $PRE/unbound_test_00-lint ; then + echo test enabled +else + skip_test "test skipped; clang linter preferred over splint" +fi From 40e47bf767f1dd235cd242fd4ea0c7b9ebde59da Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 6 Jul 2023 21:57:27 +0200 Subject: [PATCH 156/177] - For #664: easier code flow for subnetcache prefetching. - For #664: add testcase. --- daemon/worker.c | 2 +- edns-subnet/subnetmod.c | 8 +- services/mesh.c | 156 +++++++--------------------------- services/mesh.h | 4 +- testdata/subnet_prefetch.crpl | 100 +++++++++------------- util/data/msgreply.c | 38 ++++++++- util/data/msgreply.h | 6 ++ 7 files changed, 120 insertions(+), 194 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index bf8c5d6b6..d85e1f6e6 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -786,7 +786,7 @@ reply_and_prefetch(struct worker* worker, struct query_info* qinfo, if(modstack_find(&worker->env.mesh->mods, "subnetcache") != -1 && worker->env.unique_mesh) { mesh_new_prefetch(worker->env.mesh, qinfo, flags, leeway + - PREFETCH_EXPIRY_ADD, rpz_passthru, repinfo, opt_list); + PREFETCH_EXPIRY_ADD, rpz_passthru, &repinfo->addr, opt_list); return; } #endif diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 02994b3ab..6ec3be497 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -331,6 +331,8 @@ update_cache(struct module_qstate *qstate, int id) struct ecs_data *edns = &sq->ecs_client_in; size_t i; hashvalue_type h; + struct lruhash_entry* lru_entry; + int need_to_insert; /* qinfo_hash is not set if it is prefetch request */ if (qstate->minfo[id] && ((struct subnet_qstate*)qstate->minfo[id])->qinfo_hash) { @@ -340,9 +342,9 @@ update_cache(struct module_qstate *qstate, int id) } /* Step 1, general qinfo lookup */ - struct lruhash_entry *lru_entry = slabhash_lookup(subnet_msg_cache, h, + lru_entry = slabhash_lookup(subnet_msg_cache, h, &qstate->qinfo, 1); - int need_to_insert = (lru_entry == NULL); + need_to_insert = (lru_entry == NULL); if (!lru_entry) { void* data = calloc(1, sizeof(struct subnet_msg_cache_data)); @@ -456,7 +458,7 @@ lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate *sq, sq->ecs_client_out.subnet_validdata = 1; } - if (prefetch && *qstate->env->now > ((struct reply_info *)node->elem)->prefetch_ttl) { + if (prefetch && *qstate->env->now >= ((struct reply_info *)node->elem)->prefetch_ttl) { qstate->need_refetch = 1; } return 1; diff --git a/services/mesh.c b/services/mesh.c index 520678734..2eea0b558 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -688,107 +688,6 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, return 1; } -#ifdef CLIENT_SUBNET -/* Same logic as mesh_schedule_prefetch but tailored to the subnet module logic - * like passing along the comm_reply info. This will be faked into an EDNS - * option for processing by the subnet module if the client has not already - * attached its own ECS data. */ -static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, - struct query_info* qinfo, uint16_t qflags, time_t leeway, int run, - int rpz_passthru, struct mesh_state* mstate, - struct sockaddr_storage *client_addr) -{ - struct mesh_state* s = NULL; - struct edns_option* opt = NULL; -#ifdef UNBOUND_DEBUG - struct rbnode_type* n; -#endif - - if(!mesh_make_new_space(mesh, NULL)) { - verbose(VERB_ALGO, "Too many queries. dropped prefetch."); - mesh->stats_dropped ++; - return; - } - - s = mesh_state_create(mesh->env, qinfo, NULL, - qflags&(BIT_RD|BIT_CD), 0, 0); - if(!s) { - log_err("prefetch_subnet mesh_state_create: out of memory"); - return; - } - - mesh_state_make_unique(s); - - opt = edns_opt_list_find(mstate->s.edns_opts_front_in, mesh->env->cfg->client_subnet_opcode); - if(opt) { - /* Use the client's ECS data */ - if(!edns_opt_list_append(&s->s.edns_opts_front_in, opt->opt_code, - opt->opt_len, opt->opt_data, s->s.region)) { - log_err("prefetch_subnet edns_opt_list_append: out of memory"); - return; - } - } else { - /* Fake the ECS data from the client's IP */ - struct ecs_data ecs; - memset(&ecs, 0, sizeof(ecs)); - subnet_option_from_ss(client_addr, &ecs, mesh->env->cfg); - - if(ecs.subnet_validdata == 0) { - log_err("prefetch_subnet subnet_option_from_ss: invalid data"); - return; - } - - subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in, &s->s); - if(!s->s.edns_opts_front_in) { - log_err("prefetch_subnet subnet_ecs_opt_list_append: out of memory"); - return; - } - } -#ifdef UNBOUND_DEBUG - n = -#else - (void) -#endif - rbtree_insert(&mesh->all, &s->node); - log_assert(n != NULL); - /* set detached (it is now) */ - mesh->num_detached_states++; - /* make it ignore the cache */ - sock_list_insert(&s->s.blacklist, NULL, 0, s->s.region); - s->s.prefetch_leeway = leeway; - - if(s->list_select == mesh_no_list) { - /* move to either the forever or the jostle_list */ - if(mesh->num_forever_states < mesh->max_forever_states) { - mesh->num_forever_states ++; - mesh_list_insert(s, &mesh->forever_first, - &mesh->forever_last); - s->list_select = mesh_forever_list; - } else { - mesh_list_insert(s, &mesh->jostle_first, - &mesh->jostle_last); - s->list_select = mesh_jostle_list; - } - } - - s->s.rpz_passthru = rpz_passthru; - - if(!run) { -#ifdef UNBOUND_DEBUG - n = -#else - (void) -#endif - rbtree_insert(&mesh->run, &s->run_node); - log_assert(n != NULL); - return; - } - - mesh_state_delete(&mstate->s); - mesh_run(mesh, s, module_event_new, NULL); -} -#endif /* CLIENT_SUBNET */ - /* Internal backend routine of mesh_new_prefetch(). It takes one additional * parameter, 'run', which controls whether to run the prefetch state * immediately. When this function is called internally 'run' could be @@ -874,7 +773,7 @@ static void mesh_schedule_prefetch(struct mesh_area* mesh, * attached its own ECS data. */ static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, time_t leeway, int run, - int rpz_passthru, struct comm_reply* rep, struct edns_option* edns_list) + int rpz_passthru, struct sockaddr_storage* addr, struct edns_option* edns_list) { struct mesh_state* s = NULL; struct edns_option* opt = NULL; @@ -907,7 +806,7 @@ static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, /* Fake the ECS data from the client's IP */ struct ecs_data ecs; memset(&ecs, 0, sizeof(ecs)); - subnet_option_from_ss(&rep->addr, &ecs, mesh->env->cfg); + subnet_option_from_ss(addr, &ecs, mesh->env->cfg); if(ecs.subnet_validdata == 0) { log_err("prefetch_subnet subnet_option_from_ss: invalid data"); return; @@ -963,14 +862,14 @@ static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, time_t leeway, int rpz_passthru, - struct comm_reply* rep, struct edns_option* opt_list) + struct sockaddr_storage* addr, struct edns_option* opt_list) { + (void)addr; (void)opt_list; - (void)rep; #ifdef CLIENT_SUBNET - if(rep) + if(addr) mesh_schedule_prefetch_subnet(mesh, qinfo, qflags, leeway, 1, - rpz_passthru, rep, opt_list); + rpz_passthru, addr, opt_list); else #endif mesh_schedule_prefetch(mesh, qinfo, qflags, leeway, 1, @@ -1939,13 +1838,19 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, if(s == module_finished) { if(mstate->s.curmod == 0) { struct query_info* qinfo = NULL; + struct edns_option* opt_list = NULL, *ecs; + struct sockaddr_storage addr; uint16_t qflags; int rpz_p = 0; - struct sockaddr_storage client_addr; - if (mstate->reply_list) { - client_addr = mstate->reply_list->query_reply.addr; - } +#ifdef CLIENT_SUBNET + if(mstate->s.need_refetch && mstate->reply_list && + modstack_find(&mesh->mods, "subnetcache") != -1 && + mstate->s.env->unique_mesh) { + addr = mstate->reply_list->query_reply.addr; + } else +#endif + memset(&addr, 0, sizeof(addr)); mesh_query_done(mstate); mesh_walk_supers(mesh, mstate); @@ -1956,25 +1861,26 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, * we need to make a copy of the query info here. */ if(mstate->s.need_refetch) { mesh_copy_qinfo(mstate, &qinfo, &qflags); +#ifdef CLIENT_SUBNET + /* Make also a copy of the ecs option if any */ + if((ecs = edns_opt_list_find( + mstate->s.edns_opts_front_in, + mstate->s.env->cfg->client_subnet_opcode)) != NULL) { + (void)edns_opt_list_append(&opt_list, + ecs->opt_code, ecs->opt_len, + ecs->opt_data, + mstate->s.env->scratch); + } +#endif rpz_p = mstate->s.rpz_passthru; } if(qinfo) { -#ifdef CLIENT_SUBNET - if(modstack_find(&mesh->mods, "subnetcache") != -1 ) { - mesh_schedule_prefetch_subnet(mesh, qinfo, qflags, - 0, 1, rpz_p, mstate, &client_addr); - } - else { - mesh_state_delete(&mstate->s); - mesh_schedule_prefetch(mesh, qinfo, qflags, - 0, 1, rpz_p); - } -#else mesh_state_delete(&mstate->s); - mesh_schedule_prefetch(mesh, qinfo, qflags, - 0, 1, rpz_p); -#endif + mesh_new_prefetch(mesh, qinfo, qflags, 0, + rpz_p, + addr.ss_family!=AF_UNSPEC?&addr:NULL, + opt_list); } else { mesh_state_delete(&mstate->s); } diff --git a/services/mesh.h b/services/mesh.h index 3be9b63fa..eff3e73fd 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -335,13 +335,13 @@ int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, * @param leeway: TTL leeway what to expire earlier for this update. * @param rpz_passthru: if true, the rpz passthru was previously found and * further rpz processing is stopped. - * @param rep: comm_reply for the client; to be used when subnet is enabled. + * @param addr: sockaddr_storage for the client; to be used with subnet. * @param opt_list: edns opt_list from the client; to be used when subnet is * enabled. */ void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, time_t leeway, int rpz_passthru, - struct comm_reply* rep, struct edns_option* opt_list); + struct sockaddr_storage* addr, struct edns_option* opt_list); /** * Handle new event from the wire. A serviced query has returned. diff --git a/testdata/subnet_prefetch.crpl b/testdata/subnet_prefetch.crpl index 7083aba6a..934103811 100644 --- a/testdata/subnet_prefetch.crpl +++ b/testdata/subnet_prefetch.crpl @@ -1,18 +1,17 @@ -; Check if the prefetch option works properly for messages stored in the global -; cache for non-ECS clients. The prefetch query needs to result in an ECS -; outgoing query based on the client's IP. +; Check if the prefetch option works properly for messages stored in ECS cache +; for non-ECS clients. server: trust-anchor-signaling: no target-fetch-policy: "0 0 0 0 0" send-client-subnet: 1.2.3.4 max-client-subnet-ipv4: 21 + client-subnet-always-forward: yes module-config: "subnetcache iterator" verbosity: 3 access-control: 127.0.0.1 allow_snoop qname-minimisation: no minimal-responses: no - serve-expired: yes prefetch: yes stub-zone: @@ -20,7 +19,7 @@ stub-zone: stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. CONFIG_END -SCENARIO_BEGIN Test prefetch option for global cache +SCENARIO_BEGIN Test prefetch option for ECS cache ; K.ROOT-SERVERS.NET. RANGE_BEGIN 0 100 @@ -34,9 +33,6 @@ RANGE_BEGIN 0 100 SECTION ANSWER . IN NS K.ROOT-SERVERS.NET. SECTION ADDITIONAL - HEX_EDNSDATA_BEGIN - ;; we expect to receive empty - HEX_EDNSDATA_END K.ROOT-SERVERS.NET. IN A 193.0.14.129 ENTRY_END @@ -65,9 +61,6 @@ RANGE_BEGIN 0 100 SECTION ANSWER com. IN NS a.gtld-servers.net. SECTION ADDITIONAL - HEX_EDNSDATA_BEGIN - ;; we expect to receive empty - HEX_EDNSDATA_END a.gtld-servers.net. IN A 192.5.6.30 ENTRY_END @@ -85,7 +78,7 @@ RANGE_BEGIN 0 100 RANGE_END ; ns.example.com. -RANGE_BEGIN 0 10 +RANGE_BEGIN 0 100 ADDRESS 1.2.3.4 ENTRY_BEGIN MATCH opcode qtype qname @@ -96,43 +89,6 @@ RANGE_BEGIN 0 10 SECTION ANSWER example.com. IN NS ns.example.com. SECTION ADDITIONAL - HEX_EDNSDATA_BEGIN - ;; we expect to receive empty - HEX_EDNSDATA_END - ns.example.com. IN A 1.2.3.4 - ENTRY_END - - ; response to query of interest - ENTRY_BEGIN - MATCH opcode qtype qname - ADJUST copy_id - REPLY QR NOERROR - SECTION QUESTION - www.example.com. IN A - SECTION ANSWER - www.example.com. 10 IN A 10.20.30.40 - SECTION AUTHORITY - example.com. IN NS ns.example.com. - SECTION ADDITIONAL - ns.example.com. IN A 1.2.3.4 - ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 11 100 - ADDRESS 1.2.3.4 - ENTRY_BEGIN - MATCH opcode qtype qname - ADJUST copy_id - REPLY QR NOERROR - SECTION QUESTION - example.com. IN NS - SECTION ANSWER - example.com. IN NS ns.example.com. - SECTION ADDITIONAL - HEX_EDNSDATA_BEGIN - ;; we expect to receive empty - HEX_EDNSDATA_END ns.example.com. IN A 1.2.3.4 ENTRY_END @@ -144,7 +100,7 @@ RANGE_BEGIN 11 100 SECTION QUESTION www.example.com. IN A SECTION ANSWER - www.example.com. IN A 10.20.30.40 + www.example.com. 10 IN A 10.20.30.40 SECTION AUTHORITY example.com. IN NS ns.example.com. SECTION ADDITIONAL @@ -167,7 +123,7 @@ SECTION QUESTION www.example.com. IN A ENTRY_END -; This answer should be in the global cache +; This answer will end up in the subnet cache STEP 2 CHECK_ANSWER ENTRY_BEGIN MATCH all @@ -183,33 +139,53 @@ ns.example.com. IN A 1.2.3.4 ENTRY_END ; Try to trigger a prefetch -STEP 3 TIME_PASSES ELAPSE 11 +STEP 3 TIME_PASSES ELAPSE 9 -STEP 11 QUERY +STEP 4 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION www.example.com. IN A ENTRY_END -; This expired record came from the cache and a prefetch is triggered -STEP 12 CHECK_ANSWER +; This record came from the cache and a prefetch is triggered +STEP 5 CHECK_ANSWER ENTRY_BEGIN MATCH all ttl REPLY QR RD RA NOERROR SECTION QUESTION www.example.com. IN A SECTION ANSWER -www.example.com. 30 IN A 10.20.30.40 +www.example.com. 1 IN A 10.20.30.40 SECTION AUTHORITY -example.com. 3589 IN NS ns.example.com. +example.com. 3591 IN NS ns.example.com. SECTION ADDITIONAL -ns.example.com. 3589 IN A 1.2.3.4 +ns.example.com. 3591 IN A 1.2.3.4 ENTRY_END -; Allow upstream to reply to the prefetch query. -; It can only be answered if correct ECS was derived from the client's IP. -; Otherwise the test will fail with "messages pending". -STEP 13 TRAFFIC +; Allow for some time to pass to differentiate from a cached vs resolved answer +STEP 6 TIME_PASSES ELAPSE 1 + +STEP 7 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This prefetched record came from the ECS cache +STEP 8 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 9 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3599 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3599 IN A 1.2.3.4 +ENTRY_END SCENARIO_END diff --git a/util/data/msgreply.c b/util/data/msgreply.c index e3ee607b1..0b4c0b534 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -1195,7 +1195,7 @@ int inplace_cb_query_response_call(struct module_env* env, } struct edns_option* edns_opt_copy_region(struct edns_option* list, - struct regional* region) + struct regional* region) { struct edns_option* result = NULL, *cur = NULL, *s; while(list) { @@ -1224,6 +1224,42 @@ struct edns_option* edns_opt_copy_region(struct edns_option* list, return result; } +struct edns_option* edns_opt_copy_filter_region(struct edns_option* list, + uint16_t* filter_list, size_t filter_list_len, struct regional* region) +{ + struct edns_option* result = NULL, *cur = NULL, *s; + size_t i; + while(list) { + for(i=0; iopt_code) goto found; + if(i == filter_list_len) goto next; +found: + /* copy edns option structure */ + s = regional_alloc_init(region, list, sizeof(*list)); + if(!s) return NULL; + s->next = NULL; + + /* copy option data */ + if(s->opt_data) { + s->opt_data = regional_alloc_init(region, s->opt_data, + s->opt_len); + if(!s->opt_data) + return NULL; + } + + /* link into list */ + if(cur) + cur->next = s; + else result = s; + cur = s; + +next: + /* examine next element */ + list = list->next; + } + return result; +} + int edns_opt_compare(struct edns_option* p, struct edns_option* q) { if(!p && !q) return 0; diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 9538adc5a..820090a54 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -718,6 +718,12 @@ int inplace_cb_query_response_call(struct module_env* env, struct edns_option* edns_opt_copy_region(struct edns_option* list, struct regional* region); +/** + * Copy a filtered edns option list allocated to the new region + */ +struct edns_option* edns_opt_copy_filter_region(struct edns_option* list, + uint16_t* filter_list, size_t filter_list_len, struct regional* region); + /** * Copy edns option list allocated with malloc */ From 7240ecbeb00687197a039d7088e8825c58aae018 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 11 Jul 2023 14:31:49 +0200 Subject: [PATCH 157/177] - Merge #664 from tilan7763: Add prefetch support for subnet cache entries. - For #664: Easier code flow for subnetcache prefetching. - For #664: Add testcase. - For #664: Rename subnet_prefetch tests to subnet_global_prefetch to differentiate from the new subnet prefetch support. --- doc/Changelog | 8 + testdata/subnet_global_prefetch.crpl | 236 +++++++++++++++++ ...ubnet_global_prefetch_always_forward.crpl} | 0 testdata/subnet_global_prefetch_expired.crpl | 241 ++++++++++++++++++ ...bnet_global_prefetch_with_client_ecs.crpl} | 0 5 files changed, 485 insertions(+) create mode 100644 testdata/subnet_global_prefetch.crpl rename testdata/{subnet_prefetch_always_forward.crpl => subnet_global_prefetch_always_forward.crpl} (100%) create mode 100644 testdata/subnet_global_prefetch_expired.crpl rename testdata/{subnet_prefetch_with_client_ecs.crpl => subnet_global_prefetch_with_client_ecs.crpl} (100%) diff --git a/doc/Changelog b/doc/Changelog index 41fe08450..101187abd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,11 @@ +11 July 2023: George + - Merge #664 from tilan7763: Add prefetch support for subnet cache + entries. + - For #664: Easier code flow for subnetcache prefetching. + - For #664: Add testcase. + - For #664: Rename subnet_prefetch tests to subnet_global_prefetch to + differentiate from the new subnet prefetch support. + 3 July 2023: George - Merge #739: Add SVCB dohpath support. - Code cleanup for sldns_str2wire_svcparam_key_lookup. diff --git a/testdata/subnet_global_prefetch.crpl b/testdata/subnet_global_prefetch.crpl new file mode 100644 index 000000000..2f005d43b --- /dev/null +++ b/testdata/subnet_global_prefetch.crpl @@ -0,0 +1,236 @@ +; Check if the prefetch option works properly for messages stored in the global +; cache for non-ECS clients. The prefetch query needs to result in an ECS +; outgoing query based on the client's IP. + +server: + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 21 + module-config: "subnetcache iterator" + verbosity: 3 + access-control: 127.0.0.1 allow_snoop + qname-minimisation: no + minimal-responses: no + prefetch: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test prefetch option for global cache with ECS enabled + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. 10 IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 11 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. 10 IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 15 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This answer should be in the global cache (because no ECS from upstream) +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Try to trigger a prefetch +STEP 3 TIME_PASSES ELAPSE 9 + +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This record came from the global cache and a prefetch was triggered. +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 1 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3591 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3591 IN A 1.2.3.4 +ENTRY_END + +; Allow time to pass so that the global cache record is expired. +STEP 13 TIME_PASSES ELAPSE 2 + +; Query again to verify that the record was prefetched and stored in the ECS +; cache. +STEP 15 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This record came from the ECS cache. +STEP 16 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 8 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3598 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3598 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/testdata/subnet_prefetch_always_forward.crpl b/testdata/subnet_global_prefetch_always_forward.crpl similarity index 100% rename from testdata/subnet_prefetch_always_forward.crpl rename to testdata/subnet_global_prefetch_always_forward.crpl diff --git a/testdata/subnet_global_prefetch_expired.crpl b/testdata/subnet_global_prefetch_expired.crpl new file mode 100644 index 000000000..de1b78055 --- /dev/null +++ b/testdata/subnet_global_prefetch_expired.crpl @@ -0,0 +1,241 @@ +; Check if the prefetch option works properly for messages stored in the global +; cache for non-ECS clients. The prefetch query needs to result in an ECS +; outgoing query based on the client's IP. +; Prefetch initiated via serve-expired. + +server: + trust-anchor-signaling: no + target-fetch-policy: "0 0 0 0 0" + send-client-subnet: 1.2.3.4 + max-client-subnet-ipv4: 21 + module-config: "subnetcache iterator" + verbosity: 3 + access-control: 127.0.0.1 allow_snoop + qname-minimisation: no + minimal-responses: no + serve-expired: yes + serve-expired-ttl: 1 + prefetch: yes + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test prefetch option for global cache with ECS enabled (initiated via serve-expired) + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + . IN NS + SECTION ANSWER + . IN NS K.ROOT-SERVERS.NET. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + K.ROOT-SERVERS.NET. IN A 193.0.14.129 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + com. IN NS + SECTION ANSWER + com. IN NS a.gtld-servers.net. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + a.gtld-servers.net. IN A 192.5.6.30 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 10 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. 10 IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 11 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ;; we expect to receive empty + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ; response to query of interest + ENTRY_BEGIN + MATCH opcode qtype qname ednsdata + ADJUST copy_id copy_ednsdata_assume_clientsubnet + REPLY QR NOERROR + SECTION QUESTION + www.example.com. IN A + SECTION ANSWER + www.example.com. 10 IN A 10.20.30.40 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ; client is 127.0.0.1 + 00 08 ; OPC + 00 07 ; option length + 00 01 ; Family + 15 00 ; source mask, scopemask + 7f 00 00 ; address + HEX_EDNSDATA_END + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This answer should be in the global cache (because no ECS from upstream) +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Try to trigger a prefetch with expired data +STEP 3 TIME_PASSES ELAPSE 11 + +STEP 11 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This expired record came from the global cache and a prefetch is triggered. +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 30 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3589 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3589 IN A 1.2.3.4 +ENTRY_END + +;STEP 13 TRAFFIC +; Allow enough time to pass so that the expired record from the global cache +; cannot be used anymore. +STEP 14 TIME_PASSES ELAPSE 1 + +; Query again to verify that the record was prefetched and stored in the ECS +; cache. +STEP 15 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; This record came from the ECS cache. +STEP 16 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 9 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. 3599 IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. 3599 IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/testdata/subnet_prefetch_with_client_ecs.crpl b/testdata/subnet_global_prefetch_with_client_ecs.crpl similarity index 100% rename from testdata/subnet_prefetch_with_client_ecs.crpl rename to testdata/subnet_global_prefetch_with_client_ecs.crpl From 52f0387cac589adf5a0c07d5d869ac340c0518ce Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 13 Jul 2023 11:52:14 +0200 Subject: [PATCH 158/177] - Merge #880 from chipitsine: services/authzone.c: remove redundant check. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 101187abd..d7aadad13 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +13 July 2023: George + - Merge #880 from chipitsine: services/authzone.c: remove redundant + check. + 11 July 2023: George - Merge #664 from tilan7763: Add prefetch support for subnet cache entries. From 299f55b0d1e1db5fe19ec5ffc5334fa0796daf71 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 14 Jul 2023 15:28:42 +0200 Subject: [PATCH 159/177] - More clear description of the different auth-zone behaviors on the man page. --- doc/Changelog | 4 ++++ doc/unbound.conf.5.in | 33 ++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index d7aadad13..b7d26c3f6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +14 July 2023: George + - More clear description of the different auth-zone behaviors on the + man page. + 13 July 2023: George - Merge #880 from chipitsine: services/authzone.c: remove redundant check. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 76ffde9bd..cc554985d 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2112,13 +2112,32 @@ useful when you want immediate changes to be visible. Authority zones are configured with \fBauth\-zone:\fR, and each one must have a \fBname:\fR. There can be multiple ones, by listing multiple auth\-zone clauses, each with a different name, pertaining to that part of the namespace. The authority zone with the name closest to the name looked up is used. -Authority zones are processed after \fBlocal\-zones\fR and before -cache (\fBfor\-downstream:\fR \fIyes\fR), and when used in this manner -make Unbound respond like an authority server. Authority zones are also -processed after cache, just before going to the network to fetch -information for recursion (\fBfor\-upstream:\fR \fIyes\fR), and when used -in this manner provide a local copy of an authority server that speeds up -lookups of that data. +Authority zones can be processed on two distinct, non-exclusive, configurable +stages. +.LP +With \fBfor\-downstream:\fR \fIyes\fR (default), authority zones are processed +after \fBlocal\-zones\fR and before cache. +When used in this manner, Unbound responds like an authority server with no +further processing other than returning an answer from the zone contents. +A notable example, in this case, is CNAME records which are returned verbatim +to downstream clients without further resolution. +.LP +With \fBfor\-upstream:\fR \fIyes\fR (default), authority zones are processed +after the cache lookup, just before going to the network to fetch +information for recursion. +When used in this manner they provide a local copy of an authority server +that speeds up lookups for that data during resolving. +.LP +If both options are enabled (default), client queries for an authority zone are +answered authoritatively from Unbound, while internal queries that require data +from the authority zone consult the local zone data instead of going to the +network. +.LP +An interesting configuration is \fBfor\-downstream:\fR \fIno\fR, +\fBfor\-upstream:\fR \fIyes\fR that allows for hyperlocal behavior where both +client and internal queries consult the local zone data while resolving. +In this case, the aforementioned CNAME example will result in a thoroughly +resolved answer. .LP Authority zones can be read from zonefile. And can be kept updated via AXFR and IXFR. After update the zonefile is rewritten. The update mechanism From 78c284e05d9cbb7575b1b55ab6fef48c8ffcfb30 Mon Sep 17 00:00:00 2001 From: headshog Date: Tue, 11 Jul 2023 18:44:31 +0300 Subject: [PATCH 160/177] fix numtrunc in str2wire.c --- sldns/rrdef.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 322eff096..130324a1f 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -702,7 +702,11 @@ sldns_get_rr_type_by_name(const char *name) /* TYPEXX representation */ if (strlen(name) > 4 && strncasecmp(name, "TYPE", 4) == 0) { - return atoi(name + 4); + unsigned int a = atoi(name + 4); + if (a > LDNS_RR_TYPE_LAST) { + return (enum sldns_enum_rr_type)0; + } + return a; } /* Normal types */ @@ -740,7 +744,11 @@ sldns_get_rr_class_by_name(const char *name) /* CLASSXX representation */ if (strlen(name) > 5 && strncasecmp(name, "CLASS", 5) == 0) { - return atoi(name + 5); + unsigned int a = atoi(name + 5); + if (a > LDNS_RR_TYPE_LAST) { + return (enum sldns_enum_rr_type)0; + } + return a; } /* Normal types */ From f5a2a58ce3fce117b9e478f0032ea8d81ba05344 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 17 Jul 2023 17:26:31 +0200 Subject: [PATCH 161/177] Review for #759: - Fix SEGFAULT in load_cache control command. - Change reason_bogus_str to an explicit NULL-terminated string. - Fix potential memory leak when discarding a message for referrals and 0 TTL answers. - Fix reason_bogus initialization in localzone answers. - reply_info creation in validator is always regional. --- daemon/cachedump.c | 1 + daemon/worker.c | 10 +++++----- iterator/iterator.c | 5 ++--- services/cache/dns.c | 4 ++-- services/localzone.c | 1 + util/data/msgreply.c | 43 ++++++++++++++++++------------------------- util/data/msgreply.h | 19 ++++++++----------- validator/validator.c | 20 +++++++------------- 8 files changed, 44 insertions(+), 59 deletions(-) diff --git a/daemon/cachedump.c b/daemon/cachedump.c index c915c5b0b..8d0466c49 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -652,6 +652,7 @@ load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker) log_warn("error cannot parse numbers: %s", s); return 0; } + memset(&rep, 0, sizeof(rep)); rep.flags = (uint16_t)flags; rep.qdcount = (uint16_t)qdcount; rep.ttl = (time_t)ttl; diff --git a/daemon/worker.c b/daemon/worker.c index 505616b39..529b22ae4 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -507,8 +507,8 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, msg->rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) return 0; - /* Attached the cached EDE (RFC8914) */ - if (worker->env.cfg->ede) { + /* Attach the cached EDE (RFC8914) */ + if(worker->env.cfg->ede) { edns_opt_list_append_ede(&edns->opt_list_out, worker->scratchpad, msg->rep->reason_bogus, msg->rep->reason_bogus_str); @@ -693,8 +693,8 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) goto bail_out; - /* Attached the cached EDE (RFC8914) */ - if (worker->env.cfg->ede) { + /* Attach the cached EDE (RFC8914) */ + if(worker->env.cfg->ede) { edns_opt_list_append_ede(&edns->opt_list_out, worker->scratchpad, rep->reason_bogus, rep->reason_bogus_str); @@ -1668,7 +1668,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, * ACLs allow the snooping. */ if(!(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) && acl != acl_allow_snoop ) { - if (worker->env.cfg->ede) { + if(worker->env.cfg->ede) { EDNS_OPT_LIST_APPEND_EDE(&edns.opt_list_out, worker->scratchpad, LDNS_EDE_NOT_AUTHORITATIVE, ""); } diff --git a/iterator/iterator.c b/iterator/iterator.c index 8fe8a0c99..d1f4bc955 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -358,7 +358,6 @@ error_response_cache(struct module_qstate* qstate, int id, int rcode) err.serve_expired_ttl = NORR_TTL; /* do not waste time trying to validate this servfail */ err.security = sec_status_indeterminate; - err.reason_bogus_str = NULL; verbose(VERB_ALGO, "store error response in message cache"); iter_dns_store(qstate->env, &qstate->qinfo, &err, 0, 0, 0, NULL, qstate->query_flags, qstate->qstarttime); @@ -3827,8 +3826,8 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, /* make sure QR flag is on */ iq->response->rep->flags |= BIT_QR; - /* explicitly set the EDE string size to 0 */ - iq->response->rep->reason_bogus_str_size = 0; + /* explicitly set the EDE string to NULL */ + iq->response->rep->reason_bogus_str = NULL; /* we have finished processing this query */ qstate->ext_state[id] = module_finished; diff --git a/services/cache/dns.c b/services/cache/dns.c index 225a68c61..a3d029231 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -157,7 +157,7 @@ dns_cache_store_msg(struct module_env* env, struct query_info* qinfo, /* we do not store the message, but we did store the RRs, * which could be useful for delegation information */ verbose(VERB_ALGO, "TTL 0: dropped msg from cache"); - free(rep); + reply_info_delete(rep, NULL); /* if the message is in the cache, remove that msg, * so that the TTL 0 response can be returned for future * responses (i.e. don't get answered from @@ -1073,7 +1073,7 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, ((ntohs(ref.key->rk.type)==LDNS_RR_TYPE_NS && !pside) ? qstarttime:*env->now + leeway)); } - free(rep); + reply_info_delete(rep, NULL); return 1; } else { /* store msg, and rrsets */ diff --git a/services/localzone.c b/services/localzone.c index 48fa730b5..44da22d78 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1308,6 +1308,7 @@ local_encode(struct query_info* qinfo, struct module_env* env, else rep.ns_numrrsets = 1; rep.rrset_count = 1; rep.rrsets = &rrset; + rep.reason_bogus = LDNS_EDE_NONE; udpsize = edns->udp_size; edns->edns_version = EDNS_ADVERTISED_VERSION; edns->udp_size = EDNS_ADVERTISED_SIZE; diff --git a/util/data/msgreply.c b/util/data/msgreply.c index b1884d023..792387444 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -117,16 +117,9 @@ construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd, rep->ar_numrrsets = ar; rep->rrset_count = total; rep->security = sec; - /* verify that we set the EDE to none by setting it explicitly */ - if (reason_bogus != LDNS_EDE_NONE) { - rep->reason_bogus = reason_bogus; - } else { - rep->reason_bogus = LDNS_EDE_NONE; - } + rep->reason_bogus = reason_bogus; /* this is only allocated and used for caching on copy */ rep->reason_bogus_str = NULL; - rep->reason_bogus_str_size = 0; - rep->authoritative = 0; /* array starts after the refs */ if(region) @@ -589,9 +582,9 @@ reply_info_parsedelete(struct reply_info* rep, struct alloc_cache* alloc) for(i=0; irrset_count; i++) { ub_packed_rrset_parsedelete(rep->rrsets[i], alloc); } - - if (rep->reason_bogus_str_size) { + if(rep->reason_bogus_str) { free(rep->reason_bogus_str); + rep->reason_bogus_str = NULL; } free(rep); } @@ -674,8 +667,9 @@ void reply_info_delete(void* d, void* ATTR_UNUSED(arg)) { struct reply_info* r = (struct reply_info*)d; - if (r->reason_bogus_str_size) { + if(r->reason_bogus_str) { free(r->reason_bogus_str); + r->reason_bogus_str = NULL; } free(r); } @@ -753,35 +747,34 @@ repinfo_copy_rrsets(struct reply_info* dest, struct reply_info* from, return 1; } -struct reply_info* -reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, +struct reply_info* +reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, struct regional* region) { struct reply_info* cp; - cp = construct_reply_info_base(region, rep->flags, rep->qdcount, - rep->ttl, rep->prefetch_ttl, rep->serve_expired_ttl, + cp = construct_reply_info_base(region, rep->flags, rep->qdcount, + rep->ttl, rep->prefetch_ttl, rep->serve_expired_ttl, rep->an_numrrsets, rep->ns_numrrsets, rep->ar_numrrsets, rep->rrset_count, rep->security, rep->reason_bogus); if(!cp) return NULL; - if (rep->reason_bogus_str_size > 0 && rep->reason_bogus_str) { - if (region) { + if(rep->reason_bogus_str && *rep->reason_bogus_str != 0) { + if(region) { cp->reason_bogus_str = (char*)regional_alloc(region, - sizeof(char) * (rep->reason_bogus_str_size + 1)); + sizeof(char) + * (strlen(rep->reason_bogus_str)+1)); + } else { + cp->reason_bogus_str = malloc(sizeof(char) + * (strlen(rep->reason_bogus_str)+1)); } - else { - cp->reason_bogus_str = malloc(sizeof(char) * (rep->reason_bogus_str_size + 1)); - } - - if (!(cp->reason_bogus_str)) { + if(!cp->reason_bogus_str) { if(!region) reply_info_parsedelete(cp, alloc); return NULL; } memcpy(cp->reason_bogus_str, rep->reason_bogus_str, - rep->reason_bogus_str_size+1); - cp->reason_bogus_str_size = rep->reason_bogus_str_size; + strlen(rep->reason_bogus_str)+1); } /* allocate ub_key structures special or not */ diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 9ee402f84..1339fd9cc 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -170,20 +170,17 @@ struct reply_info { /** * EDE (rfc8914) code with reason for DNSSEC bogus status. + * Used for caching the EDE. */ sldns_ede_code reason_bogus; /** - * EDE (rfc8914) text string with human-readable reason for DNSSEC - * bogus status. Used for caching the EDE. + * EDE (rfc8914) NULL-terminated string with human-readable reason + * for DNSSEC bogus status. + * Used for caching the EDE. */ char* reason_bogus_str; - /** - * EDE (rfc8914) text string size. - */ - size_t reason_bogus_str_size; - /** * Number of RRsets in each section. * The answer section. Add up the RRs in every RRset to calculate @@ -251,15 +248,15 @@ struct msgreply_entry { * @param ar: ar count * @param total: total rrset count (presumably an+ns+ar). * @param sec: security status of the reply info. - * @param: reason_bogus: the Extended DNS Error for DNSSEC bogus status + * @param reason_bogus: the Extended DNS Error for DNSSEC bogus status * @return the reply_info base struct with the array for putting the rrsets * in. The array has been zeroed. Returns NULL on malloc failure. */ struct reply_info* construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd, - time_t ttl, time_t prettl, time_t expttl, size_t an, size_t ns, - size_t ar, size_t total, enum sec_status sec, - sldns_ede_code reason_bogus); + time_t ttl, time_t prettl, time_t expttl, size_t an, size_t ns, + size_t ar, size_t total, enum sec_status sec, + sldns_ede_code reason_bogus); /** * Parse wire query into a queryinfo structure, return 0 on parse error. diff --git a/validator/validator.c b/validator/validator.c index f4c8242a8..18e4de072 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -2154,20 +2154,14 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, char* err_str = errinf_to_str_bogus(qstate); if(err_str) { size_t err_str_len = strlen(err_str); - - /* allocate space and store the error string and it's size*/ - if (qstate->region) { - vq->orig_msg->rep->reason_bogus_str = regional_alloc( - qstate->region, - sizeof(char) * (err_str_len + 1)); - } else { - vq->orig_msg->rep->reason_bogus_str = malloc( - sizeof(char) * (err_str_len + 1)); - } - + log_info("%s", err_str); + /* allocate space and store the error + * string; */ + vq->orig_msg->rep->reason_bogus_str = regional_alloc( + qstate->region, + sizeof(char) * (err_str_len+1)); memcpy(vq->orig_msg->rep->reason_bogus_str, - err_str, err_str_len + 1); - vq->orig_msg->rep->reason_bogus_str_size = err_str_len; + err_str, err_str_len+1); } free(err_str); } From 95604a90e86bf0369b620c136d17b003fafad046 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 19 Jul 2023 14:52:20 +0200 Subject: [PATCH 162/177] Review for #759: - Keep EDE information for keys close to key creation. - Fix inconsistencies between reply and cached EDEs. - Incorporate EDE caching checks in EDE tests. - Fix some EDE cases where missing DNSKEY was wrongly reported. --- services/mesh.c | 30 ++- testdata/autotrust_init_fail.rpl | 18 ++ testdata/autotrust_init_failsig.rpl | 18 ++ testdata/autotrust_probefail.rpl | 18 ++ testdata/autotrust_probefailsig.rpl | 18 ++ testdata/black_ds_entry.rpl | 35 ++++ testdata/black_key_entry.rpl | 35 ++++ testdata/black_prime_entry.rpl | 33 ++++ ..._auth.rpl => ede_cache_snoop_not_auth.rpl} | 0 testdata/ede_caching.rpl | 187 ------------------ testdata/nsid_bogus.rpl | 30 +++ testdata/root_key_sentinel.rpl | 33 ++++ testdata/val_cnametocloser_nosig.rpl | 19 +- testdata/val_cnametonodata_nonsec.rpl | 18 ++ testdata/val_cnametoposnowc.rpl | 18 ++ testdata/val_deleg_nons.rpl | 18 ++ testdata/val_dnamewc.rpl | 18 ++ testdata/val_ds_cname.rpl | 17 ++ testdata/val_faildnskey.rpl | 18 ++ testdata/val_nodata_failsig.rpl | 18 ++ testdata/val_nodata_failwc.rpl | 22 ++- testdata/val_nokeyprime.rpl | 18 ++ testdata/val_nsec3_b1_nameerror_nowc.rpl | 25 ++- testdata/val_nsec3_b2_nodata_nons.rpl | 18 ++ .../val_nsec3_entnodata_optout_badopt.rpl | 18 ++ testdata/val_nsec3_nods_badsig.rpl | 17 ++ testdata/val_nx_failwc.rpl | 18 ++ testdata/val_nx_overreach.rpl | 18 ++ testdata/val_secds_nosig.rpl | 16 ++ testdata/val_ta_algo_missing.rpl | 19 +- util/module.c | 16 +- validator/val_kcache.c | 10 +- validator/val_kcache.h | 4 +- validator/val_kentry.c | 48 +++-- validator/val_kentry.h | 37 ++-- validator/val_nsec.c | 19 +- validator/val_nsec.h | 5 +- validator/val_sigcrypt.c | 4 +- validator/val_utils.c | 19 +- validator/validator.c | 122 +++++++----- 40 files changed, 726 insertions(+), 346 deletions(-) rename testdata/{ede_cache_snoop_noth_auth.rpl => ede_cache_snoop_not_auth.rpl} (100%) delete mode 100644 testdata/ede_caching.rpl diff --git a/services/mesh.c b/services/mesh.c index 6148b0bc6..c46505efd 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1234,36 +1234,34 @@ mesh_is_rpz_respip_tcponly_action(struct mesh_state const* m) } static inline int -mesh_is_udp(struct mesh_reply const* r) { +mesh_is_udp(struct mesh_reply const* r) +{ return r->query_reply.c->type == comm_udp; } static inline void mesh_find_and_attach_ede_and_reason(struct mesh_state* m, - struct reply_info* rep, struct mesh_reply* r) { - char *reason = m->s.env->cfg->val_log_level >= 2 - ? errinf_to_str_bogus(&m->s) : NULL; - - /* During validation the EDE code can be received via two + struct reply_info* rep, struct mesh_reply* r) +{ + /* OLD note: + * During validation the EDE code can be received via two * code paths. One code path fills the reply_info EDE, and * the other fills it in the errinf_strlist. These paths * intersect at some points, but where is opaque due to * the complexity of the validator. At the time of writing * we make the choice to prefer the EDE from errinf_strlist * but a compelling reason to do otherwise is just as valid + * NEW note: + * The compelling reason is that with caching support, the value + * in the * reply_info is cached. + * The reason members of the reply_info struct should be + * updated as they are already cached. No reason to + * try and find the EDE information in errinf anymore. */ - sldns_ede_code reason_bogus = errinf_to_reason_bogus(&m->s); - if ((reason_bogus == LDNS_EDE_DNSSEC_BOGUS && - rep->reason_bogus != LDNS_EDE_NONE) || - reason_bogus == LDNS_EDE_NONE) { - reason_bogus = rep->reason_bogus; - } - - if(reason_bogus != LDNS_EDE_NONE) { + if(rep->reason_bogus != LDNS_EDE_NONE) { edns_opt_list_append_ede(&r->edns.opt_list_out, - m->s.region, reason_bogus, reason); + m->s.region, rep->reason_bogus, rep->reason_bogus_str); } - free(reason); } /** diff --git a/testdata/autotrust_init_fail.rpl b/testdata/autotrust_init_fail.rpl index 1f3fed957..00703026d 100644 --- a/testdata/autotrust_init_fail.rpl +++ b/testdata/autotrust_init_fail.rpl @@ -5,6 +5,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -159,6 +160,23 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 21 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 22 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=9 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + ; The autotrust anchor was probed due to the query. STEP 30 CHECK_AUTOTRUST example.com diff --git a/testdata/autotrust_init_failsig.rpl b/testdata/autotrust_init_failsig.rpl index 7f6a14d83..29a8d11d1 100644 --- a/testdata/autotrust_init_failsig.rpl +++ b/testdata/autotrust_init_failsig.rpl @@ -6,6 +6,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -147,6 +148,23 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 21 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 22 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + ; The autotrust anchor was probed due to the query. STEP 30 CHECK_AUTOTRUST example.com diff --git a/testdata/autotrust_probefail.rpl b/testdata/autotrust_probefail.rpl index e22cbf71f..992d9629d 100644 --- a/testdata/autotrust_probefail.rpl +++ b/testdata/autotrust_probefail.rpl @@ -5,6 +5,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -164,4 +165,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 40 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=9 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/autotrust_probefailsig.rpl b/testdata/autotrust_probefailsig.rpl index 7d486ffbc..3988add01 100644 --- a/testdata/autotrust_probefailsig.rpl +++ b/testdata/autotrust_probefailsig.rpl @@ -5,6 +5,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -164,4 +165,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 40 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 50 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/black_ds_entry.rpl b/testdata/black_ds_entry.rpl index 168dc236d..f2e7a2a99 100644 --- a/testdata/black_ds_entry.rpl +++ b/testdata/black_ds_entry.rpl @@ -7,6 +7,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -586,6 +587,23 @@ www.sub.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 20 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + ; no more outgoing traffic possible. STEP 110 QUERY ENTRY_BEGIN @@ -603,6 +621,23 @@ ftp.sub.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 121 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +ftp.sub.example.com. IN A +ENTRY_END + +STEP 122 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +ftp.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + ; wait for timeout seconds. STEP 130 TIME_PASSES ELAPSE 901 diff --git a/testdata/black_key_entry.rpl b/testdata/black_key_entry.rpl index cd2b0bfbe..c66e1dbb1 100644 --- a/testdata/black_key_entry.rpl +++ b/testdata/black_key_entry.rpl @@ -7,6 +7,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -568,6 +569,23 @@ www.sub.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 20 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + ; no more outgoing traffic possible. STEP 110 QUERY ENTRY_BEGIN @@ -585,6 +603,23 @@ ftp.sub.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 121 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +ftp.sub.example.com. IN A +ENTRY_END + +STEP 122 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +ftp.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + ; wait for timeout seconds. STEP 130 TIME_PASSES ELAPSE 901 diff --git a/testdata/black_prime_entry.rpl b/testdata/black_prime_entry.rpl index e635ed9cc..1acd7d7c1 100644 --- a/testdata/black_prime_entry.rpl +++ b/testdata/black_prime_entry.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -292,6 +293,22 @@ SECTION QUESTION www.example.com. IN A ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END + STEP 100 TIME_PASSES ELAPSE 10 ; second query should not result in going to the network. @@ -311,5 +328,21 @@ SECTION QUESTION ftp.example.com. IN A ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 121 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + +STEP 122 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +ftp.example.com. IN A +ENTRY_END + SCENARIO_END diff --git a/testdata/ede_cache_snoop_noth_auth.rpl b/testdata/ede_cache_snoop_not_auth.rpl similarity index 100% rename from testdata/ede_cache_snoop_noth_auth.rpl rename to testdata/ede_cache_snoop_not_auth.rpl diff --git a/testdata/ede_caching.rpl b/testdata/ede_caching.rpl deleted file mode 100644 index 63bcac28a..000000000 --- a/testdata/ede_caching.rpl +++ /dev/null @@ -1,187 +0,0 @@ -; @TODO decide if we want to keep this, or change the original test(s) -; This test is a copy of autotrust_probefail, where the query is executed twide - - -; config options -server: - target-fetch-policy: "0 0 0 0 0" - log-time-ascii: yes - fake-sha1: yes - trust-anchor-signaling: no - ede: yes - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -AUTOTRUST_FILE example.com -; autotrust trust anchor file -;;id: example.com. 1 -;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 -;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 -;;next_probe_time: 1258967360 ;;Mon Nov 23 10:09:20 2009 -;;query_failed: 0 -;;query_interval: 5400 -;;retry_time: 3600 -example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 -example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 -AUTOTRUST_END -CONFIG_END - -SCENARIO_BEGIN Test autotrust with probe failure - -; K-ROOT -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qname qtype -ADJUST copy_id copy_query -REPLY QR AA -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS k.root-servers.net. -SECTION ADDITIONAL -k.root-servers.net IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR -SECTION QUESTION -com. IN NS -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR -SECTION QUESTION -example.com. IN NS -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qname qtype -ADJUST copy_id -REPLY QR AA SERVFAIL -SECTION QUESTION -ns.example.com. IN AAAA -SECTION ANSWER -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qname qtype -ADJUST copy_id -REPLY QR AA -SECTION QUESTION -ns.example.com. IN A -SECTION ANSWER -ns.example.com. 3600 IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 5 3 3600 20090924111500 20090821111500 30899 example.com. JsXbS18oyc0zkVaOWGSFdIQuOsZKflT0GraT9afDPoWLCgH4ApF7jNgfJV7Pqy1sTBRajME5IUAhpANwGBuW4A== ;{id = 30899} -SECTION AUTHORITY -example.com. 3600 IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 5 2 3600 20090924111500 20090821111500 30899 example.com. J5wxRq0jgwQL6yy530kvo9cHqNAUHV8IF4dvaYZL0bNraO2Oe6dVXqlJl4+cxNHI2TMsstwFPr2Zz8tv6Az2mQ== ;{id = 30899} -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qname qtype -ADJUST copy_id -REPLY QR AA SERVFAIL -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER - -; revoked keys -example.com. 10800 IN DNSKEY 385 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55710 (ksk), size = 512b} -example.com. 10800 IN DNSKEY 385 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16614 (ksk), size = 512b} -; signatures -example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 55710 example.com. zOSlB1iwtlP2lum1RK0WoDQrMVj0JKwk2E5Mu1okzV38hAx3Xm9IGMK6WrNkVVLmx4OkhYmdPVA95jVsFpwLMw== ;{id = 55710} -example.com. 10800 IN RRSIG DNSKEY 5 2 10800 20091124111500 20091018111500 16614 example.com. qP49cCYP3lvNnLBYty/JxAwHqBIGjpup5zQ7qpjPnaZpBb/TlpOhY17LBZrqD86VvBbEVz5tkxC9UrCy85ePDQ== ;{id = 16614} - -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -www.example.com. IN A 10.20.30.40 -ENTRY_END -RANGE_END - -RANGE_END - -; set date/time to Mon Nov 23 09:46:40 2009 -STEP 5 TIME_PASSES EVAL ${1258962400 + 7200} -STEP 6 TRAFFIC ; do the probe -STEP 7 ASSIGN t0 = ${time} -STEP 8 ASSIGN probe0 = ${range 3200 ${timeout} 3600} -STEP 9 ASSIGN tp = ${1258962400} - -; the auto probing should have been done now. -STEP 11 CHECK_AUTOTRUST example.com -FILE_BEGIN -; autotrust trust anchor file -;;id: example.com. 1 -;;last_queried: 1258962400 ;;Mon Nov 23 08:46:40 2009 -;;last_success: 1258962400 ;;Mon Nov 23 08:46:40 2009 -;;next_probe_time: 1258967360 ;;Mon Nov 23 10:09:20 2009 -;;query_failed: 0 -;;query_interval: 5400 -;;retry_time: 3600 -example.com. 10800 IN DNSKEY 257 3 5 AwEAAas/cAhCFXvBUgTSNZCvQp0pLx1dY+7rXR0hH4/3EUgWmsmbYUpI1qD0xhwKD/oYGEwAm291fyWJ9c0oVxXDEK8= ;{id = 16486 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 -example.com. 10800 IN DNSKEY 257 3 5 AwEAAc3Z5DQDJpH4oPdNtC4BUQHk50XMD+dHr4r8psHmivIa83hxR5CRgCtd9sENCW9Ae8OIO19xw9t/RPaEAqQa+OE= ;{id = 55582 (ksk), size = 512b} ;;state=2 [ VALID ] ;;count=0 ;;lastchange=1258962400 ;;Mon Nov 23 08:46:40 2009 -FILE_END - -STEP 20 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.com. IN A -ENTRY_END - -STEP 30 CHECK_ANSWER -ENTRY_BEGIN -MATCH all ede=9 -REPLY QR RD RA DO SERVFAIL -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -ENTRY_END - -STEP 40 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.com. IN A -ENTRY_END - -STEP 50 CHECK_ANSWER -ENTRY_BEGIN -MATCH all ede=9 -REPLY QR RD RA DO SERVFAIL -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -ENTRY_END - -SCENARIO_END diff --git a/testdata/nsid_bogus.rpl b/testdata/nsid_bogus.rpl index b92563cf2..9a80e1d75 100644 --- a/testdata/nsid_bogus.rpl +++ b/testdata/nsid_bogus.rpl @@ -10,6 +10,7 @@ server: minimal-responses: no nsid: "ascii_hopsa kidee" ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -175,4 +176,33 @@ SECTION ADDITIONAL HEX_EDNSDATA_END ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 00 ; Length 0 + HEX_EDNSDATA_END +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=9 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 0b ; Length 11 + 68 6F 70 73 61 20 ; "hopsa " + 6B 69 64 65 65 ; "kidee" + HEX_EDNSDATA_END +ENTRY_END + SCENARIO_END diff --git a/testdata/root_key_sentinel.rpl b/testdata/root_key_sentinel.rpl index 39bd9685c..e368bc521 100644 --- a/testdata/root_key_sentinel.rpl +++ b/testdata/root_key_sentinel.rpl @@ -5,6 +5,7 @@ server: target-fetch-policy: "0 0 0 0 0" trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -145,6 +146,22 @@ SECTION QUESTION root-key-sentinel-not-ta-19036. IN A ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 23 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +root-key-sentinel-not-ta-19036. IN A +ENTRY_END + +STEP 24 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +root-key-sentinel-not-ta-19036. IN A +ENTRY_END + STEP 30 QUERY ENTRY_BEGIN REPLY RD DO @@ -161,6 +178,22 @@ SECTION QUESTION root-key-sentinel-is-ta-20326. IN A ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 34 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +root-key-sentinel-is-ta-20326. IN A +ENTRY_END + +STEP 35 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +root-key-sentinel-is-ta-20326. IN A +ENTRY_END + STEP 40 QUERY ENTRY_BEGIN REPLY RD DO diff --git a/testdata/val_cnametocloser_nosig.rpl b/testdata/val_cnametocloser_nosig.rpl index 6a0552ec5..eca05b1aa 100644 --- a/testdata/val_cnametocloser_nosig.rpl +++ b/testdata/val_cnametocloser_nosig.rpl @@ -6,6 +6,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop forward-zone: name: "." @@ -89,11 +90,27 @@ ENTRY_END ; recursion happens here. STEP 10 CHECK_ANSWER ENTRY_BEGIN -MATCH all ede=9 +MATCH all ede=10 REPLY QR RD RA DO SERVFAIL SECTION QUESTION www.example.com. IN AAAA SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 20 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN AAAA +ENTRY_END +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=10 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN AAAA +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_cnametonodata_nonsec.rpl b/testdata/val_cnametonodata_nonsec.rpl index cf743321b..8f3927575 100644 --- a/testdata/val_cnametonodata_nonsec.rpl +++ b/testdata/val_cnametonodata_nonsec.rpl @@ -9,6 +9,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -268,4 +269,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=10 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_cnametoposnowc.rpl b/testdata/val_cnametoposnowc.rpl index 2975bd8d2..1ba57633c 100644 --- a/testdata/val_cnametoposnowc.rpl +++ b/testdata/val_cnametoposnowc.rpl @@ -9,6 +9,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -261,4 +262,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_deleg_nons.rpl b/testdata/val_deleg_nons.rpl index 82348d95b..aac87eab7 100644 --- a/testdata/val_deleg_nons.rpl +++ b/testdata/val_deleg_nons.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -269,4 +270,21 @@ foo.www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +foo.www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=10 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +foo.www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_dnamewc.rpl b/testdata/val_dnamewc.rpl index 1a0e41ecf..ee72f6a1f 100644 --- a/testdata/val_dnamewc.rpl +++ b/testdata/val_dnamewc.rpl @@ -9,6 +9,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -264,4 +265,21 @@ www.sub.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_ds_cname.rpl b/testdata/val_ds_cname.rpl index 1703601e5..a49c53538 100644 --- a/testdata/val_ds_cname.rpl +++ b/testdata/val_ds_cname.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -204,4 +205,20 @@ SECTION QUESTION www.example.com. IN A ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=10 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +ENTRY_END + SCENARIO_END diff --git a/testdata/val_faildnskey.rpl b/testdata/val_faildnskey.rpl index f45080a0b..cc1cc9eee 100644 --- a/testdata/val_faildnskey.rpl +++ b/testdata/val_faildnskey.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -171,4 +172,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=9 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nodata_failsig.rpl b/testdata/val_nodata_failsig.rpl index 0c4426bc1..16b46d4fd 100644 --- a/testdata/val_nodata_failsig.rpl +++ b/testdata/val_nodata_failsig.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -162,4 +163,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nodata_failwc.rpl b/testdata/val_nodata_failwc.rpl index 3aa8212c8..7ac61fa2b 100644 --- a/testdata/val_nodata_failwc.rpl +++ b/testdata/val_nodata_failwc.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "nsecwc.nlnetlabs.nl" @@ -17,8 +18,8 @@ CONFIG_END SCENARIO_BEGIN Test validator with nodata response with wildcard expanded NSEC record, original NSEC owner does not provide proof for QNAME. CVE-2017-15105 test. - ; ns.example.com. -RANGE_BEGIN 0 100 + ; ns.example.com. +RANGE_BEGIN 0 100 ADDRESS 185.49.140.60 ; response to DNSKEY priming query @@ -69,4 +70,21 @@ _25._tcp.mail.nsecwc.nlnetlabs.nl. IN TLSA SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +_25._tcp.mail.nsecwc.nlnetlabs.nl. IN TLSA +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +_25._tcp.mail.nsecwc.nlnetlabs.nl. IN TLSA +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nokeyprime.rpl b/testdata/val_nokeyprime.rpl index 5d3727420..b7646d34c 100644 --- a/testdata/val_nokeyprime.rpl +++ b/testdata/val_nokeyprime.rpl @@ -7,6 +7,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -161,4 +162,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=9 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nsec3_b1_nameerror_nowc.rpl b/testdata/val_nsec3_b1_nameerror_nowc.rpl index 0ff135af6..9445fec08 100644 --- a/testdata/val_nsec3_b1_nameerror_nowc.rpl +++ b/testdata/val_nsec3_b1_nameerror_nowc.rpl @@ -7,6 +7,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -140,12 +141,24 @@ SECTION QUESTION a.c.x.w.example. IN A SECTION ANSWER SECTION AUTHORITY -; example. SOA ns1.example. bugs.x.w.example. 1 3600 300 ( 3600000 3600 ) -; example. RRSIG SOA 7 1 3600 20150420235959 20051021000000 ( 40430 example. Hu25UIyNPmvPIVBrldN+9Mlp9Zql39qaUd8i q4ZLlYWfUUbbAS41pG+68z81q1xhkYAcEyHd VI2LmKusbZsT0Q== ) -; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. NSEC3 1 1 12 aabbccdd ( 2t7b4g4vsa5smi47k61mv5bv1a22bojr MX DNSKEY NS SOA NSEC3PARAM RRSIG ) -; 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. OSgWSm26B+cS+dDL8b5QrWr/dEWhtCsKlwKL IBHYH6blRxK9rC0bMJPwQ4mLIuw85H2EY762 BOCXJZMnpuwhpA== ) -; b4um86eghhds6nea196smvmlo4ors995.example. NSEC3 1 1 12 aabbccdd ( gjeqe526plbf1g8mklp59enfd789njgi MX RRSIG ) -; b4um86eghhds6nea196smvmlo4ors995.example. RRSIG NSEC3 7 2 3600 20150420235959 20051021000000 ( 40430 example. ZkPG3M32lmoHM6pa3D6gZFGB/rhL//Bs3Omh 5u4m/CUiwtblEVOaAKKZd7S959OeiX43aLX3 pOv0TSTyiTxIZg== ) +ENTRY_END + +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +a.c.x.w.example. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +a.c.x.w.example. IN A +SECTION ANSWER +SECTION AUTHORITY ENTRY_END SCENARIO_END diff --git a/testdata/val_nsec3_b2_nodata_nons.rpl b/testdata/val_nsec3_b2_nodata_nons.rpl index 7faaafac6..7dd06a392 100644 --- a/testdata/val_nsec3_b2_nodata_nons.rpl +++ b/testdata/val_nsec3_b2_nodata_nons.rpl @@ -6,6 +6,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -138,4 +139,21 @@ ns1.example. IN MX SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +ns1.example. IN MX +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=12 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +ns1.example. IN MX +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nsec3_entnodata_optout_badopt.rpl b/testdata/val_nsec3_entnodata_optout_badopt.rpl index b672bd6e6..c7e5a5006 100644 --- a/testdata/val_nsec3_entnodata_optout_badopt.rpl +++ b/testdata/val_nsec3_entnodata_optout_badopt.rpl @@ -7,6 +7,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -194,4 +195,21 @@ ent.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +ent.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +ent.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nsec3_nods_badsig.rpl b/testdata/val_nsec3_nods_badsig.rpl index 79290d659..d99470f34 100644 --- a/testdata/val_nsec3_nods_badsig.rpl +++ b/testdata/val_nsec3_nods_badsig.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -234,4 +235,20 @@ www.sub.example.com. IN A SECTION ANSWER ENTRY_END +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=7 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nx_failwc.rpl b/testdata/val_nx_failwc.rpl index 645a6b4c9..765b34456 100644 --- a/testdata/val_nx_failwc.rpl +++ b/testdata/val_nx_failwc.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "nsecwc.nlnetlabs.nl" @@ -67,4 +68,21 @@ a.nsecwc.nlnetlabs.nl. IN TXT SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +a.nsecwc.nlnetlabs.nl. IN TXT +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +a.nsecwc.nlnetlabs.nl. IN TXT +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_nx_overreach.rpl b/testdata/val_nx_overreach.rpl index e5046bc1a..28089e5f3 100644 --- a/testdata/val_nx_overreach.rpl +++ b/testdata/val_nx_overreach.rpl @@ -8,6 +8,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -162,4 +163,21 @@ www.example.com. IN A SECTION ANSWER ENTRY_END +; Redo the query without RD to check EDE caching. +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/testdata/val_secds_nosig.rpl b/testdata/val_secds_nosig.rpl index 69f83a393..ec768799d 100644 --- a/testdata/val_secds_nosig.rpl +++ b/testdata/val_secds_nosig.rpl @@ -7,6 +7,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -230,4 +231,19 @@ SECTION QUESTION www.sub.example.com. IN A ENTRY_END +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=10 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.sub.example.com. IN A +ENTRY_END + SCENARIO_END diff --git a/testdata/val_ta_algo_missing.rpl b/testdata/val_ta_algo_missing.rpl index 9efb24266..537af2cb3 100644 --- a/testdata/val_ta_algo_missing.rpl +++ b/testdata/val_ta_algo_missing.rpl @@ -11,6 +11,7 @@ server: fake-sha1: yes trust-anchor-signaling: no ede: yes + access-control: 127.0.0.0/8 allow_snoop stub-zone: name: "." @@ -166,11 +167,27 @@ ENTRY_END ; recursion happens here. STEP 10 CHECK_ANSWER ENTRY_BEGIN -MATCH all ede=9 +MATCH all ede=6 REPLY QR RD RA DO SERVFAIL SECTION QUESTION www.example.com. IN A SECTION ANSWER ENTRY_END +STEP 11 QUERY +ENTRY_BEGIN +REPLY DO +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 12 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ede=6 +REPLY QR RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END diff --git a/util/module.c b/util/module.c index 6698f9497..773dab853 100644 --- a/util/module.c +++ b/util/module.c @@ -84,8 +84,10 @@ void errinf_ede(struct module_qstate* qstate, const char* str, sldns_ede_code reason_bogus) { struct errinf_strlist* p; - if((qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) || !str) + if(!str || (qstate->env->cfg->val_log_level < 2 && + !qstate->env->cfg->log_servfail)) { return; + } p = (struct errinf_strlist*)regional_alloc(qstate->region, sizeof(*p)); if(!p) { log_err("malloc failure in validator-error-info string"); @@ -152,15 +154,19 @@ char* errinf_to_str_bogus(struct module_qstate* qstate) return p; } +/* Try to find the latest (most specific) dnssec failure */ sldns_ede_code errinf_to_reason_bogus(struct module_qstate* qstate) { struct errinf_strlist* s; + sldns_ede_code ede = LDNS_EDE_NONE; for(s=qstate->errinf; s; s=s->next) { - if (s->reason_bogus != LDNS_EDE_NONE) { - return s->reason_bogus; - } + if(s->reason_bogus == LDNS_EDE_NONE) continue; + if(ede != LDNS_EDE_NONE + && ede != LDNS_EDE_DNSSEC_BOGUS + && s->reason_bogus == LDNS_EDE_DNSSEC_BOGUS) continue; + ede = s->reason_bogus; } - return LDNS_EDE_NONE; + return ede; } char* errinf_to_str_servfail(struct module_qstate* qstate) diff --git a/validator/val_kcache.c b/validator/val_kcache.c index c190085b5..f5d49d24f 100644 --- a/validator/val_kcache.c +++ b/validator/val_kcache.c @@ -81,17 +81,11 @@ key_cache_delete(struct key_cache* kcache) void key_cache_insert(struct key_cache* kcache, struct key_entry_key* kkey, - struct module_qstate* qstate) + int copy_reason) { - struct key_entry_key* k = key_entry_copy(kkey); + struct key_entry_key* k = key_entry_copy(kkey, copy_reason); if(!k) return; - if(key_entry_isbad(k) && qstate->errinf && - qstate->env->cfg->val_log_level >= 2) { - /* on malloc failure there is simply no reason string */ - key_entry_set_reason(k, errinf_to_str_bogus(qstate)); - key_entry_set_reason_bogus(k, errinf_to_reason_bogus(qstate)); - } key_entry_hash(k); slabhash_insert(kcache->slab, k->entry.hash, &k->entry, k->entry.data, NULL); diff --git a/validator/val_kcache.h b/validator/val_kcache.h index 76c9dd094..df8de0999 100644 --- a/validator/val_kcache.h +++ b/validator/val_kcache.h @@ -76,10 +76,10 @@ void key_cache_delete(struct key_cache* kcache); * @param kcache: the key cache. * @param kkey: key entry key, assumed malloced in a region, is copied * to perform update or insertion. Its data pointer is also copied. - * @param qstate: store errinf reason in case its bad. + * @param copy_reason: if the reason string needs to be copied (allocated). */ void key_cache_insert(struct key_cache* kcache, struct key_entry_key* kkey, - struct module_qstate* qstate); + int copy_reason); /** * Remove an entry from the key cache. diff --git a/validator/val_kentry.c b/validator/val_kentry.c index a47feba61..85f026402 100644 --- a/validator/val_kentry.c +++ b/validator/val_kentry.c @@ -152,7 +152,7 @@ key_entry_copy_toregion(struct key_entry_key* kkey, struct regional* region) } struct key_entry_key* -key_entry_copy(struct key_entry_key* kkey) +key_entry_copy(struct key_entry_key* kkey, int copy_reason) { struct key_entry_key* newk; if(!kkey) @@ -190,7 +190,7 @@ key_entry_copy(struct key_entry_key* kkey) } packed_rrset_ptr_fixup(newd->rrset_data); } - if(d->reason) { + if(copy_reason && d->reason && *d->reason != 0) { newd->reason = strdup(d->reason); if(!newd->reason) { free(newd->rrset_data); @@ -199,6 +199,8 @@ key_entry_copy(struct key_entry_key* kkey) free(newk); return NULL; } + } else { + newd->reason = NULL; } if(d->algo) { newd->algo = (uint8_t*)strdup((char*)d->algo); @@ -237,22 +239,6 @@ key_entry_isbad(struct key_entry_key* kkey) return (int)(d->isbad); } -void -key_entry_set_reason(struct key_entry_key* kkey, char* reason) -{ - struct key_entry_data* d = (struct key_entry_data*)kkey->entry.data; - d->reason = reason; -} - -void -key_entry_set_reason_bogus(struct key_entry_key* kkey, sldns_ede_code ede) -{ - struct key_entry_data* d = (struct key_entry_data*)kkey->entry.data; - if (ede != LDNS_EDE_NONE) { /* reason_bogus init is LDNS_EDE_NONE already */ - d->reason_bogus = ede; - } -} - char* key_entry_get_reason(struct key_entry_key* kkey) { @@ -294,6 +280,7 @@ key_entry_setup(struct regional* region, struct key_entry_key* key_entry_create_null(struct regional* region, uint8_t* name, size_t namelen, uint16_t dclass, time_t ttl, + sldns_ede_code reason_bogus, const char* reason, time_t now) { struct key_entry_key* k; @@ -302,8 +289,10 @@ key_entry_create_null(struct regional* region, return NULL; d->ttl = now + ttl; d->isbad = 0; - d->reason = NULL; - d->reason_bogus = LDNS_EDE_NONE; + d->reason = (!reason || *reason == 0) + ?NULL :(char*)regional_strdup(region, reason); + /* On allocation error we don't store the reason string */ + d->reason_bogus = reason_bogus; d->rrset_type = LDNS_RR_TYPE_DNSKEY; d->rrset_data = NULL; d->algo = NULL; @@ -313,7 +302,9 @@ key_entry_create_null(struct regional* region, struct key_entry_key* key_entry_create_rrset(struct regional* region, uint8_t* name, size_t namelen, uint16_t dclass, - struct ub_packed_rrset_key* rrset, uint8_t* sigalg, time_t now) + struct ub_packed_rrset_key* rrset, uint8_t* sigalg, + sldns_ede_code reason_bogus, const char* reason, + time_t now) { struct key_entry_key* k; struct key_entry_data* d; @@ -323,8 +314,10 @@ key_entry_create_rrset(struct regional* region, return NULL; d->ttl = rd->ttl + now; d->isbad = 0; - d->reason = NULL; - d->reason_bogus = LDNS_EDE_NONE; + d->reason = (!reason || *reason == 0) + ?NULL :(char*)regional_strdup(region, reason); + /* On allocation error we don't store the reason string */ + d->reason_bogus = reason_bogus; d->rrset_type = ntohs(rrset->rk.type); d->rrset_data = (struct packed_rrset_data*)regional_alloc_init(region, rd, packed_rrset_sizeof(rd)); @@ -341,7 +334,8 @@ key_entry_create_rrset(struct regional* region, struct key_entry_key* key_entry_create_bad(struct regional* region, - uint8_t* name, size_t namelen, uint16_t dclass, time_t ttl, + uint8_t* name, size_t namelen, uint16_t dclass, time_t ttl, + sldns_ede_code reason_bogus, const char* reason, time_t now) { struct key_entry_key* k; @@ -350,8 +344,10 @@ key_entry_create_bad(struct regional* region, return NULL; d->ttl = now + ttl; d->isbad = 1; - d->reason = NULL; - d->reason_bogus = LDNS_EDE_NONE; + d->reason = (!reason || *reason == 0) + ?NULL :(char*)regional_strdup(region, reason); + /* On allocation error we don't store the reason string */ + d->reason_bogus = reason_bogus; d->rrset_type = LDNS_RR_TYPE_DNSKEY; d->rrset_data = NULL; d->algo = NULL; diff --git a/validator/val_kentry.h b/validator/val_kentry.h index ded45beaa..ca9f0dabc 100644 --- a/validator/val_kentry.h +++ b/validator/val_kentry.h @@ -120,9 +120,11 @@ struct key_entry_key* key_entry_copy_toregion(struct key_entry_key* kkey, /** * Copy a key entry, malloced. * @param kkey: the key entry key (and data pointer) to copy. + * @param copy_reason: if the reason string needs to be copied (allocated). * @return newly allocated entry or NULL on a failure to allocate memory. */ -struct key_entry_key* key_entry_copy(struct key_entry_key* kkey); +struct key_entry_key* key_entry_copy(struct key_entry_key* kkey, + int copy_reason); /** * See if this is a null entry. Does not do locking. @@ -145,23 +147,6 @@ int key_entry_isgood(struct key_entry_key* kkey); */ int key_entry_isbad(struct key_entry_key* kkey); -/** - * Set reason why a key is bad. - * @param kkey: bad key. - * @param reason: string to attach, you must allocate it. - * Not safe to call twice unless you deallocate it yourself. - */ -void key_entry_set_reason(struct key_entry_key* kkey, char* reason); - -/** - * Set the EDE (RFC8914) code why the key is bad, if it - * exists (so not LDNS_EDE_NONE). - * @param kkey: bad key. - * @param ede: EDE code to attach to this key. - */ -void key_entry_set_reason_bogus(struct key_entry_key* kkey, sldns_ede_code ede); - - /** * Get reason why a key is bad. * @param kkey: bad key @@ -184,11 +169,14 @@ sldns_ede_code key_entry_get_reason_bogus(struct key_entry_key* kkey); * @param namelen: length of name * @param dclass: class of key entry. (host order); * @param ttl: what ttl should the key have. relative. + * @param reason_bogus: accompanying EDE code. + * @param reason: accompanying NULL-terminated EDE string (or NULL). * @param now: current time (added to ttl). * @return new key entry or NULL on alloc failure */ struct key_entry_key* key_entry_create_null(struct regional* region, - uint8_t* name, size_t namelen, uint16_t dclass, time_t ttl, + uint8_t* name, size_t namelen, uint16_t dclass, time_t ttl, + sldns_ede_code reason_bogus, const char* reason, time_t now); /** @@ -199,12 +187,16 @@ struct key_entry_key* key_entry_create_null(struct regional* region, * @param dclass: class of key entry. (host order); * @param rrset: data for key entry. This is copied to the region. * @param sigalg: signalled algorithm list (or NULL). + * @param reason_bogus: accompanying EDE code (usually LDNS_EDE_NONE). + * @param reason: accompanying NULL-terminated EDE string (or NULL). * @param now: current time (added to ttl of rrset) * @return new key entry or NULL on alloc failure */ struct key_entry_key* key_entry_create_rrset(struct regional* region, - uint8_t* name, size_t namelen, uint16_t dclass, - struct ub_packed_rrset_key* rrset, uint8_t* sigalg, time_t now); + uint8_t* name, size_t namelen, uint16_t dclass, + struct ub_packed_rrset_key* rrset, uint8_t* sigalg, + sldns_ede_code reason_bogus, const char* reason, + time_t now); /** * Create a bad entry, in the given region. @@ -213,11 +205,14 @@ struct key_entry_key* key_entry_create_rrset(struct regional* region, * @param namelen: length of name * @param dclass: class of key entry. (host order); * @param ttl: what ttl should the key have. relative. + * @param reason_bogus: accompanying EDE code. + * @param reason: accompanying NULL-terminated EDE string (or NULL). * @param now: current time (added to ttl). * @return new key entry or NULL on alloc failure */ struct key_entry_key* key_entry_create_bad(struct regional* region, uint8_t* name, size_t namelen, uint16_t dclass, time_t ttl, + sldns_ede_code reason_bogus, const char* reason, time_t now); /** diff --git a/validator/val_nsec.c b/validator/val_nsec.c index 876bfab6d..17c90d83f 100644 --- a/validator/val_nsec.c +++ b/validator/val_nsec.c @@ -174,9 +174,10 @@ val_nsec_proves_no_ds(struct ub_packed_rrset_key* nsec, /** check security status from cache or verify rrset, returns true if secure */ static int -nsec_verify_rrset(struct module_env* env, struct val_env* ve, - struct ub_packed_rrset_key* nsec, struct key_entry_key* kkey, - char** reason, struct module_qstate* qstate) +nsec_verify_rrset(struct module_env* env, struct val_env* ve, + struct ub_packed_rrset_key* nsec, struct key_entry_key* kkey, + char** reason, sldns_ede_code* reason_bogus, + struct module_qstate* qstate) { struct packed_rrset_data* d = (struct packed_rrset_data*) nsec->entry.data; @@ -187,7 +188,7 @@ nsec_verify_rrset(struct module_env* env, struct val_env* ve, if(d->security == sec_status_secure) return 1; d->security = val_verify_rrset_entry(env, ve, nsec, kkey, reason, - NULL, LDNS_SECTION_AUTHORITY, qstate); + reason_bogus, LDNS_SECTION_AUTHORITY, qstate); if(d->security == sec_status_secure) { rrset_update_sec_status(env->rrset_cache, nsec, *env->now); return 1; @@ -199,7 +200,7 @@ enum sec_status val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, struct query_info* qinfo, struct reply_info* rep, struct key_entry_key* kkey, time_t* proof_ttl, char** reason, - struct module_qstate* qstate) + sldns_ede_code* reason_bogus, struct module_qstate* qstate) { struct ub_packed_rrset_key* nsec = reply_find_rrset_section_ns( rep, qinfo->qname, qinfo->qname_len, LDNS_RR_TYPE_NSEC, @@ -216,7 +217,8 @@ val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, * 1) this is a delegation point and there is no DS * 2) this is not a delegation point */ if(nsec) { - if(!nsec_verify_rrset(env, ve, nsec, kkey, reason, qstate)) { + if(!nsec_verify_rrset(env, ve, nsec, kkey, reason, + reason_bogus, qstate)) { verbose(VERB_ALGO, "NSEC RRset for the " "referral did not verify."); return sec_status_bogus; @@ -225,6 +227,7 @@ val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, if(sec == sec_status_bogus) { /* something was wrong. */ *reason = "NSEC does not prove absence of DS"; + *reason_bogus = LDNS_EDE_DNSSEC_BOGUS; return sec; } else if(sec == sec_status_insecure) { /* this wasn't a delegation point. */ @@ -246,9 +249,11 @@ val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, if(rep->rrsets[i]->rk.type != htons(LDNS_RR_TYPE_NSEC)) continue; if(!nsec_verify_rrset(env, ve, rep->rrsets[i], kkey, reason, - qstate)) { + reason_bogus, qstate)) { verbose(VERB_ALGO, "NSEC for empty non-terminal " "did not verify."); + *reason = "NSEC for empty non-terminal " + "did not verify."; return sec_status_bogus; } if(nsec_proves_nodata(rep->rrsets[i], qinfo, &wc)) { diff --git a/validator/val_nsec.h b/validator/val_nsec.h index 7117809d6..81844c908 100644 --- a/validator/val_nsec.h +++ b/validator/val_nsec.h @@ -44,6 +44,7 @@ #ifndef VALIDATOR_VAL_NSEC_H #define VALIDATOR_VAL_NSEC_H #include "util/data/packed_rrset.h" +#include "sldns/rrdef.h" struct val_env; struct module_env; struct module_qstate; @@ -65,6 +66,7 @@ struct key_entry_key; * @param kkey: key entry to use for verification of signatures. * @param proof_ttl: if secure, the TTL of how long this proof lasts. * @param reason: string explaining why bogus. + * @param reason_bogus: relevant EDE code for validation failure. * @param qstate: qstate with region. * @return security status. * SECURE: proved absence of DS. @@ -75,7 +77,8 @@ struct key_entry_key; enum sec_status val_nsec_prove_nodata_dsreply(struct module_env* env, struct val_env* ve, struct query_info* qinfo, struct reply_info* rep, struct key_entry_key* kkey, - time_t* proof_ttl, char** reason, struct module_qstate* qstate); + time_t* proof_ttl, char** reason, sldns_ede_code* reason_bogus, + struct module_qstate* qstate); /** * nsec typemap check, takes an NSEC-type bitmap as argument, checks for type. diff --git a/validator/val_sigcrypt.c b/validator/val_sigcrypt.c index 5ab21e20e..0ecd05f13 100644 --- a/validator/val_sigcrypt.c +++ b/validator/val_sigcrypt.c @@ -718,9 +718,9 @@ dnskey_verify_rrset(struct module_env* env, struct val_env* ve, } verbose(VERB_ALGO, "rrset failed to verify: all signatures are bogus"); if(!numchecked) { - *reason = "signature missing"; + *reason = "signatures bogus"; if(reason_bogus) - *reason_bogus = LDNS_EDE_RRSIGS_MISSING; + *reason_bogus = LDNS_EDE_DNSSEC_BOGUS; } else if(numchecked == numindeterminate) { verbose(VERB_ALGO, "rrset failed to verify due to algorithm " "refusal by cryptolib"); diff --git a/validator/val_utils.c b/validator/val_utils.c index e2319ee23..8b388882b 100644 --- a/validator/val_utils.c +++ b/validator/val_utils.c @@ -587,16 +587,18 @@ val_verify_new_DNSKEYs(struct regional* region, struct module_env* env, return key_entry_create_rrset(region, ds_rrset->rk.dname, ds_rrset->rk.dname_len, ntohs(ds_rrset->rk.rrset_class), dnskey_rrset, - downprot?sigalg:NULL, *env->now); + downprot?sigalg:NULL, LDNS_EDE_NONE, NULL, + *env->now); } else if(sec == sec_status_insecure) { return key_entry_create_null(region, ds_rrset->rk.dname, - ds_rrset->rk.dname_len, + ds_rrset->rk.dname_len, ntohs(ds_rrset->rk.rrset_class), - rrset_get_ttl(ds_rrset), *env->now); + rrset_get_ttl(ds_rrset), *reason_bogus, *reason, + *env->now); } return key_entry_create_bad(region, ds_rrset->rk.dname, ds_rrset->rk.dname_len, ntohs(ds_rrset->rk.rrset_class), - BOGUS_KEY_TTL, *env->now); + BOGUS_KEY_TTL, *reason_bogus, *reason, *env->now); } enum sec_status @@ -694,7 +696,7 @@ val_verify_DNSKEY_with_TA(struct module_env* env, struct val_env* ve, has_useful_ta = 1; sec = dnskey_verify_rrset(env, ve, dnskey_rrset, - ta_dnskey, i, reason, NULL, LDNS_SECTION_ANSWER, qstate); + ta_dnskey, i, reason, reason_bogus, LDNS_SECTION_ANSWER, qstate); if(sec == sec_status_secure) { if(!sigalg || algo_needs_set_secure(&needs, (uint8_t)dnskey_get_algo(ta_dnskey, i))) { @@ -743,16 +745,17 @@ val_verify_new_DNSKEYs_with_ta(struct regional* region, struct module_env* env, return key_entry_create_rrset(region, dnskey_rrset->rk.dname, dnskey_rrset->rk.dname_len, ntohs(dnskey_rrset->rk.rrset_class), dnskey_rrset, - downprot?sigalg:NULL, *env->now); + downprot?sigalg:NULL, LDNS_EDE_NONE, NULL, *env->now); } else if(sec == sec_status_insecure) { return key_entry_create_null(region, dnskey_rrset->rk.dname, dnskey_rrset->rk.dname_len, ntohs(dnskey_rrset->rk.rrset_class), - rrset_get_ttl(dnskey_rrset), *env->now); + rrset_get_ttl(dnskey_rrset), *reason_bogus, *reason, + *env->now); } return key_entry_create_bad(region, dnskey_rrset->rk.dname, dnskey_rrset->rk.dname_len, ntohs(dnskey_rrset->rk.rrset_class), - BOGUS_KEY_TTL, *env->now); + BOGUS_KEY_TTL, *reason_bogus, *reason, *env->now); } int diff --git a/validator/validator.c b/validator/validator.c index 18e4de072..9de9d54db 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -70,16 +70,16 @@ static void process_ds_response(struct module_qstate* qstate, struct query_info* qinfo, struct sock_list* origin); -/* Updates the suplied EDE (RFC8914) code selectively so we don't loose - * a more specific code - */ +/* Updates the suplied EDE (RFC8914) code selectively so we don't lose + * a more specific code */ static void update_reason_bogus(struct reply_info* rep, sldns_ede_code reason_bogus) { - if (rep->reason_bogus == LDNS_EDE_DNSSEC_BOGUS || - rep->reason_bogus == LDNS_EDE_NONE) { - rep->reason_bogus = reason_bogus; - } + if(reason_bogus == LDNS_EDE_NONE) return; + if(reason_bogus == LDNS_EDE_DNSSEC_BOGUS + && rep->reason_bogus != LDNS_EDE_NONE + && rep->reason_bogus != LDNS_EDE_DNSSEC_BOGUS) return; + rep->reason_bogus = reason_bogus; } @@ -1672,20 +1672,13 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, vq->state = VAL_FINISHED_STATE; return 1; } else if(key_entry_isbad(vq->key_entry)) { - sldns_ede_code ede = LDNS_EDE_DNSSEC_BOGUS; - - /* the key could have a more spefic EDE than just bogus */ - if(key_entry_get_reason_bogus(vq->key_entry) != LDNS_EDE_NONE) { - ede = key_entry_get_reason_bogus(vq->key_entry); - } - + /* Bad keys should have the relevant EDE code and text */ + sldns_ede_code ede = key_entry_get_reason_bogus(vq->key_entry); /* key is bad, chain is bad, reply is bogus */ errinf_dname(qstate, "key for validation", vq->key_entry->name); errinf_ede(qstate, "is marked as invalid", ede); - if(key_entry_get_reason(vq->key_entry)) { - errinf(qstate, "because of a previous"); - errinf(qstate, key_entry_get_reason(vq->key_entry)); - } + errinf(qstate, "because of a previous"); + errinf(qstate, key_entry_get_reason(vq->key_entry)); /* no retries, stop bothering the authority until timeout */ vq->restart_count = ve->max_restart; @@ -1888,7 +1881,8 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, vq->chase_reply->security = sec_status_insecure; val_mark_insecure(vq->chase_reply, vq->key_entry->name, qstate->env->rrset_cache, qstate->env); - key_cache_insert(ve->kcache, vq->key_entry, qstate); + key_cache_insert(ve->kcache, vq->key_entry, + qstate->env->cfg->val_log_level >= 2); return 1; } @@ -1897,12 +1891,13 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, "of trust to keys for", vq->key_entry->name, LDNS_RR_TYPE_DNSKEY, vq->key_entry->key_class); vq->chase_reply->security = sec_status_bogus; - - update_reason_bogus(vq->chase_reply, LDNS_EDE_DNSKEY_MISSING); + update_reason_bogus(vq->chase_reply, + key_entry_get_reason_bogus(vq->key_entry)); errinf_ede(qstate, "while building chain of trust", - LDNS_EDE_DNSKEY_MISSING); + key_entry_get_reason_bogus(vq->key_entry)); if(vq->restart_count >= ve->max_restart) - key_cache_insert(ve->kcache, vq->key_entry, qstate); + key_cache_insert(ve->kcache, vq->key_entry, + qstate->env->cfg->val_log_level >= 2); return 1; } @@ -2156,7 +2151,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, size_t err_str_len = strlen(err_str); log_info("%s", err_str); /* allocate space and store the error - * string; */ + * string */ vq->orig_msg->rep->reason_bogus_str = regional_alloc( qstate->region, sizeof(char) * (err_str_len+1)); @@ -2206,6 +2201,8 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, } } + /* Update rep->reason_bogus as it is the one being cached */ + update_reason_bogus(vq->orig_msg->rep, errinf_to_reason_bogus(qstate)); /* store results in cache */ if(qstate->query_flags&BIT_RD) { /* if secure, this will override cache anyway, no need @@ -2381,13 +2378,17 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset, log_nametypeclass(VERB_OPS, "failed to prime trust anchor -- " "could not fetch DNSKEY rrset", ta->name, LDNS_RR_TYPE_DNSKEY, ta->dclass); + reason_bogus = LDNS_EDE_DNSKEY_MISSING; + reason = "no DNSKEY rrset"; if(qstate->env->cfg->harden_dnssec_stripped) { - errinf_ede(qstate, "no DNSKEY rrset", LDNS_EDE_DNSKEY_MISSING); + errinf_ede(qstate, reason, reason_bogus); kkey = key_entry_create_bad(qstate->region, ta->name, ta->namelen, ta->dclass, BOGUS_KEY_TTL, + reason_bogus, reason, *qstate->env->now); } else kkey = key_entry_create_null(qstate->region, ta->name, ta->namelen, ta->dclass, NULL_KEY_TTL, + reason_bogus, reason, *qstate->env->now); if(!kkey) { log_err("out of memory: allocate fail prime key"); @@ -2420,9 +2421,11 @@ primeResponseToKE(struct ub_packed_rrset_key* dnskey_rrset, errinf_ede(qstate, reason, reason_bogus); kkey = key_entry_create_bad(qstate->region, ta->name, ta->namelen, ta->dclass, BOGUS_KEY_TTL, + reason_bogus, reason, *qstate->env->now); } else kkey = key_entry_create_null(qstate->region, ta->name, ta->namelen, ta->dclass, NULL_KEY_TTL, + reason_bogus, reason, *qstate->env->now); if(!kkey) { log_err("out of memory: allocate null prime key"); @@ -2469,8 +2472,9 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, /* errors here pretty much break validation */ verbose(VERB_DETAIL, "DS response was error, thus bogus"); errinf(qstate, rc); - errinf_ede(qstate, "no DS", LDNS_EDE_NETWORK_ERROR); - + reason = "no DS"; + reason_bogus = LDNS_EDE_NETWORK_ERROR; + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } @@ -2484,7 +2488,8 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, if(!ds) { log_warn("internal error: POSITIVE DS response was " "missing DS."); - errinf_ede(qstate, "no DS record", LDNS_EDE_DNSSEC_BOGUS); + reason = "no DS record"; + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } /* Verify only returns BOGUS or SECURE. If the rrset is @@ -2503,13 +2508,11 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, if(!val_dsset_isusable(ds)) { /* If they aren't usable, then we treat it like * there was no DS. */ - - /* TODO add EDE Unsupported DS Digest Type; this needs - * EDE to be added on non SERVFAIL answers. */ - - *ke = key_entry_create_null(qstate->region, - qinfo->qname, qinfo->qname_len, qinfo->qclass, - ub_packed_rrset_ttl(ds), *qstate->env->now); + *ke = key_entry_create_null(qstate->region, + qinfo->qname, qinfo->qname_len, qinfo->qclass, + ub_packed_rrset_ttl(ds), + LDNS_EDE_UNSUPPORTED_DS_DIGEST, NULL, + *qstate->env->now); return (*ke) != NULL; } @@ -2517,7 +2520,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, log_query_info(VERB_DETAIL, "validated DS", qinfo); *ke = key_entry_create_rrset(qstate->region, qinfo->qname, qinfo->qname_len, qinfo->qclass, ds, - NULL, *qstate->env->now); + NULL, LDNS_EDE_NONE, NULL, *qstate->env->now); return (*ke) != NULL; } else if(subtype == VAL_CLASS_NODATA || subtype == VAL_CLASS_NAMEERROR) { @@ -2529,7 +2532,8 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, /* make sure there are NSECs or NSEC3s with signatures */ if(!val_has_signed_nsecs(msg->rep, &reason)) { verbose(VERB_ALGO, "no NSECs: %s", reason); - errinf_ede(qstate, reason, LDNS_EDE_NSEC_MISSING); + reason_bogus = LDNS_EDE_NSEC_MISSING; + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } @@ -2541,7 +2545,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, /* Try to prove absence of the DS with NSEC */ sec = val_nsec_prove_nodata_dsreply( qstate->env, ve, qinfo, msg->rep, vq->key_entry, - &proof_ttl, &reason, qstate); + &proof_ttl, &reason, &reason_bogus, qstate); switch(sec) { case sec_status_secure: verbose(VERB_DETAIL, "NSEC RRset for the " @@ -2549,6 +2553,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, *ke = key_entry_create_null(qstate->region, qinfo->qname, qinfo->qname_len, qinfo->qclass, proof_ttl, + LDNS_EDE_NONE, NULL, *qstate->env->now); return (*ke) != NULL; case sec_status_insecure: @@ -2582,6 +2587,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, *ke = key_entry_create_null(qstate->region, qinfo->qname, qinfo->qname_len, qinfo->qclass, proof_ttl, + LDNS_EDE_NONE, NULL, *qstate->env->now); return (*ke) != NULL; case sec_status_indeterminate: @@ -2604,7 +2610,8 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, * this is BOGUS. */ verbose(VERB_DETAIL, "DS %s ran out of options, so return " "bogus", val_classification_to_string(subtype)); - errinf(qstate, "no DS but also no proof of that"); + reason = "no DS but also no proof of that"; + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } else if(subtype == VAL_CLASS_CNAME || subtype == VAL_CLASS_CNAMENOANSWER) { @@ -2616,22 +2623,25 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, cname = reply_find_rrset_section_an(msg->rep, qinfo->qname, qinfo->qname_len, LDNS_RR_TYPE_CNAME, qinfo->qclass); if(!cname) { - errinf(qstate, "validator classified CNAME but no " - "CNAME of the queried name for DS"); + reason = "validator classified CNAME but no " + "CNAME of the queried name for DS"; + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } if(((struct packed_rrset_data*)cname->entry.data)->rrsig_count == 0) { if(msg->rep->an_numrrsets != 0 && ntohs(msg->rep-> rrsets[0]->rk.type)==LDNS_RR_TYPE_DNAME) { - errinf(qstate, "DS got DNAME answer"); + reason = "DS got DNAME answer"; } else { - errinf(qstate, "DS got unsigned CNAME answer"); + reason = "DS got unsigned CNAME answer"; } + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } - sec = val_verify_rrset_entry(qstate->env, ve, cname, - vq->key_entry, &reason, NULL, LDNS_SECTION_ANSWER, qstate); + sec = val_verify_rrset_entry(qstate->env, ve, cname, + vq->key_entry, &reason, &reason_bogus, + LDNS_SECTION_ANSWER, qstate); if(sec == sec_status_secure) { verbose(VERB_ALGO, "CNAME validated, " "proof that DS does not exist"); @@ -2640,12 +2650,13 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, return 1; } errinf(qstate, "CNAME in DS response was not secure."); - errinf(qstate, reason); + errinf_ede(qstate, reason, reason_bogus); goto return_bogus; } else { verbose(VERB_QUERY, "Encountered an unhandled type of " "DS response, thus bogus."); errinf(qstate, "no DS and"); + reason = "no DS"; if(FLAGS_GET_RCODE(msg->rep->flags) != LDNS_RCODE_NOERROR) { char rc[16]; rc[0]=0; @@ -2658,8 +2669,8 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq, } return_bogus: *ke = key_entry_create_bad(qstate->region, qinfo->qname, - qinfo->qname_len, qinfo->qclass, - BOGUS_KEY_TTL, *qstate->env->now); + qinfo->qname_len, qinfo->qclass, BOGUS_KEY_TTL, + reason_bogus, reason, *qstate->env->now); return (*ke) != NULL; } @@ -2779,14 +2790,17 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq, vq->restart_count++; return; } - vq->key_entry = key_entry_create_bad(qstate->region, + reason = "No DNSKEY record"; + reason_bogus = LDNS_EDE_DNSKEY_MISSING; + vq->key_entry = key_entry_create_bad(qstate->region, qinfo->qname, qinfo->qname_len, qinfo->qclass, - BOGUS_KEY_TTL, *qstate->env->now); + BOGUS_KEY_TTL, reason_bogus, reason, + *qstate->env->now); if(!vq->key_entry) { log_err("alloc failure in missing dnskey response"); /* key_entry is NULL for failure in Validate */ } - errinf_ede(qstate, "No DNSKEY record", LDNS_EDE_DNSKEY_MISSING); + errinf_ede(qstate, reason, reason_bogus); errinf_origin(qstate, origin); errinf_dname(qstate, "for key", qinfo->qname); vq->state = VAL_VALIDATE_STATE; @@ -2833,7 +2847,8 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq, qstate->errinf = NULL; /* The DNSKEY validated, so cache it as a trusted key rrset. */ - key_cache_insert(ve->kcache, vq->key_entry, qstate); + key_cache_insert(ve->kcache, vq->key_entry, + qstate->env->cfg->val_log_level >= 2); /* If good, we stay in the FINDKEY state. */ log_query_info(VERB_DETAIL, "validated DNSKEY", qinfo); @@ -2901,7 +2916,8 @@ process_prime_response(struct module_qstate* qstate, struct val_qstate* vq, errinf_origin(qstate, origin); errinf_dname(qstate, "for trust anchor", ta->name); /* store the freshly primed entry in the cache */ - key_cache_insert(ve->kcache, vq->key_entry, qstate); + key_cache_insert(ve->kcache, vq->key_entry, + qstate->env->cfg->val_log_level >= 2); } /* If the result of the prime is a null key, skip the FINDKEY state.*/ From 846b15830498cbd42705731ab96c21b2a162923f Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 19 Jul 2023 15:26:08 +0200 Subject: [PATCH 163/177] - Remove redundant checks when attaching EDE to a SERVFAIL answer. --- services/mesh.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index c46505efd..683c76407 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1355,13 +1355,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list_inplace_cb_out = NULL; } - /* Send along EDE BOGUS EDNS0 option when validation is bogus */ - if(m->s.env->cfg->ede && rcode == LDNS_RCODE_SERVFAIL && - m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || - m->s.env->cfg->ignore_cd) && rep && - (rep->security <= sec_status_bogus || - rep->security == sec_status_secure_sentinel_fail)) { - + /* Send along EDE EDNS0 option when SERVFAILing; usually + * DNSSEC validation failures */ + /* Since we are SERVFAILing here, CD bit and rep->security + * is already handled. */ + if(m->s.env->cfg->ede && rep) { mesh_find_and_attach_ede_and_reason(m, rep, r); } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, @@ -1378,8 +1376,10 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; - /* Attach EDE without servfail if the validation failed */ - if (m->s.env->cfg->ede && rep && + /* Attach EDE without SERVFAIL if the validation failed. + * Need to explicitly check for rep->security otherwise failed + * validation paths may attach to a secure answer. */ + if(m->s.env->cfg->ede && rep && (rep->security <= sec_status_bogus || rep->security == sec_status_secure_sentinel_fail)) { mesh_find_and_attach_ede_and_reason(m, rep, r); From 90b434c260402aa7a676622d8390975c480ff4db Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 19 Jul 2023 17:06:10 +0200 Subject: [PATCH 164/177] - For #759: add support for cached EDEs to cachedump --- daemon/cachedump.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/daemon/cachedump.c b/daemon/cachedump.c index 8d0466c49..a90f04f2a 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -166,8 +166,7 @@ dump_msg_ref(RES* ssl, struct ub_packed_rrset_key* k) /** dump message entry */ static int -dump_msg(RES* ssl, struct query_info* k, struct reply_info* d, - time_t now) +dump_msg(RES* ssl, struct query_info* k, struct reply_info* d, time_t now) { size_t i; char* nm, *tp, *cl; @@ -192,13 +191,15 @@ dump_msg(RES* ssl, struct query_info* k, struct reply_info* d, } /* meta line */ - if(!ssl_printf(ssl, "msg %s %s %s %d %d " ARG_LL "d %d %u %u %u\n", + if(!ssl_printf(ssl, "msg %s %s %s %d %d " ARG_LL "d %d %u %u %u %d %s\n", nm, cl, tp, (int)d->flags, (int)d->qdcount, (long long)(d->ttl-now), (int)d->security, - (unsigned)d->an_numrrsets, + (unsigned)d->an_numrrsets, (unsigned)d->ns_numrrsets, - (unsigned)d->ar_numrrsets)) { + (unsigned)d->ar_numrrsets, + (int)d->reason_bogus, + d->reason_bogus_str?d->reason_bogus_str:"")) { free(nm); free(tp); free(cl); @@ -633,6 +634,9 @@ load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker) long long ttl; size_t i; int go_on = 1; + int ede; + int consumed = 0; + char* ede_str = NULL; regional_free_all(region); @@ -647,11 +651,14 @@ load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker) } /* read remainder of line */ - if(sscanf(s, " %u %u " ARG_LL "d %u %u %u %u", &flags, &qdcount, &ttl, - &security, &an, &ns, &ar) != 7) { + if(sscanf(s, " %u %u " ARG_LL "d %u %u %u %u %d%n", &flags, &qdcount, &ttl, + &security, &an, &ns, &ar, &ede, &consumed) != 8) { log_warn("error cannot parse numbers: %s", s); return 0; } + /* there may be EDE text after the numbers */ + if(consumed > 0 && (size_t)consumed < strlen(s)) + ede_str = s + consumed + 1 /* space */; memset(&rep, 0, sizeof(rep)); rep.flags = (uint16_t)flags; rep.qdcount = (uint16_t)qdcount; @@ -667,6 +674,8 @@ load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker) rep.ns_numrrsets = (size_t)ns; rep.ar_numrrsets = (size_t)ar; rep.rrset_count = (size_t)an+(size_t)ns+(size_t)ar; + rep.reason_bogus = (sldns_ede_code)ede; + rep.reason_bogus_str = ede_str?(char*)regional_strdup(region, ede_str):NULL; rep.rrsets = (struct ub_packed_rrset_key**)regional_alloc_zero( region, sizeof(struct ub_packed_rrset_key*)*rep.rrset_count); From 0b131d5a317e7fd531c1ba04a7fdbdb5210857ca Mon Sep 17 00:00:00 2001 From: headshog Date: Wed, 19 Jul 2023 18:09:03 +0300 Subject: [PATCH 165/177] parse sldns_get_rr_class_by_name and sldns_get_rr_type_by_name return value 0 --- daemon/remote.c | 3 +++ sldns/rrdef.c | 2 +- testcode/dohclient.c | 4 ++++ testcode/perf.c | 8 ++++++++ testcode/streamtcp.c | 4 ++++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/daemon/remote.c b/daemon/remote.c index d89ecd165..f27111fee 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1581,6 +1581,9 @@ do_flush_type(RES* ssl, struct worker* worker, char* arg) if(!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) return; t = sldns_get_rr_type_by_name(arg2); + if(t == 0 && strcmp(arg2, "TYPE0") != 0) { + return 0; + } do_cache_remove(worker, nm, nmlen, t, LDNS_RR_CLASS_IN); free(nm); diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 130324a1f..55ea2d922 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -746,7 +746,7 @@ sldns_get_rr_class_by_name(const char *name) if (strlen(name) > 5 && strncasecmp(name, "CLASS", 5) == 0) { unsigned int a = atoi(name + 5); if (a > LDNS_RR_TYPE_LAST) { - return (enum sldns_enum_rr_type)0; + return (enum sldns_enum_rr_class)0; } return a; } diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 64af699bc..2ee3be8e5 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -229,6 +229,10 @@ make_query(char* qname, char* qtype, char* qclass) qinfo.qtype = sldns_get_rr_type_by_name(qtype); qinfo.qclass = sldns_get_rr_class_by_name(qclass); + if((qinfo.qtype == 0 && strcmp(qtype, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(qclass, "CLASS0") != 0)) { + return 0; + } qinfo.local_alias = NULL; qinfo_query_encode(buf, &qinfo); /* flips buffer */ diff --git a/testcode/perf.c b/testcode/perf.c index 7fb524e22..5a4b39491 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -458,9 +458,17 @@ qlist_parse_line(sldns_buffer* buf, char* p) if(strcmp(tp, "IN") == 0 || strcmp(tp, "CH") == 0) { qinfo.qtype = sldns_get_rr_type_by_name(cl); qinfo.qclass = sldns_get_rr_class_by_name(tp); + if((qinfo.qtype == 0 && strcmp(cl, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(tp, "CLASS0") != 0)) { + return 0; + } } else { qinfo.qtype = sldns_get_rr_type_by_name(tp); qinfo.qclass = sldns_get_rr_class_by_name(cl); + if((qinfo.qtype == 0 && strcmp(tp, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(cl, "CLASS0") != 0)) { + return 0; + } } if(fl[0] == '+') rec = 1; else if(fl[0] == '-') rec = 0; diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index b2c0d5328..5e54894a6 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -133,6 +133,10 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, /* qtype and qclass */ qinfo.qtype = sldns_get_rr_type_by_name(strtype); qinfo.qclass = sldns_get_rr_class_by_name(strclass); + if((qinfo.qtype == 0 && strcmp(strtype, "TYPE0") != 0) || + (qinfo.qclass == 0 && strcmp(strclass, "CLASS0") != 0)) { + return 0; + } /* clear local alias */ qinfo.local_alias = NULL; From 5b7faca7dba21c86a9bcbeed37565990963d2ade Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 20 Jul 2023 11:42:05 +0200 Subject: [PATCH 166/177] For #909: Numeric truncation when parsing TYPEXX and CLASSXX representation - Fix return values. - Formatting nits. --- daemon/remote.c | 2 +- testcode/dohclient.c | 11 +++++++---- testcode/perf.c | 4 ++-- testcode/streamtcp.c | 10 +++++++--- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index f27111fee..c7bfa4e12 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1582,7 +1582,7 @@ do_flush_type(RES* ssl, struct worker* worker, char* arg) return; t = sldns_get_rr_type_by_name(arg2); if(t == 0 && strcmp(arg2, "TYPE0") != 0) { - return 0; + return; } do_cache_remove(worker, nm, nmlen, t, LDNS_RR_CLASS_IN); diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 2ee3be8e5..de9f39d7d 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -226,12 +226,15 @@ make_query(char* qname, char* qtype, char* qclass) printf("cannot parse query name: '%s'\n", qname); exit(1); } - qinfo.qtype = sldns_get_rr_type_by_name(qtype); + if(qinfo.qtype == 0 && strcmp(qtype, "TYPE0") != 0) { + printf("cannot parse query type: '%s'\n", qtype); + exit(1); + } qinfo.qclass = sldns_get_rr_class_by_name(qclass); - if((qinfo.qtype == 0 && strcmp(qtype, "TYPE0") != 0) || - (qinfo.qclass == 0 && strcmp(qclass, "CLASS0") != 0)) { - return 0; + if(qinfo.qclass == 0 && strcmp(qclass, "CLASS0") != 0) { + printf("cannot parse query class: '%s'\n", qclass); + exit(1); } qinfo.local_alias = NULL; diff --git a/testcode/perf.c b/testcode/perf.c index 5a4b39491..2be86c4bf 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -459,14 +459,14 @@ qlist_parse_line(sldns_buffer* buf, char* p) qinfo.qtype = sldns_get_rr_type_by_name(cl); qinfo.qclass = sldns_get_rr_class_by_name(tp); if((qinfo.qtype == 0 && strcmp(cl, "TYPE0") != 0) || - (qinfo.qclass == 0 && strcmp(tp, "CLASS0") != 0)) { + (qinfo.qclass == 0 && strcmp(tp, "CLASS0") != 0)) { return 0; } } else { qinfo.qtype = sldns_get_rr_type_by_name(tp); qinfo.qclass = sldns_get_rr_class_by_name(cl); if((qinfo.qtype == 0 && strcmp(tp, "TYPE0") != 0) || - (qinfo.qclass == 0 && strcmp(cl, "CLASS0") != 0)) { + (qinfo.qclass == 0 && strcmp(cl, "CLASS0") != 0)) { return 0; } } diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 5e54894a6..4eee14187 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -132,10 +132,14 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, /* qtype and qclass */ qinfo.qtype = sldns_get_rr_type_by_name(strtype); + if(qinfo.qtype == 0 && strcmp(strtype, "TYPE0") != 0) { + printf("cannot parse query type: '%s'\n", strtype); + exit(1); + } qinfo.qclass = sldns_get_rr_class_by_name(strclass); - if((qinfo.qtype == 0 && strcmp(strtype, "TYPE0") != 0) || - (qinfo.qclass == 0 && strcmp(strclass, "CLASS0") != 0)) { - return 0; + if(qinfo.qclass == 0 && strcmp(strclass, "CLASS0") != 0) { + printf("cannot parse query class: '%s'\n", strclass); + exit(1); } /* clear local alias */ From 8d45c1592ba4cca713b7cc9dbae6f2f72d13f75c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 20 Jul 2023 12:16:24 +0200 Subject: [PATCH 167/177] - For #909: Fix RR class comparison. --- doc/Changelog | 3 +++ sldns/rrdef.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 1f788f683..206963cfc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ CLASSXX representation. - For #909: Fix return values. +20 July 2023: Wouter + - For #909: Fix RR class comparison. + 14 July 2023: George - More clear description of the different auth-zone behaviors on the man page. diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 55ea2d922..e81ebb1fc 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -745,7 +745,7 @@ sldns_get_rr_class_by_name(const char *name) /* CLASSXX representation */ if (strlen(name) > 5 && strncasecmp(name, "CLASS", 5) == 0) { unsigned int a = atoi(name + 5); - if (a > LDNS_RR_TYPE_LAST) { + if (a > LDNS_RR_CLASS_LAST) { return (enum sldns_enum_rr_class)0; } return a; From 40f446a499ad668f6ecca3944637d09c435b026e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 21 Jul 2023 14:02:01 +0200 Subject: [PATCH 168/177] - For #857: fix mixed declarations and code. --- testcode/streamtcp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 388727383..84d2b65f6 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -386,10 +386,10 @@ send_em(const char* svr, const char* pp2_client, int udp, int usessl, SSL_CTX* ctx = NULL; SSL* ssl = NULL; sldns_buffer* buf = sldns_buffer_new(65553); - if(!buf) fatal_exit("out of memory"); sldns_buffer* proxy_buf = sldns_buffer_new(65553); - if(!proxy_buf) { + if(!buf || !proxy_buf) { sldns_buffer_free(buf); + sldns_buffer_free(proxy_buf); fatal_exit("out of memory"); } pp2_parsed = parse_pp2_client(pp2_client, udp, proxy_buf); From 2d33bba3c0f8e8ee39c618153e4860d52e3afa16 Mon Sep 17 00:00:00 2001 From: mibere Date: Sun, 24 Nov 2019 00:03:38 +0100 Subject: [PATCH 169/177] Changed verbosity level for Redis init & deinit Redis init & deinit are basic (operational) information --- cachedb/redis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cachedb/redis.c b/cachedb/redis.c index f7b2fa532..2f8806c10 100644 --- a/cachedb/redis.c +++ b/cachedb/redis.c @@ -111,7 +111,7 @@ redis_init(struct module_env* env, struct cachedb_env* cachedb_env) int i; struct redis_moddata* moddata = NULL; - verbose(VERB_ALGO, "redis_init"); + verbose(VERB_OPS, "Redis initialization"); moddata = calloc(1, sizeof(struct redis_moddata)); if(!moddata) { @@ -173,7 +173,7 @@ redis_deinit(struct module_env* env, struct cachedb_env* cachedb_env) cachedb_env->backend_data; (void)env; - verbose(VERB_ALGO, "redis_deinit"); + verbose(VERB_OPS, "Redis deinitialization"); if(!moddata) return; From ef9f7f113f2d4cc26ac8748700fdaa45432749d0 Mon Sep 17 00:00:00 2001 From: mibere Date: Sun, 24 Nov 2019 02:04:25 +0100 Subject: [PATCH 170/177] Log established connection to Redis --- cachedb/redis.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cachedb/redis.c b/cachedb/redis.c index 2f8806c10..93a575a4c 100644 --- a/cachedb/redis.c +++ b/cachedb/redis.c @@ -97,6 +97,7 @@ redis_connect(const struct redis_moddata* moddata) } freeReplyObject(rep); } + verbose(VERB_OPS, "Connection to Redis established"); return ctx; fail: From 51c189394ddb569e8c1c94d9f0f47621c9139a8b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 21 Jul 2023 16:53:36 +0200 Subject: [PATCH 171/177] - Cleaner failure code for callback functions in interface.i. --- doc/Changelog | 1 + pythonmod/interface.i | 131 ++++++++++++++++++++++++++---------------- 2 files changed, 82 insertions(+), 50 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4b3d15ea8..352b89745 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ deinit. - Merge #390 from Frank Riley: Add missing callbacks to the python module. + - Cleaner failure code for callback functions in interface.i. 20 July 2023: George - Merge #909 from headshog: Numeric truncation when parsing TYPEXX and diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 5f7495972..a436389e1 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1551,13 +1551,15 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, struct comm_reply* repinfo, struct regional* region, struct timeval* start_time, int id, void* python_callback) { - PyObject *func, *py_edns, *py_qstate, *py_opt_list_out, *py_qinfo; - PyObject *py_rep, *py_repinfo, *py_region; + PyObject *func = NULL, *py_edns = NULL, *py_qstate = NULL; + PyObject *py_opt_list_out = NULL, *py_qinfo = NULL; + PyObject *py_rep = NULL, *py_repinfo = NULL, *py_region = NULL; PyObject *py_args = NULL, *py_kwargs = NULL, *result = NULL; int res = 0; double py_start_time = ((double)start_time->tv_sec) + ((double)start_time->tv_usec) / 1.0e6; PyGILState_STATE gstate = PyGILState_Ensure(); + func = (PyObject *) python_callback; py_edns = SWIG_NewPointerObj((void*) edns, SWIGTYPE_p_edns_data, 0); py_qstate = SWIG_NewPointerObj((void*) qstate, @@ -1568,20 +1570,24 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, py_rep = SWIG_NewPointerObj((void*) rep, SWIGTYPE_p_reply_info, 0); py_repinfo = SWIG_NewPointerObj((void*) repinfo, SWIGTYPE_p_comm_reply, 0); py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); - if(py_qinfo && py_qstate && py_rep && py_edns && py_opt_list_out - && py_region && py_repinfo) { - py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, - rcode, py_edns, py_opt_list_out, py_region); - py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", - py_start_time); - if(py_args && py_kwargs) { - result = PyObject_Call(func, py_args, py_kwargs); - } else { - log_err("pythonmod: malloc failure in python_inplace_cb_reply_generic"); - } - } else { - log_err("pythonmod: malloc failure in python_inplace_cb_reply_generic"); + if(!(py_qinfo && py_qstate && py_rep && py_edns && py_opt_list_out + && py_region && py_repinfo)) { + log_err("pythonmod: swig pointer failure in python_inplace_cb_reply_generic"); + goto out; } + py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, + rcode, py_edns, py_opt_list_out, py_region); + py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", + py_start_time); + if(!(py_args && py_kwargs)) { + log_err("pythonmod: BuildValue failure in python_inplace_cb_reply_generic"); + goto out; + } + result = PyObject_Call(func, py_args, py_kwargs); + if (result) { + res = PyInt_AsLong(result); + } +out: Py_XDECREF(py_edns); Py_XDECREF(py_qstate); Py_XDECREF(py_opt_list_out); @@ -1591,9 +1597,6 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, Py_XDECREF(py_region); Py_XDECREF(py_args); Py_XDECREF(py_kwargs); - if (result) { - res = PyInt_AsLong(result); - } Py_XDECREF(result); PyGILState_Release(gstate); return res; @@ -1641,29 +1644,34 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, int res = 0; PyObject *func = python_callback; PyObject *py_args = NULL, *py_kwargs = NULL, *result = NULL; + PyObject *py_qinfo = NULL; + PyObject *py_qstate = NULL; + PyObject *py_addr = NULL; + PyObject *py_zone = NULL; + PyObject *py_region = NULL; PyGILState_STATE gstate = PyGILState_Ensure(); - PyObject *py_qinfo = SWIG_NewPointerObj((void*) qinfo, SWIGTYPE_p_query_info, 0); - PyObject *py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); - PyObject *py_addr = SWIG_NewPointerObj((void *) addr, SWIGTYPE_p_sockaddr_storage, 0); - PyObject *py_zone = PyBytes_FromStringAndSize((const char *)zone, zonelen); - PyObject *py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); - if(py_qinfo && py_qstate && py_addr && py_zone && py_region) { - py_args = Py_BuildValue("(OiOOOO)", py_qinfo, flags, py_qstate, py_addr, py_zone, py_region); - py_kwargs = Py_BuildValue("{}"); - if(py_args && py_kwargs) { - result = PyObject_Call(func, py_args, py_kwargs); - if (result) { - res = PyInt_AsLong(result); - } - } else { - log_err("pythonmod: malloc failure in python_inplace_cb_query_generic"); - } - } else { - log_err("pythonmod: malloc failure in python_inplace_cb_query_generic"); + py_qinfo = SWIG_NewPointerObj((void*) qinfo, SWIGTYPE_p_query_info, 0); + py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); + py_addr = SWIG_NewPointerObj((void *) addr, SWIGTYPE_p_sockaddr_storage, 0); + py_zone = PyBytes_FromStringAndSize((const char *)zone, zonelen); + py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); + if(!(py_qinfo && py_qstate && py_addr && py_zone && py_region)) { + log_err("pythonmod: swig pointer failure in python_inplace_cb_query_generic"); + goto out; } - + py_args = Py_BuildValue("(OiOOOO)", py_qinfo, flags, py_qstate, py_addr, py_zone, py_region); + py_kwargs = Py_BuildValue("{}"); + if(!(py_args && py_kwargs)) { + log_err("pythonmod: BuildValue failure in python_inplace_cb_query_generic"); + goto out; + } + result = PyObject_Call(func, py_args, py_kwargs); + if (result) { + res = PyInt_AsLong(result); + } +out: Py_XDECREF(py_qinfo); Py_XDECREF(py_qstate); Py_XDECREF(py_addr); @@ -1693,19 +1701,31 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, { int res = 0; PyObject *func = python_callback; + PyObject *py_qstate = NULL; + PyObject *py_response = NULL; + PyObject *py_args = NULL; + PyObject *py_kwargs = NULL; + PyObject *result = NULL; PyGILState_STATE gstate = PyGILState_Ensure(); - PyObject *py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); - PyObject *py_response = SWIG_NewPointerObj((void*) response, SWIGTYPE_p_dns_msg, 0); - - PyObject *py_args = Py_BuildValue("(OO)", py_qstate, py_response); - PyObject *py_kwargs = Py_BuildValue("{}"); - PyObject *result = PyObject_Call(func, py_args, py_kwargs); + py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); + py_response = SWIG_NewPointerObj((void*) response, SWIGTYPE_p_dns_msg, 0); + if(!(py_qstate && py_response)) { + log_err("pythonmod: swig pointer failure in python_inplace_cb_query_response"); + goto out; + } + py_args = Py_BuildValue("(OO)", py_qstate, py_response); + py_kwargs = Py_BuildValue("{}"); + if(!(py_args && py_kwargs)) { + log_err("pythonmod: BuildValue failure in python_inplace_cb_query_response"); + goto out; + } + result = PyObject_Call(func, py_args, py_kwargs); if (result) { res = PyInt_AsLong(result); } - +out: Py_XDECREF(py_qstate); Py_XDECREF(py_response); @@ -1732,18 +1752,29 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, { int res = 0; PyObject *func = python_callback; + PyObject *py_qstate = NULL; + PyObject *py_args = NULL; + PyObject *py_kwargs = NULL; + PyObject *result = NULL; PyGILState_STATE gstate = PyGILState_Ensure(); - PyObject *py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); - - PyObject *py_args = Py_BuildValue("(O)", py_qstate); - PyObject *py_kwargs = Py_BuildValue("{}"); - PyObject *result = PyObject_Call(func, py_args, py_kwargs); + py_qstate = SWIG_NewPointerObj((void*) qstate, SWIGTYPE_p_module_qstate, 0); + if(!py_qstate) { + log_err("pythonmod: swig pointer failure in python_inplace_cb_edns_back_parsed_call"); + goto out; + } + py_args = Py_BuildValue("(O)", py_qstate); + py_kwargs = Py_BuildValue("{}"); + if(!(py_args && py_kwargs)) { + log_err("pythonmod: BuildValue failure in python_inplace_cb_edns_back_parsed_call"); + goto out; + } + result = PyObject_Call(func, py_args, py_kwargs); if (result) { res = PyInt_AsLong(result); } - +out: Py_XDECREF(py_qstate); Py_XDECREF(py_args); From 97fdd0e2eb07b3a5f2e149ddbce44ad27c9d08da Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 21 Jul 2023 21:04:40 +0200 Subject: [PATCH 172/177] - For #889: use netcat-openbsd instead of netcat-traditional. --- contrib/Dockerfile.tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/Dockerfile.tests b/contrib/Dockerfile.tests index 6cc3e4c1e..4d1321021 100644 --- a/contrib/Dockerfile.tests +++ b/contrib/Dockerfile.tests @@ -2,7 +2,7 @@ FROM gcc:latest WORKDIR /usr/src/unbound # install semantic parser & lexical analyzer # install packages used in tests -RUN apt-get update && apt-get install -y bison flex ldnsutils dnsutils xxd splint doxygen netcat-traditional +RUN apt-get update && apt-get install -y bison flex ldnsutils dnsutils xxd splint doxygen netcat-openbsd # accept short rsa keys, which are used in tests RUN sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf From 6289238cd6fb5405d009859a8318037788206f4d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 21 Jul 2023 21:05:38 +0200 Subject: [PATCH 173/177] - For #889: Account for num_detached_states before possible mesh_state_delete when erroring out. --- services/mesh.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index 4dc0cf3a5..029414da3 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -449,6 +449,8 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, comm_point_send_reply(rep); return; } + /* set detached (it is now) */ + mesh->num_detached_states++; if(unique) mesh_state_make_unique(s); s->s.rpz_passthru = rpz_passthru; @@ -476,8 +478,6 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, #endif rbtree_insert(&mesh->all, &s->node); log_assert(n != NULL); - /* set detached (it is now) */ - mesh->num_detached_states++; added = 1; } if(!s->reply_list && !s->cb_list) { @@ -570,6 +570,8 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, if(!s) { return 0; } + /* set detached (it is now) */ + mesh->num_detached_states++; if(unique) mesh_state_make_unique(s); s->s.rpz_passthru = rpz_passthru; @@ -588,8 +590,6 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, #endif rbtree_insert(&mesh->all, &s->node); log_assert(n != NULL); - /* set detached (it is now) */ - mesh->num_detached_states++; added = 1; } if(!s->reply_list && !s->cb_list) { @@ -606,6 +606,8 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, } /* add serve expired timer if not already there */ if(timeout && !mesh_serve_expired_init(s, timeout)) { + if(added) + mesh_state_delete(&s->s); return 0; } /* update statistics */ From 50ea4a1072a51773878d5c2a2dc73d4e639b476d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 28 Jul 2023 12:50:36 +0200 Subject: [PATCH 174/177] Address review comments for #759: - Decrease allocations for "" EDE strings when loading the cachedump. - Check for existence of EDE code before attaching. --- daemon/cachedump.c | 5 +++-- daemon/worker.c | 5 +++-- services/mesh.c | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/daemon/cachedump.c b/daemon/cachedump.c index a90f04f2a..61ee1d291 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -651,14 +651,15 @@ load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker) } /* read remainder of line */ - if(sscanf(s, " %u %u " ARG_LL "d %u %u %u %u %d%n", &flags, &qdcount, &ttl, + /* note the last space before any possible EDE text */ + if(sscanf(s, " %u %u " ARG_LL "d %u %u %u %u %d %n", &flags, &qdcount, &ttl, &security, &an, &ns, &ar, &ede, &consumed) != 8) { log_warn("error cannot parse numbers: %s", s); return 0; } /* there may be EDE text after the numbers */ if(consumed > 0 && (size_t)consumed < strlen(s)) - ede_str = s + consumed + 1 /* space */; + ede_str = s + consumed; memset(&rep, 0, sizeof(rep)); rep.flags = (uint16_t)flags; rep.qdcount = (uint16_t)qdcount; diff --git a/daemon/worker.c b/daemon/worker.c index 529b22ae4..1b988ed36 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -508,7 +508,8 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, worker->env.now_tv)) return 0; /* Attach the cached EDE (RFC8914) */ - if(worker->env.cfg->ede) { + if(worker->env.cfg->ede && + msg->rep->reason_bogus != LDNS_EDE_NONE) { edns_opt_list_append_ede(&edns->opt_list_out, worker->scratchpad, msg->rep->reason_bogus, msg->rep->reason_bogus_str); @@ -694,7 +695,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, worker->env.now_tv)) goto bail_out; /* Attach the cached EDE (RFC8914) */ - if(worker->env.cfg->ede) { + if(worker->env.cfg->ede && rep->reason_bogus != LDNS_EDE_NONE) { edns_opt_list_append_ede(&edns->opt_list_out, worker->scratchpad, rep->reason_bogus, rep->reason_bogus_str); diff --git a/services/mesh.c b/services/mesh.c index 683c76407..5fa467d18 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1253,7 +1253,7 @@ mesh_find_and_attach_ede_and_reason(struct mesh_state* m, * but a compelling reason to do otherwise is just as valid * NEW note: * The compelling reason is that with caching support, the value - * in the * reply_info is cached. + * in the reply_info is cached. * The reason members of the reply_info struct should be * updated as they are already cached. No reason to * try and find the EDE information in errinf anymore. From 843fc69927085096576a625be859109dac4124eb Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 28 Jul 2023 14:05:25 +0200 Subject: [PATCH 175/177] Address review comments for #759: - Clear error text when an expected signature is missing. --- validator/val_sigcrypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validator/val_sigcrypt.c b/validator/val_sigcrypt.c index 0ecd05f13..bd4891e3b 100644 --- a/validator/val_sigcrypt.c +++ b/validator/val_sigcrypt.c @@ -718,7 +718,7 @@ dnskey_verify_rrset(struct module_env* env, struct val_env* ve, } verbose(VERB_ALGO, "rrset failed to verify: all signatures are bogus"); if(!numchecked) { - *reason = "signatures bogus"; + *reason = "signature for expected key and algorithm missing"; if(reason_bogus) *reason_bogus = LDNS_EDE_DNSSEC_BOGUS; } else if(numchecked == numindeterminate) { From 373904f865dca4614170c76b97115b7e5177791e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 28 Jul 2023 20:17:07 +0200 Subject: [PATCH 176/177] - Fix unused variable compile warning for kernel timestamps in netevent.c --- doc/Changelog | 4 ++++ util/netevent.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 134caab8a..c49cee6cb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +28 July 2023: George + - Fix unused variable compile warning for kernel timestamps in + netevent.c + 21 July 2023: George - Merge #857 from eaglegai: fix potential memory leaks when errors happen. diff --git a/util/netevent.c b/util/netevent.c index 75bbae35c..f9f9fc116 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -846,7 +846,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) #ifndef S_SPLINT_S struct cmsghdr* cmsg; #endif /* S_SPLINT_S */ +#ifdef HAVE_LINUX_NET_TSTAMP_H struct timespec *ts; +#endif /* HAVE_LINUX_NET_TSTAMP_H */ rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); @@ -921,7 +923,7 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) } else if( cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SO_TIMESTAMP) { memmove(&rep.c->recv_tv, CMSG_DATA(cmsg), sizeof(struct timeval)); -#endif +#endif /* HAVE_LINUX_NET_TSTAMP_H */ } } From 6487d6febeba1c547cf68b96c7b3ff64af53ab8e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sun, 30 Jul 2023 11:43:06 +0200 Subject: [PATCH 177/177] - For #759: fix doc string. --- util/module.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/module.h b/util/module.h index dc6835364..5b6fcc93c 100644 --- a/util/module.h +++ b/util/module.h @@ -826,11 +826,11 @@ void errinf_dname(struct module_qstate* qstate, const char* str, * This string is malloced and has to be freed by caller. */ char* errinf_to_str_bogus(struct module_qstate* qstate); + /** - * Check the sldns_ede_code of the qstate. + * Check the sldns_ede_code of the qstate->errinf. * @param qstate: query state. - * @return LDNS_EDE_DNSSEC_BOGUS by default, or the first explicitly set - * sldns_ede_code. + * @return the latest explicitly set sldns_ede_code or LDNS_EDE_NONE. */ sldns_ede_code errinf_to_reason_bogus(struct module_qstate* qstate);