diff options
author | Cy Schubert <cy@FreeBSD.org> | 2023-01-13 23:52:47 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2023-01-13 23:52:47 +0000 |
commit | 7699e1386a16236002b26107ffd2dcbde375e197 (patch) | |
tree | 5ad14092d4fbc494b3a9e06f2d557fe9e7e56e4b | |
parent | 643f9a0581e8aac7eb790ced1164748939829826 (diff) | |
download | src-vendor/unbound.tar.gz src-vendor/unbound.zip |
unbound: Vendor import 1.17.1vendor/unbound
Release notes at
https://www.nlnetlabs.nl/news/2023/Jan/12/unbound-1.17.1-released/.
59 files changed, 7216 insertions, 6227 deletions
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 @@ [](https://repology.org/project/unbound/versions) [](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:unbound) [](https://unbound.readthedocs.io/en/latest/?badge=latest) +[](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 <unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues>. # @@ -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 @@ -489,6 +489,27 @@ static int daemon_get_shufport(struct daemon* daemon, int* shufport) } /** + * 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; i<daemon->num; 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. * Creates the daemon random generator if it does not exist yet. @@ -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; i<daemon->num; 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 <unbound.h> .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<yes or no> +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<number> 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> 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<yes or no> @@ -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<number> +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<number> +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<number> 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<yes or no> 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<IP address>\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 @@ cleanup: 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 - -# 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 +# End the test +# $1: exit value +end () { echo "> cat logfiles" cat fwd.log cat unbound.log - echo "Not OK" - exit 1 -fi + exit $1 +} -# 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 +# 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 + +teststep "test if the server is up" +query www.example.com. +expect_answer "10.20.30.40" + +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 - -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 +control_command -c ub.conf reload +expect_exit_value 0 +query afterreload. +expect_answer "5.6.7.8" -# 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 "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]*$" -# 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 verbosity" +control_command -c ub.conf verbosity 2 +expect_exit_value 0 -# 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 +teststep "check syntax error in parse" +control_command -c ub.conf verbosity jkdf +expect_exit_value 1 -# 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 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, - - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 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, - - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 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, - - 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, - - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 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, - - 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, - - 367, 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, - - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 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, - - 367, 367, 367, 367, 367, 367, 367, 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, - - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 367, 367, - 367, 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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 + 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, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 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, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 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, + + 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, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 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, + + 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, + + 370, 370, 370, 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, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 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, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 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, + + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, + 370, 370, 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 370, 370, 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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 + 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, + + 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, + + 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, 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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 + } ; -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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 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, - - 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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 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, - - 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, - - 3653, 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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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, - - 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 + 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, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 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, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 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, + + 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, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 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, + + 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, + + 3690, 3690, 3690, 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, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 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, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 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, + + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3690, + 3690, 3690, 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 3690, 3690, 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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, + + 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 + } ; -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 "<stdout>" +#line 4183 "<stdout>" #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 "<stdout>" +#line 4192 "<stdout>" -#line 4154 "<stdout>" +#line 4194 "<stdout>" #define INITIAL 0 #define quotedstring 1 @@ -4377,7 +4417,7 @@ YY_DECL { #line 211 "util/configlexer.lex" -#line 4378 "<stdout>" +#line 4418 "<stdout>" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -4410,13 +4450,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3646 ) + if ( yy_current_state >= 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" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ YDVAR(1, VAR_NSID ) } YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ 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 345: +YY_RULE_SETUP +#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: +case 354: YY_RULE_SETUP -#line 617 "util/configlexer.lex" +#line 620 "util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 352: -/* rule 352 can match eol */ +case 355: +/* rule 355 can match eol */ YY_RULE_SETUP -#line 618 "util/configlexer.lex" +#line 621 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 353: +case 356: YY_RULE_SETUP -#line 619 "util/configlexer.lex" +#line 622 "util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 354: +case 357: YY_RULE_SETUP -#line 620 "util/configlexer.lex" +#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: +case 362: YY_RULE_SETUP -#line 659 "util/configlexer.lex" +#line 662 "util/configlexer.lex" { LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK -case 360: -/* rule 360 can match eol */ +case 363: +/* rule 363 can match eol */ YY_RULE_SETUP -#line 660 "util/configlexer.lex" +#line 663 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK -case 361: +case 364: YY_RULE_SETUP -#line 661 "util/configlexer.lex" +#line 664 "util/configlexer.lex" { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } YY_BREAK -case 362: +case 365: YY_RULE_SETUP -#line 662 "util/configlexer.lex" +#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 "<stdout>" +#line 6479 "<stdout>" 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 589, 590, - 591, 592, 593, 594 + 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,48 +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, @@ -2099,21 +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, -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,15 +2333,14 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 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, + 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, @@ -2338,31 +2352,33 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, - 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, 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, - 3, 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, - 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 1, 2, 0, 1, 2, 2, 2, 3, 3, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 3, 1, - 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: } } -#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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: 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 @@ yyreduce: #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 @@ yyreduce: #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 @@ yyreduce: #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 @@ yyreduce: #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 @@ yyreduce: #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 */ |