From 7699e1386a16236002b26107ffd2dcbde375e197 Mon Sep 17 00:00:00 2001 From: Cy Schubert Date: Fri, 13 Jan 2023 15:52:47 -0800 Subject: [PATCH] unbound: Vendor import 1.17.1 Release notes at https://www.nlnetlabs.nl/news/2023/Jan/12/unbound-1.17.1-released/. --- Makefile.in | 4 +- README.md | 1 + cachedb/cachedb.c | 21 +- configure | 25 +- configure.ac | 5 +- contrib/unbound.service.in | 5 +- daemon/cachedump.c | 9 +- daemon/daemon.c | 91 +- daemon/daemon.h | 6 + daemon/remote.c | 16 +- daemon/worker.c | 21 +- daemon/worker.h | 4 +- doc/Changelog | 86 + doc/README | 2 +- doc/example.conf.in | 18 +- doc/libunbound.3.in | 4 +- doc/unbound-anchor.8.in | 2 +- doc/unbound-checkconf.8.in | 2 +- doc/unbound-control.8.in | 10 +- doc/unbound-host.1.in | 2 +- doc/unbound.8.in | 4 +- doc/unbound.conf.5.in | 36 +- edns-subnet/subnetmod.c | 11 + iterator/iter_utils.c | 2 + iterator/iterator.c | 7 +- iterator/iterator.h | 10 +- libunbound/context.c | 1 + libunbound/context.h | 6 + libunbound/libunbound.c | 39 +- libunbound/libworker.c | 1 + libunbound/unbound-event.h | 3 +- pythonmod/pythonmod.c | 39 +- services/authzone.c | 1 + services/cache/dns.c | 8 + sldns/rrdef.h | 4 +- smallapp/unbound-control.c | 12 +- testcode/dohclient.c | 1 + testdata/03-testbound.tdir/03-testbound.test | 9 + .../09-unbound-control.conf | 7 +- .../09-unbound-control.test | 614 +- .../conf.bad_credentials | 5 + .../conf.spoofed_credentials | 5 + testdata/cachedb_servfail_cname.crpl | 181 + testdata/common.sh | 6 + testdata/fwd_0ttlservfail.rpl | 3 +- testdata/pymod.tdir/pymod.py | 7 +- testdata/serve_expired_cached_servfail.rpl | 130 + ...serve_expired_client_timeout_servfail.rpl} | 20 +- testdata/subnet_cached_servfail.crpl | 167 + util/config_file.c | 9 + util/config_file.h | 7 + util/configlexer.c | 6837 +++++++++-------- util/configlexer.lex | 3 + util/configparser.c | 4118 +++++----- util/configparser.h | 532 +- util/configparser.y | 34 +- util/iana_ports.inc | 1 + util/netevent.c | 30 +- util/tube.c | 53 +- 59 files changed, 7143 insertions(+), 6154 deletions(-) create mode 100644 testdata/09-unbound-control.tdir/conf.bad_credentials create mode 100644 testdata/09-unbound-control.tdir/conf.spoofed_credentials create mode 100644 testdata/cachedb_servfail_cname.crpl 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/Makefile.in b/Makefile.in index e7c76c2588aa..bc021aa1eb00 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 @@ -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/README.md b/README.md index d1bbcf2b7797..c3d9bc2492ef 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)](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 diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index b07743d85259..245daa986967 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -390,6 +390,15 @@ prep_data(struct module_qstate* qstate, struct sldns_buffer* buf) if(!qstate->return_msg || !qstate->return_msg->rep) return 0; + /* do not store failures like SERVFAIL in the cachedb, this avoids + * overwriting expired, valid, content with broken content. */ + if(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; /* We don't store the reply if its TTL is 0 unless serve-expired is * enabled. Such a reply won't be reusable and simply be a waste for * the backend. It's also compatible with the default behavior of @@ -542,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/configure b/configure index a2837d18553b..5823e49f2f80 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.0. +# Generated by GNU Autoconf 2.69 for unbound 1.17.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.17.0' -PACKAGE_STRING='unbound 1.17.0' +PACKAGE_VERSION='1.17.1' +PACKAGE_STRING='unbound 1.17.1' 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.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.17.1 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.0:";; + short | recursive ) echo "Configuration of unbound 1.17.1:";; 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.0 +unbound configure 1.17.1 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.0, which was +It was created by unbound $as_me 1.17.1, 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=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=20 +LIBUNBOUND_REVISION=21 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2938,6 +2938,7 @@ LIBUNBOUND_AGE=1 # 1.16.2 had 9:18:1 # 1.16.3 had 9:19:1 # 1.17.0 had 9:20:1 +# 1.17.1 had 9:21:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -22085,7 +22086,7 @@ _ACEOF -version=1.17.0 +version=1.17.1 date=`date +'%b %e, %Y'` @@ -22604,7 +22605,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.0, which was +This file was extended by unbound $as_me 1.17.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22670,7 +22671,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.0 +unbound config.status 1.17.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 57cc7e604b1e..2c7583310f20 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],[0]) +m4_define([VERSION_MICRO],[1]) 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=20 +LIBUNBOUND_REVISION=21 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -106,6 +106,7 @@ LIBUNBOUND_AGE=1 # 1.16.2 had 9:18:1 # 1.16.3 had 9:19:1 # 1.17.0 had 9:20:1 +# 1.17.1 had 9:21:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index ada5fac9c224..5a05c525170f 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/daemon/cachedump.c b/daemon/cachedump.c index baf8008ea80f..943eb63f326c 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -387,7 +387,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; @@ -398,7 +398,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*) + @@ -408,7 +408,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; @@ -431,7 +431,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 71091133a487..193608d40e05 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -488,6 +488,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. @@ -540,6 +561,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); } @@ -771,6 +807,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; } @@ -785,9 +822,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); @@ -802,8 +846,13 @@ daemon_cleanup(struct daemon* daemon) worker_delete(daemon->workers[i]); free(daemon->workers); daemon->workers = NULL; + /* 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; - alloc_clear_special(&daemon->superalloc); #ifdef USE_DNSTAP dt_delete(daemon->dtenv); daemon->dtenv = NULL; @@ -900,8 +949,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 58713e9ce466..57665446d41b 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*/ @@ -140,6 +144,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 7d4a414002ac..7c5a036f343d 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 @@ -684,8 +682,9 @@ 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, int reuse_cache) { + worker->reuse_cache = reuse_cache; worker->need_to_exit = 0; comm_base_exit(worker->base); send_ok(ssl); @@ -920,7 +919,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 +1128,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; } } @@ -1963,6 +1962,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); @@ -3029,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); + do_reload(ssl, worker, 0); return; } else if(cmdcmp(p, "stats_noreset", 13)) { do_stats(ssl, worker, 0); diff --git a/daemon/worker.c b/daemon/worker.c index caefad621409..99dcf9940004 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; @@ -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, @@ -2059,15 +2065,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 @@ -2211,7 +2216,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 3fb52abd9d87..ab2fc728d274 100644 --- a/daemon/worker.h +++ b/daemon/worker.h @@ -118,7 +118,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 */ @@ -131,6 +131,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/doc/Changelog b/doc/Changelog index 727d1543ea4e..899026352434 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,7 +1,93 @@ +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. + +14 December 2022: George + - Merge #569 from JINMEI Tatuya: add keep-cache option to + 'unbound-control reload' to keep caches. + +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. + - Merge #461 from Christian Allred: Add max-query-restarts option. + Exposes an internal configuration but the default value retains + Unbound's behavior. + +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 + 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 + the serve-expired and prefetch configuration options. + +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. + +23 November 2022: Philip + - Merge #720 from jonathangray: fix use after free when + WSACreateEvent() fails. + +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. + +9 November 2022: George + - Complementary fix for distutils.sysconfig deprecation in Python 3.10 + to commit 62c5039ab9da42713e006e840b7578e01d66e7f2. + +8 November 2022: Wouter + - Fix to ignore tcp events for closed comm points. + - Fix to make sure to not read again after a tcp comm point is closed. + - Fix #775: libunbound: subprocess reap causes parent process reap + to hang. + - iana portlist update. + +21 October 2022: George + - Merge #767 from jonathangray: consistently use IPv4/IPv6 in + unbound.conf.5. + +21 October 2022: Wouter + - Fix that cachedb does not store failures in the external cache. + +18 October 2022: George + - Clarify the use of MAX_SENT_COUNT in the iterator code. + +17 October 2022: Wouter + - testcode/dohclient sets log identity to its name. + +14 October 2022: Wouter + - Merge #768 from fobser: Arithmetic on a pointer to void is a GNU + extension. + - In unit test, print python script name list correctly. + +13 October 2022: Wouter + - Tag for 1.17.0 release. The code repository continues with 1.17.1. + 11 October 2022: George - Fix PROXYv2 header read for TCP connections when no proxied addresses are provided. +7 October 2022: Wouter + - Tag for 1.17.0rc1 release. + 7 October 2022: George - Fix to stop possible loops in the tcp reuse code (write_wait list and tcp_wait list). Based on analysis and patch from Prad Seniappan diff --git a/doc/README b/doc/README index 88444a5e3c99..faab92bcb077 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -README for Unbound 1.17.0 +README for Unbound 1.17.1 Copyright 2007 NLnet Labs http://unbound.net diff --git a/doc/example.conf.in b/doc/example.conf.in index df0b2a1fb2c0..8cf3d868285e 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1,7 +1,7 @@ # # Example configuration file. # -# See unbound.conf(5) man page, version 1.17.0. +# See unbound.conf(5) man page, version 1.17.1. # # this is a comment. @@ -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 @@ -173,6 +178,15 @@ 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 + + # 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/libunbound.3.in b/doc/libunbound.3.in index b87289e0d764..19a213e1aa6f 100644 --- a/doc/libunbound.3.in +++ b/doc/libunbound.3.in @@ -1,4 +1,4 @@ -.TH "libunbound" "3" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "libunbound" "3" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" libunbound.3 -- unbound library functions manual .\" @@ -44,7 +44,7 @@ .B ub_ctx_zone_remove, .B ub_ctx_data_add, .B ub_ctx_data_remove -\- Unbound DNS validating resolver 1.17.0 functions. +\- Unbound DNS validating resolver 1.17.1 functions. .SH "SYNOPSIS" .B #include .LP diff --git a/doc/unbound-anchor.8.in b/doc/unbound-anchor.8.in index dc61b72dadb4..9bba2522a19c 100644 --- a/doc/unbound-anchor.8.in +++ b/doc/unbound-anchor.8.in @@ -1,4 +1,4 @@ -.TH "unbound-anchor" "8" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "unbound-anchor" "8" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" unbound-anchor.8 -- unbound anchor maintenance utility manual .\" diff --git a/doc/unbound-checkconf.8.in b/doc/unbound-checkconf.8.in index ba6c334c7c78..128f1cebd94b 100644 --- a/doc/unbound-checkconf.8.in +++ b/doc/unbound-checkconf.8.in @@ -1,4 +1,4 @@ -.TH "unbound-checkconf" "8" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "unbound-checkconf" "8" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" unbound-checkconf.8 -- unbound configuration checker manual .\" diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 3841b9737f4e..10be612fe20e 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -1,4 +1,4 @@ -.TH "unbound-control" "8" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "unbound-control" "8" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" unbound-control.8 -- unbound remote control manual .\" @@ -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 @@ -130,7 +136,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/doc/unbound-host.1.in b/doc/unbound-host.1.in index 8371084c575b..0af5777f0492 100644 --- a/doc/unbound-host.1.in +++ b/doc/unbound-host.1.in @@ -1,4 +1,4 @@ -.TH "unbound\-host" "1" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "unbound\-host" "1" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" unbound-host.1 -- unbound DNS lookup utility .\" diff --git a/doc/unbound.8.in b/doc/unbound.8.in index ac61b0f7a10c..498690805c85 100644 --- a/doc/unbound.8.in +++ b/doc/unbound.8.in @@ -1,4 +1,4 @@ -.TH "unbound" "8" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "unbound" "8" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" unbound.8 -- unbound manual .\" @@ -9,7 +9,7 @@ .\" .SH "NAME" .B unbound -\- Unbound DNS validating resolver 1.17.0. +\- Unbound DNS validating resolver 1.17.1. .SH "SYNOPSIS" .B unbound .RB [ \-h ] diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 6c021b900d89..3844d52551c6 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1,4 +1,4 @@ -.TH "unbound.conf" "5" "Oct 13, 2022" "NLnet Labs" "unbound 1.17.0" +.TH "unbound.conf" "5" "Jan 12, 2023" "NLnet Labs" "unbound 1.17.1" .\" .\" unbound.conf.5 -- unbound.conf manual .\" @@ -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 @@ -349,7 +357,7 @@ ip\-transparent option is also available. The value of the Differentiated Services Codepoint (DSCP) in the differentiated services field (DS) of the outgoing IP packet headers. The field replaces the outdated IPv4 Type-Of-Service field and the -IPV6 traffic class field. +IPv6 traffic class field. .TP .B rrset\-cache\-size: \fI Number of bytes size of the RRset cache. Default is 4 megabytes. @@ -416,7 +424,7 @@ Enable or disable whether ip4 queries are answered or issued. Default is yes. Enable or disable whether ip6 queries are answered or issued. Default is yes. If disabled, queries are not answered on IPv6, and queries are not sent on IPv6 to the internet nameservers. With this option you can disable the -ipv6 transport for sending DNS traffic, it does not impact the contents of +IPv6 transport for sending DNS traffic, it does not impact the contents of the DNS traffic, which may have ip4 and ip6 addresses in it. .TP .B prefer\-ip4: \fI @@ -1671,7 +1679,7 @@ This specifies the action data for \fIresponse-ip\fR with action being to redirect as specified by "\fIresource record string\fR". "Resource record string" is similar to that of \fIaccess-control-tag-action\fR, but it must be of either AAAA, A or CNAME types. -If the IP-netblock is an IPv6/IPV4 prefix, the record +If the IP-netblock is an IPv6/IPv4 prefix, the record must be AAAA/A respectively, unless it is a CNAME (which can be used for both versions of IP netblocks). If it is CNAME there must not be more than one \fIresponse-ip-data\fR for the same IP-netblock. @@ -1820,6 +1828,21 @@ 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. +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 +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 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 @@ -1853,7 +1876,7 @@ errors. Default is "no". When the \fBval-log-level\fR option is also set to \fB2\fR, responses with Extended DNS Errors concerning DNSSEC failures that are not served from cache, will also contain a descriptive text message about the reason for the failure. -.TP +.TP 5 .B ede\-serve\-expired: \fI If enabled, Unbound will attach an Extended DNS Error (RFC8914) Code 3 - Stale Answer as EDNS0 option to the expired response. Note that this will not attach @@ -2358,6 +2381,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 0f1df417f6b5..458a89702269 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, diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 56b184a02fb8..b2a2309ab4b1 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -175,6 +175,8 @@ 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; return 1; } diff --git a/iterator/iterator.c b/iterator/iterator.c index 2f3ad06fe6ea..33095b2b5c45 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1314,7 +1314,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 " @@ -2276,14 +2276,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries, iq->sent_count); /* Make sure that we haven't run away */ - /* FIXME: is this check even necessary? */ if(iq->referral_count > MAX_REFERRAL_COUNT) { verbose(VERB_QUERY, "request has exceeded the maximum " "number of referrrals with %d", iq->referral_count); 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"); @@ -2630,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 e35718cf33bd..89038dc8a7e6 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -63,12 +63,8 @@ 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-sent-out. Make sure large NS set does not loop */ -#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 @@ -145,6 +141,12 @@ struct iter_env { /** 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/libunbound/context.c b/libunbound/context.c index c8d911f13c7f..f7c0a2cd5fae 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -70,6 +70,7 @@ context_finalize(struct ub_ctx* ctx) } else { log_init(cfg->logfile, cfg->use_syslog, NULL); } + ctx->pipe_pid = getpid(); cfg_apply_local_port_policy(cfg, 65536); config_apply(cfg); if(!modstack_setup(&ctx->mods, cfg->module_conf, ctx->env)) diff --git a/libunbound/context.h b/libunbound/context.h index c0c86fb52697..c0fc80e57be4 100644 --- a/libunbound/context.h +++ b/libunbound/context.h @@ -89,6 +89,12 @@ struct ub_ctx { pid_t bg_pid; /** tid of bg worker thread */ ub_thread_type bg_tid; + /** pid when pipes are created. This was the process when the + * setup was called. Helps with clean up, so we can tell after a fork + * which side of the fork the delete is on. */ + pid_t pipe_pid; + /** when threaded, the worker that exists in the created thread. */ + struct libworker* thread_worker; /** do threading (instead of forking) for async resolution */ int dothread; diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index ea5ef24bb01c..80a82bb47ddf 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -305,11 +305,31 @@ ub_ctx_delete(struct ub_ctx* ctx) int do_stop = 1; if(!ctx) return; + /* if the delete is called but it has forked, and before the fork + * the context was finalized, then the bg worker is not stopped + * from here. There is one worker, but two contexts that refer to + * 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. */ + if(ctx->qq_pipe->listen_com) + ctx->qq_pipe->listen_com->event_added = 0; + if(ctx->qq_pipe->res_com) + ctx->qq_pipe->res_com->event_added = 0; + if(ctx->rr_pipe->listen_com) + 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 */ /* for processes the read pipe is closed and we see that on read */ #ifdef HAVE_PTHREAD - if(ctx->created_bg && ctx->dothread) { + if(ctx->created_bg && ctx->dothread && do_stop) { if(pthread_kill(ctx->bg_tid, 0) == ESRCH) { /* thread has been killed */ do_stop = 0; @@ -318,6 +338,23 @@ ub_ctx_delete(struct ub_ctx* ctx) #endif /* HAVE_PTHREAD */ if(do_stop) ub_stop_bg(ctx); + if(ctx->created_bg && ctx->pipe_pid != getpid() && ctx->thread_worker) { + /* This delete is happening from a different process. Delete + * the thread worker from this process memory space. The + * thread is not there to do so, so it is freed here. */ + struct ub_event_base* evbase = comm_base_internal( + ctx->thread_worker->base); + libworker_delete_event(ctx->thread_worker); + ctx->thread_worker = NULL; +#ifdef USE_MINI_EVENT + ub_event_base_free(evbase); +#else + /* cannot event_base_free, because the epoll_fd cleanup + * in libevent could stop the original event_base in the + * other process from working. */ + free(evbase); +#endif + } libworker_delete_event(ctx->event_worker); modstack_desetup(&ctx->mods, ctx->env); diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 11bf5f9db555..b9ef02217a2f 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -395,6 +395,7 @@ int libworker_bg(struct ub_ctx* ctx) w = libworker_setup(ctx, 1, NULL); if(!w) return UB_NOMEM; w->is_bg_thread = 1; + ctx->thread_worker = w; #ifdef ENABLE_LOCK_CHECKS w->thread_num = 1; /* for nicer DEBUG checklocks */ #endif diff --git a/libunbound/unbound-event.h b/libunbound/unbound-event.h index a5d5c038b68f..5fa74df78186 100644 --- a/libunbound/unbound-event.h +++ b/libunbound/unbound-event.h @@ -230,7 +230,7 @@ int ub_ctx_set_event(struct ub_ctx* ctx, struct event_base* base); * @param callback: this is called on completion of the resolution. * It is called as: * void callback(void* mydata, int rcode, void* packet, int packet_len, - * int sec, char* why_bogus) + * int sec, char* why_bogus, int was_ratelimited) * with mydata: the same as passed here, you may pass NULL, * with rcode: 0 on no error, nonzero for mostly SERVFAIL situations, * this is a DNS rcode. @@ -241,6 +241,7 @@ int ub_ctx_set_event(struct ub_ctx* ctx, struct event_base* base); * with packet_len: length in bytes of the packet buffer. * with sec: 0 if insecure, 1 if bogus, 2 if DNSSEC secure. * with why_bogus: text string explaining why it is bogus (or NULL). + * with was_ratelimited: if the query was ratelimited. * These point to buffers inside unbound; do not deallocate the packet or * error string. * diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 4bea54e6aceb..7c7da548994a 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -255,7 +255,7 @@ log_py_err(void) int pythonmod_init(struct module_env* env, int id) { int py_mod_idx = py_mod_count++; - + /* Initialize module */ FILE* script_py = NULL; PyObject* py_init_arg, *res; @@ -316,23 +316,37 @@ int pythonmod_init(struct module_env* env, int id) if (py_mod_count==1) { /* Initialize Python */ - PyRun_SimpleString("import sys \n"); + if(PyRun_SimpleString("import sys \n") < 0 ) { + goto python_init_fail; + } PyRun_SimpleString("sys.path.append('.') \n"); + PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n"); + PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n"); if(env->cfg->directory && env->cfg->directory[0]) { char wdir[1524]; snprintf(wdir, sizeof(wdir), "sys.path.append('%s') \n", env->cfg->directory); PyRun_SimpleString(wdir); } - PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n"); - PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n"); - PyRun_SimpleString("import distutils.sysconfig \n"); - PyRun_SimpleString("sys.path.append(distutils.sysconfig.get_python_lib(1,0)) \n"); - if (PyRun_SimpleString("from unboundmodule import *\n") < 0) + /* Check if sysconfig is there and use that instead of distutils; + * distutils.sysconfig is deprecated in Python 3.10. */ + 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("from unboundmodule import *\n") < 0) { - log_err("pythonmod: cannot initialize core module: unboundmodule.py"); - PyGILState_Release(gil); - return 0; + goto python_init_fail; } } @@ -480,6 +494,11 @@ int pythonmod_init(struct module_env* env, int id) PyGILState_Release(gil); return 1; + +python_init_fail: + log_err("pythonmod: cannot initialize core module: unboundmodule.py"); + PyGILState_Release(gil); + return 0; } void pythonmod_deinit(struct module_env* env, int id) diff --git a/services/authzone.c b/services/authzone.c index 6de1e4319095..3898767c7e05 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); } } } diff --git a/services/cache/dns.c b/services/cache/dns.c index b6e5697349c2..6fc9919ef4c0 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/sldns/rrdef.h b/sldns/rrdef.h index 999c223074e1..98fb257dc8cd 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 */ diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 34fb801bb8b3..821c490c3e8f 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -102,6 +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 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 @@ -180,8 +186,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 +320,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 +443,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/testcode/dohclient.c b/testcode/dohclient.c index 82e522f90d51..64af699bc718 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -573,6 +573,7 @@ int main(int argc, char** argv) #endif checklock_start(); log_init(0, 0, 0); + log_ident_set("dohclient"); h2_session = http2_session_create(); if(!h2_session) fatal_exit("out of memory"); diff --git a/testdata/03-testbound.tdir/03-testbound.test b/testdata/03-testbound.tdir/03-testbound.test index 00d362287634..b9fdf214df82 100644 --- a/testdata/03-testbound.tdir/03-testbound.test +++ b/testdata/03-testbound.tdir/03-testbound.test @@ -103,6 +103,15 @@ for input in $PRE/testdata/*.rpl $PRE/testdata/*.crpl; do fi fi + # detect if cachedb is needed + if echo $cleaninput | grep cachedb >/dev/null 2>&1; then + if grep "define USE_CACHEDB 1" $PRE/config.h >/dev/null 2>&1; then + : # CACHEDB is supported + else + continue + fi + fi + if test $do_valgrind = "yes"; then echo if (valgrind $VALGRIND_FLAGS $PRE/testbound -p $input >tmpout 2>&1;); then diff --git a/testdata/09-unbound-control.tdir/09-unbound-control.conf b/testdata/09-unbound-control.tdir/09-unbound-control.conf index ba55e34e8869..227d56075251 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 f683bf41758c..0ef679b3fd46 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 000000000000..11a131130000 --- /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 000000000000..25cb830dca4e --- /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/cachedb_servfail_cname.crpl b/testdata/cachedb_servfail_cname.crpl new file mode 100644 index 000000000000..221f00d4df54 --- /dev/null +++ b/testdata/cachedb_servfail_cname.crpl @@ -0,0 +1,181 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + minimal-responses: no + ;serve-expired: yes + module-config: "cachedb iterator" + +cachedb: + backend: "testframe" + secret-seed: "testvalue" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 +CONFIG_END + +SCENARIO_BEGIN Test cachedb store and servfail reply from cname. +; the servfail reply should not overwrite the cache contents. + +; 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 subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns2.example.com. +SECTION ADDITIONAL +ns2.example.com. IN A 1.2.3.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +foo.com. IN NS +SECTION AUTHORITY +foo.com. IN NS ns.example.com. +ENTRY_END +RANGE_END + +; ns2.example.com. +RANGE_BEGIN 0 20 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qname qtype +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 10 IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; ns2.example.com., now failing +RANGE_BEGIN 20 100 + ADDRESS 1.2.3.5 +ENTRY_BEGIN +MATCH opcode qname qtype +REPLY QR AA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 10 IN CNAME foo.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +REPLY QR AA SERVFAIL +SECTION QUESTION +foo.example.com. IN A +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +REPLY QR AA SERVFAIL +SECTION QUESTION +ns2.example.com. IN A +SECTION ANSWER +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +REPLY QR AA SERVFAIL +SECTION QUESTION +ns2.example.com. IN AAAA +SECTION ANSWER +ENTRY_END +RANGE_END + +; get and entry in cache, to make it expired. +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; get the answer for it +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. 10 IN A 1.2.3.4 +ENTRY_END + +; it is now expired +STEP 20 TIME_PASSES ELAPSE 20 + +; get a servfail in cache for the destination +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +foo.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +foo.example.com. IN A +ENTRY_END + +; the query is now a CNAME to servfail. +; there is a valid, but expired, entry in cache. +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 10 IN CNAME foo.example.com. +ENTRY_END + +SCENARIO_END diff --git a/testdata/common.sh b/testdata/common.sh index a449f1a64eb2..b0e66f8dfa7f 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 ]" +} diff --git a/testdata/fwd_0ttlservfail.rpl b/testdata/fwd_0ttlservfail.rpl index f1a6dc6291a0..ed912c73bf2f 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/pymod.tdir/pymod.py b/testdata/pymod.tdir/pymod.py index a8018e7f75e7..1eb7af5b16e5 100644 --- a/testdata/pymod.tdir/pymod.py +++ b/testdata/pymod.tdir/pymod.py @@ -37,7 +37,12 @@ import os def init(id, cfg): - log_info("pythonmod: init called, module id is %d port: %d script: %s" % (id, cfg.port, cfg.python_script)) + scripts=[] + s = cfg.python_script + while s != None: + scripts.append(s.str) + s = s.next + log_info("pythonmod: init called, module id is %d port: %d script: %s" % (id, cfg.port, scripts)) return True def deinit(id): diff --git a/testdata/serve_expired_cached_servfail.rpl b/testdata/serve_expired_cached_servfail.rpl new file mode 100644 index 000000000000..286de708b9c5 --- /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 6e3192ef081c..1cae3fd822ff 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 000000000000..9c746d579124 --- /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 diff --git a/util/config_file.c b/util/config_file.c index f807397e44e8..e3a77053709f 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; @@ -336,6 +337,8 @@ config_create(void) cfg->ip_ratelimit_backoff = 0; 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; @@ -516,6 +519,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) @@ -778,6 +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_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) @@ -996,6 +1002,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) @@ -1238,6 +1245,8 @@ 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_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 b1406913a8c1..87cb92cf0e03 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; @@ -608,6 +610,11 @@ 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; + /** 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. diff --git a/util/configlexer.c b/util/configlexer.c index 56e7f12f3887..0815f6e6553b 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 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,409 +363,413 @@ 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[3683] = { 0, - 1, 1, 343, 343, 347, 347, 351, 351, 355, 355, - 1, 1, 359, 359, 363, 363, 370, 367, 1, 341, - 341, 368, 2, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 368, 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, 366, 368, 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, 346, 346, 350, 350, 354, 354, 358, 358, + 1, 1, 362, 362, 366, 366, 373, 370, 1, 344, + 344, 371, 2, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 371, 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, 369, 371, 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, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 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, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 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, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 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, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 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, - 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, + 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, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 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, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 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, - 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, + 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, - 367, 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, + 370, 370, 370, 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, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 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, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 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, - 367, 367, 367, 367, 367, 367, 367, 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, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 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, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 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, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 370, 370, 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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 + 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] = @@ -811,17 +815,17 @@ static const YY_CHAR yy_meta[67] = 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3664] = +static const flex_int16_t yy_base[3701] = { 0, 0, 0, 64, 67, 70, 72, 78, 84, 89, 92, - 131, 137, 112, 118, 123, 142, 488, 423, 96,10421, - 10421,10421, 160, 185, 116, 183, 229, 132, 175, 173, + 131, 137, 112, 118, 123, 142, 488, 423, 96,10542, + 10542,10542, 160, 185, 116, 183, 229, 132, 175, 173, 232, 50, 66, 120, 263, 275, 151, 323, 134, 375, - 416, 286, 308, 283, 126, 237, 374,10421,10421,10421, - 95, 372,10421,10421,10421, 186, 361, 373,10421,10421, - 10421, 258, 309,10421,10421,10421, 104, 293,10421, 266, - 10421, 167, 351, 281, 311,10421,10421,10421, 369, 268, - 10421,10421,10421, 146, 252, 378, 177, 0, 392, 0, + 416, 286, 308, 283, 126, 237, 374,10542,10542,10542, + 95, 372,10542,10542,10542, 186, 361, 373,10542,10542, + 10542, 258, 309,10542,10542,10542, 104, 293,10542, 266, + 10542, 167, 351, 281, 311,10542,10542,10542, 369, 268, + 10542,10542,10542, 146, 252, 378, 177, 0, 392, 0, 0, 303, 270, 235, 317, 362, 344, 384, 178, 177, 226, 420, 377, 330, 379, 402, 414, 425, 413, 453, @@ -846,786 +850,794 @@ static const flex_int16_t yy_base[3664] = 986, 982, 984, 991, 995, 1001, 999, 1005, 1012, 996, 1004, 1022, 1027, 1023, 144, 1016, 1032, 1035, 1014, 1038, - 1037, 1041, 1046, 1049, 1047,10421, 1043, 1057, 1074, 1073, + 1037, 1041, 1046, 1049, 1047,10542, 1043, 1057, 1074, 1073, 1082, 1083, 1078, 1076, 1088, 1093, 1069, 1068, 1070, 1094, 1098, 1108, 1101, 1113, 1103, 1105, 1126, 1106, 1138, 1125, - 1134, 1133, 1130, 1177, 1139, 1129, 1140, 1185, 1152, 1160, - 1166, 1181, 1207, 1198, 1143, 1209, 1204, 1205, 1221, 1182, - 1218, 1171, 1230, 1213, 1236, 1217, 1228, 1244, 1240, 1231, - 1241, 1245, 1256, 1272,10421, 1254, 1277, 1283, 1280, 1281, - 1290, 1289, 1312, 1287, 1297, 1294, 1305, 1321, 1360, 1408, - 1307, 1335, 1322, 1325, 1330,10421, 1347, 1345, 1457, 1353, - 1367, 1375, 1379, 1370, 1380, 1374, 1401, 1394, 1302, 1388, + 1134, 1133, 1130, 1177, 1139, 1129, 1140, 1222, 1152, 1160, + 1164, 1178, 1183, 1185, 1143, 1182, 1191, 1204, 1217, 1184, + 1221, 1171, 1223, 1231, 1236, 1165, 1238, 1242, 1233, 1252, + 1255, 1258, 1256, 1285,10542, 1264, 1276, 1282, 1287, 1290, + 1291, 1279, 1313, 1317, 1309, 1312, 1278, 1320, 1361, 1409, + 1318, 1327, 1331, 1336, 1328,10542, 1357, 1353, 1458, 1356, + 1341, 1386, 1387, 1369, 1380, 1377, 1402, 1389, 1407, 1395, - 1403, 1406, 1430, 1458, 1419, 1428, 1437, 1417, 1438, 1352, - 1461, 1447, 1456, 1464, 1450, 1477, 1466, 1487, 1508, 1490, - 1485, 1495, 1499, 1514, 1515, 1528, 1519, 1532, 1517, 1506, - 1512, 1533, 1535, 1542, 1557, 1602, 1537, 1558, 1563, 1569, - 1561, 1576, 1560, 1585, 1578, 1571, 1594, 1590, 1612, 1598, - 1534, 1609, 1617, 1621, 1629, 1624, 1618, 1631, 1627, 1648, - 1660, 1650, 1643, 1646, 1654, 1665, 1667, 1670, 1659, 1675, - 1673, 1683, 1681, 1684,10421, 1711,10421, 1686, 1708, 1693, - 1709, 1694, 1717, 1699, 1713,10421, 1710, 1705, 1727, 1640, - 1734, 1690, 1742, 1729, 1753, 1745, 1752, 1761, 1754, 1750, + 1404, 1426, 1438, 1418, 1429, 1455, 1439, 1457, 1463, 1420, + 1479, 1466, 1452, 1469, 1468, 1467, 1487, 1504, 1513, 1488, + 1500, 1501, 1506, 1519, 1518, 1522, 1528, 1534, 1536, 1535, + 1514, 1541, 1540, 1546, 1566, 1611, 1539, 1562, 1565, 1568, + 1567, 1582, 1569, 1573, 1587, 1580, 1599, 1592, 1607, 1609, + 1578, 1615, 1610, 1626, 1635, 1617, 1618, 1619, 1636, 1652, + 1660, 1646, 1644, 1647, 1654, 1667, 1651, 1671, 1675, 1673, + 1674, 1681, 1678, 1668, 1705, 1690,10542, 1710,10542, 1693, + 1707, 1697, 1713, 1698, 1716, 1703, 1717,10542, 1708, 1709, + 1731, 1736, 1733, 1757, 1750, 1762, 1756, 1752, 1760, 1764, - 1757, 1767, 1756, 1770, 1787, 1775, 1791, 1777, 1780, 1794, - 1803, 1795, 1804, 1790, 1792, 1800, 1840,10421, 1822, 1823, - 1797, 1816, 1826, 1847, 1835, 1830, 1871, 1843, 1872, 1873, - 1855, 1900, 1869, 1874, 1885, 1879, 1893, 1907, 1896, 1909, - 1899, 1906, 1915, 1924, 1912, 1916, 1917, 1919, 1934, 1932, - 1944,10421, 1945, 1952, 1958, 1965, 1951, 1949, 1948, 1955, - 1971, 1966, 1983, 1975, 1968, 1976, 1991, 2001, 1978, 1992, - 2011, 1995, 2005, 1998, 1994, 2015, 2013, 2014, 2021, 2029, - 2031, 2045, 2046, 2022, 2051, 2052, 2058, 2059, 2043, 2041, - 2053, 2060, 2050, 2047, 2067, 2073, 2064, 2072, 2078, 2077, + 1755, 1758, 1763, 1770, 1781, 1777, 1797, 1789, 1800, 1784, + 1754, 1808, 1804, 1795, 1813, 1798, 1802, 1807, 1848,10542, + 1799, 1796, 1823, 1839, 1832, 1850, 1836, 1853, 1881, 1845, + 1880, 1877, 1879, 1897, 1883, 1884, 1906, 1876, 1894, 1915, + 1903, 1917, 1904, 1910, 1920, 1933, 1921, 1929, 1945, 1930, + 1944, 1937, 1932,10542, 1949, 1964, 1965, 1959, 1961, 1955, + 1956, 1960, 1966, 1962, 1990, 1971, 1997, 1979, 1996, 2005, + 2014, 1998, 2017, 2001, 2012, 2002, 2007, 2028, 2024, 2029, + 2019, 2052, 2023, 2053, 2057, 2063, 2059, 2061, 2069, 2071, + 2049, 2047, 2058, 2074, 2073, 2062, 2075, 2079, 2086, 2076, - 2088, 2086, 2080, 2083, 2093, 2100, 2108, 2102, 2091, 2111, - 2104, 2103, 2120, 2126, 2127, 2128, 2149, 2138, 2136, 2144, - 2150, 2143, 2146, 2131, 2153,10421, 2154, 2165, 2179, 2181, - 2186, 2187, 2189, 2183, 2178, 2193, 2184, 2198, 2195, 2202, - 2210, 2209, 2211, 2217, 2222, 2223, 2244, 2234, 2238, 2249, - 2242, 2246, 2225, 2239, 2250, 2252, 2255, 2259, 2258, 2261, - 2272, 2256, 2282, 2273, 2297, 2280, 2283, 2298, 2299, 2285, - 2286, 2300, 2301, 2310, 2308, 2312, 2331, 2338, 2324, 2335, - 2352, 2328, 2316, 2351, 2345, 2355, 2342, 2348, 2356, 2354, - 2365, 2359, 2367, 2361, 2375, 2380, 2378, 2384, 2401, 2391, + 2088, 2089, 2092, 2094, 2108, 2104, 2106, 2103, 2123, 2110, + 2115, 2127, 2121, 2129, 2126, 2128, 2138, 2133, 2168, 2139, + 2160, 2151, 2148, 2172, 2178, 2167, 2170,10542, 2163, 2173, + 2159, 2188, 2196, 2190, 2197, 2195, 2198, 2206, 2205, 2221, + 2207, 2230, 2222, 2217, 2232, 2225, 2228, 2223, 2238, 2244, + 2240, 2245, 2257, 2263, 2265, 2270, 2258, 2266, 2267, 2272, + 2269, 2284, 2286, 2287, 2295, 2285, 2296, 2273, 2324, 2293, + 2304, 2316, 2314, 2307, 2318, 2325, 2312, 2328, 2331, 2333, + 2343, 2347, 2337, 2363, 2371, 2374, 2352, 2367, 2353, 2379, + 2364, 2365, 2366, 2370, 2380, 2390, 2399, 2404, 2397, 2405, - 2394, 2388, 2400, 2397, 2407, 2389, 2419, 2416, 2421, 2428, - 2424, 2431, 2433, 2435, 2440, 2443, 2455, 2459, 2447, 2466, - 2453, 2473, 2470, 2462, 2476, 2479, 2489, 2493, 2494, 2480, - 2503, 2505, 2491, 2506, 2490, 2497, 2518, 2517, 2520, 2534, - 2538, 2542, 2535, 2543, 2533, 2536, 2530, 2432, 2558, 2553, - 2566, 2555,10421, 2562, 2547, 2563, 2568, 2575, 2576, 2570, - 2589, 2584, 2593, 2578, 2579, 2597, 2643,10421, 2594,10421, - 10421, 2595,10421,10421, 2598, 2620,10421, 2591, 2623, 2624, - 2614, 2642, 2631, 2653, 2650, 2649, 2657, 2658, 2647, 2705, - 2666, 2694, 2616, 2669, 2664, 2676, 2698, 2703, 2692, 2710, + 2396, 2402, 2416, 2407, 2391, 2415, 2411, 2424, 2418, 2423, + 2434, 2429, 2439, 2438, 2440, 2450, 2451, 2455, 2467, 2459, + 2475, 2479, 2477, 2471, 2478, 2493, 2482, 2492, 2494, 2498, + 2505, 2510, 2516, 2500, 2517, 2521, 2518, 2534, 2519, 2533, + 2543, 2542, 2535, 2551, 2555, 2553, 2545, 2562, 2549, 2561, + 2546, 2565, 2586, 2566, 2572, 2581,10542, 2578, 2601, 2580, + 2599, 2594, 2584, 2592, 2617, 2607, 2611, 2598, 2604, 2612, + 2658,10542, 2608,10542,10542, 2624,10542,10542, 2637, 2642, + 10542, 2625, 2649, 2645, 2668, 2661, 2682, 2685, 2687, 2644, + 2652, 2676, 2704, 2731, 2681, 2695, 2694, 2699, 2714, 2710, - 2689, 2695, 2725, 2746, 2733, 2742, 2734, 2748, 2755, 2752, - 2751, 2758, 2683, 2760, 2747, 2745, 2761, 2773, 2775, 2769, - 2770, 2780, 2785, 2800, 2787, 2791, 2784, 2813, 2804, 2810, - 2824,10421, 2811, 2818, 2796, 2822, 2820, 2834, 2832, 2833, - 2836, 2841, 2846, 2840, 2837, 2845, 2849, 2847, 2838, 2842, - 2851, 2857, 2877, 2871, 2887, 2893, 2872, 2873,10421, 2880, - 2882, 2878, 2896, 2885, 2900, 2905, 2881, 2899, 2906, 2898, - 2936, 2920, 2938, 2925, 2916, 2932, 2921, 2926, 2943,10421, - 2947, 2950, 2937, 2951, 2948, 2959, 2960, 2933, 2964, 2981, - 2965, 2985, 2975, 2976, 2999, 2991, 2986, 2994, 2978, 2987, + 2720, 2725, 2727, 2748, 2721, 2739, 2752, 2774, 2761, 2770, + 2757, 2751, 2780, 2782, 2783, 2784, 2702, 2788, 2773, 2775, + 2792, 2798, 2801, 2795, 2804, 2809, 2812, 2828, 2815, 2822, + 2813, 2811, 2832, 2827, 2846,10542, 2838, 2849, 2830, 2831, + 2847, 2857, 2858, 2871, 2865, 2866, 2861, 2878, 2879, 2873, + 2862, 2877, 2883, 2884, 2885, 2870, 2896, 2901, 2893, 2908, + 2917, 2924, 2904, 2906,10542, 2912, 2918, 2910, 2931, 2923, + 2935, 2941, 2926, 2930, 2947, 2951, 2971, 2958, 2959, 2954, + 2957, 2961, 2953, 2974, 2991,10542, 2987, 2979, 2984, 2985, + 2986, 2973, 2988, 3000, 3003, 3001, 3013, 3020, 3015, 3012, - 3003, 2996, 3005, 3024, 3033, 3015, 3018, 3026, 3020, 3031, - 3021, 3022, 3036, 3023, 3032, 3059, 3062, 3050, 3074, 3058, - 3053, 3079, 3080, 3077, 3057, 3075, 3078, 3067, 3089, 3097, - 3098, 3093, 3091, 3099, 3102, 3101, 3111, 3113, 3114, 3127, - 3132, 3120, 3129, 3136, 3122, 3141, 3146, 3123,10421, 3128, - 3139,10421, 3154, 3155, 3156, 3202, 3164, 3170, 3172, 3176, - 3168, 3181, 3183, 3192, 3195, 3201, 3189, 3208, 3210, 3227, - 3194, 3234, 3214, 3225, 3232, 3235, 3233, 3254, 3250, 3242, - 3259, 3270, 3272, 3268, 381, 3276, 3257, 3261, 3260, 3307, - 3273, 3284, 3282, 3290, 3291, 3293, 3314, 3312, 3310, 3311, + 3014, 3016, 3026, 3028, 3027, 3034, 3039, 3049, 3042, 3054, + 3062, 3051, 3047, 3055, 3060, 3069, 3065, 3066, 3071, 3075, + 3079, 3073, 3084, 3087, 3108, 3091, 3089, 3113, 3115, 3116, + 3100, 3111, 3124, 3112, 3136, 3118, 3126, 3122, 3130, 3128, + 3135, 3134, 3144, 3147, 3161, 3164, 3177, 3158, 3172, 3168, + 3156, 3159, 3184, 3171,10542, 3186, 3187,10542, 3157, 3188, + 3191, 3237, 3222, 3198, 3205, 3224, 3209, 3229, 3228, 3227, + 3225, 3245, 3271, 3254, 3251, 3272, 3247, 3278, 3267, 3277, + 3270, 3274, 3273, 3298, 3286, 3290, 3297, 3192, 3250, 3308, + 381, 3317, 3294, 3300, 3310, 3355, 3314, 3325, 3318, 3321, - 3317, 3316, 3277, 3340, 3319, 3329, 3334, 3344, 3346, 3352, - 3361, 3348,10421, 3371, 3366, 3351, 3375, 3363, 3386, 3377, - 3381,10421, 3374, 3378, 3390, 3389, 3385, 3392, 3410, 3398, - 3408, 3403, 3412, 3417, 3419, 3414, 3431, 3404,10421, 3413, - 10421, 3438, 3416, 3427, 3441, 3443, 3444, 3446, 3459, 3467, - 10421,10421, 3469, 3468, 3465, 3481, 3483, 3471, 3470, 3487, - 10421, 3486, 3511,10421, 3514, 3490, 3506, 3489, 3499, 3504, - 3507, 3508, 3513, 3495, 3517, 3529, 3524, 3538, 3535,10421, - 3552, 3547, 3533, 3556, 3558, 3541, 3560, 3562, 3566, 3570, - 10421, 3572, 3559, 3585, 3577, 3573, 3583, 3588, 3598, 3594, + 3337, 3335, 3323, 3350, 3357, 3349, 3351, 3364, 3352, 3367, + 3373, 3386, 3376, 3387, 3388, 3389, 3407, 3390,10542, 3359, + 3415, 3401, 3416, 3396, 3427, 3419, 3422,10542, 3417, 3430, + 3413, 3432, 3443, 3431, 3455, 3442, 3447, 3444, 3451, 3456, + 3458, 3466, 3459, 3478,10542, 3468,10542, 3482, 3477, 3473, + 3475, 3486, 3487, 3494, 3483, 3500, 3507, 3511,10542,10542, + 3513, 3510, 3521, 3525, 3531, 3520, 3517, 3523,10542, 3514, + 3560,10542, 3550, 3538, 3558, 3548, 3544, 3552, 3549, 3556, + 3555, 3571, 3566, 3577, 3575, 3579, 3578,10542, 3572, 3598, + 3582, 3602, 3605, 3596, 3599, 3609, 3611, 3606,10542, 3615, - 3589, 3584, 3593, 3605, 3604, 3619, 3628, 3629, 3621, 3622, - 3634, 3631, 3642,10421, 3633, 3623, 3625, 3644, 3646, 3643, - 3648, 3650, 3661, 3649, 3655, 3676, 3677, 3670, 3678, 3669, - 3673, 3671, 3694, 3696, 3684, 3697, 3692, 3701, 3695, 3703, - 3698, 91, 3700, 3704, 3714, 3707,10421, 3719, 3735, 3729, - 3734, 3743, 3724, 128, 3736, 3740, 3741, 3747, 3745, 3749, - 3758, 3762, 3763, 3757, 3764, 3781, 3782, 3772, 3774, 3789, - 3777, 3776, 3790, 3791, 3793,10421, 3798, 3809, 3784, 3811, - 3801, 3810, 3827,10421, 3831, 3839, 3837, 3844, 3838, 3833, - 3848, 3836, 3834, 3867, 3872, 3861, 3869, 3888, 3879, 3871, + 3604, 3634, 3627, 3624, 3635, 3628, 3647, 3648, 3638, 3633, + 3637, 3655, 3653, 3632, 3668, 3673, 3664, 3665, 3677, 3676, + 3683,10542, 3682, 3671, 3674, 3691, 3685, 3688, 3693, 3696, + 3701, 3695, 3680, 3708, 3716, 3714, 3722, 3712, 3724, 3715, + 3729, 3742, 3732, 3726, 3744, 3741, 3748, 3738, 3737, 91, + 3749, 3757, 3751, 3754,10542, 3753, 3773, 3775, 3780, 3781, + 3768, 128, 3776, 3777, 3784, 3793, 3782, 3801, 3794, 3810, + 3821, 3806, 3819, 3825, 3826, 3815, 3816, 3833, 3817, 3820, + 3828, 3846, 3844,10542, 3840, 3850, 3851, 3853, 3866, 3854, + 3870,10542, 3878, 3891, 3871, 3879, 3880, 3890, 3897, 3893, - 3875, 3868,10421, 3889, 3892, 3895, 3890, 3896, 3905, 3911, - 3903, 3906, 3907, 3928, 3914, 3932, 3923, 3924, 3925, 3936, - 3938, 3934, 3898, 3937, 3948, 3933, 3959, 3953, 3965, 3960, - 3958, 3963, 3987, 3969,10421, 3993, 3976, 3980, 3990, 3982, - 3981, 3995, 3999, 4028, 4012, 4005, 4017, 4014, 4058, 4020, - 4025, 4018, 4042, 4046, 4026, 4041, 4060, 4069, 4048, 4061, - 4078, 4086, 4075, 4085, 4045, 4088, 4080, 4094, 4023, 4092, - 4053, 4116, 4109, 4113, 4107, 4139, 4118, 4111, 4134, 4133, - 4131,10421, 4145, 4136, 4144, 4138, 4158, 4173, 4161, 4152, - 4172, 4175, 4178, 4171, 4176, 4179, 4186, 4191, 4184, 4199, + 3903, 3899, 3905, 3896, 3913, 3927, 3923, 3919, 3918, 3917, + 10542, 3934, 3938, 3942, 3931, 3944, 3937, 3948, 3952, 3958, + 3953, 3974, 3966, 3955, 3971, 3968, 3969, 3970, 3985, 3992, + 3997, 3982, 3996, 3994, 4005, 4006, 3999, 4008, 4012, 4013, + 4036, 4021,10542, 4047, 4029, 4031, 4038, 4030, 4033, 4048, + 4039, 4067, 4042, 4056, 4066, 4058, 4106, 4068, 4073, 4089, + 4090, 4094, 4095, 4097, 4096, 4100, 4109, 4118, 4134, 4144, + 4093, 4085, 4148, 4153, 4151, 4141, 4137, 4155, 4145, 4140, + 4156, 4168, 4164, 4161, 4166, 4198, 4192, 4176, 4172, 4203, + 4183,10542, 4200, 4193, 4195, 4205, 4202, 4233, 4217, 4224, - 4194, 4204, 4198, 4201, 4217, 4211, 4205, 4222, 4056, 4218, - 4215, 4238,10421, 4243, 4236, 4228, 4239, 4250, 4232, 4253, - 4257, 4256, 4251, 4255, 4260, 4262, 4244, 4269, 4287, 4273, - 4274, 4289, 4283, 4295, 4280,10421, 4299, 4291, 4296, 4300, - 4301, 4307, 4303, 4326, 4332, 4336, 4339, 4338, 4319, 4342, - 4344, 4334,10421, 4349, 4350, 4352, 4355, 4354, 4363, 4361, - 4362, 4356, 4365,10421, 4381, 4375, 4384, 4376, 4377, 4378, - 4400, 4403, 4390,10421, 4411, 4395, 4399, 4405, 4402, 4417, - 4416, 4432, 4420, 4410, 4421, 4444, 4445, 4427, 4446,10421, - 4436, 4469, 4438, 4448, 4460, 4465, 4459, 4470, 4486, 4471, + 4231, 4234, 4228, 4230, 4235, 4238, 4245, 4255, 4247, 4258, + 4253, 4263, 4257, 4260, 4270, 4273, 4274, 4283, 4278, 4287, + 4289, 4290,10542, 4300, 4301, 4293, 4298, 4308, 4304, 4309, + 4310, 4316, 4319, 4320, 4323, 4322, 4325, 4315, 4350, 4334, + 4328, 4351, 4348, 4358, 4346,10542, 4359, 4355, 4352, 4361, + 4349, 4369, 4386, 4390, 4396, 4393, 4401, 4400, 4385, 4404, + 4407, 4406,10542, 4409, 4411, 4413, 4430, 4412, 4415, 4425, + 4432, 4447, 4428,10542, 4445, 4431, 4446, 4438, 4434, 4437, + 4468, 4471, 4461,10542, 4473, 4464, 4459, 4462, 4480, 4476, + 4475, 4495, 4477, 4474, 4494, 4503, 4510, 4491, 4511,10542, - 4487, 4476,10421, 4475, 4477, 4482, 4505, 4492, 4496, 4506, - 4520, 4521, 4523, 4509, 4510, 4529, 4515,10421, 4517, 4541, - 4542, 4538, 4536, 4546, 4551, 4548, 4562, 4555, 4553, 4563, - 4561, 4566, 4565, 4578, 4587, 4580, 4582, 4575, 4586, 4605, - 4601, 4608, 4598, 4614, 4624, 4625, 4612, 4628, 4630, 4631, - 4620, 4613, 4633, 4651, 4653, 4654, 4649, 4665,10421, 4659, - 4663, 4661, 4644, 4656, 4655, 4657, 4684, 4673, 4678, 4694, - 4699, 4689, 4688, 4713, 4722, 4700, 4705, 4709, 4716, 4710, - 4718, 4725, 4721, 4724, 4729, 4733, 4734, 4731, 4758, 4740, - 4760, 4768, 4745, 4751, 4755, 4756, 4761, 4762, 4752, 4777, + 4506, 4532, 4513, 4519, 4507, 4522, 4529, 4530, 4542, 4551, + 4552, 4539,10542, 4534, 4558, 4556, 4570, 4549, 4564, 4555, + 4579, 4581, 4583, 4574, 4576, 4593, 4582,10542, 4585, 4587, + 4589, 4603, 4614, 4606, 4608, 4626, 4610, 4612, 4617, 4629, + 4623, 4625, 4639, 4637, 4641, 4652, 4644, 4651, 4650, 4646, + 4661, 4671, 4663, 4681, 4665, 4666, 4673, 4690, 4694, 4689, + 4685, 4675, 4692, 4686, 4709, 4710, 4705, 4719,10542, 4711, + 4721, 4717, 4713, 4703, 4729, 4730, 4727, 4748, 4735, 4742, + 4746, 4753, 4744, 4764, 4765, 4754, 4778, 4766, 4768, 4775, + 4781, 4769, 4777, 4771, 4804, 4795, 4791, 4783, 4792, 4794, - 4789, 4791, 4779, 4786, 4784, 4799, 4808, 4804, 4806, 4801, - 4797, 4811, 4802, 4838,10421, 4816, 4822, 4831, 4825, 4832, - 4850, 4851, 4835, 4849, 4842, 4858, 4861, 4859, 4870, 4860, - 4871, 4872, 4875, 4865, 4879,10421, 4876,10421, 4883, 4891, - 4899, 4910, 4892,10421, 4909,10421, 4908, 4913, 4898, 4901, - 4916,10421, 4921, 4925, 4922, 4920, 4930, 4933, 4938, 4937, - 4935, 4940, 4941, 4968, 4965, 4961, 4956, 4960, 4951, 4959, - 4983, 4977, 4971, 4985, 4981, 4994, 4995, 4980, 5004, 4987, - 5001, 5002, 5011, 5006, 5014,10421, 5024, 5027, 5021, 5032, - 5023, 5017, 5029, 5048, 5031, 5028, 5059, 5044, 5054, 5057, + 4822, 4806, 4817, 4831, 4810, 4813, 4816, 4819, 4826, 4814, + 4821, 4824, 4853, 4857, 4844, 4848, 4849, 4864, 4868, 4865, + 4869, 4866, 4859, 4876, 4886, 4896,10542, 4887, 4877, 4892, + 4890, 4895, 4889, 4903, 4923, 4906, 4914, 4925, 4919, 4932, + 4935, 4920, 4926, 4922, 4937, 4933, 4943,10542, 4938,10542, + 4934, 4963, 4971, 4950, 4949,10542, 4973,10542, 4975, 4974, + 4964, 4965, 4970,10542, 4976, 4966, 4984, 4985, 4989, 5014, + 4995, 4996, 4999, 5019, 5006, 5030, 5026, 5023, 5011, 5013, + 5033, 5041, 5038, 5021, 5025, 5044, 5048, 5064, 5065, 5047, + 5071, 5051, 5060, 5066, 5076, 5062, 5078,10542, 5082, 5092, - 5063, 5056, 5064, 5058, 5071, 5083, 5084, 5062, 5098,10421, - 5085, 5097, 5087, 5096,10421, 5103, 5089, 5116, 5118, 5093, - 5104, 5112, 5125, 5120, 5114, 5124, 5130, 5155, 5142, 5133, - 5153,10421, 5157, 5159, 5143, 5171, 5162, 5151, 5176, 5181, - 5182, 5178, 5189, 5186, 5191, 5184, 5192, 5185, 5195, 5217, - 5199, 5212, 5226, 5222, 5230, 5205, 5224, 5233, 5231, 5216, - 5218, 5221, 5232, 5248, 5250, 5254, 5251, 5245, 5267, 5272, - 5257, 5239,10421, 5273, 5275, 5277, 5255, 5266, 5289, 5288, - 5292, 5304, 5282, 5302,10421, 5318, 5300, 5316, 5310, 5323, - 5313, 5312, 5317, 5336, 5333, 5331, 5349, 5350, 5345,10421, + 5084, 5096, 5086, 5094, 5100, 5098, 5106, 5105, 5115, 5121, + 5111, 5129, 5134, 5127, 5132, 5135, 5138, 5141, 5156, 5150, + 5157,10542, 5152, 5160, 5153, 5163,10542, 5173, 5147, 5174, + 5180, 5177, 5167, 5188, 5183, 5194, 5193, 5197, 5196, 5222, + 5219, 5212, 5223,10542, 5218, 5224, 5206, 5232, 5192, 5210, + 5237, 5246, 5243, 5256, 5259, 5252, 5258, 5253, 5247, 5249, + 5251, 5269, 5282, 5286, 5287, 5283, 5294, 5274, 5295, 5291, + 5298, 5284, 5285, 5289, 5299, 5290, 5293, 5309, 5310, 5313, + 5329, 5337, 5322, 5335,10542, 5331, 5332, 5334, 5350, 5352, + 5351, 5353, 5349, 5354, 5381, 5374,10542, 5385, 5366, 5384, - 5351,10421, 5340, 5367, 5330, 5364, 5363, 5369, 5376, 5374, - 5372, 5381, 5377, 5392, 5402, 5386, 5394, 5406, 5397, 5408, - 5409, 5428, 5384, 5419, 5411, 5412, 5422, 5427, 5432, 5456, - 5445, 5449,10421,10421, 5435, 5439, 5462, 5466, 5454, 5455, - 5473, 5479, 5483, 5481, 5484, 5477, 5485, 5514,10421, 5501, - 5505, 5496, 5511, 5510, 5490, 5508, 5527, 5504, 5528, 5522, - 5539, 5534,10421, 5530, 5532, 5544, 5535, 5549, 5561,10421, - 5556,10421, 5551, 5553, 5555, 5557, 5563, 5560, 5573, 5580, - 5581, 5579, 5584, 5602, 5608, 5609, 5607, 5592, 5612, 5595, - 5599, 5611, 5614, 5618, 5629, 5606, 5624, 5625,10421, 5627, + 5376, 5390, 5377, 5393, 5371, 5369, 5396, 5406, 5417, 5416, + 5410,10542, 5415,10542, 5402, 5433, 5431, 5438, 5429, 5422, + 5442, 5439, 5434, 5451, 5454, 5466, 5461, 5452, 5472, 5456, + 5460, 5480, 5463, 5483, 5485, 5490, 5484, 5498, 5481, 5493, + 5496, 5499, 5502, 5535, 5510, 5512,10542,10542, 5509, 5520, + 5526, 5528, 5530, 5539, 5551, 5549, 5558, 5554, 5542, 5547, + 5545, 5589,10542, 5566, 5573, 5522, 5577, 5578, 5601, 5581, + 5598, 5606, 5597, 5596, 5608, 5605,10542, 5593, 5600, 5617, + 5609, 5636, 5623,10542, 5626,10542, 5624, 5627, 5628, 5640, + 5625, 5633, 5649, 5650, 5651, 5644, 5654, 5679, 5661, 5670, - 5626, 5644, 5642, 5639, 5655, 5656, 5653, 5641,10421, 5638, - 5654, 5669, 5665, 5670, 5678, 5674, 5667, 5676, 5684, 5686, - 5691, 5690, 5696,10421, 5688, 5689, 5715, 5712, 5701, 5720, - 5714, 5718, 5730,10421, 5727, 5722, 5738, 5737, 5728, 5741, - 5747, 5736, 5739, 5742, 5744, 5767, 5768, 5766, 5764, 5763, - 5774, 5787, 5765, 5792, 5781, 5783, 5780, 5757, 5790,10421, - 5799, 5801, 5802, 5800, 5810, 5831, 5818, 5838, 5822, 5835, - 5824, 5840, 5845, 5829, 5842, 5843, 5841, 5848, 5858, 5851, - 10421, 5860, 5856, 5881, 5875, 5857, 5883, 5888, 5869, 5887, - 5893, 5879, 5876, 5890, 5899, 5910, 5900, 5903, 5921, 5898, + 5677, 5669, 5683, 5667, 5666, 5671, 5692, 5686, 5706, 5681, + 5689, 5694,10542, 5702, 5695, 5714, 5719, 5708, 5720, 5726, + 5727, 5711,10542, 5729, 5735, 5745, 5737, 5742, 5723, 5741, + 5747, 5746, 5743, 5752, 5770, 5768, 5769,10542, 5763, 5758, + 5788, 5779, 5771, 5793, 5794, 5797, 5801,10542, 5798, 5802, + 5807, 5810, 5805, 5812, 5816, 5813, 5809, 5824, 5827, 5830, + 5843, 5838, 5837, 5840, 5851, 5841, 5832, 5861, 5875, 5869, + 5871, 5858, 5860,10542, 5870, 5872, 5876, 5878, 5889, 5890, + 5896, 5900, 5904, 5906, 5905, 5914, 5919, 5903, 5908, 5913, + 5915, 5922, 5943, 5941,10542, 5948, 5927, 5953, 5950, 5932, - 5923, 5909, 5917, 5919, 5922, 5936, 5946,10421, 5928, 5938, - 5932, 5955, 5953, 5956, 5958, 5945, 5966, 5967, 5975, 5950, - 5989, 5972, 5973, 5996, 5987, 5981,10421,10421, 6004, 5980, - 6000,10421, 6002, 5985, 5994, 6010, 6018, 6013, 6015, 6028, - 6016, 6020, 6038, 6022, 6040,10421, 6049, 6036, 6055, 6031, - 6047, 6064, 6058,10421, 6050, 6075, 6071, 6067, 6070, 6065, - 6066, 6076, 6081, 6077, 6085, 6082, 6091, 6104, 6106, 6115, - 6094, 6108, 6116,10421, 6099, 6102, 6125, 6128, 6110, 6121, - 6138,10421, 6135, 6141, 6148, 6133, 6147, 6158, 6155, 6162, - 6164, 6150, 6165, 6168, 6183, 6170, 6174, 6176, 6143, 6166, + 5959, 5958, 5940, 5961, 5963, 5949, 5952, 5969, 5976, 5977, + 5987, 5970, 5997, 5975, 5980, 5979, 5988, 5993, 6001, 6005, + 6018,10542, 6034, 6003, 6020, 6025, 6022, 6026, 6036, 6037, + 6031, 6038, 6042, 6029, 6056, 6047, 6044, 6069, 6072, 6060, + 10542,10542, 6075, 6052, 6076,10542, 6079, 6068, 6081, 6071, + 6084, 6078, 6091, 6093, 6086, 6102, 6112, 6096, 6123, 6099, + 6115,10542, 6135, 6105, 6138, 6120, 6127, 6143, 6142,10542, + 6126, 6148, 6146, 6150, 6147, 6149, 6139, 6141, 6154, 6151, + 6176, 6162, 6166, 6184, 6193, 6199, 6175, 6181, 6194,10542, + 6177, 6178, 6204, 6201, 6186, 6211, 6202,10542, 6213, 6212, - 6189, 6197, 6186, 6207, 6208, 6214,10421, 6203, 6211, 6205, - 6215, 6219,10421, 6228, 6248, 6213,10421, 6238, 6224, 6232, - 6241, 6249,10421, 6244, 6254, 6245, 6259, 6236, 6267, 6247, - 6271, 6270, 6263, 6272, 6268, 6266,10421, 6277, 6283, 6274, - 10421, 6288, 6306, 6303, 6308, 6293, 6316, 6311, 6309, 6315, - 6318,10421, 6319,10421, 6320, 6310, 6325,10421, 6343, 6344, - 6334, 6331, 6348, 6354, 6358, 6361, 6360, 6342, 6365, 6349, - 6353, 6369, 6388, 6370, 6350, 6389, 6384, 6390,10421, 6406, - 6385, 6396, 6399, 6394, 6409, 6413, 6412, 6417, 6423, 6429, - 10421,10421, 6379,10421, 6416, 6431, 6432, 6436,10421, 6439, + 6233, 6229, 6206, 6218, 6242, 6236, 6248, 6228, 6237, 6231, + 6260, 6261, 6262, 6263, 6258, 6253, 6257, 6286, 6280, 6267, + 6269, 6296,10542, 6259, 6290, 6284, 6297, 6303,10542, 6305, + 6319, 6317,10542, 6320, 6295, 6311, 6313, 6331,10542, 6322, + 6332, 6323, 6338, 6326, 6342, 6333, 6346, 6345, 6337, 6347, + 6349, 6358,10542, 6359, 6360, 6363,10542, 6372, 6376, 6357, + 6380, 6369, 6393, 6385, 6387, 6394, 6396,10542, 6403,10542, + 6398, 6397, 6410,10542, 6414, 6417, 6428, 6413, 6422, 6434, + 6437, 6440, 6445, 6427, 6441, 6430, 6432, 6458, 6460, 6457, + 6453, 6454, 6455, 6469,10542, 6485, 6461, 6467, 6482, 6475, - 6443, 6458, 6444, 6459, 6462, 6449, 6468, 6465,10421, 6472, - 6476,10421, 6455, 6474, 6488, 6479, 6483, 6475, 6489, 6495, - 6510, 6487, 6486, 6500, 6503, 6514, 6502, 6522, 6506, 6547, - 6517, 6550,10421, 6523, 6534, 6539, 6532, 6536, 6544, 6559, - 6555, 6545,10421, 6563, 6571, 6558, 6570, 6581,10421, 6584, - 10421, 6583, 6585, 6587, 6578, 6590, 6611,10421, 6602, 6605, - 6613, 6596, 6620, 6614, 6628, 6629, 6600, 6612, 6615, 6642, - 6639, 6637, 6636, 6658, 6643,10421, 6640, 6654, 6653, 6672, - 6673, 6671, 6661, 6663, 6678, 6679, 6685, 6675, 6681, 6691, - 6692, 6695, 6706, 6708, 6710, 6703,10421, 6709, 6716, 6724, + 6492, 6490, 6489, 6484, 6502, 6508,10542,10542, 6504,10542, + 6511, 6509, 6517, 6523,10542, 6500, 6516, 6513, 6520, 6544, + 6547, 6528, 6551, 6548,10542, 6553, 6557,10542, 6536, 6555, + 6567, 6540, 6562, 6543, 6570, 6576, 6578, 6572, 6583, 6586, + 6585, 6589, 6581, 6582, 6596, 6624, 6603, 6627,10542, 6612, + 6608, 6609, 6615, 6622, 6617, 6638, 6642, 6623,10542, 6650, + 6659, 6639, 6658, 6645,10542, 6653,10542, 6660, 6666, 6664, + 6669, 6673, 6674, 6686, 6677,10542, 6681, 6685, 6695, 6680, + 6704, 6712, 6710, 6711, 6700, 6702, 6703, 6722, 6727, 6721, + 6713, 6751, 6736,10542, 6737, 6739, 6743, 6735, 6757, 6749, - 6711, 6746, 6727, 6720, 6733,10421, 6737, 6752, 6753,10421, - 6748, 6742, 6741, 6763, 6747, 6760, 6764, 6754, 6768, 6769, - 6771, 6789,10421, 6787, 6788, 6781, 6797, 6798, 6795, 6805, - 10421,10421, 6827,10421, 6811, 6784, 6820, 6818, 6812, 6831, - 6841, 6834, 6842, 6830, 6832, 6845, 6847, 6853,10421, 6858, - 6860, 6859, 6888, 6870, 6876, 6879, 6883, 6869,10421,10421, - 6884, 6897, 6886, 6890, 6893, 6880, 6887, 6904, 6921, 6900, - 6902, 6925, 6938,10421, 6931, 6914, 6932, 6917,10421, 6915, - 6941, 6920, 6939, 6944, 6933, 6929, 6955, 6964, 6952, 6977, - 6976, 6968, 6979, 6967, 6960, 6970, 6978, 6973, 6993, 6995, + 6750, 6747, 6762, 6763, 6770, 6761, 6785, 6769, 6786, 6780, + 6790, 6794, 6795, 6784,10542, 6805, 6807, 6808, 6812, 6831, + 6811, 6815, 6828,10542, 6829, 6839, 6842,10542, 6832, 6853, + 6843, 6848, 6836, 6858, 6859, 6862, 6857, 6869, 6872, 6885, + 10542, 6879, 6880, 6874, 6888, 6897, 6886, 6898,10542,10542, + 6917,10542, 6905, 6903, 6912, 6910, 6906, 6925, 6908, 6932, + 6940, 6924, 6929, 6943, 6944, 6933,10542, 6938, 6778, 6950, + 6983, 6870, 6967, 6961, 6958, 6959,10542,10542, 6980, 6986, + 6973, 6981, 6988, 6978, 6977, 6997, 6991, 7002, 6998, 7006, + 7007,10542, 7015, 7000, 7017, 7016,10542, 7010, 7026, 7018, - 6991, 6989,10421, 7006, 7002, 7004, 7005, 7003, 7010, 7019, - 7018, 7015, 7022, 7033,10421, 7025,10421, 7031, 7041, 7050, - 7045, 7037, 7059, 7058, 7066, 7049, 7051, 7065, 7060, 7080, - 7088, 7089, 7094, 7082, 7083, 7086, 7100,10421, 7095, 7102, - 7110, 7105, 7112, 7119, 7115,10421, 7118, 7113, 7116, 7122, - 7135, 7148, 7132, 7152, 7137, 7153, 7139, 7160, 7156, 7157, - 7144, 7159, 7150, 7162, 7169,10421, 7185, 7170, 7172, 7173, - 7175, 7196, 7192, 7202, 7206, 7204, 7189, 7194, 7211,10421, - 7199, 7218, 7224, 7179,10421, 7219, 7215, 7220, 7229, 7223, - 7248, 7233, 7250, 7238, 7246,10421, 7258, 7242, 7256, 7245, + 7025, 7027, 7033, 7034, 7029, 7052, 7042, 7055, 7061, 7056, + 7067, 7048, 7047, 7062, 7058, 7068, 7076, 7077, 7078, 7086, + 10542, 7093, 7083, 7092, 7097, 7095, 7082, 7107, 7094, 7100, + 7104, 7135,10542, 7117,10542, 7123, 7127, 7131, 7138, 7128, + 7146, 7142, 7153, 7144, 7152, 7158, 7164, 7159, 7151, 7168, + 7161, 7166, 7167, 7179, 7197,10542, 7189, 7195, 7199, 7193, + 7190, 7207, 7206,10542, 7208, 7194, 7210, 7219, 7212, 7215, + 7217, 7218, 7225, 7247, 7233, 7244, 7250, 7251, 7239, 7245, + 7255, 7242, 7261, 7265, 7266,10542, 7257, 7264, 7268, 7267, + 7272, 7291, 7292, 7270, 7300, 7302, 7284, 7293, 7305,10542, - 7249, 7260, 7266, 7265, 7273, 7275, 7293, 7294,10421, 7301, - 7286, 7299, 7302, 7290, 7296, 7289, 7322, 7306,10421, 7325, - 7333, 7335, 7328, 7308, 7324, 7323, 7331, 7350, 7342, 7348, - 7336, 7351, 7363, 7352, 7359, 7367, 7373, 7374, 7370, 7386, - 7390, 7385,10421, 7378,10421, 7387, 7393, 7391, 7401, 7414, - 7395, 7405, 7403, 7416,10421, 7410, 7424, 7421, 7412, 7435, - 10421, 7433, 7430, 7432, 7437,10421, 7452, 7451, 7441, 7454, - 7458, 7468,10421, 7470, 7472, 7479, 7482, 7485, 7477, 7487, - 7476, 7488, 7480, 7491, 7481, 7493, 7496, 7508, 7519,10421, - 7506, 7498, 7526, 7525, 7529, 7527, 7531, 7518, 7535, 7541, + 7294, 7312, 7310, 7318,10542, 7295, 7311, 7317, 7332, 7329, + 7324, 7322, 7343, 7335, 7337,10542, 7346, 7334, 7356, 7351, + 7339, 7353, 7361, 7359, 7368, 7373, 7370, 7384,10542, 7394, + 7379, 7388, 7396, 7380, 7395, 7389, 7415, 7412, 7399,10542, + 7414, 7422, 7428, 7421, 7418, 7435, 7413, 7423, 7448, 7442, + 7451, 7432, 7440, 7455, 7444, 7459, 7461, 7463, 7467, 7452, + 7478, 7482, 7477,10542, 7469,10542, 7480, 7483, 7486, 7503, + 7511, 7497, 7501, 7510, 7514,10542, 7505, 7519, 7517, 7516, + 7513,10542, 7533, 7537, 7539, 7538,10542, 7548, 7547, 7549, + 7543, 7556, 7558,10542, 7557, 7564, 7563, 7576, 7578, 7579, - 7537,10421, 7542, 7528, 7551, 7552, 7546, 7555, 7556, 7565, - 7585, 7575, 7583, 7573, 7569, 7574, 7589, 7586, 7590,10421, - 7592, 7579, 7600, 7614, 7619, 7615, 7622,10421, 7616,10421, - 7612, 7621, 7627, 7630, 7636,10421, 7641, 7642, 7603, 7639, - 10421,10421, 7634, 7652, 7646, 7659, 7661,10421,10421, 7674, - 10421, 7657,10421, 7662, 7664,10421,10421, 7672, 7655, 7666, - 7673, 7685, 7683,10421, 7692,10421, 7699, 7686, 7694, 7682, - 7689, 7691,10421, 7701, 7712, 7717, 7718, 7724,10421, 7716, - 7722, 7721, 7739, 7719, 7725,10421, 7735, 7733, 7734, 7723, - 10421, 7754, 7765, 7764, 7752, 7762, 7759, 7768, 7774, 7761, + 7587, 7575, 7591, 7581, 7583, 7580, 7600, 7603, 7590, 7606, + 10542, 7605, 7610, 7612, 7616, 7617, 7614, 7620, 7615, 7630, + 7625, 7632,10542, 7641, 7631, 7633, 7643, 7640, 7660, 7649, + 7650, 7670, 7665, 7673, 7648, 7667, 7676, 7678, 7658, 7684, + 10542, 7677, 7672, 7697, 7712, 7713, 7701, 7715,10542, 7705, + 10542, 7704, 7706, 7722, 7716, 7724,10542, 7727, 7731, 7700, + 7736,10542,10542, 7744, 7740, 7743, 7738, 7747,10542,10542, + 7759,10542, 7742,10542, 7752, 7746,10542,10542, 7763, 7750, + 7754, 7757,10542, 7775, 7783, 7785,10542, 7791,10542, 7797, + 7774, 7795, 7782, 7784, 7799,10542, 7781, 7810, 7802, 7805, - 7763, 7766, 7779, 7767, 7788, 7780, 7783, 7809, 7813, 7816, - 7805, 7800, 7814, 7820, 7822, 7824, 7826, 7810, 7827, 7835, - 7837, 7840, 7833, 7815, 7859, 7863, 7857, 7869, 7860, 7864, - 7861, 7850, 7874, 7882, 7883, 7878, 7880, 7881, 7866, 7884, - 7899, 7890, 7901, 7891, 7918, 7909, 7922, 7916, 7917, 7919, - 10421, 7906, 7931, 7933, 7935, 7940, 7950, 7952, 7937, 7963, - 7965,10421, 7967,10421, 7969, 7958, 7960, 7959, 7973,10421, - 7979, 7983, 7980, 7984, 7982, 7992, 7987, 7993, 7990, 8003, - 8022,10421, 8020, 8025, 8018, 8011, 8027, 8034,10421, 8028, - 8041, 8026, 8038, 8039, 8035, 8031, 8049, 8052, 8058, 8053, + 7816,10542, 7803, 7811, 7822, 7839, 7818, 7827,10542, 7835, + 7845, 7831, 7833,10542, 7852, 7856, 7854, 7843, 7855, 7844, + 7860, 7866, 7862, 7871, 7878, 7869, 7877, 7879, 7889, 7873, + 7902, 7907, 7908, 7898, 7909, 7895, 7914, 7917, 7922, 7926, + 7903, 7912, 7916, 7931, 7935, 7904, 7933, 7938, 7948, 7952, + 7950, 7963, 7954, 7960, 7958, 7944, 7968, 7949, 7962, 7972, + 7965, 7980, 7976, 7978, 7991, 7984, 7992, 7988, 8011, 8000, + 8015, 8005, 8007, 8009,10542, 7999, 8001, 8025, 8027, 8031, + 8041, 8042, 8053, 8055, 8058,10542, 8060,10542, 8062, 8038, + 8065, 8051, 8052,10542, 8044, 8066, 8073, 8078, 8072, 8082, - 8068, 8077, 8078, 8061, 8064, 8080,10421, 8087, 8089, 8095, - 8085, 8088, 8083, 8073, 8097, 8091, 8093, 8101, 8107, 8109, - 8115, 8112, 8130, 8138, 8117, 8139, 8131,10421, 8118,10421, - 8134, 8128, 8148, 8149, 8145, 8146, 8159, 8144,10421,10421, - 8161, 8162, 8182, 8183, 8176, 8166, 8192, 8186, 8187, 8190, - 10421, 8189, 8200, 8193, 8201, 8195, 8210,10421, 8218, 8214, - 8216, 8198,10421, 8226, 8221, 8231, 8239, 8244, 8227, 8247, - 8250, 8242, 8243, 8237, 8248, 8252,10421,10421,10421,10421, - 8271, 8258, 8256, 8274, 8275, 8276, 8281, 8282, 8283, 8284, - 8273, 8279,10421, 8296,10421,10421, 8299,10421, 8300, 8298, + 8094, 8086, 8083, 8089, 8103,10542, 8108, 8114, 8105, 8093, + 8109, 8117,10542, 8128, 8124, 8120, 8122, 8125, 8141, 8135, + 8136, 8139, 8142, 8134, 8149, 8159, 8160, 8151, 8155, 8166, + 10542, 8174, 8179, 8193, 8176, 8177, 8175, 8170, 8178, 8186, + 8196, 8187, 8188, 8204, 8198, 8206, 8205, 8225, 8211, 8228, + 8212,10542, 8221,10542, 8220, 8222, 8231, 8239, 8237, 8245, + 8255, 8251, 8254,10542,10542, 8256, 8257, 8247, 8261, 8264, + 8262, 8263, 8274, 8278, 8290,10542, 8281, 8282, 8289, 8300, + 8299, 8298,10542, 8303, 8308, 8309, 8310,10542, 8307, 8305, + 8335, 8332, 8313, 8323, 8343, 8344, 8338, 8336, 8341, 8331, - 8308, 8314, 8309, 8315, 8321,10421, 8318,10421, 8325, 8332, - 8319, 8338, 8343, 8339, 8331, 8347, 8346, 8349, 8345, 8351, - 8367, 8370, 8378, 8368, 8377, 8384, 8385,10421,10421, 8373, - 8387, 8388, 8393, 8394, 8396, 8389, 8397, 8404, 8402, 8410, - 8412, 8390, 8411, 8438, 8441, 8417, 8428, 8442,10421, 8436, - 8445, 8444,10421, 8439,10421, 8448, 8452, 8455, 8446, 8449, - 8472, 8474, 8484, 8477, 8487,10421,10421, 8470, 8463, 8489, - 10421,10421, 8475, 8473, 8476, 8479, 8505, 8500, 8490,10421, - 8515, 8517, 8527, 8503, 8514, 8531, 8516,10421, 8522,10421, - 8513, 8534, 8539, 8521, 8552, 8555, 8541, 8557, 8563, 8561, + 8348,10542,10542,10542,10542, 8356, 8345, 8355, 8361, 8360, + 8372, 8376, 8381, 8382, 8383, 8367, 8366, 8380,10542, 8396, + 10542,10542, 8393,10542, 8397, 8387, 8400, 8403, 8407, 8406, + 8413,10542, 8416,10542, 8430, 8432, 8424, 8436, 8441, 8440, + 8425, 8446, 8442, 8450, 8429, 8443, 8459, 8460, 8474, 8463, + 8476, 8479, 8480,10542,10542, 8470, 8484, 8482, 8494, 8486, + 8488, 8490, 8500, 8492, 8509, 8489, 8507, 8516, 8505, 8533, + 8534, 8525, 8523, 8537,10542, 8531, 8539, 8542,10542, 8528, + 10542, 8541, 8543, 8549, 8529, 8550, 8569, 8570, 8558, 8571, + 8577,10542,10542, 8565, 8589, 8581,10542,10542, 8572, 8568, - 8545, 8562,10421, 8565, 8558,10421, 8580, 8573, 8577, 8560, - 8579, 8583, 8584,10421, 8590, 8594, 8595, 8602,10421, 8609, - 8610, 8608, 8606,10421, 8616,10421, 8603, 8619, 8620, 8649, - 8626,10421, 8607, 8630,10421, 8625, 8628, 8645, 8653, 8635, - 8647,10421, 8661, 8646,10421, 8643, 8666, 8667, 8669, 8662, - 8671, 8665, 8679, 8672, 8684, 8681, 8696,10421,10421, 8687, - 8680, 73, 8715, 8693, 8682, 8698, 8695, 8708, 8692, 8722, - 8721,10421,10421, 8725,10421, 8723, 8729,10421, 8709, 8735, - 8736, 8749, 8728, 8750, 8727, 8755, 8746, 8756, 8775, 8757, - 8753, 8773,10421, 8790, 8792, 8782, 8779, 8787, 8802, 8806, + 8573, 8575, 8601, 8596, 8592,10542, 8604, 8608, 8621, 8597, + 8610, 8626, 8614,10542, 8619,10542, 8609, 8623, 8632, 8618, + 8647, 8652, 8636, 8639, 8656, 8658, 8654, 8640, 8659,10542, + 8660, 8663,10542, 8673, 8668, 8674, 8670, 8666, 8672, 8679, + 10542, 8701, 8686, 8708, 8709,10542, 8710, 8707, 8712, 8705, + 10542, 8716,10542, 8698, 8715, 8721, 8724, 8728,10542, 8703, + 8726, 8748,10542, 8727, 8752, 8756, 8754, 8745, 8750,10542, + 8759, 8743,10542, 8742, 8764, 8765, 8768, 8767, 8771, 8774, + 8778, 8783, 8779, 8780, 8795,10542,10542, 8805, 8798, 73, + 8813, 8788, 8792, 8800, 8810, 8807, 8804, 8814, 8817,10542, - 8809, 8811, 8800, 8799, 8798, 8794, 8808, 8819, 8813, 8836, - 8833, 8828, 8830, 8834,10421, 8844, 8852, 8853, 8843, 8862, - 8859, 8846,10421, 8866, 8860, 8872, 8869,10421, 8876, 8873, - 8875, 8879, 8881,10421, 8877, 8878, 8897, 8894, 8901, 8893, - 8896, 8899, 8909, 8918,10421, 8903, 8922, 8915,10421,10421, - 10421, 8927, 8933, 8921,10421, 8938, 8926, 8925, 8937,10421, - 8944, 8942, 8945,10421,10421,10421, 8936, 8963, 8964,10421, - 8954, 8796,10421, 8958,10421, 8959,10421, 8971, 8978, 8965, - 8985,10421, 8982, 8962, 8990, 8995,10421, 8979, 9008, 9011, - 9006, 8993, 8997, 9014,10421, 9023, 9020, 9022, 9028, 9012, + 10542, 8823,10542, 8825, 8832,10542, 8821, 8839, 8848, 8836, + 8852, 8840, 8841, 8837, 8865, 8856, 8871, 8863, 8867, 8864, + 10542, 8900, 8907, 8884, 8887, 8888, 8892, 8895, 8904, 8909, + 8890, 8913, 8901, 8898, 8912, 8930, 8919, 8936, 8920, 8922, + 8923, 8932,10542, 8944, 8954, 8955, 8945, 8961, 8967, 8948, + 10542, 8964, 8969, 8974, 8972,10542, 8978, 8971, 8975, 8983, + 8981, 8986,10542, 8979, 8989, 8992, 9005, 9003, 8996, 9007, + 8999, 9000, 9033,10542, 9008, 9016, 9027,10542,10542,10542, + 9024, 9037, 9026,10542, 9038, 9030, 9034, 9028,10542, 9049, + 9041, 8809, 9051,10542,10542,10542, 9045, 9057, 9060,10542, - 9017, 9024, 9031, 9035, 9037, 9034, 9048,10421, 9056, 9061, - 9062, 9064, 9049, 9054, 9055,10421, 9051,10421, 9073,10421, - 9072, 9077, 9088, 9075, 9094, 9089, 9091, 9099, 9104, 9093, - 9118, 9102, 9096, 9098, 9108, 9122, 9120,10421,10421, 9148, - 9128,10421, 9127, 9144,10421, 9129,10421, 9152,10421, 9137, - 9141, 9154, 9145, 9158,10421,10421, 9162, 9147, 9156, 9175, - 9155, 9173, 9168,10421, 9190, 9179, 9177, 9176,10421, 9202, - 10421, 9181, 9203, 9194,10421, 9185, 9209, 9210, 9198, 9195, - 9216, 9200, 9222, 9212, 9224, 9214, 9234, 9225, 9244, 9238, - 9247, 9251, 9255,10421,10421,10421, 9236, 9237, 9252, 9266, + 9054, 9071,10542, 9067,10542, 9061,10542, 9075, 9078, 9084, + 9086,10542, 9087, 9090, 9077, 9119,10542, 9099, 9100, 9108, + 9106, 9101, 9097, 9124,10542, 9098, 9126, 9127, 9134, 9118, + 9125, 9117, 9135, 9139, 9144, 9143, 9149,10542, 9151, 9164, + 9167, 9159, 9154, 9162, 9165,10542, 9163,10542, 9174,10542, + 9166, 9175, 9184, 9181, 9189, 9187, 9186, 9201, 9212, 9199, + 9220, 9213, 9200, 9207, 9223, 9229, 9216,10542,10542, 9242, + 9224,10542, 9225, 9241,10542, 9232,10542, 9254,10542, 9239, + 9245,10542, 9252, 9247, 9259,10542,10542, 9267, 9250, 9262, + 9278, 9260, 9275, 9266,10542, 9291, 9281, 9277, 9276,10542, - 9264, 9260, 9258,10421, 9263, 9269, 9265, 9279, 9291, 9282, - 9288,10421, 9277, 9283, 9280, 9295, 9302, 9292, 9296, 9304, - 10421, 9314, 9317, 9320, 9316, 9310, 9325, 9333, 9334, 9336, - 9342, 9332, 9323, 9351, 9348,10421,10421, 9354, 9339,10421, - 9356, 9358,10421, 9343,10421, 9346, 9352, 9365, 9364, 9366, - 10421, 9371, 9361, 9377, 9376,10421, 9379, 9388, 9400, 9402, - 10421, 9389, 9382, 9385, 9391, 9403,10421,10421, 9398, 9420, - 10421, 9421, 9417, 9414, 9436, 9426, 9425, 9439, 9435,10421, - 9441, 9437, 9423, 9431, 9449, 9444, 9453,10421, 9465, 9455, - 9457, 9467,10421, 9461, 9469, 9472, 9470, 9488,10421, 9497, + 9304,10542, 9280, 9306, 9308,10542, 9287, 9289, 9311, 9317, + 9305, 9301, 9324, 9314, 9328, 9319, 9331, 9326, 9322, 9330, + 9329, 9344, 9351, 9357, 9361,10542,10542,10542, 9353, 9347, + 9368, 9369, 9370, 9380, 9358,10542, 9374, 9382, 9378, 9371, + 9396, 9394, 9393,10542, 9387, 9386, 9391, 9395, 9402, 9400, + 9409, 9406,10542, 9424, 9428, 9430, 9427, 9420, 9435, 9437, + 9441, 9444, 9445, 9436, 9439, 9453, 9451,10542,10542, 9450, + 9442,10542, 9460, 9470,10542, 9454,10542, 9452, 9462, 9463, + 9464, 9487,10542, 9475, 9467, 9476, 9485,10542, 9478, 9497, + 9496, 9504,10542, 9489, 9513, 9490, 9500, 9516, 9523,10542, - 9478, 9480, 9503,10421, 9499, 9506, 9500,10421,10421,10421, - 9495, 9510, 9507,10421,10421,10421,10421, 9521, 9518, 9512, - 9528,10421, 9517,10421,10421, 9541, 9544, 9553, 9547, 9555, - 9545,10421, 9551, 9548, 9560, 9543, 9550,10421,10421, 9562, - 9546, 9559, 9576, 9565, 9574,10421,10421, 9570, 9578, 9592, - 9589, 9584,10421, 9582, 9597, 9604, 9601, 9606, 9613, 9614, - 9603, 9612, 9623, 9620, 9641, 9621, 9627, 9622, 9633, 9647, - 9634, 9651, 9660, 9650, 9657, 9658, 9648, 9659,10421,10421, - 9666,10421, 9667, 9662,10421, 9654,10421, 9676, 9682, 9688, - 9692,10421, 9695, 9696, 9697, 9700, 9675,10421, 9698, 9704, + 10542, 9508, 9518,10542, 9530, 9527, 9522, 9543, 9535, 9531, + 9541, 9537,10542, 9540, 9546, 9533, 9545, 9556, 9563, 9570, + 10542, 9569, 9560, 9562, 9564,10542, 9567, 9583, 9590, 9574, + 9588,10542, 9600, 9594, 9586, 9611,10542, 9598, 9620, 9606, + 10542,10542,10542, 9624, 9628, 9625,10542,10542,10542,10542, + 9630, 9626, 9617, 9637,10542, 9627,10542,10542, 9639, 9650, + 9661, 9640, 9663, 9664,10542, 9660, 9662, 9670, 9654, 9659, + 10542,10542, 9674, 9656, 9658, 9677, 9679, 9666, 9687,10542, + 10542, 9669, 9701, 9706, 9703, 9698,10542, 9697, 9711, 9717, + 9709, 9719, 9722, 9723, 9714, 9721, 9742, 9732, 9736, 9730, - 9705, 9699, 9694, 9690,10421, 9711, 9693, 9713, 9703, 9716, - 9724, 9740, 9742,10421, 9731, 9744,10421,10421, 9730, 9747, - 9726, 9753, 9737,10421, 9756, 9765, 9735, 9761, 9751, 9767, - 9768,10421, 9781, 9763,10421,10421, 9792, 9774,10421,10421, - 9776, 9771,10421,10421,10421,10421,10421,10421,10421,10421, - 9795, 9801,10421,10421, 9793, 9805, 9807,10421, 9809,10421, - 9790, 9812, 9811, 9810,10421, 9827,10421, 9820, 9824, 9839, - 9823, 9831, 9848, 9832, 9834, 9837, 9840, 9838, 9854, 9851, - 9862, 9872, 9858, 9881, 9865, 9888, 9871, 9889,10421,10421, - 10421, 9883, 9873, 9895, 9896, 9902, 9906, 9903, 9909, 9898, + 9737, 9739, 9753, 9756, 9743, 9765, 9772, 9767, 9768, 9771, + 9759, 9770,10542,10542, 9776,10542, 9777, 9781,10542, 9766, + 10542, 9791, 9796, 9805, 9806,10542, 9807, 9809, 9810, 9812, + 9787,10542, 9811, 9815, 9816, 9817, 9818, 9801,10542, 9804, + 9822, 9808, 9824, 9814, 9837, 9840, 9854, 9858,10542, 9844, + 9860,10542,10542, 9843, 9862, 9842, 9871, 9848,10542, 9870, + 9867, 9849, 9869, 9864, 9884, 9887,10542, 9898, 9896,10542, + 10542, 9908, 9891,10542,10542, 9881, 9889,10542,10542,10542, + 10542,10542,10542,10542,10542, 9910, 9914,10542,10542, 9900, + 9919, 9920, 9921,10542, 9922,10542, 9901, 9929, 9939, 9925, - 9892, 9911, 9921, 9922, 9910, 9913, 9936, 9929, 9930, 9940, - 9946, 9931, 9947, 9950,10421, 9952, 9944, 9941, 9961,10421, - 9949,10421, 9948,10421,10421, 9965, 9979, 9973, 9963, 9988, - 9989, 9971, 9983, 9975, 9990, 9997,10421, 9999,10421,10421, - 10421, 9984, 9993,10421, 9987,10000,10421, 9998,10014,10010, - 10017,10020,10015,10031,10038,10035,10421,10421,10028,10032, - 10045,10039,10044,10056,10051,10062,10063,10069,10054,10058, - 10421,10080,10077,10084,10421,10083,10078,10079,10089,10093, - 10098,10096,10090,10421,10091,10421,10099,10119,10116,10110, - 10113,10109,10126,10133,10134,10421,10118,10140,10143,10149, + 10542, 9936,10542, 9930, 9944, 9949, 9956, 9946, 9959, 9951, + 9948, 9966, 9952, 9965, 9947, 9987, 9985, 9993, 9978, 9995, + 9982,10002, 9983,10008,10542,10542,10542,10542, 9992,10011, + 10007,10009,10015,10020,10016,10032,10022,10017,10036,10045, + 10046,10027,10038,10060,10042,10049,10057,10067,10054,10070, + 10071,10542,10075,10076,10063,10085,10542,10077,10542,10068, + 10542,10542,10093,10095,10097,10080,10111,10113,10100,10102, + 10098,10116,10110,10542,10128,10542,10542,10542,10109,10119, + 10542,10120,10127,10542,10125,10144,10132,10137,10140,10141, + 10157,10158,10156,10542,10542,10154,10152,10146,10169,10177, + + 10180,10185,10183,10189,10190,10172,10198,10542,10200,10197, + 10203,10542,10201,10187,10204,10207,10216,10213,10217,10210, + 10542,10218,10542,10220,10230,10243,10222,10232,10245,10253, + 10247,10260,10542,10229,10263,10257,10266,10270,10256,10279, + 10277,10265,10284,10293,10299,10294,10298,10283,10303,10288, + 10542,10309,10300,10542,10312,10313,10314,10323,10330,10542, + 10324,10328,10329,10336,10338,10345,10542,10343,10349,10346, + 10542,10354,10542,10542,10356,10358,10363,10362,10366,10542, + 10542,10542,10422,10429,10436,10443,10450,10457,10464, 102, + 10471,10478,10485,10492,10499,10506,10513,10520,10527,10534 - 10151,10158,10157,10153,10166,10168,10167,10175,10174,10176, - 10178,10177,10179,10421,10186,10188,10421,10187,10206,10193, - 10199,10215,10421,10217,10202,10203,10226,10223,10224,10421, - 10228,10232,10229,10421,10230,10421,10421,10241,10233,10242, - 10237,10240,10421,10421,10421,10301,10308,10315,10322,10329, - 10336,10343, 102,10350,10357,10364,10371,10378,10385,10392, - 10399,10406,10413 } ; -static const flex_int16_t yy_def[3664] = +static const flex_int16_t yy_def[3701] = { 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, + 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 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, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 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, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 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, - 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, + 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 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, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 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, - 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, + 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, - 3653, 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, + 3690, 3690, 3690, 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 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, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 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, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 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, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 3690, 3690, 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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, - 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, + 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 - 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 } ; -static const flex_int16_t yy_nxt[10488] = +static const flex_int16_t yy_nxt[10609] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 18, @@ -1638,7 +1650,7 @@ static const flex_int16_t yy_nxt[10488] = 59, 60, 61, 120, 22, 58, 59, 60, 61, 86, 22, 64, 65, 66, 64, 65, 66, 87, 160, 160, - 1358, 88, 85, 51, 119, 86, 51, 167, 167, 56, + 1368, 88, 85, 51, 119, 86, 51, 167, 167, 56, 120, 56, 170, 75, 76, 77, 78, 62, 22, 75, 76, 77, 78, 62, 22, 81, 82, 83, 67, 97, 86, 67, 19, 20, 21, 69, 70, 71, 19, 20, @@ -1668,7 +1680,7 @@ static const flex_int16_t yy_nxt[10488] = 134, 152, 169, 135, 169, 169, 86, 169, 86, 184, 136, 153, 86, 131, 195, 154, 155, 132, 182, 86, 174, 133, 174, 174, 166, 174, 206, 134, 86, 85, - 135, 85, 85, 86, 85, 336, 184, 136, 138, 1204, + 135, 85, 85, 86, 85, 336, 184, 136, 138, 1212, 85, 195, 139, 90, 183, 90, 90, 207, 90, 185, 165, 86, 140, 141, 90, 142, 86, 193, 194, 197, @@ -1679,27 +1691,27 @@ static const flex_int16_t yy_nxt[10488] = 342, 201, 86, 86, 198, 86, 208, 86, 210, 86, 143, 209, 86, 144, 86, 190, 344, 199, 86, 200, 145, 191, 202, 192, 146, 147, 203, 204, 201, 86, - 86, 211, 86, 208, 205, 210, 216, 3645, 209, 218, - 212, 3645, 86, 213, 86, 177, 177, 86, 86, 219, + 86, 211, 86, 208, 205, 210, 216, 3682, 209, 218, + 212, 3682, 86, 213, 86, 177, 177, 86, 86, 219, - 3645, 3645, 3645, 203, 204, 221, 214, 215, 211, 222, - 217, 205, 227, 3645, 86, 226, 218, 212, 86, 220, + 3682, 3682, 3682, 203, 204, 221, 214, 215, 211, 222, + 217, 205, 227, 3682, 86, 226, 218, 212, 86, 220, 213, 86, 224, 228, 229, 223, 219, 225, 86, 86, 86, 232, 221, 214, 215, 86, 222, 217, 86, 227, 230, 231, 226, 86, 235, 86, 220, 234, 233, 224, 228, 229, 223, 86, 225, 86, 236, 237, 232, 86, - 86, 242, 241, 3645, 3645, 247, 86, 230, 231, 86, - 86, 235, 238, 243, 234, 233, 239, 86, 3645, 86, + 86, 242, 241, 3682, 3682, 247, 86, 230, 231, 86, + 86, 235, 238, 243, 234, 233, 239, 86, 3682, 86, 86, 244, 240, 236, 237, 248, 86, 86, 242, 241, - 245, 250, 247, 249, 86, 255, 246, 253, 3645, 238, + 245, 250, 247, 249, 86, 255, 246, 253, 3682, 238, 243, 86, 251, 239, 86, 259, 252, 346, 244, 240, 86, 86, 248, 349, 256, 86, 260, 245, 250, 261, 249, 268, 255, 246, 253, 86, 264, 262, 269, 251, 86, 257, 259, 252, 258, 86, 86, 86, 265, 86, 86, 256, 270, 260, 272, 86, 261, 266, 268, 273, - 86, 271, 370, 264, 262, 269, 3645, 86, 257, 267, - 86, 258, 86, 86, 3645, 265, 86, 274, 3645, 270, + 86, 271, 370, 264, 262, 269, 3682, 86, 257, 267, + 86, 258, 86, 86, 3682, 265, 86, 274, 3682, 270, 164, 272, 164, 164, 266, 164, 273, 169, 271, 169, 169, 275, 169, 276, 86, 90, 267, 90, 90, 282, 90, 170, 278, 174, 274, 174, 174, 277, 174, 279, @@ -1708,1081 +1720,1095 @@ static const flex_int16_t yy_nxt[10488] = 285, 86, 86, 286, 288, 86, 282, 292, 291, 278, 86, 86, 86, 172, 277, 86, 279, 287, 289, 280, 293, 284, 86, 283, 290, 86, 281, 285, 295, 86, - 286, 288, 296, 304, 292, 291, 303, 305, 3645, 308, + 286, 288, 296, 304, 292, 291, 303, 305, 3682, 308, 310, 373, 306, 309, 307, 314, 86, 293, 86, 297, - 86, 290, 86, 312, 3645, 86, 86, 311, 3645, 296, + 86, 290, 86, 312, 3682, 86, 86, 311, 3682, 296, 304, 86, 86, 303, 86, 86, 308, 310, 86, 86, 309, 307, 314, 86, 315, 316, 297, 298, 317, 321, 318, 313, 299, 379, 311, 86, 86, 300, 86, 322, - 323, 86, 86, 301, 302, 319, 86, 329, 320, 3645, - 86, 315, 316, 3645, 298, 317, 321, 318, 313, 299, - 86, 86, 86, 333, 300, 86, 322, 323, 3645, 86, + 323, 86, 86, 301, 302, 319, 86, 329, 320, 3682, + 86, 315, 316, 3682, 298, 317, 321, 318, 313, 299, + 86, 86, 86, 333, 300, 86, 322, 323, 3682, 86, 301, 302, 319, 330, 329, 320, 324, 331, 337, 325, - 86, 326, 339, 334, 345, 86, 341, 3645, 86, 86, - 333, 352, 86, 327, 335, 328, 340, 343, 86, 3645, - 330, 380, 86, 324, 331, 337, 325, 86, 326, 3645, + 86, 326, 339, 334, 345, 86, 341, 3682, 86, 86, + 333, 352, 86, 327, 335, 328, 340, 343, 86, 3682, + 330, 380, 86, 324, 331, 337, 325, 86, 326, 3682, 382, 345, 347, 341, 86, 86, 350, 348, 352, 86, 327, 335, 328, 340, 343, 351, 353, 354, 356, 357, - 86, 86, 360, 86, 3645, 358, 355, 86, 359, 347, + 86, 86, 360, 86, 3682, 358, 355, 86, 359, 347, 362, 86, 86, 350, 348, 361, 86, 86, 86, 86, 86, 86, 351, 353, 354, 356, 357, 86, 366, 360, 86, 363, 358, 355, 364, 359, 367, 362, 86, 365, - 374, 368, 361, 369, 3645, 86, 377, 86, 86, 375, + 374, 368, 361, 369, 3682, 86, 377, 86, 86, 375, 86, 371, 372, 381, 86, 366, 376, 378, 363, 383, 86, 86, 384, 367, 86, 385, 86, 374, 368, 386, 369, 86, 387, 377, 86, 86, 375, 86, 371, 372, - 381, 86, 389, 376, 378, 390, 383, 400, 3645, 384, + 381, 86, 389, 376, 378, 390, 383, 400, 3682, 384, 392, 86, 385, 393, 86, 388, 86, 395, 394, 396, - 397, 398, 391, 401, 86, 86, 3645, 86, 404, 402, + 397, 398, 391, 401, 86, 86, 3682, 86, 404, 402, - 86, 403, 390, 170, 86, 86, 3645, 392, 86, 86, + 86, 403, 390, 170, 86, 86, 3682, 392, 86, 86, 393, 411, 388, 86, 395, 394, 396, 397, 398, 391, 399, 86, 405, 86, 86, 86, 402, 406, 403, 407, - 86, 408, 409, 410, 86, 86, 414, 412, 86, 3645, + 86, 408, 409, 410, 86, 86, 414, 412, 86, 3682, 86, 413, 419, 86, 86, 417, 416, 399, 418, 405, 426, 86, 421, 86, 406, 86, 407, 422, 408, 409, 410, 86, 86, 414, 412, 420, 86, 423, 413, 419, 424, 86, 417, 416, 86, 418, 86, 86, 425, 421, 86, 428, 86, 427, 422, 86, 86, 429, 86, 430, - 3645, 433, 420, 434, 423, 435, 86, 424, 439, 431, + 3682, 433, 420, 434, 423, 435, 86, 424, 439, 431, - 436, 438, 3645, 440, 3645, 425, 3645, 86, 86, 86, + 436, 438, 3682, 440, 3682, 425, 3682, 86, 86, 86, 427, 442, 86, 86, 429, 86, 432, 86, 433, 441, 434, 86, 86, 443, 437, 439, 431, 86, 438, 445, 440, 444, 86, 86, 446, 447, 449, 86, 442, 448, 86, 453, 86, 432, 86, 86, 441, 86, 454, 452, - 443, 437, 86, 450, 455, 477, 445, 464, 444, 463, - 462, 446, 447, 449, 86, 86, 448, 469, 86, 86, - 451, 3645, 86, 86, 3645, 454, 452, 86, 86, 86, - 450, 455, 86, 486, 464, 470, 463, 462, 3645, 3645, - 471, 86, 3645, 3645, 469, 472, 473, 451, 456, 86, - - 465, 457, 466, 484, 3645, 86, 458, 459, 460, 461, - 86, 3645, 470, 476, 474, 467, 86, 471, 468, 475, - 86, 86, 472, 473, 86, 456, 488, 465, 457, 466, - 484, 480, 481, 458, 459, 460, 461, 86, 478, 485, - 476, 479, 467, 86, 86, 468, 86, 487, 86, 489, - 482, 483, 86, 488, 490, 491, 86, 86, 480, 481, - 86, 492, 494, 497, 493, 478, 485, 86, 479, 86, - 86, 3645, 496, 495, 487, 86, 489, 482, 483, 86, - 86, 490, 491, 86, 86, 498, 502, 499, 492, 494, - 504, 493, 3645, 86, 503, 86, 500, 505, 506, 496, - - 495, 517, 3645, 501, 507, 508, 3645, 509, 515, 560, - 516, 86, 498, 502, 499, 510, 86, 518, 3645, 86, - 86, 503, 86, 500, 505, 506, 86, 511, 86, 86, - 501, 507, 508, 86, 509, 515, 86, 516, 519, 532, - 512, 86, 510, 513, 86, 514, 86, 3645, 3645, 535, - 533, 86, 536, 3645, 511, 3645, 537, 3645, 3645, 573, - 86, 86, 538, 3645, 86, 519, 532, 512, 534, 86, - 513, 540, 514, 520, 86, 521, 535, 533, 539, 536, - 549, 522, 551, 537, 86, 523, 86, 552, 550, 538, - 524, 86, 86, 525, 3645, 534, 3645, 553, 540, 86, - - 520, 557, 521, 555, 554, 539, 86, 549, 522, 170, - 3645, 556, 523, 86, 86, 550, 3645, 524, 86, 86, - 525, 526, 558, 527, 553, 559, 561, 86, 557, 3645, - 555, 554, 563, 86, 571, 562, 528, 564, 556, 529, - 86, 530, 86, 531, 3645, 86, 565, 86, 526, 558, - 527, 568, 559, 561, 3645, 3645, 86, 578, 86, 563, - 569, 571, 562, 528, 570, 572, 529, 86, 530, 86, - 531, 541, 542, 565, 574, 566, 86, 86, 568, 575, - 576, 543, 544, 545, 546, 547, 86, 569, 548, 86, - 577, 570, 572, 567, 580, 86, 86, 86, 541, 542, - - 86, 574, 566, 86, 581, 86, 575, 576, 543, 544, - 545, 546, 547, 585, 579, 548, 86, 577, 582, 583, - 567, 580, 584, 586, 86, 587, 86, 3645, 588, 86, - 596, 581, 589, 3645, 86, 593, 3645, 597, 86, 598, - 585, 579, 590, 591, 612, 86, 626, 86, 594, 584, - 586, 86, 587, 86, 86, 588, 86, 596, 86, 589, - 592, 599, 593, 595, 597, 600, 598, 86, 601, 590, - 591, 86, 86, 86, 86, 594, 86, 602, 603, 613, - 614, 86, 616, 617, 3645, 615, 621, 592, 599, 604, - 595, 605, 600, 618, 620, 601, 86, 86, 3645, 86, - - 86, 3645, 86, 619, 602, 603, 613, 614, 86, 616, - 86, 622, 615, 621, 3645, 86, 604, 86, 605, 606, - 618, 620, 623, 625, 86, 624, 627, 607, 608, 86, - 619, 609, 610, 86, 629, 611, 630, 86, 622, 3645, - 631, 86, 628, 3645, 634, 632, 606, 664, 86, 623, - 625, 86, 624, 627, 607, 608, 86, 86, 609, 610, - 86, 629, 611, 86, 633, 635, 86, 631, 86, 628, - 86, 634, 632, 636, 638, 639, 640, 3645, 641, 86, - 642, 637, 86, 645, 643, 86, 644, 86, 646, 86, - 647, 633, 635, 86, 649, 3645, 3645, 666, 86, 86, - - 636, 638, 639, 640, 86, 641, 86, 642, 637, 86, - 645, 643, 86, 644, 86, 646, 648, 647, 650, 652, - 86, 649, 86, 86, 651, 86, 654, 656, 653, 86, - 655, 658, 86, 86, 657, 662, 668, 659, 86, 3645, - 660, 3645, 661, 648, 86, 650, 652, 86, 86, 86, - 86, 651, 86, 654, 656, 653, 86, 655, 658, 663, - 665, 657, 662, 667, 659, 3645, 86, 660, 86, 661, - 669, 670, 671, 86, 677, 672, 673, 675, 676, 3645, - 674, 86, 3645, 3645, 86, 679, 663, 665, 678, 86, - 667, 86, 86, 86, 680, 86, 86, 669, 670, 671, - - 86, 682, 672, 673, 675, 676, 86, 674, 683, 86, - 686, 684, 679, 685, 86, 678, 86, 681, 690, 86, - 687, 689, 688, 691, 703, 692, 86, 3645, 682, 86, - 86, 86, 704, 86, 86, 683, 86, 686, 684, 86, - 685, 3645, 86, 86, 681, 690, 708, 687, 689, 688, - 691, 703, 692, 693, 701, 86, 702, 705, 694, 704, - 695, 86, 86, 707, 706, 86, 696, 3645, 697, 86, - 711, 698, 699, 708, 86, 3645, 716, 3645, 700, 86, - 693, 701, 86, 702, 705, 694, 86, 695, 709, 712, - 707, 706, 710, 696, 86, 697, 719, 711, 698, 699, - - 721, 714, 720, 716, 715, 700, 3645, 717, 86, 713, - 86, 86, 86, 86, 722, 709, 712, 718, 86, 710, - 724, 3645, 726, 719, 86, 723, 727, 721, 714, 720, - 728, 715, 86, 725, 733, 86, 713, 730, 86, 86, - 734, 722, 729, 731, 718, 86, 86, 724, 86, 726, - 732, 86, 723, 727, 86, 86, 86, 728, 86, 736, - 725, 733, 737, 86, 730, 735, 738, 734, 739, 729, - 731, 86, 741, 86, 740, 742, 743, 732, 3645, 744, - 3645, 745, 750, 86, 86, 754, 736, 86, 86, 737, - 86, 86, 735, 738, 86, 739, 747, 170, 746, 748, - - 749, 740, 742, 743, 86, 86, 744, 86, 745, 750, - 86, 752, 751, 753, 86, 86, 755, 86, 756, 757, - 758, 760, 86, 747, 759, 746, 748, 749, 762, 772, - 86, 86, 761, 86, 86, 763, 767, 86, 752, 751, - 86, 768, 764, 755, 86, 765, 757, 758, 760, 766, - 86, 759, 86, 86, 86, 762, 769, 770, 771, 761, - 86, 86, 763, 773, 774, 775, 776, 782, 86, 764, - 86, 777, 765, 778, 779, 781, 766, 780, 783, 3645, - 86, 786, 86, 769, 86, 86, 86, 784, 785, 86, - 86, 86, 86, 789, 782, 790, 792, 86, 86, 86, - - 778, 779, 781, 86, 780, 783, 86, 787, 786, 788, - 794, 86, 86, 793, 784, 785, 86, 86, 791, 86, - 789, 796, 86, 792, 798, 86, 795, 86, 799, 797, - 86, 801, 86, 803, 787, 800, 788, 794, 3645, 86, - 793, 86, 86, 86, 804, 791, 3645, 86, 796, 811, - 86, 798, 802, 795, 805, 799, 797, 816, 801, 86, - 814, 818, 800, 815, 806, 86, 86, 86, 810, 807, - 86, 804, 808, 809, 812, 86, 811, 86, 813, 802, - 817, 805, 86, 86, 816, 86, 819, 814, 86, 86, - 815, 806, 86, 86, 820, 810, 807, 821, 3645, 808, - - 809, 812, 824, 823, 86, 813, 825, 817, 827, 829, - 3645, 826, 828, 819, 832, 830, 3645, 86, 86, 822, - 86, 820, 86, 86, 821, 86, 86, 831, 86, 824, - 823, 833, 86, 825, 86, 827, 829, 86, 826, 828, - 834, 86, 830, 837, 835, 836, 822, 838, 86, 86, - 86, 839, 840, 841, 831, 846, 86, 844, 833, 842, - 843, 86, 86, 845, 86, 847, 851, 834, 853, 849, - 837, 835, 836, 86, 838, 852, 848, 86, 86, 840, - 841, 86, 846, 86, 844, 86, 850, 854, 86, 86, - 845, 86, 847, 855, 86, 86, 849, 86, 86, 856, - - 86, 857, 852, 848, 858, 860, 865, 867, 861, 859, - 3645, 86, 86, 850, 854, 862, 866, 868, 3645, 86, - 855, 86, 86, 870, 86, 86, 856, 871, 857, 863, - 864, 872, 860, 869, 867, 861, 86, 86, 86, 86, - 86, 881, 862, 866, 868, 875, 873, 86, 876, 86, - 870, 86, 877, 882, 871, 86, 863, 864, 872, 879, - 869, 874, 878, 86, 880, 883, 891, 86, 881, 885, - 86, 3645, 886, 873, 86, 876, 884, 86, 887, 877, - 882, 86, 893, 892, 86, 889, 888, 86, 874, 878, - 86, 86, 883, 86, 86, 86, 885, 890, 86, 886, - - 86, 901, 894, 884, 86, 887, 86, 895, 896, 893, - 892, 3645, 889, 888, 86, 897, 898, 86, 900, 86, - 902, 904, 906, 86, 890, 899, 903, 86, 86, 894, - 86, 3645, 908, 86, 895, 896, 86, 3645, 905, 86, - 86, 3645, 897, 898, 949, 900, 86, 902, 904, 906, - 907, 909, 899, 903, 911, 86, 910, 916, 86, 908, - 86, 912, 913, 86, 914, 905, 915, 86, 918, 917, - 86, 86, 86, 920, 86, 919, 922, 907, 909, 86, - 3645, 911, 86, 910, 916, 3645, 86, 924, 912, 913, - 925, 914, 86, 915, 86, 918, 917, 921, 86, 923, - - 920, 86, 919, 922, 927, 86, 3645, 926, 928, 86, - 929, 936, 86, 930, 924, 86, 931, 925, 86, 86, - 932, 934, 933, 937, 921, 935, 923, 940, 86, 86, - 86, 927, 86, 86, 926, 928, 86, 929, 936, 938, - 930, 939, 86, 931, 86, 86, 3645, 932, 934, 933, - 937, 941, 935, 942, 956, 3645, 86, 86, 943, 86, - 946, 944, 947, 948, 945, 952, 938, 3645, 939, 86, - 3645, 950, 86, 170, 86, 86, 954, 86, 941, 951, - 942, 86, 86, 953, 958, 943, 86, 946, 944, 947, - 948, 945, 86, 955, 86, 957, 962, 86, 950, 959, - - 961, 86, 86, 954, 963, 86, 951, 86, 965, 86, - 953, 958, 964, 960, 86, 86, 966, 86, 86, 977, - 955, 975, 957, 86, 976, 979, 959, 961, 86, 967, - 86, 963, 86, 86, 86, 965, 86, 86, 978, 964, - 960, 980, 982, 966, 984, 981, 977, 3645, 975, 1000, - 3645, 976, 979, 86, 990, 86, 967, 968, 983, 86, - 969, 3645, 86, 86, 970, 978, 985, 971, 980, 982, - 86, 984, 981, 986, 972, 973, 1000, 974, 3645, 987, - 1002, 86, 86, 988, 968, 983, 86, 969, 86, 86, - 989, 970, 86, 985, 971, 1022, 86, 86, 998, 1001, - - 986, 972, 973, 86, 974, 86, 987, 1002, 86, 3645, - 988, 999, 1003, 3645, 1004, 86, 1009, 989, 991, 992, - 1006, 993, 86, 1007, 994, 998, 1001, 1008, 86, 995, - 1005, 86, 1010, 86, 86, 996, 997, 86, 999, 1003, - 1011, 1004, 86, 1009, 86, 991, 992, 1006, 993, 86, - 1007, 994, 1014, 1012, 1008, 1015, 995, 1005, 1013, 1010, - 3645, 1016, 996, 997, 86, 1017, 1020, 1011, 1018, 1019, - 3645, 1024, 86, 86, 1023, 1021, 1025, 1026, 3645, 1014, - 3645, 86, 1015, 1030, 86, 86, 86, 86, 1016, 1029, - 86, 86, 1017, 1020, 86, 1018, 1019, 86, 1024, 86, - - 86, 1023, 1021, 1025, 1026, 1027, 1028, 1031, 86, 86, - 1030, 1032, 86, 1033, 86, 1035, 1029, 1034, 1036, 86, - 1037, 1038, 1039, 86, 86, 1043, 86, 1044, 1042, 1045, - 86, 1040, 1027, 1028, 1031, 86, 1041, 1046, 1032, 86, - 1033, 1047, 1035, 86, 1034, 1036, 3645, 1048, 1038, 86, - 86, 1049, 86, 1051, 1044, 1042, 1050, 86, 1052, 86, - 1053, 86, 1055, 86, 1046, 1056, 1057, 1054, 1058, 1061, - 1059, 86, 86, 86, 1048, 86, 86, 86, 1049, 86, - 86, 86, 1060, 1050, 86, 86, 86, 1053, 86, 1055, - 86, 1063, 1056, 1057, 1054, 1058, 86, 1059, 1062, 1064, - - 1065, 1068, 1066, 1069, 1067, 3645, 1072, 1075, 3645, 1060, - 86, 86, 86, 1071, 1070, 1073, 86, 86, 1063, 86, - 86, 86, 1074, 1078, 86, 1062, 86, 1077, 1068, 1066, - 1069, 1067, 86, 1072, 1075, 86, 1076, 86, 86, 86, - 1071, 1070, 1073, 1079, 86, 86, 1081, 1084, 1080, 1074, - 1078, 1082, 1083, 1085, 1077, 86, 1087, 1086, 1088, 86, - 86, 1090, 1091, 1076, 86, 86, 1089, 1097, 1093, 3645, - 1092, 86, 86, 1081, 1084, 86, 86, 86, 1082, 1083, - 1085, 1094, 86, 1087, 1086, 1088, 86, 86, 1090, 86, - 86, 1095, 1096, 1089, 1097, 1093, 1098, 1092, 86, 86, - - 1100, 1101, 1099, 86, 86, 1102, 1104, 1103, 1094, 1108, - 1106, 3645, 1105, 1109, 86, 86, 1111, 86, 1095, 1096, - 86, 1110, 1107, 1098, 86, 86, 86, 1100, 1101, 1099, - 86, 1112, 1102, 86, 1103, 86, 1108, 1106, 86, 1105, - 1109, 1113, 86, 1111, 86, 1114, 1115, 1117, 1110, 1107, - 1116, 1119, 1118, 1120, 86, 1123, 1121, 86, 1112, 86, - 86, 86, 86, 86, 1124, 86, 1125, 1122, 1113, 1126, - 86, 86, 86, 1115, 1117, 86, 1127, 1116, 1119, 1118, - 1120, 1128, 1123, 1121, 1129, 1130, 1131, 1132, 1134, 86, - 3645, 1124, 86, 1133, 1122, 1137, 86, 86, 86, 1135, - - 1138, 86, 1139, 1127, 1140, 1141, 86, 1136, 1142, 1145, - 3645, 1129, 1130, 86, 86, 1134, 86, 86, 86, 86, - 1133, 1143, 1137, 1147, 1144, 3645, 1135, 1138, 86, 1139, - 86, 1149, 86, 1146, 1136, 1142, 86, 86, 86, 1153, - 86, 86, 1150, 1148, 1154, 1156, 3645, 1155, 1143, 1157, - 86, 1144, 86, 86, 1161, 1151, 1158, 1152, 1149, 86, - 1146, 86, 86, 1160, 1162, 1163, 86, 86, 86, 1150, - 1148, 170, 1156, 1159, 1155, 86, 1157, 1173, 86, 1164, - 86, 1161, 1151, 1158, 1152, 86, 1174, 1165, 1176, 1166, - 1160, 1162, 1163, 86, 86, 86, 1183, 1178, 3645, 1175, - - 1159, 1184, 3645, 86, 1173, 1177, 1164, 86, 3645, 86, - 1179, 86, 1181, 1174, 1165, 86, 1166, 1167, 1180, 1168, - 86, 1189, 86, 1169, 1178, 1170, 1175, 1182, 86, 1185, - 1171, 86, 1177, 86, 86, 1172, 1186, 1179, 1192, 1181, - 86, 86, 1193, 1187, 1167, 1180, 1168, 86, 1189, 86, - 1169, 1190, 1170, 86, 1182, 1188, 1185, 1171, 1194, 1196, - 1199, 1191, 1172, 1186, 86, 1192, 86, 1198, 1195, 1193, - 1187, 86, 86, 86, 86, 1197, 1200, 1201, 1190, 1202, - 1203, 86, 1188, 1205, 1228, 1194, 1196, 1199, 1191, 86, - 1208, 1206, 1207, 86, 1198, 1195, 86, 1216, 86, 86, - - 86, 1217, 1197, 1200, 1220, 3645, 3645, 86, 1218, 86, - 1221, 86, 86, 3645, 1219, 86, 86, 1208, 1206, 1207, - 1209, 86, 3645, 86, 1216, 1210, 3645, 1211, 1217, 86, - 86, 1220, 86, 1212, 1222, 1218, 1224, 1221, 1213, 1214, - 1223, 1219, 1225, 1230, 1227, 1215, 86, 1209, 1226, 86, - 86, 86, 1210, 86, 1211, 86, 86, 1229, 86, 1231, - 1212, 1222, 1232, 1224, 1235, 1213, 1214, 1223, 86, 1225, - 1230, 1227, 1215, 86, 1233, 1226, 1234, 1236, 1238, 86, - 1237, 1239, 1240, 86, 1229, 86, 1231, 86, 1242, 1232, - 86, 86, 1241, 1243, 1244, 1246, 1249, 3645, 3645, 1247, - - 86, 1233, 86, 1234, 1236, 86, 1250, 1237, 1239, 1240, - 86, 1261, 1245, 86, 86, 1242, 86, 86, 1248, 1241, - 86, 1244, 1246, 1251, 86, 86, 1247, 1252, 86, 86, - 1253, 86, 1259, 1250, 1254, 1255, 1256, 86, 1257, 1245, - 1258, 1262, 86, 86, 1265, 1248, 3645, 86, 1264, 86, - 1251, 86, 86, 86, 1252, 86, 86, 1253, 86, 1259, - 1260, 1254, 1255, 1256, 1263, 1257, 86, 1258, 1262, 1267, - 86, 1265, 1266, 1269, 1268, 1264, 1270, 86, 1274, 3645, - 86, 3645, 86, 86, 1271, 86, 1272, 1260, 1275, 1273, - 1276, 1263, 1277, 3645, 3645, 3645, 1267, 1278, 86, 1266, - - 1269, 1268, 1293, 1270, 86, 1274, 86, 86, 86, 86, - 86, 1271, 1279, 1272, 1280, 1287, 1273, 1285, 1281, 1277, - 86, 1286, 86, 1282, 1278, 86, 86, 1283, 86, 86, - 1284, 1288, 1289, 1291, 86, 3645, 1295, 1290, 86, 1279, - 1292, 1280, 1287, 86, 1285, 86, 86, 86, 1286, 1294, - 86, 1296, 86, 86, 1283, 1297, 86, 1284, 1288, 1289, - 1291, 1298, 1300, 86, 1290, 1299, 1301, 1292, 86, 1304, - 3645, 3645, 86, 1302, 86, 1303, 1294, 86, 1296, 1306, - 86, 1305, 1297, 1307, 1312, 1313, 86, 1310, 1298, 1300, - 1309, 86, 1299, 1301, 1308, 86, 1304, 86, 86, 86, - - 1302, 86, 1303, 1311, 1314, 86, 1306, 1317, 1305, 86, - 1307, 86, 86, 1316, 1310, 1319, 86, 1309, 1315, 1318, - 1321, 1308, 86, 86, 86, 1320, 1323, 86, 86, 1322, - 1311, 1314, 86, 86, 1317, 1324, 1325, 86, 1326, 1327, - 1316, 1328, 1319, 86, 86, 1315, 1318, 1321, 1329, 1330, - 1331, 1334, 1320, 1332, 3645, 1336, 1322, 1333, 86, 3645, - 86, 86, 86, 1335, 86, 1326, 1327, 86, 86, 1337, - 86, 1338, 86, 86, 3645, 1329, 3645, 1331, 1339, 1340, - 1332, 86, 86, 86, 1333, 86, 1341, 86, 86, 86, - 1335, 1342, 1343, 1344, 86, 1345, 1337, 1347, 1338, 1346, - - 86, 1349, 1348, 1350, 1353, 1339, 1340, 3645, 86, 86, - 86, 1351, 86, 1341, 1352, 86, 86, 86, 1342, 1343, - 1344, 1355, 1345, 86, 1347, 1360, 1346, 1356, 1357, 1348, - 1359, 86, 1354, 86, 86, 86, 86, 86, 1351, 86, - 86, 1352, 86, 86, 1362, 1361, 86, 1364, 1355, 1365, - 1363, 1366, 1360, 86, 1356, 1357, 1368, 1359, 86, 1354, - 1367, 1374, 1369, 170, 1372, 1371, 1373, 1370, 86, 1376, - 1377, 1362, 1361, 86, 86, 86, 1365, 1363, 1366, 86, - 86, 1379, 86, 1368, 86, 1378, 86, 1367, 86, 1369, - 1375, 1372, 1371, 1373, 1370, 1380, 86, 86, 1382, 1381, - - 1383, 86, 86, 86, 1385, 3645, 1384, 1386, 1379, 1387, - 1390, 86, 1378, 86, 1392, 86, 86, 1375, 1388, 1394, - 86, 86, 1380, 86, 1389, 1382, 1381, 1383, 86, 86, - 86, 1385, 86, 1384, 1386, 1391, 1387, 86, 1393, 3645, - 86, 1392, 1395, 3645, 1396, 1388, 1394, 1400, 86, 86, - 86, 1389, 1401, 1397, 1402, 1398, 1403, 1404, 1399, 1405, - 3645, 3645, 1391, 1406, 1408, 1393, 86, 1407, 3645, 1395, - 86, 1396, 86, 86, 1400, 86, 86, 86, 86, 1401, - 1397, 1402, 1398, 86, 1404, 1399, 1405, 86, 1409, 1410, - 1406, 1408, 1411, 1412, 1407, 1413, 1414, 1415, 1416, 1417, - - 86, 1418, 3645, 3645, 3645, 1438, 86, 86, 86, 1419, - 86, 86, 1420, 1422, 86, 1409, 1410, 3645, 86, 1411, - 1412, 1423, 1421, 1414, 1415, 1416, 1417, 86, 86, 86, - 1425, 86, 1424, 1426, 86, 86, 1419, 86, 1427, 1420, - 1422, 1430, 86, 1428, 86, 86, 86, 1432, 1423, 1421, - 86, 1431, 1429, 86, 1441, 1433, 1436, 1425, 1434, 1424, - 1426, 1437, 86, 86, 86, 1427, 1435, 86, 1430, 1439, - 1428, 86, 86, 86, 1432, 86, 86, 86, 1431, 1429, - 1440, 1441, 1433, 1436, 1443, 1434, 1442, 86, 1437, 1444, - 1447, 1445, 86, 1435, 1448, 1446, 1439, 86, 86, 86, - - 1450, 1449, 86, 1451, 86, 3645, 1452, 1440, 86, 1455, - 1453, 1443, 1456, 1442, 1454, 86, 1444, 1447, 1445, 86, - 86, 86, 1446, 1457, 3645, 1473, 86, 1463, 1449, 86, - 1451, 1461, 86, 1452, 86, 1458, 1455, 1453, 86, 1456, - 1459, 1454, 1462, 1460, 86, 1471, 1472, 1476, 1477, 1491, - 1457, 86, 1487, 86, 1463, 1474, 86, 86, 1461, 86, - 1493, 1480, 86, 1475, 86, 86, 3645, 86, 1536, 1462, - 1460, 1464, 1471, 1472, 1476, 1465, 1491, 1478, 1466, 1467, - 86, 86, 1474, 1468, 86, 86, 1479, 86, 1480, 1469, - 1475, 1482, 86, 1470, 1481, 86, 3645, 86, 1464, 86, - - 86, 1483, 1465, 1484, 1478, 1466, 1467, 1485, 86, 1488, - 1468, 1490, 1489, 1479, 86, 1486, 1469, 86, 1482, 86, - 1470, 1481, 1492, 1494, 86, 86, 1495, 86, 1483, 1496, - 1484, 86, 1497, 86, 1485, 1503, 1488, 1504, 1490, 1489, - 3645, 3645, 1486, 1506, 1507, 3645, 86, 1505, 86, 1492, - 86, 3645, 86, 1495, 1508, 86, 1496, 86, 3645, 1497, - 1498, 1509, 1503, 1510, 1504, 1499, 3645, 1500, 1512, 1501, - 86, 1502, 86, 86, 1505, 86, 1511, 86, 86, 1513, - 1514, 1508, 1516, 86, 86, 1515, 1517, 1498, 1509, 1518, - 1510, 86, 1499, 1524, 1500, 1512, 1501, 86, 1502, 1520, - - 86, 1519, 1521, 1511, 1525, 1523, 1513, 1522, 1526, 1516, - 86, 86, 86, 1517, 86, 86, 1518, 86, 86, 1527, - 1528, 1529, 1531, 86, 1530, 86, 1520, 1538, 1519, 1521, - 86, 1525, 1523, 86, 1522, 1526, 1532, 86, 86, 1535, - 86, 1533, 1534, 86, 86, 1537, 1527, 1528, 1529, 1531, - 86, 1530, 1539, 1541, 86, 3645, 86, 86, 1540, 1542, - 1543, 86, 1544, 1532, 1545, 1546, 1535, 86, 1533, 1534, - 1547, 86, 1537, 1548, 1552, 86, 1553, 86, 86, 1539, - 1541, 1557, 86, 86, 1549, 1540, 1542, 1543, 1550, 86, - 86, 1545, 86, 1551, 86, 86, 86, 1547, 1554, 86, - - 1548, 86, 1555, 1553, 1559, 1556, 1558, 3645, 86, 1560, - 1561, 1549, 86, 86, 1562, 1550, 3645, 1565, 1563, 86, - 1551, 1564, 86, 1568, 1567, 1554, 86, 1566, 86, 1555, - 86, 1559, 1556, 1558, 86, 86, 1560, 1561, 86, 86, - 86, 1562, 86, 1569, 1565, 1563, 86, 1570, 1564, 1574, - 1568, 1567, 1572, 1571, 1566, 1573, 1578, 1579, 86, 1577, - 1575, 1582, 3645, 1576, 3645, 86, 3645, 3645, 1586, 1580, - 1569, 86, 1581, 86, 1570, 86, 1574, 86, 86, 1572, - 1571, 86, 1573, 86, 1583, 1585, 1577, 1575, 86, 86, - 1576, 86, 1584, 86, 86, 86, 1580, 1587, 1588, 1581, - - 86, 86, 86, 1591, 86, 1589, 1590, 1594, 1596, 1592, - 1595, 1583, 1585, 1593, 86, 170, 86, 86, 1597, 1584, - 86, 1598, 3645, 86, 1587, 1588, 1602, 1599, 3645, 86, - 1591, 1600, 1589, 1590, 86, 1596, 1592, 1601, 86, 86, - 1593, 86, 86, 1603, 86, 1605, 1604, 1607, 1598, 86, - 86, 1608, 1606, 1602, 1599, 86, 86, 1610, 1600, 86, - 86, 1609, 1611, 1612, 1601, 3645, 86, 1613, 1616, 1617, - 1603, 86, 1605, 1604, 1607, 86, 1614, 86, 1608, 1606, - 1618, 1615, 1628, 86, 86, 86, 1620, 86, 1609, 1611, - 1612, 1619, 1625, 1629, 1613, 1616, 1617, 1621, 86, 86, - - 1622, 1626, 1627, 1623, 86, 1630, 1624, 1618, 86, 86, - 86, 3645, 1631, 1620, 86, 86, 86, 1632, 1619, 1625, - 1629, 86, 3645, 1633, 1621, 86, 86, 1622, 1626, 1627, - 1623, 86, 1630, 1624, 1634, 86, 1635, 1636, 1637, 1639, - 1638, 3645, 1640, 1643, 86, 86, 1641, 1642, 86, 86, - 1633, 1646, 1647, 3645, 86, 1650, 86, 3645, 3645, 86, - 86, 1634, 86, 1635, 1636, 1637, 1639, 1638, 86, 1640, - 1643, 1644, 1645, 1641, 1642, 86, 1648, 86, 1646, 1647, - 86, 86, 1649, 1652, 1653, 86, 1651, 86, 1655, 1654, - 86, 3645, 86, 1656, 86, 1658, 1657, 1660, 1644, 1645, - - 86, 86, 86, 1648, 86, 86, 1659, 1663, 1662, 1649, - 1652, 1653, 1661, 1651, 86, 1655, 1654, 86, 1664, 86, - 1656, 86, 1658, 1657, 1660, 86, 86, 1668, 1665, 1666, - 1667, 1669, 1670, 1659, 1663, 1662, 3645, 86, 1671, 1661, - 86, 1672, 1673, 3645, 86, 1664, 1676, 86, 1675, 1674, - 1677, 86, 86, 86, 1668, 1665, 1666, 1667, 1678, 86, - 1679, 1680, 1681, 86, 86, 1671, 3645, 86, 1672, 86, - 86, 1685, 86, 1676, 1688, 1675, 1674, 1677, 1682, 1686, - 1689, 1690, 1687, 86, 1691, 3645, 1693, 3645, 86, 1681, - 86, 3645, 86, 86, 86, 86, 86, 1683, 86, 1684, - - 86, 1688, 86, 1692, 86, 1682, 1686, 1689, 1690, 1687, - 1694, 1691, 86, 1693, 1695, 1697, 1696, 86, 1704, 1698, - 1699, 3645, 3645, 86, 1683, 1700, 1684, 86, 86, 1701, - 1692, 1707, 1703, 86, 1702, 1708, 1712, 1694, 86, 86, - 1705, 1695, 1697, 1696, 86, 1704, 1698, 1706, 86, 86, - 1713, 3645, 86, 1710, 1711, 86, 1709, 86, 1707, 1703, - 86, 86, 1708, 86, 86, 1716, 1714, 1705, 86, 1715, - 86, 1717, 86, 86, 1706, 1719, 1720, 1713, 1718, 86, - 1710, 1711, 1721, 1709, 86, 1726, 1722, 1723, 1725, 3645, - 86, 86, 1724, 1714, 86, 86, 1715, 86, 1717, 86, - - 86, 86, 1728, 1720, 1727, 1718, 1729, 86, 1732, 1721, - 1730, 1733, 1726, 1722, 1723, 1725, 86, 1731, 86, 1724, - 1734, 1735, 1736, 86, 1738, 86, 1737, 1740, 86, 1728, - 86, 1727, 1739, 1729, 3645, 1732, 86, 1730, 86, 1745, - 86, 86, 1751, 86, 1731, 86, 1744, 86, 1735, 1736, - 86, 1738, 1741, 1737, 1740, 86, 1742, 1747, 1746, 1739, - 1748, 86, 1749, 3645, 86, 1754, 1745, 1753, 1750, 1743, - 86, 86, 1762, 1744, 86, 1756, 1752, 86, 1755, 1741, - 3645, 86, 3645, 1742, 1747, 1746, 1757, 1748, 86, 86, - 86, 1763, 1758, 1760, 1753, 1750, 1743, 86, 86, 86, - - 86, 1759, 1756, 1752, 86, 1755, 1764, 1761, 1766, 86, - 86, 86, 1767, 1757, 86, 86, 1765, 1768, 86, 1758, - 1760, 1770, 86, 1771, 1769, 1772, 1773, 3645, 1759, 1774, - 86, 86, 3645, 1764, 1761, 1766, 1776, 86, 86, 1767, - 86, 1779, 3645, 1765, 1775, 3645, 1781, 86, 86, 86, - 1771, 1769, 86, 1773, 1778, 86, 1774, 1785, 1777, 86, - 86, 86, 1780, 1776, 86, 1782, 1784, 1786, 1779, 86, - 1783, 1775, 86, 1781, 86, 1787, 86, 86, 1788, 86, - 86, 1778, 1789, 3645, 1785, 1777, 1790, 1791, 1792, 1780, - 86, 1793, 1782, 1784, 1786, 86, 1794, 1783, 86, 86, - - 86, 1796, 1797, 1795, 86, 1788, 1799, 86, 1798, 1789, - 86, 1800, 1801, 1790, 1791, 1792, 86, 1802, 1793, 86, - 86, 1803, 86, 1794, 86, 1805, 86, 1806, 1796, 1797, - 1795, 1808, 1804, 86, 86, 1798, 1809, 1807, 1800, 1801, - 86, 86, 1810, 86, 1802, 86, 1811, 1814, 1803, 1812, - 86, 1813, 1805, 86, 1806, 1815, 86, 1818, 1808, 1804, - 86, 1821, 170, 86, 1807, 1819, 86, 86, 86, 1810, - 86, 86, 1820, 1811, 1814, 1824, 1812, 1825, 1813, 1816, - 1817, 1826, 1815, 86, 1818, 1828, 1822, 86, 1821, 1823, - 1827, 1830, 1819, 86, 1831, 86, 86, 86, 86, 1820, - - 1829, 86, 86, 86, 1825, 1832, 1816, 1817, 1826, 1834, - 86, 1833, 1828, 1822, 1836, 3645, 1823, 1827, 1835, 1841, - 1837, 1831, 86, 86, 86, 1838, 86, 1829, 86, 1839, - 3645, 1840, 86, 1845, 1842, 86, 86, 86, 1833, 1843, - 1844, 1836, 86, 86, 1846, 1835, 1841, 1837, 1847, 1852, - 1853, 86, 1838, 86, 3645, 86, 1839, 86, 1840, 86, - 1845, 1842, 1848, 86, 86, 3645, 1843, 1844, 1854, 86, - 1849, 1846, 86, 1850, 1860, 1847, 1857, 1853, 1856, 3645, - 1858, 86, 86, 1862, 1855, 1851, 1859, 1861, 1863, 1848, - 86, 1865, 86, 1867, 86, 1854, 86, 1849, 86, 1864, - - 1850, 86, 1866, 1857, 3645, 1856, 1874, 1858, 1868, 1869, - 86, 1855, 1851, 1859, 1861, 86, 1871, 86, 1865, 1875, - 86, 86, 1870, 86, 86, 86, 1864, 1872, 86, 1866, - 86, 86, 1873, 1876, 86, 1868, 1869, 1878, 86, 1877, - 1879, 1880, 3645, 1871, 86, 1881, 1883, 3645, 1882, 1870, - 1884, 86, 1885, 3645, 1872, 86, 86, 86, 1895, 1873, - 86, 86, 1899, 86, 1886, 86, 1877, 1879, 1880, 86, - 86, 86, 86, 1883, 1887, 1882, 1888, 1884, 86, 1885, - 1889, 1890, 1891, 1892, 86, 1895, 1893, 86, 1894, 86, - 86, 1886, 3645, 86, 86, 1906, 86, 1896, 1900, 1897, - - 3645, 1887, 1898, 1888, 3645, 86, 86, 1889, 1890, 1891, - 1892, 86, 86, 1893, 86, 1894, 86, 1901, 1903, 1904, - 1902, 86, 1906, 1907, 1896, 1900, 1897, 86, 86, 1898, - 1908, 86, 1909, 1910, 1911, 3645, 1912, 1905, 1914, 86, - 1913, 86, 1927, 86, 1901, 1903, 1904, 1902, 3645, 86, - 1907, 86, 86, 1915, 1917, 86, 86, 86, 1918, 1909, - 1910, 1911, 86, 1912, 1905, 1914, 1916, 1913, 1919, 86, - 86, 1920, 86, 1922, 1921, 86, 1928, 1925, 1923, 86, - 1915, 1917, 1926, 1924, 86, 1918, 1932, 1929, 86, 86, - 86, 1931, 3645, 1916, 1935, 1919, 1946, 1933, 1920, 1930, - - 1922, 1921, 86, 86, 1925, 1923, 86, 1936, 86, 1926, - 1924, 86, 1934, 86, 1929, 86, 86, 1938, 1931, 1937, - 86, 1935, 1939, 86, 1933, 86, 1930, 1940, 1941, 1942, - 1944, 86, 1943, 86, 1936, 1945, 86, 1949, 1947, 1934, - 3645, 86, 3645, 1948, 1938, 86, 1937, 86, 86, 1939, - 86, 86, 1950, 1951, 1940, 1941, 1942, 1944, 86, 1943, - 1952, 86, 1955, 1953, 1949, 1947, 86, 86, 1954, 1958, - 1948, 86, 1957, 1956, 86, 1959, 1962, 3645, 86, 1950, - 1951, 1960, 1961, 3645, 86, 3645, 1963, 1952, 86, 1955, - 1964, 3645, 1965, 86, 86, 86, 1958, 1980, 1969, 1957, - - 1956, 86, 1959, 1962, 1967, 86, 1966, 1968, 1960, 1961, - 1971, 1983, 86, 1963, 1970, 1972, 86, 1964, 86, 1965, - 86, 1973, 86, 86, 86, 1969, 1974, 1975, 1978, 86, - 1977, 1967, 1976, 1966, 1968, 86, 1979, 1971, 1981, 1982, - 86, 1970, 1972, 86, 86, 1984, 1986, 86, 1985, 86, - 86, 1990, 1987, 86, 1975, 1978, 3645, 1977, 1989, 1976, - 1991, 86, 1988, 1979, 1992, 1981, 86, 86, 1994, 86, - 1993, 86, 1984, 86, 86, 1985, 1995, 1999, 86, 1987, - 2000, 2001, 1996, 86, 1997, 1989, 1998, 1991, 86, 1988, - 86, 1992, 86, 3645, 86, 86, 86, 1993, 2002, 86, - - 86, 2003, 86, 1995, 1999, 2005, 2004, 2000, 2001, 1996, - 2006, 1997, 86, 1998, 2007, 2009, 2010, 2012, 86, 86, - 86, 3645, 2011, 86, 2013, 2002, 2017, 2014, 2003, 2015, - 3645, 86, 2005, 2004, 86, 2008, 2019, 2006, 86, 2023, - 2020, 86, 2016, 2018, 2012, 86, 86, 86, 86, 2011, - 86, 86, 2021, 86, 2014, 2022, 2015, 86, 2024, 2026, - 2025, 2032, 2008, 86, 86, 86, 86, 2020, 86, 2016, - 2018, 2027, 2028, 2029, 2030, 2033, 2031, 86, 86, 2021, - 86, 86, 2022, 86, 2034, 2024, 2026, 2025, 2032, 2035, - 2037, 2039, 86, 86, 86, 86, 2041, 2036, 2027, 2028, - - 2029, 2030, 2033, 2031, 170, 2038, 86, 2040, 86, 86, - 2043, 2034, 2042, 86, 2044, 86, 2035, 86, 2039, 2046, - 2045, 2047, 2048, 86, 2036, 86, 2052, 86, 86, 86, - 86, 2050, 2038, 2053, 2040, 86, 2049, 2043, 2051, 2042, - 86, 2044, 2054, 2056, 2055, 2057, 2046, 2045, 2047, 2058, - 3645, 86, 2059, 86, 86, 2060, 3645, 86, 2050, 86, - 2053, 86, 2061, 2049, 2080, 2051, 86, 86, 2062, 86, - 2056, 2055, 2064, 2063, 2065, 86, 86, 86, 86, 2059, - 86, 86, 2060, 86, 2066, 2067, 86, 2068, 2069, 2061, - 2070, 2071, 2079, 3645, 3645, 2062, 86, 2074, 2077, 2064, - - 2063, 2065, 86, 86, 86, 86, 86, 86, 2072, 2075, - 2078, 2066, 2067, 86, 2068, 2069, 2076, 2070, 2071, 86, - 86, 2073, 86, 2081, 2074, 2077, 86, 2082, 2085, 86, - 3645, 86, 2083, 2084, 2091, 2072, 2075, 2078, 86, 86, - 86, 86, 2086, 2076, 2088, 2087, 2089, 2092, 2073, 86, - 2081, 2090, 2094, 2099, 2082, 2085, 2093, 86, 2095, 2083, - 2084, 86, 2096, 86, 2100, 2101, 2102, 2103, 86, 2086, - 86, 2088, 2087, 2089, 86, 2097, 2098, 86, 2090, 86, - 86, 86, 86, 2093, 86, 2095, 2104, 86, 2105, 2096, - 86, 2100, 2106, 2102, 2107, 86, 86, 86, 2108, 86, - - 2109, 2110, 2097, 2098, 2111, 2112, 2113, 2115, 86, 2114, - 2119, 3645, 3645, 2104, 86, 86, 2116, 2118, 86, 2106, - 86, 2107, 86, 2117, 2127, 2108, 86, 86, 2110, 86, - 2124, 2111, 86, 2113, 2115, 2132, 2114, 86, 86, 86, - 2133, 2126, 86, 2116, 2118, 2120, 2121, 2122, 86, 86, - 2117, 2128, 2123, 2125, 2129, 2130, 86, 2124, 86, 2135, - 86, 86, 86, 2131, 2134, 2139, 2140, 86, 2126, 2136, - 3645, 86, 2120, 2121, 2122, 86, 2137, 86, 2128, 2123, - 2125, 2129, 2130, 2138, 86, 86, 2135, 2143, 2144, 86, - 2131, 2134, 86, 2140, 86, 86, 2136, 86, 2141, 2149, - - 2142, 2156, 2145, 2137, 2146, 86, 86, 2147, 3645, 2148, - 2138, 86, 86, 2150, 86, 2144, 2151, 2152, 2155, 86, - 86, 2153, 3645, 2154, 86, 2141, 86, 2142, 86, 2145, - 2158, 2146, 3645, 86, 2147, 86, 2148, 2162, 2157, 86, - 2150, 86, 2160, 86, 2152, 2155, 2159, 2161, 2153, 86, - 2154, 2164, 86, 2168, 86, 86, 2167, 86, 2163, 86, - 2165, 86, 2169, 2170, 2162, 2157, 2171, 86, 2166, 2160, - 86, 2172, 2173, 2159, 2161, 86, 3645, 86, 2164, 86, - 2168, 2174, 2175, 2176, 2177, 2163, 86, 2165, 86, 86, - 2170, 2178, 2179, 2171, 86, 2166, 2182, 86, 2180, 2173, - - 2184, 2183, 3645, 86, 86, 86, 86, 2181, 2174, 86, - 86, 2177, 2185, 2188, 86, 86, 86, 2187, 2178, 2179, - 86, 86, 2189, 2182, 86, 2180, 2190, 2184, 2183, 2186, - 86, 2194, 2192, 86, 2181, 2191, 2195, 3645, 86, 2185, - 2197, 86, 2196, 86, 2187, 86, 2198, 86, 2193, 86, - 2218, 2204, 2199, 2190, 86, 86, 2186, 2202, 2194, 2192, - 86, 2203, 2191, 2195, 86, 2200, 2201, 86, 2205, 2196, - 2206, 2207, 86, 2198, 86, 2193, 2210, 86, 2204, 2199, - 86, 3645, 86, 2211, 2202, 2208, 86, 86, 2203, 86, - 2209, 2212, 2200, 2201, 86, 2205, 2219, 86, 2207, 2213, - - 2214, 86, 2215, 86, 86, 86, 2216, 86, 2217, 86, - 2211, 2222, 2208, 86, 2221, 86, 2220, 2209, 2212, 2223, - 2235, 2224, 86, 2219, 2226, 86, 2213, 2214, 86, 2215, - 2225, 2231, 2230, 2216, 2227, 2217, 86, 2229, 2222, 2228, - 2232, 2221, 86, 2220, 86, 2236, 86, 86, 2224, 2238, - 86, 2226, 86, 86, 86, 2233, 2240, 2225, 86, 2230, - 2234, 2227, 2237, 86, 2229, 2239, 2228, 86, 2241, 2243, - 2242, 86, 2244, 2245, 2246, 86, 2238, 86, 2248, 3645, - 86, 2247, 2249, 86, 86, 2252, 86, 86, 86, 2237, - 2253, 2256, 2239, 86, 2250, 2241, 2243, 2242, 86, 2244, - - 2245, 2254, 86, 2257, 2251, 86, 86, 170, 2247, 86, - 86, 86, 2252, 86, 2255, 2259, 86, 2253, 2256, 2258, - 2260, 2250, 86, 2262, 3645, 2261, 2264, 86, 2254, 2263, - 2257, 2251, 86, 2265, 2269, 2268, 2267, 3645, 2270, 2266, - 3645, 2255, 86, 2274, 3645, 86, 2258, 86, 86, 86, - 86, 2273, 2261, 2264, 86, 86, 2263, 86, 86, 86, - 2265, 2269, 2268, 2267, 86, 2270, 2266, 2271, 2272, 2275, - 86, 2276, 2279, 86, 2280, 2277, 2278, 2286, 2273, 2282, - 2287, 86, 86, 86, 2283, 2284, 2281, 86, 86, 86, - 3645, 2303, 86, 86, 2271, 2272, 2275, 86, 2276, 86, - - 86, 2280, 2277, 2278, 86, 2285, 2282, 2287, 86, 86, - 2288, 2283, 2284, 2281, 2289, 2293, 2290, 2294, 86, 2291, - 2295, 3645, 2297, 86, 86, 3645, 2296, 86, 86, 86, - 2292, 2304, 2285, 86, 2298, 86, 2299, 2288, 86, 3645, - 2301, 2289, 2293, 2290, 2294, 86, 2291, 2295, 86, 2297, - 2300, 86, 86, 2296, 2302, 86, 86, 2292, 2304, 2305, - 2306, 2298, 86, 2299, 2307, 2310, 2308, 2301, 86, 2309, - 86, 86, 2312, 2311, 3645, 86, 2313, 2300, 86, 2314, - 2315, 2302, 86, 86, 2317, 2316, 2305, 2306, 86, 2318, - 2319, 2307, 2320, 2308, 86, 2321, 2309, 86, 86, 2312, - - 2311, 86, 2323, 2313, 86, 2322, 2314, 86, 2326, 2324, - 2330, 86, 2316, 86, 86, 86, 2318, 2319, 86, 2320, - 2329, 2325, 86, 2327, 2331, 86, 86, 86, 86, 2323, - 2332, 2328, 2322, 2336, 86, 2326, 2324, 2330, 2333, 86, - 2334, 86, 86, 2335, 2346, 86, 3645, 2329, 2325, 86, - 2327, 2331, 2339, 86, 2337, 2343, 86, 2332, 2328, 2338, - 2336, 86, 86, 2345, 2340, 2333, 2347, 2334, 2341, 2344, - 2335, 86, 2350, 86, 2349, 86, 2348, 2351, 86, 2339, - 2352, 2342, 2343, 86, 86, 2353, 86, 2355, 2354, 86, - 2345, 2340, 2361, 2347, 86, 2341, 2344, 86, 86, 2350, - - 2356, 2349, 86, 2348, 2351, 2357, 2359, 2352, 2342, 86, - 86, 2360, 2353, 2358, 2355, 2354, 2364, 86, 2363, 2361, - 86, 2362, 86, 86, 86, 2366, 86, 2356, 2369, 86, - 2372, 2365, 2357, 2359, 2367, 86, 3645, 2368, 2360, 86, - 2358, 86, 2373, 2364, 86, 2370, 2371, 2374, 2362, 2375, - 86, 86, 86, 86, 86, 2369, 2376, 2372, 2365, 86, - 2378, 2367, 2377, 2381, 2368, 2379, 3645, 86, 86, 2373, - 2380, 2382, 2370, 2371, 2374, 86, 86, 2384, 86, 86, - 2383, 86, 86, 2376, 2385, 2390, 2386, 2378, 2388, 2377, - 2381, 3645, 86, 86, 2387, 2389, 2391, 86, 2382, 2392, - - 86, 2394, 86, 2396, 2384, 2393, 3645, 2383, 2398, 2395, - 86, 86, 86, 2386, 86, 2388, 2397, 86, 86, 2399, - 86, 2387, 2389, 2391, 86, 2403, 2392, 2401, 2394, 2400, - 86, 86, 2393, 2402, 86, 2398, 2395, 2404, 2406, 3645, - 2405, 2411, 86, 2397, 2407, 86, 2399, 86, 86, 86, - 86, 2410, 2403, 2408, 2401, 86, 2400, 2412, 2409, 86, - 2402, 2413, 2418, 86, 2404, 2406, 86, 2405, 2411, 2414, - 2415, 2407, 86, 2416, 2417, 2419, 86, 2420, 2410, 3645, - 86, 86, 2423, 3645, 2412, 86, 86, 86, 2413, 2418, - 2421, 86, 86, 86, 2422, 2425, 2414, 2415, 2426, 86, - - 2416, 2417, 86, 86, 2420, 2424, 2427, 86, 86, 2423, - 86, 2428, 2429, 2430, 2431, 2432, 2433, 2421, 3645, 2438, - 86, 2422, 2425, 86, 3645, 2426, 86, 86, 86, 2437, - 3645, 3645, 2424, 2427, 86, 2434, 86, 86, 2428, 2429, - 2430, 2431, 2432, 2433, 86, 2435, 2438, 2439, 2440, 2441, - 86, 86, 2442, 2443, 2445, 2444, 2437, 86, 2436, 86, - 2446, 2448, 2434, 2447, 2449, 3645, 86, 2452, 3645, 86, - 86, 86, 2435, 86, 2439, 2440, 2441, 2456, 2450, 2442, - 86, 86, 2444, 2457, 86, 2436, 86, 2446, 2448, 2451, - 2447, 2449, 86, 2453, 2458, 2454, 2461, 86, 170, 86, - - 2455, 2460, 2466, 2459, 2468, 2450, 2467, 2465, 86, 86, - 2462, 2470, 3645, 2472, 2473, 86, 2451, 2469, 86, 86, - 2453, 2458, 86, 86, 2463, 86, 86, 86, 2460, 86, - 2459, 2468, 86, 2467, 2465, 2464, 86, 2462, 2471, 86, - 2472, 86, 2474, 86, 2469, 2475, 2477, 2476, 2478, 2479, - 3645, 2463, 2480, 86, 86, 2482, 86, 2486, 2481, 86, - 86, 2484, 2464, 2485, 86, 2471, 2483, 3645, 86, 2474, - 86, 86, 86, 2477, 2476, 2478, 2479, 86, 86, 2480, - 86, 2488, 2482, 86, 2486, 2481, 2489, 2487, 2484, 2490, - 2485, 86, 2491, 2483, 86, 2492, 2493, 2494, 2495, 86, - - 2496, 2502, 2497, 86, 2498, 3645, 86, 86, 2488, 86, - 2499, 3645, 86, 2489, 2487, 86, 86, 86, 86, 2491, - 2500, 2501, 2492, 2493, 2494, 2495, 2503, 2496, 86, 2497, - 86, 2498, 86, 2504, 86, 2505, 2506, 2499, 2507, 2511, - 2513, 86, 86, 86, 86, 86, 2508, 2500, 2501, 86, - 2509, 2510, 2514, 2503, 86, 2512, 2515, 86, 86, 2518, - 2504, 86, 2505, 2506, 86, 2507, 2511, 2516, 2517, 2519, - 86, 2520, 86, 2508, 2523, 2521, 86, 2509, 2510, 2514, - 86, 2522, 2512, 2515, 86, 2526, 2518, 2524, 86, 86, - 86, 2525, 3645, 2527, 2516, 2517, 2519, 86, 86, 86, - - 2528, 2523, 2521, 2529, 86, 86, 2530, 2536, 2522, 2531, - 2532, 2533, 2526, 2534, 2524, 2537, 2535, 3645, 2525, 86, - 2527, 86, 86, 2538, 2541, 86, 2539, 86, 86, 2540, - 2529, 2542, 2543, 86, 86, 2544, 2531, 2532, 2533, 86, - 2534, 86, 2537, 2535, 86, 2545, 2547, 2548, 2546, 86, - 2538, 86, 86, 2539, 86, 86, 2540, 86, 86, 2543, - 2549, 86, 2544, 2550, 2551, 2553, 2554, 2552, 2556, 2557, - 2558, 86, 2545, 2547, 86, 2546, 86, 2555, 86, 2560, - 2559, 3645, 2564, 86, 3645, 2566, 2580, 86, 2561, 86, - 2550, 86, 86, 2554, 2552, 86, 86, 2558, 86, 86, - - 2562, 86, 2563, 2565, 2555, 2567, 2560, 2559, 86, 86, - 2569, 86, 86, 2568, 86, 2561, 2573, 2570, 86, 2571, - 2574, 2575, 3645, 3645, 86, 2576, 2577, 2562, 86, 2563, - 2565, 86, 2567, 86, 2572, 86, 2579, 2569, 86, 2585, - 2568, 86, 2582, 86, 2570, 86, 2571, 2574, 2575, 2578, - 86, 2581, 2576, 2577, 86, 2583, 2584, 86, 86, 86, - 2586, 2572, 86, 86, 2587, 2589, 2585, 2588, 86, 2582, - 2591, 2594, 86, 2590, 2592, 2593, 2578, 86, 2581, 2595, - 3645, 86, 2583, 2584, 86, 86, 2599, 86, 86, 86, - 2596, 2587, 2589, 2597, 2588, 86, 2600, 86, 2594, 86, - - 2590, 2592, 2593, 2598, 86, 86, 2595, 2601, 2605, 2602, - 2606, 3645, 86, 2599, 86, 2618, 2607, 2596, 3645, 2608, - 2597, 2610, 2611, 2600, 2603, 86, 2604, 2609, 86, 86, - 2598, 2619, 86, 86, 2601, 86, 2602, 2606, 86, 2612, - 86, 86, 2614, 2607, 2613, 86, 2608, 86, 2610, 2611, - 2615, 2603, 2616, 2604, 2609, 2617, 2620, 2622, 2621, 2623, - 3645, 86, 86, 86, 86, 2624, 2612, 86, 3645, 2614, - 86, 2613, 86, 2625, 86, 86, 2626, 2615, 2627, 2616, - 2629, 86, 2617, 2620, 2628, 2621, 2623, 86, 2630, 86, - 86, 86, 2624, 2634, 2631, 2632, 2633, 2635, 86, 3645, - - 2625, 2636, 86, 2626, 2640, 2627, 86, 2629, 2641, 86, - 2637, 2628, 86, 86, 2639, 2630, 2644, 86, 2645, 2638, - 2646, 2631, 2632, 2633, 86, 86, 86, 2642, 2636, 86, - 86, 2640, 86, 2651, 86, 2643, 3645, 2637, 2649, 2652, - 86, 2639, 170, 2644, 86, 2645, 2638, 2646, 2647, 86, - 2648, 86, 2650, 86, 2642, 86, 2653, 2654, 2655, 2656, - 86, 2657, 2643, 86, 3645, 2649, 2652, 2658, 2659, 86, - 2662, 86, 86, 2660, 86, 2647, 86, 2648, 2661, 2650, - 86, 2663, 2664, 2653, 2654, 2655, 2656, 2665, 2657, 2667, - 86, 86, 2668, 86, 2658, 2659, 2666, 86, 2669, 2670, - - 2660, 2672, 2671, 2677, 2673, 2661, 2676, 86, 2663, 86, - 3645, 86, 2675, 2681, 2665, 86, 86, 2674, 86, 86, - 86, 86, 2680, 2666, 86, 2669, 86, 86, 2672, 2671, - 86, 2673, 86, 2676, 2678, 86, 2679, 86, 2682, 2675, - 2681, 3645, 2683, 3645, 2674, 86, 2684, 86, 2685, 2680, - 2687, 2688, 2686, 2689, 3645, 3645, 3645, 86, 86, 2691, - 2692, 2678, 2690, 2679, 86, 86, 86, 86, 86, 2683, - 86, 2696, 2695, 2684, 86, 2685, 86, 2687, 2688, 2686, - 86, 86, 2698, 2693, 2694, 86, 2691, 2692, 2697, 2690, - 86, 86, 2699, 2700, 86, 86, 2701, 3645, 2696, 2695, - - 2703, 3645, 2707, 2702, 86, 2704, 2705, 2709, 86, 2698, - 2693, 2694, 86, 86, 86, 2697, 2708, 2710, 86, 2706, - 2700, 2711, 86, 2701, 86, 86, 2712, 2703, 86, 86, - 2702, 86, 2704, 2705, 2709, 2713, 2714, 2715, 2716, 86, - 2718, 2723, 86, 2708, 2710, 2719, 2706, 2717, 3645, 2720, - 2725, 86, 2724, 86, 86, 86, 2721, 2722, 86, 2726, - 86, 86, 2713, 2714, 2715, 2716, 86, 2718, 2723, 86, - 2727, 2728, 2719, 86, 2717, 86, 2720, 2725, 86, 2724, - 86, 86, 2729, 2721, 2722, 86, 2730, 2731, 2732, 2734, - 2737, 86, 2733, 2735, 86, 2739, 86, 2727, 86, 2736, - - 86, 86, 2738, 86, 2740, 86, 2741, 2743, 2746, 2729, - 2744, 86, 86, 86, 2731, 2732, 2734, 2737, 2742, 2733, - 2735, 86, 86, 2745, 86, 86, 2736, 2748, 86, 2738, - 86, 86, 2747, 86, 2743, 2746, 2751, 2744, 86, 2754, - 86, 2749, 2750, 2753, 2752, 2742, 2755, 2758, 2759, 2756, - 2745, 86, 2757, 2761, 2748, 86, 86, 86, 86, 2747, - 86, 86, 86, 86, 86, 2760, 2754, 2762, 2749, 2750, - 2753, 2752, 86, 86, 86, 2759, 2756, 2763, 86, 2757, - 2761, 2764, 2765, 2766, 2767, 2768, 3645, 2770, 2769, 2771, - 2772, 86, 2760, 86, 2762, 2777, 2773, 2776, 86, 2774, - - 86, 86, 86, 86, 86, 86, 86, 86, 2764, 2765, - 2766, 2767, 2768, 86, 2770, 2769, 2771, 2772, 86, 86, - 2775, 2778, 86, 2773, 2776, 2779, 2774, 86, 2780, 2781, - 2782, 2783, 3645, 2784, 3645, 2785, 3645, 2786, 3645, 86, - 3645, 3645, 2788, 3645, 86, 2793, 2794, 2775, 86, 86, - 2787, 2789, 86, 86, 86, 86, 2781, 2782, 2783, 86, - 2784, 86, 2785, 86, 2786, 86, 86, 2790, 2792, 2788, - 2791, 2795, 86, 2794, 86, 2796, 86, 2787, 2789, 86, - 2797, 2798, 2802, 2800, 2799, 2801, 3645, 3645, 3645, 86, - 2806, 2803, 3645, 2808, 2790, 2792, 86, 2791, 86, 86, - - 86, 2807, 86, 86, 2809, 86, 3645, 2797, 86, 2802, - 2800, 2799, 2801, 86, 2804, 2805, 2810, 86, 2803, 86, - 86, 86, 86, 86, 2811, 2814, 2812, 2813, 2807, 86, - 86, 2809, 2815, 2816, 3645, 2817, 2821, 2818, 86, 3645, - 86, 2804, 2805, 2810, 2819, 86, 2820, 3645, 170, 2828, - 2824, 2811, 2814, 2812, 2813, 86, 86, 86, 86, 2815, - 2816, 86, 2817, 2821, 2818, 2822, 2825, 2826, 2823, 2827, - 86, 2819, 86, 2820, 86, 2829, 86, 2824, 2830, 86, - 2831, 3645, 2832, 2834, 3645, 3645, 3645, 3645, 2833, 86, - 2835, 86, 2822, 2825, 2826, 2823, 2827, 86, 86, 86, - - 2836, 2843, 86, 2841, 86, 2830, 86, 2831, 86, 2832, - 2834, 2837, 86, 2838, 2839, 2833, 2840, 2835, 86, 86, - 2845, 86, 86, 86, 2842, 2844, 86, 2836, 2843, 86, - 2841, 86, 86, 2846, 3645, 2847, 2848, 2849, 2837, 3645, - 2838, 2839, 86, 2840, 2850, 2851, 2853, 2845, 2852, 2854, - 86, 2842, 2844, 2855, 2859, 3645, 2856, 86, 2860, 86, - 2846, 86, 2847, 2848, 86, 86, 86, 86, 2857, 2858, - 86, 2850, 2851, 86, 86, 2852, 2854, 86, 86, 2861, - 86, 2859, 2862, 2856, 2864, 2860, 2863, 2865, 86, 2866, - 2867, 86, 86, 2868, 2869, 2857, 2858, 86, 2870, 2871, - - 86, 2872, 2873, 86, 2877, 2880, 2861, 86, 2879, 2862, - 2876, 2864, 86, 2863, 2865, 2874, 86, 86, 2875, 86, - 2868, 2869, 86, 2878, 86, 2870, 86, 86, 86, 2888, - 86, 2877, 86, 2881, 86, 2879, 86, 2876, 2884, 2882, - 86, 2883, 2874, 2890, 2885, 2875, 86, 2886, 86, 2891, - 2878, 86, 2887, 2889, 86, 2892, 86, 86, 3645, 2893, - 2881, 3645, 2896, 2897, 3645, 2884, 2882, 86, 2883, 86, - 86, 2885, 2894, 86, 2886, 2899, 2891, 86, 86, 2887, - 2889, 2895, 2892, 86, 86, 86, 2893, 86, 86, 2896, - 2897, 2898, 2901, 2900, 3645, 2903, 2905, 2902, 86, 2894, - - 86, 86, 2899, 2904, 2906, 86, 2909, 2914, 2895, 2907, - 2919, 2912, 3645, 3645, 2908, 86, 2910, 2913, 2898, 2901, - 2900, 86, 86, 2905, 2902, 86, 86, 2911, 86, 86, - 2904, 86, 86, 2909, 86, 2915, 2907, 86, 2912, 86, - 86, 2908, 2921, 2910, 2913, 2916, 2917, 2922, 2918, 86, - 2920, 3645, 2923, 86, 2911, 86, 2924, 86, 2925, 2926, - 86, 2930, 2915, 2928, 2932, 86, 86, 2927, 2935, 2921, - 86, 2929, 2916, 2917, 2922, 2918, 86, 2920, 86, 2923, - 2931, 86, 86, 86, 2933, 2925, 86, 86, 2930, 86, - 2928, 86, 2934, 3645, 2927, 86, 2942, 86, 2929, 2936, - - 2937, 2938, 2939, 2940, 2941, 2943, 2944, 2931, 2945, 3645, - 86, 2933, 86, 86, 86, 86, 2946, 2947, 86, 2934, - 86, 86, 86, 86, 2948, 2949, 2936, 2937, 2938, 2939, - 2940, 2941, 2943, 2944, 2950, 86, 2952, 86, 86, 86, - 2951, 2953, 2955, 2946, 2947, 2954, 2957, 86, 86, 2956, - 2958, 2948, 2949, 86, 86, 2959, 2960, 86, 86, 2962, - 86, 2950, 2961, 2952, 86, 2963, 2964, 2951, 2953, 2955, - 86, 86, 2954, 2957, 2967, 2965, 2956, 86, 86, 3645, - 3645, 2966, 86, 2960, 86, 86, 170, 2968, 86, 2961, - 86, 2969, 2963, 2964, 2971, 2970, 2972, 2973, 2974, 2975, - - 2977, 3645, 2965, 2976, 2982, 2978, 86, 86, 2966, 86, - 2987, 2979, 86, 2980, 2968, 2981, 86, 86, 2969, 2984, - 2983, 2971, 2970, 86, 86, 2974, 86, 86, 86, 86, - 2976, 2985, 86, 86, 2991, 86, 86, 2987, 2979, 2986, - 2980, 86, 2981, 86, 2988, 2989, 2984, 2983, 2990, 86, - 86, 86, 2992, 3645, 2993, 2994, 86, 3645, 2985, 2996, - 3645, 2991, 2995, 2997, 3645, 2998, 2986, 86, 3645, 2999, - 3009, 2988, 3000, 3645, 3002, 86, 3001, 86, 86, 2992, - 86, 86, 2994, 86, 86, 86, 2996, 86, 86, 2995, - 2997, 86, 2998, 3003, 86, 3004, 2999, 3005, 3006, 3000, - - 3008, 3002, 86, 3001, 3007, 3012, 3011, 3010, 3013, 86, - 3014, 86, 86, 86, 86, 86, 86, 3015, 86, 3016, - 3003, 3017, 3004, 86, 3005, 3006, 86, 3008, 86, 86, - 3021, 3007, 3012, 3011, 3010, 3013, 3018, 3014, 3019, 86, - 3020, 3022, 86, 3023, 86, 3026, 3016, 3024, 3017, 3025, - 3027, 3028, 86, 86, 86, 86, 86, 3021, 3029, 3030, - 86, 86, 3031, 3018, 3033, 3019, 86, 3020, 3022, 3645, - 86, 3032, 3026, 86, 3024, 3034, 3025, 3027, 86, 3037, - 86, 3035, 3036, 3039, 86, 3029, 3038, 3040, 3041, 3645, - 3043, 86, 3645, 3042, 86, 3045, 86, 86, 3032, 86, - - 86, 86, 86, 3047, 86, 3044, 3037, 3049, 3035, 3036, - 3039, 3046, 86, 3038, 3050, 3041, 86, 3043, 86, 86, - 3042, 3051, 86, 86, 3048, 3053, 3052, 3054, 3055, 86, - 3047, 3645, 3044, 86, 86, 3056, 3057, 3064, 3046, 3062, - 3065, 86, 86, 3063, 3058, 86, 86, 86, 86, 86, - 3061, 3048, 3053, 3052, 3054, 86, 3059, 3066, 86, 86, - 3068, 3060, 3056, 3057, 86, 86, 3062, 86, 3067, 86, - 3063, 3058, 3069, 3070, 86, 3072, 3071, 3061, 3073, 3645, - 3074, 3075, 86, 3077, 86, 86, 86, 3068, 86, 3076, - 3078, 3081, 86, 3082, 3084, 3067, 3645, 3085, 3080, 3069, - - 86, 86, 3072, 3071, 86, 86, 86, 3074, 86, 3079, - 86, 86, 3083, 3091, 3089, 3092, 3076, 3078, 86, 86, - 86, 86, 3086, 86, 3085, 3080, 86, 3087, 3088, 3093, - 3090, 86, 86, 3095, 86, 86, 3079, 86, 3094, 3083, - 3091, 3089, 3096, 3097, 3098, 3104, 3099, 86, 86, 3101, - 3100, 3645, 3645, 3645, 86, 3088, 3093, 3090, 3108, 3106, - 86, 86, 86, 3645, 86, 3094, 86, 86, 86, 3096, - 3097, 3098, 3104, 3099, 86, 86, 3101, 3100, 3102, 3103, - 3105, 3107, 3109, 3112, 3113, 86, 3106, 3645, 86, 86, - 3110, 3120, 86, 3114, 86, 86, 86, 3115, 3111, 3117, - - 3121, 3645, 3116, 3182, 3118, 3102, 3103, 3105, 3107, 3109, - 3112, 3113, 86, 3119, 86, 3122, 3127, 3110, 86, 3123, - 3114, 86, 3124, 3645, 3125, 3111, 86, 3121, 3126, 86, - 3128, 86, 3129, 86, 3130, 86, 3131, 86, 86, 86, - 3119, 86, 3122, 3127, 3132, 86, 3123, 86, 86, 3124, - 86, 3125, 86, 3133, 3134, 3126, 3138, 3128, 86, 3129, - 3135, 3130, 3136, 3131, 3139, 3645, 3137, 86, 3140, 86, - 3141, 3132, 86, 86, 3142, 86, 3144, 3143, 3145, 3146, - 3133, 3134, 86, 86, 3147, 86, 3148, 3135, 3149, 3136, - 3155, 86, 86, 3137, 3150, 3140, 3151, 3141, 86, 86, - - 3152, 86, 3153, 3144, 3143, 86, 3146, 3154, 86, 3156, - 3157, 86, 86, 3148, 86, 86, 86, 86, 86, 3160, - 86, 3150, 3158, 3151, 3159, 3163, 3161, 3152, 3165, 3153, - 3164, 3167, 86, 86, 3154, 86, 86, 3157, 86, 3645, - 86, 3162, 86, 3166, 3168, 3169, 3160, 3170, 86, 3158, - 3171, 3159, 3172, 3161, 86, 3165, 3175, 86, 3167, 3645, - 86, 86, 3173, 3176, 86, 86, 86, 3174, 3162, 3177, - 3166, 3168, 86, 3178, 3170, 86, 86, 86, 3187, 3172, - 3179, 86, 3183, 86, 86, 3180, 3181, 3190, 3185, 3173, - 3176, 3194, 3184, 86, 3174, 3186, 3177, 86, 86, 3189, - - 3178, 86, 86, 86, 86, 3187, 3188, 3179, 3192, 3183, - 86, 3193, 3180, 3181, 3190, 3185, 3191, 86, 86, 3184, - 3195, 86, 3186, 3196, 86, 3198, 3189, 3197, 3199, 86, - 3201, 3200, 86, 3188, 86, 3192, 86, 3202, 3193, 3203, - 3204, 3206, 3205, 3191, 3210, 86, 3645, 86, 3208, 3645, - 86, 86, 3198, 86, 3197, 3199, 86, 3207, 3200, 86, - 3212, 86, 86, 86, 3202, 3209, 3203, 86, 3206, 3205, - 86, 3211, 3213, 86, 86, 3208, 86, 3216, 3214, 3215, - 3217, 3218, 3219, 3220, 3207, 3221, 3645, 86, 86, 3645, - 86, 3225, 3209, 86, 86, 86, 3645, 3222, 3211, 3213, - - 86, 86, 3223, 86, 3216, 3214, 3215, 3217, 3218, 3219, - 3220, 86, 86, 3224, 86, 3226, 86, 3227, 3225, 3229, - 3236, 3230, 3228, 3233, 3222, 3231, 3234, 86, 86, 3223, - 86, 3232, 86, 86, 3237, 86, 3235, 86, 86, 3645, - 3224, 86, 3226, 86, 3227, 3242, 3229, 86, 3230, 3228, - 3233, 3238, 3231, 3234, 3241, 3239, 3243, 86, 3232, 86, - 3240, 86, 3244, 3235, 3245, 3246, 86, 86, 86, 3247, - 3645, 3248, 3242, 3249, 3251, 3250, 86, 3253, 3238, 3252, - 86, 3241, 3254, 86, 86, 3256, 86, 86, 3261, 3244, - 3255, 86, 3246, 86, 86, 86, 3247, 86, 3248, 3257, - - 3249, 86, 3250, 3258, 3253, 3259, 3252, 86, 3260, 3262, - 3264, 3265, 86, 3263, 86, 86, 86, 3255, 86, 3266, - 86, 3267, 3268, 3273, 86, 3269, 3257, 3270, 3271, 86, - 3258, 3276, 3259, 86, 86, 3260, 3645, 86, 3265, 86, - 3263, 86, 86, 3274, 3275, 3277, 3266, 3272, 86, 86, - 3273, 86, 3269, 86, 3270, 86, 3280, 3279, 3278, 3287, - 3285, 86, 3282, 86, 86, 3281, 3283, 3290, 3284, 3286, - 3274, 3275, 3277, 86, 3272, 86, 86, 86, 3288, 3289, - 3292, 3293, 3294, 86, 3279, 3278, 86, 3285, 3291, 3282, - 86, 86, 3281, 3283, 86, 3284, 3286, 86, 3296, 86, - - 3299, 3300, 86, 86, 86, 86, 3289, 3292, 86, 3294, - 3295, 3297, 3298, 3301, 3304, 3291, 86, 3302, 86, 86, - 3303, 86, 86, 3305, 3306, 3307, 3308, 86, 3300, 3309, - 86, 86, 3310, 3311, 86, 86, 3312, 3295, 3297, 3298, - 3301, 86, 3313, 86, 3302, 3314, 3315, 3303, 3316, 86, - 3305, 3306, 3307, 86, 3317, 86, 86, 3318, 3320, 86, - 3311, 3319, 86, 3312, 86, 3321, 3322, 3323, 3324, 3313, - 3325, 86, 86, 86, 3326, 86, 3645, 3645, 86, 3331, - 3327, 86, 86, 3332, 3318, 86, 3328, 86, 3319, 3341, - 86, 86, 3321, 86, 3323, 86, 3329, 86, 3330, 3333, - - 86, 3326, 3335, 86, 86, 86, 3331, 3327, 3334, 3337, - 86, 3336, 3338, 3328, 3339, 86, 86, 3342, 86, 3340, - 3344, 86, 3343, 3329, 86, 3330, 3333, 86, 86, 3335, - 86, 3345, 3346, 3347, 3348, 3334, 3337, 86, 3336, 86, - 3349, 86, 86, 3350, 3342, 3352, 3340, 3344, 3645, 3343, - 3351, 3353, 3354, 86, 3356, 3357, 86, 3355, 3345, 86, - 86, 3348, 86, 3358, 86, 86, 3359, 3349, 3360, 3645, - 86, 3361, 3352, 3645, 86, 86, 86, 3351, 86, 3354, - 86, 3356, 3357, 86, 3355, 3362, 3363, 3374, 86, 3364, - 3358, 3366, 86, 3359, 86, 3360, 86, 3367, 3361, 3365, - - 86, 3368, 3369, 3370, 86, 3371, 86, 3379, 86, 86, - 3373, 86, 3362, 3363, 3372, 3645, 3364, 86, 3366, 86, - 3375, 3377, 3380, 3381, 3367, 3378, 3365, 86, 3368, 3369, - 3370, 3376, 3371, 3382, 86, 3383, 86, 3373, 86, 86, - 3385, 3372, 86, 3384, 3386, 86, 86, 3375, 3377, 86, - 3381, 86, 3378, 3387, 3388, 3389, 86, 86, 3376, 3392, - 86, 3395, 3383, 3390, 3391, 3393, 3394, 86, 3396, 3397, - 3384, 3386, 3398, 3399, 3645, 3401, 3400, 3405, 3402, 3645, - 86, 3645, 86, 86, 86, 86, 86, 86, 3395, 86, - 86, 3403, 86, 3404, 86, 3396, 3397, 3408, 86, 86, - - 3399, 86, 3401, 3400, 86, 3402, 3406, 3407, 3409, 86, - 3410, 3411, 3412, 86, 3413, 86, 3414, 86, 3403, 3416, - 3404, 86, 3415, 86, 3408, 3417, 3418, 3423, 86, 3420, - 3419, 86, 3424, 3406, 3407, 3409, 86, 3410, 3411, 3412, - 86, 3413, 86, 86, 3421, 86, 3416, 3422, 3425, 3415, - 3429, 86, 86, 86, 3427, 3428, 3420, 3419, 3426, 86, - 86, 86, 86, 3432, 3430, 3431, 86, 3433, 3434, 3435, - 3436, 3421, 86, 86, 3422, 3437, 3438, 3429, 3439, 3440, - 86, 3427, 3428, 3441, 3442, 3426, 86, 86, 3443, 86, - 86, 3430, 3431, 86, 3444, 3434, 86, 86, 86, 86, - - 3445, 86, 3437, 3438, 3446, 86, 86, 3447, 3448, 3449, - 3441, 3442, 3450, 3451, 86, 86, 3453, 3454, 3456, 3452, - 3455, 86, 3457, 3458, 3459, 3460, 3645, 86, 3645, 86, - 3461, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 3451, 3462, 86, 86, 86, 3456, 3452, 3455, 3463, 3457, - 86, 3459, 86, 3464, 3465, 86, 3467, 3461, 3466, 3645, - 3468, 3475, 3469, 86, 3470, 86, 3471, 3472, 3462, 86, - 86, 3473, 3474, 3645, 86, 3463, 86, 3645, 3476, 86, - 3464, 86, 3477, 86, 3481, 3466, 86, 3468, 3475, 3469, - 86, 3470, 86, 3471, 3472, 86, 3479, 3478, 3473, 3480, - - 86, 3483, 86, 3485, 86, 3476, 86, 86, 3482, 3477, - 86, 3481, 3486, 86, 3484, 86, 3487, 3489, 3488, 3490, - 86, 3491, 3645, 3479, 3478, 3492, 3480, 3494, 3483, 86, - 3485, 86, 86, 3493, 86, 3482, 3645, 3500, 3645, 3486, - 86, 3484, 3495, 3487, 86, 3488, 86, 3498, 86, 86, - 86, 86, 3492, 3496, 3494, 3497, 3499, 3503, 3501, 86, - 3493, 3502, 86, 86, 3500, 3504, 86, 3505, 3506, 3495, - 86, 86, 3509, 86, 3498, 3507, 86, 86, 86, 86, - 3496, 3508, 3497, 3499, 3503, 3501, 3510, 86, 3502, 3511, - 86, 3512, 3504, 86, 3505, 3506, 3514, 86, 3513, 3509, - - 3515, 86, 3507, 3516, 86, 3519, 3517, 3520, 3508, 3518, - 86, 86, 86, 3510, 3522, 3524, 3511, 3521, 3512, 3523, - 86, 3525, 86, 3514, 3527, 3513, 3528, 86, 86, 3526, - 3516, 86, 3519, 3517, 86, 86, 3518, 86, 3529, 3530, - 3532, 86, 86, 3533, 3521, 86, 3523, 3531, 86, 86, - 86, 3527, 86, 3528, 3535, 3534, 3526, 3536, 3537, 3539, - 86, 86, 3540, 3538, 3541, 3529, 3530, 3532, 86, 86, - 86, 3542, 3543, 3544, 3531, 86, 3545, 3547, 3546, 86, - 86, 3535, 3534, 86, 3536, 86, 86, 86, 86, 86, - 3538, 86, 3548, 3549, 3550, 3551, 3552, 3553, 3542, 3543, - - 86, 3645, 86, 3545, 86, 3546, 3555, 3556, 3554, 3557, - 86, 3558, 86, 3561, 86, 3645, 3562, 3559, 86, 3548, - 3549, 3550, 86, 86, 3553, 3560, 86, 86, 86, 86, - 3563, 3564, 86, 3555, 3556, 3554, 86, 86, 86, 86, - 3561, 3565, 3566, 3562, 3559, 3567, 3568, 3571, 3569, 86, - 3645, 3575, 3560, 86, 86, 3570, 86, 3563, 3564, 86, - 3572, 3576, 3573, 3577, 3578, 3583, 3645, 86, 3565, 3566, - 86, 86, 3567, 3568, 86, 3569, 3574, 86, 86, 3579, - 3580, 3645, 3570, 86, 86, 3582, 3581, 3572, 3576, 3573, - 86, 3578, 3584, 86, 3585, 86, 3586, 86, 3589, 3587, - - 3645, 86, 86, 3574, 3595, 3592, 3579, 3580, 86, 3588, - 3645, 3596, 3582, 3581, 3645, 3594, 86, 86, 86, 86, - 3590, 3585, 86, 86, 3591, 3589, 3587, 3593, 86, 86, - 86, 3595, 86, 3599, 3602, 86, 3588, 86, 86, 3603, - 3597, 3600, 3594, 3598, 3601, 3645, 3645, 3590, 86, 86, - 3604, 3591, 86, 3607, 3593, 86, 3606, 86, 86, 3605, - 3599, 3602, 3609, 3645, 3610, 86, 3603, 3597, 3600, 3645, - 3598, 3601, 86, 86, 3608, 3611, 3612, 3604, 3614, 86, - 3607, 3616, 86, 3606, 3613, 3615, 3605, 3617, 86, 3609, - 86, 3610, 86, 3618, 3621, 3619, 86, 86, 3623, 3645, - - 3645, 3608, 3611, 3612, 3625, 86, 86, 86, 3616, 3620, - 3622, 3613, 3615, 86, 86, 86, 86, 86, 86, 3624, - 3618, 3621, 3619, 3626, 3627, 86, 86, 86, 3629, 3630, - 3628, 3625, 86, 3631, 3632, 3634, 3620, 3622, 86, 3633, - 3636, 86, 86, 3635, 3637, 86, 3624, 3639, 3638, 3643, - 3626, 3627, 3644, 3645, 86, 3629, 86, 3628, 3640, 3645, - 3631, 3632, 86, 86, 3641, 86, 3633, 86, 86, 86, - 3635, 86, 86, 3642, 3639, 3638, 86, 3645, 3645, 86, - 86, 86, 3645, 3645, 3645, 3640, 3645, 3645, 3645, 3645, - 3645, 3641, 3645, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - - 3642, 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, 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, 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, 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 + 443, 437, 86, 450, 455, 479, 445, 464, 444, 463, + 462, 446, 447, 449, 86, 86, 448, 471, 86, 86, + 451, 3682, 86, 86, 3682, 454, 452, 86, 86, 86, + 450, 455, 86, 488, 464, 472, 463, 462, 473, 3682, + 476, 86, 474, 475, 471, 477, 3682, 451, 456, 86, + + 478, 457, 492, 86, 86, 486, 458, 459, 460, 461, + 86, 480, 472, 3682, 481, 473, 86, 86, 482, 474, + 475, 86, 86, 86, 86, 456, 3682, 478, 457, 492, + 86, 483, 486, 458, 459, 460, 461, 465, 480, 466, + 489, 481, 487, 86, 490, 482, 484, 485, 3682, 491, + 3682, 467, 468, 469, 3682, 470, 86, 495, 483, 494, + 86, 86, 86, 499, 465, 493, 466, 489, 3682, 487, + 86, 490, 86, 484, 485, 86, 491, 86, 467, 468, + 469, 86, 470, 496, 495, 498, 494, 497, 3682, 506, + 520, 86, 493, 505, 86, 86, 504, 86, 500, 3682, + + 501, 3682, 3682, 86, 507, 512, 510, 508, 511, 502, + 496, 3682, 498, 509, 497, 86, 503, 86, 86, 519, + 505, 86, 518, 504, 86, 500, 86, 501, 513, 86, + 86, 507, 512, 510, 508, 511, 502, 521, 517, 3682, + 509, 514, 535, 503, 515, 3682, 516, 3682, 86, 518, + 534, 86, 86, 3682, 539, 513, 86, 86, 537, 86, + 536, 3682, 552, 538, 521, 517, 86, 86, 514, 535, + 86, 515, 540, 516, 522, 86, 523, 534, 3682, 542, + 86, 539, 524, 551, 3682, 537, 525, 536, 541, 552, + 538, 526, 86, 553, 527, 86, 86, 3682, 554, 540, + + 86, 522, 557, 523, 559, 555, 542, 3682, 170, 524, + 551, 558, 556, 525, 562, 541, 86, 3682, 526, 86, + 561, 527, 528, 560, 529, 86, 86, 575, 86, 557, + 3682, 559, 555, 563, 86, 568, 564, 530, 558, 556, + 531, 86, 532, 86, 533, 566, 86, 561, 86, 528, + 560, 529, 565, 569, 567, 3682, 3682, 86, 3682, 86, + 563, 570, 568, 564, 530, 86, 572, 531, 86, 532, + 3682, 533, 543, 544, 573, 580, 578, 86, 86, 565, + 569, 567, 545, 546, 547, 548, 549, 571, 570, 550, + 574, 86, 576, 572, 86, 579, 86, 86, 577, 543, + + 544, 573, 86, 578, 581, 86, 86, 86, 86, 545, + 546, 547, 548, 549, 571, 582, 550, 574, 86, 576, + 586, 583, 579, 584, 585, 577, 86, 86, 587, 588, + 3682, 581, 589, 590, 3682, 591, 592, 593, 3682, 86, + 86, 600, 582, 86, 595, 86, 614, 586, 583, 598, + 596, 3682, 86, 86, 594, 587, 588, 86, 86, 589, + 590, 86, 591, 592, 593, 597, 599, 86, 600, 601, + 602, 595, 603, 86, 86, 86, 598, 596, 86, 86, + 86, 594, 616, 615, 617, 86, 604, 605, 618, 619, + 628, 621, 597, 599, 3682, 623, 601, 602, 606, 603, + + 607, 86, 620, 622, 86, 86, 86, 86, 86, 616, + 615, 617, 86, 604, 605, 618, 624, 86, 621, 86, + 626, 86, 623, 3682, 625, 606, 86, 607, 608, 620, + 622, 86, 629, 633, 627, 630, 609, 610, 86, 631, + 611, 612, 632, 624, 613, 634, 86, 626, 86, 86, + 86, 625, 635, 636, 86, 608, 86, 86, 86, 629, + 633, 627, 630, 609, 610, 86, 631, 611, 612, 637, + 640, 613, 634, 638, 86, 86, 641, 642, 643, 635, + 636, 639, 644, 86, 645, 86, 86, 3682, 646, 648, + 86, 86, 647, 86, 650, 651, 637, 640, 649, 86, + + 638, 652, 3682, 641, 642, 643, 86, 86, 639, 644, + 86, 645, 86, 86, 86, 646, 648, 86, 653, 647, + 86, 650, 651, 655, 654, 649, 656, 657, 652, 86, + 658, 660, 86, 661, 659, 662, 86, 86, 664, 666, + 665, 663, 86, 668, 86, 653, 86, 86, 86, 86, + 655, 654, 86, 656, 657, 86, 86, 658, 660, 669, + 661, 659, 662, 667, 670, 664, 666, 665, 663, 672, + 86, 671, 86, 673, 3682, 86, 3682, 681, 674, 677, + 675, 678, 3682, 676, 680, 679, 669, 689, 3682, 86, + 667, 86, 683, 86, 86, 86, 86, 86, 671, 86, + + 673, 86, 86, 86, 684, 674, 677, 675, 678, 86, + 676, 680, 679, 682, 689, 686, 86, 687, 688, 683, + 86, 691, 692, 86, 690, 3682, 694, 685, 86, 706, + 693, 705, 696, 695, 86, 86, 86, 86, 86, 86, + 682, 86, 686, 86, 687, 688, 86, 86, 691, 692, + 707, 690, 86, 694, 685, 708, 706, 693, 705, 696, + 695, 697, 86, 709, 711, 3682, 698, 710, 699, 712, + 3682, 86, 715, 3682, 700, 86, 701, 707, 86, 702, + 703, 3682, 708, 3682, 86, 3682, 704, 86, 697, 86, + 709, 711, 86, 698, 710, 699, 712, 716, 713, 715, + + 720, 700, 714, 701, 721, 718, 702, 703, 719, 3682, + 723, 726, 724, 704, 722, 86, 86, 717, 86, 86, + 86, 725, 86, 86, 716, 713, 727, 720, 728, 714, + 730, 731, 718, 86, 732, 719, 86, 723, 726, 724, + 729, 722, 86, 86, 717, 86, 734, 733, 725, 86, + 741, 738, 735, 727, 86, 728, 86, 730, 731, 86, + 86, 732, 737, 736, 740, 3682, 745, 729, 86, 86, + 742, 86, 86, 734, 733, 739, 86, 741, 738, 735, + 743, 744, 747, 86, 86, 746, 749, 748, 86, 737, + 736, 740, 751, 750, 86, 86, 753, 742, 86, 86, + + 86, 86, 739, 86, 170, 86, 752, 743, 744, 747, + 86, 754, 746, 749, 748, 755, 756, 757, 86, 751, + 750, 758, 759, 753, 760, 761, 3682, 762, 763, 86, + 3682, 3682, 3682, 752, 764, 86, 86, 86, 754, 766, + 86, 86, 755, 756, 86, 765, 86, 770, 773, 759, + 767, 86, 761, 86, 762, 763, 86, 768, 86, 771, + 769, 764, 86, 86, 772, 774, 766, 86, 86, 775, + 776, 777, 765, 778, 770, 773, 779, 767, 780, 782, + 783, 3682, 784, 781, 768, 3682, 86, 769, 86, 785, + 786, 86, 86, 787, 789, 788, 86, 86, 86, 794, + + 86, 86, 86, 790, 3682, 793, 782, 783, 86, 784, + 86, 791, 86, 86, 86, 86, 785, 786, 86, 792, + 787, 789, 788, 798, 796, 86, 795, 86, 86, 799, + 790, 86, 793, 86, 797, 807, 800, 801, 791, 3682, + 3682, 3682, 86, 86, 803, 86, 792, 86, 802, 86, + 798, 796, 804, 795, 86, 808, 799, 805, 806, 809, + 86, 797, 86, 800, 801, 86, 86, 86, 86, 814, + 822, 803, 86, 815, 824, 802, 817, 86, 86, 804, + 3682, 816, 808, 810, 805, 806, 809, 86, 811, 818, + 86, 812, 813, 820, 823, 819, 814, 821, 86, 86, + + 815, 824, 86, 817, 825, 828, 86, 86, 816, 86, + 810, 86, 86, 827, 829, 811, 818, 86, 812, 813, + 820, 823, 819, 830, 821, 832, 826, 86, 831, 86, + 833, 825, 828, 3682, 86, 86, 86, 86, 834, 835, + 827, 829, 836, 837, 86, 86, 86, 845, 838, 839, + 830, 842, 832, 826, 841, 831, 86, 833, 840, 843, + 86, 86, 86, 846, 86, 834, 835, 86, 844, 86, + 837, 86, 847, 848, 849, 838, 839, 86, 842, 86, + 850, 841, 3682, 86, 86, 840, 843, 851, 852, 855, + 846, 857, 853, 854, 859, 844, 86, 86, 3682, 847, + + 856, 863, 86, 858, 86, 86, 86, 850, 86, 86, + 860, 86, 86, 862, 851, 852, 855, 3682, 866, 853, + 854, 871, 861, 86, 86, 86, 86, 856, 863, 867, + 858, 864, 86, 868, 86, 86, 865, 860, 872, 873, + 862, 876, 874, 86, 875, 866, 86, 869, 870, 861, + 877, 86, 878, 86, 881, 86, 867, 86, 879, 3682, + 868, 882, 3682, 86, 86, 872, 873, 86, 876, 874, + 86, 875, 86, 880, 869, 870, 86, 877, 885, 878, + 883, 889, 86, 886, 890, 879, 86, 887, 882, 888, + 884, 86, 86, 891, 892, 893, 894, 897, 907, 3682, + + 880, 895, 86, 86, 86, 86, 86, 883, 889, 86, + 86, 890, 896, 86, 887, 898, 888, 884, 86, 86, + 891, 892, 893, 894, 900, 899, 902, 3682, 895, 86, + 86, 904, 901, 903, 906, 86, 86, 909, 86, 896, + 905, 86, 898, 86, 86, 914, 86, 908, 910, 911, + 86, 900, 899, 902, 86, 86, 912, 86, 904, 901, + 903, 906, 86, 86, 909, 913, 916, 905, 86, 915, + 917, 3682, 914, 86, 908, 910, 911, 86, 86, 86, + 918, 919, 920, 912, 922, 923, 921, 3682, 924, 86, + 86, 3682, 913, 916, 86, 925, 915, 917, 86, 930, + + 3682, 928, 927, 926, 3682, 3682, 86, 918, 919, 920, + 86, 922, 923, 921, 86, 924, 86, 86, 86, 929, + 931, 86, 925, 933, 934, 932, 930, 935, 928, 927, + 926, 86, 86, 86, 938, 936, 937, 86, 939, 86, + 942, 3682, 946, 3682, 86, 3682, 929, 931, 940, 86, + 933, 934, 932, 941, 935, 86, 86, 86, 86, 943, + 86, 938, 936, 937, 944, 939, 945, 942, 947, 949, + 948, 950, 86, 86, 86, 940, 952, 955, 958, 954, + 941, 86, 86, 951, 86, 86, 943, 953, 86, 959, + 170, 944, 86, 945, 86, 947, 949, 948, 950, 956, + + 86, 86, 960, 952, 86, 86, 954, 957, 962, 961, + 951, 86, 963, 3682, 953, 964, 959, 86, 965, 86, + 86, 966, 967, 86, 968, 86, 956, 969, 971, 960, + 970, 86, 3682, 86, 957, 981, 961, 86, 86, 963, + 86, 972, 964, 86, 973, 965, 86, 86, 966, 967, + 86, 86, 3682, 982, 969, 971, 86, 970, 983, 985, + 984, 3682, 981, 86, 86, 3682, 987, 986, 972, 3682, + 3682, 973, 974, 3682, 993, 975, 86, 989, 994, 976, + 982, 86, 977, 86, 86, 983, 985, 984, 86, 978, + 979, 86, 980, 987, 986, 990, 988, 86, 991, 974, + + 86, 993, 975, 3682, 989, 994, 976, 86, 995, 977, + 992, 996, 1005, 1004, 1028, 86, 978, 979, 3682, 980, + 86, 86, 990, 988, 86, 991, 86, 1006, 3682, 1007, + 1008, 3682, 3682, 86, 86, 995, 1010, 992, 86, 1005, + 1004, 86, 1012, 86, 997, 998, 1009, 999, 1015, 86, + 1000, 3682, 1011, 86, 1006, 1001, 1007, 1008, 1013, 86, + 86, 1002, 1003, 1010, 86, 1014, 86, 1017, 1023, 1012, + 86, 997, 998, 1009, 999, 1015, 1016, 1000, 86, 1011, + 1020, 1018, 1001, 1021, 1022, 1013, 1019, 86, 1002, 1003, + 86, 86, 1014, 1024, 1017, 1023, 86, 1030, 1026, 1025, + + 86, 1027, 1029, 1016, 3682, 3682, 1031, 1020, 1032, 86, + 1021, 1022, 86, 86, 86, 1035, 3682, 1036, 1043, 86, + 1024, 86, 86, 86, 1030, 1026, 1025, 86, 1027, 1029, + 1033, 86, 1034, 1031, 86, 1032, 1037, 86, 1038, 1045, + 86, 1039, 1035, 86, 1036, 1040, 1041, 1042, 86, 1044, + 86, 86, 86, 1046, 86, 1048, 1049, 1033, 1047, 1034, + 1050, 86, 1051, 1037, 1053, 1038, 86, 86, 1039, 86, + 86, 86, 1040, 1041, 1042, 1054, 1044, 86, 1055, 1052, + 1056, 1058, 1048, 3682, 1057, 86, 86, 1050, 86, 1051, + 1059, 1060, 1062, 1061, 1063, 3682, 86, 86, 1067, 1064, + + 86, 86, 1054, 1065, 86, 86, 1052, 1056, 1058, 86, + 86, 1057, 86, 1069, 1070, 1066, 86, 86, 86, 1062, + 1061, 1063, 86, 86, 86, 1067, 1064, 1068, 1071, 1072, + 1065, 1073, 86, 1076, 1074, 86, 3682, 1075, 3682, 1077, + 86, 1070, 1066, 86, 1080, 86, 1078, 86, 1079, 86, + 1081, 86, 1083, 3682, 1068, 1071, 86, 86, 1082, 3682, + 1076, 1074, 86, 86, 1075, 86, 1077, 1084, 1085, 86, + 86, 1080, 1090, 1078, 86, 1079, 1086, 1081, 1087, 1083, + 86, 1091, 1093, 1088, 1089, 1082, 86, 3682, 1092, 1094, + 86, 1099, 86, 86, 1084, 1085, 86, 86, 86, 1090, + + 86, 1098, 1101, 1086, 1095, 1103, 1096, 3682, 1091, 1093, + 86, 1089, 86, 86, 1097, 1092, 1094, 1100, 86, 1102, + 1104, 1112, 1107, 86, 86, 86, 86, 86, 1098, 1101, + 86, 1095, 1103, 1096, 1105, 1106, 1109, 1113, 3682, 86, + 86, 1097, 86, 1111, 1100, 1110, 1102, 1104, 1108, 1107, + 1114, 86, 86, 86, 86, 86, 1115, 1118, 1116, 86, + 1117, 1105, 1106, 1109, 1113, 86, 86, 86, 1120, 1119, + 1111, 1121, 1110, 86, 1122, 1108, 1125, 1114, 86, 1124, + 1133, 86, 1123, 1115, 1118, 1116, 86, 1117, 86, 1127, + 86, 1134, 1126, 86, 86, 1120, 1119, 1128, 1121, 86, + + 1129, 86, 1130, 1125, 86, 86, 1124, 1131, 86, 1123, + 86, 1132, 86, 1135, 86, 1136, 1127, 1137, 86, 1126, + 1139, 1138, 1140, 86, 1128, 1148, 86, 1129, 86, 1130, + 86, 1142, 1141, 1149, 1131, 1143, 3682, 1150, 1132, 86, + 1135, 1145, 1153, 1144, 1137, 1146, 3682, 86, 1138, 1147, + 86, 86, 86, 1152, 86, 86, 1155, 86, 1142, 1141, + 1151, 86, 1143, 86, 1150, 86, 1154, 86, 1145, 86, + 1144, 3682, 1146, 86, 86, 86, 1147, 1156, 1157, 1158, + 1152, 1165, 1172, 86, 1161, 1163, 86, 1151, 1164, 1162, + 1166, 1167, 1159, 1154, 1160, 86, 86, 86, 86, 1209, + + 86, 1168, 1169, 86, 1156, 1157, 1158, 86, 1165, 1172, + 86, 86, 1163, 1171, 1182, 1164, 170, 1166, 1167, 1159, + 1173, 1160, 1170, 86, 1174, 86, 86, 86, 1168, 1169, + 86, 86, 1183, 3682, 3682, 1181, 1184, 86, 3682, 3682, + 1171, 1182, 1189, 3682, 86, 1186, 1185, 1173, 86, 1170, + 3682, 1174, 1175, 1188, 1176, 1187, 3682, 1210, 1177, 1183, + 1178, 86, 1181, 86, 86, 1179, 86, 86, 86, 1189, + 1180, 1190, 1186, 1185, 1197, 1193, 86, 1194, 1191, 1175, + 1188, 1176, 1187, 1192, 86, 1177, 86, 1178, 1195, 86, + 86, 1200, 1179, 86, 1201, 1198, 1202, 1180, 1190, 1204, + + 1196, 1197, 1193, 1206, 1194, 1199, 86, 1203, 1207, 86, + 86, 86, 86, 86, 1208, 1195, 86, 86, 1200, 1205, + 1211, 1201, 1198, 1202, 1213, 86, 1204, 1196, 1214, 86, + 1206, 1215, 1199, 86, 1203, 1207, 86, 86, 1224, 86, + 1216, 1208, 1225, 1230, 1226, 1227, 1205, 86, 3682, 86, + 1228, 3682, 1229, 86, 3682, 1214, 86, 86, 1215, 1236, + 86, 3682, 86, 3682, 86, 1224, 1246, 1216, 1217, 1225, + 1230, 1226, 1227, 1218, 86, 1219, 86, 1228, 1231, 1229, + 1233, 1220, 1234, 1232, 1237, 3682, 1221, 1222, 86, 86, + 86, 86, 1235, 1223, 86, 1217, 86, 1238, 86, 3682, + + 1218, 1243, 1219, 86, 1240, 1231, 86, 1233, 1220, 1234, + 1232, 1237, 86, 1221, 1222, 86, 1239, 1241, 1242, 1235, + 1223, 1250, 1245, 1244, 1238, 86, 86, 86, 86, 86, + 1247, 1240, 1248, 1249, 1251, 86, 1252, 3682, 1254, 1257, + 86, 1256, 3682, 1239, 1241, 1242, 86, 3682, 1250, 1245, + 1244, 1255, 86, 1253, 86, 86, 86, 1247, 86, 1248, + 1249, 86, 1259, 1252, 1258, 1254, 86, 3682, 1256, 86, + 86, 86, 1260, 1262, 1261, 1264, 1263, 1265, 1255, 1266, + 1253, 86, 86, 86, 1267, 1269, 86, 3682, 1268, 1259, + 86, 1258, 1274, 1275, 86, 86, 1270, 86, 86, 1260, + + 1262, 1261, 1264, 1263, 1265, 86, 1266, 86, 1271, 1272, + 1273, 1267, 86, 1278, 86, 1268, 86, 86, 1276, 1274, + 1277, 86, 86, 1270, 1280, 86, 86, 1279, 1281, 3682, + 1282, 1283, 1285, 86, 1284, 1271, 1272, 1273, 1286, 86, + 1278, 1287, 1290, 3682, 1288, 1276, 86, 1277, 1289, 86, + 86, 1280, 86, 86, 1279, 1281, 86, 1282, 1283, 86, + 86, 1284, 86, 1293, 86, 1295, 1294, 1291, 1287, 1290, + 86, 1288, 1292, 1296, 1297, 1289, 1298, 86, 1303, 1300, + 1299, 1301, 1302, 86, 1305, 1309, 3682, 86, 86, 86, + 1293, 86, 1295, 1294, 86, 86, 1307, 86, 1304, 86, + + 1296, 1297, 1306, 1298, 1308, 86, 1300, 1299, 1301, 1302, + 86, 86, 1309, 1310, 86, 1311, 86, 86, 86, 1312, + 1315, 86, 1313, 1307, 1314, 1304, 1316, 3682, 1317, 1306, + 1318, 1308, 1320, 1319, 1322, 86, 1323, 86, 86, 1333, + 1310, 86, 1311, 86, 86, 86, 1312, 1315, 86, 1313, + 86, 1314, 1321, 1316, 86, 1317, 1324, 1318, 1325, 1320, + 1319, 1327, 1326, 86, 1329, 3682, 86, 86, 1328, 1330, + 1331, 86, 86, 86, 86, 1334, 86, 86, 1332, 1321, + 1335, 1336, 1337, 1324, 1338, 1325, 86, 86, 1327, 1326, + 1340, 1329, 86, 1339, 86, 1328, 1330, 1331, 1344, 1341, + + 1346, 1342, 1345, 86, 86, 1332, 1343, 86, 1336, 1337, + 86, 1351, 86, 86, 1347, 86, 86, 1348, 1349, 86, + 1339, 86, 86, 1352, 86, 1350, 1341, 86, 1342, 1345, + 86, 1353, 86, 1343, 86, 86, 1359, 1354, 1351, 1355, + 86, 1347, 1356, 1362, 1348, 1349, 1358, 86, 1357, 1360, + 1352, 86, 1350, 86, 86, 86, 1363, 3682, 1353, 1361, + 3682, 86, 1366, 86, 1354, 86, 1355, 1367, 86, 1356, + 1362, 86, 1364, 1358, 1365, 1357, 86, 86, 1370, 1369, + 86, 86, 1371, 86, 1373, 1374, 1361, 86, 86, 1366, + 86, 1372, 86, 86, 1367, 1375, 86, 1376, 1377, 1364, + + 1378, 1365, 1379, 1383, 1380, 1370, 1369, 170, 1381, 1371, + 1382, 1373, 86, 1384, 86, 86, 86, 1386, 1372, 86, + 86, 86, 1375, 86, 1376, 1377, 1385, 1378, 1387, 1379, + 1383, 1380, 86, 86, 1388, 1381, 1389, 1382, 3682, 1390, + 86, 1392, 1393, 1391, 1395, 86, 3682, 1397, 3682, 86, + 1394, 1396, 1400, 1385, 86, 86, 86, 3682, 86, 86, + 86, 1388, 3682, 1389, 86, 86, 1390, 86, 1392, 1393, + 1391, 1395, 86, 1398, 1397, 1399, 1401, 1394, 1396, 86, + 1403, 1402, 3682, 86, 1404, 86, 1405, 1406, 1412, 86, + 86, 1413, 86, 86, 1410, 3682, 1407, 3682, 1408, 1414, + + 1398, 1409, 1399, 1401, 1411, 86, 3682, 1403, 1402, 86, + 86, 1404, 1416, 1405, 1406, 1412, 1415, 86, 86, 86, + 1419, 1410, 1420, 1407, 1417, 1408, 1414, 1421, 1409, 86, + 86, 1411, 86, 1418, 1423, 86, 86, 1422, 86, 1416, + 1424, 1426, 86, 1415, 86, 1425, 1428, 1419, 1427, 1420, + 3682, 1417, 86, 1433, 1421, 1429, 86, 86, 86, 1430, + 1418, 1432, 86, 1431, 1422, 3682, 86, 1424, 1426, 1434, + 86, 3682, 1425, 86, 1441, 1427, 86, 86, 3682, 1435, + 1433, 86, 1429, 86, 1437, 1436, 1430, 86, 1432, 1438, + 1431, 86, 86, 1440, 86, 1442, 1434, 86, 1439, 1443, + + 1445, 1441, 1444, 1446, 1448, 86, 1435, 86, 86, 86, + 86, 1437, 1436, 86, 1449, 1451, 1438, 3682, 3682, 1447, + 1440, 86, 1442, 1454, 86, 1439, 1443, 1445, 1450, 1444, + 1446, 86, 1452, 86, 3682, 86, 86, 1453, 86, 1455, + 1457, 1449, 1451, 1458, 86, 86, 1447, 86, 3682, 1456, + 1454, 86, 86, 1459, 1460, 1450, 1461, 1462, 1463, 1452, + 86, 1465, 1464, 1467, 1453, 1466, 1455, 1457, 86, 86, + 86, 1473, 86, 1470, 1468, 86, 1456, 86, 86, 1469, + 1459, 86, 1471, 1461, 1462, 1463, 86, 86, 1465, 1464, + 1467, 1472, 1466, 1481, 1482, 86, 1483, 86, 1473, 3682, + + 1470, 3682, 3682, 1484, 1487, 86, 86, 86, 3682, 1471, + 3682, 1485, 86, 1488, 3682, 1496, 1486, 1489, 1472, 1474, + 1481, 1482, 1490, 1475, 86, 1495, 1476, 1477, 86, 86, + 1484, 1478, 86, 86, 86, 86, 86, 1479, 1485, 86, + 1488, 1480, 1496, 1486, 1489, 86, 1474, 1492, 86, 1490, + 1475, 1491, 1495, 1476, 1477, 1497, 3682, 86, 1478, 1493, + 1498, 1494, 1500, 1505, 1479, 3682, 1499, 3682, 1480, 1501, + 1504, 1503, 1502, 86, 1492, 1506, 86, 1508, 1491, 86, + 86, 1507, 3682, 86, 86, 1517, 1493, 86, 1494, 1500, + 86, 1509, 86, 1499, 86, 86, 1501, 1504, 1503, 1502, + + 86, 3682, 1516, 86, 1508, 86, 1520, 86, 1507, 1515, + 3682, 86, 1517, 1518, 1519, 86, 1521, 3682, 1509, 1510, + 1522, 3682, 86, 1525, 1511, 3682, 1512, 1523, 1513, 1516, + 1514, 86, 86, 1520, 86, 1524, 1515, 86, 1528, 86, + 1526, 86, 86, 1521, 86, 1527, 1510, 1522, 1530, 1532, + 1525, 1511, 1536, 1512, 1523, 1513, 86, 1514, 1529, 3682, + 1531, 1533, 1524, 86, 1535, 1528, 1534, 86, 1537, 86, + 86, 1538, 86, 86, 86, 1530, 1532, 86, 1539, 1540, + 1541, 1543, 3682, 1542, 86, 1529, 86, 1531, 1533, 1544, + 1548, 1535, 86, 1534, 86, 1537, 86, 86, 1538, 86, + + 1547, 1550, 86, 1545, 1551, 1539, 1540, 1541, 1543, 86, + 1542, 1546, 86, 86, 1549, 1552, 1544, 86, 1553, 1555, + 1556, 1558, 86, 1559, 1554, 3682, 86, 1547, 86, 86, + 1545, 1551, 86, 1560, 1564, 1569, 1557, 86, 1546, 86, + 86, 1549, 1552, 86, 1566, 1553, 1555, 86, 86, 86, + 1559, 1554, 1561, 1562, 86, 86, 1563, 1565, 86, 86, + 1560, 86, 86, 1557, 86, 1567, 1568, 86, 1570, 1571, + 3682, 1566, 1572, 86, 1574, 1578, 1573, 1576, 1577, 1561, + 1562, 3682, 1575, 1563, 1565, 86, 1579, 86, 86, 86, + 86, 86, 1567, 1568, 86, 1570, 1571, 86, 86, 1572, + + 86, 1574, 1578, 1573, 1576, 1577, 1580, 1581, 86, 1575, + 1583, 1582, 3682, 1579, 1584, 1586, 1590, 1585, 1591, 1594, + 3682, 3682, 1587, 3682, 86, 86, 1588, 3682, 3682, 86, + 1592, 1589, 86, 1580, 1581, 86, 1595, 1583, 1582, 86, + 86, 1584, 1586, 86, 1585, 86, 86, 1593, 86, 1587, + 86, 86, 86, 1588, 86, 1597, 1596, 1592, 1589, 1598, + 1599, 1601, 1600, 1595, 86, 1603, 1604, 86, 1602, 86, + 86, 86, 1605, 86, 1593, 1606, 86, 170, 1607, 1608, + 1609, 3682, 1597, 1596, 86, 86, 86, 1599, 1601, 1600, + 1610, 1612, 1603, 1604, 1613, 1602, 1611, 3682, 86, 1605, + + 86, 86, 1615, 86, 1614, 1616, 1608, 86, 1617, 1618, + 86, 1619, 86, 86, 86, 86, 86, 1610, 1612, 86, + 1621, 1613, 1622, 1611, 1620, 3682, 1623, 1630, 1624, 1615, + 86, 1614, 1616, 86, 86, 1617, 1618, 1625, 1619, 1626, + 1629, 1640, 86, 1628, 1627, 86, 86, 1621, 1631, 86, + 86, 1620, 86, 1623, 1630, 1624, 1632, 1633, 86, 1635, + 1634, 86, 1636, 3682, 1625, 1639, 1638, 1629, 86, 86, + 1628, 86, 1637, 86, 1641, 1631, 3682, 1643, 86, 1642, + 1645, 86, 1644, 1632, 1633, 1647, 1635, 1634, 86, 1636, + 86, 86, 1639, 1638, 86, 86, 1648, 86, 1649, 1637, + + 1650, 1641, 1646, 86, 1651, 3682, 1642, 1645, 1652, 86, + 1653, 1655, 1647, 86, 1654, 86, 1658, 1656, 86, 1657, + 86, 86, 86, 1648, 86, 1649, 86, 1650, 86, 1646, + 1659, 1651, 86, 1662, 1663, 1652, 1660, 1653, 1655, 1661, + 1664, 1654, 86, 1658, 1656, 86, 1657, 86, 1665, 86, + 1667, 86, 1668, 86, 1670, 1666, 86, 1659, 3682, 1676, + 1671, 1663, 86, 1660, 86, 86, 1661, 1664, 86, 1672, + 1669, 1675, 1681, 1682, 1673, 1665, 86, 1667, 86, 1668, + 86, 1670, 1666, 86, 1674, 86, 1676, 1671, 1677, 86, + 86, 86, 1678, 1690, 1680, 1679, 1672, 1669, 1675, 1683, + + 86, 1673, 86, 1684, 86, 86, 1685, 1686, 1688, 1689, + 86, 1674, 86, 1687, 86, 1677, 1691, 1692, 1693, 1678, + 86, 1680, 1679, 1697, 86, 86, 1683, 1701, 86, 86, + 1684, 86, 1694, 86, 1686, 1688, 1689, 1698, 1699, 3682, + 1687, 3682, 86, 1700, 86, 1693, 1704, 3682, 86, 86, + 86, 1695, 86, 1696, 1701, 1702, 86, 1703, 86, 1694, + 86, 1705, 1707, 1708, 1698, 1699, 86, 1706, 86, 86, + 1700, 1711, 1713, 1704, 86, 1710, 1712, 1714, 1695, 1709, + 1696, 86, 1702, 86, 1703, 86, 1715, 86, 1705, 1707, + 1708, 1716, 86, 86, 1706, 3682, 1719, 1717, 1720, 1718, + + 1721, 1723, 1710, 86, 86, 86, 1709, 86, 86, 1722, + 86, 1724, 1725, 1715, 86, 1727, 86, 86, 1716, 1728, + 86, 1726, 86, 1719, 1717, 1720, 1718, 1721, 1723, 1730, + 86, 86, 1729, 86, 86, 1732, 1722, 1731, 1733, 1725, + 1739, 1734, 1727, 86, 1735, 86, 1728, 1736, 1726, 86, + 1737, 1741, 86, 86, 1740, 86, 86, 1738, 86, 1729, + 86, 86, 1732, 86, 1731, 86, 1742, 1739, 1734, 3682, + 86, 1735, 1743, 1746, 1736, 1744, 1747, 1737, 1741, 1745, + 1748, 1740, 1749, 86, 1738, 1750, 1752, 86, 86, 3682, + 3682, 1751, 86, 1742, 1759, 3682, 86, 1753, 86, 1743, + + 1746, 1763, 1744, 86, 86, 86, 1745, 86, 86, 1749, + 1755, 1754, 1750, 1752, 1756, 86, 86, 1758, 1751, 1760, + 1764, 1759, 1761, 1762, 1753, 86, 86, 1757, 86, 86, + 1765, 86, 1768, 1766, 86, 86, 1769, 1755, 1754, 1767, + 1776, 1756, 86, 1774, 1758, 86, 1760, 1764, 1770, 1761, + 1762, 1771, 1772, 86, 1757, 1777, 1773, 1782, 86, 86, + 1766, 86, 86, 1769, 86, 86, 1767, 1779, 1778, 1775, + 1774, 86, 86, 86, 86, 1770, 86, 86, 1771, 1772, + 1780, 1783, 86, 1773, 1781, 1784, 1786, 3682, 86, 86, + 1785, 1790, 1787, 1788, 1779, 1778, 1775, 3682, 1789, 1791, + + 3682, 3682, 86, 86, 86, 86, 1793, 1780, 1783, 86, + 86, 1781, 86, 86, 86, 86, 1792, 1785, 1790, 1787, + 1788, 1794, 1796, 86, 86, 1789, 1791, 1795, 86, 1797, + 1798, 3682, 1800, 1793, 86, 86, 1799, 1801, 86, 1802, + 1805, 1804, 3682, 1792, 1803, 86, 3682, 1809, 1794, 1796, + 86, 1808, 86, 86, 1795, 1810, 1797, 1798, 86, 1800, + 86, 1811, 86, 1799, 86, 86, 1802, 1805, 1804, 86, + 1806, 1803, 86, 1807, 1809, 1812, 1813, 86, 1808, 1815, + 86, 1814, 1810, 86, 1816, 1817, 86, 86, 1811, 1819, + 86, 1818, 1820, 1821, 1823, 1822, 3682, 1806, 3682, 86, + + 1807, 86, 1812, 86, 86, 86, 1815, 1824, 1814, 1825, + 86, 1816, 1817, 1826, 1827, 86, 1819, 86, 1818, 1820, + 1821, 86, 1822, 86, 1828, 170, 1829, 3682, 1834, 1830, + 1831, 86, 1832, 86, 1824, 86, 1825, 86, 1835, 86, + 1826, 1827, 1833, 1836, 86, 86, 1838, 3682, 1839, 1840, + 86, 1828, 1842, 1829, 86, 1834, 1830, 1831, 1843, 1832, + 86, 1837, 3682, 1844, 1846, 1835, 86, 1841, 86, 1833, + 1836, 86, 1848, 86, 86, 1839, 1840, 86, 1847, 1842, + 86, 1850, 1845, 1852, 1849, 1843, 86, 1853, 1837, 86, + 1851, 86, 86, 1854, 1841, 86, 86, 1856, 1858, 86, + + 3682, 3682, 86, 1855, 1874, 1847, 86, 1859, 1850, 1845, + 1852, 1849, 86, 86, 1853, 1857, 86, 1851, 3682, 86, + 1854, 1861, 86, 1860, 1856, 1858, 1866, 86, 1862, 1867, + 1855, 86, 86, 86, 1859, 86, 86, 1863, 1868, 1870, + 1864, 1871, 1857, 1872, 1876, 86, 1875, 1873, 1861, 86, + 1860, 86, 1865, 1877, 1869, 1862, 1867, 86, 86, 1881, + 1878, 86, 86, 86, 1863, 1868, 1870, 1864, 1871, 1879, + 1872, 86, 1880, 1875, 1873, 1882, 86, 1884, 1883, 1865, + 1885, 1869, 86, 1886, 1887, 86, 86, 1878, 86, 1888, + 86, 86, 86, 1889, 1890, 86, 1879, 86, 86, 1880, + + 1891, 1892, 1882, 1895, 1884, 1883, 3682, 1885, 86, 1893, + 1886, 1887, 1894, 86, 1897, 1896, 1901, 1898, 3682, 1902, + 1899, 86, 86, 86, 86, 86, 86, 1891, 86, 86, + 86, 1900, 86, 86, 86, 1903, 1893, 86, 86, 1894, + 1904, 1897, 1896, 1901, 1898, 1906, 1902, 1899, 86, 86, + 1905, 1907, 86, 1908, 1909, 1910, 1911, 1913, 1900, 1912, + 3682, 86, 1903, 3682, 3682, 3682, 3682, 1904, 86, 1918, + 86, 86, 1906, 86, 86, 1917, 86, 1905, 1907, 1915, + 1908, 1909, 1910, 1911, 1914, 1916, 1912, 1919, 86, 86, + 86, 86, 86, 86, 1920, 1921, 1918, 1922, 1923, 1930, + + 1925, 1924, 1917, 1926, 1927, 86, 1915, 1929, 86, 3682, + 86, 1914, 1916, 86, 1919, 86, 86, 1931, 3682, 1928, + 86, 1920, 1921, 86, 86, 1923, 1930, 1925, 1924, 86, + 1926, 1927, 86, 1932, 1929, 86, 1933, 1934, 1936, 1939, + 1935, 86, 1937, 1941, 1931, 86, 1928, 1938, 1940, 86, + 1942, 1946, 1944, 1943, 86, 86, 86, 1945, 3682, 1947, + 1932, 86, 3682, 1933, 1934, 1936, 1939, 1935, 86, 1937, + 86, 1949, 86, 86, 1938, 1940, 1951, 86, 86, 1944, + 1943, 86, 1948, 1950, 1945, 1952, 1947, 1954, 1955, 1953, + 86, 86, 3682, 86, 1957, 86, 1962, 1961, 1949, 86, + + 86, 1956, 86, 1951, 1958, 86, 1960, 1959, 3682, 1948, + 1950, 86, 1952, 1964, 1954, 1955, 1953, 1963, 1965, 86, + 86, 1957, 86, 86, 86, 1967, 1966, 1971, 1956, 86, + 1968, 1958, 86, 1960, 1959, 86, 1972, 86, 86, 1975, + 1964, 86, 1969, 1976, 1963, 1965, 1973, 1970, 86, 86, + 1974, 86, 1967, 1966, 1971, 3682, 1993, 1968, 1977, 86, + 1978, 86, 1981, 1972, 1979, 86, 1975, 86, 1980, 86, + 1976, 1985, 1986, 1973, 86, 1988, 1982, 1974, 86, 1983, + 1987, 86, 1984, 1993, 86, 1977, 86, 1978, 86, 1981, + 86, 1979, 1991, 86, 1994, 1980, 1989, 86, 1985, 1986, + + 1992, 1990, 1988, 1982, 1995, 86, 1983, 1987, 1996, 1984, + 1998, 1997, 86, 1999, 2000, 2002, 86, 86, 3682, 1991, + 86, 1994, 2001, 2003, 2006, 2004, 2005, 1992, 86, 3682, + 2010, 1995, 86, 3682, 2007, 86, 86, 86, 1997, 86, + 86, 2000, 2016, 3682, 86, 86, 2011, 86, 86, 2001, + 2003, 2008, 2004, 2005, 2017, 2012, 86, 2009, 2013, 2014, + 2015, 2007, 86, 86, 86, 86, 86, 86, 2025, 2016, + 2021, 2019, 86, 2011, 2018, 86, 2020, 2026, 2008, 86, + 2022, 2017, 2012, 86, 2009, 2013, 2014, 2015, 86, 86, + 86, 2023, 2027, 86, 2028, 2029, 2031, 2021, 2019, 2030, + + 86, 2018, 2032, 2020, 2033, 86, 86, 2022, 86, 86, + 86, 2034, 2024, 2035, 2039, 2036, 86, 2037, 86, 2027, + 86, 2028, 86, 2031, 2038, 86, 2030, 2040, 86, 2032, + 2041, 86, 3682, 86, 86, 2053, 2042, 2044, 2034, 2024, + 2043, 86, 2036, 2045, 2037, 86, 2047, 86, 2046, 3682, + 86, 2038, 2048, 86, 2040, 2057, 2049, 2041, 86, 86, + 2050, 2051, 86, 2042, 2044, 86, 86, 2043, 86, 2052, + 2045, 2055, 2054, 2047, 86, 2046, 170, 2056, 2058, 2048, + 86, 86, 86, 2049, 86, 86, 86, 2050, 2051, 2059, + 2063, 86, 2060, 2061, 2062, 2064, 2052, 86, 2055, 2054, + + 3682, 2066, 86, 2065, 2056, 2058, 2068, 86, 86, 86, + 86, 2067, 2069, 2070, 2073, 2071, 2059, 2063, 86, 2060, + 2061, 2062, 2074, 2072, 3682, 3682, 2076, 86, 2066, 2075, + 2065, 2077, 86, 86, 3682, 3682, 86, 86, 2067, 2069, + 86, 86, 2071, 2079, 86, 2078, 86, 2082, 86, 86, + 2072, 86, 86, 2076, 2080, 86, 2075, 2081, 2077, 2084, + 2083, 2085, 2088, 86, 2090, 2096, 86, 2086, 2087, 86, + 2079, 86, 2078, 3682, 2082, 2089, 86, 86, 2091, 86, + 86, 2080, 86, 2095, 2081, 2092, 2084, 2083, 2085, 2088, + 86, 2090, 2093, 2097, 2086, 2087, 2094, 86, 2098, 86, + + 86, 3682, 2089, 2099, 2103, 2091, 2101, 2100, 86, 86, + 86, 86, 2092, 2106, 86, 86, 2107, 86, 2108, 2093, + 2097, 2102, 2104, 2094, 2105, 2098, 2110, 2115, 86, 86, + 2099, 2103, 2111, 2101, 2100, 86, 2112, 2109, 2116, 86, + 2106, 2113, 86, 86, 86, 86, 2114, 86, 2102, 2104, + 2117, 2105, 86, 86, 86, 2119, 2118, 2120, 86, 2111, + 2121, 86, 3682, 2112, 2109, 2116, 86, 2122, 2113, 2123, + 2125, 86, 2126, 2114, 2124, 2128, 2129, 2135, 2127, 86, + 86, 3682, 86, 2118, 2120, 2130, 2131, 86, 86, 86, + 2133, 86, 86, 2132, 2122, 2143, 2123, 86, 86, 2126, + + 86, 2124, 86, 2129, 2134, 2127, 3682, 2140, 86, 86, + 2141, 2142, 2130, 2131, 86, 86, 86, 2133, 86, 86, + 2132, 2136, 2137, 2138, 2146, 2144, 86, 86, 2139, 2150, + 3682, 2134, 86, 2145, 2140, 2147, 86, 2141, 2142, 2152, + 86, 2148, 86, 2155, 86, 2153, 2149, 2151, 2136, 2137, + 2138, 2146, 2144, 2154, 2159, 2139, 2150, 86, 2156, 86, + 2145, 86, 2147, 2157, 86, 86, 2152, 2160, 86, 2161, + 86, 2158, 2153, 86, 2151, 86, 86, 86, 2163, 2162, + 2154, 86, 2164, 86, 2165, 2156, 86, 2167, 2172, 2168, + 2157, 86, 2166, 3682, 2160, 86, 2161, 2169, 2158, 86, + + 2170, 2171, 2173, 2176, 2175, 2163, 2162, 86, 86, 2164, + 86, 86, 2174, 2178, 86, 86, 2168, 86, 86, 2166, + 86, 2179, 2186, 86, 2169, 86, 2177, 2170, 2171, 2173, + 86, 2175, 86, 2180, 2181, 86, 2182, 2183, 86, 2174, + 2178, 86, 2185, 2184, 86, 2187, 2189, 3682, 2179, 2186, + 2190, 86, 2188, 2177, 86, 2193, 2191, 2192, 2194, 86, + 2180, 2181, 86, 2182, 2183, 86, 86, 2195, 2196, 2200, + 2184, 2198, 2199, 2189, 86, 2201, 2197, 86, 86, 2188, + 86, 86, 86, 2191, 2192, 86, 86, 86, 86, 86, + 86, 2202, 2203, 86, 2195, 2196, 2200, 2205, 2198, 2199, + + 2206, 86, 2201, 2197, 2204, 86, 2207, 2208, 2209, 2212, + 2210, 3682, 2213, 2215, 86, 86, 86, 86, 2202, 2203, + 86, 2214, 2216, 86, 2205, 86, 2211, 2223, 2220, 2218, + 2224, 2204, 86, 86, 2208, 2209, 2212, 2210, 86, 2213, + 86, 86, 2217, 86, 2219, 86, 2221, 2222, 2214, 2216, + 86, 86, 86, 2211, 2223, 2220, 2218, 86, 2225, 2226, + 2228, 2229, 2231, 2230, 2227, 2236, 3682, 86, 86, 2217, + 86, 2219, 86, 2221, 2222, 86, 86, 2232, 3682, 2241, + 2244, 86, 2242, 2237, 2238, 2225, 2226, 86, 2229, 2231, + 2230, 2227, 86, 2233, 2234, 2235, 86, 86, 86, 86, + + 86, 86, 86, 2239, 2232, 2240, 86, 2244, 86, 2242, + 2237, 2238, 2243, 2245, 2248, 2249, 2247, 2250, 2246, 86, + 2233, 2234, 2235, 86, 2253, 86, 2251, 2254, 2256, 86, + 2239, 2252, 2240, 2255, 86, 86, 86, 2257, 2258, 2243, + 2245, 2248, 86, 2247, 86, 2246, 2259, 2261, 2260, 2264, + 86, 2262, 86, 2266, 3682, 2256, 86, 2267, 86, 86, + 2255, 86, 86, 2263, 2257, 86, 2270, 2265, 2268, 2277, + 86, 86, 86, 2259, 2261, 2260, 86, 86, 2262, 2269, + 2274, 86, 2271, 2272, 86, 86, 86, 2275, 170, 2276, + 2263, 2273, 2278, 2270, 2265, 2268, 86, 86, 86, 86, + + 2280, 2279, 86, 2281, 2282, 3682, 2269, 2274, 86, 2271, + 2272, 86, 2283, 2286, 2275, 86, 2276, 2284, 2273, 86, + 2285, 2287, 3682, 2288, 86, 2292, 86, 3682, 2279, 3682, + 2281, 2282, 86, 86, 3682, 86, 86, 86, 2289, 2283, + 2286, 2290, 86, 2293, 2284, 2291, 3682, 2285, 2287, 86, + 2288, 2294, 86, 86, 2295, 2296, 86, 2297, 3682, 2298, + 2300, 86, 2299, 2301, 2304, 2289, 86, 86, 2290, 86, + 2293, 86, 2291, 86, 2302, 2306, 86, 2303, 2294, 86, + 86, 2295, 2296, 2305, 86, 2307, 2298, 2300, 2312, 2299, + 2301, 2311, 86, 86, 86, 2308, 86, 86, 2309, 86, + + 86, 2302, 2306, 2313, 2303, 2315, 86, 2314, 86, 2310, + 2305, 2316, 2307, 2317, 86, 2312, 2321, 2318, 2311, 2319, + 2328, 86, 2308, 86, 86, 2309, 2322, 2326, 86, 86, + 2313, 86, 2315, 2320, 2314, 3682, 2310, 2323, 2316, 86, + 2317, 86, 2327, 86, 2318, 2324, 2319, 86, 86, 2329, + 86, 2325, 86, 2322, 2326, 86, 86, 2330, 2332, 86, + 2320, 2331, 86, 2333, 2323, 2335, 2340, 86, 2334, 2327, + 2336, 2337, 2324, 2338, 2339, 86, 2329, 2342, 2325, 86, + 3682, 2341, 86, 86, 2330, 2332, 86, 86, 2331, 2344, + 86, 2345, 86, 2340, 86, 2334, 86, 2336, 2337, 2346, + + 2338, 86, 2343, 2353, 2342, 2347, 86, 2348, 2341, 86, + 2349, 86, 2350, 2351, 3682, 86, 2344, 86, 2345, 2352, + 86, 86, 86, 2354, 86, 86, 2346, 2364, 86, 2343, + 2353, 2355, 2347, 2363, 2348, 86, 2356, 2349, 2357, 2350, + 2351, 2358, 86, 2362, 2361, 2359, 2352, 86, 86, 2366, + 2354, 86, 2365, 2367, 86, 2369, 86, 3682, 2360, 2368, + 2363, 86, 86, 86, 2374, 2357, 86, 2370, 2358, 2372, + 2362, 2361, 2359, 2371, 2375, 2373, 2366, 86, 86, 2365, + 2367, 86, 2369, 2379, 86, 2360, 2368, 2377, 2378, 86, + 2376, 2374, 86, 2382, 2370, 2384, 2372, 86, 86, 86, + + 2371, 2375, 2373, 86, 2380, 86, 2381, 2386, 86, 2383, + 2379, 2385, 86, 86, 2377, 2378, 86, 2376, 2387, 86, + 86, 2388, 2384, 3682, 86, 86, 2389, 2390, 2391, 2395, + 2392, 2380, 2393, 2381, 86, 2394, 2383, 2398, 2385, 86, + 3682, 86, 86, 86, 2396, 2387, 2397, 2405, 2388, 86, + 86, 86, 86, 2389, 2390, 2391, 2401, 2392, 2399, 2393, + 86, 86, 2394, 2400, 2398, 2403, 86, 2404, 2402, 2410, + 2406, 2396, 2407, 2397, 86, 86, 86, 2408, 86, 2409, + 2411, 2416, 86, 2401, 2412, 2473, 86, 3682, 86, 86, + 86, 2413, 2403, 2418, 2404, 2402, 86, 2406, 3682, 2407, + + 86, 86, 86, 2419, 2408, 2414, 2409, 2411, 86, 86, + 2417, 2412, 2421, 2415, 2422, 2420, 3682, 86, 2413, 86, + 2418, 2423, 2426, 86, 86, 86, 3682, 3682, 2424, 86, + 2419, 2425, 2414, 86, 86, 2430, 2431, 2417, 2428, 2421, + 2415, 2422, 2420, 2429, 86, 2427, 86, 86, 2423, 2426, + 86, 86, 2432, 2433, 86, 2424, 2434, 2436, 2425, 2435, + 2440, 3682, 2430, 2431, 2439, 3682, 2441, 86, 86, 3682, + 86, 86, 2427, 2437, 3682, 86, 3682, 2477, 86, 2432, + 2433, 86, 86, 2434, 2436, 2438, 2435, 86, 2442, 2443, + 2444, 2439, 86, 2441, 2445, 2446, 86, 86, 86, 2447, + + 2437, 86, 2448, 2449, 2450, 2452, 2451, 2454, 86, 86, + 3682, 86, 2438, 86, 2453, 2442, 2443, 2444, 86, 86, + 2464, 2445, 2446, 2458, 86, 86, 2447, 86, 2455, 2448, + 2449, 2450, 2452, 2451, 2454, 2456, 86, 86, 2459, 2460, + 2461, 2453, 86, 2462, 86, 86, 2463, 86, 2457, 86, + 2458, 86, 2466, 2465, 2467, 2455, 86, 3682, 2471, 2469, + 2468, 2470, 2456, 86, 86, 2459, 2460, 2461, 86, 2472, + 2462, 86, 86, 2463, 2478, 2457, 2479, 86, 2480, 86, + 2465, 2467, 86, 86, 2474, 2471, 2469, 2468, 2470, 170, + 2475, 2481, 2482, 2487, 2486, 2476, 2472, 86, 86, 2483, + + 86, 2488, 2489, 2479, 2491, 2480, 86, 2490, 2492, 3682, + 2494, 2474, 86, 2484, 2496, 2493, 86, 86, 2481, 86, + 86, 2486, 86, 2495, 2485, 86, 2483, 86, 2488, 2489, + 86, 2497, 2498, 2499, 2490, 2492, 86, 86, 3682, 86, + 2484, 86, 2493, 2502, 2505, 86, 86, 2501, 2500, 86, + 2495, 2485, 2504, 2503, 86, 86, 86, 86, 2497, 2498, + 2499, 2508, 2507, 2506, 86, 86, 86, 2511, 86, 2509, + 2502, 2505, 86, 86, 2501, 2500, 2510, 2512, 2515, 2504, + 2503, 86, 2518, 2513, 2514, 2516, 86, 86, 2508, 2507, + 2506, 86, 2517, 2520, 86, 86, 2509, 86, 2523, 2519, + + 86, 86, 2521, 2510, 2512, 2515, 86, 86, 2522, 2518, + 2513, 2514, 2516, 2524, 2525, 86, 86, 86, 2529, 2517, + 2520, 86, 86, 2526, 2532, 86, 2519, 2531, 2527, 2521, + 2528, 86, 86, 86, 86, 2522, 86, 2533, 2530, 86, + 2524, 2525, 2534, 86, 2535, 2529, 86, 3682, 2536, 2538, + 2526, 2532, 2539, 2537, 2531, 2527, 86, 2528, 2541, 2542, + 2540, 3682, 86, 2549, 2533, 2530, 86, 86, 2543, 2544, + 86, 2535, 2548, 2551, 86, 2536, 2538, 86, 3682, 2539, + 2537, 86, 2550, 86, 2546, 86, 2542, 2540, 2545, 2547, + 86, 86, 86, 2552, 2553, 2543, 2544, 86, 86, 2548, + + 86, 2557, 2562, 86, 2554, 86, 86, 86, 2558, 2550, + 2555, 2546, 2559, 2556, 2560, 2545, 2547, 2561, 86, 2563, + 2552, 2553, 3682, 2564, 2569, 2565, 2566, 2570, 86, 86, + 2572, 2554, 86, 86, 86, 2558, 86, 2555, 86, 2559, + 2556, 2560, 2567, 2568, 2561, 86, 86, 86, 2571, 86, + 2564, 86, 2565, 2566, 86, 2573, 86, 86, 86, 2574, + 2575, 2576, 2577, 2578, 86, 2579, 2580, 3682, 2581, 2567, + 2568, 2582, 86, 2583, 2586, 2571, 2587, 3682, 86, 2589, + 3682, 86, 2573, 86, 86, 2593, 86, 2575, 2576, 86, + 86, 2584, 2579, 2580, 86, 2581, 86, 2585, 2582, 2588, + + 86, 2586, 2590, 86, 86, 86, 86, 86, 2591, 86, + 2592, 86, 2593, 2594, 2596, 2597, 3682, 3682, 2584, 2599, + 2598, 2600, 2602, 86, 2585, 2603, 2588, 2604, 2595, 2590, + 86, 86, 86, 86, 86, 2591, 2609, 2592, 2605, 86, + 2594, 86, 2597, 2601, 86, 2608, 2599, 2598, 2600, 86, + 86, 86, 2606, 2610, 2604, 2595, 86, 86, 2614, 2607, + 2611, 86, 2612, 86, 2613, 2605, 2615, 3682, 86, 2618, + 2601, 86, 2608, 86, 86, 2616, 86, 2617, 86, 2606, + 2610, 2622, 86, 2619, 2624, 86, 2607, 2611, 2620, 2612, + 86, 2613, 86, 2615, 2623, 86, 2618, 2621, 86, 2625, + + 86, 2628, 2616, 2629, 2617, 2630, 3682, 86, 2622, 86, + 2619, 2624, 86, 2631, 2626, 2620, 2627, 2632, 86, 86, + 2633, 2623, 2634, 86, 2621, 2642, 2625, 86, 86, 2636, + 2629, 2638, 2630, 86, 86, 86, 2635, 2637, 86, 2639, + 2631, 2626, 2643, 2627, 2632, 2640, 2644, 2633, 2641, 2634, + 2645, 86, 86, 86, 86, 2646, 2636, 86, 2638, 2647, + 86, 86, 86, 2635, 2637, 2650, 2639, 86, 2648, 2649, + 2651, 86, 2640, 2644, 86, 2641, 2652, 2645, 2657, 86, + 2653, 86, 2654, 86, 2655, 2658, 2647, 86, 2656, 2659, + 86, 86, 2650, 2660, 86, 2648, 2649, 2651, 86, 2664, + + 86, 2661, 86, 2652, 2663, 2657, 86, 2653, 86, 2654, + 2665, 2655, 2662, 3682, 2669, 2656, 86, 86, 2668, 86, + 2660, 86, 86, 3682, 2666, 86, 2664, 2670, 2661, 2675, + 3682, 2663, 2667, 2673, 2677, 3682, 86, 3682, 3682, 2662, + 86, 2669, 86, 2676, 86, 2668, 2671, 2674, 2672, 170, + 86, 2666, 86, 86, 2670, 86, 86, 2678, 86, 2667, + 2673, 2677, 2681, 2682, 2683, 2679, 2680, 2685, 2686, 2688, + 2676, 2687, 86, 2671, 2674, 2672, 86, 86, 86, 2689, + 2690, 2684, 86, 2691, 2678, 2692, 86, 86, 86, 2681, + 2682, 2683, 2679, 2680, 2685, 86, 86, 86, 2687, 2694, + + 2693, 2695, 86, 86, 2696, 2697, 2689, 2690, 2684, 2698, + 2701, 2699, 3682, 2700, 86, 86, 2702, 86, 86, 86, + 86, 2704, 86, 2703, 2706, 2705, 86, 2693, 2695, 86, + 86, 2696, 2697, 2707, 2708, 2709, 2698, 2713, 2699, 86, + 2700, 2710, 86, 2702, 86, 86, 2712, 2711, 2704, 86, + 2703, 86, 2705, 86, 86, 86, 86, 2714, 2715, 86, + 2707, 2708, 2709, 2716, 86, 2717, 2719, 2722, 2710, 86, + 86, 86, 86, 2712, 2711, 2718, 2720, 2723, 2726, 86, + 86, 2721, 86, 2724, 2714, 2715, 2725, 86, 86, 86, + 2716, 2730, 2717, 2719, 2722, 2729, 2731, 86, 2727, 86, + + 2733, 2732, 2718, 2720, 86, 2726, 86, 2728, 2721, 86, + 2724, 86, 86, 2725, 2734, 86, 86, 86, 2730, 2735, + 2736, 2737, 2729, 86, 3682, 2727, 2739, 2733, 2732, 2738, + 2740, 2743, 2741, 3682, 2728, 2742, 86, 2744, 2747, 86, + 86, 2734, 2745, 86, 86, 86, 2746, 2750, 2737, 2748, + 2752, 86, 86, 2739, 86, 86, 2738, 2740, 2743, 2741, + 2749, 86, 2742, 86, 2744, 2747, 86, 2751, 2753, 2745, + 86, 2754, 2755, 2746, 2757, 86, 2748, 86, 2756, 86, + 2758, 86, 86, 86, 2760, 86, 86, 2749, 2759, 86, + 2761, 86, 2762, 86, 2751, 2753, 86, 2764, 86, 2755, + + 2763, 2757, 86, 2765, 2766, 2756, 2767, 2758, 2768, 3682, + 2769, 2760, 2772, 86, 86, 2759, 2771, 2761, 2770, 2762, + 86, 86, 86, 86, 86, 2773, 2774, 2763, 2776, 2775, + 86, 2777, 2778, 2767, 86, 2768, 86, 2769, 86, 2772, + 2779, 86, 86, 2771, 86, 2770, 2780, 2783, 2781, 86, + 86, 3682, 2773, 2774, 2782, 86, 2775, 86, 2777, 2778, + 2784, 86, 2785, 2786, 3682, 2787, 86, 2779, 2788, 2792, + 86, 2789, 86, 2790, 86, 2781, 2791, 2793, 86, 3682, + 2794, 2782, 86, 86, 86, 2802, 2798, 2784, 2795, 2785, + 2786, 86, 2787, 86, 86, 86, 2792, 2796, 2789, 86, + + 2790, 86, 2797, 2791, 2793, 86, 2801, 2794, 86, 2799, + 86, 2800, 86, 2798, 2803, 2795, 86, 86, 86, 2804, + 2805, 3682, 2806, 2807, 2796, 2808, 3682, 2813, 86, 2797, + 2810, 2809, 2818, 2801, 86, 2811, 2799, 86, 2800, 2812, + 2815, 86, 86, 86, 2814, 2819, 86, 86, 86, 2806, + 2807, 86, 2808, 86, 2813, 86, 86, 2810, 2809, 2818, + 2821, 86, 2811, 2816, 2822, 86, 2812, 2815, 2817, 2820, + 86, 2814, 86, 2823, 86, 2824, 2828, 86, 2825, 2826, + 3682, 2830, 2827, 86, 2832, 2829, 2833, 86, 86, 86, + 2816, 86, 2834, 86, 2831, 2817, 2820, 86, 3682, 86, + + 2823, 86, 86, 2828, 86, 2825, 2826, 86, 2830, 2827, + 2836, 86, 2829, 2833, 2835, 86, 2837, 86, 2839, 86, + 2838, 2831, 2840, 86, 2842, 2841, 2844, 86, 2843, 2847, + 86, 86, 3682, 3682, 2845, 2848, 2846, 2836, 86, 170, + 86, 2835, 2850, 2837, 86, 2839, 86, 2838, 86, 2840, + 86, 2842, 2841, 2844, 86, 2843, 2847, 2851, 2852, 2853, + 2849, 2845, 2848, 2846, 86, 2854, 86, 2855, 2859, 2850, + 86, 2856, 3682, 2857, 3682, 2858, 2863, 86, 3682, 2862, + 86, 86, 2861, 86, 2851, 2852, 2853, 2849, 2860, 3682, + 86, 86, 86, 2867, 86, 2859, 2864, 86, 2856, 86, + + 2857, 86, 2858, 2863, 86, 86, 2862, 2865, 2869, 2861, + 2866, 86, 86, 2871, 2868, 2860, 2873, 86, 2870, 2872, + 2867, 86, 86, 2864, 2874, 86, 2875, 2877, 86, 2879, + 2878, 2876, 86, 86, 2865, 2869, 2881, 2866, 3682, 3682, + 2871, 2868, 86, 2873, 86, 2870, 2872, 86, 86, 2880, + 2882, 2874, 2883, 86, 2877, 2884, 86, 2878, 2876, 86, + 2885, 86, 2886, 86, 86, 2890, 2887, 86, 2891, 2888, + 2889, 2892, 2893, 86, 86, 86, 2880, 2882, 86, 2883, + 86, 86, 2884, 2894, 2896, 2895, 2897, 2885, 86, 2886, + 86, 2898, 2890, 2887, 86, 2891, 2888, 2889, 86, 86, + + 2899, 2903, 2902, 2905, 2904, 86, 2900, 2901, 2906, 86, + 2894, 2896, 2895, 86, 86, 86, 86, 86, 86, 2907, + 2908, 2910, 2912, 2914, 2916, 86, 86, 86, 2903, 2902, + 2905, 2904, 86, 2900, 2901, 86, 2909, 86, 2911, 2913, + 3682, 2918, 2915, 86, 86, 86, 2907, 2908, 2910, 2912, + 86, 86, 2917, 2919, 2922, 2920, 3682, 3682, 3682, 86, + 86, 86, 2929, 2909, 86, 2911, 2913, 86, 2918, 2915, + 86, 2921, 2924, 2930, 3682, 2933, 86, 2923, 86, 2917, + 2919, 2922, 2920, 2925, 86, 2926, 86, 2928, 2927, 2929, + 86, 2931, 2932, 86, 86, 86, 86, 2934, 2921, 2924, + + 86, 86, 86, 86, 2923, 2935, 2936, 2939, 2937, 2938, + 2925, 2941, 2926, 86, 2928, 2927, 2940, 86, 2931, 2932, + 86, 86, 2946, 2942, 2934, 2951, 2948, 3682, 86, 86, + 2943, 2947, 2935, 2936, 2939, 2937, 2938, 86, 86, 86, + 2944, 2945, 86, 2940, 86, 2950, 86, 86, 86, 86, + 2942, 2949, 86, 2948, 2952, 2953, 3682, 2943, 2947, 2955, + 2959, 2954, 86, 2958, 2956, 2957, 2961, 2944, 2945, 2960, + 86, 86, 2950, 2963, 86, 86, 3682, 86, 2949, 2970, + 86, 2952, 86, 86, 86, 2964, 2955, 86, 2954, 2962, + 2958, 2956, 2957, 2961, 86, 86, 2960, 2965, 2971, 86, + + 86, 2966, 2967, 2968, 2969, 86, 86, 2972, 2973, 3682, + 2974, 86, 2964, 2976, 2975, 86, 2962, 2977, 3682, 86, + 86, 86, 86, 2978, 2965, 2971, 86, 2980, 2966, 2967, + 2968, 2969, 86, 2981, 2972, 86, 86, 2974, 2979, 86, + 2976, 2975, 86, 2982, 2977, 86, 86, 2983, 2986, 2984, + 2978, 2985, 86, 2987, 2980, 86, 2989, 2988, 2990, 2993, + 2981, 2991, 3682, 86, 86, 2979, 2995, 2992, 86, 86, + 2982, 86, 3682, 2994, 2983, 86, 2984, 2996, 2985, 86, + 86, 86, 86, 2989, 2988, 170, 2993, 2997, 2991, 86, + 2998, 3000, 3001, 2999, 2992, 3002, 3003, 3004, 86, 86, + + 2994, 3005, 86, 3007, 2996, 3008, 3006, 3010, 3011, 86, + 3013, 3682, 3682, 86, 2997, 86, 3009, 2998, 86, 86, + 2999, 86, 3002, 86, 3004, 86, 3012, 86, 86, 86, + 3007, 86, 3008, 86, 3014, 3011, 3015, 3013, 3016, 86, + 3017, 3018, 3019, 3009, 86, 3682, 86, 3020, 86, 3021, + 3022, 3682, 3025, 3012, 3682, 86, 3023, 3024, 3026, 3029, + 3027, 3014, 86, 3015, 86, 3016, 3028, 86, 86, 3019, + 86, 3033, 86, 86, 3020, 3030, 86, 3022, 86, 3025, + 86, 86, 86, 3023, 3024, 3026, 3029, 3027, 86, 86, + 3031, 3032, 3034, 3028, 3035, 3036, 3037, 86, 3033, 3038, + + 3040, 3682, 3030, 3039, 86, 3041, 3042, 86, 86, 86, + 86, 86, 86, 3043, 86, 3044, 86, 3031, 3032, 3034, + 86, 3035, 3036, 3045, 3049, 3046, 3038, 3040, 86, 3047, + 3039, 86, 3041, 3042, 3048, 86, 86, 3050, 3051, 3055, + 86, 3054, 3044, 86, 3056, 3052, 3053, 86, 86, 86, + 3045, 3049, 3046, 86, 3058, 3057, 3047, 86, 86, 3059, + 86, 3048, 86, 3062, 3050, 86, 3055, 3060, 3054, 3061, + 3063, 86, 3052, 3053, 3064, 86, 3066, 3065, 86, 86, + 3069, 3067, 3057, 3070, 3074, 3682, 86, 3682, 3068, 3682, + 3071, 86, 3073, 86, 3060, 86, 3061, 86, 86, 86, + + 3072, 3064, 86, 3066, 3065, 86, 3075, 86, 3067, 86, + 3070, 86, 86, 86, 3076, 3068, 3077, 3071, 86, 3073, + 3078, 3079, 3080, 3081, 3682, 86, 3083, 3072, 3084, 3082, + 3085, 3088, 3086, 3075, 3682, 3091, 3089, 86, 3682, 3094, + 86, 3076, 86, 3077, 86, 3087, 86, 86, 86, 86, + 3081, 86, 3090, 3083, 86, 86, 3082, 3085, 3092, 3086, + 86, 3093, 3091, 86, 3095, 86, 86, 86, 3096, 3097, + 3098, 3100, 3087, 3101, 3102, 3099, 3103, 3682, 3104, 3090, + 3105, 86, 86, 3107, 86, 3092, 3111, 86, 3093, 86, + 3682, 86, 3112, 86, 3106, 86, 3097, 3098, 86, 3108, + + 3101, 3102, 3099, 86, 86, 3104, 86, 86, 3109, 3110, + 86, 3113, 3114, 86, 3122, 3115, 3208, 86, 86, 86, + 3116, 3106, 86, 3118, 3119, 3117, 3108, 86, 3121, 3125, + 3124, 86, 3120, 3682, 86, 3109, 3110, 86, 3113, 86, + 3126, 3123, 3115, 86, 86, 3127, 86, 3128, 86, 86, + 3118, 3119, 86, 86, 3130, 3121, 86, 3124, 3129, 3120, + 86, 3131, 86, 3137, 86, 3132, 3133, 3126, 3123, 3134, + 3135, 86, 3127, 3136, 3128, 86, 86, 3138, 86, 86, + 86, 3130, 3139, 3682, 3144, 3129, 3140, 86, 3131, 3142, + 3137, 86, 3132, 3133, 3141, 86, 3134, 3135, 3143, 3150, + + 3136, 3151, 86, 86, 86, 3152, 86, 3145, 3153, 3139, + 86, 3144, 3146, 3140, 3147, 3149, 3142, 3154, 3156, 3148, + 3682, 3141, 3155, 86, 3682, 3143, 86, 86, 3151, 86, + 3157, 86, 3152, 3158, 86, 3153, 3159, 86, 3160, 86, + 86, 3164, 3149, 86, 3154, 3156, 86, 3161, 86, 3155, + 3162, 86, 86, 3163, 3165, 3166, 3168, 3157, 86, 86, + 3158, 86, 86, 3159, 3167, 3160, 3169, 3682, 3164, 86, + 3170, 86, 3171, 3172, 3161, 86, 3175, 3162, 3174, 3682, + 3163, 3165, 3166, 86, 86, 3173, 3177, 86, 3176, 3178, + 3179, 3167, 3180, 86, 86, 3182, 3181, 3170, 3682, 3171, + + 86, 3186, 3183, 86, 3187, 3174, 86, 3184, 86, 3185, + 86, 86, 3173, 86, 86, 3176, 3178, 86, 86, 3180, + 86, 3188, 86, 3181, 3189, 86, 3192, 3190, 86, 3183, + 3191, 86, 3193, 3196, 3184, 86, 3185, 3197, 86, 86, + 3194, 3199, 86, 3198, 86, 3195, 86, 86, 3188, 3200, + 3202, 3189, 3201, 3192, 3190, 86, 3203, 3191, 3205, 3193, + 3196, 3206, 3207, 86, 3197, 86, 86, 86, 3199, 86, + 3198, 3204, 86, 86, 3211, 3209, 86, 86, 3214, 3201, + 86, 3212, 3210, 3203, 86, 3205, 3213, 3682, 86, 3207, + 86, 3215, 3217, 86, 3216, 3218, 86, 3219, 3204, 86, + + 86, 3211, 3209, 3223, 3221, 3233, 86, 3220, 3212, 3210, + 86, 3226, 3227, 3213, 86, 3222, 86, 86, 3215, 3217, + 3228, 3216, 3218, 86, 3219, 86, 86, 3229, 3231, 86, + 3223, 3221, 3224, 3230, 3220, 3225, 86, 86, 86, 86, + 86, 3232, 3222, 3234, 3235, 86, 3236, 86, 3237, 3238, + 3239, 3242, 3240, 3682, 3229, 3231, 86, 86, 86, 3224, + 3230, 3244, 3225, 86, 86, 86, 86, 3245, 3232, 3241, + 3234, 3235, 3248, 86, 86, 3237, 3238, 3239, 86, 3240, + 3243, 3246, 86, 86, 3247, 3249, 3253, 3682, 86, 3250, + 86, 3254, 3251, 86, 3245, 3252, 3241, 3257, 86, 3248, + + 3255, 86, 86, 86, 86, 86, 86, 3243, 3246, 3256, + 3258, 3247, 3249, 86, 86, 3259, 3250, 3260, 3254, 3251, + 86, 3261, 3252, 86, 3257, 86, 86, 3255, 86, 3262, + 3266, 3263, 3682, 3264, 3265, 3268, 3256, 3258, 86, 86, + 86, 3269, 3259, 3274, 3260, 3267, 86, 3270, 3261, 3271, + 3273, 86, 86, 3275, 3272, 86, 3262, 3266, 3263, 86, + 3264, 3265, 86, 86, 86, 3276, 3277, 3278, 86, 3280, + 3274, 86, 3267, 3279, 3270, 3281, 3282, 3273, 86, 3283, + 86, 86, 3284, 3285, 86, 3286, 86, 3288, 3293, 86, + 3682, 86, 3276, 86, 3278, 3287, 3280, 3289, 86, 86, + + 3279, 86, 3281, 3282, 3290, 86, 86, 3291, 3292, 3284, + 3285, 3294, 3295, 3296, 86, 86, 86, 86, 3682, 86, + 86, 3298, 3287, 3300, 3289, 3297, 86, 3299, 86, 3301, + 86, 3290, 3302, 3303, 3291, 3292, 3304, 3306, 3309, 3295, + 86, 3313, 3682, 86, 86, 86, 3311, 86, 3298, 3307, + 86, 3308, 3297, 86, 3299, 3305, 86, 3310, 86, 3302, + 3303, 86, 3312, 86, 3306, 86, 3315, 86, 86, 86, + 86, 3314, 3316, 3311, 3317, 3320, 3307, 3318, 3308, 3319, + 3682, 3321, 3305, 86, 3310, 3322, 86, 3323, 3324, 3312, + 86, 3325, 86, 3315, 3326, 3327, 86, 86, 3314, 3316, + + 86, 3317, 3328, 3329, 3318, 3332, 3319, 86, 86, 86, + 86, 3333, 3322, 86, 3337, 3324, 3334, 86, 3325, 86, + 3336, 86, 3327, 3330, 3331, 86, 86, 3340, 3335, 3328, + 86, 3338, 86, 86, 86, 86, 3341, 3339, 3333, 86, + 3342, 86, 3343, 3334, 3344, 86, 3345, 3336, 86, 3347, + 3330, 3331, 3346, 3348, 3340, 3335, 3349, 3350, 3338, 86, + 3353, 3351, 3355, 86, 3339, 3682, 86, 86, 3354, 86, + 3356, 3344, 3357, 3345, 86, 86, 86, 3352, 86, 3346, + 86, 86, 3358, 86, 86, 3359, 3360, 3365, 3351, 86, + 86, 86, 86, 86, 3362, 3354, 3361, 3356, 3363, 86, + + 3364, 86, 86, 86, 3352, 3366, 86, 3367, 3371, 86, + 3369, 3368, 3359, 3360, 86, 86, 3372, 86, 3370, 3373, + 3374, 3362, 3375, 3361, 86, 3363, 86, 3364, 86, 86, + 3380, 3376, 3366, 3377, 3367, 86, 86, 3369, 3368, 86, + 3378, 3379, 3381, 86, 3382, 3370, 3373, 86, 3383, 3375, + 3384, 3386, 86, 3387, 3388, 86, 3389, 86, 3376, 3385, + 3377, 86, 86, 3390, 3682, 3391, 86, 3378, 3379, 86, + 86, 3382, 86, 3393, 86, 3383, 86, 3392, 3386, 86, + 86, 3388, 86, 3389, 86, 86, 3385, 3394, 3395, 3396, + 3390, 3397, 3391, 3408, 3398, 86, 3399, 3400, 3682, 86, + + 3393, 86, 86, 86, 3392, 3405, 86, 3404, 86, 86, + 3682, 3401, 3682, 86, 3394, 3395, 3396, 3406, 3397, 3402, + 3403, 3398, 86, 3399, 3400, 86, 3407, 86, 3409, 86, + 3410, 3412, 3405, 86, 3404, 3411, 3413, 86, 3401, 86, + 3414, 3415, 3416, 3417, 3406, 86, 3402, 3403, 3418, 3419, + 86, 3421, 3426, 3407, 3420, 3409, 86, 3410, 3412, 86, + 3422, 3423, 3411, 86, 86, 86, 86, 86, 3415, 86, + 3417, 3424, 3425, 3427, 3428, 3418, 86, 3430, 86, 86, + 3429, 3420, 3432, 3431, 3433, 3434, 3682, 3435, 3436, 86, + 3437, 3439, 3682, 86, 3438, 86, 3440, 86, 86, 86, + + 86, 86, 86, 86, 3430, 86, 3442, 3429, 86, 86, + 3431, 3433, 3434, 86, 3435, 3436, 86, 3437, 86, 3441, + 3443, 3438, 3444, 3440, 3445, 3446, 86, 3447, 3448, 3449, + 3450, 3682, 3451, 3442, 3452, 3453, 86, 86, 3455, 3458, + 86, 3454, 86, 3460, 3459, 86, 3441, 3443, 86, 3444, + 86, 3445, 3446, 86, 3447, 3448, 86, 3450, 86, 3451, + 86, 86, 86, 3456, 3462, 3455, 3457, 3461, 3454, 86, + 3464, 86, 3463, 3465, 3466, 86, 86, 3467, 86, 3468, + 3470, 86, 86, 3471, 3682, 3469, 3472, 3473, 3474, 3475, + 3456, 3462, 86, 3457, 3461, 86, 3477, 3464, 86, 3463, + + 3465, 3466, 3476, 3478, 86, 86, 86, 86, 3479, 86, + 86, 86, 3469, 3472, 3473, 86, 86, 3480, 3481, 3482, + 86, 3483, 3484, 3477, 3485, 3486, 86, 3488, 3489, 3476, + 86, 3493, 3487, 3492, 3494, 86, 3496, 3682, 3490, 3495, + 86, 3497, 3491, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 3486, 86, 86, 86, 86, 86, 3493, 3487, + 3492, 86, 3498, 86, 3499, 3490, 3495, 3500, 3497, 3491, + 3501, 3502, 3503, 3504, 3510, 3511, 86, 3505, 3508, 86, + 3506, 86, 86, 86, 3507, 3509, 3512, 86, 86, 3498, + 3682, 3499, 3682, 86, 3500, 3513, 3682, 86, 3502, 86, + + 3504, 86, 3511, 86, 3505, 3508, 86, 3506, 86, 86, + 86, 3507, 3509, 3512, 3514, 3515, 3516, 3517, 3519, 3520, + 86, 3521, 3513, 86, 3518, 3524, 86, 3522, 86, 3523, + 86, 3525, 3526, 3527, 3528, 86, 3529, 86, 3682, 86, + 86, 3514, 3515, 3516, 3517, 3519, 3520, 86, 3521, 86, + 3530, 3518, 3524, 86, 3522, 3531, 3523, 3532, 86, 86, + 86, 86, 3533, 3529, 86, 3534, 3536, 3535, 86, 86, + 3537, 3682, 3539, 3538, 3545, 86, 3540, 3530, 86, 3541, + 3543, 3682, 3531, 86, 3532, 86, 86, 86, 86, 3533, + 86, 86, 3534, 3536, 3535, 86, 3542, 3537, 86, 3539, + + 3538, 3545, 3544, 3540, 86, 86, 3541, 3543, 3546, 3547, + 3548, 3549, 3550, 3551, 3552, 3553, 3682, 86, 3555, 3557, + 3682, 86, 86, 3542, 86, 3554, 86, 3559, 3561, 3544, + 3558, 86, 86, 3560, 86, 3546, 3547, 3548, 3549, 3550, + 3551, 86, 3553, 3556, 3562, 3555, 86, 86, 86, 3564, + 86, 3565, 3554, 3563, 86, 86, 86, 3558, 3682, 86, + 3560, 86, 3566, 3567, 3568, 3569, 86, 3570, 3571, 3682, + 3556, 86, 3682, 3572, 3573, 86, 3564, 86, 3565, 3574, + 3563, 86, 3576, 3577, 86, 86, 3575, 3578, 86, 3566, + 3567, 3568, 3569, 86, 3580, 3571, 86, 3581, 3583, 86, + + 3572, 3573, 86, 3579, 3582, 3584, 86, 86, 3585, 86, + 86, 3587, 3682, 3575, 86, 86, 86, 3586, 3588, 86, + 3589, 3580, 3594, 3682, 86, 3583, 3590, 3591, 3682, 3592, + 3579, 3582, 86, 3593, 86, 3585, 86, 86, 3587, 86, + 3595, 86, 3596, 3599, 3586, 3682, 3598, 3682, 86, 86, + 86, 3597, 86, 3590, 3591, 86, 3592, 3600, 86, 86, + 3593, 3601, 3603, 3602, 86, 3604, 86, 86, 3608, 3596, + 3599, 86, 3605, 3598, 3606, 3607, 86, 3611, 3597, 86, + 86, 3612, 3610, 86, 3600, 86, 3609, 3614, 3601, 3603, + 3602, 86, 3604, 86, 3613, 86, 86, 86, 3615, 3605, + + 3616, 3606, 3607, 3619, 3611, 3620, 3617, 3618, 86, 3610, + 3682, 86, 3621, 3609, 3622, 3623, 86, 3624, 3625, 86, + 3629, 3613, 86, 3626, 86, 3615, 86, 3616, 86, 86, + 3619, 3632, 3633, 3617, 3618, 3631, 86, 86, 3627, 86, + 86, 3622, 86, 86, 3624, 3625, 86, 3628, 3630, 86, + 3626, 3634, 86, 3637, 3635, 86, 86, 86, 3632, 86, + 3636, 86, 3631, 3638, 3641, 3627, 3640, 3643, 86, 86, + 3639, 86, 3682, 3648, 3628, 3630, 3644, 3651, 3634, 3646, + 3637, 3635, 86, 3647, 86, 3642, 86, 3636, 3645, 3682, + 3638, 3641, 86, 3640, 3643, 86, 86, 3639, 3649, 86, + + 3648, 3652, 86, 3644, 86, 86, 3646, 3653, 3650, 86, + 3647, 3654, 3642, 3655, 3657, 3645, 86, 3656, 86, 3659, + 3658, 3660, 86, 86, 3682, 3649, 3682, 86, 3652, 3662, + 3663, 3661, 86, 86, 3653, 3650, 3667, 86, 86, 86, + 3655, 3657, 86, 3666, 3656, 3664, 3659, 3658, 86, 3670, + 3671, 86, 86, 86, 3665, 3673, 3662, 3663, 3661, 3668, + 3669, 3674, 86, 86, 3672, 3675, 3682, 86, 86, 86, + 3666, 3676, 3664, 3677, 3680, 86, 3670, 86, 3681, 3682, + 3682, 3665, 86, 3682, 86, 86, 3668, 3669, 86, 3678, + 3682, 3672, 3675, 86, 3679, 86, 3682, 86, 3676, 3682, + + 3677, 86, 86, 3682, 3682, 86, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3678, 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, 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[10488] = +static const flex_int16_t yy_chk[10609] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2795,13 +2821,13 @@ static const flex_int16_t yy_chk[10488] = 7, 7, 7, 33, 7, 8, 8, 8, 8, 32, 8, 9, 9, 9, 10, 10, 10, 19, 51, 51, - 1142, 19, 3653, 3, 32, 33, 4, 67, 67, 5, - 33, 6, 2962, 13, 13, 13, 13, 7, 13, 14, + 1150, 19, 3690, 3, 32, 33, 4, 67, 67, 5, + 33, 6, 2990, 13, 13, 13, 13, 7, 13, 14, 14, 14, 14, 8, 14, 15, 15, 15, 9, 25, - 1142, 10, 11, 11, 11, 11, 11, 11, 12, 12, + 1150, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 16, 16, 16, 34, 28, 84, 84, 13, 11, 45, 295, 25, 25, 14, 12, 34, - 39, 23, 15, 23, 23, 45, 23, 1154, 28, 177, + 39, 23, 15, 23, 23, 45, 23, 1162, 28, 177, 11, 28, 23, 39, 34, 28, 12, 176, 87, 11, 45, 16, 87, 295, 37, 12, 30, 39, 29, 56, 37, 174, 56, 72, 30, 28, 26, 169, 100, 23, @@ -2825,12 +2851,12 @@ static const flex_int16_t yy_chk[10488] = 38, 43, 73, 38, 73, 73, 95, 73, 111, 97, 38, 43, 38, 38, 104, 43, 43, 38, 95, 104, 79, 38, 79, 79, 58, 79, 111, 38, 220, 86, - 38, 86, 86, 97, 86, 223, 97, 38, 40, 985, + 38, 86, 86, 97, 86, 223, 97, 38, 40, 991, 86, 104, 40, 89, 96, 89, 89, 112, 89, 98, 57, 96, 40, 40, 89, 40, 112, 103, 103, 106, 105, 52, 98, 47, 40, 40, 103, 223, 105, 40, - 985, 96, 151, 98, 112, 225, 98, 106, 151, 40, + 991, 96, 151, 98, 112, 225, 98, 106, 151, 40, 40, 89, 40, 41, 103, 103, 41, 105, 102, 98, 107, 106, 108, 41, 102, 109, 102, 41, 41, 151, 228, 108, 109, 107, 106, 41, 113, 225, 115, 102, @@ -2913,1030 +2939,1044 @@ static const flex_int16_t yy_chk[10488] = 322, 316, 324, 329, 333, 345, 324, 337, 323, 336, 335, 325, 326, 328, 330, 327, 327, 339, 336, 333, 329, 0, 332, 331, 0, 332, 330, 329, 335, 337, - 329, 333, 345, 352, 337, 340, 336, 335, 0, 0, - 341, 339, 0, 0, 339, 342, 342, 329, 334, 340, - - 338, 334, 338, 350, 0, 341, 334, 334, 334, 334, - 352, 0, 340, 344, 343, 338, 334, 341, 338, 343, - 342, 350, 342, 342, 338, 334, 354, 338, 334, 338, - 350, 347, 348, 334, 334, 334, 334, 344, 346, 351, - 344, 346, 338, 347, 348, 338, 343, 353, 346, 355, - 349, 349, 354, 354, 356, 357, 356, 351, 347, 348, - 349, 358, 360, 363, 359, 346, 351, 357, 346, 353, - 360, 0, 362, 361, 353, 355, 355, 349, 349, 359, - 361, 356, 357, 358, 362, 364, 366, 364, 358, 360, - 368, 359, 0, 366, 367, 363, 364, 369, 370, 362, - - 361, 376, 0, 364, 370, 371, 0, 371, 374, 399, - 375, 364, 364, 366, 364, 372, 367, 377, 0, 369, - 370, 367, 368, 364, 369, 370, 374, 373, 372, 371, - 364, 370, 371, 376, 371, 374, 375, 375, 378, 381, - 373, 399, 372, 373, 377, 373, 381, 0, 0, 383, - 382, 373, 384, 0, 373, 0, 385, 0, 0, 410, - 378, 383, 387, 0, 384, 378, 381, 373, 382, 385, - 373, 388, 373, 379, 382, 379, 383, 382, 387, 384, - 390, 379, 392, 385, 388, 379, 387, 392, 391, 387, - 379, 410, 390, 379, 0, 382, 0, 393, 388, 379, - - 379, 396, 379, 394, 393, 387, 391, 390, 379, 394, - 0, 395, 379, 396, 392, 391, 0, 379, 393, 395, - 379, 380, 397, 380, 393, 398, 400, 400, 396, 0, - 394, 393, 402, 398, 408, 401, 380, 403, 395, 380, - 397, 380, 401, 380, 0, 402, 403, 380, 380, 397, - 380, 405, 398, 400, 0, 0, 408, 415, 405, 402, - 406, 408, 401, 380, 407, 409, 380, 406, 380, 403, - 380, 389, 389, 403, 411, 404, 407, 409, 405, 412, - 413, 389, 389, 389, 389, 389, 412, 406, 389, 415, - 414, 407, 409, 404, 417, 413, 389, 404, 389, 389, - - 411, 411, 404, 414, 418, 417, 412, 413, 389, 389, - 389, 389, 389, 421, 416, 389, 416, 414, 419, 419, - 404, 417, 420, 422, 421, 423, 418, 0, 424, 420, - 429, 418, 425, 0, 422, 427, 0, 430, 423, 431, - 421, 416, 426, 426, 437, 430, 451, 419, 428, 420, - 422, 431, 423, 424, 425, 424, 429, 429, 427, 425, - 426, 432, 427, 428, 430, 433, 431, 426, 434, 426, - 426, 428, 432, 451, 433, 428, 437, 435, 435, 438, - 439, 434, 441, 442, 0, 440, 446, 426, 432, 435, - 428, 435, 433, 443, 445, 434, 435, 438, 0, 443, - - 441, 0, 439, 444, 435, 435, 438, 439, 440, 441, - 446, 447, 440, 446, 0, 442, 435, 445, 435, 436, - 443, 445, 448, 450, 444, 449, 452, 436, 436, 448, - 444, 436, 436, 447, 454, 436, 455, 450, 447, 0, - 456, 436, 453, 0, 459, 457, 436, 490, 452, 448, - 450, 449, 449, 452, 436, 436, 453, 457, 436, 436, - 454, 454, 436, 456, 458, 460, 459, 456, 455, 453, - 458, 459, 457, 461, 462, 463, 464, 0, 465, 490, - 466, 461, 463, 469, 467, 464, 468, 460, 470, 462, - 471, 458, 460, 465, 473, 0, 0, 492, 469, 461, - - 461, 462, 463, 464, 466, 465, 467, 466, 461, 468, - 469, 467, 471, 468, 470, 470, 472, 471, 474, 478, - 473, 473, 472, 474, 476, 478, 480, 482, 479, 492, - 481, 484, 480, 482, 483, 488, 494, 485, 484, 0, - 487, 0, 487, 472, 488, 474, 478, 479, 481, 487, - 476, 476, 485, 480, 482, 479, 483, 481, 484, 489, - 491, 483, 488, 493, 485, 0, 489, 487, 494, 487, - 495, 496, 497, 491, 502, 497, 498, 500, 501, 0, - 499, 493, 0, 0, 496, 504, 489, 491, 503, 500, - 493, 497, 495, 499, 505, 503, 501, 495, 496, 497, - - 498, 506, 497, 498, 500, 501, 502, 499, 507, 504, - 510, 508, 504, 509, 506, 503, 508, 505, 514, 509, - 511, 513, 512, 515, 521, 516, 505, 0, 506, 514, - 507, 515, 522, 510, 512, 507, 521, 510, 508, 516, - 509, 0, 511, 513, 505, 514, 526, 511, 513, 512, - 515, 521, 516, 517, 519, 522, 520, 523, 517, 522, - 517, 519, 520, 525, 524, 523, 517, 0, 517, 526, - 528, 517, 517, 526, 525, 0, 531, 0, 517, 517, - 517, 519, 528, 520, 523, 517, 524, 517, 527, 529, - 525, 524, 527, 517, 531, 517, 533, 528, 517, 517, - - 535, 530, 534, 531, 530, 517, 0, 532, 533, 529, - 527, 529, 530, 534, 536, 527, 529, 532, 536, 527, - 538, 0, 540, 533, 535, 537, 541, 535, 530, 534, - 542, 530, 537, 539, 547, 539, 529, 544, 541, 532, - 548, 536, 543, 545, 532, 542, 538, 538, 540, 540, - 546, 545, 537, 541, 543, 546, 547, 542, 548, 550, - 539, 547, 551, 544, 544, 549, 553, 548, 554, 543, - 545, 550, 556, 549, 555, 557, 558, 546, 0, 559, - 0, 560, 565, 551, 553, 569, 550, 559, 558, 551, - 557, 554, 549, 553, 560, 554, 562, 555, 561, 563, - - 564, 555, 557, 558, 556, 562, 559, 565, 560, 565, - 561, 567, 566, 568, 564, 566, 570, 569, 571, 572, - 573, 575, 563, 562, 574, 561, 563, 564, 577, 584, - 567, 570, 576, 575, 572, 578, 580, 574, 567, 566, - 568, 580, 578, 570, 573, 578, 572, 573, 575, 579, - 571, 574, 577, 578, 576, 577, 581, 582, 583, 576, - 579, 584, 578, 585, 586, 587, 588, 593, 580, 578, - 581, 588, 578, 589, 590, 592, 579, 591, 594, 0, - 590, 597, 589, 581, 582, 583, 594, 595, 596, 593, - 585, 586, 591, 600, 593, 601, 603, 587, 588, 592, - - 589, 590, 592, 597, 591, 594, 595, 598, 597, 599, - 605, 598, 596, 604, 595, 596, 600, 599, 602, 603, - 600, 607, 604, 603, 609, 602, 606, 601, 610, 608, - 609, 612, 605, 614, 598, 611, 599, 605, 0, 606, - 604, 608, 612, 611, 615, 602, 0, 607, 607, 619, - 610, 609, 613, 606, 616, 610, 608, 624, 612, 613, - 622, 627, 611, 623, 617, 614, 615, 616, 618, 617, - 624, 615, 617, 617, 620, 619, 619, 618, 621, 613, - 625, 616, 622, 620, 624, 623, 628, 622, 617, 621, - 623, 617, 625, 627, 629, 618, 617, 630, 0, 617, - - 617, 620, 632, 631, 628, 621, 633, 625, 635, 637, - 0, 634, 636, 628, 640, 638, 0, 635, 629, 630, - 630, 629, 634, 637, 630, 631, 632, 639, 633, 632, - 631, 641, 636, 633, 639, 635, 637, 638, 634, 636, - 642, 640, 638, 645, 643, 644, 630, 646, 642, 641, - 643, 647, 648, 649, 639, 653, 644, 651, 641, 650, - 650, 645, 646, 652, 653, 654, 658, 642, 660, 656, - 645, 643, 644, 648, 646, 659, 655, 649, 654, 648, - 649, 651, 653, 647, 651, 652, 657, 661, 650, 655, - 652, 656, 654, 662, 657, 662, 656, 659, 658, 663, - - 660, 664, 659, 655, 665, 666, 669, 671, 667, 665, - 0, 661, 664, 657, 661, 668, 670, 672, 0, 666, - 662, 663, 667, 674, 670, 671, 663, 675, 664, 668, - 668, 676, 666, 673, 671, 667, 665, 668, 669, 672, - 673, 682, 668, 670, 672, 678, 677, 675, 679, 674, - 674, 676, 680, 683, 675, 683, 668, 668, 676, 681, - 673, 677, 680, 679, 681, 684, 692, 682, 682, 686, - 677, 0, 687, 677, 680, 679, 685, 678, 688, 680, - 683, 687, 694, 693, 685, 690, 689, 688, 677, 680, - 684, 681, 684, 690, 686, 689, 686, 691, 692, 687, - - 694, 701, 695, 685, 691, 688, 693, 696, 697, 694, - 693, 0, 690, 689, 695, 698, 699, 697, 700, 696, - 702, 704, 706, 698, 691, 699, 703, 702, 706, 695, - 700, 0, 708, 701, 696, 697, 704, 0, 705, 703, - 699, 0, 698, 699, 748, 700, 705, 702, 704, 706, - 707, 709, 699, 703, 711, 708, 710, 715, 707, 708, - 709, 712, 712, 711, 713, 705, 714, 710, 717, 716, - 712, 748, 713, 719, 714, 718, 721, 707, 709, 715, - 0, 711, 716, 710, 715, 0, 719, 723, 712, 712, - 724, 713, 721, 714, 717, 717, 716, 720, 718, 722, - - 719, 724, 718, 721, 726, 720, 0, 725, 727, 723, - 728, 735, 722, 729, 723, 725, 730, 724, 726, 730, - 731, 733, 732, 736, 720, 734, 722, 739, 727, 735, - 733, 726, 728, 729, 725, 727, 736, 728, 735, 737, - 729, 738, 731, 730, 732, 734, 0, 731, 733, 732, - 736, 740, 734, 741, 755, 0, 738, 737, 742, 739, - 745, 743, 746, 747, 744, 750, 737, 0, 738, 747, - 0, 749, 745, 740, 743, 746, 752, 741, 740, 749, - 741, 742, 744, 751, 757, 742, 755, 745, 743, 746, - 747, 744, 750, 754, 752, 756, 761, 749, 749, 758, - - 760, 754, 756, 752, 762, 751, 749, 757, 764, 760, - 751, 757, 763, 759, 758, 759, 765, 764, 765, 775, - 754, 769, 756, 762, 772, 778, 758, 760, 761, 766, - 778, 762, 763, 769, 772, 764, 766, 775, 776, 763, - 759, 779, 781, 765, 783, 780, 775, 0, 769, 793, - 0, 772, 778, 781, 789, 793, 766, 767, 782, 776, - 767, 0, 779, 780, 767, 776, 784, 767, 779, 781, - 783, 783, 780, 785, 767, 767, 793, 767, 0, 786, - 795, 782, 767, 787, 767, 782, 789, 767, 786, 785, - 788, 767, 784, 784, 767, 813, 787, 788, 791, 794, - - 785, 767, 767, 795, 767, 791, 786, 795, 794, 0, - 787, 792, 796, 0, 797, 796, 801, 788, 790, 790, - 798, 790, 813, 799, 790, 791, 794, 800, 801, 790, - 797, 799, 802, 792, 802, 790, 790, 797, 792, 796, - 803, 797, 798, 801, 790, 790, 790, 798, 790, 800, - 799, 790, 805, 804, 800, 806, 790, 797, 804, 802, - 0, 807, 790, 790, 803, 808, 811, 803, 809, 810, - 0, 815, 805, 807, 814, 812, 816, 817, 0, 805, - 0, 806, 806, 821, 816, 804, 815, 808, 807, 820, - 811, 810, 808, 811, 809, 809, 810, 812, 815, 814, - - 817, 814, 812, 816, 817, 818, 819, 822, 820, 821, - 821, 823, 818, 824, 819, 826, 820, 825, 827, 822, - 828, 829, 830, 827, 823, 834, 825, 835, 833, 836, - 826, 831, 818, 819, 822, 835, 831, 837, 823, 824, - 824, 838, 826, 829, 825, 827, 0, 839, 829, 830, - 833, 840, 828, 842, 835, 833, 841, 834, 843, 837, - 844, 836, 846, 831, 837, 847, 848, 845, 849, 852, - 850, 839, 840, 838, 839, 841, 845, 849, 840, 844, - 842, 850, 851, 841, 846, 843, 848, 844, 847, 846, - 851, 854, 847, 848, 845, 849, 852, 850, 853, 855, - - 856, 860, 857, 861, 858, 0, 864, 867, 0, 851, - 854, 857, 858, 863, 862, 865, 853, 862, 854, 860, - 867, 861, 866, 870, 864, 853, 855, 869, 860, 857, - 861, 858, 856, 864, 867, 863, 868, 870, 868, 865, - 863, 862, 865, 871, 866, 869, 872, 875, 871, 866, - 870, 873, 874, 876, 869, 875, 878, 877, 879, 872, - 877, 881, 882, 868, 874, 878, 879, 888, 884, 0, - 883, 876, 888, 872, 875, 871, 883, 873, 873, 874, - 876, 885, 879, 878, 877, 879, 881, 885, 881, 882, - 884, 886, 887, 879, 888, 884, 889, 883, 886, 887, - - 891, 892, 890, 889, 891, 893, 895, 894, 885, 899, - 897, 0, 896, 900, 893, 894, 902, 899, 886, 887, - 890, 901, 898, 889, 892, 897, 900, 891, 892, 890, - 896, 903, 893, 898, 894, 902, 899, 897, 895, 896, - 900, 904, 901, 902, 903, 905, 906, 908, 901, 898, - 907, 910, 909, 911, 906, 914, 912, 907, 903, 909, - 911, 912, 914, 904, 915, 908, 916, 913, 904, 917, - 910, 915, 905, 906, 908, 913, 918, 907, 910, 909, - 911, 919, 914, 912, 920, 921, 922, 923, 925, 918, - 0, 915, 921, 924, 913, 927, 925, 920, 916, 926, - - 928, 917, 929, 918, 930, 931, 928, 926, 932, 935, - 0, 920, 921, 919, 926, 925, 924, 927, 922, 923, - 924, 933, 927, 937, 934, 0, 926, 928, 929, 929, - 933, 939, 932, 936, 926, 932, 930, 931, 934, 941, - 936, 935, 940, 938, 941, 943, 0, 942, 933, 944, - 937, 934, 938, 939, 948, 940, 945, 940, 939, 942, - 936, 945, 948, 947, 950, 951, 940, 950, 943, 940, - 938, 941, 943, 946, 942, 944, 944, 957, 951, 953, - 946, 948, 940, 945, 940, 947, 958, 954, 960, 955, - 947, 950, 951, 953, 954, 955, 967, 962, 0, 959, - - 946, 967, 0, 957, 957, 961, 953, 961, 0, 958, - 963, 959, 965, 958, 954, 960, 955, 956, 964, 956, - 962, 971, 963, 956, 962, 956, 959, 966, 967, 968, - 956, 964, 961, 971, 965, 956, 969, 963, 973, 965, - 966, 956, 974, 970, 956, 964, 956, 968, 971, 969, - 956, 972, 956, 973, 966, 970, 968, 956, 975, 977, - 980, 972, 956, 969, 974, 973, 970, 979, 976, 974, - 970, 975, 977, 972, 976, 978, 981, 982, 972, 983, - 984, 980, 970, 986, 1003, 975, 977, 980, 972, 979, - 989, 987, 988, 978, 979, 976, 987, 991, 981, 989, - - 988, 992, 978, 981, 995, 0, 0, 984, 993, 982, - 996, 983, 991, 0, 994, 986, 1003, 989, 987, 988, - 990, 993, 0, 992, 991, 990, 0, 990, 992, 994, - 995, 995, 996, 990, 997, 993, 999, 996, 990, 990, - 998, 994, 1000, 1005, 1002, 990, 990, 990, 1001, 999, - 1000, 998, 990, 997, 990, 1002, 1001, 1004, 1005, 1006, - 990, 997, 1007, 999, 1010, 990, 990, 998, 1006, 1000, - 1005, 1002, 990, 1007, 1008, 1001, 1009, 1011, 1014, 1004, - 1012, 1015, 1016, 1008, 1004, 1009, 1006, 1012, 1018, 1007, - 1016, 1010, 1017, 1019, 1020, 1023, 1026, 0, 0, 1024, - - 1011, 1008, 1018, 1009, 1011, 1015, 1027, 1012, 1015, 1016, - 1014, 1038, 1021, 1023, 1017, 1018, 1020, 1024, 1025, 1017, - 1021, 1020, 1023, 1028, 1027, 1019, 1024, 1029, 1026, 1025, - 1030, 1028, 1036, 1027, 1031, 1032, 1033, 1030, 1034, 1021, - 1035, 1040, 1032, 1038, 1044, 1025, 0, 1031, 1043, 1029, - 1028, 1033, 1040, 1036, 1029, 1043, 1034, 1030, 1035, 1036, - 1037, 1031, 1032, 1033, 1042, 1034, 1044, 1035, 1040, 1046, - 1037, 1044, 1045, 1048, 1047, 1043, 1049, 1042, 1055, 0, - 1045, 0, 1046, 1047, 1050, 1048, 1053, 1037, 1056, 1054, - 1057, 1042, 1058, 0, 0, 0, 1046, 1059, 1049, 1045, - - 1048, 1047, 1074, 1049, 1055, 1055, 1050, 1054, 1053, 1059, - 1058, 1050, 1060, 1053, 1062, 1068, 1054, 1066, 1063, 1058, - 1056, 1067, 1057, 1063, 1059, 1062, 1060, 1065, 1068, 1066, - 1065, 1069, 1070, 1072, 1074, 0, 1076, 1071, 1069, 1060, - 1073, 1062, 1068, 1070, 1066, 1067, 1071, 1072, 1067, 1075, - 1063, 1077, 1073, 1065, 1065, 1078, 1075, 1065, 1069, 1070, - 1072, 1079, 1082, 1077, 1071, 1081, 1083, 1073, 1076, 1086, - 0, 0, 1083, 1084, 1079, 1085, 1075, 1078, 1077, 1088, - 1086, 1087, 1078, 1089, 1095, 1096, 1082, 1093, 1079, 1082, - 1092, 1081, 1081, 1083, 1090, 1084, 1086, 1085, 1093, 1087, - - 1084, 1088, 1085, 1094, 1097, 1089, 1088, 1100, 1087, 1090, - 1089, 1092, 1096, 1099, 1093, 1102, 1095, 1092, 1098, 1101, - 1104, 1090, 1097, 1102, 1094, 1103, 1106, 1098, 1101, 1105, - 1094, 1097, 1103, 1100, 1100, 1107, 1108, 1099, 1109, 1110, - 1099, 1111, 1102, 1105, 1104, 1098, 1101, 1104, 1112, 1113, - 1115, 1118, 1103, 1116, 0, 1120, 1105, 1117, 1106, 0, - 1109, 1110, 1116, 1119, 1117, 1109, 1110, 1107, 1108, 1121, - 1112, 1122, 1115, 1111, 0, 1112, 0, 1115, 1123, 1124, - 1116, 1113, 1120, 1118, 1117, 1119, 1125, 1121, 1124, 1122, - 1119, 1126, 1127, 1128, 1125, 1129, 1121, 1131, 1122, 1130, - - 1123, 1133, 1132, 1134, 1137, 1123, 1124, 0, 1130, 1128, - 1132, 1135, 1131, 1125, 1136, 1126, 1127, 1129, 1126, 1127, - 1128, 1139, 1129, 1135, 1131, 1144, 1130, 1140, 1141, 1132, - 1143, 1137, 1138, 1133, 1139, 1134, 1136, 1141, 1135, 1143, - 1138, 1136, 1140, 1144, 1146, 1145, 1146, 1149, 1139, 1150, - 1148, 1151, 1144, 1145, 1140, 1141, 1153, 1143, 1148, 1138, - 1152, 1160, 1155, 1153, 1158, 1157, 1159, 1156, 1150, 1162, - 1163, 1146, 1145, 1151, 1149, 1155, 1150, 1148, 1151, 1156, - 1157, 1165, 1152, 1153, 1159, 1164, 1158, 1152, 1160, 1155, - 1161, 1158, 1157, 1159, 1156, 1166, 1164, 1161, 1168, 1167, - - 1169, 1162, 1163, 1165, 1171, 0, 1170, 1172, 1165, 1173, - 1177, 1168, 1164, 1169, 1179, 1172, 1171, 1161, 1174, 1181, - 1166, 1167, 1166, 1179, 1175, 1168, 1167, 1169, 1170, 1173, - 1174, 1171, 1175, 1170, 1172, 1178, 1173, 1177, 1180, 0, - 1181, 1179, 1182, 0, 1183, 1174, 1181, 1185, 1178, 1182, - 1180, 1175, 1186, 1183, 1187, 1183, 1188, 1189, 1183, 1190, - 0, 0, 1178, 1191, 1193, 1180, 1183, 1192, 0, 1182, - 1185, 1183, 1190, 1193, 1185, 1192, 1187, 1189, 1186, 1186, - 1183, 1187, 1183, 1188, 1189, 1183, 1190, 1191, 1194, 1195, - 1191, 1193, 1196, 1197, 1192, 1198, 1199, 1200, 1201, 1202, - - 1196, 1204, 0, 0, 0, 1223, 1194, 1202, 1197, 1205, - 1200, 1195, 1206, 1208, 1201, 1194, 1195, 0, 1199, 1196, - 1197, 1209, 1207, 1199, 1200, 1201, 1202, 1198, 1204, 1207, - 1211, 1205, 1210, 1212, 1206, 1208, 1205, 1223, 1213, 1206, - 1208, 1215, 1211, 1214, 1209, 1212, 1213, 1217, 1209, 1207, - 1210, 1216, 1214, 1215, 1226, 1218, 1221, 1211, 1219, 1210, - 1212, 1222, 1217, 1218, 1219, 1213, 1220, 1214, 1215, 1224, - 1214, 1216, 1226, 1222, 1217, 1220, 1224, 1221, 1216, 1214, - 1225, 1226, 1218, 1221, 1228, 1219, 1227, 1225, 1222, 1229, - 1232, 1230, 1228, 1220, 1233, 1231, 1224, 1231, 1227, 1230, - - 1236, 1234, 1232, 1237, 1229, 0, 1238, 1225, 1234, 1241, - 1239, 1228, 1242, 1227, 1240, 1237, 1229, 1232, 1230, 1238, - 1241, 1240, 1231, 1243, 0, 1252, 1233, 1248, 1234, 1239, - 1237, 1246, 1236, 1238, 1242, 1244, 1241, 1239, 1243, 1242, - 1244, 1240, 1247, 1245, 1246, 1250, 1251, 1255, 1256, 1269, - 1243, 1245, 1265, 1248, 1248, 1253, 1247, 1252, 1246, 1250, - 1271, 1259, 1269, 1254, 1251, 1255, 0, 1244, 1309, 1247, - 1245, 1249, 1250, 1251, 1255, 1249, 1269, 1257, 1249, 1249, - 1256, 1253, 1253, 1249, 1265, 1254, 1258, 1259, 1259, 1249, - 1254, 1261, 1271, 1249, 1260, 1309, 0, 1249, 1249, 1257, - - 1260, 1262, 1249, 1262, 1257, 1249, 1249, 1263, 1258, 1266, - 1249, 1268, 1267, 1258, 1263, 1264, 1249, 1261, 1261, 1267, - 1249, 1260, 1270, 1272, 1264, 1262, 1273, 1266, 1262, 1274, - 1262, 1270, 1275, 1268, 1263, 1277, 1266, 1278, 1268, 1267, - 0, 0, 1264, 1280, 1280, 0, 1275, 1279, 1273, 1270, - 1278, 0, 1274, 1273, 1281, 1272, 1274, 1277, 0, 1275, - 1276, 1283, 1277, 1284, 1278, 1276, 0, 1276, 1286, 1276, - 1281, 1276, 1280, 1279, 1279, 1284, 1285, 1286, 1276, 1287, - 1288, 1281, 1289, 1285, 1283, 1288, 1290, 1276, 1283, 1291, - 1284, 1290, 1276, 1297, 1276, 1286, 1276, 1287, 1276, 1293, - - 1289, 1292, 1294, 1285, 1298, 1296, 1287, 1295, 1299, 1289, - 1294, 1291, 1288, 1290, 1292, 1295, 1291, 1293, 1296, 1300, - 1301, 1302, 1304, 1299, 1303, 1297, 1293, 1311, 1292, 1294, - 1298, 1298, 1296, 1301, 1295, 1299, 1305, 1303, 1300, 1308, - 1304, 1306, 1307, 1302, 1307, 1310, 1300, 1301, 1302, 1304, - 1306, 1303, 1312, 1315, 1311, 0, 1305, 1310, 1314, 1316, - 1317, 1308, 1318, 1305, 1319, 1320, 1308, 1316, 1306, 1307, - 1321, 1319, 1310, 1322, 1326, 1315, 1327, 1312, 1317, 1312, - 1315, 1331, 1314, 1327, 1323, 1314, 1316, 1317, 1324, 1318, - 1323, 1319, 1320, 1325, 1324, 1322, 1321, 1321, 1328, 1325, - - 1322, 1326, 1329, 1327, 1333, 1330, 1332, 0, 1328, 1334, - 1335, 1323, 1330, 1331, 1337, 1324, 0, 1340, 1338, 1335, - 1325, 1339, 1333, 1343, 1342, 1328, 1329, 1341, 1332, 1329, - 1338, 1333, 1330, 1332, 1334, 1339, 1334, 1335, 1337, 1340, - 1341, 1337, 1343, 1344, 1340, 1338, 1342, 1345, 1339, 1349, - 1343, 1342, 1347, 1346, 1341, 1348, 1354, 1355, 1349, 1352, - 1350, 1358, 0, 1351, 0, 1344, 0, 0, 1362, 1356, - 1344, 1345, 1357, 1352, 1345, 1346, 1349, 1348, 1347, 1347, - 1346, 1350, 1348, 1351, 1359, 1361, 1352, 1350, 1354, 1355, - 1351, 1356, 1360, 1358, 1357, 1362, 1356, 1363, 1365, 1357, - - 1360, 1361, 1359, 1368, 1363, 1366, 1367, 1371, 1373, 1369, - 1372, 1359, 1361, 1370, 1366, 1368, 1369, 1370, 1375, 1360, - 1365, 1376, 0, 1367, 1363, 1365, 1379, 1376, 0, 1373, - 1368, 1377, 1366, 1367, 1376, 1373, 1369, 1378, 1377, 1371, - 1370, 1379, 1372, 1380, 1378, 1382, 1381, 1384, 1376, 1384, - 1375, 1385, 1383, 1379, 1376, 1381, 1380, 1387, 1377, 1383, - 1385, 1386, 1388, 1389, 1378, 0, 1388, 1391, 1393, 1394, - 1380, 1382, 1382, 1381, 1384, 1391, 1392, 1393, 1385, 1383, - 1395, 1392, 1404, 1386, 1387, 1389, 1397, 1394, 1386, 1388, - 1389, 1396, 1400, 1405, 1391, 1393, 1394, 1398, 1397, 1395, - - 1398, 1401, 1402, 1399, 1396, 1406, 1399, 1395, 1392, 1398, - 1400, 0, 1407, 1397, 1404, 1402, 1405, 1407, 1396, 1400, - 1405, 1406, 0, 1408, 1398, 1399, 1401, 1398, 1401, 1402, - 1399, 1408, 1406, 1399, 1409, 1409, 1410, 1411, 1412, 1414, - 1413, 0, 1415, 1419, 1407, 1410, 1416, 1417, 1414, 1415, - 1408, 1422, 1423, 0, 1417, 1426, 1419, 0, 0, 1411, - 1412, 1409, 1413, 1410, 1411, 1412, 1414, 1413, 1416, 1415, - 1419, 1420, 1421, 1416, 1417, 1423, 1424, 1422, 1422, 1423, - 1420, 1421, 1425, 1428, 1429, 1424, 1427, 1426, 1431, 1430, - 1425, 0, 1429, 1432, 1428, 1434, 1433, 1436, 1420, 1421, - - 1431, 1427, 1430, 1424, 1433, 1432, 1435, 1439, 1438, 1425, - 1428, 1429, 1437, 1427, 1438, 1431, 1430, 1434, 1440, 1436, - 1432, 1437, 1434, 1433, 1436, 1439, 1435, 1444, 1441, 1442, - 1443, 1445, 1446, 1435, 1439, 1438, 0, 1443, 1447, 1437, - 1441, 1448, 1449, 0, 1440, 1440, 1452, 1442, 1451, 1450, - 1453, 1447, 1452, 1444, 1444, 1441, 1442, 1443, 1454, 1451, - 1455, 1456, 1457, 1445, 1446, 1447, 0, 1448, 1448, 1449, - 1450, 1460, 1453, 1452, 1463, 1451, 1450, 1453, 1458, 1461, - 1464, 1465, 1462, 1463, 1466, 0, 1468, 0, 1457, 1457, - 1454, 0, 1455, 1456, 1465, 1464, 1466, 1458, 1460, 1458, - - 1462, 1463, 1461, 1467, 1458, 1458, 1461, 1464, 1465, 1462, - 1469, 1466, 1468, 1468, 1470, 1472, 1471, 1469, 1477, 1473, - 1474, 0, 0, 1467, 1458, 1474, 1458, 1473, 1472, 1475, - 1467, 1480, 1476, 1470, 1475, 1481, 1485, 1469, 1471, 1476, - 1478, 1470, 1472, 1471, 1477, 1477, 1473, 1479, 1478, 1480, - 1486, 0, 1474, 1483, 1484, 1479, 1482, 1481, 1480, 1476, - 1483, 1475, 1481, 1484, 1482, 1489, 1487, 1478, 1485, 1488, - 1488, 1490, 1486, 1487, 1479, 1492, 1493, 1486, 1491, 1490, - 1483, 1484, 1494, 1482, 1493, 1499, 1495, 1496, 1498, 0, - 1494, 1499, 1497, 1487, 1495, 1496, 1488, 1489, 1490, 1491, - - 1497, 1498, 1501, 1493, 1500, 1491, 1502, 1492, 1505, 1494, - 1503, 1506, 1499, 1495, 1496, 1498, 1500, 1504, 1503, 1497, - 1507, 1508, 1509, 1505, 1511, 1504, 1510, 1513, 1501, 1501, - 1502, 1500, 1512, 1502, 0, 1505, 1511, 1503, 1506, 1517, - 1510, 1513, 1523, 1508, 1504, 1509, 1516, 1507, 1508, 1509, - 1512, 1511, 1514, 1510, 1513, 1516, 1514, 1519, 1518, 1512, - 1520, 1517, 1521, 0, 1519, 1526, 1517, 1525, 1522, 1514, - 1518, 1520, 1534, 1516, 1523, 1528, 1524, 1514, 1527, 1514, - 0, 1525, 0, 1514, 1519, 1518, 1529, 1520, 1524, 1521, - 1522, 1535, 1530, 1532, 1525, 1522, 1514, 1526, 1528, 1530, - - 1527, 1531, 1528, 1524, 1534, 1527, 1537, 1533, 1540, 1529, - 1531, 1532, 1541, 1529, 1533, 1537, 1539, 1542, 1535, 1530, - 1532, 1545, 1539, 1547, 1543, 1548, 1549, 0, 1531, 1550, - 1540, 1543, 0, 1537, 1533, 1540, 1553, 1549, 1541, 1541, - 1550, 1556, 0, 1539, 1551, 0, 1558, 1547, 1545, 1542, - 1547, 1543, 1548, 1549, 1555, 1551, 1550, 1562, 1554, 1556, - 1553, 1555, 1557, 1553, 1554, 1559, 1561, 1563, 1556, 1557, - 1560, 1551, 1558, 1558, 1561, 1564, 1560, 1559, 1565, 1562, - 1563, 1555, 1566, 0, 1562, 1554, 1567, 1568, 1569, 1557, - 1569, 1570, 1559, 1561, 1563, 1567, 1571, 1560, 1570, 1568, - - 1566, 1573, 1574, 1572, 1565, 1565, 1576, 1564, 1575, 1566, - 1573, 1577, 1578, 1567, 1568, 1569, 1572, 1579, 1570, 1578, - 1575, 1580, 1571, 1571, 1574, 1582, 1580, 1583, 1573, 1574, - 1572, 1585, 1581, 1576, 1577, 1575, 1587, 1584, 1577, 1578, - 1581, 1582, 1588, 1579, 1579, 1584, 1589, 1592, 1580, 1590, - 1583, 1591, 1582, 1585, 1583, 1593, 1592, 1595, 1585, 1581, - 1589, 1598, 1591, 1587, 1584, 1596, 1588, 1596, 1593, 1588, - 1595, 1590, 1597, 1589, 1592, 1601, 1590, 1602, 1591, 1594, - 1594, 1603, 1593, 1598, 1595, 1605, 1599, 1594, 1598, 1600, - 1604, 1607, 1596, 1599, 1608, 1602, 1600, 1604, 1597, 1597, - - 1606, 1608, 1601, 1603, 1602, 1609, 1594, 1594, 1603, 1612, - 1605, 1611, 1605, 1599, 1614, 0, 1600, 1604, 1613, 1620, - 1616, 1608, 1606, 1607, 1611, 1617, 1613, 1606, 1617, 1618, - 0, 1619, 1620, 1624, 1621, 1614, 1612, 1609, 1611, 1622, - 1623, 1614, 1616, 1621, 1625, 1613, 1620, 1616, 1626, 1629, - 1630, 1622, 1617, 1625, 0, 1618, 1618, 1619, 1619, 1624, - 1624, 1621, 1627, 1626, 1623, 0, 1622, 1623, 1631, 1627, - 1628, 1625, 1630, 1628, 1637, 1626, 1634, 1630, 1633, 0, - 1635, 1629, 1635, 1639, 1631, 1628, 1636, 1638, 1640, 1627, - 1638, 1642, 1631, 1644, 1628, 1631, 1633, 1628, 1634, 1641, - - 1628, 1637, 1643, 1634, 0, 1633, 1651, 1635, 1645, 1646, - 1636, 1631, 1628, 1636, 1638, 1639, 1648, 1642, 1642, 1652, - 1640, 1641, 1647, 1646, 1648, 1644, 1641, 1649, 1643, 1643, - 1645, 1647, 1650, 1653, 1649, 1645, 1646, 1655, 1651, 1654, - 1656, 1657, 0, 1648, 1656, 1658, 1660, 0, 1659, 1647, - 1661, 1652, 1662, 0, 1649, 1660, 1650, 1661, 1672, 1650, - 1662, 1654, 1677, 1657, 1663, 1653, 1654, 1656, 1657, 1655, - 1659, 1663, 1658, 1660, 1664, 1659, 1665, 1661, 1672, 1662, - 1666, 1667, 1668, 1669, 1668, 1672, 1670, 1664, 1671, 1665, - 1667, 1663, 0, 1666, 1677, 1683, 1671, 1674, 1678, 1675, - - 0, 1664, 1676, 1665, 0, 1678, 1669, 1666, 1667, 1668, - 1669, 1670, 1674, 1670, 1675, 1671, 1676, 1679, 1681, 1682, - 1680, 1683, 1683, 1684, 1674, 1678, 1675, 1680, 1679, 1676, - 1686, 1681, 1687, 1688, 1689, 0, 1690, 1682, 1692, 1687, - 1691, 1684, 1705, 1682, 1679, 1681, 1682, 1680, 0, 1689, - 1684, 1692, 1691, 1693, 1695, 1688, 1693, 1686, 1696, 1687, - 1688, 1689, 1690, 1690, 1682, 1692, 1694, 1691, 1697, 1705, - 1696, 1698, 1695, 1699, 1698, 1694, 1706, 1703, 1701, 1703, - 1693, 1695, 1704, 1701, 1699, 1696, 1710, 1707, 1697, 1698, - 1701, 1709, 0, 1694, 1713, 1697, 1723, 1711, 1698, 1708, - - 1699, 1698, 1707, 1706, 1703, 1701, 1704, 1714, 1708, 1704, - 1701, 1711, 1712, 1710, 1707, 1709, 1713, 1716, 1709, 1715, - 1712, 1713, 1717, 1723, 1711, 1716, 1708, 1718, 1719, 1720, - 1721, 1714, 1720, 1717, 1714, 1722, 1719, 1726, 1724, 1712, - 0, 1715, 0, 1725, 1716, 1718, 1715, 1720, 1721, 1717, - 1725, 1726, 1727, 1728, 1718, 1719, 1720, 1721, 1724, 1720, - 1729, 1727, 1731, 1730, 1726, 1724, 1728, 1722, 1730, 1736, - 1725, 1729, 1735, 1732, 1735, 1737, 1740, 0, 1736, 1727, - 1728, 1738, 1739, 0, 1731, 0, 1741, 1729, 1732, 1731, - 1741, 0, 1742, 1739, 1740, 1730, 1736, 1755, 1744, 1735, - - 1732, 1737, 1737, 1740, 1743, 1738, 1742, 1743, 1738, 1739, - 1746, 1758, 1741, 1741, 1745, 1747, 1746, 1741, 1742, 1742, - 1744, 1748, 1743, 1745, 1747, 1744, 1748, 1750, 1753, 1755, - 1752, 1743, 1751, 1742, 1743, 1752, 1754, 1746, 1756, 1757, - 1750, 1745, 1747, 1758, 1751, 1759, 1761, 1756, 1760, 1754, - 1753, 1766, 1762, 1748, 1750, 1753, 0, 1752, 1765, 1751, - 1767, 1760, 1764, 1754, 1768, 1756, 1757, 1759, 1769, 1764, - 1768, 1765, 1759, 1762, 1767, 1760, 1771, 1776, 1761, 1762, - 1777, 1778, 1773, 1766, 1774, 1765, 1775, 1767, 1768, 1764, - 1773, 1768, 1774, 0, 1775, 1771, 1776, 1768, 1779, 1778, - - 1769, 1780, 1777, 1771, 1776, 1782, 1781, 1777, 1778, 1773, - 1783, 1774, 1779, 1775, 1784, 1785, 1786, 1788, 1782, 1780, - 1781, 0, 1787, 1783, 1789, 1779, 1793, 1790, 1780, 1791, - 0, 1788, 1782, 1781, 1790, 1784, 1795, 1783, 1791, 1800, - 1796, 1784, 1792, 1794, 1788, 1796, 1787, 1785, 1786, 1787, - 1792, 1789, 1797, 1793, 1790, 1798, 1791, 1794, 1801, 1803, - 1802, 1810, 1784, 1797, 1798, 1801, 1800, 1796, 1795, 1792, - 1794, 1804, 1805, 1806, 1807, 1811, 1808, 1810, 1804, 1797, - 1808, 1803, 1798, 1802, 1812, 1801, 1803, 1802, 1810, 1813, - 1815, 1817, 1807, 1811, 1805, 1806, 1819, 1814, 1804, 1805, - - 1806, 1807, 1811, 1808, 1813, 1816, 1817, 1818, 1812, 1814, - 1821, 1812, 1820, 1816, 1822, 1818, 1813, 1815, 1817, 1825, - 1823, 1826, 1827, 1819, 1814, 1820, 1831, 1825, 1826, 1822, - 1821, 1829, 1816, 1832, 1818, 1823, 1828, 1821, 1830, 1820, - 1829, 1822, 1833, 1836, 1835, 1837, 1825, 1823, 1826, 1838, - 0, 1828, 1839, 1831, 1827, 1840, 0, 1832, 1829, 1830, - 1832, 1836, 1841, 1828, 1858, 1830, 1835, 1839, 1842, 1833, - 1836, 1835, 1844, 1843, 1845, 1842, 1838, 1837, 1843, 1839, - 1840, 1844, 1840, 1845, 1846, 1847, 1841, 1848, 1849, 1841, - 1850, 1851, 1857, 0, 0, 1842, 1858, 1853, 1855, 1844, - - 1843, 1845, 1850, 1849, 1853, 1848, 1846, 1847, 1852, 1854, - 1856, 1846, 1847, 1851, 1848, 1849, 1854, 1850, 1851, 1857, - 1855, 1852, 1856, 1859, 1853, 1855, 1852, 1861, 1864, 1859, - 0, 1854, 1862, 1863, 1869, 1852, 1854, 1856, 1861, 1864, - 1862, 1863, 1865, 1854, 1867, 1866, 1867, 1870, 1852, 1865, - 1859, 1868, 1872, 1877, 1861, 1864, 1871, 1867, 1873, 1862, - 1863, 1869, 1874, 1871, 1878, 1879, 1880, 1882, 1874, 1865, - 1866, 1867, 1866, 1867, 1870, 1875, 1876, 1868, 1868, 1872, - 1877, 1875, 1876, 1871, 1873, 1873, 1883, 1878, 1884, 1874, - 1880, 1878, 1885, 1880, 1886, 1883, 1886, 1879, 1887, 1882, - - 1888, 1889, 1875, 1876, 1890, 1891, 1892, 1894, 1889, 1893, - 1898, 0, 0, 1883, 1885, 1893, 1895, 1897, 1892, 1885, - 1884, 1886, 1887, 1896, 1903, 1887, 1890, 1888, 1889, 1894, - 1900, 1890, 1891, 1892, 1894, 1909, 1893, 1900, 1895, 1897, - 1909, 1902, 1898, 1895, 1897, 1899, 1899, 1899, 1902, 1896, - 1896, 1904, 1899, 1901, 1905, 1906, 1903, 1900, 1904, 1911, - 1899, 1905, 1901, 1907, 1910, 1915, 1916, 1909, 1902, 1912, - 0, 1911, 1899, 1899, 1899, 1906, 1913, 1910, 1904, 1899, - 1901, 1905, 1906, 1914, 1916, 1907, 1911, 1919, 1920, 1920, - 1907, 1910, 1913, 1916, 1912, 1914, 1912, 1915, 1917, 1925, - - 1918, 1935, 1921, 1913, 1922, 1917, 1918, 1923, 0, 1924, - 1914, 1922, 1923, 1926, 1919, 1920, 1929, 1930, 1934, 1930, - 1926, 1931, 0, 1933, 1934, 1917, 1925, 1918, 1921, 1921, - 1937, 1922, 0, 1935, 1923, 1924, 1924, 1941, 1936, 1931, - 1926, 1933, 1939, 1929, 1930, 1934, 1938, 1940, 1931, 1936, - 1933, 1943, 1938, 1948, 1939, 1941, 1947, 1937, 1942, 1942, - 1944, 1944, 1949, 1950, 1941, 1936, 1951, 1940, 1945, 1939, - 1950, 1952, 1953, 1938, 1940, 1948, 0, 1943, 1943, 1945, - 1948, 1955, 1956, 1957, 1958, 1942, 1951, 1944, 1947, 1955, - 1950, 1959, 1960, 1951, 1949, 1945, 1963, 1953, 1961, 1953, - - 1965, 1964, 0, 1952, 1960, 1961, 1958, 1962, 1955, 1959, - 1957, 1958, 1966, 1969, 1956, 1962, 1964, 1968, 1959, 1960, - 1963, 1966, 1970, 1963, 1965, 1961, 1971, 1965, 1964, 1967, - 1967, 1975, 1973, 1971, 1962, 1972, 1976, 0, 1975, 1966, - 1978, 1976, 1977, 1968, 1968, 1969, 1979, 1972, 1973, 1979, - 1999, 1986, 1980, 1971, 1970, 1973, 1967, 1984, 1975, 1973, - 1980, 1985, 1972, 1976, 1977, 1981, 1983, 1978, 1987, 1977, - 1988, 1989, 1986, 1979, 1983, 1973, 1991, 1981, 1986, 1980, - 1984, 0, 1999, 1992, 1984, 1990, 1987, 1985, 1985, 1992, - 1990, 1993, 1981, 1983, 1989, 1987, 2000, 1988, 1989, 1994, - - 1995, 1990, 1996, 1991, 1993, 2000, 1997, 1994, 1998, 1996, - 1992, 2003, 1990, 1997, 2002, 1998, 2001, 1990, 1993, 2004, - 2016, 2005, 1995, 2000, 2008, 2003, 1994, 1995, 2001, 1996, - 2006, 2012, 2011, 1997, 2009, 1998, 2002, 2010, 2003, 2009, - 2014, 2002, 2008, 2001, 2010, 2018, 2004, 2005, 2005, 2020, - 2009, 2008, 2016, 2006, 2011, 2015, 2022, 2006, 2012, 2011, - 2015, 2009, 2019, 2019, 2010, 2021, 2009, 2014, 2024, 2026, - 2025, 2020, 2027, 2028, 2029, 2028, 2020, 2018, 2031, 0, - 2021, 2030, 2032, 2024, 2026, 2035, 2030, 2015, 2022, 2019, - 2036, 2040, 2021, 2025, 2033, 2024, 2026, 2025, 2027, 2027, - - 2028, 2038, 2033, 2042, 2034, 2036, 2029, 2035, 2030, 2032, - 2031, 2034, 2035, 2040, 2039, 2044, 2038, 2036, 2040, 2043, - 2045, 2033, 2039, 2047, 0, 2046, 2049, 2042, 2038, 2048, - 2042, 2034, 2046, 2050, 2056, 2055, 2053, 0, 2057, 2051, - 0, 2039, 2044, 2062, 0, 2043, 2043, 2045, 2049, 2056, - 2048, 2061, 2046, 2049, 2050, 2047, 2048, 2051, 2053, 2055, - 2050, 2056, 2055, 2053, 2057, 2057, 2051, 2059, 2060, 2063, - 2062, 2064, 2067, 2061, 2068, 2065, 2066, 2074, 2061, 2070, - 2075, 2068, 2059, 2060, 2071, 2072, 2069, 2063, 2070, 2075, - 0, 2093, 2071, 2064, 2059, 2060, 2063, 2065, 2064, 2067, - - 2066, 2068, 2065, 2066, 2069, 2073, 2070, 2075, 2072, 2074, - 2076, 2071, 2072, 2069, 2077, 2081, 2078, 2082, 2093, 2080, - 2083, 0, 2085, 2077, 2081, 0, 2084, 2073, 2076, 2078, - 2080, 2095, 2073, 2084, 2086, 2082, 2087, 2076, 2083, 0, - 2089, 2077, 2081, 2078, 2082, 2080, 2080, 2083, 2085, 2085, - 2088, 2087, 2086, 2084, 2090, 2095, 2088, 2080, 2095, 2096, - 2097, 2086, 2089, 2087, 2098, 2102, 2100, 2089, 2090, 2101, - 2096, 2097, 2104, 2103, 0, 2098, 2105, 2088, 2100, 2106, - 2107, 2090, 2101, 2103, 2110, 2108, 2096, 2097, 2106, 2111, - 2113, 2098, 2114, 2100, 2113, 2115, 2101, 2102, 2104, 2104, - - 2103, 2105, 2117, 2105, 2108, 2116, 2106, 2107, 2120, 2118, - 2123, 2110, 2108, 2114, 2118, 2111, 2111, 2113, 2116, 2114, - 2122, 2119, 2117, 2121, 2124, 2123, 2122, 2115, 2119, 2117, - 2125, 2121, 2116, 2129, 2120, 2120, 2118, 2123, 2126, 2124, - 2127, 2127, 2125, 2128, 2137, 2129, 0, 2122, 2119, 2121, - 2121, 2124, 2131, 2126, 2130, 2134, 2131, 2125, 2121, 2130, - 2129, 2128, 2134, 2136, 2132, 2126, 2138, 2127, 2132, 2135, - 2128, 2137, 2141, 2135, 2140, 2138, 2139, 2142, 2136, 2131, - 2144, 2132, 2134, 2139, 2142, 2145, 2130, 2147, 2146, 2132, - 2136, 2132, 2155, 2138, 2141, 2132, 2135, 2146, 2140, 2141, - - 2148, 2140, 2144, 2139, 2142, 2150, 2153, 2144, 2132, 2147, - 2145, 2154, 2145, 2152, 2147, 2146, 2159, 2155, 2157, 2155, - 2148, 2156, 2152, 2150, 2153, 2161, 2154, 2148, 2164, 2156, - 2167, 2160, 2150, 2153, 2162, 2162, 0, 2163, 2154, 2167, - 2152, 2159, 2168, 2159, 2160, 2165, 2166, 2169, 2156, 2170, - 2157, 2168, 2161, 2164, 2169, 2164, 2171, 2167, 2160, 2163, - 2173, 2162, 2172, 2175, 2163, 2174, 0, 2165, 2166, 2168, - 2174, 2177, 2165, 2166, 2169, 2173, 2172, 2179, 2171, 2177, - 2178, 2170, 2175, 2171, 2180, 2185, 2181, 2173, 2183, 2172, - 2175, 0, 2179, 2178, 2182, 2184, 2186, 2174, 2177, 2187, - - 2183, 2189, 2184, 2190, 2179, 2188, 0, 2178, 2192, 2189, - 2182, 2180, 2181, 2181, 2188, 2183, 2191, 2185, 2186, 2193, - 2189, 2182, 2184, 2186, 2187, 2198, 2187, 2195, 2189, 2194, - 2190, 2191, 2188, 2196, 2192, 2192, 2189, 2199, 2200, 0, - 2199, 2204, 2196, 2191, 2201, 2193, 2193, 2194, 2198, 2195, - 2201, 2203, 2198, 2202, 2195, 2199, 2194, 2205, 2202, 2204, - 2196, 2207, 2213, 2200, 2199, 2200, 2203, 2199, 2204, 2208, - 2209, 2201, 2205, 2211, 2212, 2214, 2207, 2215, 2203, 0, - 2213, 2212, 2218, 0, 2205, 2202, 2215, 2211, 2207, 2213, - 2216, 2208, 2209, 2218, 2217, 2220, 2208, 2209, 2221, 2216, - - 2211, 2212, 2214, 2217, 2215, 2219, 2222, 2219, 2220, 2218, - 2221, 2224, 2225, 2226, 2227, 2228, 2229, 2216, 0, 2236, - 2226, 2217, 2220, 2236, 0, 2221, 2224, 2225, 2222, 2235, - 0, 0, 2219, 2222, 2229, 2230, 2227, 2228, 2224, 2225, - 2226, 2227, 2228, 2229, 2230, 2233, 2236, 2237, 2238, 2239, - 2235, 2239, 2240, 2241, 2243, 2242, 2235, 2238, 2233, 2237, - 2244, 2246, 2230, 2245, 2247, 0, 2233, 2251, 0, 2244, - 2240, 2245, 2233, 2242, 2237, 2238, 2239, 2254, 2248, 2240, - 2241, 2243, 2242, 2255, 2246, 2233, 2247, 2244, 2246, 2250, - 2245, 2247, 2248, 2252, 2256, 2253, 2261, 2250, 2252, 2251, - - 2253, 2258, 2264, 2257, 2266, 2248, 2265, 2263, 2258, 2254, - 2262, 2268, 0, 2270, 2271, 2255, 2250, 2267, 2256, 2266, - 2252, 2256, 2257, 2261, 2262, 2263, 2267, 2253, 2258, 2264, - 2257, 2266, 2265, 2265, 2263, 2262, 2262, 2262, 2269, 2270, - 2270, 2271, 2272, 2268, 2267, 2273, 2276, 2275, 2277, 2278, - 0, 2262, 2280, 2276, 2280, 2282, 2278, 2286, 2281, 2282, - 2269, 2284, 2262, 2285, 2272, 2269, 2283, 0, 2286, 2272, - 2275, 2277, 2285, 2276, 2275, 2277, 2278, 2273, 2283, 2280, - 2281, 2288, 2282, 2284, 2286, 2281, 2289, 2287, 2284, 2290, - 2285, 2289, 2291, 2283, 2287, 2292, 2293, 2294, 2295, 2295, - - 2296, 2302, 2297, 2288, 2298, 0, 2294, 2292, 2288, 2296, - 2299, 0, 2298, 2289, 2287, 2291, 2290, 2297, 2293, 2291, - 2300, 2301, 2292, 2293, 2294, 2295, 2304, 2296, 2302, 2297, - 2301, 2298, 2299, 2305, 2300, 2306, 2307, 2299, 2308, 2312, - 2314, 2305, 2308, 2306, 2307, 2304, 2309, 2300, 2301, 2309, - 2310, 2311, 2316, 2304, 2312, 2313, 2318, 2311, 2310, 2321, - 2305, 2313, 2306, 2307, 2316, 2308, 2312, 2319, 2320, 2322, - 2318, 2323, 2314, 2309, 2326, 2324, 2322, 2310, 2311, 2316, - 2319, 2325, 2313, 2318, 2321, 2329, 2321, 2327, 2326, 2320, - 2327, 2328, 0, 2330, 2319, 2320, 2322, 2324, 2323, 2329, - - 2331, 2326, 2324, 2332, 2328, 2325, 2333, 2339, 2325, 2334, - 2335, 2336, 2329, 2337, 2327, 2340, 2337, 0, 2328, 2330, - 2330, 2334, 2335, 2341, 2343, 2336, 2342, 2331, 2332, 2342, - 2332, 2344, 2345, 2333, 2339, 2347, 2334, 2335, 2336, 2337, - 2337, 2340, 2340, 2337, 2342, 2348, 2350, 2351, 2349, 2341, - 2341, 2343, 2348, 2342, 2345, 2349, 2342, 2347, 2344, 2345, - 2352, 2350, 2347, 2353, 2354, 2356, 2357, 2355, 2359, 2360, - 2361, 2353, 2348, 2350, 2351, 2349, 2355, 2358, 2357, 2363, - 2362, 0, 2368, 2361, 0, 2370, 2384, 2352, 2364, 2363, - 2353, 2354, 2356, 2357, 2355, 2359, 2360, 2361, 2362, 2358, - - 2365, 2364, 2367, 2369, 2358, 2371, 2363, 2362, 2365, 2368, - 2373, 2369, 2370, 2372, 2371, 2364, 2376, 2374, 2384, 2375, - 2377, 2378, 0, 0, 2367, 2379, 2381, 2365, 2377, 2367, - 2369, 2373, 2371, 2378, 2375, 2372, 2383, 2373, 2381, 2390, - 2372, 2374, 2387, 2376, 2374, 2375, 2375, 2377, 2378, 2382, - 2379, 2386, 2379, 2381, 2387, 2388, 2389, 2382, 2386, 2388, - 2391, 2375, 2390, 2383, 2392, 2394, 2390, 2393, 2389, 2387, - 2397, 2400, 2392, 2395, 2398, 2399, 2382, 2394, 2386, 2401, - 0, 2398, 2388, 2389, 2400, 2395, 2405, 2391, 2401, 2393, - 2402, 2392, 2394, 2403, 2393, 2399, 2406, 2397, 2400, 2402, - - 2395, 2398, 2399, 2404, 2404, 2403, 2401, 2407, 2410, 2408, - 2411, 0, 2405, 2405, 2406, 2424, 2412, 2402, 0, 2413, - 2403, 2415, 2416, 2406, 2408, 2411, 2408, 2414, 2416, 2414, - 2404, 2425, 2407, 2408, 2407, 2415, 2408, 2411, 2412, 2417, - 2410, 2413, 2420, 2412, 2418, 2418, 2413, 2424, 2415, 2416, - 2421, 2408, 2422, 2408, 2414, 2423, 2426, 2428, 2427, 2429, - 0, 2417, 2426, 2425, 2420, 2430, 2417, 2423, 0, 2420, - 2427, 2418, 2421, 2431, 2422, 2431, 2432, 2421, 2433, 2422, - 2435, 2429, 2423, 2426, 2434, 2427, 2429, 2430, 2436, 2428, - 2432, 2434, 2430, 2440, 2437, 2438, 2439, 2441, 2435, 0, - - 2431, 2442, 2433, 2432, 2448, 2433, 2436, 2435, 2449, 2439, - 2444, 2434, 2437, 2438, 2447, 2436, 2451, 2444, 2452, 2446, - 2453, 2437, 2438, 2439, 2442, 2440, 2446, 2450, 2442, 2441, - 2448, 2448, 2447, 2458, 2451, 2450, 0, 2444, 2456, 2459, - 2449, 2447, 2453, 2451, 2452, 2452, 2446, 2453, 2454, 2456, - 2454, 2459, 2457, 2450, 2450, 2454, 2460, 2462, 2463, 2464, - 2458, 2465, 2450, 2457, 0, 2456, 2459, 2467, 2468, 2463, - 2471, 2464, 2462, 2469, 2460, 2454, 2465, 2454, 2470, 2457, - 2469, 2472, 2474, 2460, 2462, 2463, 2464, 2475, 2465, 2477, - 2468, 2467, 2478, 2470, 2467, 2468, 2476, 2471, 2479, 2480, - - 2469, 2482, 2481, 2487, 2483, 2470, 2486, 2472, 2472, 2474, - 0, 2475, 2485, 2492, 2475, 2481, 2479, 2484, 2476, 2483, - 2485, 2477, 2491, 2476, 2478, 2479, 2480, 2482, 2482, 2481, - 2484, 2483, 2486, 2486, 2488, 2487, 2489, 2492, 2493, 2485, - 2492, 0, 2494, 0, 2484, 2491, 2495, 2488, 2496, 2491, - 2498, 2499, 2497, 2500, 0, 0, 0, 2498, 2489, 2503, - 2504, 2488, 2501, 2489, 2494, 2493, 2496, 2504, 2495, 2494, - 2497, 2508, 2507, 2495, 2499, 2496, 2501, 2498, 2499, 2497, - 2500, 2503, 2510, 2505, 2506, 2507, 2503, 2504, 2509, 2501, - 2505, 2506, 2511, 2512, 2508, 2509, 2513, 0, 2508, 2507, - - 2515, 0, 2519, 2514, 2510, 2516, 2517, 2522, 2515, 2510, - 2505, 2506, 2514, 2516, 2512, 2509, 2521, 2523, 2522, 2518, - 2512, 2524, 2513, 2513, 2511, 2518, 2525, 2515, 2517, 2519, - 2514, 2521, 2516, 2517, 2522, 2526, 2527, 2529, 2531, 2523, - 2533, 2539, 2539, 2521, 2523, 2534, 2518, 2532, 0, 2535, - 2543, 2531, 2540, 2524, 2526, 2529, 2537, 2538, 2525, 2544, - 2532, 2527, 2526, 2527, 2529, 2531, 2533, 2533, 2539, 2534, - 2545, 2546, 2534, 2543, 2532, 2535, 2535, 2543, 2540, 2540, - 2537, 2538, 2547, 2537, 2538, 2545, 2550, 2552, 2554, 2558, - 2561, 2544, 2555, 2559, 2559, 2563, 2552, 2545, 2546, 2560, - - 2547, 2554, 2562, 2555, 2565, 2560, 2567, 2569, 2572, 2547, - 2570, 2558, 2561, 2550, 2552, 2554, 2558, 2561, 2568, 2555, - 2559, 2570, 2563, 2571, 2562, 2568, 2560, 2575, 2571, 2562, - 2572, 2565, 2574, 2569, 2569, 2572, 2578, 2570, 2567, 2582, - 2574, 2576, 2577, 2581, 2580, 2568, 2583, 2587, 2588, 2584, - 2571, 2575, 2585, 2590, 2575, 2580, 2576, 2577, 2584, 2574, - 2582, 2581, 2590, 2578, 2585, 2589, 2582, 2592, 2576, 2577, - 2581, 2580, 2588, 2589, 2587, 2588, 2584, 2593, 2583, 2585, - 2590, 2594, 2595, 2596, 2597, 2598, 0, 2600, 2599, 2601, - 2602, 2595, 2589, 2592, 2592, 2607, 2603, 2606, 2597, 2604, - - 2600, 2596, 2601, 2594, 2593, 2602, 2604, 2598, 2594, 2595, - 2596, 2597, 2598, 2599, 2600, 2599, 2601, 2602, 2603, 2606, - 2605, 2608, 2607, 2603, 2606, 2609, 2604, 2605, 2610, 2611, - 2612, 2613, 0, 2614, 0, 2615, 0, 2616, 0, 2612, - 0, 0, 2618, 0, 2611, 2623, 2624, 2605, 2608, 2618, - 2617, 2619, 2609, 2613, 2624, 2610, 2611, 2612, 2613, 2614, - 2614, 2615, 2615, 2616, 2616, 2617, 2619, 2620, 2622, 2618, - 2621, 2625, 2623, 2624, 2620, 2626, 2621, 2617, 2619, 2622, - 2627, 2628, 2632, 2630, 2629, 2631, 0, 0, 0, 2632, - 2636, 2633, 0, 2638, 2620, 2622, 2627, 2621, 2625, 2629, - - 2631, 2637, 2626, 2630, 2639, 2639, 0, 2627, 2628, 2632, - 2630, 2629, 2631, 2633, 2634, 2635, 2640, 2636, 2633, 2637, - 2638, 2634, 2635, 2640, 2641, 2644, 2642, 2643, 2637, 2642, - 2644, 2639, 2645, 2646, 0, 2647, 2652, 2648, 2641, 0, - 2643, 2634, 2635, 2640, 2649, 2652, 2650, 0, 2646, 2659, - 2655, 2641, 2644, 2642, 2643, 2648, 2649, 2645, 2650, 2645, - 2646, 2647, 2647, 2652, 2648, 2653, 2656, 2657, 2654, 2658, - 2653, 2649, 2654, 2650, 2655, 2660, 2659, 2655, 2661, 2656, - 2663, 0, 2665, 2667, 0, 0, 0, 0, 2666, 2657, - 2668, 2658, 2653, 2656, 2657, 2654, 2658, 2666, 2668, 2667, - - 2669, 2677, 2660, 2675, 2661, 2661, 2663, 2663, 2665, 2665, - 2667, 2671, 2669, 2672, 2673, 2666, 2674, 2668, 2671, 2673, - 2679, 2675, 2672, 2674, 2676, 2678, 2677, 2669, 2677, 2679, - 2675, 2676, 2678, 2680, 0, 2681, 2683, 2684, 2671, 0, - 2672, 2673, 2680, 2674, 2685, 2686, 2688, 2679, 2687, 2690, - 2686, 2676, 2678, 2691, 2695, 0, 2692, 2685, 2696, 2683, - 2680, 2681, 2681, 2683, 2684, 2692, 2687, 2690, 2693, 2694, - 2696, 2685, 2686, 2688, 2695, 2687, 2690, 2693, 2694, 2697, - 2691, 2695, 2698, 2692, 2700, 2696, 2699, 2701, 2697, 2702, - 2703, 2698, 2700, 2704, 2705, 2693, 2694, 2699, 2706, 2708, - - 2704, 2709, 2710, 2705, 2714, 2717, 2697, 2701, 2716, 2698, - 2713, 2700, 2714, 2699, 2701, 2711, 2702, 2703, 2712, 2706, - 2704, 2705, 2713, 2715, 2711, 2706, 2708, 2712, 2709, 2725, - 2716, 2714, 2717, 2718, 2710, 2716, 2715, 2713, 2721, 2719, - 2718, 2720, 2711, 2727, 2722, 2712, 2719, 2723, 2720, 2729, - 2715, 2722, 2724, 2726, 2721, 2731, 2725, 2729, 0, 2732, - 2718, 0, 2735, 2736, 0, 2721, 2719, 2732, 2720, 2723, - 2727, 2722, 2733, 2731, 2723, 2738, 2729, 2724, 2726, 2724, - 2726, 2734, 2731, 2738, 2735, 2736, 2732, 2733, 2734, 2735, - 2736, 2737, 2742, 2741, 0, 2744, 2746, 2743, 2737, 2733, - - 2741, 2742, 2738, 2745, 2747, 2746, 2750, 2756, 2734, 2748, - 2762, 2754, 0, 0, 2749, 2745, 2752, 2755, 2737, 2742, - 2741, 2743, 2744, 2746, 2743, 2748, 2749, 2753, 2752, 2750, - 2745, 2747, 2754, 2750, 2756, 2757, 2748, 2762, 2754, 2753, - 2755, 2749, 2765, 2752, 2755, 2759, 2760, 2766, 2761, 2757, - 2764, 0, 2767, 2760, 2753, 2761, 2768, 2759, 2769, 2770, - 2765, 2774, 2757, 2772, 2776, 2764, 2769, 2771, 2783, 2765, - 2766, 2773, 2759, 2760, 2766, 2761, 2774, 2764, 2767, 2767, - 2775, 2772, 2773, 2768, 2781, 2769, 2770, 2775, 2774, 2771, - 2772, 2776, 2782, 0, 2771, 2783, 2790, 2782, 2773, 2784, - - 2785, 2786, 2787, 2788, 2789, 2791, 2792, 2775, 2794, 0, - 2781, 2781, 2791, 2784, 2785, 2786, 2797, 2799, 2792, 2782, - 2787, 2788, 2789, 2790, 2800, 2801, 2784, 2785, 2786, 2787, - 2788, 2789, 2791, 2792, 2802, 2794, 2804, 2800, 2797, 2799, - 2803, 2805, 2809, 2797, 2799, 2807, 2811, 2801, 2803, 2810, - 2812, 2800, 2801, 2802, 2804, 2813, 2814, 2807, 2811, 2816, - 2805, 2802, 2815, 2804, 2809, 2817, 2818, 2803, 2805, 2809, - 2815, 2810, 2807, 2811, 2821, 2819, 2810, 2812, 2814, 0, - 0, 2820, 2813, 2814, 2819, 2817, 2816, 2822, 2818, 2815, - 2820, 2823, 2817, 2818, 2825, 2824, 2826, 2827, 2830, 2831, - - 2833, 0, 2819, 2832, 2837, 2833, 2821, 2824, 2820, 2822, - 2842, 2834, 2830, 2835, 2822, 2836, 2825, 2823, 2823, 2839, - 2838, 2825, 2824, 2826, 2827, 2830, 2831, 2832, 2836, 2842, - 2832, 2840, 2833, 2834, 2846, 2835, 2837, 2842, 2834, 2841, - 2835, 2839, 2836, 2838, 2843, 2844, 2839, 2838, 2845, 2840, - 2843, 2841, 2847, 0, 2848, 2850, 2846, 0, 2840, 2852, - 0, 2846, 2851, 2854, 0, 2856, 2841, 2847, 0, 2857, - 2869, 2843, 2858, 0, 2860, 2850, 2859, 2844, 2854, 2847, - 2845, 2848, 2850, 2852, 2851, 2859, 2852, 2856, 2860, 2851, - 2854, 2857, 2856, 2861, 2858, 2862, 2857, 2863, 2864, 2858, - - 2868, 2860, 2869, 2859, 2865, 2874, 2873, 2870, 2875, 2868, - 2876, 2861, 2874, 2862, 2873, 2875, 2864, 2877, 2876, 2878, - 2861, 2879, 2862, 2863, 2863, 2864, 2865, 2868, 2870, 2879, - 2884, 2865, 2874, 2873, 2870, 2875, 2881, 2876, 2882, 2878, - 2883, 2885, 2884, 2886, 2877, 2891, 2878, 2887, 2879, 2889, - 2892, 2893, 2891, 2885, 2881, 2887, 2882, 2884, 2894, 2895, - 2894, 2889, 2896, 2881, 2898, 2882, 2883, 2883, 2885, 0, - 2886, 2897, 2891, 2892, 2887, 2899, 2889, 2892, 2893, 2902, - 2897, 2900, 2901, 2905, 2901, 2894, 2904, 2907, 2908, 0, - 2910, 2895, 0, 2909, 2896, 2912, 2898, 2905, 2897, 2910, - - 2900, 2902, 2899, 2915, 2904, 2911, 2902, 2917, 2900, 2901, - 2905, 2913, 2908, 2904, 2918, 2908, 2909, 2910, 2911, 2907, - 2909, 2920, 2912, 2913, 2916, 2922, 2921, 2923, 2925, 2915, - 2915, 0, 2911, 2916, 2917, 2927, 2928, 2936, 2913, 2933, - 2937, 2918, 2927, 2934, 2929, 2923, 2933, 2922, 2920, 2921, - 2931, 2916, 2922, 2921, 2923, 2925, 2930, 2938, 2928, 2929, - 2940, 2930, 2927, 2928, 2936, 2931, 2933, 2937, 2939, 2934, - 2934, 2929, 2941, 2943, 2940, 2946, 2944, 2931, 2947, 0, - 2948, 2949, 2946, 2951, 2938, 2944, 2941, 2940, 2930, 2950, - 2952, 2955, 2939, 2956, 2960, 2939, 0, 2961, 2954, 2941, - - 2943, 2950, 2946, 2944, 2952, 2947, 2948, 2948, 2949, 2953, - 2951, 2954, 2957, 2967, 2965, 2968, 2950, 2952, 2953, 2961, - 2956, 2965, 2963, 2955, 2961, 2954, 2960, 2963, 2964, 2969, - 2966, 2969, 2964, 2971, 2967, 2957, 2953, 2966, 2970, 2957, - 2967, 2965, 2974, 2976, 2977, 2983, 2979, 2968, 2979, 2981, - 2980, 0, 0, 0, 2963, 2964, 2969, 2966, 2987, 2985, - 2971, 2970, 2976, 0, 2974, 2970, 2985, 2983, 2977, 2974, - 2976, 2977, 2983, 2979, 2980, 2981, 2981, 2980, 2982, 2982, - 2984, 2986, 2988, 2990, 2991, 2987, 2985, 0, 2982, 2984, - 2989, 2997, 2991, 2992, 2986, 2988, 2990, 2994, 2989, 2995, - - 2998, 0, 2994, 3072, 2995, 2982, 2982, 2984, 2986, 2988, - 2990, 2991, 2992, 2996, 2989, 2999, 3004, 2989, 2997, 3000, - 2992, 2996, 3001, 0, 3002, 2989, 2998, 2998, 3003, 2994, - 3005, 2995, 3006, 3006, 3007, 3072, 3008, 3005, 3004, 3003, - 2996, 2999, 2999, 3004, 3009, 3000, 3000, 3007, 3001, 3001, - 3002, 3002, 3009, 3010, 3011, 3003, 3016, 3005, 3008, 3006, - 3012, 3007, 3013, 3008, 3017, 0, 3014, 3012, 3018, 3013, - 3019, 3009, 3011, 3014, 3020, 3010, 3022, 3021, 3024, 3025, - 3010, 3011, 3019, 3016, 3026, 3022, 3027, 3012, 3029, 3013, - 3036, 3017, 3018, 3014, 3030, 3018, 3031, 3019, 3021, 3025, - - 3032, 3020, 3033, 3022, 3021, 3024, 3025, 3035, 3027, 3037, - 3038, 3026, 3030, 3027, 3031, 3029, 3035, 3036, 3032, 3041, - 3033, 3030, 3039, 3031, 3040, 3044, 3042, 3032, 3046, 3033, - 3044, 3048, 3040, 3038, 3035, 3041, 3037, 3038, 3042, 0, - 3039, 3043, 3046, 3047, 3052, 3053, 3041, 3054, 3043, 3039, - 3056, 3040, 3057, 3042, 3048, 3046, 3061, 3044, 3048, 0, - 3054, 3047, 3058, 3062, 3058, 3057, 3052, 3059, 3043, 3063, - 3047, 3052, 3053, 3067, 3054, 3067, 3059, 3056, 3080, 3057, - 3068, 3062, 3074, 3061, 3063, 3069, 3071, 3084, 3078, 3058, - 3062, 3088, 3076, 3071, 3059, 3079, 3063, 3074, 3076, 3083, - - 3067, 3084, 3068, 3069, 3080, 3080, 3081, 3068, 3086, 3074, - 3078, 3086, 3069, 3071, 3084, 3078, 3085, 3079, 3088, 3076, - 3089, 3083, 3079, 3090, 3081, 3092, 3083, 3091, 3093, 3085, - 3096, 3094, 3092, 3081, 3086, 3086, 3093, 3097, 3086, 3098, - 3099, 3101, 3100, 3085, 3105, 3091, 0, 3089, 3103, 0, - 3090, 3100, 3092, 3094, 3091, 3093, 3101, 3102, 3094, 3097, - 3107, 3098, 3096, 3102, 3097, 3104, 3098, 3099, 3101, 3100, - 3103, 3106, 3109, 3106, 3104, 3103, 3105, 3112, 3110, 3111, - 3113, 3114, 3115, 3117, 3102, 3119, 0, 3107, 3113, 0, - 3117, 3124, 3104, 3114, 3115, 3109, 0, 3121, 3106, 3109, - - 3110, 3111, 3122, 3112, 3112, 3110, 3111, 3113, 3114, 3115, - 3117, 3121, 3119, 3123, 3124, 3125, 3122, 3126, 3124, 3128, - 3135, 3129, 3127, 3132, 3121, 3130, 3133, 3123, 3126, 3122, - 3127, 3131, 3130, 3125, 3136, 3133, 3134, 3134, 3128, 0, - 3123, 3132, 3125, 3129, 3126, 3143, 3128, 3135, 3129, 3127, - 3132, 3137, 3130, 3133, 3141, 3140, 3144, 3131, 3131, 3137, - 3140, 3136, 3146, 3134, 3148, 3150, 3143, 3141, 3146, 3151, - 0, 3152, 3143, 3153, 3157, 3154, 3150, 3159, 3137, 3158, - 3151, 3141, 3160, 3144, 3153, 3162, 3158, 3140, 3168, 3146, - 3161, 3148, 3150, 3152, 3161, 3159, 3151, 3154, 3152, 3163, - - 3153, 3157, 3154, 3165, 3159, 3166, 3158, 3163, 3167, 3170, - 3173, 3174, 3162, 3172, 3160, 3168, 3167, 3161, 3166, 3176, - 3172, 3177, 3178, 3182, 3176, 3179, 3163, 3180, 3181, 3165, - 3165, 3185, 3166, 3174, 3180, 3167, 0, 3179, 3174, 3182, - 3172, 3170, 3173, 3183, 3184, 3186, 3176, 3181, 3177, 3178, - 3182, 3184, 3179, 3186, 3180, 3181, 3189, 3188, 3187, 3199, - 3197, 3183, 3191, 3185, 3188, 3190, 3192, 3202, 3193, 3198, - 3183, 3184, 3186, 3187, 3181, 3197, 3198, 3190, 3200, 3201, - 3205, 3206, 3207, 3189, 3188, 3187, 3191, 3197, 3203, 3191, - 3192, 3199, 3190, 3192, 3193, 3193, 3198, 3203, 3209, 3202, - - 3211, 3213, 3205, 3201, 3207, 3200, 3201, 3205, 3206, 3207, - 3208, 3210, 3210, 3214, 3217, 3203, 3213, 3215, 3208, 3215, - 3216, 3210, 3214, 3218, 3219, 3220, 3222, 3211, 3213, 3223, - 3209, 3218, 3224, 3225, 3216, 3219, 3226, 3208, 3210, 3210, - 3214, 3217, 3227, 3220, 3215, 3228, 3229, 3216, 3230, 3226, - 3218, 3219, 3220, 3222, 3231, 3225, 3223, 3232, 3234, 3224, - 3225, 3233, 3233, 3226, 3227, 3235, 3238, 3239, 3241, 3227, - 3242, 3232, 3228, 3229, 3244, 3230, 0, 0, 3239, 3250, - 3246, 3231, 3244, 3252, 3232, 3246, 3247, 3235, 3233, 3263, - 3234, 3247, 3235, 3238, 3239, 3241, 3248, 3242, 3249, 3253, - - 3253, 3244, 3255, 3249, 3248, 3250, 3250, 3246, 3254, 3258, - 3252, 3257, 3259, 3247, 3260, 3255, 3254, 3264, 3257, 3262, - 3266, 3263, 3265, 3248, 3264, 3249, 3253, 3258, 3262, 3255, - 3265, 3269, 3270, 3272, 3273, 3254, 3258, 3269, 3257, 3259, - 3274, 3260, 3266, 3275, 3264, 3277, 3262, 3266, 0, 3265, - 3276, 3278, 3279, 3274, 3282, 3283, 3273, 3281, 3269, 3270, - 3272, 3273, 3283, 3284, 3277, 3276, 3285, 3274, 3286, 0, - 3284, 3287, 3277, 0, 3279, 3275, 3282, 3276, 3278, 3279, - 3281, 3282, 3283, 3286, 3281, 3289, 3290, 3302, 3285, 3291, - 3284, 3294, 3287, 3285, 3290, 3286, 3291, 3295, 3287, 3292, - - 3294, 3296, 3296, 3297, 3289, 3298, 3292, 3311, 3295, 3297, - 3301, 3296, 3289, 3290, 3300, 0, 3291, 3301, 3294, 3302, - 3303, 3306, 3312, 3313, 3295, 3307, 3292, 3298, 3296, 3296, - 3297, 3305, 3298, 3318, 3311, 3319, 3300, 3301, 3305, 3307, - 3321, 3300, 3303, 3320, 3323, 3306, 3313, 3303, 3306, 3312, - 3313, 3320, 3307, 3326, 3327, 3327, 3323, 3319, 3305, 3329, - 3318, 3331, 3319, 3328, 3328, 3330, 3330, 3321, 3333, 3334, - 3320, 3323, 3335, 3336, 0, 3340, 3337, 3344, 3341, 0, - 3326, 0, 3336, 3327, 3331, 3341, 3329, 3334, 3331, 3337, - 3333, 3342, 3328, 3343, 3330, 3333, 3334, 3349, 3342, 3335, - - 3336, 3340, 3340, 3337, 3344, 3341, 3345, 3348, 3350, 3348, - 3351, 3352, 3354, 3345, 3355, 3343, 3356, 3349, 3342, 3358, - 3343, 3354, 3357, 3352, 3349, 3359, 3360, 3364, 3351, 3362, - 3361, 3350, 3364, 3345, 3348, 3350, 3355, 3351, 3352, 3354, - 3357, 3355, 3361, 3356, 3363, 3358, 3358, 3363, 3365, 3357, - 3369, 3362, 3359, 3360, 3367, 3368, 3362, 3361, 3366, 3364, - 3366, 3368, 3363, 3372, 3370, 3371, 3367, 3373, 3374, 3375, - 3376, 3363, 3369, 3371, 3363, 3377, 3378, 3369, 3381, 3383, - 3365, 3367, 3368, 3384, 3386, 3366, 3370, 3377, 3388, 3374, - 3372, 3370, 3371, 3386, 3389, 3374, 3375, 3376, 3378, 3373, - - 3390, 3384, 3377, 3378, 3391, 3381, 3383, 3393, 3394, 3395, - 3384, 3386, 3396, 3397, 3397, 3388, 3400, 3401, 3403, 3399, - 3402, 3389, 3404, 3406, 3407, 3408, 0, 3390, 0, 3404, - 3409, 3391, 3407, 3403, 3393, 3394, 3395, 3399, 3402, 3396, - 3397, 3410, 3409, 3400, 3401, 3403, 3399, 3402, 3411, 3404, - 3406, 3407, 3408, 3412, 3413, 3410, 3416, 3409, 3415, 0, - 3419, 3427, 3420, 3411, 3421, 3421, 3422, 3423, 3410, 3419, - 3415, 3425, 3426, 0, 3427, 3411, 3423, 0, 3428, 3412, - 3412, 3413, 3429, 3416, 3434, 3415, 3420, 3419, 3427, 3420, - 3429, 3421, 3422, 3422, 3423, 3425, 3431, 3430, 3425, 3433, - - 3428, 3438, 3434, 3442, 3426, 3428, 3430, 3431, 3437, 3429, - 3442, 3434, 3451, 3438, 3441, 3441, 3452, 3456, 3455, 3457, - 3433, 3459, 0, 3431, 3430, 3461, 3433, 3463, 3438, 3461, - 3442, 3437, 3455, 3462, 3451, 3437, 0, 3471, 0, 3451, - 3452, 3441, 3464, 3452, 3456, 3455, 3457, 3469, 3459, 3464, - 3463, 3462, 3461, 3466, 3463, 3468, 3470, 3474, 3472, 3468, - 3462, 3473, 3471, 3469, 3471, 3475, 3466, 3476, 3477, 3464, - 3472, 3474, 3480, 3475, 3469, 3478, 3476, 3478, 3470, 3477, - 3466, 3479, 3468, 3470, 3474, 3472, 3481, 3473, 3473, 3482, - 3480, 3483, 3475, 3479, 3476, 3477, 3485, 3483, 3484, 3480, - - 3486, 3481, 3478, 3487, 3485, 3493, 3488, 3494, 3479, 3492, - 3487, 3482, 3493, 3481, 3496, 3498, 3482, 3495, 3483, 3497, - 3484, 3499, 3492, 3485, 3501, 3484, 3502, 3486, 3488, 3500, - 3487, 3501, 3493, 3488, 3494, 3495, 3492, 3500, 3503, 3504, - 3506, 3496, 3498, 3507, 3495, 3497, 3497, 3505, 3499, 3505, - 3502, 3501, 3506, 3502, 3509, 3508, 3500, 3510, 3511, 3513, - 3503, 3504, 3514, 3512, 3516, 3503, 3504, 3506, 3508, 3509, - 3512, 3517, 3518, 3519, 3505, 3507, 3521, 3526, 3523, 3510, - 3518, 3509, 3508, 3517, 3510, 3511, 3513, 3523, 3521, 3514, - 3512, 3516, 3527, 3528, 3529, 3530, 3531, 3532, 3517, 3518, - - 3519, 0, 3529, 3521, 3526, 3523, 3534, 3535, 3533, 3536, - 3532, 3538, 3528, 3545, 3534, 0, 3546, 3542, 3527, 3527, - 3528, 3529, 3533, 3542, 3532, 3543, 3545, 3530, 3531, 3535, - 3548, 3549, 3543, 3534, 3535, 3533, 3536, 3548, 3538, 3546, - 3545, 3550, 3551, 3546, 3542, 3552, 3553, 3556, 3554, 3550, - 0, 3562, 3543, 3549, 3553, 3555, 3551, 3548, 3549, 3552, - 3559, 3563, 3560, 3564, 3565, 3570, 0, 3559, 3550, 3551, - 3554, 3560, 3552, 3553, 3556, 3554, 3561, 3555, 3562, 3566, - 3567, 0, 3555, 3563, 3561, 3569, 3568, 3559, 3563, 3560, - 3565, 3565, 3572, 3569, 3573, 3564, 3574, 3570, 3578, 3576, - - 0, 3566, 3567, 3561, 3585, 3581, 3566, 3567, 3568, 3577, - 0, 3587, 3569, 3568, 0, 3583, 3573, 3577, 3578, 3572, - 3579, 3573, 3576, 3574, 3580, 3578, 3576, 3582, 3579, 3583, - 3585, 3585, 3580, 3589, 3592, 3582, 3577, 3581, 3587, 3593, - 3588, 3590, 3583, 3588, 3591, 0, 0, 3579, 3592, 3590, - 3594, 3580, 3591, 3598, 3582, 3589, 3597, 3597, 3588, 3595, - 3589, 3592, 3600, 0, 3601, 3593, 3593, 3588, 3590, 0, - 3588, 3591, 3594, 3595, 3599, 3602, 3603, 3594, 3605, 3598, - 3598, 3607, 3599, 3597, 3604, 3606, 3595, 3608, 3600, 3600, - 3601, 3601, 3604, 3609, 3612, 3610, 3603, 3602, 3615, 0, - - 0, 3599, 3602, 3603, 3618, 3605, 3607, 3606, 3607, 3611, - 3613, 3604, 3606, 3609, 3608, 3610, 3612, 3611, 3613, 3616, - 3609, 3612, 3610, 3619, 3620, 3615, 3618, 3616, 3622, 3624, - 3621, 3618, 3620, 3625, 3626, 3628, 3611, 3613, 3621, 3627, - 3631, 3625, 3626, 3629, 3632, 3619, 3616, 3635, 3633, 3641, - 3619, 3620, 3642, 0, 3622, 3622, 3624, 3621, 3638, 0, - 3625, 3626, 3628, 3629, 3639, 3627, 3627, 3631, 3633, 3635, - 3629, 3632, 3639, 3640, 3635, 3633, 3641, 0, 0, 3642, - 3638, 3640, 0, 0, 0, 3638, 0, 0, 0, 0, - 0, 3639, 0, 0, 0, 0, 0, 0, 0, 0, - - 3640, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3647, 3647, - 3647, 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, 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, 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 + 329, 333, 345, 352, 337, 340, 336, 335, 341, 0, + 343, 339, 342, 342, 339, 343, 0, 329, 334, 340, + + 344, 334, 356, 341, 356, 350, 334, 334, 334, 334, + 352, 346, 340, 0, 346, 341, 334, 342, 347, 342, + 342, 346, 343, 350, 344, 334, 0, 344, 334, 356, + 347, 348, 350, 334, 334, 334, 334, 338, 346, 338, + 353, 346, 351, 348, 354, 347, 349, 349, 0, 355, + 0, 338, 338, 338, 0, 338, 349, 359, 348, 358, + 351, 338, 353, 363, 338, 357, 338, 353, 0, 351, + 354, 354, 359, 349, 349, 355, 355, 357, 338, 338, + 338, 358, 338, 360, 359, 362, 358, 361, 0, 368, + 377, 360, 357, 367, 361, 363, 366, 362, 364, 0, + + 364, 0, 0, 366, 369, 372, 371, 370, 371, 364, + 360, 0, 362, 370, 361, 367, 364, 377, 372, 376, + 367, 368, 375, 366, 364, 364, 369, 364, 373, 370, + 371, 369, 372, 371, 370, 371, 364, 378, 374, 0, + 370, 373, 382, 364, 373, 0, 373, 0, 375, 375, + 381, 376, 373, 0, 385, 373, 374, 381, 383, 378, + 382, 0, 391, 384, 378, 374, 382, 385, 373, 382, + 383, 373, 387, 373, 379, 384, 379, 381, 0, 388, + 391, 385, 379, 390, 0, 383, 379, 382, 387, 391, + 384, 379, 388, 392, 379, 390, 387, 0, 392, 387, + + 379, 379, 394, 379, 396, 393, 388, 0, 394, 379, + 390, 395, 393, 379, 399, 387, 396, 0, 379, 395, + 398, 379, 380, 397, 380, 392, 393, 410, 398, 394, + 0, 396, 393, 400, 400, 404, 401, 380, 395, 393, + 380, 397, 380, 401, 380, 403, 399, 398, 380, 380, + 397, 380, 402, 404, 403, 0, 0, 404, 0, 410, + 400, 405, 404, 401, 380, 402, 407, 380, 405, 380, + 0, 380, 389, 389, 408, 415, 413, 403, 407, 402, + 404, 403, 389, 389, 389, 389, 389, 406, 405, 389, + 409, 413, 411, 407, 406, 414, 408, 389, 412, 389, + + 389, 408, 409, 413, 416, 412, 416, 415, 414, 389, + 389, 389, 389, 389, 406, 417, 389, 409, 411, 411, + 420, 418, 414, 419, 419, 412, 417, 420, 421, 422, + 0, 416, 423, 424, 0, 425, 426, 426, 0, 421, + 422, 431, 417, 418, 427, 423, 437, 420, 418, 429, + 428, 0, 419, 431, 426, 421, 422, 425, 424, 423, + 424, 426, 425, 426, 426, 428, 430, 427, 431, 432, + 433, 427, 434, 428, 430, 429, 429, 428, 437, 433, + 432, 426, 439, 438, 440, 434, 435, 435, 441, 442, + 451, 444, 428, 430, 0, 446, 432, 433, 435, 434, + + 435, 438, 443, 445, 439, 435, 441, 440, 443, 439, + 438, 440, 444, 435, 435, 441, 447, 451, 444, 446, + 449, 442, 446, 0, 448, 435, 445, 435, 436, 443, + 445, 448, 452, 456, 450, 453, 436, 436, 447, 454, + 436, 436, 455, 447, 436, 457, 449, 449, 450, 453, + 436, 448, 458, 459, 452, 436, 456, 457, 458, 452, + 456, 450, 453, 436, 436, 454, 454, 436, 436, 460, + 462, 436, 457, 461, 455, 459, 463, 464, 465, 458, + 459, 461, 466, 463, 467, 462, 464, 0, 468, 470, + 467, 460, 469, 465, 472, 473, 460, 462, 471, 461, + + 461, 474, 0, 463, 464, 465, 466, 474, 461, 466, + 468, 467, 470, 471, 469, 468, 470, 473, 475, 469, + 472, 472, 473, 478, 476, 471, 480, 481, 474, 476, + 482, 484, 480, 485, 483, 486, 482, 484, 489, 490, + 489, 487, 486, 492, 475, 475, 481, 489, 490, 478, + 478, 476, 483, 480, 481, 485, 487, 482, 484, 493, + 485, 483, 486, 491, 494, 489, 490, 489, 487, 496, + 491, 495, 493, 497, 0, 492, 0, 504, 498, 500, + 499, 501, 0, 499, 503, 502, 493, 511, 0, 495, + 491, 498, 506, 511, 501, 497, 494, 502, 495, 499, + + 497, 496, 503, 500, 507, 498, 500, 499, 501, 504, + 499, 503, 502, 505, 511, 508, 506, 509, 510, 506, + 505, 513, 514, 510, 512, 0, 516, 507, 508, 522, + 515, 521, 518, 517, 514, 522, 507, 516, 521, 509, + 505, 517, 508, 513, 509, 510, 518, 512, 513, 514, + 523, 512, 515, 516, 507, 524, 522, 515, 521, 518, + 517, 519, 523, 525, 527, 0, 519, 526, 519, 528, + 0, 525, 530, 0, 519, 527, 519, 523, 524, 519, + 519, 0, 524, 0, 530, 0, 519, 519, 519, 526, + 525, 527, 528, 519, 526, 519, 528, 531, 529, 530, + + 533, 519, 529, 519, 534, 532, 519, 519, 532, 0, + 535, 538, 536, 519, 534, 538, 532, 531, 533, 531, + 529, 537, 535, 536, 531, 529, 539, 533, 540, 529, + 542, 543, 532, 539, 544, 532, 534, 535, 538, 536, + 541, 534, 541, 543, 531, 537, 546, 545, 537, 544, + 553, 550, 547, 539, 540, 540, 542, 542, 543, 545, + 547, 544, 549, 548, 552, 0, 558, 541, 548, 550, + 555, 553, 546, 546, 545, 551, 552, 553, 550, 547, + 556, 557, 560, 551, 549, 559, 562, 561, 555, 549, + 548, 552, 564, 563, 560, 561, 566, 555, 558, 562, + + 559, 564, 551, 556, 557, 563, 565, 556, 557, 560, + 566, 567, 559, 562, 561, 568, 569, 570, 568, 564, + 563, 571, 572, 566, 573, 574, 0, 575, 576, 565, + 0, 0, 0, 565, 577, 569, 567, 572, 567, 579, + 574, 576, 568, 569, 570, 578, 577, 581, 583, 572, + 580, 575, 574, 571, 575, 576, 573, 580, 581, 582, + 580, 577, 583, 579, 582, 584, 579, 578, 580, 585, + 586, 587, 578, 588, 581, 583, 589, 580, 590, 591, + 592, 0, 593, 590, 580, 0, 592, 580, 591, 594, + 595, 582, 584, 596, 598, 597, 585, 593, 587, 603, + + 588, 596, 586, 599, 0, 602, 591, 592, 589, 593, + 590, 600, 595, 594, 597, 600, 594, 595, 598, 601, + 596, 598, 597, 607, 605, 599, 604, 601, 602, 608, + 599, 603, 602, 604, 606, 616, 609, 610, 600, 0, + 0, 0, 608, 606, 612, 607, 601, 605, 611, 610, + 607, 605, 613, 604, 611, 617, 608, 614, 615, 618, + 613, 606, 609, 609, 610, 615, 612, 616, 614, 620, + 629, 612, 618, 621, 631, 611, 623, 617, 620, 613, + 0, 622, 617, 619, 614, 615, 618, 623, 619, 624, + 622, 619, 619, 626, 630, 625, 620, 627, 631, 621, + + 621, 631, 629, 623, 632, 634, 626, 619, 622, 627, + 619, 624, 630, 633, 635, 619, 624, 625, 619, 619, + 626, 630, 625, 636, 627, 638, 632, 632, 637, 634, + 639, 632, 634, 0, 636, 633, 635, 637, 640, 641, + 633, 635, 642, 643, 639, 638, 641, 651, 644, 645, + 636, 648, 638, 632, 647, 637, 644, 639, 646, 649, + 640, 643, 648, 652, 646, 640, 641, 647, 650, 642, + 643, 645, 653, 654, 654, 644, 645, 649, 648, 651, + 655, 647, 0, 650, 652, 646, 649, 656, 657, 660, + 652, 662, 658, 659, 664, 650, 653, 657, 0, 653, + + 661, 668, 654, 663, 655, 658, 659, 655, 661, 656, + 665, 660, 668, 667, 656, 657, 660, 0, 670, 658, + 659, 673, 666, 662, 666, 663, 664, 661, 668, 671, + 663, 669, 670, 672, 665, 667, 669, 665, 674, 675, + 667, 678, 676, 671, 677, 670, 674, 672, 672, 666, + 679, 677, 680, 673, 682, 672, 671, 675, 681, 0, + 672, 683, 0, 669, 676, 674, 675, 678, 678, 676, + 679, 677, 680, 681, 672, 672, 683, 679, 685, 680, + 684, 688, 681, 685, 689, 681, 682, 686, 683, 687, + 684, 687, 689, 690, 691, 692, 693, 696, 705, 0, + + 681, 694, 684, 691, 692, 693, 688, 684, 688, 694, + 685, 689, 695, 686, 686, 697, 687, 684, 690, 695, + 690, 691, 692, 693, 699, 698, 701, 0, 694, 696, + 705, 703, 700, 702, 704, 701, 699, 707, 697, 695, + 703, 702, 697, 698, 700, 712, 704, 706, 708, 709, + 707, 699, 698, 701, 706, 703, 710, 709, 703, 700, + 702, 704, 710, 708, 707, 711, 714, 703, 712, 713, + 715, 0, 712, 711, 706, 708, 709, 714, 713, 715, + 716, 716, 717, 710, 719, 720, 718, 0, 721, 716, + 717, 0, 711, 714, 718, 722, 713, 715, 720, 727, + + 0, 725, 724, 723, 0, 0, 719, 716, 716, 717, + 724, 719, 720, 718, 721, 721, 723, 725, 722, 726, + 728, 727, 722, 730, 731, 729, 727, 732, 725, 724, + 723, 728, 726, 729, 735, 733, 734, 730, 736, 734, + 739, 0, 743, 0, 731, 0, 726, 728, 737, 732, + 730, 731, 729, 738, 732, 733, 735, 737, 739, 740, + 736, 735, 733, 734, 741, 736, 742, 739, 744, 746, + 745, 747, 740, 738, 743, 737, 749, 752, 754, 751, + 738, 742, 741, 748, 747, 751, 740, 750, 749, 755, + 744, 741, 746, 742, 745, 744, 746, 745, 747, 753, + + 750, 748, 756, 749, 752, 754, 751, 753, 759, 758, + 748, 755, 760, 0, 750, 761, 755, 758, 762, 760, + 756, 763, 764, 763, 765, 753, 753, 766, 768, 756, + 767, 764, 0, 762, 753, 773, 758, 768, 761, 760, + 759, 769, 761, 769, 770, 762, 766, 773, 763, 764, + 767, 770, 0, 776, 766, 768, 765, 767, 779, 782, + 780, 0, 773, 776, 782, 0, 784, 783, 769, 0, + 0, 770, 771, 0, 790, 771, 779, 786, 791, 771, + 776, 780, 771, 790, 784, 779, 782, 780, 783, 771, + 771, 791, 771, 784, 783, 787, 785, 771, 788, 771, + + 786, 790, 771, 0, 786, 791, 771, 785, 792, 771, + 789, 793, 796, 795, 817, 792, 771, 771, 0, 771, + 795, 787, 787, 785, 788, 788, 789, 797, 0, 798, + 799, 0, 0, 797, 796, 792, 801, 789, 798, 796, + 795, 817, 802, 793, 794, 794, 800, 794, 805, 800, + 794, 0, 801, 799, 797, 794, 798, 799, 803, 801, + 805, 794, 794, 801, 802, 804, 803, 807, 812, 802, + 794, 794, 794, 800, 794, 805, 806, 794, 806, 801, + 809, 808, 794, 810, 811, 803, 808, 804, 794, 794, + 812, 807, 804, 813, 807, 812, 811, 819, 815, 814, + + 809, 816, 818, 806, 0, 0, 820, 809, 821, 810, + 810, 811, 819, 808, 820, 824, 0, 825, 832, 813, + 813, 814, 815, 816, 819, 815, 814, 818, 816, 818, + 822, 821, 823, 820, 824, 821, 826, 822, 827, 834, + 823, 828, 824, 825, 825, 829, 830, 831, 826, 833, + 832, 827, 831, 835, 829, 837, 838, 822, 835, 823, + 839, 830, 840, 826, 842, 827, 834, 828, 828, 839, + 840, 833, 829, 830, 831, 843, 833, 837, 844, 841, + 845, 847, 837, 0, 846, 835, 841, 839, 838, 840, + 848, 849, 851, 850, 852, 0, 842, 843, 856, 853, + + 847, 851, 843, 854, 845, 846, 841, 845, 847, 856, + 844, 846, 850, 858, 859, 855, 852, 848, 849, 851, + 850, 852, 853, 854, 855, 856, 853, 857, 860, 861, + 854, 862, 859, 866, 863, 857, 0, 864, 0, 867, + 858, 859, 855, 863, 870, 864, 868, 860, 869, 868, + 871, 866, 873, 0, 857, 860, 861, 867, 872, 0, + 866, 863, 870, 862, 864, 873, 867, 874, 875, 874, + 869, 870, 879, 868, 871, 869, 876, 871, 877, 873, + 872, 880, 882, 877, 878, 872, 875, 0, 881, 883, + 876, 888, 883, 880, 874, 875, 881, 878, 879, 879, + + 882, 887, 890, 876, 884, 892, 885, 0, 880, 882, + 877, 878, 892, 884, 885, 881, 883, 889, 888, 891, + 893, 901, 896, 889, 890, 891, 887, 893, 887, 890, + 885, 884, 892, 885, 894, 895, 898, 902, 0, 894, + 896, 885, 895, 900, 889, 899, 891, 893, 897, 896, + 903, 900, 897, 901, 899, 902, 904, 907, 905, 898, + 906, 894, 895, 898, 902, 903, 905, 904, 909, 908, + 900, 910, 899, 906, 911, 897, 914, 903, 907, 913, + 922, 909, 912, 904, 907, 905, 913, 906, 908, 916, + 912, 923, 915, 910, 914, 909, 908, 917, 910, 915, + + 918, 911, 919, 914, 917, 918, 913, 920, 916, 912, + 919, 921, 922, 924, 920, 925, 916, 926, 921, 915, + 928, 927, 929, 923, 917, 936, 924, 918, 927, 919, + 926, 931, 930, 937, 920, 932, 0, 938, 921, 931, + 924, 933, 941, 932, 926, 934, 0, 925, 927, 935, + 932, 934, 928, 940, 929, 930, 943, 936, 931, 930, + 939, 938, 932, 933, 938, 937, 942, 940, 933, 939, + 932, 0, 934, 942, 941, 935, 935, 944, 945, 946, + 940, 950, 959, 943, 947, 948, 944, 939, 949, 947, + 951, 952, 946, 942, 946, 951, 959, 948, 952, 988, + + 945, 953, 954, 946, 944, 945, 946, 950, 950, 959, + 954, 949, 948, 957, 964, 949, 947, 951, 952, 946, + 960, 946, 956, 953, 961, 956, 957, 960, 953, 954, + 961, 988, 965, 0, 0, 963, 966, 964, 0, 0, + 957, 964, 971, 0, 965, 968, 967, 960, 967, 956, + 0, 961, 962, 970, 962, 969, 0, 989, 962, 965, + 962, 963, 963, 966, 971, 962, 970, 969, 968, 971, + 962, 972, 968, 967, 977, 974, 962, 975, 973, 962, + 970, 962, 969, 973, 972, 962, 977, 962, 976, 989, + 975, 979, 962, 974, 980, 978, 981, 962, 972, 983, + + 976, 977, 974, 985, 975, 978, 979, 982, 986, 981, + 973, 976, 983, 982, 987, 976, 980, 978, 979, 984, + 990, 980, 978, 981, 992, 985, 983, 976, 993, 986, + 985, 994, 978, 993, 982, 986, 987, 984, 997, 994, + 995, 987, 998, 1003, 999, 1000, 984, 990, 0, 995, + 1001, 0, 1002, 997, 0, 993, 992, 999, 994, 1009, + 1000, 0, 1003, 0, 998, 997, 1020, 995, 996, 998, + 1003, 999, 1000, 996, 1002, 996, 1001, 1001, 1004, 1002, + 1006, 996, 1007, 1005, 1010, 0, 996, 996, 1006, 1004, + 1007, 1009, 1008, 996, 996, 996, 1005, 1011, 1020, 0, + + 996, 1016, 996, 1008, 1013, 1004, 1010, 1006, 996, 1007, + 1005, 1010, 1011, 996, 996, 1013, 1012, 1014, 1015, 1008, + 996, 1024, 1018, 1017, 1011, 1012, 1014, 1015, 1016, 1018, + 1021, 1013, 1022, 1023, 1025, 1024, 1026, 0, 1029, 1032, + 1022, 1031, 0, 1012, 1014, 1015, 1017, 0, 1024, 1018, + 1017, 1030, 1031, 1027, 1021, 1023, 1029, 1021, 1026, 1022, + 1023, 1027, 1034, 1026, 1033, 1029, 1025, 0, 1031, 1030, + 1034, 1032, 1035, 1037, 1036, 1039, 1038, 1040, 1030, 1041, + 1027, 1036, 1033, 1038, 1042, 1044, 1037, 0, 1043, 1034, + 1039, 1033, 1051, 1052, 1035, 1040, 1046, 1041, 1043, 1035, + + 1037, 1036, 1039, 1038, 1040, 1042, 1041, 1046, 1048, 1049, + 1050, 1042, 1050, 1055, 1051, 1043, 1049, 1044, 1053, 1051, + 1054, 1048, 1055, 1046, 1057, 1052, 1053, 1056, 1058, 0, + 1061, 1062, 1064, 1054, 1063, 1048, 1049, 1050, 1065, 1056, + 1055, 1066, 1070, 0, 1067, 1053, 1057, 1054, 1068, 1062, + 1058, 1057, 1061, 1070, 1056, 1058, 1067, 1061, 1062, 1066, + 1063, 1063, 1068, 1073, 1064, 1074, 1073, 1071, 1066, 1070, + 1065, 1067, 1071, 1075, 1076, 1068, 1077, 1074, 1082, 1079, + 1078, 1080, 1081, 1077, 1084, 1089, 0, 1076, 1079, 1073, + 1073, 1078, 1074, 1073, 1081, 1080, 1086, 1075, 1083, 1071, + + 1075, 1076, 1085, 1077, 1087, 1083, 1079, 1078, 1080, 1081, + 1082, 1089, 1089, 1090, 1085, 1091, 1084, 1087, 1086, 1092, + 1095, 1091, 1093, 1086, 1094, 1083, 1096, 0, 1097, 1085, + 1098, 1087, 1101, 1100, 1103, 1094, 1104, 1090, 1095, 1114, + 1090, 1092, 1091, 1101, 1093, 1098, 1092, 1095, 1096, 1093, + 1097, 1094, 1102, 1096, 1100, 1097, 1105, 1098, 1106, 1101, + 1100, 1108, 1107, 1104, 1110, 0, 1103, 1106, 1109, 1111, + 1112, 1114, 1110, 1102, 1105, 1115, 1111, 1109, 1113, 1102, + 1116, 1117, 1118, 1105, 1119, 1106, 1107, 1108, 1108, 1107, + 1121, 1110, 1113, 1120, 1112, 1109, 1111, 1112, 1126, 1123, + + 1128, 1124, 1127, 1117, 1118, 1113, 1125, 1115, 1117, 1118, + 1124, 1133, 1116, 1125, 1129, 1120, 1119, 1130, 1131, 1133, + 1120, 1123, 1121, 1134, 1127, 1132, 1123, 1128, 1124, 1127, + 1126, 1135, 1129, 1125, 1132, 1130, 1141, 1136, 1133, 1137, + 1131, 1129, 1138, 1144, 1130, 1131, 1140, 1134, 1139, 1142, + 1134, 1138, 1132, 1136, 1140, 1135, 1145, 0, 1135, 1143, + 0, 1137, 1148, 1139, 1136, 1144, 1137, 1149, 1141, 1138, + 1144, 1143, 1146, 1140, 1147, 1139, 1149, 1148, 1152, 1151, + 1146, 1142, 1153, 1145, 1156, 1157, 1143, 1147, 1151, 1148, + 1153, 1154, 1156, 1154, 1149, 1158, 1152, 1159, 1160, 1146, + + 1161, 1147, 1163, 1167, 1164, 1152, 1151, 1161, 1165, 1153, + 1166, 1156, 1157, 1168, 1158, 1163, 1164, 1170, 1154, 1159, + 1160, 1167, 1158, 1165, 1159, 1160, 1169, 1161, 1171, 1163, + 1167, 1164, 1166, 1169, 1172, 1165, 1173, 1166, 0, 1174, + 1168, 1176, 1177, 1175, 1179, 1172, 0, 1181, 0, 1170, + 1178, 1180, 1185, 1169, 1176, 1177, 1179, 0, 1173, 1180, + 1171, 1172, 0, 1173, 1174, 1175, 1174, 1181, 1176, 1177, + 1175, 1179, 1178, 1182, 1181, 1183, 1186, 1178, 1180, 1185, + 1188, 1187, 0, 1183, 1189, 1182, 1190, 1191, 1195, 1186, + 1187, 1196, 1188, 1190, 1193, 0, 1191, 0, 1191, 1197, + + 1182, 1191, 1183, 1186, 1194, 1189, 0, 1188, 1187, 1191, + 1195, 1189, 1199, 1190, 1191, 1195, 1198, 1193, 1196, 1197, + 1202, 1193, 1203, 1191, 1200, 1191, 1197, 1204, 1191, 1198, + 1194, 1194, 1200, 1201, 1206, 1204, 1199, 1205, 1202, 1199, + 1207, 1209, 1201, 1198, 1203, 1208, 1212, 1202, 1210, 1203, + 0, 1200, 1205, 1217, 1204, 1213, 1210, 1209, 1208, 1214, + 1201, 1216, 1207, 1215, 1205, 0, 1206, 1207, 1209, 1218, + 1215, 0, 1208, 1212, 1224, 1210, 1217, 1213, 0, 1219, + 1217, 1214, 1213, 1216, 1221, 1220, 1214, 1218, 1216, 1222, + 1215, 1219, 1221, 1223, 1224, 1225, 1218, 1220, 1222, 1226, + + 1228, 1224, 1227, 1229, 1231, 1223, 1219, 1226, 1227, 1228, + 1225, 1221, 1220, 1222, 1232, 1234, 1222, 0, 0, 1230, + 1223, 1232, 1225, 1237, 1229, 1222, 1226, 1228, 1233, 1227, + 1229, 1230, 1235, 1234, 0, 1233, 1231, 1236, 1237, 1238, + 1240, 1232, 1234, 1241, 1235, 1236, 1230, 1238, 0, 1239, + 1237, 1239, 1240, 1242, 1244, 1233, 1245, 1246, 1247, 1235, + 1242, 1249, 1248, 1251, 1236, 1250, 1238, 1240, 1245, 1248, + 1246, 1256, 1249, 1253, 1252, 1241, 1239, 1247, 1251, 1252, + 1242, 1253, 1254, 1245, 1246, 1247, 1244, 1250, 1249, 1248, + 1251, 1255, 1250, 1258, 1259, 1254, 1260, 1256, 1256, 0, + + 1253, 0, 0, 1261, 1264, 1255, 1252, 1258, 0, 1254, + 0, 1262, 1259, 1265, 0, 1272, 1263, 1266, 1255, 1257, + 1258, 1259, 1267, 1257, 1272, 1271, 1257, 1257, 1260, 1261, + 1261, 1257, 1271, 1262, 1263, 1265, 1264, 1257, 1262, 1266, + 1265, 1257, 1272, 1263, 1266, 1257, 1257, 1269, 1267, 1267, + 1257, 1268, 1271, 1257, 1257, 1273, 0, 1268, 1257, 1270, + 1274, 1270, 1276, 1281, 1257, 0, 1275, 0, 1257, 1277, + 1280, 1279, 1278, 1269, 1269, 1282, 1277, 1284, 1268, 1280, + 1276, 1283, 0, 1270, 1279, 1289, 1270, 1273, 1270, 1276, + 1275, 1285, 1274, 1275, 1278, 1281, 1277, 1280, 1279, 1278, + + 1284, 0, 1288, 1283, 1284, 1285, 1291, 1282, 1283, 1287, + 0, 1289, 1289, 1290, 1290, 1288, 1293, 0, 1285, 1286, + 1294, 0, 1291, 1297, 1286, 0, 1286, 1295, 1286, 1288, + 1286, 1287, 1294, 1291, 1295, 1296, 1287, 1286, 1299, 1293, + 1298, 1297, 1290, 1293, 1296, 1298, 1286, 1294, 1301, 1303, + 1297, 1286, 1307, 1286, 1295, 1286, 1299, 1286, 1300, 0, + 1302, 1304, 1296, 1300, 1306, 1299, 1305, 1303, 1308, 1304, + 1301, 1309, 1298, 1302, 1305, 1301, 1303, 1306, 1310, 1311, + 1312, 1314, 0, 1313, 1307, 1300, 1309, 1302, 1304, 1315, + 1319, 1306, 1311, 1305, 1308, 1308, 1313, 1310, 1309, 1314, + + 1318, 1321, 1312, 1316, 1322, 1310, 1311, 1312, 1314, 1315, + 1313, 1317, 1316, 1317, 1320, 1324, 1315, 1319, 1325, 1327, + 1328, 1330, 1318, 1331, 1326, 0, 1320, 1318, 1321, 1322, + 1316, 1322, 1326, 1332, 1336, 1341, 1329, 1327, 1317, 1324, + 1325, 1320, 1324, 1329, 1338, 1325, 1327, 1328, 1330, 1331, + 1331, 1326, 1333, 1334, 1338, 1332, 1335, 1337, 1333, 1334, + 1332, 1336, 1335, 1329, 1337, 1339, 1340, 1341, 1342, 1343, + 0, 1338, 1344, 1340, 1347, 1351, 1345, 1349, 1350, 1333, + 1334, 0, 1348, 1335, 1337, 1345, 1352, 1343, 1351, 1339, + 1342, 1349, 1339, 1340, 1348, 1342, 1343, 1344, 1347, 1344, + + 1350, 1347, 1351, 1345, 1349, 1350, 1353, 1354, 1352, 1348, + 1356, 1355, 0, 1352, 1357, 1359, 1364, 1358, 1365, 1368, + 0, 0, 1360, 0, 1359, 1353, 1361, 0, 0, 1354, + 1366, 1362, 1356, 1353, 1354, 1355, 1369, 1356, 1355, 1358, + 1357, 1357, 1359, 1360, 1358, 1362, 1361, 1367, 1364, 1360, + 1365, 1368, 1366, 1361, 1369, 1371, 1370, 1366, 1362, 1372, + 1373, 1376, 1375, 1369, 1370, 1378, 1379, 1373, 1377, 1367, + 1376, 1371, 1380, 1379, 1367, 1381, 1380, 1378, 1382, 1383, + 1385, 0, 1371, 1370, 1375, 1377, 1372, 1373, 1376, 1375, + 1386, 1387, 1378, 1379, 1388, 1377, 1386, 0, 1387, 1380, + + 1383, 1388, 1390, 1386, 1389, 1391, 1383, 1381, 1392, 1393, + 1382, 1394, 1385, 1394, 1391, 1390, 1393, 1386, 1387, 1389, + 1396, 1388, 1397, 1386, 1395, 0, 1398, 1405, 1399, 1390, + 1398, 1389, 1391, 1395, 1392, 1392, 1393, 1401, 1394, 1402, + 1404, 1414, 1396, 1403, 1402, 1401, 1405, 1396, 1406, 1397, + 1399, 1395, 1403, 1398, 1405, 1399, 1407, 1408, 1404, 1409, + 1408, 1406, 1409, 0, 1401, 1412, 1411, 1404, 1407, 1408, + 1403, 1402, 1410, 1414, 1415, 1406, 0, 1417, 1412, 1416, + 1418, 1409, 1417, 1407, 1408, 1420, 1409, 1408, 1418, 1409, + 1410, 1411, 1412, 1411, 1420, 1416, 1421, 1415, 1422, 1410, + + 1423, 1415, 1419, 1419, 1424, 0, 1416, 1418, 1425, 1417, + 1426, 1429, 1420, 1424, 1427, 1425, 1432, 1430, 1421, 1431, + 1422, 1427, 1423, 1421, 1429, 1422, 1430, 1423, 1431, 1419, + 1433, 1424, 1426, 1436, 1437, 1425, 1434, 1426, 1429, 1435, + 1438, 1427, 1432, 1432, 1430, 1434, 1431, 1435, 1439, 1437, + 1441, 1438, 1442, 1433, 1444, 1440, 1439, 1433, 0, 1450, + 1445, 1437, 1441, 1434, 1442, 1436, 1435, 1438, 1440, 1446, + 1443, 1449, 1455, 1456, 1447, 1439, 1444, 1441, 1443, 1442, + 1445, 1444, 1440, 1447, 1448, 1450, 1450, 1445, 1451, 1449, + 1448, 1446, 1452, 1464, 1454, 1453, 1446, 1443, 1449, 1457, + + 1451, 1447, 1453, 1458, 1455, 1456, 1459, 1460, 1462, 1463, + 1452, 1448, 1457, 1461, 1462, 1451, 1465, 1466, 1467, 1452, + 1454, 1454, 1453, 1470, 1461, 1464, 1457, 1474, 1460, 1458, + 1458, 1463, 1468, 1459, 1460, 1462, 1463, 1471, 1472, 0, + 1461, 0, 1474, 1473, 1467, 1467, 1477, 0, 1465, 1466, + 1470, 1468, 1473, 1468, 1474, 1475, 1472, 1476, 1468, 1468, + 1471, 1478, 1480, 1481, 1471, 1472, 1477, 1479, 1475, 1476, + 1473, 1484, 1485, 1477, 1479, 1483, 1484, 1485, 1468, 1482, + 1468, 1480, 1475, 1483, 1476, 1481, 1486, 1478, 1478, 1480, + 1481, 1487, 1482, 1486, 1479, 0, 1490, 1488, 1491, 1489, + + 1492, 1494, 1483, 1484, 1485, 1488, 1482, 1489, 1492, 1493, + 1494, 1495, 1496, 1486, 1490, 1498, 1493, 1487, 1487, 1499, + 1491, 1497, 1498, 1490, 1488, 1491, 1489, 1492, 1494, 1501, + 1497, 1499, 1500, 1500, 1496, 1503, 1493, 1502, 1504, 1496, + 1510, 1505, 1498, 1495, 1506, 1502, 1499, 1507, 1497, 1505, + 1508, 1512, 1506, 1510, 1511, 1507, 1503, 1509, 1508, 1500, + 1511, 1501, 1503, 1512, 1502, 1509, 1513, 1510, 1505, 0, + 1504, 1506, 1514, 1517, 1507, 1515, 1518, 1508, 1512, 1516, + 1519, 1511, 1520, 1515, 1509, 1521, 1523, 1516, 1517, 0, + 0, 1522, 1513, 1513, 1529, 0, 1514, 1524, 1523, 1514, + + 1517, 1533, 1515, 1518, 1520, 1522, 1516, 1519, 1521, 1520, + 1526, 1525, 1521, 1523, 1526, 1524, 1529, 1528, 1522, 1530, + 1534, 1529, 1531, 1532, 1524, 1525, 1528, 1526, 1533, 1531, + 1535, 1530, 1538, 1536, 1532, 1526, 1539, 1526, 1525, 1537, + 1546, 1526, 1534, 1544, 1528, 1536, 1530, 1534, 1540, 1531, + 1532, 1541, 1542, 1537, 1526, 1547, 1543, 1554, 1539, 1542, + 1536, 1544, 1535, 1539, 1538, 1543, 1537, 1551, 1549, 1545, + 1544, 1540, 1546, 1551, 1541, 1540, 1545, 1549, 1541, 1542, + 1552, 1555, 1547, 1543, 1553, 1557, 1560, 0, 1555, 1554, + 1559, 1565, 1561, 1562, 1551, 1549, 1545, 0, 1563, 1566, + + 0, 0, 1552, 1561, 1562, 1566, 1568, 1552, 1555, 1563, + 1553, 1553, 1557, 1560, 1559, 1565, 1567, 1559, 1565, 1561, + 1562, 1569, 1571, 1567, 1568, 1563, 1566, 1570, 1569, 1572, + 1573, 0, 1575, 1568, 1571, 1572, 1574, 1576, 1573, 1577, + 1580, 1579, 0, 1567, 1578, 1575, 0, 1584, 1569, 1571, + 1579, 1583, 1580, 1570, 1570, 1585, 1572, 1573, 1574, 1575, + 1584, 1586, 1578, 1574, 1585, 1577, 1577, 1580, 1579, 1576, + 1581, 1578, 1581, 1582, 1584, 1587, 1588, 1583, 1583, 1590, + 1582, 1589, 1585, 1586, 1591, 1592, 1590, 1587, 1586, 1594, + 1592, 1593, 1595, 1596, 1599, 1597, 0, 1581, 0, 1593, + + 1582, 1596, 1587, 1588, 1589, 1594, 1590, 1600, 1589, 1601, + 1591, 1591, 1592, 1602, 1603, 1595, 1594, 1597, 1593, 1595, + 1596, 1599, 1597, 1601, 1604, 1603, 1605, 0, 1609, 1606, + 1606, 1600, 1607, 1604, 1600, 1602, 1601, 1606, 1610, 1605, + 1602, 1603, 1608, 1611, 1608, 1607, 1613, 0, 1614, 1615, + 1611, 1604, 1617, 1605, 1609, 1609, 1606, 1606, 1618, 1607, + 1610, 1612, 0, 1619, 1621, 1610, 1614, 1616, 1612, 1608, + 1611, 1615, 1624, 1613, 1616, 1614, 1615, 1617, 1623, 1617, + 1618, 1626, 1620, 1629, 1625, 1618, 1629, 1630, 1612, 1620, + 1628, 1623, 1625, 1631, 1616, 1619, 1621, 1633, 1635, 1624, + + 0, 0, 1626, 1632, 1649, 1623, 1633, 1636, 1626, 1620, + 1629, 1625, 1628, 1630, 1630, 1634, 1632, 1628, 0, 1631, + 1631, 1638, 1635, 1637, 1633, 1635, 1641, 1634, 1639, 1642, + 1632, 1649, 1637, 1636, 1636, 1639, 1638, 1640, 1643, 1645, + 1640, 1646, 1634, 1647, 1651, 1647, 1650, 1648, 1638, 1650, + 1637, 1642, 1640, 1652, 1643, 1639, 1642, 1645, 1641, 1656, + 1653, 1640, 1643, 1646, 1640, 1643, 1645, 1640, 1646, 1654, + 1647, 1648, 1655, 1650, 1648, 1657, 1651, 1659, 1658, 1640, + 1660, 1643, 1653, 1661, 1662, 1652, 1659, 1653, 1660, 1663, + 1661, 1656, 1658, 1664, 1665, 1654, 1654, 1657, 1655, 1655, + + 1666, 1667, 1657, 1670, 1659, 1658, 0, 1660, 1662, 1668, + 1661, 1662, 1669, 1668, 1672, 1671, 1676, 1673, 0, 1677, + 1674, 1663, 1666, 1672, 1673, 1664, 1665, 1666, 1674, 1676, + 1670, 1675, 1677, 1667, 1669, 1678, 1668, 1671, 1675, 1669, + 1679, 1672, 1671, 1676, 1673, 1681, 1677, 1674, 1678, 1679, + 1680, 1682, 1680, 1683, 1684, 1686, 1687, 1689, 1675, 1688, + 0, 1683, 1678, 0, 0, 0, 0, 1679, 1681, 1694, + 1686, 1687, 1681, 1688, 1684, 1693, 1682, 1680, 1682, 1691, + 1683, 1684, 1686, 1687, 1690, 1692, 1688, 1694, 1693, 1689, + 1691, 1690, 1692, 1694, 1695, 1696, 1694, 1698, 1699, 1706, + + 1701, 1700, 1693, 1702, 1703, 1699, 1691, 1705, 1706, 0, + 1705, 1690, 1692, 1696, 1694, 1701, 1703, 1707, 0, 1704, + 1695, 1695, 1696, 1700, 1698, 1699, 1706, 1701, 1700, 1702, + 1702, 1703, 1704, 1708, 1705, 1707, 1709, 1710, 1711, 1715, + 1710, 1715, 1713, 1717, 1707, 1708, 1704, 1713, 1716, 1711, + 1718, 1722, 1720, 1719, 1713, 1710, 1709, 1721, 0, 1723, + 1708, 1720, 0, 1709, 1710, 1711, 1715, 1710, 1719, 1713, + 1717, 1725, 1716, 1723, 1713, 1716, 1727, 1718, 1722, 1720, + 1719, 1721, 1724, 1726, 1721, 1728, 1723, 1730, 1731, 1729, + 1724, 1728, 0, 1725, 1733, 1730, 1737, 1736, 1725, 1731, + + 1727, 1732, 1733, 1727, 1734, 1726, 1735, 1734, 0, 1724, + 1726, 1729, 1728, 1739, 1730, 1731, 1729, 1738, 1740, 1732, + 1739, 1733, 1734, 1737, 1735, 1742, 1741, 1745, 1732, 1736, + 1743, 1734, 1740, 1735, 1734, 1741, 1746, 1738, 1742, 1751, + 1739, 1743, 1744, 1752, 1738, 1740, 1749, 1744, 1749, 1745, + 1750, 1746, 1742, 1741, 1745, 0, 1766, 1743, 1753, 1750, + 1754, 1766, 1756, 1746, 1755, 1751, 1751, 1752, 1755, 1753, + 1752, 1758, 1759, 1749, 1744, 1761, 1756, 1750, 1754, 1757, + 1760, 1759, 1757, 1766, 1761, 1753, 1760, 1754, 1756, 1756, + 1755, 1755, 1764, 1758, 1767, 1755, 1762, 1757, 1758, 1759, + + 1765, 1762, 1761, 1756, 1768, 1764, 1757, 1760, 1769, 1757, + 1771, 1770, 1765, 1772, 1773, 1775, 1767, 1768, 0, 1764, + 1770, 1767, 1774, 1776, 1780, 1778, 1779, 1765, 1762, 0, + 1783, 1768, 1778, 0, 1781, 1774, 1773, 1771, 1770, 1779, + 1769, 1773, 1791, 0, 1776, 1772, 1785, 1775, 1781, 1774, + 1776, 1782, 1778, 1779, 1792, 1787, 1780, 1782, 1788, 1789, + 1790, 1781, 1783, 1787, 1791, 1785, 1788, 1789, 1799, 1791, + 1796, 1794, 1792, 1785, 1793, 1782, 1795, 1800, 1782, 1790, + 1797, 1792, 1787, 1796, 1782, 1788, 1789, 1790, 1793, 1794, + 1795, 1798, 1801, 1797, 1802, 1803, 1805, 1796, 1794, 1804, + + 1799, 1793, 1806, 1795, 1807, 1805, 1804, 1797, 1802, 1800, + 1806, 1808, 1798, 1809, 1814, 1810, 1801, 1811, 1798, 1801, + 1810, 1802, 1803, 1805, 1812, 1808, 1804, 1815, 1811, 1806, + 1816, 1807, 0, 1812, 1815, 1829, 1817, 1819, 1808, 1798, + 1818, 1814, 1810, 1820, 1811, 1809, 1822, 1818, 1821, 0, + 1822, 1812, 1824, 1816, 1815, 1833, 1825, 1816, 1817, 1819, + 1826, 1827, 1829, 1817, 1819, 1820, 1821, 1818, 1824, 1828, + 1820, 1831, 1830, 1822, 1825, 1821, 1827, 1832, 1834, 1824, + 1830, 1828, 1833, 1825, 1826, 1832, 1831, 1826, 1827, 1835, + 1840, 1834, 1836, 1837, 1839, 1841, 1828, 1840, 1831, 1830, + + 0, 1843, 1839, 1842, 1832, 1834, 1845, 1836, 1837, 1835, + 1843, 1844, 1846, 1847, 1851, 1849, 1835, 1840, 1842, 1836, + 1837, 1839, 1852, 1850, 0, 0, 1854, 1841, 1843, 1853, + 1842, 1855, 1844, 1845, 0, 0, 1846, 1849, 1844, 1846, + 1847, 1850, 1849, 1857, 1853, 1856, 1851, 1860, 1857, 1852, + 1850, 1854, 1856, 1854, 1858, 1855, 1853, 1859, 1855, 1862, + 1861, 1863, 1866, 1858, 1867, 1872, 1859, 1864, 1865, 1860, + 1857, 1867, 1856, 0, 1860, 1866, 1863, 1862, 1868, 1864, + 1866, 1858, 1861, 1871, 1859, 1868, 1862, 1861, 1863, 1866, + 1865, 1867, 1869, 1873, 1864, 1865, 1870, 1872, 1875, 1873, + + 1868, 0, 1866, 1876, 1880, 1868, 1878, 1877, 1870, 1875, + 1871, 1876, 1868, 1882, 1869, 1877, 1883, 1878, 1884, 1869, + 1873, 1879, 1881, 1870, 1881, 1875, 1886, 1891, 1879, 1880, + 1876, 1880, 1887, 1878, 1877, 1881, 1888, 1885, 1892, 1882, + 1882, 1889, 1888, 1883, 1885, 1884, 1890, 1889, 1879, 1881, + 1893, 1881, 1890, 1886, 1891, 1896, 1894, 1897, 1887, 1887, + 1898, 1892, 0, 1888, 1885, 1892, 1897, 1899, 1889, 1900, + 1902, 1900, 1903, 1890, 1901, 1905, 1906, 1912, 1904, 1903, + 1894, 0, 1893, 1894, 1897, 1907, 1908, 1896, 1906, 1899, + 1910, 1907, 1898, 1909, 1899, 1917, 1900, 1902, 1901, 1903, + + 1904, 1901, 1905, 1906, 1911, 1904, 0, 1914, 1908, 1912, + 1915, 1916, 1907, 1908, 1914, 1909, 1910, 1910, 1916, 1915, + 1909, 1913, 1913, 1913, 1920, 1918, 1911, 1917, 1913, 1924, + 0, 1911, 1918, 1919, 1914, 1921, 1913, 1915, 1916, 1926, + 1919, 1923, 1924, 1929, 1920, 1927, 1923, 1925, 1913, 1913, + 1913, 1920, 1918, 1928, 1933, 1913, 1924, 1921, 1930, 1925, + 1919, 1927, 1921, 1931, 1926, 1928, 1926, 1934, 1934, 1935, + 1931, 1932, 1927, 1923, 1925, 1929, 1930, 1932, 1937, 1936, + 1928, 1933, 1938, 1937, 1939, 1930, 1936, 1943, 1949, 1944, + 1931, 1944, 1940, 0, 1934, 1935, 1935, 1945, 1932, 1940, + + 1947, 1948, 1950, 1953, 1952, 1937, 1936, 1948, 1938, 1938, + 1950, 1939, 1951, 1955, 1943, 1945, 1944, 1952, 1947, 1940, + 1949, 1956, 1964, 1951, 1945, 1955, 1954, 1947, 1948, 1950, + 1953, 1952, 1954, 1957, 1958, 1958, 1959, 1960, 1960, 1951, + 1955, 1956, 1963, 1961, 1964, 1965, 1967, 0, 1956, 1964, + 1968, 1957, 1966, 1954, 1961, 1972, 1969, 1971, 1973, 1966, + 1957, 1958, 1959, 1959, 1960, 1971, 1967, 1974, 1975, 1979, + 1961, 1977, 1978, 1967, 1963, 1980, 1976, 1965, 1977, 1966, + 1978, 1969, 1968, 1969, 1971, 1973, 1975, 1972, 1976, 1974, + 1980, 1981, 1982, 1979, 1974, 1975, 1979, 1984, 1977, 1978, + + 1985, 1982, 1980, 1976, 1983, 1983, 1986, 1987, 1988, 1991, + 1989, 0, 1992, 1994, 1987, 1981, 1991, 1992, 1981, 1982, + 1988, 1993, 1995, 1984, 1984, 1995, 1989, 2003, 2000, 1997, + 2004, 1983, 1985, 1989, 1987, 1988, 1991, 1989, 1986, 1992, + 1994, 1997, 1996, 1993, 1999, 2003, 2001, 2002, 1993, 1995, + 1996, 2000, 1999, 1989, 2003, 2000, 1997, 2004, 2005, 2006, + 2007, 2008, 2010, 2009, 2006, 2015, 0, 2008, 2002, 1996, + 2010, 1999, 2001, 2001, 2002, 2006, 2009, 2011, 0, 2020, + 2024, 2005, 2021, 2016, 2017, 2005, 2006, 2007, 2008, 2010, + 2009, 2006, 2016, 2012, 2013, 2014, 2017, 2015, 2024, 2011, + + 2012, 2013, 2014, 2018, 2011, 2019, 2020, 2024, 2021, 2021, + 2016, 2017, 2022, 2025, 2027, 2028, 2026, 2030, 2025, 2019, + 2012, 2013, 2014, 2026, 2032, 2018, 2031, 2034, 2036, 2025, + 2018, 2031, 2019, 2035, 2035, 2022, 2027, 2037, 2038, 2022, + 2025, 2027, 2028, 2026, 2030, 2025, 2040, 2042, 2041, 2045, + 2036, 2043, 2037, 2047, 0, 2036, 2032, 2048, 2031, 2034, + 2035, 2040, 2042, 2044, 2037, 2044, 2051, 2046, 2049, 2060, + 2038, 2041, 2046, 2040, 2042, 2041, 2049, 2043, 2043, 2050, + 2056, 2045, 2052, 2054, 2048, 2047, 2050, 2058, 2051, 2059, + 2044, 2055, 2061, 2051, 2046, 2049, 2060, 2052, 2054, 2055, + + 2063, 2062, 2056, 2064, 2065, 0, 2050, 2056, 2062, 2052, + 2054, 2058, 2066, 2071, 2058, 2059, 2059, 2067, 2055, 2061, + 2069, 2072, 0, 2073, 2064, 2078, 2065, 0, 2062, 0, + 2064, 2065, 2063, 2066, 0, 2067, 2072, 2071, 2075, 2066, + 2071, 2076, 2069, 2079, 2067, 2077, 0, 2069, 2072, 2073, + 2073, 2080, 2078, 2075, 2081, 2082, 2076, 2083, 0, 2084, + 2086, 2079, 2085, 2087, 2090, 2075, 2084, 2077, 2076, 2086, + 2079, 2087, 2077, 2080, 2088, 2092, 2081, 2089, 2080, 2082, + 2085, 2081, 2082, 2091, 2083, 2093, 2084, 2086, 2098, 2085, + 2087, 2097, 2091, 2092, 2093, 2094, 2090, 2088, 2096, 2089, + + 2097, 2088, 2092, 2099, 2089, 2101, 2098, 2100, 2094, 2096, + 2091, 2102, 2093, 2103, 2100, 2098, 2109, 2104, 2097, 2105, + 2118, 2099, 2094, 2104, 2096, 2096, 2111, 2116, 2103, 2102, + 2099, 2101, 2101, 2106, 2100, 0, 2096, 2112, 2102, 2116, + 2103, 2105, 2117, 2109, 2104, 2113, 2105, 2106, 2112, 2119, + 2111, 2114, 2118, 2111, 2116, 2117, 2113, 2120, 2122, 2119, + 2106, 2121, 2114, 2123, 2112, 2126, 2132, 2122, 2124, 2117, + 2127, 2129, 2113, 2130, 2131, 2129, 2119, 2134, 2114, 2132, + 0, 2133, 2134, 2120, 2120, 2122, 2121, 2124, 2121, 2136, + 2123, 2137, 2126, 2132, 2130, 2124, 2127, 2127, 2129, 2137, + + 2130, 2133, 2135, 2144, 2134, 2138, 2131, 2139, 2133, 2135, + 2140, 2138, 2141, 2142, 0, 2136, 2136, 2137, 2137, 2143, + 2143, 2144, 2139, 2145, 2141, 2140, 2137, 2153, 2142, 2135, + 2144, 2146, 2138, 2152, 2139, 2145, 2146, 2140, 2147, 2141, + 2142, 2148, 2147, 2151, 2150, 2148, 2143, 2151, 2152, 2155, + 2145, 2150, 2154, 2156, 2153, 2158, 2155, 0, 2148, 2157, + 2152, 2154, 2158, 2146, 2164, 2147, 2148, 2160, 2148, 2162, + 2151, 2150, 2148, 2161, 2166, 2163, 2155, 2156, 2162, 2154, + 2156, 2157, 2158, 2171, 2164, 2148, 2157, 2169, 2170, 2160, + 2168, 2164, 2166, 2174, 2160, 2177, 2162, 2163, 2161, 2168, + + 2161, 2166, 2163, 2170, 2172, 2169, 2173, 2179, 2171, 2175, + 2171, 2178, 2172, 2173, 2169, 2170, 2175, 2168, 2180, 2180, + 2177, 2181, 2177, 0, 2178, 2174, 2182, 2183, 2184, 2188, + 2185, 2172, 2186, 2173, 2179, 2187, 2175, 2191, 2178, 2185, + 0, 2186, 2187, 2181, 2189, 2180, 2190, 2198, 2181, 2183, + 2184, 2182, 2191, 2182, 2183, 2184, 2193, 2185, 2192, 2186, + 2190, 2188, 2187, 2192, 2191, 2196, 2189, 2197, 2195, 2203, + 2199, 2189, 2200, 2190, 2198, 2193, 2195, 2201, 2196, 2202, + 2204, 2208, 2197, 2193, 2205, 2269, 2202, 0, 2200, 2201, + 2192, 2206, 2196, 2210, 2197, 2195, 2199, 2199, 0, 2200, + + 2206, 2203, 2204, 2211, 2201, 2207, 2202, 2204, 2208, 2205, + 2209, 2205, 2213, 2207, 2214, 2212, 0, 2269, 2206, 2210, + 2210, 2216, 2218, 2214, 2207, 2209, 0, 0, 2217, 2211, + 2211, 2217, 2207, 2212, 2213, 2221, 2222, 2209, 2220, 2213, + 2207, 2214, 2212, 2220, 2216, 2219, 2217, 2218, 2216, 2218, + 2221, 2219, 2223, 2225, 2222, 2217, 2226, 2229, 2217, 2227, + 2232, 0, 2221, 2222, 2231, 0, 2233, 2223, 2225, 0, + 2220, 2229, 2219, 2230, 0, 2233, 0, 2272, 2226, 2223, + 2225, 2227, 2231, 2226, 2229, 2230, 2227, 2232, 2234, 2235, + 2236, 2231, 2230, 2233, 2237, 2238, 2237, 2234, 2235, 2239, + + 2230, 2236, 2240, 2242, 2243, 2245, 2244, 2247, 2238, 2272, + 0, 2239, 2230, 2244, 2246, 2234, 2235, 2236, 2242, 2243, + 2259, 2237, 2238, 2253, 2240, 2247, 2239, 2245, 2248, 2240, + 2242, 2243, 2245, 2244, 2247, 2251, 2246, 2248, 2254, 2255, + 2256, 2246, 2254, 2257, 2253, 2257, 2258, 2259, 2251, 2256, + 2253, 2255, 2261, 2260, 2262, 2248, 2251, 0, 2266, 2264, + 2263, 2265, 2251, 2262, 2258, 2254, 2255, 2256, 2263, 2268, + 2257, 2260, 2266, 2258, 2273, 2251, 2274, 2268, 2275, 2261, + 2260, 2262, 2264, 2265, 2270, 2266, 2264, 2263, 2265, 2270, + 2271, 2276, 2279, 2282, 2281, 2271, 2268, 2275, 2276, 2280, + + 2274, 2283, 2284, 2274, 2286, 2275, 2273, 2285, 2287, 0, + 2289, 2270, 2281, 2280, 2291, 2288, 2285, 2284, 2276, 2279, + 2282, 2281, 2271, 2290, 2280, 2280, 2280, 2283, 2283, 2284, + 2287, 2293, 2294, 2295, 2285, 2287, 2286, 2289, 0, 2294, + 2280, 2288, 2288, 2299, 2302, 2290, 2291, 2298, 2296, 2298, + 2290, 2280, 2301, 2300, 2293, 2296, 2295, 2300, 2293, 2294, + 2295, 2305, 2304, 2303, 2301, 2299, 2302, 2308, 2305, 2306, + 2299, 2302, 2303, 2304, 2298, 2296, 2307, 2309, 2312, 2301, + 2300, 2307, 2315, 2310, 2311, 2313, 2313, 2312, 2305, 2304, + 2303, 2306, 2314, 2317, 2308, 2310, 2306, 2315, 2320, 2316, + + 2309, 2314, 2318, 2307, 2309, 2312, 2311, 2316, 2319, 2315, + 2310, 2311, 2313, 2322, 2323, 2317, 2318, 2319, 2327, 2314, + 2317, 2327, 2323, 2324, 2330, 2320, 2316, 2329, 2325, 2318, + 2326, 2324, 2322, 2329, 2326, 2319, 2325, 2331, 2328, 2330, + 2322, 2323, 2332, 2331, 2334, 2327, 2328, 0, 2336, 2338, + 2324, 2330, 2339, 2337, 2329, 2325, 2334, 2326, 2341, 2342, + 2340, 0, 2336, 2349, 2331, 2328, 2337, 2340, 2343, 2344, + 2338, 2334, 2348, 2351, 2332, 2336, 2338, 2339, 0, 2339, + 2337, 2342, 2350, 2344, 2346, 2341, 2342, 2340, 2345, 2347, + 2349, 2345, 2343, 2352, 2353, 2343, 2344, 2346, 2348, 2348, + + 2351, 2357, 2361, 2347, 2354, 2352, 2353, 2350, 2358, 2350, + 2355, 2346, 2359, 2355, 2360, 2345, 2347, 2360, 2354, 2362, + 2352, 2353, 0, 2363, 2369, 2365, 2366, 2370, 2357, 2361, + 2372, 2354, 2360, 2366, 2358, 2358, 2355, 2355, 2359, 2359, + 2355, 2360, 2367, 2368, 2360, 2363, 2362, 2365, 2371, 2367, + 2363, 2369, 2365, 2366, 2370, 2373, 2371, 2372, 2368, 2374, + 2375, 2376, 2377, 2378, 2373, 2379, 2380, 0, 2381, 2367, + 2368, 2382, 2375, 2383, 2387, 2371, 2388, 0, 2379, 2390, + 0, 2382, 2373, 2376, 2380, 2394, 2374, 2375, 2376, 2377, + 2378, 2384, 2379, 2380, 2381, 2381, 2387, 2385, 2382, 2389, + + 2383, 2387, 2391, 2388, 2384, 2385, 2390, 2389, 2392, 2394, + 2393, 2391, 2394, 2395, 2396, 2397, 0, 0, 2384, 2399, + 2398, 2401, 2403, 2397, 2385, 2404, 2389, 2406, 2395, 2391, + 2392, 2393, 2398, 2401, 2406, 2392, 2411, 2393, 2407, 2395, + 2395, 2396, 2397, 2402, 2399, 2410, 2399, 2398, 2401, 2403, + 2407, 2402, 2408, 2412, 2406, 2395, 2408, 2404, 2417, 2409, + 2413, 2412, 2414, 2411, 2415, 2407, 2418, 0, 2410, 2421, + 2402, 2409, 2410, 2418, 2414, 2419, 2415, 2420, 2421, 2408, + 2412, 2425, 2413, 2422, 2427, 2417, 2409, 2413, 2423, 2414, + 2420, 2415, 2422, 2418, 2426, 2419, 2421, 2424, 2424, 2428, + + 2423, 2430, 2419, 2431, 2420, 2432, 0, 2425, 2425, 2427, + 2422, 2427, 2426, 2433, 2428, 2423, 2428, 2434, 2431, 2434, + 2435, 2426, 2436, 2428, 2424, 2445, 2428, 2432, 2436, 2438, + 2431, 2441, 2432, 2430, 2435, 2433, 2437, 2439, 2439, 2442, + 2433, 2428, 2446, 2428, 2434, 2443, 2447, 2435, 2444, 2436, + 2448, 2438, 2447, 2441, 2437, 2449, 2438, 2445, 2441, 2450, + 2444, 2442, 2448, 2437, 2439, 2453, 2442, 2443, 2451, 2452, + 2454, 2452, 2443, 2447, 2446, 2444, 2455, 2448, 2460, 2453, + 2456, 2450, 2457, 2455, 2458, 2461, 2450, 2449, 2459, 2462, + 2451, 2460, 2453, 2463, 2454, 2451, 2452, 2454, 2456, 2469, + + 2457, 2465, 2458, 2455, 2468, 2460, 2459, 2456, 2465, 2457, + 2470, 2458, 2467, 0, 2473, 2459, 2463, 2461, 2472, 2467, + 2463, 2462, 2468, 0, 2471, 2469, 2469, 2474, 2465, 2479, + 0, 2468, 2471, 2477, 2481, 0, 2472, 0, 0, 2467, + 2473, 2473, 2470, 2480, 2477, 2472, 2475, 2478, 2475, 2474, + 2471, 2471, 2481, 2475, 2474, 2480, 2479, 2483, 2478, 2471, + 2477, 2481, 2486, 2488, 2489, 2484, 2485, 2491, 2492, 2495, + 2480, 2493, 2483, 2475, 2478, 2475, 2484, 2486, 2485, 2496, + 2497, 2490, 2491, 2498, 2483, 2499, 2489, 2488, 2490, 2486, + 2488, 2489, 2484, 2485, 2491, 2492, 2495, 2493, 2493, 2501, + + 2500, 2502, 2497, 2496, 2503, 2504, 2496, 2497, 2490, 2505, + 2508, 2506, 0, 2507, 2502, 2498, 2509, 2499, 2500, 2506, + 2504, 2512, 2505, 2510, 2514, 2513, 2501, 2500, 2502, 2509, + 2503, 2503, 2504, 2515, 2516, 2517, 2505, 2521, 2506, 2507, + 2507, 2518, 2508, 2509, 2512, 2510, 2520, 2519, 2512, 2513, + 2510, 2514, 2513, 2517, 2519, 2515, 2516, 2522, 2524, 2518, + 2515, 2516, 2517, 2525, 2521, 2526, 2528, 2531, 2518, 2520, + 2525, 2522, 2526, 2520, 2519, 2527, 2529, 2532, 2535, 2528, + 2524, 2530, 2527, 2533, 2522, 2524, 2534, 2535, 2530, 2531, + 2525, 2539, 2526, 2528, 2531, 2538, 2540, 2539, 2536, 2529, + + 2543, 2542, 2527, 2529, 2533, 2535, 2536, 2537, 2530, 2532, + 2533, 2543, 2534, 2534, 2544, 2537, 2542, 2538, 2539, 2545, + 2546, 2547, 2538, 2540, 0, 2536, 2550, 2543, 2542, 2548, + 2552, 2555, 2553, 0, 2537, 2554, 2544, 2556, 2560, 2560, + 2547, 2544, 2558, 2552, 2550, 2553, 2559, 2565, 2547, 2561, + 2567, 2545, 2546, 2550, 2548, 2555, 2548, 2552, 2555, 2553, + 2564, 2554, 2554, 2556, 2556, 2560, 2558, 2566, 2568, 2558, + 2559, 2571, 2573, 2559, 2576, 2561, 2561, 2567, 2575, 2565, + 2579, 2573, 2566, 2564, 2581, 2576, 2568, 2564, 2580, 2580, + 2582, 2575, 2584, 2581, 2566, 2568, 2582, 2586, 2571, 2573, + + 2585, 2576, 2579, 2588, 2590, 2575, 2591, 2579, 2592, 0, + 2593, 2581, 2597, 2591, 2584, 2580, 2595, 2582, 2594, 2584, + 2597, 2593, 2585, 2594, 2586, 2598, 2599, 2585, 2601, 2600, + 2588, 2603, 2604, 2591, 2592, 2592, 2590, 2593, 2595, 2597, + 2605, 2599, 2603, 2595, 2600, 2594, 2606, 2610, 2607, 2598, + 2604, 0, 2598, 2599, 2608, 2601, 2600, 2607, 2603, 2604, + 2611, 2605, 2612, 2613, 0, 2615, 2608, 2605, 2616, 2620, + 2612, 2617, 2613, 2618, 2610, 2607, 2619, 2621, 2606, 0, + 2622, 2608, 2618, 2620, 2611, 2630, 2626, 2611, 2623, 2612, + 2613, 2615, 2615, 2617, 2619, 2616, 2620, 2624, 2617, 2621, + + 2618, 2623, 2625, 2619, 2621, 2622, 2629, 2622, 2626, 2627, + 2624, 2628, 2630, 2626, 2631, 2623, 2627, 2625, 2628, 2632, + 2633, 0, 2634, 2635, 2624, 2636, 0, 2641, 2629, 2625, + 2638, 2637, 2646, 2629, 2636, 2639, 2627, 2634, 2628, 2640, + 2643, 2631, 2641, 2646, 2642, 2647, 2632, 2633, 2635, 2634, + 2635, 2642, 2636, 2637, 2641, 2643, 2638, 2638, 2637, 2646, + 2649, 2639, 2639, 2644, 2650, 2640, 2640, 2643, 2645, 2648, + 2644, 2642, 2647, 2651, 2645, 2652, 2656, 2648, 2653, 2654, + 0, 2658, 2655, 2656, 2660, 2657, 2661, 2649, 2658, 2651, + 2644, 2650, 2662, 2653, 2659, 2645, 2648, 2655, 0, 2654, + + 2651, 2659, 2652, 2656, 2661, 2653, 2654, 2657, 2658, 2655, + 2664, 2660, 2657, 2661, 2663, 2663, 2665, 2664, 2667, 2662, + 2666, 2659, 2668, 2666, 2670, 2669, 2672, 2668, 2671, 2676, + 2665, 2667, 0, 0, 2673, 2677, 2674, 2664, 2676, 2670, + 2677, 2663, 2679, 2665, 2672, 2667, 2673, 2666, 2674, 2668, + 2669, 2670, 2669, 2672, 2671, 2671, 2676, 2680, 2681, 2682, + 2678, 2673, 2677, 2674, 2678, 2683, 2679, 2684, 2690, 2679, + 2680, 2685, 0, 2687, 0, 2689, 2695, 2690, 0, 2693, + 2681, 2682, 2692, 2695, 2680, 2681, 2682, 2678, 2691, 0, + 2692, 2693, 2683, 2699, 2684, 2690, 2696, 2685, 2685, 2687, + + 2687, 2689, 2689, 2695, 2691, 2696, 2693, 2697, 2701, 2692, + 2698, 2699, 2697, 2703, 2700, 2691, 2705, 2698, 2702, 2704, + 2699, 2700, 2703, 2696, 2707, 2702, 2708, 2710, 2704, 2712, + 2711, 2709, 2710, 2701, 2697, 2701, 2715, 2698, 0, 0, + 2703, 2700, 2705, 2705, 2709, 2702, 2704, 2707, 2711, 2714, + 2716, 2707, 2717, 2708, 2710, 2718, 2712, 2711, 2709, 2716, + 2719, 2717, 2720, 2715, 2718, 2724, 2721, 2714, 2725, 2722, + 2723, 2726, 2727, 2724, 2720, 2721, 2714, 2716, 2722, 2717, + 2719, 2723, 2718, 2728, 2730, 2729, 2732, 2719, 2725, 2720, + 2728, 2733, 2724, 2721, 2729, 2725, 2722, 2723, 2726, 2727, + + 2734, 2738, 2737, 2740, 2739, 2730, 2735, 2736, 2741, 2738, + 2728, 2730, 2729, 2732, 2737, 2735, 2736, 2739, 2733, 2742, + 2743, 2745, 2747, 2749, 2751, 2740, 2742, 2743, 2738, 2737, + 2740, 2739, 2734, 2735, 2736, 2741, 2744, 2745, 2746, 2748, + 0, 2755, 2750, 2744, 2747, 2746, 2742, 2743, 2745, 2747, + 2749, 2751, 2753, 2756, 2759, 2757, 0, 0, 0, 2755, + 2753, 2756, 2768, 2744, 2748, 2746, 2748, 2750, 2755, 2750, + 2757, 2758, 2761, 2769, 0, 2772, 2759, 2760, 2758, 2753, + 2756, 2759, 2757, 2762, 2760, 2763, 2768, 2767, 2766, 2768, + 2762, 2770, 2771, 2763, 2761, 2766, 2767, 2773, 2758, 2761, + + 2769, 2771, 2772, 2770, 2760, 2774, 2775, 2779, 2777, 2778, + 2762, 2781, 2763, 2773, 2767, 2766, 2780, 2774, 2770, 2771, + 2777, 2778, 2787, 2782, 2773, 2793, 2790, 0, 2779, 2775, + 2784, 2789, 2774, 2775, 2779, 2777, 2778, 2782, 2781, 2780, + 2785, 2786, 2784, 2780, 2790, 2792, 2789, 2785, 2786, 2787, + 2782, 2791, 2793, 2790, 2794, 2795, 0, 2784, 2789, 2797, + 2801, 2796, 2794, 2800, 2798, 2799, 2807, 2785, 2786, 2806, + 2800, 2792, 2792, 2809, 2791, 2798, 0, 2797, 2791, 2816, + 2799, 2794, 2795, 2796, 2807, 2810, 2797, 2801, 2796, 2808, + 2800, 2798, 2799, 2807, 2808, 2806, 2806, 2811, 2817, 2810, + + 2809, 2812, 2813, 2814, 2815, 2817, 2816, 2818, 2820, 0, + 2823, 2811, 2810, 2826, 2825, 2812, 2808, 2827, 0, 2818, + 2813, 2814, 2815, 2828, 2811, 2817, 2826, 2830, 2812, 2813, + 2814, 2815, 2823, 2831, 2818, 2820, 2825, 2823, 2829, 2827, + 2826, 2825, 2828, 2833, 2827, 2830, 2829, 2835, 2838, 2836, + 2828, 2837, 2831, 2839, 2830, 2833, 2841, 2840, 2842, 2845, + 2831, 2843, 0, 2837, 2841, 2829, 2847, 2844, 2845, 2835, + 2833, 2836, 0, 2846, 2835, 2838, 2836, 2848, 2837, 2840, + 2839, 2843, 2846, 2841, 2840, 2842, 2845, 2849, 2843, 2844, + 2850, 2852, 2853, 2851, 2844, 2856, 2857, 2858, 2847, 2848, + + 2846, 2859, 2850, 2860, 2848, 2861, 2859, 2863, 2864, 2856, + 2866, 0, 0, 2849, 2849, 2851, 2862, 2850, 2852, 2853, + 2851, 2858, 2856, 2857, 2858, 2860, 2865, 2861, 2866, 2862, + 2860, 2864, 2861, 2859, 2867, 2864, 2868, 2866, 2869, 2863, + 2870, 2871, 2872, 2862, 2869, 0, 2867, 2873, 2865, 2874, + 2876, 0, 2880, 2865, 0, 2868, 2877, 2878, 2882, 2885, + 2883, 2867, 2873, 2868, 2872, 2869, 2884, 2880, 2885, 2872, + 2876, 2889, 2870, 2871, 2873, 2886, 2874, 2876, 2877, 2880, + 2882, 2878, 2883, 2877, 2878, 2882, 2885, 2883, 2884, 2886, + 2887, 2888, 2890, 2884, 2891, 2894, 2895, 2889, 2889, 2896, + + 2900, 0, 2886, 2899, 2894, 2901, 2902, 2900, 2887, 2888, + 2890, 2899, 2901, 2903, 2902, 2904, 2891, 2887, 2888, 2890, + 2896, 2891, 2894, 2905, 2910, 2907, 2896, 2900, 2895, 2908, + 2899, 2905, 2901, 2902, 2909, 2904, 2910, 2911, 2912, 2918, + 2903, 2917, 2904, 2907, 2919, 2913, 2915, 2908, 2917, 2911, + 2905, 2910, 2907, 2913, 2921, 2920, 2908, 2920, 2915, 2922, + 2909, 2909, 2918, 2925, 2911, 2912, 2918, 2923, 2917, 2924, + 2926, 2919, 2913, 2915, 2927, 2923, 2929, 2928, 2924, 2928, + 2934, 2931, 2920, 2935, 2939, 0, 2921, 0, 2932, 0, + 2936, 2922, 2938, 2927, 2923, 2925, 2924, 2926, 2929, 2931, + + 2937, 2927, 2932, 2929, 2928, 2938, 2940, 2935, 2931, 2937, + 2935, 2939, 2934, 2936, 2942, 2932, 2943, 2936, 2940, 2938, + 2944, 2945, 2947, 2948, 0, 2943, 2950, 2937, 2952, 2949, + 2954, 2957, 2955, 2940, 0, 2960, 2957, 2954, 0, 2964, + 2942, 2942, 2960, 2943, 2950, 2956, 2948, 2944, 2945, 2947, + 2948, 2949, 2958, 2950, 2955, 2952, 2949, 2954, 2961, 2955, + 2956, 2962, 2960, 2957, 2965, 2961, 2964, 2958, 2966, 2967, + 2968, 2971, 2956, 2972, 2974, 2969, 2975, 0, 2976, 2958, + 2977, 2974, 2972, 2979, 2968, 2961, 2983, 2962, 2962, 2969, + 0, 2965, 2984, 2967, 2978, 2966, 2967, 2968, 2971, 2980, + + 2972, 2974, 2969, 2975, 2976, 2976, 2978, 2977, 2981, 2982, + 2979, 2985, 2988, 2980, 2996, 2989, 3092, 2981, 2983, 2984, + 2991, 2978, 2982, 2992, 2993, 2991, 2980, 2992, 2995, 2999, + 2998, 2993, 2994, 0, 2985, 2981, 2982, 2989, 2985, 2994, + 3002, 2997, 2989, 2997, 2988, 3004, 2996, 3005, 3092, 2995, + 2992, 2993, 2991, 2998, 3008, 2995, 2999, 2998, 3007, 2994, + 3007, 3009, 3002, 3014, 3004, 3010, 3010, 3002, 2997, 3011, + 3012, 3005, 3004, 3013, 3005, 3010, 3014, 3015, 3008, 3012, + 3013, 3008, 3016, 0, 3020, 3007, 3017, 3009, 3009, 3018, + 3014, 3011, 3010, 3010, 3017, 3016, 3011, 3012, 3019, 3025, + + 3013, 3026, 3018, 3020, 3015, 3027, 3019, 3022, 3028, 3016, + 3017, 3020, 3022, 3017, 3023, 3024, 3018, 3029, 3031, 3023, + 0, 3017, 3030, 3024, 0, 3019, 3025, 3026, 3026, 3031, + 3032, 3027, 3027, 3033, 3028, 3028, 3034, 3034, 3035, 3022, + 3033, 3039, 3024, 3029, 3029, 3031, 3023, 3036, 3030, 3030, + 3037, 3035, 3032, 3038, 3040, 3041, 3044, 3032, 3037, 3039, + 3033, 3040, 3041, 3034, 3042, 3035, 3045, 0, 3039, 3036, + 3046, 3042, 3047, 3048, 3036, 3038, 3052, 3037, 3050, 0, + 3038, 3040, 3041, 3044, 3047, 3049, 3054, 3050, 3053, 3055, + 3057, 3042, 3058, 3045, 3046, 3060, 3059, 3046, 0, 3047, + + 3048, 3065, 3061, 3052, 3066, 3050, 3049, 3062, 3053, 3064, + 3058, 3055, 3049, 3054, 3059, 3053, 3055, 3057, 3064, 3058, + 3061, 3067, 3060, 3059, 3068, 3062, 3071, 3069, 3065, 3061, + 3070, 3066, 3072, 3075, 3062, 3069, 3064, 3076, 3071, 3072, + 3073, 3081, 3068, 3077, 3067, 3073, 3070, 3075, 3067, 3082, + 3085, 3068, 3083, 3071, 3069, 3076, 3086, 3070, 3088, 3072, + 3075, 3090, 3091, 3081, 3076, 3083, 3077, 3088, 3081, 3086, + 3077, 3087, 3073, 3087, 3098, 3093, 3082, 3085, 3102, 3083, + 3091, 3099, 3097, 3086, 3097, 3088, 3101, 0, 3090, 3091, + 3093, 3104, 3108, 3101, 3106, 3109, 3098, 3110, 3087, 3099, + + 3106, 3098, 3093, 3115, 3113, 3126, 3104, 3111, 3099, 3097, + 3102, 3118, 3119, 3101, 3108, 3114, 3115, 3109, 3104, 3108, + 3120, 3106, 3109, 3110, 3110, 3111, 3113, 3121, 3123, 3114, + 3115, 3113, 3116, 3122, 3111, 3116, 3123, 3126, 3118, 3119, + 3122, 3124, 3114, 3127, 3128, 3121, 3129, 3120, 3130, 3131, + 3132, 3135, 3133, 0, 3121, 3123, 3132, 3130, 3116, 3116, + 3122, 3137, 3116, 3124, 3131, 3127, 3128, 3139, 3124, 3134, + 3127, 3128, 3142, 3129, 3133, 3130, 3131, 3132, 3134, 3133, + 3136, 3140, 3136, 3135, 3141, 3143, 3149, 0, 3137, 3144, + 3139, 3151, 3145, 3143, 3139, 3147, 3134, 3154, 3142, 3142, + + 3152, 3144, 3147, 3140, 3145, 3151, 3141, 3136, 3140, 3153, + 3155, 3141, 3143, 3149, 3152, 3156, 3144, 3157, 3151, 3145, + 3154, 3158, 3147, 3153, 3154, 3157, 3156, 3152, 3155, 3159, + 3163, 3160, 0, 3161, 3162, 3165, 3153, 3155, 3160, 3163, + 3158, 3166, 3156, 3173, 3157, 3164, 3164, 3167, 3158, 3170, + 3171, 3159, 3162, 3174, 3170, 3167, 3159, 3163, 3160, 3161, + 3161, 3162, 3165, 3171, 3173, 3176, 3178, 3180, 3166, 3183, + 3173, 3176, 3164, 3181, 3167, 3184, 3185, 3171, 3180, 3188, + 3174, 3170, 3189, 3190, 3181, 3191, 3184, 3193, 3199, 3189, + 0, 3183, 3176, 3178, 3180, 3192, 3183, 3194, 3185, 3192, + + 3181, 3190, 3184, 3185, 3196, 3194, 3188, 3197, 3198, 3189, + 3190, 3201, 3203, 3204, 3193, 3199, 3198, 3191, 0, 3203, + 3197, 3207, 3192, 3209, 3194, 3205, 3207, 3208, 3208, 3210, + 3196, 3196, 3211, 3212, 3197, 3198, 3213, 3214, 3217, 3203, + 3212, 3221, 0, 3201, 3211, 3204, 3219, 3205, 3207, 3215, + 3209, 3216, 3205, 3214, 3208, 3213, 3210, 3218, 3216, 3211, + 3212, 3219, 3220, 3213, 3214, 3218, 3223, 3215, 3221, 3220, + 3217, 3222, 3224, 3219, 3225, 3231, 3215, 3229, 3216, 3230, + 0, 3232, 3213, 3222, 3218, 3233, 3230, 3234, 3235, 3220, + 3223, 3237, 3229, 3223, 3238, 3239, 3224, 3235, 3222, 3224, + + 3225, 3225, 3240, 3241, 3229, 3243, 3230, 3231, 3232, 3233, + 3240, 3245, 3233, 3237, 3249, 3235, 3246, 3239, 3237, 3234, + 3248, 3238, 3239, 3242, 3242, 3246, 3245, 3252, 3247, 3240, + 3247, 3250, 3243, 3242, 3248, 3241, 3254, 3251, 3245, 3250, + 3255, 3249, 3256, 3246, 3257, 3252, 3258, 3248, 3251, 3260, + 3242, 3242, 3259, 3261, 3252, 3247, 3262, 3263, 3250, 3258, + 3266, 3264, 3270, 3254, 3251, 0, 3257, 3255, 3267, 3256, + 3271, 3257, 3273, 3258, 3259, 3264, 3260, 3265, 3265, 3259, + 3261, 3271, 3274, 3262, 3263, 3276, 3278, 3284, 3264, 3270, + 3267, 3278, 3266, 3276, 3280, 3267, 3279, 3271, 3281, 3273, + + 3282, 3279, 3280, 3281, 3265, 3285, 3285, 3286, 3291, 3274, + 3289, 3287, 3276, 3278, 3284, 3286, 3292, 3289, 3290, 3294, + 3295, 3280, 3296, 3279, 3287, 3281, 3282, 3282, 3294, 3296, + 3303, 3297, 3285, 3298, 3286, 3291, 3290, 3289, 3287, 3297, + 3299, 3302, 3305, 3292, 3306, 3290, 3294, 3302, 3307, 3296, + 3308, 3310, 3295, 3311, 3312, 3298, 3314, 3303, 3297, 3309, + 3298, 3307, 3299, 3315, 0, 3316, 3306, 3299, 3302, 3305, + 3310, 3306, 3316, 3318, 3309, 3307, 3312, 3317, 3310, 3314, + 3311, 3312, 3308, 3314, 3317, 3315, 3309, 3319, 3320, 3322, + 3315, 3323, 3316, 3335, 3324, 3318, 3325, 3327, 0, 3323, + + 3318, 3324, 3319, 3325, 3317, 3331, 3327, 3330, 3322, 3320, + 0, 3328, 0, 3330, 3319, 3320, 3322, 3333, 3323, 3329, + 3329, 3324, 3328, 3325, 3327, 3335, 3334, 3331, 3336, 3329, + 3338, 3340, 3331, 3334, 3330, 3339, 3344, 3338, 3328, 3333, + 3345, 3346, 3351, 3352, 3333, 3340, 3329, 3329, 3353, 3354, + 3336, 3359, 3362, 3334, 3356, 3336, 3353, 3338, 3340, 3339, + 3360, 3360, 3339, 3344, 3346, 3352, 3356, 3345, 3346, 3351, + 3352, 3361, 3361, 3363, 3363, 3353, 3354, 3366, 3359, 3362, + 3364, 3356, 3368, 3367, 3369, 3370, 0, 3373, 3374, 3360, + 3375, 3377, 0, 3369, 3376, 3374, 3378, 3375, 3370, 3366, + + 3361, 3367, 3363, 3364, 3366, 3378, 3382, 3364, 3382, 3368, + 3367, 3369, 3370, 3373, 3373, 3374, 3376, 3375, 3377, 3379, + 3383, 3376, 3384, 3378, 3385, 3386, 3379, 3388, 3389, 3390, + 3391, 0, 3392, 3382, 3393, 3394, 3388, 3386, 3396, 3398, + 3383, 3395, 3385, 3399, 3398, 3384, 3379, 3383, 3391, 3384, + 3389, 3385, 3386, 3395, 3388, 3389, 3390, 3391, 3392, 3392, + 3396, 3393, 3394, 3397, 3401, 3396, 3397, 3400, 3395, 3400, + 3403, 3398, 3402, 3404, 3405, 3399, 3401, 3406, 3402, 3407, + 3409, 3397, 3405, 3410, 0, 3408, 3411, 3412, 3415, 3417, + 3397, 3401, 3403, 3397, 3400, 3404, 3420, 3403, 3411, 3402, + + 3404, 3405, 3418, 3422, 3406, 3420, 3408, 3409, 3423, 3412, + 3410, 3407, 3408, 3411, 3412, 3415, 3417, 3424, 3425, 3427, + 3418, 3428, 3429, 3420, 3430, 3431, 3431, 3434, 3435, 3418, + 3422, 3440, 3433, 3438, 3441, 3423, 3443, 0, 3436, 3442, + 3438, 3444, 3437, 3440, 3424, 3425, 3427, 3442, 3428, 3429, + 3433, 3430, 3431, 3444, 3434, 3435, 3436, 3437, 3440, 3433, + 3438, 3441, 3445, 3443, 3446, 3436, 3442, 3447, 3444, 3437, + 3448, 3450, 3451, 3454, 3461, 3462, 3445, 3455, 3458, 3446, + 3456, 3456, 3454, 3450, 3457, 3460, 3463, 3458, 3462, 3445, + 0, 3446, 0, 3447, 3447, 3464, 0, 3448, 3450, 3451, + + 3454, 3455, 3462, 3464, 3455, 3458, 3461, 3456, 3463, 3460, + 3457, 3457, 3460, 3463, 3465, 3466, 3468, 3469, 3473, 3476, + 3476, 3477, 3464, 3465, 3472, 3490, 3466, 3486, 3477, 3487, + 3473, 3491, 3492, 3493, 3495, 3469, 3497, 3468, 0, 3490, + 3497, 3465, 3466, 3468, 3469, 3473, 3476, 3472, 3477, 3486, + 3498, 3472, 3490, 3487, 3486, 3499, 3487, 3500, 3491, 3492, + 3493, 3495, 3502, 3497, 3500, 3504, 3506, 3505, 3498, 3504, + 3507, 0, 3509, 3508, 3515, 3502, 3510, 3498, 3499, 3511, + 3513, 0, 3499, 3505, 3500, 3508, 3515, 3511, 3506, 3502, + 3510, 3513, 3504, 3506, 3505, 3507, 3512, 3507, 3509, 3509, + + 3508, 3515, 3514, 3510, 3514, 3512, 3511, 3513, 3516, 3517, + 3518, 3519, 3520, 3521, 3522, 3523, 0, 3519, 3529, 3531, + 0, 3521, 3523, 3512, 3517, 3524, 3516, 3533, 3535, 3514, + 3532, 3529, 3518, 3534, 3520, 3516, 3517, 3518, 3519, 3520, + 3521, 3522, 3523, 3530, 3536, 3529, 3531, 3524, 3532, 3538, + 3530, 3539, 3524, 3537, 3533, 3535, 3538, 3532, 0, 3534, + 3534, 3537, 3540, 3541, 3542, 3543, 3542, 3544, 3545, 0, + 3530, 3536, 0, 3546, 3547, 3539, 3538, 3543, 3539, 3548, + 3537, 3545, 3550, 3551, 3540, 3541, 3549, 3553, 3546, 3540, + 3541, 3542, 3543, 3549, 3555, 3545, 3547, 3556, 3560, 3544, + + 3546, 3547, 3555, 3554, 3558, 3563, 3548, 3560, 3564, 3550, + 3551, 3566, 0, 3549, 3553, 3554, 3558, 3565, 3567, 3566, + 3568, 3555, 3573, 0, 3556, 3560, 3569, 3570, 0, 3571, + 3554, 3558, 3563, 3572, 3564, 3564, 3565, 3571, 3566, 3569, + 3575, 3570, 3579, 3583, 3565, 0, 3582, 0, 3579, 3573, + 3567, 3580, 3568, 3569, 3570, 3572, 3571, 3585, 3580, 3582, + 3572, 3586, 3588, 3587, 3585, 3589, 3583, 3575, 3593, 3579, + 3583, 3587, 3590, 3582, 3591, 3592, 3588, 3598, 3580, 3589, + 3590, 3599, 3597, 3586, 3585, 3598, 3596, 3601, 3586, 3588, + 3587, 3597, 3589, 3596, 3600, 3593, 3591, 3592, 3602, 3590, + + 3603, 3591, 3592, 3606, 3598, 3607, 3604, 3605, 3599, 3597, + 0, 3606, 3609, 3596, 3610, 3611, 3600, 3613, 3614, 3601, + 3618, 3600, 3603, 3615, 3602, 3602, 3614, 3603, 3604, 3605, + 3606, 3622, 3624, 3604, 3605, 3620, 3610, 3607, 3616, 3609, + 3613, 3610, 3611, 3615, 3613, 3614, 3616, 3617, 3619, 3620, + 3615, 3625, 3618, 3627, 3625, 3617, 3619, 3622, 3622, 3624, + 3626, 3627, 3620, 3628, 3631, 3616, 3630, 3634, 3634, 3625, + 3629, 3628, 0, 3639, 3617, 3619, 3635, 3642, 3625, 3637, + 3627, 3625, 3626, 3638, 3629, 3632, 3631, 3626, 3636, 0, + 3628, 3631, 3630, 3630, 3634, 3639, 3636, 3629, 3640, 3632, + + 3639, 3643, 3635, 3635, 3642, 3637, 3637, 3644, 3641, 3638, + 3638, 3645, 3632, 3646, 3648, 3636, 3641, 3647, 3640, 3650, + 3649, 3652, 3648, 3643, 0, 3640, 0, 3650, 3643, 3655, + 3656, 3653, 3644, 3646, 3644, 3641, 3661, 3647, 3645, 3653, + 3646, 3648, 3649, 3659, 3647, 3657, 3650, 3649, 3652, 3664, + 3665, 3655, 3656, 3657, 3658, 3668, 3655, 3656, 3653, 3662, + 3663, 3669, 3658, 3661, 3666, 3670, 0, 3662, 3663, 3659, + 3659, 3672, 3657, 3675, 3678, 3664, 3664, 3665, 3679, 0, + 0, 3658, 3668, 0, 3666, 3670, 3662, 3663, 3669, 3676, + 0, 3666, 3670, 3672, 3677, 3675, 0, 3676, 3672, 0, + + 3675, 3678, 3677, 0, 0, 3679, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3676, 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, 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, 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; @@ -4142,7 +4182,7 @@ static void config_end_include(void) } #endif -#line 4143 "" +#line 4183 "" #define YY_NO_INPUT 1 #line 191 "util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -4151,9 +4191,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 4152 "" +#line 4192 "" -#line 4154 "" +#line 4194 "" #define INITIAL 0 #define quotedstring 1 @@ -4377,7 +4417,7 @@ YY_DECL { #line 211 "util/configlexer.lex" -#line 4378 "" +#line 4418 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -4410,13 +4450,13 @@ YY_DECL 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 >= 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] != 10421 ); + while ( yy_base[yy_current_state] != 10542 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5572,623 +5612,638 @@ 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_MAX_SENT_COUNT) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ 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 #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(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 301: YY_RULE_SETUP #line 524 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 302: YY_RULE_SETUP #line 525 "util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 303: YY_RULE_SETUP #line 526 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 304: YY_RULE_SETUP #line 527 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 305: YY_RULE_SETUP #line 528 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 306: YY_RULE_SETUP #line 529 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 307: YY_RULE_SETUP #line 530 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 308: YY_RULE_SETUP #line 531 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 309: YY_RULE_SETUP #line 532 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 310: YY_RULE_SETUP -#line 534 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 533 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 311: YY_RULE_SETUP -#line 536 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 534 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 312: YY_RULE_SETUP -#line 537 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 535 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 313: YY_RULE_SETUP -#line 538 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +#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_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 330: YY_RULE_SETUP #line 555 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 331: YY_RULE_SETUP #line 556 "util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 332: YY_RULE_SETUP #line 557 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 333: YY_RULE_SETUP #line 558 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 334: YY_RULE_SETUP #line 559 "util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 335: YY_RULE_SETUP #line 560 "util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 336: YY_RULE_SETUP #line 561 "util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 337: YY_RULE_SETUP #line 562 "util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 338: YY_RULE_SETUP #line 563 "util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 339: YY_RULE_SETUP #line 564 "util/configlexer.lex" -{ YDVAR(1, VAR_EDE ) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 340: YY_RULE_SETUP #line 565 "util/configlexer.lex" -{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 341: -/* rule 341 can match eol */ YY_RULE_SETUP #line 566 "util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 342: +YY_RULE_SETUP +#line 567 "util/configlexer.lex" +{ YDVAR(1, VAR_EDE ) } + YY_BREAK +case 343: +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 342: +case 345: YY_RULE_SETUP -#line 569 "util/configlexer.lex" +#line 572 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 570 "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 343: +case 346: YY_RULE_SETUP -#line 575 "util/configlexer.lex" +#line 578 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 344: -/* rule 344 can match eol */ +case 347: +/* rule 347 can match eol */ YY_RULE_SETUP -#line 576 "util/configlexer.lex" +#line 579 "util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 345: +case 348: YY_RULE_SETUP -#line 578 "util/configlexer.lex" +#line 581 "util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -6201,34 +6256,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 346: +case 349: YY_RULE_SETUP -#line 590 "util/configlexer.lex" +#line 593 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 591 "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 347: +case 350: YY_RULE_SETUP -#line 596 "util/configlexer.lex" +#line 599 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 348: -/* rule 348 can match eol */ +case 351: +/* rule 351 can match eol */ YY_RULE_SETUP -#line 597 "util/configlexer.lex" +#line 600 "util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 349: +case 352: YY_RULE_SETUP -#line 599 "util/configlexer.lex" +#line 602 "util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -6241,38 +6296,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 350: +case 353: YY_RULE_SETUP -#line 611 "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 613 "util/configlexer.lex" +#line 616 "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++;} - YY_BREAK -case 353: -YY_RULE_SETUP -#line 619 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } - 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++;} + 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); @@ -6280,27 +6335,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 625 "util/configlexer.lex" +#line 628 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 355: +case 358: YY_RULE_SETUP -#line 629 "util/configlexer.lex" +#line 632 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 356: -/* rule 356 can match eol */ +case 359: +/* rule 359 can match eol */ YY_RULE_SETUP -#line 630 "util/configlexer.lex" +#line 633 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 357: +case 360: YY_RULE_SETUP -#line 632 "util/configlexer.lex" +#line 635 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -6310,7 +6365,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 638 "util/configlexer.lex" +#line 641 "util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -6325,39 +6380,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 358: +case 361: YY_RULE_SETUP -#line 652 "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 655 "util/configlexer.lex" +#line 658 "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++; } - YY_BREAK -case 361: -YY_RULE_SETUP -#line 661 "util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } - 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++; } + 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); @@ -6366,29 +6421,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 668 "util/configlexer.lex" +#line 671 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 363: +case 366: YY_RULE_SETUP -#line 672 "util/configlexer.lex" +#line 675 "util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 364: -/* rule 364 can match eol */ +case 367: +/* rule 367 can match eol */ YY_RULE_SETUP -#line 673 "util/configlexer.lex" +#line 676 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 365: +case 368: YY_RULE_SETUP -#line 677 "util/configlexer.lex" +#line 680 "util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -6397,33 +6452,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 366: +case 369: YY_RULE_SETUP -#line 685 "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 367: +case 370: YY_RULE_SETUP -#line 689 "util/configlexer.lex" +#line 692 "util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 368: +case 371: YY_RULE_SETUP -#line 693 "util/configlexer.lex" +#line 696 "util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 369: +case 372: YY_RULE_SETUP -#line 697 "util/configlexer.lex" +#line 700 "util/configlexer.lex" ECHO; YY_BREAK -#line 6424 "" +#line 6479 "" case YY_END_OF_BUFFER: { @@ -6718,7 +6773,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 >= 3683 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -6746,11 +6801,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 >= 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 == 3645); + yy_is_jam = (yy_current_state == 3682); return yy_is_jam ? 0 : yy_current_state; } @@ -7389,6 +7444,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 697 "util/configlexer.lex" +#line 700 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 09e314b21156..4e4a96535870 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) } @@ -514,6 +515,8 @@ 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) } +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) } diff --git a/util/configparser.c b/util/configparser.c index 294d5752914f..2f481fd54c2a 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -328,496 +328,502 @@ 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_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_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_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; @@ -1139,19 +1145,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 713 +#define YYLAST 719 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 334 +#define YYNTOKENS 337 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 359 +#define YYNNTS 362 /* YYNRULES -- Number of rules. */ -#define YYNRULES 695 +#define YYNRULES 701 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1040 +#define YYNSTATES 1049 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 588 +#define YYMAXUTOK 591 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1223,7 +1229,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 + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336 }; #if YYDEBUG @@ -1248,58 +1255,59 @@ static const yytype_int16 yyrline[] = 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, + 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, 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, 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 @@ -1388,22 +1396,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_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", @@ -1441,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", @@ -1538,7 +1546,8 @@ 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_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", @@ -1633,11 +1642,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 + 585, 586, 587, 588, 589, 590, 591 }; #endif -#define YYPACT_NINF (-284) +#define YYPACT_NINF (-286) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1651,110 +1660,111 @@ static const yytype_int16 yytoknum[] = 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, + -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, 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, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -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, + 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, -284, -284, -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, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -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, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -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, -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, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -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, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -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 + 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. @@ -1762,10 +1772,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, 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, @@ -1789,165 +1799,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, 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, 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, 596, 598, 600, 599, 601, 602, 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 + 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[] = { - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -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, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, - -284, -284, -284, -284, -284, -284, -284, -284, -284 + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -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, 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, 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 @@ -1958,75 +1971,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, 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, 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, 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, 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, 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, 715, 218, - 716, 219, 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, - 717, 718, 544, 545, 719, 720, 508, 721, 509, 510, - 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, + 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, 589, 590, - 591, 592, 593, 594 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 595, 596, 597, 598, 599, 600 }; static const yytype_int16 yycheck[] = @@ -2034,12 +2047,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, 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, 275, 276, 277, 278, 279, 280, + 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, @@ -2047,47 +2060,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, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 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, 10, 232, - 10, 234, 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, - 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, 10, 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, 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, 10, 10, 233, 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, 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, 307, 10, 10, - 10, 311, 10, 10, 10, 10, 10, 317, 10, 10, + 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, @@ -2098,22 +2112,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, -1, -1, -1, -1, -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, 37, 37, - 37, 37, 37, 37 + -1, -1, -1, -1, -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. */ 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, 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, @@ -2130,13 +2143,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, - 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, 340, 362, 363, 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, @@ -2159,26 +2172,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, 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, 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, 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, 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, @@ -2212,44 +2226,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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 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, 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, @@ -2275,19 +2289,20 @@ 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, - 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 + 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, + 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, + 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[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2318,51 +2333,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, 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, 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, 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, - 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, 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, 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, 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, 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 }; @@ -2835,7 +2851,7 @@ yyparse (void) OUTYY(("\nP(force-toplevel)\n")); cfg_parser->started_toplevel = 0; } -#line 2839 "util/configparser.c" +#line 2855 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ @@ -2844,11 +2860,11 @@ yyparse (void) OUTYY(("\nP(server:)\n")); cfg_parser->started_toplevel = 1; } -#line 2848 "util/configparser.c" +#line 2864 "util/configparser.c" break; - case 253: /* 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")); @@ -2861,11 +2877,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 2865 "util/configparser.c" +#line 2881 "util/configparser.c" break; - case 264: /* 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")); @@ -2878,11 +2894,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 2882 "util/configparser.c" +#line 2898 "util/configparser.c" break; - case 274: /* 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")); @@ -2897,11 +2913,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 2901 "util/configparser.c" +#line 2917 "util/configparser.c" break; - case 284: /* 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")); @@ -2921,11 +2937,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 2925 "util/configparser.c" +#line 2941 "util/configparser.c" break; - case 297: /* 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; @@ -2942,11 +2958,11 @@ yyparse (void) } } -#line 2946 "util/configparser.c" +#line 2962 "util/configparser.c" break; - case 298: /* 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 && @@ -2961,21 +2977,21 @@ yyparse (void) cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2965 "util/configparser.c" +#line 2981 "util/configparser.c" break; - case 299: /* 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 2975 "util/configparser.c" +#line 2991 "util/configparser.c" break; - case 300: /* 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) @@ -2983,21 +2999,21 @@ yyparse (void) else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2987 "util/configparser.c" +#line 3003 "util/configparser.c" break; - case 301: /* 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 2997 "util/configparser.c" +#line 3013 "util/configparser.c" break; - case 302: /* 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) @@ -3005,11 +3021,11 @@ yyparse (void) else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3009 "util/configparser.c" +#line 3025 "util/configparser.c" break; - case 303: /* 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")); @@ -3027,11 +3043,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 3031 "util/configparser.c" +#line 3047 "util/configparser.c" break; - case 318: /* 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) @@ -3039,11 +3055,11 @@ yyparse (void) else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3043 "util/configparser.c" +#line 3059 "util/configparser.c" break; - case 319: /* 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) @@ -3051,11 +3067,11 @@ yyparse (void) else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3055 "util/configparser.c" +#line 3071 "util/configparser.c" break; - case 320: /* 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) @@ -3065,11 +3081,11 @@ yyparse (void) else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3069 "util/configparser.c" +#line 3085 "util/configparser.c" break; - case 321: /* 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) @@ -3077,11 +3093,11 @@ yyparse (void) else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3081 "util/configparser.c" +#line 3097 "util/configparser.c" break; - case 322: /* 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) @@ -3089,11 +3105,23 @@ yyparse (void) else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3093 "util/configparser.c" +#line 3109 "util/configparser.c" break; - case 323: /* server_shm_enable: VAR_SHM_ENABLE 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_inhibit_zero = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3121 "util/configparser.c" + break; + + 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) @@ -3101,11 +3129,11 @@ yyparse (void) else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3105 "util/configparser.c" +#line 3133 "util/configparser.c" break; - case 324: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 567 "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) @@ -3115,11 +3143,11 @@ yyparse (void) else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3119 "util/configparser.c" +#line 3147 "util/configparser.c" break; - case 325: /* server_port: VAR_PORT STRING_ARG */ -#line 578 "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) @@ -3127,11 +3155,11 @@ yyparse (void) else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3131 "util/configparser.c" +#line 3159 "util/configparser.c" break; - case 326: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 587 "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))); @@ -3142,11 +3170,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 3146 "util/configparser.c" +#line 3174 "util/configparser.c" break; - case 327: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 599 "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))); @@ -3158,11 +3186,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 3162 "util/configparser.c" +#line 3190 "util/configparser.c" break; - case 328: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 613 "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))); @@ -3176,11 +3204,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3180 "util/configparser.c" +#line 3208 "util/configparser.c" break; - case 329: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 628 "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))); @@ -3190,11 +3218,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3194 "util/configparser.c" +#line 3222 "util/configparser.c" break; - case 330: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 639 "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))); @@ -3210,11 +3238,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 331: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 656 "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))); @@ -3230,11 +3258,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" +#line 3262 "util/configparser.c" break; - case 332: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 673 "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))); @@ -3250,11 +3278,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3254 "util/configparser.c" +#line 3282 "util/configparser.c" break; - case 333: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 690 "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))); @@ -3270,11 +3298,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3302 "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 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))); @@ -3288,11 +3316,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3292 "util/configparser.c" +#line 3320 "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 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))); @@ -3306,11 +3334,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3338 "util/configparser.c" break; - case 336: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 737 "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) @@ -3322,11 +3350,11 @@ yyparse (void) else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3326 "util/configparser.c" +#line 3354 "util/configparser.c" break; - case 337: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 750 "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) @@ -3340,11 +3368,11 @@ yyparse (void) cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3344 "util/configparser.c" +#line 3372 "util/configparser.c" break; - case 338: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 765 "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) @@ -3352,11 +3380,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3356 "util/configparser.c" +#line 3384 "util/configparser.c" break; - case 339: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 774 "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, @@ -3364,11 +3392,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3368 "util/configparser.c" +#line 3396 "util/configparser.c" break; - case 340: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 783 "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, @@ -3376,11 +3404,11 @@ yyparse (void) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3380 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 341: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 792 "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) @@ -3388,11 +3416,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3392 "util/configparser.c" +#line 3420 "util/configparser.c" break; - case 342: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 801 "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) @@ -3400,11 +3428,11 @@ yyparse (void) else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3404 "util/configparser.c" +#line 3432 "util/configparser.c" break; - case 343: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 810 "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) @@ -3412,21 +3440,21 @@ yyparse (void) else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3416 "util/configparser.c" +#line 3444 "util/configparser.c" break; - case 344: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ -#line 819 "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 3426 "util/configparser.c" +#line 3454 "util/configparser.c" break; - case 345: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 826 "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) @@ -3434,11 +3462,11 @@ yyparse (void) else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3466 "util/configparser.c" break; - case 346: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 835 "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) @@ -3446,11 +3474,11 @@ yyparse (void) else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3450 "util/configparser.c" +#line 3478 "util/configparser.c" break; - case 347: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 844 "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) @@ -3458,11 +3486,11 @@ yyparse (void) else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3462 "util/configparser.c" +#line 3490 "util/configparser.c" break; - case 348: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 853 "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) @@ -3470,11 +3498,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3474 "util/configparser.c" +#line 3502 "util/configparser.c" break; - case 349: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 862 "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) @@ -3482,11 +3510,11 @@ yyparse (void) else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3486 "util/configparser.c" +#line 3514 "util/configparser.c" break; - case 350: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 871 "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) @@ -3494,11 +3522,11 @@ yyparse (void) else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3498 "util/configparser.c" +#line 3526 "util/configparser.c" break; - case 351: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 880 "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) @@ -3506,11 +3534,11 @@ yyparse (void) else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3510 "util/configparser.c" +#line 3538 "util/configparser.c" break; - case 352: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 889 "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) @@ -3518,11 +3546,11 @@ yyparse (void) else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3522 "util/configparser.c" +#line 3550 "util/configparser.c" break; - case 353: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 898 "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) @@ -3534,11 +3562,11 @@ yyparse (void) else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3538 "util/configparser.c" +#line 3566 "util/configparser.c" break; - case 354: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 911 "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) @@ -3548,11 +3576,11 @@ yyparse (void) else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3552 "util/configparser.c" +#line 3580 "util/configparser.c" break; - case 355: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 922 "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) @@ -3562,11 +3590,11 @@ yyparse (void) else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3566 "util/configparser.c" +#line 3594 "util/configparser.c" break; - case 356: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 933 "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) @@ -3576,11 +3604,11 @@ yyparse (void) else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3580 "util/configparser.c" +#line 3608 "util/configparser.c" break; - case 357: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 944 "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) @@ -3588,11 +3616,11 @@ yyparse (void) else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3592 "util/configparser.c" +#line 3620 "util/configparser.c" break; - case 358: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 953 "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) @@ -3604,11 +3632,11 @@ yyparse (void) else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3608 "util/configparser.c" +#line 3636 "util/configparser.c" break; - case 359: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 966 "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) @@ -3616,11 +3644,11 @@ yyparse (void) else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3620 "util/configparser.c" +#line 3648 "util/configparser.c" break; - case 360: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 975 "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) @@ -3628,11 +3656,11 @@ yyparse (void) else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3632 "util/configparser.c" +#line 3660 "util/configparser.c" break; - case 361: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 984 "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) @@ -3640,31 +3668,31 @@ yyparse (void) else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3644 "util/configparser.c" +#line 3672 "util/configparser.c" break; - case 362: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 993 "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 3654 "util/configparser.c" +#line 3682 "util/configparser.c" break; - case 363: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 1000 "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 3664 "util/configparser.c" +#line 3692 "util/configparser.c" break; - case 364: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 1007 "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) @@ -3672,21 +3700,21 @@ yyparse (void) else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3676 "util/configparser.c" +#line 3704 "util/configparser.c" break; - case 365: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 1016 "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 3686 "util/configparser.c" +#line 3714 "util/configparser.c" break; - case 366: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1023 "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) @@ -3694,53 +3722,53 @@ yyparse (void) else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3698 "util/configparser.c" +#line 3726 "util/configparser.c" break; - case 367: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1032 "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 3709 "util/configparser.c" +#line 3737 "util/configparser.c" break; - case 368: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1040 "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 3719 "util/configparser.c" +#line 3747 "util/configparser.c" break; - case 369: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1047 "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 3729 "util/configparser.c" +#line 3757 "util/configparser.c" break; - case 370: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1054 "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 3740 "util/configparser.c" +#line 3768 "util/configparser.c" break; - case 371: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1062 "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) @@ -3748,11 +3776,11 @@ yyparse (void) else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3752 "util/configparser.c" +#line 3780 "util/configparser.c" break; - case 372: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1071 "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) @@ -3760,11 +3788,11 @@ yyparse (void) else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3764 "util/configparser.c" +#line 3792 "util/configparser.c" break; - case 373: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1079 "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); @@ -3780,11 +3808,11 @@ yyparse (void) cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3784 "util/configparser.c" +#line 3812 "util/configparser.c" break; - case 374: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1095 "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) @@ -3792,11 +3820,11 @@ yyparse (void) else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3796 "util/configparser.c" +#line 3824 "util/configparser.c" break; - case 375: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1103 "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), @@ -3804,11 +3832,11 @@ yyparse (void) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3808 "util/configparser.c" +#line 3836 "util/configparser.c" break; - case 376: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1111 "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), @@ -3816,11 +3844,11 @@ yyparse (void) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3820 "util/configparser.c" +#line 3848 "util/configparser.c" break; - case 377: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1119 "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) @@ -3828,11 +3856,11 @@ yyparse (void) else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3832 "util/configparser.c" +#line 3860 "util/configparser.c" break; - case 378: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1127 "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) @@ -3840,11 +3868,11 @@ yyparse (void) else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3844 "util/configparser.c" +#line 3872 "util/configparser.c" break; - case 379: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1135 "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) @@ -3852,11 +3880,11 @@ yyparse (void) else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3856 "util/configparser.c" +#line 3884 "util/configparser.c" break; - case 380: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1144 "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) @@ -3864,11 +3892,11 @@ yyparse (void) else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3868 "util/configparser.c" +#line 3896 "util/configparser.c" break; - case 381: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1153 "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) @@ -3881,11 +3909,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 3885 "util/configparser.c" +#line 3913 "util/configparser.c" break; - case 382: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1167 "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) @@ -3893,11 +3921,11 @@ yyparse (void) else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3897 "util/configparser.c" +#line 3925 "util/configparser.c" break; - case 383: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1176 "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) @@ -3905,11 +3933,11 @@ yyparse (void) else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3909 "util/configparser.c" +#line 3937 "util/configparser.c" break; - case 384: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1185 "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) @@ -3917,11 +3945,11 @@ yyparse (void) else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3921 "util/configparser.c" +#line 3949 "util/configparser.c" break; - case 385: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1194 "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) @@ -3929,11 +3957,11 @@ yyparse (void) else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3933 "util/configparser.c" +#line 3961 "util/configparser.c" break; - case 386: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1203 "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) @@ -3941,11 +3969,11 @@ yyparse (void) else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3945 "util/configparser.c" +#line 3973 "util/configparser.c" break; - case 387: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1212 "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) @@ -3953,31 +3981,31 @@ yyparse (void) else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3985 "util/configparser.c" break; - case 388: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1221 "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 3967 "util/configparser.c" +#line 3995 "util/configparser.c" break; - case 389: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1228 "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 3977 "util/configparser.c" +#line 4005 "util/configparser.c" break; - case 390: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1235 "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); @@ -4002,105 +4030,105 @@ yyparse (void) } } } -#line 4006 "util/configparser.c" +#line 4034 "util/configparser.c" break; - case 391: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1261 "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 4017 "util/configparser.c" +#line 4045 "util/configparser.c" break; - case 392: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1269 "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 4027 "util/configparser.c" +#line 4055 "util/configparser.c" break; - case 393: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1276 "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 4037 "util/configparser.c" +#line 4065 "util/configparser.c" break; - case 394: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1283 "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 4047 "util/configparser.c" +#line 4075 "util/configparser.c" break; - case 395: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1290 "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 4057 "util/configparser.c" +#line 4085 "util/configparser.c" break; - case 396: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1297 "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 4068 "util/configparser.c" +#line 4096 "util/configparser.c" break; - case 397: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1305 "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 4079 "util/configparser.c" +#line 4107 "util/configparser.c" break; - case 398: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1313 "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 4090 "util/configparser.c" +#line 4118 "util/configparser.c" break; - case 399: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1321 "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 4100 "util/configparser.c" +#line 4128 "util/configparser.c" break; - case 400: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1328 "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) @@ -4110,11 +4138,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4114 "util/configparser.c" +#line 4142 "util/configparser.c" break; - case 401: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1339 "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) @@ -4124,21 +4152,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4128 "util/configparser.c" +#line 4156 "util/configparser.c" break; - case 402: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1350 "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 4138 "util/configparser.c" +#line 4166 "util/configparser.c" break; - case 403: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1357 "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) @@ -4146,11 +4174,11 @@ yyparse (void) else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4150 "util/configparser.c" +#line 4178 "util/configparser.c" break; - case 404: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1366 "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) @@ -4158,11 +4186,11 @@ yyparse (void) else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4162 "util/configparser.c" +#line 4190 "util/configparser.c" break; - case 405: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1375 "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) @@ -4170,11 +4198,11 @@ yyparse (void) else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4174 "util/configparser.c" +#line 4202 "util/configparser.c" break; - case 406: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1384 "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) @@ -4182,41 +4210,41 @@ yyparse (void) else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4186 "util/configparser.c" +#line 4214 "util/configparser.c" break; - case 407: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1393 "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 4196 "util/configparser.c" +#line 4224 "util/configparser.c" break; - case 408: /* server_version: VAR_VERSION STRING_ARG */ -#line 1400 "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 4206 "util/configparser.c" +#line 4234 "util/configparser.c" break; - case 409: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1407 "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 4216 "util/configparser.c" +#line 4244 "util/configparser.c" break; - case 410: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1414 "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); @@ -4231,33 +4259,33 @@ yyparse (void) yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4235 "util/configparser.c" +#line 4263 "util/configparser.c" break; - case 411: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1430 "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 4246 "util/configparser.c" +#line 4274 "util/configparser.c" break; - case 412: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1438 "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 4257 "util/configparser.c" +#line 4285 "util/configparser.c" break; - case 413: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1446 "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) @@ -4266,11 +4294,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4270 "util/configparser.c" +#line 4298 "util/configparser.c" break; - case 414: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1456 "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) @@ -4279,11 +4307,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4283 "util/configparser.c" +#line 4311 "util/configparser.c" break; - case 415: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1466 "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) @@ -4292,11 +4320,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4296 "util/configparser.c" +#line 4324 "util/configparser.c" break; - case 416: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1476 "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) @@ -4309,22 +4337,22 @@ yyparse (void) cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4341 "util/configparser.c" break; - case 417: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1490 "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 4324 "util/configparser.c" +#line 4352 "util/configparser.c" break; - case 418: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1498 "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) @@ -4336,11 +4364,11 @@ yyparse (void) else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4368 "util/configparser.c" break; - case 419: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1511 "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) @@ -4350,22 +4378,22 @@ yyparse (void) else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4354 "util/configparser.c" +#line 4382 "util/configparser.c" break; - case 420: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1522 "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 4365 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 421: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1530 "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) { @@ -4377,11 +4405,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4381 "util/configparser.c" +#line 4409 "util/configparser.c" break; - case 422: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1543 "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) @@ -4389,11 +4417,11 @@ yyparse (void) else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4393 "util/configparser.c" +#line 4421 "util/configparser.c" break; - case 423: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1552 "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) @@ -4401,11 +4429,11 @@ yyparse (void) else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4405 "util/configparser.c" +#line 4433 "util/configparser.c" break; - case 424: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1561 "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) @@ -4413,11 +4441,11 @@ yyparse (void) else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4417 "util/configparser.c" +#line 4445 "util/configparser.c" break; - case 425: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1570 "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) @@ -4425,11 +4453,11 @@ yyparse (void) else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" +#line 4457 "util/configparser.c" break; - case 426: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1579 "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) @@ -4438,11 +4466,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4442 "util/configparser.c" +#line 4470 "util/configparser.c" break; - case 427: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1589 "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) @@ -4451,22 +4479,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4455 "util/configparser.c" +#line 4483 "util/configparser.c" break; - case 428: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1599 "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 4466 "util/configparser.c" +#line 4494 "util/configparser.c" break; - case 429: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1607 "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) { @@ -4478,11 +4506,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 4510 "util/configparser.c" break; - case 430: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1620 "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) @@ -4490,22 +4518,22 @@ yyparse (void) else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4494 "util/configparser.c" +#line 4522 "util/configparser.c" break; - case 431: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1629 "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 4505 "util/configparser.c" +#line 4533 "util/configparser.c" break; - case 432: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1637 "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) @@ -4513,22 +4541,22 @@ yyparse (void) else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4517 "util/configparser.c" +#line 4545 "util/configparser.c" break; - case 433: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1646 "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 4528 "util/configparser.c" +#line 4556 "util/configparser.c" break; - case 434: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1654 "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) { @@ -4540,11 +4568,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4544 "util/configparser.c" +#line 4572 "util/configparser.c" break; - case 435: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1667 "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) @@ -4552,11 +4580,11 @@ yyparse (void) else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4556 "util/configparser.c" +#line 4584 "util/configparser.c" break; - case 436: /* server_infra_cache_max_rtt: VAR_INFRA_CACHE_MAX_RTT STRING_ARG */ -#line 1676 "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) @@ -4564,11 +4592,11 @@ yyparse (void) else cfg_parser->cfg->infra_cache_max_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4568 "util/configparser.c" +#line 4596 "util/configparser.c" break; - case 437: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1685 "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) @@ -4577,21 +4605,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4581 "util/configparser.c" +#line 4609 "util/configparser.c" break; - case 438: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1695 "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 4591 "util/configparser.c" +#line 4619 "util/configparser.c" break; - case 439: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1702 "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) @@ -4600,11 +4628,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4604 "util/configparser.c" +#line 4632 "util/configparser.c" break; - case 440: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1712 "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) @@ -4613,11 +4641,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4617 "util/configparser.c" +#line 4645 "util/configparser.c" break; - case 441: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1722 "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) @@ -4626,11 +4654,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4658 "util/configparser.c" break; - case 442: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1732 "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) @@ -4639,11 +4667,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4643 "util/configparser.c" +#line 4671 "util/configparser.c" break; - case 443: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1742 "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) @@ -4652,11 +4680,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4656 "util/configparser.c" +#line 4684 "util/configparser.c" break; - case 444: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1752 "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) @@ -4665,11 +4693,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4669 "util/configparser.c" +#line 4697 "util/configparser.c" break; - case 445: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1762 "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) @@ -4678,11 +4706,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4682 "util/configparser.c" +#line 4710 "util/configparser.c" break; - case 446: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1772 "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) @@ -4691,41 +4719,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4695 "util/configparser.c" +#line 4723 "util/configparser.c" break; - case 447: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1782 "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 4705 "util/configparser.c" +#line 4733 "util/configparser.c" break; - case 448: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1789 "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 4715 "util/configparser.c" +#line 4743 "util/configparser.c" break; - case 449: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1796 "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 4725 "util/configparser.c" +#line 4753 "util/configparser.c" break; - case 450: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1803 "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) @@ -4733,11 +4761,11 @@ yyparse (void) else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4765 "util/configparser.c" break; - case 451: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1812 "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) @@ -4745,11 +4773,11 @@ yyparse (void) else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4749 "util/configparser.c" +#line 4777 "util/configparser.c" break; - case 452: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1821 "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) @@ -4757,11 +4785,11 @@ yyparse (void) else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4789 "util/configparser.c" break; - case 453: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1830 "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) @@ -4769,21 +4797,21 @@ yyparse (void) else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4773 "util/configparser.c" +#line 4801 "util/configparser.c" break; - case 454: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1839 "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 4783 "util/configparser.c" +#line 4811 "util/configparser.c" break; - case 455: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1846 "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) @@ -4792,22 +4820,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4824 "util/configparser.c" break; - case 456: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1856 "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 4807 "util/configparser.c" +#line 4835 "util/configparser.c" break; - case 457: /* server_interface_action: VAR_INTERFACE_ACTION STRING_ARG STRING_ARG */ -#line 1864 "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)); @@ -4815,21 +4843,21 @@ yyparse (void) &cfg_parser->cfg->interface_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } -#line 4819 "util/configparser.c" +#line 4847 "util/configparser.c" break; - case 458: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1873 "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 4829 "util/configparser.c" +#line 4857 "util/configparser.c" break; - case 459: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1880 "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) { @@ -4846,11 +4874,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4850 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 460: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1898 "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) { @@ -4862,11 +4890,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4866 "util/configparser.c" +#line 4894 "util/configparser.c" break; - case 461: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1911 "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) { @@ -4878,11 +4906,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4882 "util/configparser.c" +#line 4910 "util/configparser.c" break; - case 462: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1924 "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) { @@ -4894,11 +4922,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 4898 "util/configparser.c" +#line 4926 "util/configparser.c" break; - case 463: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1937 "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) @@ -4906,11 +4934,11 @@ yyparse (void) else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4910 "util/configparser.c" +#line 4938 "util/configparser.c" break; - case 464: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1946 "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) @@ -4918,11 +4946,11 @@ yyparse (void) else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4922 "util/configparser.c" +#line 4950 "util/configparser.c" break; - case 465: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1955 "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) @@ -4930,11 +4958,11 @@ yyparse (void) else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4962 "util/configparser.c" break; - case 466: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1964 "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) @@ -4942,11 +4970,11 @@ yyparse (void) else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4974 "util/configparser.c" break; - case 467: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1973 "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) @@ -4955,11 +4983,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4959 "util/configparser.c" +#line 4987 "util/configparser.c" break; - case 468: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1983 "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) @@ -4968,11 +4996,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4972 "util/configparser.c" +#line 5000 "util/configparser.c" break; - case 469: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1993 "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) @@ -4982,11 +5010,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4986 "util/configparser.c" +#line 5014 "util/configparser.c" break; - case 470: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 2004 "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) @@ -4994,11 +5022,11 @@ yyparse (void) else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 5026 "util/configparser.c" break; - case 471: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 2013 "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) @@ -5006,11 +5034,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5010 "util/configparser.c" +#line 5038 "util/configparser.c" break; - case 472: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 2022 "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) @@ -5018,11 +5046,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5022 "util/configparser.c" +#line 5050 "util/configparser.c" break; - case 473: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2031 "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) @@ -5030,11 +5058,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5034 "util/configparser.c" +#line 5062 "util/configparser.c" break; - case 474: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2040 "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) @@ -5042,11 +5070,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5046 "util/configparser.c" +#line 5074 "util/configparser.c" break; - case 475: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2049 "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) @@ -5054,11 +5082,11 @@ yyparse (void) else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5058 "util/configparser.c" +#line 5086 "util/configparser.c" break; - case 476: /* server_ede_serve_expired: VAR_EDE_SERVE_EXPIRED STRING_ARG */ -#line 2058 "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) @@ -5066,11 +5094,11 @@ yyparse (void) else cfg_parser->cfg->ede_serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5070 "util/configparser.c" +#line 5098 "util/configparser.c" break; - case 477: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2067 "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) @@ -5078,11 +5106,11 @@ yyparse (void) else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5082 "util/configparser.c" +#line 5110 "util/configparser.c" break; - case 478: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2076 "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) @@ -5094,11 +5122,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5098 "util/configparser.c" +#line 5126 "util/configparser.c" break; - case 479: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2089 "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) @@ -5110,11 +5138,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5114 "util/configparser.c" +#line 5142 "util/configparser.c" break; - case 480: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2102 "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) @@ -5122,21 +5150,21 @@ yyparse (void) else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5126 "util/configparser.c" +#line 5154 "util/configparser.c" break; - case 481: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2111 "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 5136 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 482: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2118 "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) @@ -5144,11 +5172,11 @@ yyparse (void) else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5148 "util/configparser.c" +#line 5176 "util/configparser.c" break; - case 483: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2127 "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) @@ -5156,11 +5184,11 @@ yyparse (void) else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5160 "util/configparser.c" +#line 5188 "util/configparser.c" break; - case 484: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2136 "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) @@ -5168,11 +5196,11 @@ yyparse (void) else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5172 "util/configparser.c" +#line 5200 "util/configparser.c" break; - case 485: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2145 "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) @@ -5180,11 +5208,11 @@ yyparse (void) else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5184 "util/configparser.c" +#line 5212 "util/configparser.c" break; - case 486: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2154 "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) @@ -5193,22 +5221,22 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5197 "util/configparser.c" +#line 5225 "util/configparser.c" break; - case 487: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2163 "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 5208 "util/configparser.c" +#line 5236 "util/configparser.c" break; - case 488: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2171 "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) { @@ -5220,22 +5248,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5224 "util/configparser.c" +#line 5252 "util/configparser.c" break; - case 489: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2184 "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 5235 "util/configparser.c" +#line 5263 "util/configparser.c" break; - case 490: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2192 "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 && @@ -5289,21 +5317,21 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 5293 "util/configparser.c" +#line 5321 "util/configparser.c" break; - case 491: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2247 "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 5303 "util/configparser.c" +#line 5331 "util/configparser.c" break; - case 492: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2254 "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))); @@ -5317,11 +5345,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 5321 "util/configparser.c" +#line 5349 "util/configparser.c" break; - case 493: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2269 "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) @@ -5330,11 +5358,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5334 "util/configparser.c" +#line 5362 "util/configparser.c" break; - case 494: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2279 "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) @@ -5343,41 +5371,41 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5347 "util/configparser.c" +#line 5375 "util/configparser.c" break; - case 495: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2289 "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 5357 "util/configparser.c" +#line 5385 "util/configparser.c" break; - case 496: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2296 "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 5367 "util/configparser.c" +#line 5395 "util/configparser.c" break; - case 497: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2303 "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 5377 "util/configparser.c" +#line 5405 "util/configparser.c" break; - case 498: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2310 "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) @@ -5385,22 +5413,22 @@ yyparse (void) else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5389 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 499: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2319 "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 5400 "util/configparser.c" +#line 5428 "util/configparser.c" break; - case 500: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2327 "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))); @@ -5413,11 +5441,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5417 "util/configparser.c" +#line 5445 "util/configparser.c" break; - case 501: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2341 "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), @@ -5437,11 +5465,11 @@ yyparse (void) } } } -#line 5441 "util/configparser.c" +#line 5469 "util/configparser.c" break; - case 502: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2362 "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), @@ -5461,11 +5489,11 @@ yyparse (void) } } } -#line 5465 "util/configparser.c" +#line 5493 "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 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, @@ -5476,11 +5504,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 5480 "util/configparser.c" +#line 5508 "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 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, @@ -5491,11 +5519,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 5495 "util/configparser.c" +#line 5523 "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 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, @@ -5506,11 +5534,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 5510 "util/configparser.c" +#line 5538 "util/configparser.c" break; - case 506: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2419 "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, @@ -5518,11 +5546,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 5522 "util/configparser.c" +#line 5550 "util/configparser.c" break; - case 507: /* server_interface_tag: VAR_INTERFACE_TAG STRING_ARG STRING_ARG */ -#line 2428 "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), @@ -5542,11 +5570,11 @@ yyparse (void) } } } -#line 5546 "util/configparser.c" +#line 5574 "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 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, @@ -5557,11 +5585,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 5561 "util/configparser.c" +#line 5589 "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 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, @@ -5572,11 +5600,11 @@ yyparse (void) free((yyvsp[0].str)); } } -#line 5576 "util/configparser.c" +#line 5604 "util/configparser.c" break; - case 510: /* server_interface_view: VAR_INTERFACE_VIEW STRING_ARG STRING_ARG */ -#line 2473 "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, @@ -5584,11 +5612,11 @@ yyparse (void) yyerror("out of memory"); } } -#line 5588 "util/configparser.c" +#line 5616 "util/configparser.c" break; - case 511: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2482 "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), @@ -5608,11 +5636,11 @@ yyparse (void) } } } -#line 5612 "util/configparser.c" +#line 5640 "util/configparser.c" break; - case 512: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2503 "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) @@ -5620,11 +5648,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5652 "util/configparser.c" break; - case 513: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2512 "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) @@ -5632,33 +5660,33 @@ yyparse (void) else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5636 "util/configparser.c" +#line 5664 "util/configparser.c" break; - case 514: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2521 "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 5647 "util/configparser.c" +#line 5675 "util/configparser.c" break; - case 515: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2529 "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 5658 "util/configparser.c" +#line 5686 "util/configparser.c" break; - case 516: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2537 "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) { @@ -5670,11 +5698,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5674 "util/configparser.c" +#line 5702 "util/configparser.c" break; - case 517: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2550 "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) { @@ -5686,11 +5714,11 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 5690 "util/configparser.c" +#line 5718 "util/configparser.c" break; - case 518: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2563 "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) { @@ -5704,11 +5732,11 @@ yyparse (void) "ratelimit-for-domain"); } } -#line 5708 "util/configparser.c" +#line 5736 "util/configparser.c" break; - case 519: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2578 "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) { @@ -5722,11 +5750,11 @@ yyparse (void) "ratelimit-below-domain"); } } -#line 5726 "util/configparser.c" +#line 5754 "util/configparser.c" break; - case 520: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2593 "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) @@ -5734,11 +5762,11 @@ yyparse (void) else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5738 "util/configparser.c" +#line 5766 "util/configparser.c" break; - case 521: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2602 "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) @@ -5746,11 +5774,11 @@ yyparse (void) else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5750 "util/configparser.c" +#line 5778 "util/configparser.c" break; - case 522: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2611 "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) @@ -5759,11 +5787,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5763 "util/configparser.c" +#line 5791 "util/configparser.c" break; - case 523: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2621 "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) @@ -5772,11 +5800,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5776 "util/configparser.c" +#line 5804 "util/configparser.c" break; - case 524: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2631 "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) @@ -5784,20 +5812,44 @@ yyparse (void) else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5788 "util/configparser.c" +#line 5816 "util/configparser.c" break; - case 525: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2640 "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) + yyerror("number expected"); + else cfg_parser->cfg->max_sent_count = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 5828 "util/configparser.c" + break; + + 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 5840 "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 5797 "util/configparser.c" +#line 5849 "util/configparser.c" break; - case 526: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2646 "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) @@ -5805,11 +5857,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5861 "util/configparser.c" break; - case 527: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2655 "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) @@ -5817,11 +5869,11 @@ yyparse (void) else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5821 "util/configparser.c" +#line 5873 "util/configparser.c" break; - case 528: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2664 "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) @@ -5830,11 +5882,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5834 "util/configparser.c" +#line 5886 "util/configparser.c" break; - case 529: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2674 "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) @@ -5843,11 +5895,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5847 "util/configparser.c" +#line 5899 "util/configparser.c" break; - case 530: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2684 "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) @@ -5856,11 +5908,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5860 "util/configparser.c" +#line 5912 "util/configparser.c" break; - case 531: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2694 "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) @@ -5868,11 +5920,11 @@ yyparse (void) else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" +#line 5924 "util/configparser.c" break; - case 532: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2703 "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) @@ -5881,11 +5933,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" +#line 5937 "util/configparser.c" break; - case 533: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2713 "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) @@ -5893,11 +5945,11 @@ yyparse (void) else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5897 "util/configparser.c" +#line 5949 "util/configparser.c" break; - case 534: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2722 "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))); @@ -5909,11 +5961,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5913 "util/configparser.c" +#line 5965 "util/configparser.c" break; - case 535: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2735 "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))); @@ -5925,11 +5977,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 5929 "util/configparser.c" +#line 5981 "util/configparser.c" break; - case 536: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2748 "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))); @@ -5940,11 +5992,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5944 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 537: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2760 "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))); @@ -5957,11 +6009,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5961 "util/configparser.c" +#line 6013 "util/configparser.c" break; - case 538: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2774 "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))); @@ -5972,11 +6024,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5976 "util/configparser.c" +#line 6028 "util/configparser.c" break; - case 539: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2786 "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))); @@ -5989,11 +6041,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 5993 "util/configparser.c" +#line 6045 "util/configparser.c" break; - case 540: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2800 "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( @@ -6001,11 +6053,11 @@ yyparse (void) fatal_exit("out of memory adding " "edns-client-string"); } -#line 6005 "util/configparser.c" +#line 6057 "util/configparser.c" break; - case 541: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2809 "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) @@ -6015,11 +6067,11 @@ yyparse (void) else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6019 "util/configparser.c" +#line 6071 "util/configparser.c" break; - case 542: /* server_ede: VAR_EDE STRING_ARG */ -#line 2820 "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) @@ -6027,21 +6079,21 @@ yyparse (void) else cfg_parser->cfg->ede = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6083 "util/configparser.c" break; - case 543: /* server_proxy_protocol_port: VAR_PROXY_PROTOCOL_PORT STRING_ARG */ -#line 2829 "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 6041 "util/configparser.c" +#line 6093 "util/configparser.c" break; - case 544: /* stub_name: VAR_NAME STRING_ARG */ -#line 2836 "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) @@ -6050,31 +6102,31 @@ yyparse (void) free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6054 "util/configparser.c" +#line 6106 "util/configparser.c" break; - case 545: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2846 "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 6064 "util/configparser.c" +#line 6116 "util/configparser.c" break; - case 546: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2853 "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 6074 "util/configparser.c" +#line 6126 "util/configparser.c" break; - case 547: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2860 "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) @@ -6082,11 +6134,11 @@ yyparse (void) else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6086 "util/configparser.c" +#line 6138 "util/configparser.c" break; - case 548: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2869 "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) @@ -6094,11 +6146,11 @@ yyparse (void) else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6098 "util/configparser.c" +#line 6150 "util/configparser.c" break; - case 549: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2878 "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) @@ -6107,11 +6159,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6111 "util/configparser.c" +#line 6163 "util/configparser.c" break; - case 550: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2888 "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) @@ -6120,11 +6172,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6124 "util/configparser.c" +#line 6176 "util/configparser.c" break; - case 551: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2898 "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) @@ -6133,11 +6185,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 6189 "util/configparser.c" break; - case 552: /* forward_name: VAR_NAME STRING_ARG */ -#line 2908 "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) @@ -6146,31 +6198,31 @@ yyparse (void) free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6150 "util/configparser.c" +#line 6202 "util/configparser.c" break; - case 553: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2918 "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 6160 "util/configparser.c" +#line 6212 "util/configparser.c" break; - case 554: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2925 "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 6170 "util/configparser.c" +#line 6222 "util/configparser.c" break; - case 555: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2932 "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) @@ -6178,11 +6230,11 @@ yyparse (void) else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6182 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 556: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2941 "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) @@ -6190,11 +6242,11 @@ yyparse (void) else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6194 "util/configparser.c" +#line 6246 "util/configparser.c" break; - case 557: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2950 "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) @@ -6203,11 +6255,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6207 "util/configparser.c" +#line 6259 "util/configparser.c" break; - case 558: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2960 "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) @@ -6216,11 +6268,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6220 "util/configparser.c" +#line 6272 "util/configparser.c" break; - case 559: /* auth_name: VAR_NAME STRING_ARG */ -#line 2970 "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) @@ -6229,52 +6281,52 @@ yyparse (void) free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6233 "util/configparser.c" +#line 6285 "util/configparser.c" break; - case 560: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2980 "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 6243 "util/configparser.c" +#line 6295 "util/configparser.c" break; - case 561: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2987 "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 6253 "util/configparser.c" +#line 6305 "util/configparser.c" break; - case 562: /* auth_url: VAR_URL STRING_ARG */ -#line 2994 "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 6263 "util/configparser.c" +#line 6315 "util/configparser.c" break; - case 563: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 3001 "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 6274 "util/configparser.c" +#line 6326 "util/configparser.c" break; - case 564: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 3009 "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) @@ -6283,11 +6335,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6287 "util/configparser.c" +#line 6339 "util/configparser.c" break; - case 565: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 3019 "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) @@ -6296,11 +6348,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6300 "util/configparser.c" +#line 6352 "util/configparser.c" break; - case 566: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 3029 "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) @@ -6309,11 +6361,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6313 "util/configparser.c" +#line 6365 "util/configparser.c" break; - case 567: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 3039 "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) @@ -6322,11 +6374,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6326 "util/configparser.c" +#line 6378 "util/configparser.c" break; - case 568: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 3049 "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) @@ -6335,11 +6387,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6339 "util/configparser.c" +#line 6391 "util/configparser.c" break; - case 569: /* view_name: VAR_NAME STRING_ARG */ -#line 3059 "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) @@ -6348,11 +6400,11 @@ yyparse (void) free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6352 "util/configparser.c" +#line 6404 "util/configparser.c" break; - case 570: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 3069 "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 && @@ -6407,11 +6459,11 @@ yyparse (void) fatal_exit("out of memory adding local-zone"); } } -#line 6411 "util/configparser.c" +#line 6463 "util/configparser.c" break; - case 571: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3125 "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)); @@ -6420,33 +6472,33 @@ yyparse (void) fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6424 "util/configparser.c" +#line 6476 "util/configparser.c" break; - case 572: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3135 "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 6435 "util/configparser.c" +#line 6487 "util/configparser.c" break; - case 573: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3143 "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 6446 "util/configparser.c" +#line 6498 "util/configparser.c" break; - case 574: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3151 "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))); @@ -6460,11 +6512,11 @@ yyparse (void) yyerror("local-data-ptr could not be reversed"); } } -#line 6464 "util/configparser.c" +#line 6516 "util/configparser.c" break; - case 575: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3166 "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) @@ -6472,20 +6524,20 @@ yyparse (void) else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6476 "util/configparser.c" +#line 6528 "util/configparser.c" break; - case 576: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3175 "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 6485 "util/configparser.c" +#line 6537 "util/configparser.c" break; - case 587: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3187 "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) @@ -6494,11 +6546,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6498 "util/configparser.c" +#line 6550 "util/configparser.c" break; - case 588: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3197 "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) @@ -6506,80 +6558,80 @@ yyparse (void) else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6510 "util/configparser.c" +#line 6562 "util/configparser.c" break; - case 589: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3206 "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 6520 "util/configparser.c" +#line 6572 "util/configparser.c" break; - case 590: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3213 "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 6530 "util/configparser.c" +#line 6582 "util/configparser.c" break; - case 591: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3220 "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 6540 "util/configparser.c" +#line 6592 "util/configparser.c" break; - case 592: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3227 "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 6550 "util/configparser.c" +#line 6602 "util/configparser.c" break; - case 593: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3234 "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 6560 "util/configparser.c" +#line 6612 "util/configparser.c" break; - case 594: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3241 "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 6570 "util/configparser.c" +#line 6622 "util/configparser.c" break; - case 595: /* dtstart: VAR_DNSTAP */ -#line 3248 "util/configparser.y" + case 601: /* dtstart: VAR_DNSTAP */ +#line 3276 "util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); cfg_parser->started_toplevel = 1; } -#line 6579 "util/configparser.c" +#line 6631 "util/configparser.c" break; - case 617: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3269 "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) @@ -6587,11 +6639,11 @@ yyparse (void) else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6591 "util/configparser.c" +#line 6643 "util/configparser.c" break; - case 618: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3278 "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) @@ -6600,31 +6652,31 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6604 "util/configparser.c" +#line 6656 "util/configparser.c" break; - case 619: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3288 "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 6614 "util/configparser.c" +#line 6666 "util/configparser.c" break; - case 620: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3295 "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 6624 "util/configparser.c" +#line 6676 "util/configparser.c" break; - case 621: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3302 "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) @@ -6632,51 +6684,51 @@ yyparse (void) else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6636 "util/configparser.c" +#line 6688 "util/configparser.c" break; - case 622: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3311 "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 6646 "util/configparser.c" +#line 6698 "util/configparser.c" break; - case 623: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3318 "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 6656 "util/configparser.c" +#line 6708 "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 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 6666 "util/configparser.c" +#line 6718 "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 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 6676 "util/configparser.c" +#line 6728 "util/configparser.c" break; - case 626: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3339 "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) @@ -6684,11 +6736,11 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6688 "util/configparser.c" +#line 6740 "util/configparser.c" break; - case 627: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3348 "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) @@ -6696,31 +6748,31 @@ yyparse (void) else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6700 "util/configparser.c" +#line 6752 "util/configparser.c" break; - case 628: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3357 "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 6710 "util/configparser.c" +#line 6762 "util/configparser.c" break; - case 629: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3364 "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 6720 "util/configparser.c" +#line 6772 "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 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) @@ -6729,11 +6781,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6733 "util/configparser.c" +#line 6785 "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 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) @@ -6742,11 +6794,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6746 "util/configparser.c" +#line 6798 "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 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) @@ -6755,11 +6807,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6759 "util/configparser.c" +#line 6811 "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 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) @@ -6768,11 +6820,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6772 "util/configparser.c" +#line 6824 "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 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) @@ -6781,11 +6833,11 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6785 "util/configparser.c" +#line 6837 "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 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) @@ -6794,49 +6846,49 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6798 "util/configparser.c" +#line 6850 "util/configparser.c" break; - case 636: /* pythonstart: VAR_PYTHON */ -#line 3431 "util/configparser.y" + case 642: /* pythonstart: VAR_PYTHON */ +#line 3459 "util/configparser.y" { OUTYY(("\nP(python:)\n")); cfg_parser->started_toplevel = 1; } -#line 6807 "util/configparser.c" +#line 6859 "util/configparser.c" break; - case 640: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3441 "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 6817 "util/configparser.c" +#line 6869 "util/configparser.c" break; - case 641: /* dynlibstart: VAR_DYNLIB */ -#line 3447 "util/configparser.y" + case 647: /* dynlibstart: VAR_DYNLIB */ +#line 3475 "util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); cfg_parser->started_toplevel = 1; } -#line 6826 "util/configparser.c" +#line 6878 "util/configparser.c" break; - case 645: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3457 "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 6836 "util/configparser.c" +#line 6888 "util/configparser.c" break; - case 646: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3463 "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) @@ -6845,21 +6897,21 @@ yyparse (void) (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6849 "util/configparser.c" +#line 6901 "util/configparser.c" break; - case 647: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3473 "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 6859 "util/configparser.c" +#line 6911 "util/configparser.c" break; - case 648: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3480 "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)); @@ -6867,31 +6919,31 @@ yyparse (void) (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6871 "util/configparser.c" +#line 6923 "util/configparser.c" break; - case 649: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3489 "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 6882 "util/configparser.c" +#line 6934 "util/configparser.c" break; - case 650: /* dnscstart: VAR_DNSCRYPT */ -#line 3497 "util/configparser.y" + case 656: /* dnscstart: VAR_DNSCRYPT */ +#line 3525 "util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); cfg_parser->started_toplevel = 1; } -#line 6891 "util/configparser.c" +#line 6943 "util/configparser.c" break; - case 663: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3514 "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) @@ -6899,11 +6951,11 @@ yyparse (void) else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6903 "util/configparser.c" +#line 6955 "util/configparser.c" break; - case 664: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3524 "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) @@ -6911,21 +6963,21 @@ yyparse (void) else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6915 "util/configparser.c" +#line 6967 "util/configparser.c" break; - case 665: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3533 "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 6925 "util/configparser.c" +#line 6977 "util/configparser.c" break; - case 666: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3540 "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))) @@ -6933,21 +6985,21 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6937 "util/configparser.c" +#line 6989 "util/configparser.c" break; - case 667: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3549 "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 6947 "util/configparser.c" +#line 6999 "util/configparser.c" break; - case 668: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3556 "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))) @@ -6955,22 +7007,22 @@ yyparse (void) if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6959 "util/configparser.c" +#line 7011 "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 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 6970 "util/configparser.c" +#line 7022 "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 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) { @@ -6982,22 +7034,22 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 6986 "util/configparser.c" +#line 7038 "util/configparser.c" break; - case 671: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3586 "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 6997 "util/configparser.c" +#line 7049 "util/configparser.c" break; - case 672: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3594 "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) { @@ -7009,20 +7061,20 @@ yyparse (void) } free((yyvsp[0].str)); } -#line 7013 "util/configparser.c" +#line 7065 "util/configparser.c" break; - case 673: /* cachedbstart: VAR_CACHEDB */ -#line 3607 "util/configparser.y" + case 679: /* cachedbstart: VAR_CACHEDB */ +#line 3635 "util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); cfg_parser->started_toplevel = 1; } -#line 7022 "util/configparser.c" +#line 7074 "util/configparser.c" break; - case 682: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3619 "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))); @@ -7033,11 +7085,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 7037 "util/configparser.c" +#line 7089 "util/configparser.c" break; - case 683: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3631 "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))); @@ -7048,11 +7100,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 7052 "util/configparser.c" +#line 7104 "util/configparser.c" break; - case 684: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3643 "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))); @@ -7063,11 +7115,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 7067 "util/configparser.c" +#line 7119 "util/configparser.c" break; - case 685: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3655 "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; @@ -7081,11 +7133,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 7085 "util/configparser.c" +#line 7137 "util/configparser.c" break; - case 686: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3670 "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))); @@ -7097,11 +7149,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 7101 "util/configparser.c" +#line 7153 "util/configparser.c" break; - case 687: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3683 "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))); @@ -7113,11 +7165,11 @@ yyparse (void) #endif free((yyvsp[0].str)); } -#line 7117 "util/configparser.c" +#line 7169 "util/configparser.c" break; - case 688: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3696 "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) @@ -7127,20 +7179,20 @@ yyparse (void) fatal_exit("out of memory adding tcp connection limit"); } } -#line 7131 "util/configparser.c" +#line 7183 "util/configparser.c" break; - case 689: /* ipsetstart: VAR_IPSET */ -#line 3707 "util/configparser.y" + case 695: /* ipsetstart: VAR_IPSET */ +#line 3735 "util/configparser.y" { OUTYY(("\nP(ipset:)\n")); cfg_parser->started_toplevel = 1; } -#line 7140 "util/configparser.c" +#line 7192 "util/configparser.c" break; - case 694: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3717 "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))); @@ -7154,11 +7206,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 7158 "util/configparser.c" +#line 7210 "util/configparser.c" break; - case 695: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3732 "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))); @@ -7172,11 +7224,11 @@ yyparse (void) free((yyvsp[0].str)); #endif } -#line 7176 "util/configparser.c" +#line 7228 "util/configparser.c" break; -#line 7180 "util/configparser.c" +#line 7232 "util/configparser.c" default: break; } @@ -7370,7 +7422,7 @@ yyparse (void) return yyresult; } -#line 3746 "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 2e62aa9f3166..1117403a1ca7 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -254,137 +254,140 @@ 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_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_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 @@ -593,137 +596,140 @@ 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_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_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 @@ -733,7 +739,7 @@ union YYSTYPE char* str; -#line 737 "util/configparser.h" +#line 743 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 3ecdad2ad254..f21c30815b3f 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 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 @@ -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 ; @@ -282,6 +282,7 @@ content_server: server_num_threads | server_verbosity | server_port | 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_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 | @@ -322,7 +323,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 +555,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)); @@ -2636,6 +2646,24 @@ 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_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")); diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 80a8144d385b..b816f8a0464e 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4840,6 +4840,7 @@ 8403, 8416, 8417, +8433, 8442, 8443, 8444, diff --git a/util/netevent.c b/util/netevent.c index da59a9d60bda..fe3d511643f8 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -810,7 +810,7 @@ static int consume_pp2_header(struct sldns_buffer* buf, struct comm_reply* rep, /* We are reading a whole packet; * Move the rest of the data to overwrite the PROXYv2 header */ /* XXX can we do better to avoid memmove? */ - memmove(header, ((void*)header)+size, + memmove(header, ((char*)header)+size, sldns_buffer_limit(buf)-size); sldns_buffer_set_limit(buf, sldns_buffer_limit(buf)-size); } @@ -2545,8 +2545,9 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) return 1; } -/** read again to drain buffers when there could be more to read */ -static void +/** read again to drain buffers when there could be more to read, returns 0 + * on failure which means the comm point is closed. */ +static int tcp_req_info_read_again(int fd, struct comm_point* c) { while(c->tcp_req_info->read_again) { @@ -2563,9 +2564,10 @@ tcp_req_info_read_again(int fd, struct comm_point* c) (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } - return; + return 0; } } + return 1; } /** read again to drain buffers when there could be more to read */ @@ -2623,6 +2625,9 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) log_assert(c->type == comm_tcp); ub_comm_base_now(c->ev->base); + if(c->fd == -1 || c->fd != fd) + return; /* duplicate event, but commpoint closed. */ + #ifdef USE_DNSCRYPT /* Initialize if this is a dnscrypt socket */ if(c->tcp_parent) { @@ -2671,8 +2676,10 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } return; } - if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) - tcp_req_info_read_again(fd, c); + if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) { + if(!tcp_req_info_read_again(fd, c)) + return; + } if(moreread && *moreread) tcp_more_read_again(fd, c); return; @@ -2690,8 +2697,10 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } return; } - if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) - tcp_req_info_read_again(fd, c); + if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) { + if(!tcp_req_info_read_again(fd, c)) + return; + } if(morewrite && *morewrite) tcp_more_write_again(fd, c); return; @@ -4488,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) { diff --git a/util/tube.c b/util/tube.c index 43455feefb7f..7d98b93c3751 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) @@ -529,6 +543,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()));