diff --git a/Makefile.in b/Makefile.in index 51a13836b..bac212df2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -25,6 +25,7 @@ DNSTAP_SRC=@DNSTAP_SRC@ DNSTAP_OBJ=@DNSTAP_OBJ@ DNSCRYPT_SRC=@DNSCRYPT_SRC@ DNSCRYPT_OBJ=@DNSCRYPT_OBJ@ +WITH_DYNLIBMODULE=@WITH_DYNLIBMODULE@ WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ WITH_PYUNBOUND=@WITH_PYUNBOUND@ PY_MAJOR_VERSION=@PY_MAJOR_VERSION@ @@ -87,6 +88,12 @@ LINTFLAGS+="-D__uint16_t=uint16_t" "-DEVP_PKEY_ASN1_METHOD=int" "-D_RuneLocale=i INSTALL=$(SHELL) $(srcdir)/install-sh +DYNLIBMOD_SRC=dynlibmod/dynlibmod.c +DYNLIBMOD_OBJ=@DYNLIBMOD_OBJ@ +DYNLIBMOD_HEADER=@DYNLIBMOD_HEADER@ +DYNLIBMOD_EXTRALIBS=@DYNLIBMOD_EXTRALIBS@ + + #pythonmod.c is not here, it is mentioned by itself in its own rules, #makedepend fails on missing interface.h otherwise. PYTHONMOD_SRC=pythonmod/pythonmod_utils.c @@ -140,7 +147,7 @@ autotrust.lo val_anchor.lo rpz.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ -$(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo +$(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo @@ -333,13 +340,13 @@ libunbound.la: $(LIBUNBOUND_OBJ_LINK) $(LINK_LIB) $(UBSYMS) -o $@ $(LIBUNBOUND_OBJ_LINK) -rpath $(libdir) $(SSLLIB) $(LIBS) unbound$(EXEEXT): $(DAEMON_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-checkconf$(EXEEXT): $(CHECKCONF_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-control$(EXEEXT): $(CONTROL_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-host$(EXEEXT): $(HOST_OBJ_LINK) libunbound.la $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) @@ -357,34 +364,34 @@ anchor-update$(EXEEXT): $(ANCHORUPD_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ANCHORUPD_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) unittest$(EXEEXT): $(UNITTEST_OBJ_LINK) - $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) testbound$(EXEEXT): $(TESTBOUND_OBJ_LINK) - $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) lock-verify$(EXEEXT): $(LOCKVERIFY_OBJ_LINK) - $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) petal$(EXEEXT): $(PETAL_OBJ_LINK) $(LINK) -o $@ $(PETAL_OBJ_LINK) $(SSLLIB) $(LIBS) pktview$(EXEEXT): $(PKTVIEW_OBJ_LINK) - $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) memstats$(EXEEXT): $(MEMSTATS_OBJ_LINK) - $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) - $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) perf$(EXEEXT): $(PERF_OBJ_LINK) - $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) delayer$(EXEEXT): $(DELAYER_OBJ_LINK) - $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) signit$(EXEEXT): testcode/signit.c $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ -o $@ testcode/signit.c $(LDFLAGS) -lldns $(SSLLIB) $(LIBS) @@ -407,7 +414,7 @@ dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h: $(srcdir)/dnstap/dnstap.proto $(PROTOC_C) --c_out=. --proto_path=$(srcdir) $(srcdir)/dnstap/dnstap.proto unbound-dnstap-socket$(EXEEXT): $(DNSTAP_SOCKET_OBJ_LINK) - $(LINK) -o $@ $(DNSTAP_SOCKET_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DNSTAP_SOCKET_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h @@ -466,6 +473,7 @@ clean: rm -f unbound$(EXEEXT) unbound-checkconf$(EXEEXT) unbound-host$(EXEEXT) unbound-control$(EXEEXT) unbound-anchor$(EXEEXT) unbound-control-setup libunbound.la unbound.h rm -f $(ALL_SRC:.c=.lint) rm -f _unbound.la libunbound/python/libunbound_wrap.c libunbound/python/unbound.py pythonmod/interface.h pythonmod/unboundmodule.py + rm -f libunbound.a rm -rf autom4te.cache .libs build doc/html doc/xml distclean: clean @@ -640,6 +648,7 @@ depend: -e 's?$$(srcdir)/pythonmod/pythonmod.h?$$(PYTHONMOD_HEADER)?g' \ -e 's?$$(srcdir)/edns-subnet/subnetmod.h $$(srcdir)/edns-subnet/subnet-whitelist.h $$(srcdir)/edns-subnet/edns-subnet.h $$(srcdir)/edns-subnet/addrtree.h?$$(SUBNET_HEADER)?g' \ -e 's?$$(srcdir)/ipsecmod/ipsecmod.h $$(srcdir)/ipsecmod/ipsecmod-whitelist.h?$$(IPSECMOD_HEADER)?g' \ + -e 's?$$(srcdir)/dynlibmod/dynlibmod.h?$$(DYNLIBMOD_HEADER)?g' \ -e 's!\(.*\)\.o[ :]*!\1.lo \1.o: !g' \ > $(DEPEND_TMP) cp $(DEPEND_TARGET) $(DEPEND_TMP2) @@ -807,12 +816,13 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/respip/respip.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ + $(srcdir)/ipset/ipset.h $(srcdir)/dynlibmod/dynlibmod.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ @@ -897,21 +907,23 @@ authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/service $(srcdir)/validator/val_secalgo.h fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ - $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ - $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h + $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/validator/validator.h \ + $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \ + $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \ + $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h \ + $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \ + $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h \ + $(srcdir)/dynlibmod/dynlibmod.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ @@ -1119,7 +1131,32 @@ respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localz $(srcdir)/util/regional.h checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/testcode/checklocks.h +dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ + $(srcdir)/util/locks.h $(srcdir)/dnstap/dnstap.h \ + dnstap/dnstap.pb-c.h +dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ + +dynlibmod.lo dynlibmod.o: $(srcdir)/dynlibmod/dynlibmod.c config.h $(srcdir)/dynlibmod/dynlibmod.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h\ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/wire2str.h +dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ + $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/storage/lookup3.h ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h +ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ diff --git a/config.h.in b/config.h.in index bd9b38bc0..f7a4095ed 100644 --- a/config.h.in +++ b/config.h.in @@ -386,6 +386,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_CONF_H +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_CORE_NAMES_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_DH_H @@ -500,8 +503,9 @@ /* Define to 1 if you have the `SSL_CTX_set_security_level' function. */ #undef HAVE_SSL_CTX_SET_SECURITY_LEVEL -/* Define to 1 if you have the `SSL_CTX_set_tlsext_ticket_key_cb' function. */ -#undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_CB +/* Define to 1 if you have the `SSL_CTX_set_tlsext_ticket_key_evp_cb' + function. */ +#undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME @@ -866,6 +870,9 @@ /* the version of the windows API enabled */ #undef WINVER +/* Define if you want dynlib module. */ +#undef WITH_DYNLIBMODULE + /* Define if you want Python module. */ #undef WITH_PYTHONMODULE diff --git a/configure b/configure index fb1ce374e..ae72d891e 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.10.1. +# Generated by GNU Autoconf 2.69 for unbound 1.10.2. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.10.1' -PACKAGE_STRING='unbound 1.10.1' +PACKAGE_VERSION='1.10.2' +PACKAGE_STRING='unbound 1.10.2' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -700,6 +700,10 @@ PYTHON_LDFLAGS PYTHON_CPPFLAGS PYTHON PYTHON_VERSION +DYNLIBMOD_EXTRALIBS +DYNLIBMOD_HEADER +DYNLIBMOD_OBJ +WITH_DYNLIBMODULE PTHREAD_CFLAGS_ONLY PTHREAD_CFLAGS PTHREAD_LIBS @@ -856,6 +860,7 @@ enable_alloc_nonregional with_pthreads with_solaris_threads with_syslog_facility +with_dynlibmodule with_pyunbound with_pythonmodule enable_swig_version_check @@ -1453,7 +1458,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.10.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.10.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1518,7 +1523,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.10.1:";; + short | recursive ) echo "Configuration of unbound 1.10.2:";; esac cat <<\_ACEOF @@ -1618,6 +1623,8 @@ Optional Packages: --with-solaris-threads use solaris native thread library. --with-syslog-facility=LOCAL0 - LOCAL7 set SYSLOG_FACILITY, default DAEMON + --with-dynlibmodule build dynamic library module, or + --without-dynlibmodule to disable it. (default=no) --with-pyunbound build PyUnbound, or --without-pyunbound to skip it. (default=no) --with-pythonmodule build Python module, or --without-pythonmodule to @@ -1743,7 +1750,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.10.1 +unbound configure 1.10.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2452,7 +2459,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.10.1, which was +It was created by unbound $as_me 1.10.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2804,11 +2811,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=10 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=2 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=8 +LIBUNBOUND_REVISION=9 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2884,6 +2891,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 +# 1.10.2 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -17188,6 +17196,34 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Check for dynamic library module + +# Check whether --with-dynlibmodule was given. +if test "${with_dynlibmodule+set}" = set; then : + withval=$with_dynlibmodule; +else + withval="no" +fi + + +if test x_$withval != x_no; then + +$as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h + + WITH_DYNLIBMODULE=yes + + DYNLIBMOD_OBJ="dynlibmod.lo" + + DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' + + if test $on_mingw = "no"; then + DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + else + DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.a" + fi + +fi + # Check for PyUnbound # Check whether --with-pyunbound was given. @@ -18290,7 +18326,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h +for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -18304,7 +18340,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_tlsext_ticket_key_cb EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -18320,7 +18356,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -21583,7 +21619,7 @@ _ACEOF -version=1.10.1 +version=1.10.2 date=`date +'%b %e, %Y'` @@ -22102,7 +22138,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.10.1, which was +This file was extended by unbound $as_me 1.10.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22168,7 +22204,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.10.1 +unbound config.status 1.10.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index f96a24ef2..5c373d9d8 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],[10]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MICRO],[2]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=8 +LIBUNBOUND_REVISION=9 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -94,6 +94,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 +# 1.10.2 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -627,6 +628,28 @@ case "${UNBOUND_SYSLOG_FACILITY}" in esac AC_DEFINE_UNQUOTED(UB_SYSLOG_FACILITY,${UNBOUND_SYSLOG_FACILITY},[the SYSLOG_FACILITY to use, default LOG_DAEMON]) +# Check for dynamic library module +AC_ARG_WITH(dynlibmodule, + AC_HELP_STRING([--with-dynlibmodule], + [build dynamic library module, or --without-dynlibmodule to disable it. (default=no)]), + [], [ withval="no" ]) + +if test x_$withval != x_no; then + AC_DEFINE(WITH_DYNLIBMODULE, 1, [Define if you want dynlib module.]) + WITH_DYNLIBMODULE=yes + AC_SUBST(WITH_DYNLIBMODULE) + DYNLIBMOD_OBJ="dynlibmod.lo" + AC_SUBST(DYNLIBMOD_OBJ) + DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' + AC_SUBST(DYNLIBMOD_HEADER) + if test $on_mingw = "no"; then + DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + else + DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.a" + fi + AC_SUBST(DYNLIBMOD_EXTRALIBS) +fi + # Check for PyUnbound AC_ARG_WITH(pyunbound, AC_HELP_STRING([--with-pyunbound], @@ -827,13 +850,13 @@ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_tlsext_ticket_key_cb EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) +AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index b5c526822..9881bde89 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -13,9 +13,9 @@ Index: trunk/doc/unbound.conf.5.in +This also causes an additional A query to be sent for each AAAA query. +This breaks DNSSEC! +.TP - .B private\-address: \fI - Give IPv4 of IPv6 addresses or classless subnets. These are addresses - on your private network, and are not allowed to be returned for + .B aggressive\-nsec: \fI + Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN + and other denials, using information from previous NXDOMAINs answers. Index: trunk/iterator/iter_scrub.c =================================================================== --- trunk/iterator/iter_scrub.c (revision 4357) @@ -125,7 +125,7 @@ Index: trunk/iterator/iterator.c + * ASN: This event state was added as an intermediary step between + * QUERYTARGETS_STATE and the next step, in order to cast a subquery for the + * purpose of caching A records for the queried name. -+ * ++ * + * @param qstate: query state. + * @param iq: iterator query state. + * @param ie: iterator shared global environment. @@ -147,9 +147,9 @@ Index: trunk/iterator/iterator.c + + /* re-throw same query, but with a different type */ + if(!generate_sub_request(iq->qchase.qname, -+ iq->qchase.qname_len, LDNS_RR_TYPE_A, ++ iq->qchase.qname_len, LDNS_RR_TYPE_A, + iq->qchase.qclass, qstate, id, iq, -+ INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { ++ INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { + log_nametypeclass(VERB_ALGO, "ASN-AAAA-filter: failed " + "preloading of A record for", + iq->qchase.qname, LDNS_RR_TYPE_A, @@ -188,7 +188,7 @@ Index: trunk/iterator/iterator.c return 0; } -+/** ++/** + * ASN: Do final processing on responses to A queries originated from AAAA + * queries. Events reach this state after the iterative resolution algorithm + * terminates. diff --git a/contrib/libunbound.pc.in b/contrib/libunbound.pc.in index 1442ed523..453bf7d4f 100644 --- a/contrib/libunbound.pc.in +++ b/contrib/libunbound.pc.in @@ -7,8 +7,7 @@ Name: unbound Description: Library with validating, recursive, and caching DNS resolver URL: http://www.unbound.net Version: @PACKAGE_VERSION@ -Requires: @PC_CRYPTO_DEPENDENCY@ @PC_LIBEVENT_DEPENDENCY@ -Requires.private: @PC_PY_DEPENDENCY@ @PC_LIBBSD_DEPENDENCY@ +Requires.private: @PC_PY_DEPENDENCY@ @PC_LIBBSD_DEPENDENCY@ @PC_CRYPTO_DEPENDENCY@ @PC_LIBEVENT_DEPENDENCY@ Libs: -L${libdir} -lunbound Libs.private: @SSLLIB@ @LIBS@ Cflags: -I${includedir} diff --git a/daemon/acl_list.c b/daemon/acl_list.c index c16a920d9..84324575e 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -273,7 +273,7 @@ check_data(const char* data, const struct config_strlist* head) if(res == 0) return 1; log_err("rr data [char %d] parse error %s", - (int)LDNS_WIREPARSE_OFFSET(res)-13, + (int)LDNS_WIREPARSE_OFFSET(res)-2, sldns_get_errorstr_parse(res)); return 0; } diff --git a/daemon/remote.c b/daemon/remote.c index b399735c9..aa263d074 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -804,6 +804,9 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, size_t dnscrypt_shared_secret = 0; size_t dnscrypt_nonce = 0; #endif /* USE_DNSCRYPT */ +#ifdef WITH_DYNLIBMODULE + size_t dynlib = 0; +#endif /* WITH_DYNLIBMODULE */ msg = slabhash_get_mem(daemon->env->msg_cache); rrset = slabhash_get_mem(&daemon->env->rrset_cache->table); val = mod_get_mem(&worker->env, "validator"); @@ -822,6 +825,9 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, dnscrypt_nonce = slabhash_get_mem(daemon->dnscenv->nonces_cache); } #endif /* USE_DNSCRYPT */ +#ifdef WITH_DYNLIBMODULE + dynlib = mod_get_mem(&worker->env, "dynlib"); +#endif /* WITH_DYNLIBMODULE */ if(!print_longnum(ssl, "mem.cache.rrset"SQ, rrset)) return 0; @@ -849,6 +855,10 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, dnscrypt_nonce)) return 0; #endif /* USE_DNSCRYPT */ +#ifdef WITH_DYNLIBMODULE + if(!print_longnum(ssl, "mem.mod.dynlibmod"SQ, dynlib)) + return 0; +#endif /* WITH_DYNLIBMODULE */ if(!print_longnum(ssl, "mem.streamwait"SQ, (size_t)s->svr.mem_stream_wait)) return 0; diff --git a/doc/Changelog b/doc/Changelog index 0b2a86aa9..f4304bddf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,89 @@ +8 July 2020: Wouter + - Fix add missing DSA header, for compilation without deprecated + OpenSSL APIs. + - Fix to use SSL_CTX_set_tlsext_ticket_key_evp_cb in OpenSSL + 3.0.0-alpha4. + - Longer keys for the test set, this avoids weak crypto errors. + +7 July 2020: Wouter + - Fix #259: Fix unbound-checkconf does not check view existence. + unbound-checkconf checks access-control-view, access-control-tags, + access-control-tag-actions and access-control-tag-datas. + - Fix offset of error printout for access-control-tag-datas. + - Review fixes for checkconf #259 change. + +6 July 2020: Wouter + - run_vm cleanup better and removes trailing slash on single argument. + +29 June 2020: Wouter + - Move reply list clean for serve expired mesh callback to after + the reply is sent, so that script callbacks have reply_info. + - Also move reply list clean for mesh callbacks to the scrip callback + can see the reply_info. + - Fix for mesh accounting if the reply list already empty to begin + with. + - Fix for mesh accounting when rpz decides to drop a reply with a + tcp stream waiting for it. + - Review fix for number of detached states due to use of variable + after end of loop. + - Fix tcp req info drop due to size call into mesh accounting + removal of mesh state during mesh send reply. + +24 June 2020: Wouter + - iana portlist updated. + - doxygen file comments for dynlibmodule. + +17 June 2020: Wouter + - Fix default explanation in man page for qname-minimisation-strict. + - Fix display of event loop method with libev. + +8 June 2020: Wouter + - Mention tls name possible when tls is enabled for stub-addr in the + man page. + +27 May 2020: George + - Merge PR #241 by Robert Edmonds: contrib/libunbound.pc.in: Do not use + "Requires:". + +25 May 2020: George + - Update contrib/aaaa-filter-iterator.patch for the recent + generate_sub_request() change and to apply cleanly. + +21 May 2020: George + - Fix for integer overflow when printing RDF_TYPE_TIME. + +19 May 2020: Wouter + - CVE-2020-12662 Unbound can be tricked into amplifying an incoming + query into a large number of queries directed to a target. + - CVE-2020-12663 Malformed answers from upstream name servers can be + used to make Unbound unresponsive. + - Release 1.10.1 is 1.10.0 with fixes, code repository continues, + including those fixes, towards the next release. Configure has + version 1.10.2 version number in it. + - For PR #93: windows compile warnings removal + - windows compile warnings removal for ip dscp option code. + - For PR #93: unit test for dynlib module. + +18 May 2020: Wouter + - For PR #93: dynlibmod can handle reloads and deinit and inits again, + with dlclose and dlopen of the library again. Also for multiple + modules. Fix memory leak by not closing dlopened content. Fix + to allow one dynlibmod instance by unbound-checkconf. + - For PR #93: checkconf allows multiple dynlib in module-config, for + a couple cases. + - For PR #93: checkconf allows python dynlib in module-config, for + a couple cases. + - For PR #93: man page spelling reference fix. + - For PR #93: fix link of other executables for dynlibmod dependency. + +15 May 2020: Wouter + - Merge PR #93: Add dynamic library support. + - Fixed conflicts for PR #93 and make configure, yacc, lex. + - For PR #93: Fix warnings for dynlibmodule. + +15 May 2020: Ralph + - Cache ECS answers with longest scope of CNAME chain. + 22 April 2020: George - Explicitly use 'rrset-roundrobin: no' for test cases. diff --git a/doc/example.conf.in b/doc/example.conf.in index 2e92a90d1..b41e2d54c 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -863,6 +863,17 @@ python: # Script file to load # python-script: "@UNBOUND_SHARE_DIR@/ubmodule-tst.py" +# Dynamic library config section. To enable: +# o use --with-dynlibmodule to configure before compiling. +# o list dynlib in the module-config string (above) to enable. +# It can be placed anywhere, the dynlib module is only a very thin wrapper +# to load modules dynamically. +# o and give a dynlib-file to run. If more than one dynlib entry is listed in +# the module-config then you need one dynlib-file per instance. +dynlib: + # Script file to load + # dynlib-file: "@UNBOUND_SHARE_DIR@/dynlib.so" + # Remote control config section. remote-control: # Enable remote control with unbound-control(8) here. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index b9ad4705b..d70acedb7 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -870,7 +870,7 @@ NXDOMAIN from a DNSSEC signed zone. Default is yes. QNAME minimisation in strict mode. Do not fall-back to sending full QNAME to potentially broken nameservers. A lot of domains will not be resolvable when this option in enabled. Only use if you know what you are doing. -This option only has effect when qname-minimisation is enabled. Default is off. +This option only has effect when qname-minimisation is enabled. Default is no. .TP .B aggressive\-nsec: \fI Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN @@ -969,7 +969,9 @@ EDNS client subnet support the default is "subnetcache validator iterator". Most modules that need to be listed here have to be listed at the beginning of the line. The cachedb module has to be listed just before the iterator. The python module can be listed in different places, it then processes the -output of the module it is just before. +output of the module it is just before. The dynlib module can be listed pretty +much anywhere, it is only a very thin wrapper that allows dynamic libraries to +run in its place. .TP .B trust\-anchor\-file: \fI File with trusted keys for validation. Both DS and DNSKEY entries can appear @@ -1618,6 +1620,9 @@ Name of stub zone nameserver. Is itself resolved before it is used. .B stub\-addr: \fI IP address of stub zone nameserver. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. +If tls is enabled, then you can append a '#' and a name, then it'll check +the tls authentication certificates with that name. If you combine +the '@' and '#', the '@' comes first. .TP .B stub\-prime: \fI This option is by default no. If enabled it performs NS set priming, @@ -1836,6 +1841,24 @@ directory. .B python\-script: \fI\fR The script file to load. Repeat this option for every python module instance added to the \fBmodule\-config:\fR option. +.SS "Dynamic Library Module Options" +.LP +The +.B dynlib: +clause gives the settings for the \fIdynlib\fR module. This module is only +a very small wrapper that allows dynamic modules to be loaded on runtime +instead of being compiled into the application. To enable the dynlib module it +has to be compiled into the daemon, and the word "dynlib" has to be put in the +\fBmodule\-config:\fR option. Multiple instances of dynamic libraries are +supported by adding the word "dynlib" more than once. +.LP +The \fBdynlib\-file:\fR path should be specified as an absolute path relative +to the new path set by \fBchroot:\fR option, or as a relative path to the +working directory. +.TP +.B dynlib\-file: \fI\fR +The dynamic library file to load. Repeat this option for every dynlib module +instance added to the \fBmodule\-config:\fR option. .SS "DNS64 Module Options" .LP The dns64 module must be configured in the \fBmodule\-config:\fR "dns64 diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c new file mode 100644 index 000000000..f9751d8c6 --- /dev/null +++ b/dynlibmod/dynlibmod.c @@ -0,0 +1,301 @@ +/** + * \file + * This file contains the dynamic library module for Unbound. + * This loads a dynamic library (.dll, .so) and calls that for the + * module actions. + */ +#include "config.h" +#include "util/module.h" +#include "util/config_file.h" +#include "dynlibmod/dynlibmod.h" + +#if HAVE_WINDOWS_H +#include +#define __DYNMOD HMODULE +#define __DYNSYM FARPROC +#define __LOADSYM GetProcAddress +void log_dlerror() { + DWORD dwLastError = GetLastError(); + LPSTR MessageBuffer; + DWORD dwBufferLength; + DWORD dwFormatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_FROM_SYSTEM ; + if((dwBufferLength = FormatMessageA( + dwFormatFlags, + NULL, // module to get message from (NULL == system) + dwLastError, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language + (LPSTR) &MessageBuffer, + 0, + NULL + ))) + { + log_err("dynlibmod: %s (%ld)", MessageBuffer, dwLastError); + LocalFree(MessageBuffer); + } + +} + +HMODULE open_library(const char* fname) { + return LoadLibrary(fname); +} + +void close_library(const char* fname, __DYNMOD handle) { + (void)fname; + (void)handle; +} +#else +#include +#define __DYNMOD void* +#define __DYNSYM void* +#define __LOADSYM dlsym +void log_dlerror() { + log_err("dynlibmod: %s", dlerror()); +} + +void* open_library(const char* fname) { + return dlopen(fname, RTLD_LAZY | RTLD_GLOBAL); +} + +void close_library(const char* fname, __DYNMOD handle) { + if(!handle) return; + if(dlclose(handle) != 0) { + log_err("dlclose %s: %s", fname, strerror(errno)); + } +} +#endif + +/** module counter for multiple dynlib modules */ +static int dynlib_mod_count = 0; + +/** dynlib module init */ +int dynlibmod_init(struct module_env* env, int id) { + int dynlib_mod_idx = dynlib_mod_count++; + struct config_strlist* cfg_item = env->cfg->dynlib_file; + struct dynlibmod_env* de = (struct dynlibmod_env*)calloc(1, sizeof(struct dynlibmod_env)); + __DYNMOD dynamic_library; + if (!de) + { + log_err("dynlibmod[%d]: malloc failure", dynlib_mod_idx); + return 0; + } + + env->modinfo[id] = (void*) de; + + de->fname = NULL; + for(int i = dynlib_mod_idx; + i != 0 && cfg_item != NULL; + i--, cfg_item = cfg_item->next) {} + + if (cfg_item == NULL || cfg_item->str == NULL || cfg_item->str[0] == 0) { + log_err("dynlibmod[%d]: no dynamic library given.", dynlib_mod_idx); + return 0; + } else { + de->fname = cfg_item->str; + } + verbose(VERB_ALGO, "dynlibmod[%d]: Trying to load library %s", dynlib_mod_idx, de->fname); + dynamic_library = open_library(de->fname); + de->dynamic_library = (void*)dynamic_library; + if (dynamic_library == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + __DYNSYM initializer; + __DYNSYM deinitializer; + __DYNSYM operate; + __DYNSYM inform; + __DYNSYM clear; + __DYNSYM get_mem; + initializer = __LOADSYM(dynamic_library,"init"); + if (initializer == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load init procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + de->func_init = (func_init_t)(void*)initializer; + } + deinitializer = __LOADSYM(dynamic_library,"deinit"); + if (deinitializer == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load deinit procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + de->func_deinit = (func_deinit_t)(void*)deinitializer; + } + operate = __LOADSYM(dynamic_library,"operate"); + if (operate == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load operate procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + de->func_operate = (func_operate_t)(void*)operate; + } + inform = __LOADSYM(dynamic_library,"inform_super"); + if (inform == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load inform_super procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + de->func_inform = (func_inform_t)(void*)inform; + } + clear = __LOADSYM(dynamic_library,"clear"); + if (clear == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load clear procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + de->func_clear = (func_clear_t)(void*)clear; + } + get_mem = __LOADSYM(dynamic_library,"get_mem"); + if (get_mem == NULL) { + log_dlerror(); + log_err("dynlibmod[%d]: unable to load get_mem procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); + return 0; + } else { + de->func_get_mem = (func_get_mem_t)(void*)get_mem; + } + } + de->inplace_cb_delete_wrapped = &inplace_cb_delete_wrapped; + de->inplace_cb_register_wrapped = &inplace_cb_register_wrapped; + return de->func_init(env, id); +} + +/** dynlib module deinit */ +void dynlibmod_deinit(struct module_env* env, int id) { + struct dynlibmod_env* de = env->modinfo[id]; + if(de == NULL) + return; + de->func_deinit(env, id); + close_library(de->fname, (__DYNMOD)de->dynamic_library); + dynlib_mod_count--; + de->fname = NULL; + free(de); +} + +/** dynlib module operate on a query */ +void dynlibmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound) { + struct dynlibmod_env* de = qstate->env->modinfo[id]; + + de->func_operate(qstate, event, id, outbound); +} + +/** dynlib module */ +void dynlibmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super) { + struct dynlibmod_env* de = qstate->env->modinfo[id]; + + de->func_inform(qstate, id, super); +} + +/** dynlib module cleanup query state */ +void dynlibmod_clear(struct module_qstate* qstate, int id) { + struct dynlibmod_env* de = qstate->env->modinfo[id]; + + de->func_clear(qstate, id); +} + +/** dynlib module alloc size routine */ +size_t dynlibmod_get_mem(struct module_env* env, int id) { + struct dynlibmod_env* de = (struct dynlibmod_env*)env->modinfo[id]; + size_t size; + verbose(VERB_ALGO, "dynlibmod: get_mem, id: %d, de:%p", id, de); + if(!de) + return 0; + + size = de->func_get_mem(env, id); + return size + sizeof(*de); +} + +int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback) { + struct cb_pair* cb_pair = (struct cb_pair*) callback; + return ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, id, cb_pair->cb_arg); +} + +int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, + struct module_qstate* qstate, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, struct regional* region, + int id, void* callback) { + struct cb_pair* cb_pair = (struct cb_pair*) callback; + return ((inplace_cb_query_func_type*) cb_pair->cb)(qinfo, flags, qstate, addr, addrlen, zone, zonelen, region, id, cb_pair->cb_arg); +} + +int dynlib_inplace_cb_edns_back_parsed(struct module_qstate* qstate, + int id, void* cb_args) { + struct cb_pair* cb_pair = (struct cb_pair*) cb_args; + return ((inplace_cb_edns_back_parsed_func_type*) cb_pair->cb)(qstate, id, cb_pair->cb_arg); +} + +int dynlib_inplace_cb_query_response(struct module_qstate* qstate, + struct dns_msg* response, int id, void* cb_args) { + struct cb_pair* cb_pair = (struct cb_pair*) cb_args; + return ((inplace_cb_query_response_func_type*) cb_pair->cb)(qstate, response, id, cb_pair->cb_arg); +} + +int +inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id) { + struct cb_pair* cb_pair = malloc(sizeof(struct cb_pair)); + cb_pair->cb = cb; + cb_pair->cb_arg = cbarg; + if(type >= inplace_cb_reply && type <= inplace_cb_reply_servfail) { + return inplace_cb_register(&dynlib_inplace_cb_reply_generic, type, (void*) cb_pair, env, id); + } else if(type == inplace_cb_query) { + return inplace_cb_register(&dynlib_inplace_cb_query_generic, type, (void*) cb_pair, env, id); + } else if(type == inplace_cb_query_response) { + return inplace_cb_register(&dynlib_inplace_cb_query_response, type, (void*) cb_pair, env, id); + } else if(type == inplace_cb_edns_back_parsed) { + return inplace_cb_register(&dynlib_inplace_cb_edns_back_parsed, type, (void*) cb_pair, env, id); + } else { + return 0; + } +} + +void +inplace_cb_delete_wrapped(struct module_env* env, enum inplace_cb_list_type type, + int id) { + struct inplace_cb* temp = env->inplace_cb_lists[type]; + struct inplace_cb* prev = NULL; + + while(temp) { + if(temp->id == id) { + if(!prev) { + env->inplace_cb_lists[type] = temp->next; + free(temp->cb_arg); + free(temp); + temp = env->inplace_cb_lists[type]; + } + else { + prev->next = temp->next; + free(temp->cb_arg); + free(temp); + temp = prev->next; + } + } + else { + prev = temp; + temp = temp->next; + } + } +} + + +/** + * The module function block + */ +static struct module_func_block dynlibmod_block = { + "dynlib", + &dynlibmod_init, &dynlibmod_deinit, &dynlibmod_operate, &dynlibmod_inform_super, + &dynlibmod_clear, &dynlibmod_get_mem +}; + +struct module_func_block* dynlibmod_get_funcblock(void) +{ + return &dynlibmod_block; +} diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h new file mode 100644 index 000000000..c34cf0e88 --- /dev/null +++ b/dynlibmod/dynlibmod.h @@ -0,0 +1,139 @@ +/* + * dynlibmod.h: module header file + * + * Copyright (c) 2019, Peter Munch-Ellingsen (peterme AT peterme.net) + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the organization nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * Dynamic loading module for unbound. Loads dynamic library. + */ +#ifndef DYNLIBMOD_H +#define DYNLIBMOD_H +#include "util/module.h" +#include "services/outbound_list.h" + +/** + * Get the module function block. + * @return: function block with function pointers to module methods. + */ +struct module_func_block* dynlibmod_get_funcblock(void); + +/** dynlib module init */ +int dynlibmod_init(struct module_env* env, int id); + +/** dynlib module deinit */ +void dynlibmod_deinit(struct module_env* env, int id); + +/** dynlib module operate on a query */ +void dynlibmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); + +/** dynlib module */ +void dynlibmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); + +/** dynlib module cleanup query state */ +void dynlibmod_clear(struct module_qstate* qstate, int id); + +/** dynlib module alloc size routine */ +size_t dynlibmod_get_mem(struct module_env* env, int id); + +int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback); + +int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, + struct module_qstate* qstate, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, struct regional* region, + int id, void* callback); + +int dynlib_inplace_cb_edns_back_parsed(struct module_qstate* qstate, + int id, void* cb_args); + +int dynlib_inplace_cb_query_response(struct module_qstate* qstate, + struct dns_msg* response, int id, void* cb_args); + +int +inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id); + +void +inplace_cb_delete_wrapped(struct module_env* env, enum inplace_cb_list_type type, + int id); + +struct cb_pair { + void *cb; + void *cb_arg; +}; + +/** + * Global state for the module. + */ + +typedef int (*func_init_t)(struct module_env*, int); +typedef void (*func_deinit_t)(struct module_env*, int); +typedef void (*func_operate_t)(struct module_qstate*, enum module_ev, int, struct outbound_entry*); +typedef void (*func_inform_t)(struct module_qstate*, int, struct module_qstate*); +typedef void (*func_clear_t)(struct module_qstate*, int); +typedef size_t (*func_get_mem_t)(struct module_env*, int); +typedef void (*inplace_cb_delete_wrapped_t)(struct module_env*, enum inplace_cb_list_type, int); +typedef int (*inplace_cb_register_wrapped_t)(void*, enum inplace_cb_list_type, void*, struct module_env*, int); + + +struct dynlibmod_env { + /** Dynamic library filename. */ + const char* fname; + /** dynamic library handle */ + void* dynamic_library; + /** Module init function */ + func_init_t func_init; + /** Module deinit function */ + func_deinit_t func_deinit; + /** Module operate function */ + func_operate_t func_operate; + /** Module super_inform function */ + func_inform_t func_inform; + /** Module clear function */ + func_clear_t func_clear; + /** Module get_mem function */ + func_get_mem_t func_get_mem; + /** Wrapped inplace callback functions to circumvent callback whitelisting */ + inplace_cb_delete_wrapped_t inplace_cb_delete_wrapped; + inplace_cb_register_wrapped_t inplace_cb_register_wrapped; + /** Pointer to any data the dynamic library might want to keep */ + void *dyn_env; +}; + + +#endif /* DYNLIBMOD_H */ diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c new file mode 100644 index 000000000..acb6b5d9b --- /dev/null +++ b/dynlibmod/examples/helloworld.c @@ -0,0 +1,130 @@ +/** + * \file + * + * This is an example to show how dynamic libraries can be made to work with + * unbound. To build a .so file simply run: + * gcc -I../.. -shared -Wall -Werror -fpic -o helloworld.so helloworld.c + * And to build for windows, first make unbound with the --with-dynlibmod + * switch, then use this command: + * x86_64-w64-mingw32-gcc -m64 -I../.. -shared -Wall -Werror -fpic + * -o helloworld.dll helloworld.c -L../.. -l:libunbound.a + * to cross-compile a 64-bit Windows DLL. + */ + +#include "../../config.h" +#include "../../util/module.h" +#include "../../sldns/parseutil.h" +#include "../dynlibmod.h" + +/* Declare the EXPORT macro that expands to exporting the symbol for DLLs when + * compiling for Windows. All procedures marked with EXPORT in this example are + * called directly by the dynlib module and must be present for the module to + * load correctly. */ +#ifdef HAVE_WINDOWS_H +#define EXPORT __declspec(dllexport) +#else +#define EXPORT +#endif + +/* Forward declare a callback, implemented at the bottom of this file */ +int reply_callback(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback); + +/* Init is called when the module is first loaded. It should be used to set up + * the environment for this module and do any other initialisation required. */ +EXPORT int init(struct module_env* env, int id) { + log_info("dynlib: hello world from init"); + struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; + de->inplace_cb_register_wrapped(&reply_callback, + inplace_cb_reply, + NULL, env, id); + struct dynlibmod_env* local_env = env->modinfo[id]; + local_env->dyn_env = NULL; + return 1; +} + +/* Deinit is run as the program is shutting down. It should be used to clean up + * the environment and any left over data. */ +EXPORT void deinit(struct module_env* env, int id) { + log_info("dynlib: hello world from deinit"); + struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; + de->inplace_cb_delete_wrapped(env, inplace_cb_reply, id); + if (de->dyn_env != NULL) free(de->dyn_env); +} + +/* Operate is called every time a query passes by this module. The event can be + * used to determine which direction in the module chain it came from. */ +EXPORT void operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* entry) { + log_info("dynlib: hello world from operate"); + log_info("dynlib: incoming query: %s %s(%d) %s(%d)", + qstate->qinfo.qname, + sldns_lookup_by_id(sldns_rr_classes, qstate->qinfo.qclass)->name, + qstate->qinfo.qclass, + sldns_rr_descript(qstate->qinfo.qtype)->_name, + qstate->qinfo.qtype); + if (event == module_event_new || event == module_event_pass) { + qstate->ext_state[id] = module_wait_module; + struct dynlibmod_env* env = qstate->env->modinfo[id]; + if (env->dyn_env == NULL) { + env->dyn_env = calloc(3, sizeof(int)); + ((int *)env->dyn_env)[0] = 42; + ((int *)env->dyn_env)[1] = 102; + ((int *)env->dyn_env)[2] = 192; + } else { + log_err("dynlib: already has data!"); + qstate->ext_state[id] = module_error; + } + } else if (event == module_event_moddone) { + qstate->ext_state[id] = module_finished; + } else { + qstate->ext_state[id] = module_error; + } +} + +/* Inform super is called when a query is completed or errors out, but only if + * a sub-query has been registered to it by this module. Look at + * mesh_attach_sub in services/mesh.h to see how this is done. */ +EXPORT void inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super) { + log_info("dynlib: hello world from inform_super"); +} + +/* Clear is called once a query is complete and the response has been sent + * back. It is used to clear up any per-query allocations. */ +EXPORT void clear(struct module_qstate* qstate, int id) { + log_info("dynlib: hello world from clear"); + struct dynlibmod_env* env = qstate->env->modinfo[id]; + if (env->dyn_env != NULL) { + free(env->dyn_env); + env->dyn_env = NULL; + } +} + +/* Get mem is called when Unbound is printing performance information. This + * only happens explicitly and is only used to show memory usage to the user. */ +EXPORT size_t get_mem(struct module_env* env, int id) { + log_info("dynlib: hello world from get_mem"); + return 0; +} + +/* The callback that was forward declared earlier. It is registered in the init + * procedure to run when a query is being replied to. */ +int reply_callback(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback) { + log_info("dynlib: hello world from callback"); + struct dynlibmod_env* env = qstate->env->modinfo[id]; + if (env->dyn_env != NULL) { + log_info("dynlib: numbers gotten from query: %d, %d, and %d", + ((int *)env->dyn_env)[0], + ((int *)env->dyn_env)[1], + ((int *)env->dyn_env)[2]); + } + return 0; +} diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 37dc550cd..f1b401b90 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -386,8 +386,7 @@ update_cache(struct module_qstate *qstate, int id) rep->flags |= (BIT_RA | BIT_QR); /* fix flags to be sensible for */ rep->flags &= ~(BIT_AA | BIT_CD);/* a reply based on the cache */ addrtree_insert(tree, (addrkey_t*)edns->subnet_addr, - edns->subnet_source_mask, - sq->ecs_server_in.subnet_scope_mask, rep, + edns->subnet_source_mask, sq->max_scope, rep, rep->ttl, *qstate->env->now); lock_rw_unlock(&lru_entry->lock); @@ -543,7 +542,7 @@ eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) c_out->subnet_addr_fam = c_in->subnet_addr_fam; c_out->subnet_source_mask = c_in->subnet_source_mask; memcpy(&c_out->subnet_addr, &c_in->subnet_addr, INET6_SIZE); - c_out->subnet_scope_mask = s_in->subnet_scope_mask; + c_out->subnet_scope_mask = sq->max_scope; /* Limit scope returned to client to scope used for caching. */ if(c_out->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4) { if(c_out->subnet_scope_mask > @@ -648,6 +647,19 @@ ecs_query_response(struct module_qstate* qstate, struct dns_msg* response, qstate->env->cfg->client_subnet_opcode); sq->subnet_sent = 0; memset(&sq->ecs_server_out, 0, sizeof(sq->ecs_server_out)); + } else if (!sq->track_max_scope && + FLAGS_GET_RCODE(response->rep->flags) == LDNS_RCODE_NOERROR && + response->rep->an_numrrsets > 0 + ) { + struct ub_packed_rrset_key* s = response->rep->rrsets[0]; + if(ntohs(s->rk.type) == LDNS_RR_TYPE_CNAME && + query_dname_compare(qstate->qinfo.qname, + s->rk.dname) == 0) { + /* CNAME response for QNAME. From now on keep track of + * longest received ECS prefix for all queries on this + * qstate. */ + sq->track_max_scope = 1; + } } return 1; } @@ -663,16 +675,19 @@ ecs_edns_back_parsed(struct module_qstate* qstate, int id, return 1; if((ecs_opt = edns_opt_list_find( qstate->edns_opts_back_in, - qstate->env->cfg->client_subnet_opcode))) { - if(parse_subnet_option(ecs_opt, &sq->ecs_server_in) && - sq->subnet_sent && - sq->ecs_server_in.subnet_validdata) + qstate->env->cfg->client_subnet_opcode)) && + parse_subnet_option(ecs_opt, &sq->ecs_server_in) && + sq->subnet_sent && sq->ecs_server_in.subnet_validdata) { /* Only skip global cache store if we sent an ECS option * and received one back. Answers from non-whitelisted * servers will end up in global cache. Answers for * queries with 0 source will not (unless nameserver * does not support ECS). */ qstate->no_cache_store = 1; + if(!sq->track_max_scope || (sq->track_max_scope && + sq->ecs_server_in.subnet_scope_mask > + sq->max_scope)) + sq->max_scope = sq->ecs_server_in.subnet_scope_mask; } return 1; diff --git a/edns-subnet/subnetmod.h b/edns-subnet/subnetmod.h index e408627b0..27ba2ee74 100644 --- a/edns-subnet/subnetmod.h +++ b/edns-subnet/subnetmod.h @@ -45,6 +45,7 @@ #include "util/alloc.h" #include "util/net_help.h" #include "util/storage/slabhash.h" +#include "util/data/dname.h" #include "edns-subnet/addrtree.h" #include "edns-subnet/edns-subnet.h" @@ -83,6 +84,12 @@ struct subnet_qstate { struct ecs_data ecs_server_out; int subnet_downstream; int subnet_sent; + /** keep track of longest received scope, set after receiving CNAME for + * incoming QNAME. */ + int track_max_scope; + /** longest received scope mask since track_max_scope is set. This value + * is used for caching and answereing to client. */ + uint8_t max_scope; /** has the subnet module been started with no_cache_store? */ int started_no_cache_store; }; diff --git a/iterator/iter_delegpt.c b/iterator/iter_delegpt.c index f88b3e115..9a672b0af 100644 --- a/iterator/iter_delegpt.c +++ b/iterator/iter_delegpt.c @@ -84,7 +84,7 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) } for(a = dp->target_list; a; a = a->next_target) { if(!delegpt_add_addr(copy, region, &a->addr, a->addrlen, - a->bogus, a->lame, a->tls_auth_name)) + a->bogus, a->lame, a->tls_auth_name, NULL)) return NULL; } return copy; @@ -161,7 +161,7 @@ delegpt_find_addr(struct delegpt* dp, struct sockaddr_storage* addr, int delegpt_add_target(struct delegpt* dp, struct regional* region, uint8_t* name, size_t namelen, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame) + socklen_t addrlen, uint8_t bogus, uint8_t lame, int* additions) { struct delegpt_ns* ns = delegpt_find_ns(dp, name, namelen); log_assert(!dp->dp_type_mlc); @@ -176,13 +176,14 @@ delegpt_add_target(struct delegpt* dp, struct regional* region, if(ns->got4 && ns->got6) ns->resolved = 1; } - return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, NULL); + return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, NULL, + additions); } int delegpt_add_addr(struct delegpt* dp, struct regional* region, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus, - uint8_t lame, char* tls_auth_name) + uint8_t lame, char* tls_auth_name, int* additions) { struct delegpt_addr* a; log_assert(!dp->dp_type_mlc); @@ -194,6 +195,8 @@ delegpt_add_addr(struct delegpt* dp, struct regional* region, a->lame = 0; return 1; } + if(additions) + *additions = 1; a = (struct delegpt_addr*)regional_alloc(region, sizeof(struct delegpt_addr)); @@ -382,10 +385,10 @@ delegpt_from_message(struct dns_msg* msg, struct regional* region) continue; if(ntohs(s->rk.type) == LDNS_RR_TYPE_A) { - if(!delegpt_add_rrset_A(dp, region, s, 0)) + if(!delegpt_add_rrset_A(dp, region, s, 0, NULL)) return NULL; } else if(ntohs(s->rk.type) == LDNS_RR_TYPE_AAAA) { - if(!delegpt_add_rrset_AAAA(dp, region, s, 0)) + if(!delegpt_add_rrset_AAAA(dp, region, s, 0, NULL)) return NULL; } } @@ -416,7 +419,7 @@ delegpt_rrset_add_ns(struct delegpt* dp, struct regional* region, int delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, - struct ub_packed_rrset_key* ak, uint8_t lame) + struct ub_packed_rrset_key* ak, uint8_t lame, int* additions) { struct packed_rrset_data* d=(struct packed_rrset_data*)ak->entry.data; size_t i; @@ -432,7 +435,7 @@ delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, memmove(&sa.sin_addr, d->rr_data[i]+2, INET_SIZE); if(!delegpt_add_target(dp, region, ak->rk.dname, ak->rk.dname_len, (struct sockaddr_storage*)&sa, - len, (d->security==sec_status_bogus), lame)) + len, (d->security==sec_status_bogus), lame, additions)) return 0; } return 1; @@ -440,7 +443,7 @@ delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, - struct ub_packed_rrset_key* ak, uint8_t lame) + struct ub_packed_rrset_key* ak, uint8_t lame, int* additions) { struct packed_rrset_data* d=(struct packed_rrset_data*)ak->entry.data; size_t i; @@ -456,7 +459,7 @@ delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, memmove(&sa.sin6_addr, d->rr_data[i]+2, INET6_SIZE); if(!delegpt_add_target(dp, region, ak->rk.dname, ak->rk.dname_len, (struct sockaddr_storage*)&sa, - len, (d->security==sec_status_bogus), lame)) + len, (d->security==sec_status_bogus), lame, additions)) return 0; } return 1; @@ -464,20 +467,33 @@ delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, int delegpt_add_rrset(struct delegpt* dp, struct regional* region, - struct ub_packed_rrset_key* rrset, uint8_t lame) + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions) { if(!rrset) return 1; if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_NS) return delegpt_rrset_add_ns(dp, region, rrset, lame); else if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_A) - return delegpt_add_rrset_A(dp, region, rrset, lame); + return delegpt_add_rrset_A(dp, region, rrset, lame, additions); else if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_AAAA) - return delegpt_add_rrset_AAAA(dp, region, rrset, lame); + return delegpt_add_rrset_AAAA(dp, region, rrset, lame, + additions); log_warn("Unknown rrset type added to delegpt"); return 1; } +void delegpt_mark_neg(struct delegpt_ns* ns, uint16_t qtype) +{ + if(ns) { + if(qtype == LDNS_RR_TYPE_A) + ns->got4 = 2; + else if(qtype == LDNS_RR_TYPE_AAAA) + ns->got6 = 2; + if(ns->got4 && ns->got6) + ns->resolved = 1; + } +} + void delegpt_add_neg_msg(struct delegpt* dp, struct msgreply_entry* msg) { struct reply_info* rep = (struct reply_info*)msg->entry.data; @@ -487,14 +503,7 @@ void delegpt_add_neg_msg(struct delegpt* dp, struct msgreply_entry* msg) if(FLAGS_GET_RCODE(rep->flags) != 0 || rep->an_numrrsets == 0) { struct delegpt_ns* ns = delegpt_find_ns(dp, msg->key.qname, msg->key.qname_len); - if(ns) { - if(msg->key.qtype == LDNS_RR_TYPE_A) - ns->got4 = 1; - else if(msg->key.qtype == LDNS_RR_TYPE_AAAA) - ns->got6 = 1; - if(ns->got4 && ns->got6) - ns->resolved = 1; - } + delegpt_mark_neg(ns, msg->key.qtype); } } diff --git a/iterator/iter_delegpt.h b/iterator/iter_delegpt.h index 6c0882645..138eb6e1b 100644 --- a/iterator/iter_delegpt.h +++ b/iterator/iter_delegpt.h @@ -106,9 +106,10 @@ struct delegpt_ns { * and marked true if got4 and got6 are both true. */ int resolved; - /** if the ipv4 address is in the delegpt */ + /** if the ipv4 address is in the delegpt, 0=not, 1=yes 2=negative, + * negative means it was done, but no content. */ uint8_t got4; - /** if the ipv6 address is in the delegpt */ + /** if the ipv6 address is in the delegpt, 0=not, 1=yes 2=negative */ uint8_t got6; /** * If the name is parent-side only and thus dispreferred. @@ -215,11 +216,12 @@ int delegpt_rrset_add_ns(struct delegpt* dp, struct regional* regional, * @param addrlen: the length of addr. * @param bogus: security status for the address, pass true if bogus. * @param lame: address is lame. + * @param additions: will be set to 1 if a new address is added * @return false on error. */ int delegpt_add_target(struct delegpt* dp, struct regional* regional, uint8_t* name, size_t namelen, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame); + socklen_t addrlen, uint8_t bogus, uint8_t lame, int* additions); /** * Add A RRset to delegpt. @@ -227,10 +229,11 @@ int delegpt_add_target(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param rrset: RRset A to add. * @param lame: rrset is lame, disprefer it. + * @param additions: will be set to 1 if a new address is added * @return 0 on alloc error. */ int delegpt_add_rrset_A(struct delegpt* dp, struct regional* regional, - struct ub_packed_rrset_key* rrset, uint8_t lame); + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions); /** * Add AAAA RRset to delegpt. @@ -238,10 +241,11 @@ int delegpt_add_rrset_A(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param rrset: RRset AAAA to add. * @param lame: rrset is lame, disprefer it. + * @param additions: will be set to 1 if a new address is added * @return 0 on alloc error. */ int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* regional, - struct ub_packed_rrset_key* rrset, uint8_t lame); + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions); /** * Add any RRset to delegpt. @@ -250,10 +254,11 @@ int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param rrset: RRset to add, NS, A, AAAA. * @param lame: rrset is lame, disprefer it. + * @param additions: will be set to 1 if a new address is added * @return 0 on alloc error. */ int delegpt_add_rrset(struct delegpt* dp, struct regional* regional, - struct ub_packed_rrset_key* rrset, uint8_t lame); + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions); /** * Add address to the delegation point. No servername is associated or checked. @@ -264,11 +269,12 @@ int delegpt_add_rrset(struct delegpt* dp, struct regional* regional, * @param bogus: if address is bogus. * @param lame: if address is lame. * @param tls_auth_name: TLS authentication name (or NULL). + * @param additions: will be set to 1 if a new address is added * @return false on error. */ int delegpt_add_addr(struct delegpt* dp, struct regional* regional, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t bogus, uint8_t lame, char* tls_auth_name); + uint8_t bogus, uint8_t lame, char* tls_auth_name, int* additions); /** * Find NS record in name list of delegation point. @@ -341,6 +347,14 @@ size_t delegpt_count_targets(struct delegpt* dp); struct delegpt* delegpt_from_message(struct dns_msg* msg, struct regional* regional); +/** + * Mark negative return in delegation point for specific nameserver. + * sets the got4 or got6 to negative, updates the ns->resolved. + * @param ns: the nameserver in the delegpt. + * @param qtype: A or AAAA (host order). + */ +void delegpt_mark_neg(struct delegpt_ns* ns, uint16_t qtype); + /** * Add negative message to delegation point. * @param dp: delegation point. diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c index cceec3d56..aae934dd4 100644 --- a/iterator/iter_scrub.c +++ b/iterator/iter_scrub.c @@ -185,8 +185,9 @@ mark_additional_rrset(sldns_buffer* pkt, struct msg_parse* msg, /** Get target name of a CNAME */ static int parse_get_cname_target(struct rrset_parse* rrset, uint8_t** sname, - size_t* snamelen) + size_t* snamelen, sldns_buffer* pkt) { + size_t oldpos, dlen; if(rrset->rr_count != 1) { struct rr_parse* sig; verbose(VERB_ALGO, "Found CNAME rrset with " @@ -204,6 +205,19 @@ parse_get_cname_target(struct rrset_parse* rrset, uint8_t** sname, *sname = rrset->rr_first->ttl_data + sizeof(uint32_t) + sizeof(uint16_t); /* skip ttl, rdatalen */ *snamelen = rrset->rr_first->size - sizeof(uint16_t); + + if(rrset->rr_first->outside_packet) { + if(!dname_valid(*sname, *snamelen)) + return 0; + return 1; + } + oldpos = sldns_buffer_position(pkt); + sldns_buffer_set_position(pkt, (size_t)(*sname - sldns_buffer_begin(pkt))); + dlen = pkt_dname_len(pkt); + sldns_buffer_set_position(pkt, oldpos); + if(dlen == 0) + return 0; /* parse fail on the rdata name */ + *snamelen = dlen; return 1; } @@ -215,7 +229,7 @@ synth_cname(uint8_t* qname, size_t qnamelen, struct rrset_parse* dname_rrset, /* we already know that sname is a strict subdomain of DNAME owner */ uint8_t* dtarg = NULL; size_t dtarglen; - if(!parse_get_cname_target(dname_rrset, &dtarg, &dtarglen)) + if(!parse_get_cname_target(dname_rrset, &dtarg, &dtarglen, pkt)) return 0; if(qnamelen <= dname_rrset->dname_len) return 0; @@ -388,7 +402,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, /* check next cname */ uint8_t* t = NULL; size_t tlen = 0; - if(!parse_get_cname_target(nx, &t, &tlen)) + if(!parse_get_cname_target(nx, &t, &tlen, pkt)) return 0; if(dname_pkt_compare(pkt, alias, t) == 0) { /* it's OK and better capitalized */ @@ -439,7 +453,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, size_t tlen = 0; if(synth_cname(sname, snamelen, nx, alias, &aliaslen, pkt) && - parse_get_cname_target(rrset, &t, &tlen) && + parse_get_cname_target(rrset, &t, &tlen, pkt) && dname_pkt_compare(pkt, alias, t) == 0) { /* the synthesized CNAME equals the * current CNAME. This CNAME is the @@ -460,7 +474,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, } /* move to next name in CNAME chain */ - if(!parse_get_cname_target(rrset, &sname, &snamelen)) + if(!parse_get_cname_target(rrset, &sname, &snamelen, pkt)) return 0; prev = rrset; rrset = rrset->rrset_all_next; diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index c726ba6b3..7bc67da69 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -1199,7 +1199,7 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, log_rrset_key(VERB_ALGO, "found parent-side", akey); ns->done_pside4 = 1; /* a negative-cache-element has no addresses it adds */ - if(!delegpt_add_rrset_A(dp, region, akey, 1)) + if(!delegpt_add_rrset_A(dp, region, akey, 1, NULL)) log_err("malloc failure in lookup_parent_glue"); lock_rw_unlock(&akey->entry.lock); } @@ -1211,7 +1211,7 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, log_rrset_key(VERB_ALGO, "found parent-side", akey); ns->done_pside6 = 1; /* a negative-cache-element has no addresses it adds */ - if(!delegpt_add_rrset_AAAA(dp, region, akey, 1)) + if(!delegpt_add_rrset_AAAA(dp, region, akey, 1, NULL)) log_err("malloc failure in lookup_parent_glue"); lock_rw_unlock(&akey->entry.lock); } diff --git a/iterator/iterator.c b/iterator/iterator.c index eea2f2fb2..23b07ea90 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -72,6 +72,8 @@ /* in msec */ int UNKNOWN_SERVER_NICENESS = 376; +static void target_count_increase_nx(struct iter_qstate* iq, int num); + int iter_init(struct module_env* env, int id) { @@ -150,6 +152,7 @@ iter_new(struct module_qstate* qstate, int id) iq->sent_count = 0; iq->ratelimit_ok = 0; iq->target_count = NULL; + iq->dp_target_count = 0; iq->wait_priming_stub = 0; iq->refetch_glue = 0; iq->dnssec_expected = 0; @@ -221,6 +224,7 @@ final_state(struct iter_qstate* iq) static void error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) { + struct iter_env* ie = (struct iter_env*)qstate->env->modinfo[id]; struct iter_qstate* super_iq = (struct iter_qstate*)super->minfo[id]; if(qstate->qinfo.qtype == LDNS_RR_TYPE_A || @@ -246,7 +250,11 @@ error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) super->region, super_iq->dp)) log_err("out of memory adding missing"); } + delegpt_mark_neg(dpns, qstate->qinfo.qtype); dpns->resolved = 1; /* mark as failed */ + if((dpns->got4 == 2 || !ie->supports_ipv4) && + (dpns->got6 == 2 || !ie->supports_ipv6)) + target_count_increase_nx(super_iq, 1); } if(qstate->qinfo.qtype == LDNS_RR_TYPE_NS) { /* prime failed to get delegation */ @@ -621,7 +629,7 @@ static void target_count_create(struct iter_qstate* iq) { if(!iq->target_count) { - iq->target_count = (int*)calloc(2, sizeof(int)); + iq->target_count = (int*)calloc(3, sizeof(int)); /* if calloc fails we simply do not track this number */ if(iq->target_count) iq->target_count[0] = 1; @@ -634,6 +642,15 @@ target_count_increase(struct iter_qstate* iq, int num) target_count_create(iq); if(iq->target_count) iq->target_count[1] += num; + iq->dp_target_count++; +} + +static void +target_count_increase_nx(struct iter_qstate* iq, int num) +{ + target_count_create(iq); + if(iq->target_count) + iq->target_count[2] += num; } /** @@ -656,13 +673,15 @@ target_count_increase(struct iter_qstate* iq, int num) * @param subq_ret: if newly allocated, the subquerystate, or NULL if it does * not need initialisation. * @param v: if true, validation is done on the subquery. + * @param detached: true if this qstate should not attach to the subquery * @return false on error (malloc). */ static int generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, struct module_qstate* qstate, int id, struct iter_qstate* iq, enum iter_state initial_state, - enum iter_state finalstate, struct module_qstate** subq_ret, int v) + enum iter_state finalstate, struct module_qstate** subq_ret, int v, + int detached) { struct module_qstate* subq = NULL; struct iter_qstate* subiq = NULL; @@ -689,11 +708,23 @@ generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, valrec = 1; } - /* attach subquery, lookup existing or make a new one */ - fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub)); - if(!(*qstate->env->attach_sub)(qstate, &qinf, qflags, prime, valrec, - &subq)) { - return 0; + if(detached) { + struct mesh_state* sub = NULL; + fptr_ok(fptr_whitelist_modenv_add_sub( + qstate->env->add_sub)); + if(!(*qstate->env->add_sub)(qstate, &qinf, + qflags, prime, valrec, &subq, &sub)){ + return 0; + } + } + else { + /* attach subquery, lookup existing or make a new one */ + fptr_ok(fptr_whitelist_modenv_attach_sub( + qstate->env->attach_sub)); + if(!(*qstate->env->attach_sub)(qstate, &qinf, qflags, prime, + valrec, &subq)) { + return 0; + } } *subq_ret = subq; if(subq) { @@ -716,6 +747,7 @@ generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, subiq->target_count = iq->target_count; if(iq->target_count) iq->target_count[0] ++; /* extra reference */ + subiq->dp_target_count = 0; subiq->num_current_queries = 0; subiq->depth = iq->depth+1; outbound_list_init(&subiq->outlist); @@ -759,7 +791,7 @@ prime_root(struct module_qstate* qstate, struct iter_qstate* iq, int id, * the normal INIT state logic (which would cause an infloop). */ if(!generate_sub_request((uint8_t*)"\000", 1, LDNS_RR_TYPE_NS, qclass, qstate, id, iq, QUERYTARGETS_STATE, PRIME_RESP_STATE, - &subq, 0)) { + &subq, 0, 0)) { verbose(VERB_ALGO, "could not prime root"); return 0; } @@ -850,7 +882,7 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id, * redundant INIT state processing. */ if(!generate_sub_request(stub_dp->name, stub_dp->namelen, LDNS_RR_TYPE_NS, qclass, qstate, id, iq, - QUERYTARGETS_STATE, PRIME_RESP_STATE, &subq, 0)) { + QUERYTARGETS_STATE, PRIME_RESP_STATE, &subq, 0, 0)) { verbose(VERB_ALGO, "could not prime stub"); errinf(qstate, "could not generate lookup for stub prime"); (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); @@ -1025,7 +1057,7 @@ generate_a_aaaa_check(struct module_qstate* qstate, struct iter_qstate* iq, if(!generate_sub_request(s->rk.dname, s->rk.dname_len, ntohs(s->rk.type), ntohs(s->rk.rrset_class), qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { verbose(VERB_ALGO, "could not generate addr check"); return; } @@ -1069,7 +1101,7 @@ generate_ns_check(struct module_qstate* qstate, struct iter_qstate* iq, int id) iq->dp->name, LDNS_RR_TYPE_NS, iq->qchase.qclass); if(!generate_sub_request(iq->dp->name, iq->dp->namelen, LDNS_RR_TYPE_NS, iq->qchase.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { verbose(VERB_ALGO, "could not generate ns check"); return; } @@ -1126,7 +1158,7 @@ generate_dnskey_prefetch(struct module_qstate* qstate, iq->dp->name, LDNS_RR_TYPE_DNSKEY, iq->qchase.qclass); if(!generate_sub_request(iq->dp->name, iq->dp->namelen, LDNS_RR_TYPE_DNSKEY, iq->qchase.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) { /* we'll be slower, but it'll work */ verbose(VERB_ALGO, "could not generate dnskey prefetch"); return; @@ -1315,6 +1347,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, iq->refetch_glue = 0; iq->query_restart_count++; iq->sent_count = 0; + iq->dp_target_count = 0; sock_list_insert(&qstate->reply_origin, NULL, 0, qstate->region); if(qstate->env->cfg->qname_minimisation) iq->minimisation_state = INIT_MINIMISE_STATE; @@ -1693,7 +1726,7 @@ generate_parentside_target_query(struct module_qstate* qstate, { struct module_qstate* subq; if(!generate_sub_request(name, namelen, qtype, qclass, qstate, - id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) + id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) return 0; if(subq) { struct iter_qstate* subiq = @@ -1744,7 +1777,7 @@ generate_target_query(struct module_qstate* qstate, struct iter_qstate* iq, { struct module_qstate* subq; if(!generate_sub_request(name, namelen, qtype, qclass, qstate, - id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) + id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) return 0; log_nametypeclass(VERB_QUERY, "new target", name, qtype, qclass); return 1; @@ -1783,6 +1816,14 @@ query_for_targets(struct module_qstate* qstate, struct iter_qstate* iq, "number of glue fetches %d", s, iq->target_count[1]); return 0; } + if(iq->dp_target_count > MAX_DP_TARGET_COUNT) { + char s[LDNS_MAX_DOMAINLEN+1]; + dname_str(qstate->qinfo.qname, s); + verbose(VERB_QUERY, "request %s has exceeded the maximum " + "number of glue fetches %d to a single delegation point", + s, iq->dp_target_count); + return 0; + } iter_mark_cycle_targets(qstate, iq->dp); missing = (int)delegpt_count_missing_targets(iq->dp); @@ -1896,7 +1937,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, for(a = p->target_list; a; a=a->next_target) { (void)delegpt_add_addr(iq->dp, qstate->region, &a->addr, a->addrlen, a->bogus, - a->lame, a->tls_auth_name); + a->lame, a->tls_auth_name, NULL); } } iq->dp->has_parent_side_NS = 1; @@ -1913,6 +1954,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, iq->refetch_glue = 1; iq->query_restart_count++; iq->sent_count = 0; + iq->dp_target_count = 0; if(qstate->env->cfg->qname_minimisation) iq->minimisation_state = INIT_MINIMISE_STATE; return next_state(iq, INIT_REQUEST_STATE); @@ -2078,7 +2120,7 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) iq->dsns_point, LDNS_RR_TYPE_NS, iq->qchase.qclass); if(!generate_sub_request(iq->dsns_point, iq->dsns_point_len, LDNS_RR_TYPE_NS, iq->qchase.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) { errinf_dname(qstate, "for DS query parent-child nameserver search, could not generate NS lookup for", iq->dsns_point); return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -2136,6 +2178,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, errinf(qstate, "exceeded the maximum number of sends"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } + if(iq->target_count && iq->target_count[2] > MAX_TARGET_NX) { + verbose(VERB_QUERY, "request has exceeded the maximum " + " number of nxdomain nameserver lookups with %d", + iq->target_count[2]); + errinf(qstate, "exceeded the maximum nameserver nxdomains"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ @@ -2240,12 +2289,41 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->qinfo_out.qtype, iq->qinfo_out.qclass, qstate->query_flags, qstate->region, qstate->env->scratch, 0); - if(msg && msg->rep->an_numrrsets == 0 - && FLAGS_GET_RCODE(msg->rep->flags) == + if(msg && FLAGS_GET_RCODE(msg->rep->flags) == LDNS_RCODE_NOERROR) /* no need to send query if it is already - * cached as NOERROR/NODATA */ + * cached as NOERROR */ return 1; + if(msg && FLAGS_GET_RCODE(msg->rep->flags) == + LDNS_RCODE_NXDOMAIN && + qstate->env->need_to_validate && + qstate->env->cfg->harden_below_nxdomain) { + if(msg->rep->security == sec_status_secure) { + iq->response = msg; + return final_state(iq); + } + if(msg->rep->security == sec_status_unchecked) { + struct module_qstate* subq = NULL; + if(!generate_sub_request( + iq->qinfo_out.qname, + iq->qinfo_out.qname_len, + iq->qinfo_out.qtype, + iq->qinfo_out.qclass, + qstate, id, iq, + INIT_REQUEST_STATE, + FINISHED_STATE, &subq, 1, 1)) + verbose(VERB_ALGO, + "could not validate NXDOMAIN " + "response"); + } + } + if(msg && FLAGS_GET_RCODE(msg->rep->flags) == + LDNS_RCODE_NXDOMAIN) { + /* return and add a label in the next + * minimisation iteration. + */ + return 1; + } } } if(iq->minimisation_state == SKIP_MINIMISE_STATE) { @@ -2321,6 +2399,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, * generated query will immediately be discarded due to depth and * that servfail is cached, which is not good as opportunism goes. */ if(iq->depth < ie->max_dependency_depth + && iq->num_target_queries == 0 + && (!iq->target_count || iq->target_count[2]==0) && iq->sent_count < TARGET_FETCH_STOP) { tf_policy = ie->target_fetch_policy[iq->depth]; } @@ -2366,6 +2446,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries++; /* RespState decrements it*/ iq->referral_count++; /* make sure we don't loop */ iq->sent_count = 0; + iq->dp_target_count = 0; iq->state = QUERY_RESP_STATE; return 1; } @@ -2453,6 +2534,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries++; /* RespState decrements it*/ iq->referral_count++; /* make sure we don't loop */ iq->sent_count = 0; + iq->dp_target_count = 0; iq->state = QUERY_RESP_STATE; return 1; } @@ -2748,7 +2830,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* Make subrequest to validate intermediate * NXDOMAIN if harden-below-nxdomain is * enabled. */ - if(qstate->env->cfg->harden_below_nxdomain) { + if(qstate->env->cfg->harden_below_nxdomain && + qstate->env->need_to_validate) { struct module_qstate* subq = NULL; log_query_info(VERB_QUERY, "schedule NXDOMAIN validation:", @@ -2760,16 +2843,10 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->response->qinfo.qclass, qstate, id, iq, INIT_REQUEST_STATE, - FINISHED_STATE, &subq, 1)) + FINISHED_STATE, &subq, 1, 1)) verbose(VERB_ALGO, "could not validate NXDOMAIN " "response"); - outbound_list_clear(&iq->outlist); - iq->num_current_queries = 0; - fptr_ok(fptr_whitelist_modenv_detach_subs( - qstate->env->detach_subs)); - (*qstate->env->detach_subs)(qstate); - iq->num_target_queries = 0; } } return next_state(iq, QUERYTARGETS_STATE); @@ -2853,6 +2930,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* Count this as a referral. */ iq->referral_count++; iq->sent_count = 0; + iq->dp_target_count = 0; /* see if the next dp is a trust anchor, or a DS was sent * along, indicating dnssec is expected for next zone */ iq->dnssec_expected = iter_indicates_dnssec(qstate->env, @@ -2929,6 +3007,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->dsns_point = NULL; iq->auth_zone_response = 0; iq->sent_count = 0; + iq->dp_target_count = 0; if(iq->minimisation_state != MINIMISE_STATE) /* Only count as query restart when it is not an extra * query as result of qname minimisation. */ @@ -3121,7 +3200,7 @@ processPrimeResponse(struct module_qstate* qstate, int id) if(!generate_sub_request(qstate->qinfo.qname, qstate->qinfo.qname_len, qstate->qinfo.qtype, qstate->qinfo.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { verbose(VERB_ALGO, "could not generate prime check"); } generate_a_aaaa_check(qstate, iq, id); @@ -3149,6 +3228,7 @@ static void processTargetResponse(struct module_qstate* qstate, int id, struct module_qstate* forq) { + struct iter_env* ie = (struct iter_env*)qstate->env->modinfo[id]; struct iter_qstate* iq = (struct iter_qstate*)qstate->minfo[id]; struct iter_qstate* foriq = (struct iter_qstate*)forq->minfo[id]; struct ub_packed_rrset_key* rrset; @@ -3186,7 +3266,7 @@ processTargetResponse(struct module_qstate* qstate, int id, log_rrset_key(VERB_ALGO, "add parentside glue to dp", iq->pside_glue); if(!delegpt_add_rrset(foriq->dp, forq->region, - iq->pside_glue, 1)) + iq->pside_glue, 1, NULL)) log_err("out of memory adding pside glue"); } @@ -3197,6 +3277,7 @@ processTargetResponse(struct module_qstate* qstate, int id, * response type was ANSWER. */ rrset = reply_find_answer_rrset(&iq->qchase, qstate->return_msg->rep); if(rrset) { + int additions = 0; /* if CNAMEs have been followed - add new NS to delegpt. */ /* BTW. RFC 1918 says NS should not have got CNAMEs. Robust. */ if(!delegpt_find_ns(foriq->dp, rrset->rk.dname, @@ -3208,13 +3289,23 @@ processTargetResponse(struct module_qstate* qstate, int id, } /* if dpns->lame then set the address(es) lame too */ if(!delegpt_add_rrset(foriq->dp, forq->region, rrset, - dpns->lame)) + dpns->lame, &additions)) log_err("out of memory adding targets"); + if(!additions) { + /* no new addresses, increase the nxns counter, like + * this could be a list of wildcards with no new + * addresses */ + target_count_increase_nx(foriq, 1); + } verbose(VERB_ALGO, "added target response"); delegpt_log(VERB_ALGO, foriq->dp); } else { verbose(VERB_ALGO, "iterator TargetResponse failed"); + delegpt_mark_neg(dpns, qstate->qinfo.qtype); dpns->resolved = 1; /* fail the target */ + if((dpns->got4 == 2 || !ie->supports_ipv4) && + (dpns->got6 == 2 || !ie->supports_ipv6)) + target_count_increase_nx(foriq, 1); } } @@ -3388,7 +3479,7 @@ processCollectClass(struct module_qstate* qstate, int id) qstate->qinfo.qname_len, qstate->qinfo.qtype, c, qstate, id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, - (int)!(qstate->query_flags&BIT_CD))) { + (int)!(qstate->query_flags&BIT_CD), 0)) { errinf(qstate, "could not generate class ANY" " lookup query"); return error_response(qstate, id, diff --git a/iterator/iterator.h b/iterator/iterator.h index 26ff39559..342ac207e 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -55,6 +55,11 @@ struct rbtree_type; /** max number of targets spawned for a query and its subqueries */ #define MAX_TARGET_COUNT 64 +/** max number of target lookups per qstate, per delegation point */ +#define MAX_DP_TARGET_COUNT 16 +/** max number of nxdomains allowed for target lookups for a query and + * its subqueries */ +#define MAX_TARGET_NX 5 /** max number of query restarts. Determines max number of CNAME chain. */ #define MAX_RESTART_COUNT 8 /** max number of referrals. Makes sure resolver does not run away */ @@ -305,9 +310,14 @@ struct iter_qstate { int sent_count; /** number of target queries spawned in [1], for this query and its - * subqueries, the malloced-array is shared, [0] refcount. */ + * subqueries, the malloced-array is shared, [0] refcount. + * in [2] the number of nxdomains is counted. */ int* target_count; + /** number of target lookups per delegation point. Reset to 0 after + * receiving referral answer. Not shared with subqueries. */ + int dp_target_count; + /** if true, already tested for ratelimiting and passed the test */ int ratelimit_ok; diff --git a/libunbound/unbound.h b/libunbound/unbound.h index ca9592d62..b53426c76 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -642,6 +642,7 @@ struct ub_shm_stat_info { long long respip; long long dnscrypt_shared_secret; long long dnscrypt_nonce; + long long dynlib; } mem; }; diff --git a/services/cache/dns.c b/services/cache/dns.c index 2a5bca4ac..7b6e142c9 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -273,7 +273,7 @@ find_add_addrs(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_A, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_A(dp, region, akey, 0)) { + if(!delegpt_add_rrset_A(dp, region, akey, 0, NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } @@ -293,7 +293,7 @@ find_add_addrs(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_AAAA, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_AAAA(dp, region, akey, 0)) { + if(!delegpt_add_rrset_AAAA(dp, region, akey, 0, NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } @@ -327,7 +327,8 @@ cache_fill_missing(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_A, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_A(dp, region, akey, ns->lame)) { + if(!delegpt_add_rrset_A(dp, region, akey, ns->lame, + NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } @@ -347,7 +348,8 @@ cache_fill_missing(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_AAAA, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_AAAA(dp, region, akey, ns->lame)) { + if(!delegpt_add_rrset_AAAA(dp, region, akey, ns->lame, + NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 51d5a3fdb..cc56d3fd3 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -884,11 +884,11 @@ set_ip_dscp(int socket, int addrfamily, int dscp) ds = dscp << 2; switch(addrfamily) { case AF_INET6: - if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, &ds, sizeof(ds)) < 0) + if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, (void*)&ds, sizeof(ds)) < 0) return sock_strerror(errno); break; default: - if(setsockopt(socket, IPPROTO_IP, IP_TOS, &ds, sizeof(ds)) < 0) + if(setsockopt(socket, IPPROTO_IP, IP_TOS, (void*)&ds, sizeof(ds)) < 0) return sock_strerror(errno); break; } diff --git a/services/mesh.c b/services/mesh.c index 4bc4341c4..4b0c5db41 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1296,7 +1296,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, void mesh_query_done(struct mesh_state* mstate) { - struct mesh_reply* r, *reply_list = NULL; + struct mesh_reply* r; struct mesh_reply* prev = NULL; struct sldns_buffer* prev_buffer = NULL; struct mesh_cb* c; @@ -1320,27 +1320,7 @@ void mesh_query_done(struct mesh_state* mstate) free(err); } } - if(mstate->reply_list) { - /* set the reply_list to NULL during the mesh_query_done - * processing, so that calls back into the mesh from - * tcp_req_info (deciding to drop the reply and thus - * unregister the mesh_reply from the mstate) are stopped - * because the list is empty. - * The mstate is then likely not a reply_state, and maybe - * also a detached_state. - */ - reply_list = mstate->reply_list; - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list) { - /* was a reply state, not anymore */ - log_assert(mstate->s.env->mesh->num_reply_states > 0); - mstate->s.env->mesh->num_reply_states--; - } - if(!mstate->reply_list && !mstate->cb_list && - mstate->super_set.count == 0) - mstate->s.env->mesh->num_detached_states++; - } - for(r = reply_list; r; r = r->next) { + for(r = mstate->reply_list; r; r = r->next) { /* if a response-ip address block has been stored the * information should be logged for each client. */ if(mstate->s.respip_action_info && @@ -1364,15 +1344,31 @@ void mesh_query_done(struct mesh_state* mstate) /* if this query is determined to be dropped during the * mesh processing, this is the point to take that action. */ if(mstate->s.is_drop) { + /* briefly set the reply_list to NULL, so that the + * tcp req info cleanup routine that calls the mesh + * to deregister the meshstate for it is not done + * because the list is NULL and also accounting is not + * done there, but instead we do that here. */ + struct mesh_reply* reply_list = mstate->reply_list; + mstate->reply_list = NULL; comm_point_drop_reply(&r->query_reply); + mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; + struct mesh_reply* rlist = mstate->reply_list; if(r->query_reply.c->tcp_req_info) { r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; prev_buffer = NULL; } + /* briefly set the replylist to null in case the + * meshsendreply calls tcpreqinfo sendreply that + * comm_point_drops because of size, and then the + * null stops the mesh state remove and thus + * reply_list modification and accounting */ + mstate->reply_list = NULL; mesh_send_reply(mstate, mstate->s.return_rcode, rep, r, r_buffer, prev, prev_buffer); + mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) { tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); r_buffer = NULL; @@ -1381,6 +1377,17 @@ void mesh_query_done(struct mesh_state* mstate) prev_buffer = r_buffer; } } + if(mstate->reply_list) { + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list) { + /* was a reply state, not anymore */ + log_assert(mstate->s.env->mesh->num_reply_states > 0); + mstate->s.env->mesh->num_reply_states--; + } + if(!mstate->reply_list && !mstate->cb_list && + mstate->super_set.count == 0) + mstate->s.env->mesh->num_detached_states++; + } mstate->replies_sent = 1; while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be @@ -1875,7 +1882,7 @@ mesh_serve_expired_callback(void* arg) { struct mesh_state* mstate = (struct mesh_state*) arg; struct module_qstate* qstate = &mstate->s; - struct mesh_reply* r; + struct mesh_reply* r, *rlist; struct mesh_area* mesh = qstate->env->mesh; struct dns_msg* msg; struct mesh_cb* c; @@ -1958,16 +1965,7 @@ mesh_serve_expired_callback(void* arg) if(verbosity >= VERB_ALGO) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); - r = mstate->reply_list; - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { - log_assert(mesh->num_reply_states > 0); - mesh->num_reply_states--; - if(mstate->super_set.count == 0) { - mesh->num_detached_states++; - } - } - for(; r; r = r->next) { + for(r = mstate->reply_list; r; r = r->next) { /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ if(actinfo.addrinfo) { @@ -1989,8 +1987,15 @@ mesh_serve_expired_callback(void* arg) r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; + /* briefly set the replylist to null in case the meshsendreply + * calls tcpreqinfo sendreply that comm_point_drops because + * of size, and then the null stops the mesh state remove and + * thus reply_list modification and accounting */ + rlist = mstate->reply_list; + mstate->reply_list = NULL; mesh_send_reply(mstate, LDNS_RCODE_NOERROR, msg->rep, r, r_buffer, prev, prev_buffer); + mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); prev = r; @@ -2000,6 +2005,16 @@ mesh_serve_expired_callback(void* arg) mesh->ans_expired++; } + if(mstate->reply_list) { + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list) { + log_assert(mesh->num_reply_states > 0); + mesh->num_reply_states--; + if(mstate->super_set.count == 0) { + mesh->num_detached_states++; + } + } + } while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be * changed, eg. by adds from the callback routine */ diff --git a/services/modstack.c b/services/modstack.c index 68e592814..a600549b1 100644 --- a/services/modstack.c +++ b/services/modstack.c @@ -51,6 +51,9 @@ #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef WITH_DYNLIBMODULE +#include "dynlibmod/dynlibmod.h" +#endif #ifdef USE_CACHEDB #include "cachedb/cachedb.h" #endif @@ -140,6 +143,9 @@ module_list_avail(void) #ifdef WITH_PYTHONMODULE "python", #endif +#ifdef WITH_DYNLIBMODULE + "dynlib", +#endif #ifdef USE_CACHEDB "cachedb", #endif @@ -171,6 +177,9 @@ module_funcs_avail(void) #ifdef WITH_PYTHONMODULE &pythonmod_get_funcblock, #endif +#ifdef WITH_DYNLIBMODULE + &dynlibmod_get_funcblock, +#endif #ifdef USE_CACHEDB &cachedb_get_funcblock, #endif diff --git a/sldns/parseutil.c b/sldns/parseutil.c index 82dbc0fe1..3515d64c5 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -167,7 +167,7 @@ sldns_gmtime64_r(int64_t clock, struct tm *result) static int64_t sldns_serial_arithmetics_time(int32_t time, time_t now) { - int32_t offset = time - (int32_t) now; + int32_t offset = (int32_t)((uint32_t) time - (uint32_t) now); return (int64_t) now + offset; } diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 3fc638cae..0cf348add 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -58,6 +58,7 @@ #include "services/authzone.h" #include "respip/respip.h" #include "sldns/sbuffer.h" +#include "sldns/str2wire.h" #ifdef HAVE_GETOPT_H #include #endif @@ -194,6 +195,94 @@ localzonechecks(struct config_file* cfg) local_zones_delete(zs); } +/** checks for acl and views */ +static void +acl_view_tag_checks(struct config_file* cfg, struct views* views) +{ + int d; + struct sockaddr_storage a; + socklen_t alen; + struct config_str2list* acl; + struct config_str3list* s3; + struct config_strbytelist* sb; + + /* acl_view */ + for(acl=cfg->acl_view; acl; acl = acl->next) { + struct view* v; + if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-view " + "address %s %s", acl->str, acl->str2); + } + v = views_find_view(views, acl->str2, 0); + if(!v) { + fatal_exit("cannot find view for " + "access-control-view: %s %s", + acl->str, acl->str2); + } + lock_rw_unlock(&v->lock); + } + + /* acl_tags */ + for(sb=cfg->acl_tags; sb; sb = sb->next) { + if(!netblockstrtoaddr(sb->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tags " + "address %s", sb->str); + } + } + + /* acl_tag_actions */ + for(s3=cfg->acl_tag_actions; s3; s3 = s3->next) { + enum localzone_type t; + if(!netblockstrtoaddr(s3->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tag-actions " + "address %s %s %s", + s3->str, s3->str2, s3->str3); + } + if(find_tag_id(cfg, s3->str2) == -1) { + fatal_exit("cannot parse tag %s (define-tag it), " + "for access-control-tag-actions: %s %s %s", + s3->str2, s3->str, s3->str2, s3->str3); + } + if(!local_zone_str2type(s3->str3, &t)) { + fatal_exit("cannot parse access control action type %s" + " for access-control-tag-actions: %s %s %s", + s3->str3, s3->str, s3->str2, s3->str3); + } + } + + /* acl_tag_datas */ + for(s3=cfg->acl_tag_datas; s3; s3 = s3->next) { + char buf[65536]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len = sizeof(rr); + int res; + if(!netblockstrtoaddr(s3->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tag-datas address %s %s '%s'", + s3->str, s3->str2, s3->str3); + } + if(find_tag_id(cfg, s3->str2) == -1) { + fatal_exit("cannot parse tag %s (define-tag it), " + "for access-control-tag-datas: %s %s '%s'", + s3->str2, s3->str, s3->str2, s3->str3); + } + /* '.' is sufficient for validation, and it makes the call to + * sldns_wirerr_get_type() simpler below. */ + snprintf(buf, sizeof(buf), "%s %s", ".", s3->str3); + res = sldns_str2wire_rr_buf(buf, rr, &len, NULL, 3600, NULL, + 0, NULL, 0); + if(res != 0) { + fatal_exit("cannot parse rr data [char %d] parse error %s, for access-control-tag-datas: %s %s '%s'", + (int)LDNS_WIREPARSE_OFFSET(res)-2, + sldns_get_errorstr_parse(res), + s3->str, s3->str2, s3->str3); + } + } +} + /** check view and response-ip configuration */ static void view_and_respipchecks(struct config_file* cfg) @@ -211,6 +300,7 @@ view_and_respipchecks(struct config_file* cfg) fatal_exit("Could not setup respip set"); if(!respip_views_apply_cfg(views, cfg, &ignored)) fatal_exit("Could not setup per-view respip sets"); + acl_view_tag_checks(cfg, views); views_delete(views); respip_set_delete(respip); } @@ -569,6 +659,64 @@ morechecks(struct config_file* cfg) && strcmp(cfg->module_conf, "python dns64 iterator") != 0 && strcmp(cfg->module_conf, "python dns64 validator iterator") != 0 #endif +#ifdef WITH_DYNLIBMODULE + && strcmp(cfg->module_conf, "dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip iterator") != 0 + && strcmp(cfg->module_conf, "dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip validator iterator") != 0 + && strcmp(cfg->module_conf, "validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dns64 validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "validator cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip validator cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "validator dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "respip validator dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip subnetcache dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "respip subnetcache dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip subnetcache validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod respip iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib respip iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod respip validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod respip validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib respip validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod respip validator dynlib iterator") != 0 +#endif #ifdef USE_CACHEDB && strcmp(cfg->module_conf, "validator cachedb iterator") != 0 && strcmp(cfg->module_conf, "respip validator cachedb iterator") != 0 diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 4e5ce1e4b..c2b42e951 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -268,6 +268,9 @@ static void print_mem(struct ub_shm_stat_info* shm_stat, #ifdef USE_IPSECMOD PR_LL("mem.mod.ipsecmod", shm_stat->mem.ipsecmod); #endif +#ifdef WITH_DYNLIBMODULE + PR_LL("mem.mod.dynlib", shm_stat->mem.dynlib); +#endif #ifdef USE_DNSCRYPT PR_LL("mem.cache.dnscrypt_shared_secret", shm_stat->mem.dnscrypt_shared_secret); diff --git a/testcode/run_vm.sh b/testcode/run_vm.sh index d14c63742..5f599e144 100644 --- a/testcode/run_vm.sh +++ b/testcode/run_vm.sh @@ -26,12 +26,17 @@ cd testdata TPKG=../testcode/mini_tdir.sh #RUNLIST=`(ls -1d *.tdir|grep -v '^0[016]')` RUNLIST=`(ls -1d *.tdir)` -if test "$#" = "1"; then RUNLIST="$1"; fi +if test "$#" = "1"; then + RUNLIST="$1"; + if echo "$RUNLIST" | grep '/$' >/dev/null; then + RUNLIST=`echo "$RUNLIST" | sed -e 's?/$??'` + fi +fi # fix up tdir that was edited on keyboard interrupt. cleanup() { echo cleanup - if test -f "$t.bak"; then mv "$t.bak" "$t"; fi + if test -f "$t.bak"; then rm -fr "${t}"; mv "$t.bak" "$t"; fi exit 0 } trap cleanup INT diff --git a/testdata/09-unbound-control.tdir/bad_control.key b/testdata/09-unbound-control.tdir/bad_control.key index d29cdbc91..84d3883ed 100644 --- a/testdata/09-unbound-control.tdir/bad_control.key +++ b/testdata/09-unbound-control.tdir/bad_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/bad_control.pem b/testdata/09-unbound-control.tdir/bad_control.pem index e06b84720..0785acaeb 100644 --- a/testdata/09-unbound-control.tdir/bad_control.pem +++ b/testdata/09-unbound-control.tdir/bad_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt -i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva -UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x -nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK -4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH -5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +MIIDszCCAhsCFEm6EpzKglG+V66IyIlx6Q2y3y8nMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMzA3WhcNNDAwMzI1MTMzMzA3 +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQC3/c89kYzt5J0KcRDTh/pj5eeanXTmC3GqgfEd/IYUbyWM +1J1PWEoGOuDUFFWzNOD5N3lX5ji8AdbbkS2+6+DQNAE0Mq2sxNNtNkpBtPoDteDK +njY6PwTJcVazwE3H+OgjWwAxSIKM8qkoAjlsgdXXwi3ifbwxdZNVfmZ/ByPzZc9N +CU7o6FNe0DjmJ08sUqQKngfzv0Qh8ijWx+T45MuOhI0tcU3cGgj0IhPpZkqtjSkC +J4uN2i1KWKvH9SnCmiMCnohXHONnY8ecllsHAfFU9ifKwyiBwpD0LIvWMFPamFZV +7YlgkXDAaDOIkfkIkQZWBaRy0S2C4q5vNIIh/1G5fqP+ffZlG0B5yGbY6LZbDEav +20W7MteBiy78xD4CHNwU/UwQaXIKTIvZ/GAOvLfhGrtFVBAv0+iWEFiTaithOWyM +JVGQbNe+kUgXw48MQSxfPZNMzaeSIKVrUaqwZcvfG48WMYP4IQwjmMHtT6PW4vb7 +Fv+BVQwDG+k0cANxbX8CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEATI+xHWEiq3SK +9Dw2FBiD7GPaaPAh/u5h+QxaLS9G5a6Djh6F9RT3To+gRVeiaAaIPg53asGM5TGR +ojv9nI8cIvi3dL6VKhHSdomldFjfQYmF/uSKEYsHaggceGE/GsG8J8g79HXGRp2y +m5hkACKFh5ZcSHeJBplv7agDbBZ6w5qQaY6QsnYLrAK7B3Jo1Xx+JEKzmgnp4TwV +Ni4wezgLiG+buJ5lXEYr2Rm7HR/cxLRN7CFrpUoavFUvqLKNpXO8MJFx+BkO5/JT +pgv0O/ll9aT+kuegUpf9kcUzhpsw1N4W/JzZOyJAdxrrQ88aNZm+7d433wDBt/WF +BCV4d5wEASxfQALEQa+/1FebIsDfQyBAOHdTAVkupZ00oeNerKe+mHFmNjj04vn8 +LwGgVuADCBJVCDhEqHLEXUqiGeSHJhAJO9pjma7r7H81OtAs/xVC8j8hqe8wLBKg +XNjWQ9QmNXt9VVQCMomro9lmoDozr9k1vsGtUsT3yQEAABQYwIjp -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/bad_server.key b/testdata/09-unbound-control.tdir/bad_server.key index 0dbb134b5..d64d05bf5 100644 --- a/testdata/09-unbound-control.tdir/bad_server.key +++ b/testdata/09-unbound-control.tdir/bad_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/bad_server.pem b/testdata/09-unbound-control.tdir/bad_server.pem index 983247ac7..b81fb19f2 100644 --- a/testdata/09-unbound-control.tdir/bad_server.pem +++ b/testdata/09-unbound-control.tdir/bad_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B -RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ -DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV -Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy -zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm -O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu -oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +MIIDqzCCAhMCFFzmVNbhjiApmjK3VeO/j9TBp8yOMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMzA3WhcNNDAwMzI1MTMzMzA3 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAr7FId+AlZUWP6MK9xfV0hJ9ooJdcL0sm9yZsWY4UYOlqcTGERah/XvQm +sOaKcMg8Wof24LAvo2vmariBYZoS61AAi6MeHHrPh8M2ZDMZQgW4nZC8A0biro93 +nMLU1VxgycSVmj29p18IdNzsYWxC7t+/6AWQSlwD+9YFOYrVWQYxEcSZ7gZqoh08 +mDsNRjnVs7nagPAbk/B9jj9zhvgp+0d5h25Ms7Td22t7DfsGlL8Ei3ewFwaqjThh +hVHEVwARBLYGb2ZsZS5EMJv2W/V0k6yQZ+rV07+i0oZQ0cGxOuUy9TNO7HfiI4ri +2x26Wm0YH1qgK5miUIAkbL2E/iWVxMfQOdEAZuOmUpUFOFpm/XHL1/pCyiqOb98j +jLE93UoNPZdsjrbjfQ/WPkap+vtigVZJJPet6F9x4S5XvrhXkV2JWIYMvhnrs9Np +veCOe1lcxNVSsIAtMxsZKi2dIq+mRhfm9/UGoOmj8UxIQUepJJv1IHcdASWkTAMm +USyF7z7DAgMBAAEwDQYJKoZIhvcNAQELBQADggGBAG+IhOsdEiaVCOB8PBRGJQ8F +/kyeQOtE7pPPkH57qYwAW9cxdSoiIxrvase30IGLWmOzjiAc/igf1qz/bVpwFXQr +XohzyeQJ2znlGzUbo67c8rocvWxHzvZwFuQEysJp/E9ft5kiWwoU/xVpoK5p9sxW +zRTTdpA24x6rqvk1ZFzwWGSg0yhjOYfwvwg3kGCbwe3GzAk1J65E+uJPFoLySbNL +p3eUDA2rUKDjVobJOEhtV8k/l+hB0kKwiz/A2sbMT/OoByWMNFKSkmDbNi5m5gJH +FHsZsucbL6ppLy7fmOiPlx6xejbiTR3uAn0aQImdHA5kyfAXLKhTkyYdjWHiHqdQ +XMxi0Ci7/HO9mRupbcjRZEPs//ozMxjOAg4VNasDLdnDI4EKrClqYPjsfoXXXiZf +YTPH9QypxJFGmGEH865BNacEjDBeag8ck1ZTiK/GlrAJMqfV5/60GWBGRQVV/Tvd +WXWY2x0gVp2fxtxF8JCvHKAcfUg2+LrUS7fbMx2Niw== -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/unbound_control.key b/testdata/09-unbound-control.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/09-unbound-control.tdir/unbound_control.key +++ b/testdata/09-unbound-control.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/unbound_control.pem b/testdata/09-unbound-control.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/09-unbound-control.tdir/unbound_control.pem +++ b/testdata/09-unbound-control.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/unbound_server.key b/testdata/09-unbound-control.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/09-unbound-control.tdir/unbound_server.key +++ b/testdata/09-unbound-control.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/unbound_server.pem b/testdata/09-unbound-control.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/09-unbound-control.tdir/unbound_server.pem +++ b/testdata/09-unbound-control.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/test_cert.pem b/testdata/10-unbound-anchor.tdir/keys/test_cert.pem index 6e588a4ab..1db9680cb 100644 --- a/testdata/10-unbound-anchor.tdir/keys/test_cert.pem +++ b/testdata/10-unbound-anchor.tdir/keys/test_cert.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICWTCCAYKgAwIBAgIJAN5YIkuCvJf5MA0GCSqGSIb3DQEBBQUAMCYxDjAMBgNV -BAMTBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0xMzAxMTcxMTUyNDVa -Fw0zMjEwMDQxMTUyNDVaMCYxDjAMBgNVBAMTBXBldGFsMRQwEgYJKoZIhvcNAQkB -FgVwZXRhbDCB3zANBgkqhkiG9w0BAQEFAAOBzQAwgckCgcEAuPBoYZiFOuk2SnN0 -IsheC+W7JvAJcv8tksyz/hgAnqStDnDrQ4trF607aCQ7xjj2fSAqpiMvLv0P3Ctu -rcTRHmRXApS3GBf1PjWqoxMK8JBxCIHN4PKpyq4czOtSPH6AFlU+3KsRRwymLgpT -SE15NYv/2M6Z3/cL1SkOdVvVDrZv1gO4OCAxwrgI6HMsjQtwe16mGsBQzrHTCOGV -u4QtISEUDrwZL272PFsZrEpHXd9LtSpqCEoOMujr54pKxBEJAgMBAAGjDzANMAsG -A1UdDwQEAwIChDANBgkqhkiG9w0BAQUFAAOBwQCaA3ys5hDPMNV1oXIxH6u2KfAX -C9tYJId/SR0x8whsZuNaSEZAgImdM5dnyWdjey8Pio772E9/F2aUBGFkdadZx4My -d7hBfEi/NECEKs86k9g0ijbin41NKtnajb6GwyNQ9vDx7Z5FS8BZ3CD0BZIdCQUE -gKuDSWBROQU3tqrjdk2QTwGQkj2mgzT871Jn1MwZw0mczPjS1y469Ejym8wi3uCd -EboDOoGBCpmUQbxBv6JI75cUCdmNNEwjQjZ0XQw= +MIICZDCCAY2gAwIBAgIURC8vM7SbxPTMmosTyBzLlqxgsUAwDQYJKoZIhvcNAQEF +BQAwJjEOMAwGA1UEAwwFcGV0YWwxFDASBgkqhkiG9w0BCQEWBXBldGFsMB4XDTIw +MDcwODE0MDk0MloXDTQwMDMyNTE0MDk0MlowJjEOMAwGA1UEAwwFcGV0YWwxFDAS +BgkqhkiG9w0BCQEWBXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC4 +8GhhmIU66TZKc3QiyF4L5bsm8Aly/y2SzLP+GACepK0OcOtDi2sXrTtoJDvGOPZ9 +ICqmIy8u/Q/cK26txNEeZFcClLcYF/U+NaqjEwrwkHEIgc3g8qnKrhzM61I8foAW +VT7cqxFHDKYuClNITXk1i//Yzpnf9wvVKQ51W9UOtm/WA7g4IDHCuAjocyyNC3B7 +XqYawFDOsdMI4ZW7hC0hIRQOvBkvbvY8WxmsSkdd30u1KmoISg4y6OvnikrEEQkC +AwEAAaMPMA0wCwYDVR0PBAQDAgKEMA0GCSqGSIb3DQEBBQUAA4HBAHX0rIirg2Rt ++rp7BnR3riq81b0cWm4Y/UUdGmLtbPTJLuZogfLZhb9hf+185ub/8ZbuwuUFaiUY +zEcAjaOlPjBeRbNku1xnAVhlgtCIsCOyI37Ey+65OuJxL+0Rpwsyfh0WuR8SdBE5 +OdJ2DuH2yRkTd2JEsNi+DZVIEeaKwXtLGUvsqYWu0GrnXORwGsezfiLM4uAJW+tp +VA95CKpfS98l1MJIHtlcpffAjfRVZAJnGcXv+P/DtefC8aNukoiqvA== -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup b/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup index 3e5931199..2492f47b4 100755 --- a/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup +++ b/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup @@ -46,7 +46,7 @@ CLIENTNAME=unbound-anchor DAYS=7200 # size of keys in bits -BITS=1536 +BITS=3072 # hash algorithm HASH=sha1 diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_control.key b/testdata/10-unbound-anchor.tdir/keys/unbound_control.key index 47d15dd37..68b514f83 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_control.key +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_control.key @@ -1,21 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIDfAIBAAKBwQC2p0MTVVEfvOpaWlI6rLKGxaHfw/4JUxXCwDHRkkyB0hkISRMx -8imB+io0aY2Uck9zl0BTgPaKtFeA0+lukZk75keOuATPFZwbCGs+6Tx5AoN4+NzI -aVay5AuO8E1u6AVdmcAqByP+R92yz5f3T93/cSsYzqPZ6Y1wO9sabtrkGTYwnfMg -nSttyvlBIhRDWbEO+rWL2CCi0JtrnpiK8sa2ysQCq9Y6ZiGjT9PEWIZwkxQ6y5TI -WVtyitoknpDheZcCAwEAAQKBwAgeXSPh2e5ANmZ3t0n2XSUSacSJcKQ3djMm2dAH -4bCvhv9QSDMjIWcumGul+W4Muq1XnrtXcx3tMCqAwNJyVE5OSQX19fjCbCLjd+je -8xop23AoF6As1nazHjRnR/nTBD7QNx2xbaW8RNbaGpTe2G2lpdbg9myRpyqiB8Pk -73x/AQcPqm4SHBJS+kU/Q9k9yZRHGQ/PhYlvAmY0SCndew28Pcs+IdCI32k7e/aP -SCEQvVqKeIiSJ0Zj8RSk8Pz1cQJhANtNsvcEa2V8NxI9yL2zwvBXwoBuU+d9Pszt -Ooqc/kmvU0FV06HgiIPtTSoHLI7Zh9h5Xn4DFGmtS8WeGhwSVCN1iwcW9F2ldgAw -LXcoXjEK21KXYFNAYeo07vul/Ly/yQJhANU3lM8hAqq7FB4R5zgUCcp08FOVA8tl -kEK1JoAdfp6Wv4M2xGJ6tmKcf92r0F8zBDV6oZX/dtPwFzWhBZUi+zaA8PcEqbwt -CJtmM5ycoX6kkkIfXtAVNZiTIYHn01beXwJgQBFA+V03KtzREeku3gzIJILe9bpF -lNlIIYIkmh4nQ8uOnQW/4AjCmRgYdPDHmav/PcSnUFUB/6V6/26i3hSUtA9A4H9a -QIl4IbHxdmA6tEUhsc07fNbQRCXWs3nYjiPRAmEAjDe4MhsYYOUUzs2hTFzJL46F -ucHGtA0/uM7e2eQLsAmdOpJaxhTDOsiGwmXKa8DmJLFX8IgHQkujR850GGbf5DEZ -xqkXYrwO6/tjN7w97EYYNUniFV/NVmBz6bVmY7trAmAvvg7MoBlb/o6nwoCQqnUM -QyjIy9A0t8+KHNMFSQwUldG+HIwiU4/7y2zCqBYJg8NOjrdj/3+73A24rP8wRp15 -zqQCS7mLLWmYx7pWE1ZHN8eY3xGoHmr7LzlB+dzYG+w= +MIIG4gIBAAKCAYEAzDESJ2lpIno7KpSrYBeBshT8H5dbtNF9rVBONsCmwSSqclLR +ixZ62OKrUKMVCEpZ0zj4yZOu3DGTfL9V9pEk3dCD8mFmylidYeLh5GHGMcDVWOzD +VPsnQ9y43KWYeURpGy4QSCxYDb5rrPysleSZwuN5D4lbs/AKdpubAHj6z37Zbrs2 +GjofHp6TaD6ck7jyRXDtqShrnsVXq9U1CadYDOPiE4aZ1TvusRzhhjmDm8GQXalr +tIBJ5j5EcmRamFhONGLshfj5ECZrKo9L17kOd8PyRMaXNfvl2tpx1qtMxmp7FDpb +oGGIzP7F7hyaWMI/zAzkTMAtjGkAJWqHgTbSfvlVul23RLvovM3fD/ZiugBuTWY/ +CRpmN7CQFFV6iFyLGjRp8vV7BojUIQX7is8QTxSqW12SsElMXOuUmcCnuIaoGF4n +AoG6vNLFECtSdLTjQ0uXawIp7dOww4zS8j1/dZzXsVF4G4V7GjeWD8eX7n+HNWoc +3ojjuYzbWfWvLIQbAgMBAAECggGANUTD8KYuOEFc+BHK14mqWxPgZjltQjG4sKMX +lG8T0aVIFgUHB1r492XCvYmd7gi/gDwHo0a0wlromA2uVmGtFXTVR0EjuLv/as7u +kU70jnw47DbwClZu+uQ1EdLdgR1Ysi+FLd7rpcI8gudz+rKlblM7fNMfqkR/5ktX +13q4K7Ny89FBHvx0q99Ao1xaKquAAJ+iUJPr54KiCYDYkkkmzk4Q53kg3qEA9xGK +wCJ29AY+LEELiQ5CuR8baiBGBiJa5QegeThbQox0jBlezNWAMOg1seCchpbZ4tHm +zuM+IRjZ9GRgkxNctQu8nx3Z6QcClpNFW2WfdThI4nzjqvE9C2nQBR+i/a+v0D90 +bX3LbCcPBE5Hr6sdI+pSQ0C3eFOuGZaCdfRxVs6ymWti3STdlMtTgaEOsCswmU0e +DasWVYbezyPHImb34r0/q1ux4BZkxon1AqjLLYOCF5LQ91v868jdwOIITGL3gviN +/TYW0ObbJ3Szav860B9vlGUtG86JAoHBAPNcY2LLCVMWkzrsmkyLL8+MmF1dChsF +/rVt8QIiiStZkV2q3f3F522kVVvH3dYwh6MyzBNPFBAAXHmaY2IjczL3gKWEz0OA +YlKv5+KoEBlRtonJIHSs6GCjdnl6EJ9NyF8NHq/tgpab326Dpb7RyXzMv2EZV5uY +kp3WVqJZONa1xEHYud9SOA7TA3X/7td7bC49b07n0SidH2N93ZZMd+oApjsHx97q +9J1BxCbaJdPX7mK15pPPWD7vPZqsxyeSjQKBwQDWy+hH1jrr26UUAdIq6SgQxPXh +Y2+epVbHGD0UK51Io0rAg0m3Nlaxr28EPc/MLfjwzwPs6cHdM1j1FMqwGCYiO8mw +CV+XqPVDc6Xqzklf+awMqhn71j+M4Y4Dr6K71fXQ9ek5X+9I47I6iuVLOOegLm29 +qSlg/x1fOkQUKnJNQw6aEJmPj7mi6q693E+oa6hzVO160AGe4tAJoidaR7ifwKU1 +ySOhXtugs2I2P7lc07UtkIwftiYS69d1CRE2G0cCgcA41hj4F8dDuoAEQQIAYnl2 +FbX4CCS2Dv5fzR9+iiZTE4YZxDA4dqIIP1sYJmOvBIKJIPH8iHl9CziNxfr0Dqd2 +/crz3UKy1ycffKnBi9LGtwjUwT5tQXy8JTEkSdfb/MSRPnUuTWA0YI8cNm7dVA2k +sgT4XnzRgB6t8kMlg4T80FLXthAjEga5n5qtUmqrtM2dNwfp+8YjoB6Wk+zOj2lq +I2CvZK/PZjxfBd8T29r90O6B603As6o+eI2AtF2G5nkCgcAuhHBkhleyVpoUkCRk +2KOtpgod6rv0npgBfBVWNe/VGFALCyO+wszZpEWlpIFJFbew5xRRjXpHnmQoh30x +z7kKdupB7nW+UX/0QKpxBIXNfDOvdnM0H/0ZVIu97p6OkVKwE2GT5Fvc7DrgBM6N +kOBQx11K0sS8VeOViPfPajXg16Hk6a1n8tdgGfUH9xtlPRN5Dq5zh3KiZzpoq65c +FeY86qqc0FegDfwAfHjLiNdq7ApzuLcv8vGh7WN23CTXE+cCgcAhhnUawfKcOvwh +3+Tt+vX6dBU7x+JVUiaI27zirE4dbKAsNN8MY7hT5pEwYYArtS9szWqmce3VT8dN +t5kJdn0ZLh4tnZcWd8z+xTXjgxgKeSqoUqPjOd9V8f4ceiPeLGnDV/6xPiVdCrHi +/R/fLidzApQKg7kGDyB1IX0gW+9mT24/zD+M52TjRdmYL6E7/1nZlNlr2JWfIdb+ +RLg/+EujuZo36hR59XQVEnvuhZFQ+MQeHC82yP4gjG0ADpLQ3cY= -----END RSA PRIVATE KEY----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem b/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem index ec7cd7e78..e7fe79bc3 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem @@ -1,14 +1,19 @@ -----BEGIN CERTIFICATE----- -MIICNjCCAV8CCQCbt2WrJa/ewzANBgkqhkiG9w0BAQUFADAmMQ4wDAYDVQQDEwVw -ZXRhbDEUMBIGCSqGSIb3DQEJARYFcGV0YWwwHhcNMTMwMTE3MTE1MjQ1WhcNMzIx -MDA0MTE1MjQ1WjAZMRcwFQYDVQQDEw51bmJvdW5kLWFuY2hvcjCB3zANBgkqhkiG -9w0BAQEFAAOBzQAwgckCgcEAtqdDE1VRH7zqWlpSOqyyhsWh38P+CVMVwsAx0ZJM -gdIZCEkTMfIpgfoqNGmNlHJPc5dAU4D2irRXgNPpbpGZO+ZHjrgEzxWcGwhrPuk8 -eQKDePjcyGlWsuQLjvBNbugFXZnAKgcj/kfdss+X90/d/3ErGM6j2emNcDvbGm7a -5Bk2MJ3zIJ0rbcr5QSIUQ1mxDvq1i9ggotCba56YivLGtsrEAqvWOmYho0/TxFiG -cJMUOsuUyFlbcoraJJ6Q4XmXAgMBAAEwDQYJKoZIhvcNAQEFBQADgcEAhc3wYcbD -Uu9Osbu3bhbxLCkhedq/3weEO8RDU3AyB8diioAikagIOb99UeVE3WIds+JIPD6J -mK5UvS+lPR8SEOMRd0H91bEEp1Zn+gHAS/Z7k/x9t38Xk1N0jOnElc6n4vl42KLO -z2laJWcte7YXjzFjaNxP9fsGgEx1vRxcjtpXQWSY+oj+RVm5kRs5WKX5MCyD/p+y -Xitg7/a0ITKbW1GpVwaX6nPaeoze68m3qmy64l080XCna3igbhi3h2ay +MIIDBTCCAi4CFG36qDt2k02biKtMYGtLy9khnP+eMA0GCSqGSIb3DQEBBQUAMCYx +DjAMBgNVBAMMBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0yMDA3MDgx +NDA5NDJaFw00MDAzMjUxNDA5NDJaMBkxFzAVBgNVBAMMDnVuYm91bmQtYW5jaG9y +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzDESJ2lpIno7KpSrYBeB +shT8H5dbtNF9rVBONsCmwSSqclLRixZ62OKrUKMVCEpZ0zj4yZOu3DGTfL9V9pEk +3dCD8mFmylidYeLh5GHGMcDVWOzDVPsnQ9y43KWYeURpGy4QSCxYDb5rrPysleSZ +wuN5D4lbs/AKdpubAHj6z37Zbrs2GjofHp6TaD6ck7jyRXDtqShrnsVXq9U1CadY +DOPiE4aZ1TvusRzhhjmDm8GQXalrtIBJ5j5EcmRamFhONGLshfj5ECZrKo9L17kO +d8PyRMaXNfvl2tpx1qtMxmp7FDpboGGIzP7F7hyaWMI/zAzkTMAtjGkAJWqHgTbS +fvlVul23RLvovM3fD/ZiugBuTWY/CRpmN7CQFFV6iFyLGjRp8vV7BojUIQX7is8Q +TxSqW12SsElMXOuUmcCnuIaoGF4nAoG6vNLFECtSdLTjQ0uXawIp7dOww4zS8j1/ +dZzXsVF4G4V7GjeWD8eX7n+HNWoc3ojjuYzbWfWvLIQbAgMBAAEwDQYJKoZIhvcN +AQEFBQADgcEAPz9Iw956A8piiC5y3hJXAEJ0JYdNrpsgdj7n6iAXRU2EY+juzcKU +D+zcNEcebQJJxayr4eEMfUOUO1wH5uPkWBhKOC/qm6T6i/+/xNsksOeHm12G4/vH +VYPXTxMS+K+mz5HLmLcR0kuQMnCK22FFQj86fhr2vHBGHqINR6MxwvLCES37FWvr +qVZSseK6/6IwRgsjN101JUpaSnM88cMDpuUcqQrAbSSBRKDvjYMkcYcYuvchab26 +G0jEU4KgxaOs -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_server.key b/testdata/10-unbound-anchor.tdir/keys/unbound_server.key index 6614e498f..370a7bbb2 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_server.key +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_server.key @@ -1,21 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem b/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem index 19c8b895b..986807310 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem @@ -1,14 +1,22 @@ -----BEGIN CERTIFICATE----- -MIICFzCCAUACCQDO660L5y5LGDANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVw -ZXRhbDAeFw0xMDA5MzAxMzQzMDFaFw0zMDA2MTcxMzQzMDFaMBAxDjAMBgNVBAMT -BXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC1xQ/Kca6zszZbcCtd -OTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJRuN+Rm304SonpwghfP2/ULZNnuDgpG03 -/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ8 -67K029ypjOQtAJ85qdO3mERy7TGtdUcuO6hLeVet419YeQ2F8cfNxn63d7bOzNGL -PW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeUJ/i4YDWexFYSL+ECAwEAATANBgkqhkiG -9w0BAQUFAAOBwQBBkX9KDP2RXbg+xPmdJ4P6CwvA5x1LZwC++ydVx4NlvT0pWicD -ZUnXjcWAJlkeOuUBAqFG7WHTrXpUUAjmdqFVq2yFjteUYBdrFz0RDB2jM9feeKYO -mTgxdZyT9a6humxCxt5VfgT02axLjm/2AqCyFPMbf4PASoJDln01AEuZLZ8Xl2gV -bYHMnHTGoD1Hu6FNEzRgkMC6XT8X3YjHvzQhpc/qL5wEfEsinQGdX4twsuWbf8xd -q7miNnkO8vd0maw= +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ctrl_itr.tdir/unbound_control.key b/testdata/ctrl_itr.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/ctrl_itr.tdir/unbound_control.key +++ b/testdata/ctrl_itr.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_itr.tdir/unbound_control.pem b/testdata/ctrl_itr.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/ctrl_itr.tdir/unbound_control.pem +++ b/testdata/ctrl_itr.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/ctrl_itr.tdir/unbound_server.key b/testdata/ctrl_itr.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ctrl_itr.tdir/unbound_server.key +++ b/testdata/ctrl_itr.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_itr.tdir/unbound_server.pem b/testdata/ctrl_itr.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ctrl_itr.tdir/unbound_server.pem +++ b/testdata/ctrl_itr.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ctrl_pipe.tdir/unbound_control.key b/testdata/ctrl_pipe.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/ctrl_pipe.tdir/unbound_control.key +++ b/testdata/ctrl_pipe.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_pipe.tdir/unbound_control.pem b/testdata/ctrl_pipe.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/ctrl_pipe.tdir/unbound_control.pem +++ b/testdata/ctrl_pipe.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/ctrl_pipe.tdir/unbound_server.key b/testdata/ctrl_pipe.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ctrl_pipe.tdir/unbound_server.key +++ b/testdata/ctrl_pipe.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_pipe.tdir/unbound_server.pem b/testdata/ctrl_pipe.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ctrl_pipe.tdir/unbound_server.pem +++ b/testdata/ctrl_pipe.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap.tdir/unbound_control.key b/testdata/dnstap.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap.tdir/unbound_control.key +++ b/testdata/dnstap.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap.tdir/unbound_control.pem b/testdata/dnstap.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap.tdir/unbound_control.pem +++ b/testdata/dnstap.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap.tdir/unbound_server.key b/testdata/dnstap.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap.tdir/unbound_server.key +++ b/testdata/dnstap.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap.tdir/unbound_server.pem b/testdata/dnstap.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap.tdir/unbound_server.pem +++ b/testdata/dnstap.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_control.key b/testdata/dnstap_reconnect.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_control.key +++ b/testdata/dnstap_reconnect.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_control.pem b/testdata/dnstap_reconnect.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_control.pem +++ b/testdata/dnstap_reconnect.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_server.key b/testdata/dnstap_reconnect.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_server.key +++ b/testdata/dnstap_reconnect.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_server.pem b/testdata/dnstap_reconnect.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_server.pem +++ b/testdata/dnstap_reconnect.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tcp.tdir/unbound_control.key b/testdata/dnstap_tcp.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tcp.tdir/unbound_control.key +++ b/testdata/dnstap_tcp.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tcp.tdir/unbound_control.pem b/testdata/dnstap_tcp.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tcp.tdir/unbound_control.pem +++ b/testdata/dnstap_tcp.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tcp.tdir/unbound_server.key b/testdata/dnstap_tcp.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tcp.tdir/unbound_server.key +++ b/testdata/dnstap_tcp.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tcp.tdir/unbound_server.pem b/testdata/dnstap_tcp.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tcp.tdir/unbound_server.pem +++ b/testdata/dnstap_tcp.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls.tdir/unbound_control.key b/testdata/dnstap_tls.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls.tdir/unbound_control.key +++ b/testdata/dnstap_tls.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls.tdir/unbound_control.pem b/testdata/dnstap_tls.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls.tdir/unbound_control.pem +++ b/testdata/dnstap_tls.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls.tdir/unbound_server.key b/testdata/dnstap_tls.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls.tdir/unbound_server.key +++ b/testdata/dnstap_tls.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls.tdir/unbound_server.pem b/testdata/dnstap_tls.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls.tdir/unbound_server.pem +++ b/testdata/dnstap_tls.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_control.key b/testdata/dnstap_tls_badcert.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_control.key +++ b/testdata/dnstap_tls_badcert.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_control.pem b/testdata/dnstap_tls_badcert.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_badcert.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_server.key b/testdata/dnstap_tls_badcert.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_server.key +++ b/testdata/dnstap_tls_badcert.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_server.pem b/testdata/dnstap_tls_badcert.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_badcert.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_control.key b/testdata/dnstap_tls_badname.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_control.key +++ b/testdata/dnstap_tls_badname.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_control.pem b/testdata/dnstap_tls_badname.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_badname.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_server.key b/testdata/dnstap_tls_badname.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_server.key +++ b/testdata/dnstap_tls_badname.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_server.pem b/testdata/dnstap_tls_badname.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_badname.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_control.key b/testdata/dnstap_tls_clientauth.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_control.key +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem b/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_server.key b/testdata/dnstap_tls_clientauth.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_server.key +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem b/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_control.key b/testdata/dnstap_tls_peername.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_control.key +++ b/testdata/dnstap_tls_peername.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_control.pem b/testdata/dnstap_tls_peername.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_peername.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_server.key b/testdata/dnstap_tls_peername.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_server.key +++ b/testdata/dnstap_tls_peername.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_server.pem b/testdata/dnstap_tls_peername.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_peername.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/dynlibmod.conf b/testdata/dynlibmod.tdir/dynlibmod.conf new file mode 100644 index 000000000..d59444344 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.conf @@ -0,0 +1,32 @@ +server: + verbosity: 2 + num-threads: 3 + outgoing-range: 16 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + local-zone: "example.net." redirect + local-data: "example.net. IN A 10.20.30.41" + module-config: "dynlib iterator" + +dynlib: + dynlib-file: "@DLL_FILE@" + +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/dynlibmod.tdir/dynlibmod.dsc b/testdata/dynlibmod.tdir/dynlibmod.dsc new file mode 100644 index 000000000..b1a83910d --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.dsc @@ -0,0 +1,16 @@ +BaseName: dynlibmod +Version: 1.0 +Description: test dynlibmod module +CreationDate: Tue May 19 15:00:38 CET 2020 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: dynlibmod.pre +Post: dynlibmod.post +Test: dynlibmod.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/dynlibmod.tdir/dynlibmod.post b/testdata/dynlibmod.tdir/dynlibmod.post new file mode 100644 index 000000000..caa0da4f5 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.post @@ -0,0 +1,15 @@ +# #-- dynlibmod.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +PRE="../.." +if grep "define WITH_DYNLIBMODULE 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +kill_pid $FWD_PID +kill $UNBOUND_PID +kill $UNBOUND_PID >/dev/null 2>&1 +cat unbound.log +exit 0 diff --git a/testdata/dynlibmod.tdir/dynlibmod.pre b/testdata/dynlibmod.tdir/dynlibmod.pre new file mode 100644 index 000000000..94adaa723 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.pre @@ -0,0 +1,35 @@ +# #-- dynlibmod.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh + +PRE="../.." +if grep "define WITH_DYNLIBMODULE 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT dynlibmod.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +if grep "define USE_WINSOCK 1" $PRE/config.h; then + DLL_FILE="helloworld.dll" +else + DLL_FILE="helloworld.so" +fi +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' -e 's/@DLL_FILE\@/'$DLL_FILE'/' < dynlibmod.conf > ub.conf + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log diff --git a/testdata/dynlibmod.tdir/dynlibmod.test b/testdata/dynlibmod.tdir/dynlibmod.test new file mode 100644 index 000000000..f99f6fbc4 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.test @@ -0,0 +1,74 @@ +# #-- dynlibmod.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +PRE="../.." +if grep "define WITH_DYNLIBMODULE 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +# compile the dynamic library module +if grep "define USE_WINSOCK 1" $PRE/config.h; then + echo "compile dynamic library dll for mingw" + echo "x86_64-w64-mingw32-gcc -m64 -I$PRE -shared -Wall -fpic -o helloworld.dll $PRE/dynlibmod/examples/helloworld.c -L../.. -l:libunbound.a" + x86_64-w64-mingw32-gcc -m64 -I$PRE -shared -Wall -fpic -o helloworld.dll $PRE/dynlibmod/examples/helloworld.c -L../.. -l:libunbound.a + if test $? != 0; then + echo "compile failure" + exit 1; + fi +else + echo "compile dynamic library" + echo "gcc -I$PRE -shared -Wall -fpic -o helloworld.so $PRE/dynlibmod/examples/helloworld.c" + gcc -I$PRE -shared -Wall -fpic -o helloworld.so $PRE/dynlibmod/examples/helloworld.c + if test $? != 0; then + echo "compile failure" + exit 1; + fi +fi + +# start unbound in the background +LD_LIBRARY_PATH="." $PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test +wait_unbound_up unbound.log + +# test if the server is up. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> check log for dynlibmod info" +# wait for a moment for filesystem to catch up. +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 10; fi +if grep "hello world from operate" unbound.log; then echo "yes it is in unbound.log"; +else + echo "information not in unbound.log" + echo "failed" + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> OK" +exit 0 diff --git a/testdata/dynlibmod.tdir/dynlibmod.testns b/testdata/dynlibmod.tdir/dynlibmod.testns new file mode 100644 index 000000000..0c911ca5b --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.testns @@ -0,0 +1,22 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA SERVFAIL +ADJUST copy_id +SECTION QUESTION +www.example.net. IN A +ENTRY_END + diff --git a/testdata/dynlibmod.tdir/unbound_control.key b/testdata/dynlibmod.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_control.pem b/testdata/dynlibmod.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/unbound_server.key b/testdata/dynlibmod.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_server.pem b/testdata/dynlibmod.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- diff --git a/testdata/fwd_bogus.tdir/unbound_control.key b/testdata/fwd_bogus.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/fwd_bogus.tdir/unbound_control.key +++ b/testdata/fwd_bogus.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/fwd_bogus.tdir/unbound_control.pem b/testdata/fwd_bogus.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/fwd_bogus.tdir/unbound_control.pem +++ b/testdata/fwd_bogus.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/fwd_bogus.tdir/unbound_server.key b/testdata/fwd_bogus.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/fwd_bogus.tdir/unbound_server.key +++ b/testdata/fwd_bogus.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/fwd_bogus.tdir/unbound_server.pem b/testdata/fwd_bogus.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/fwd_bogus.tdir/unbound_server.pem +++ b/testdata/fwd_bogus.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/remote-threaded.tdir/unbound_control.key b/testdata/remote-threaded.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/remote-threaded.tdir/unbound_control.key +++ b/testdata/remote-threaded.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/remote-threaded.tdir/unbound_control.pem b/testdata/remote-threaded.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/remote-threaded.tdir/unbound_control.pem +++ b/testdata/remote-threaded.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/remote-threaded.tdir/unbound_server.key b/testdata/remote-threaded.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/remote-threaded.tdir/unbound_server.key +++ b/testdata/remote-threaded.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/remote-threaded.tdir/unbound_server.pem b/testdata/remote-threaded.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/remote-threaded.tdir/unbound_server.pem +++ b/testdata/remote-threaded.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ssl_req_order.tdir/unbound_server.key b/testdata/ssl_req_order.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ssl_req_order.tdir/unbound_server.key +++ b/testdata/ssl_req_order.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_req_order.tdir/unbound_server.pem b/testdata/ssl_req_order.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ssl_req_order.tdir/unbound_server.pem +++ b/testdata/ssl_req_order.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ssl_req_timeout.tdir/unbound_server.key b/testdata/ssl_req_timeout.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ssl_req_timeout.tdir/unbound_server.key +++ b/testdata/ssl_req_timeout.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_req_timeout.tdir/unbound_server.pem b/testdata/ssl_req_timeout.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ssl_req_timeout.tdir/unbound_server.pem +++ b/testdata/ssl_req_timeout.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/stream_ssl.tdir/unbound_control.key b/testdata/stream_ssl.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/stream_ssl.tdir/unbound_control.key +++ b/testdata/stream_ssl.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/stream_ssl.tdir/unbound_control.pem b/testdata/stream_ssl.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/stream_ssl.tdir/unbound_control.pem +++ b/testdata/stream_ssl.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/stream_ssl.tdir/unbound_server.key b/testdata/stream_ssl.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/stream_ssl.tdir/unbound_server.key +++ b/testdata/stream_ssl.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/stream_ssl.tdir/unbound_server.pem b/testdata/stream_ssl.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/stream_ssl.tdir/unbound_server.pem +++ b/testdata/stream_ssl.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/util/config_file.c b/util/config_file.c index 2a809f875..b1420d508 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -268,6 +268,7 @@ config_create(void) cfg->unblock_lan_zones = 0; cfg->insecure_lan_zones = 0; cfg->python_script = NULL; + cfg->dynlib_file = NULL; cfg->remote_control_enable = 0; cfg->control_ifs.first = NULL; cfg->control_ifs.last = NULL; @@ -628,6 +629,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("control-cert-file:", control_cert_file) else S_STR("module-config:", module_conf) else S_STRLIST("python-script:", python_script) + else S_STRLIST("dynlib-file:", dynlib_file) else S_YNO("disable-dnssec-lame-check:", disable_dnssec_lame_check) #ifdef CLIENT_SUBNET /* Can't set max subnet prefix here, since that value is used when @@ -1099,6 +1101,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "insecure-lan-zones", insecure_lan_zones) else O_DEC(opt, "max-udp-size", max_udp_size) else O_LST(opt, "python-script", python_script) + else O_LST(opt, "dynlib-file", dynlib_file) else O_YNO(opt, "disable-dnssec-lame-check", disable_dnssec_lame_check) else O_DEC(opt, "ip-ratelimit", ip_ratelimit) else O_DEC(opt, "ratelimit", ratelimit) @@ -1492,6 +1495,7 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->ratelimit_for_domain); config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); + config_delstrlist(cfg->dynlib_file); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); diff --git a/util/config_file.h b/util/config_file.h index cc3fe4ae1..fa7e5c592 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -450,6 +450,9 @@ struct config_file { /** Python script file */ struct config_strlist* python_script; + /** Dynamic library file */ + struct config_strlist* dynlib_file; + /** Use systemd socket activation. */ int use_systemd; diff --git a/util/configlexer.c b/util/configlexer.c index f5922759e..1508e51c9 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 320 -#define YY_END_OF_BUFFER 321 +#define YY_NUM_RULES 322 +#define YY_END_OF_BUFFER 323 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,350 +363,352 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3111] = +static const flex_int16_t yy_accept[3123] = { 0, - 1, 1, 294, 294, 298, 298, 302, 302, 306, 306, - 1, 1, 310, 310, 314, 314, 321, 318, 1, 292, - 292, 319, 2, 319, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 294, 295, 295, 296, - 319, 298, 299, 299, 300, 319, 305, 302, 303, 303, - 304, 319, 306, 307, 307, 308, 319, 317, 293, 2, - 297, 319, 317, 313, 310, 311, 311, 312, 319, 314, - 315, 315, 316, 319, 318, 0, 1, 2, 2, 2, - 2, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, + 1, 1, 312, 312, 316, 316, 323, 320, 1, 294, + 294, 321, 2, 321, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 296, 297, 297, 298, + 321, 300, 301, 301, 302, 321, 307, 304, 305, 305, + 306, 321, 308, 309, 309, 310, 321, 319, 295, 2, + 299, 321, 319, 315, 312, 313, 313, 314, 321, 316, + 317, 317, 318, 321, 320, 0, 1, 2, 2, 2, + 2, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 294, 0, 298, 0, 305, - 0, 302, 306, 0, 317, 0, 2, 2, 317, 313, - 0, 310, 314, 0, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 296, 0, 300, 0, + 307, 0, 304, 308, 0, 319, 0, 2, 2, 319, + 315, 0, 312, 316, 0, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 317, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 319, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 115, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 123, 318, 318, 318, - 318, 318, 318, 318, 317, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 115, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 123, + 320, 320, 320, 320, 320, 320, 320, 319, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 99, 318, 318, 318, 318, 318, 318, 8, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 116, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 99, 320, 320, 320, 320, 320, + 320, 8, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 116, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 128, 318, 317, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 287, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 128, 320, 319, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 289, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 317, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 57, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 319, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 57, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 225, 318, 14, 15, 318, - 19, 18, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 122, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 209, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 3, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 227, 320, 14, 15, 320, 19, 18, 320, 320, 211, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 122, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 209, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 317, 318, 318, 318, 318, 318, 318, 318, 281, 318, - 318, 280, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 3, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 319, 320, 320, + 320, 320, 320, 320, 320, 283, 320, 320, 282, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 301, 318, - 318, 318, 318, 318, 318, 318, 56, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 60, 318, 255, 318, 318, 318, 318, - 318, 318, 318, 318, 288, 289, 318, 318, 318, 318, - 318, 61, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 119, 318, - 318, 318, 318, 318, 318, 318, 318, 198, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 21, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 303, 320, 320, 320, + 320, 320, 320, 320, 56, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 60, 320, 257, 320, 320, 320, 320, 320, 320, + 320, 320, 290, 291, 320, 320, 320, 320, 320, 61, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 119, 320, 320, 320, + 320, 320, 320, 320, 320, 198, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 147, 318, 318, - 317, 301, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 97, 318, 318, 318, 318, 318, 318, 318, - 263, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 170, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 146, 318, + 320, 320, 320, 320, 320, 320, 21, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 147, 320, 320, 319, 303, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 97, 320, 320, 320, 320, 320, 320, 320, 265, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 170, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 96, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 32, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 33, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 146, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 96, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 32, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 33, 320, 320, - 318, 318, 318, 58, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 121, 317, 318, 318, 318, 318, 318, - 114, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 59, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 228, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 171, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 47, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 58, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 121, 319, 320, 320, 320, 320, 320, 114, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 59, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 230, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 171, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 47, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 246, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 51, 318, - 52, 318, 318, 318, 318, 318, 100, 318, 101, 318, - 318, 318, 318, 98, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 248, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 51, 320, + 52, 320, 320, 320, 320, 320, 100, 320, 101, 320, + 320, 320, 320, 98, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 7, 318, 317, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 218, 318, 318, 318, 318, 149, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 229, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 48, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 190, 318, 189, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 7, 320, 319, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 220, 320, 320, 320, 320, 149, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 231, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 48, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 16, 17, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 62, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 197, 318, 318, 318, 318, 318, 318, 103, 318, 102, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 181, 318, 318, 318, 318, 318, 318, 318, 318, - 129, 317, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 190, 320, 189, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 16, 17, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 62, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 197, 320, 320, 320, 320, 320, 320, 103, 320, + 102, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 181, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 81, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 85, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 55, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 184, 185, 318, 318, - 318, 257, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 129, 319, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 81, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 210, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 85, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 55, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 184, 185, - 318, 318, 318, 318, 6, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 261, 318, 318, 318, - 318, 318, 318, 282, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 42, 318, 318, 318, 318, 44, - 318, 318, 318, 318, 318, 318, 318, 318, 45, 318, - 318, 318, 318, 318, 318, 318, 317, 318, 177, 318, - 318, 318, 124, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 202, 318, 178, 318, 318, 318, 215, + 320, 320, 320, 259, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 6, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 263, 320, + 320, 320, 320, 320, 320, 284, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 42, 320, 320, 320, + 320, 44, 320, 320, 320, 320, 320, 320, 320, 320, + 45, 320, 320, 320, 320, 320, 320, 320, 319, 320, + 177, 320, 320, 320, 124, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 46, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 126, - 108, 318, 109, 318, 318, 318, 107, 318, 318, 318, - 318, 318, 318, 318, 318, 144, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 245, 318, - 318, 318, 318, 318, 318, 318, 318, 179, 318, 318, - 318, 318, 318, 182, 318, 188, 318, 318, 318, 318, - 318, 214, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 95, 318, 318, 318, + 320, 320, 320, 320, 320, 202, 320, 178, 320, 320, + 320, 217, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 46, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 126, 108, 320, 109, 320, 320, 320, 107, 320, + 320, 320, 320, 320, 320, 320, 320, 144, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 247, 320, 320, 320, 320, 320, 320, 320, 320, 179, + 320, 320, 320, 320, 320, 182, 320, 188, 320, 320, + 320, 320, 320, 216, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 120, 318, 318, 318, 318, - 318, 318, 53, 318, 318, 318, 26, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 20, 318, 318, 318, - 318, 318, 318, 27, 36, 318, 154, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 317, 318, 318, 318, 318, 318, 318, 70, 72, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 265, 318, 318, 318, 226, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 320, 95, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 120, 320, 320, + 320, 320, 320, 320, 53, 320, 320, 320, 26, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 20, 320, + 320, 320, 320, 320, 320, 27, 36, 320, 154, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 319, 320, 320, 320, 320, 320, 320, 70, + 72, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 267, 320, 320, 320, 228, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 110, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 143, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 276, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 148, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 208, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 285, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 165, 318, 318, 318, 318, 318, 318, 318, 318, 104, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 110, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 143, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 278, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 148, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 208, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 287, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 160, - 318, 172, 318, 318, 318, 318, 317, 318, 132, 318, - 318, 318, 318, 318, 91, 318, 318, 318, 318, 200, - 318, 318, 318, 318, 318, 318, 216, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 237, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 125, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 164, 318, 318, 318, 318, 318, 318, - 73, 74, 318, 318, 318, 318, 318, 54, 318, 318, + 320, 320, 165, 320, 320, 320, 320, 320, 320, 320, + 320, 104, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 160, 320, 172, 320, 320, 320, 320, 319, 320, + 132, 320, 320, 320, 320, 320, 91, 320, 320, 320, + 320, 200, 320, 320, 320, 320, 320, 320, 218, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 239, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 125, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 164, 320, 320, 320, 320, - 318, 318, 318, 80, 173, 318, 191, 318, 219, 318, - 318, 183, 258, 318, 318, 318, 318, 318, 66, 318, - 175, 318, 318, 318, 318, 318, 9, 318, 318, 318, - 94, 318, 318, 318, 318, 250, 318, 318, 318, 318, - 199, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 317, 318, 318, 318, - 318, 163, 318, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 73, 74, 320, 320, 320, 320, 320, 54, + 320, 320, 320, 320, 320, 80, 173, 320, 191, 320, + 221, 320, 320, 183, 260, 320, 320, 320, 320, 320, + 66, 320, 175, 320, 320, 320, 320, 320, 9, 320, + 320, 320, 94, 320, 320, 320, 320, 252, 320, 320, + 320, 320, 199, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 319, 320, - 318, 318, 150, 318, 264, 318, 318, 318, 318, 236, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 210, 318, 318, 318, 318, 256, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 279, 318, 174, 318, 318, 318, 318, 318, - 318, 318, 65, 67, 318, 318, 318, 318, 318, 318, - 318, 93, 318, 318, 318, 318, 248, 318, 318, 318, - 318, 260, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 204, 34, 28, 30, 318, 318, 318, + 320, 320, 320, 163, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 150, 320, 266, 320, 320, 320, + 320, 238, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 212, 320, 320, 320, 320, 258, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 281, 320, 174, 320, 320, 320, + 320, 320, 320, 320, 65, 67, 320, 320, 320, 320, + 320, 320, 320, 93, 320, 320, 320, 320, 250, 320, + 320, 320, 320, 262, 320, 320, 320, 320, 320, 320, - 318, 318, 318, 318, 318, 318, 35, 318, 29, 31, - 318, 318, 318, 318, 318, 318, 318, 318, 90, 318, - 318, 318, 318, 318, 318, 317, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 206, 203, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 64, 318, 318, 127, - 318, 111, 318, 318, 318, 318, 318, 318, 318, 318, - 145, 309, 13, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 274, 318, 277, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 12, 318, 318, 22, 318, + 320, 320, 320, 320, 320, 204, 34, 28, 30, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 35, 320, + 29, 31, 320, 320, 320, 320, 320, 320, 320, 320, + 90, 320, 320, 320, 320, 320, 320, 319, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 206, + 203, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 64, 320, + 320, 127, 320, 111, 320, 320, 320, 320, 320, 320, + 320, 320, 145, 311, 13, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 276, 320, 279, 320, 320, 320, - 318, 318, 254, 318, 318, 318, 318, 262, 318, 318, - 318, 68, 318, 212, 318, 318, 318, 318, 205, 318, - 318, 63, 318, 318, 318, 318, 23, 318, 43, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 159, 158, 309, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 207, 201, 318, 217, 318, 318, 266, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 75, 318, 318, - 318, 249, 318, 318, 318, 318, 187, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 12, 320, 320, + 22, 320, 320, 320, 256, 320, 320, 320, 320, 264, + 320, 320, 320, 68, 320, 214, 320, 320, 320, 320, + 205, 320, 320, 63, 320, 320, 320, 320, 23, 320, + 43, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 159, 158, 311, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 207, 201, 320, 219, 320, + 320, 268, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 75, - 318, 211, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 283, 284, 156, 318, 318, 69, 318, 318, 318, - 318, 166, 318, 318, 105, 106, 318, 318, 318, 318, - 151, 318, 153, 318, 192, 318, 318, 318, 318, 157, - 318, 318, 220, 318, 318, 318, 318, 318, 318, 318, - 134, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 227, 318, 318, 318, 318, 318, 318, 318, - 24, 318, 259, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 193, 318, 318, 247, 318, 278, - 318, 186, 318, 318, 318, 318, 49, 318, 318, 318, + 320, 320, 320, 251, 320, 320, 320, 320, 187, 320, + 320, 320, 320, 213, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 285, 286, 156, 320, 320, 69, 320, + 320, 320, 320, 166, 320, 320, 105, 106, 320, 320, + 320, 320, 151, 320, 153, 320, 192, 320, 320, 320, + 320, 157, 320, 320, 222, 320, 320, 320, 320, 320, + 320, 320, 134, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 229, 320, 320, 320, 320, 320, + 320, 320, 24, 320, 261, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 193, 320, 320, 249, - 318, 4, 318, 318, 318, 318, 118, 133, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 223, 37, 38, 318, - 318, 318, 318, 318, 318, 318, 267, 318, 318, 318, - 318, 318, 318, 235, 318, 318, 318, 318, 318, 318, - 318, 196, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 78, 318, 50, 253, 318, 224, 318, 318, 318, - 318, 11, 318, 318, 318, 318, 318, 318, 117, 318, - 318, 318, 318, 194, 82, 318, 40, 318, 318, 318, - 318, 318, 318, 318, 318, 162, 318, 318, 318, 318, + 320, 280, 320, 186, 320, 320, 320, 320, 49, 320, + 320, 320, 320, 4, 320, 320, 320, 320, 118, 133, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 225, 37, + 38, 320, 320, 320, 320, 320, 320, 320, 269, 320, + 320, 320, 320, 320, 320, 237, 320, 320, 320, 320, + 320, 320, 320, 196, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 78, 320, 50, 255, 320, 226, 320, + 320, 320, 320, 11, 320, 320, 320, 320, 320, 320, + 117, 320, 320, 320, 320, 194, 82, 320, 40, 320, - 318, 136, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 234, 318, 318, 318, 318, 130, 318, 318, 112, - 113, 318, 318, 318, 84, 88, 83, 318, 76, 318, - 318, 318, 318, 318, 10, 318, 318, 318, 251, 286, - 318, 318, 318, 318, 291, 39, 318, 318, 318, 318, - 318, 161, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 89, 87, 318, 77, 275, 318, - 318, 318, 318, 318, 318, 318, 180, 318, 318, 318, - 318, 318, 195, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 320, 320, 320, 162, 320, 320, + 320, 320, 320, 136, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 236, 320, 320, 320, 320, 130, 320, + 320, 112, 113, 320, 320, 320, 84, 88, 83, 320, + 76, 320, 320, 320, 320, 320, 10, 320, 320, 320, + 253, 288, 320, 320, 320, 320, 293, 39, 320, 320, + 320, 320, 320, 161, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 89, 87, 320, 77, + 277, 320, 320, 320, 320, 320, 320, 320, 180, 320, - 318, 152, 71, 318, 318, 318, 318, 318, 268, 318, - 318, 318, 318, 318, 318, 318, 231, 318, 318, 230, - 131, 318, 86, 137, 138, 141, 142, 139, 140, 79, - 318, 252, 318, 318, 318, 318, 155, 318, 318, 318, - 318, 318, 222, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 168, 167, 41, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 92, 318, 221, - 318, 244, 272, 318, 318, 318, 318, 318, 318, 318, + 320, 320, 320, 320, 195, 320, 320, 320, 320, 320, + 320, 320, 320, 152, 71, 320, 320, 320, 320, 320, + 270, 320, 320, 320, 320, 320, 320, 320, 233, 320, + 320, 232, 131, 320, 86, 137, 138, 141, 142, 139, + 140, 79, 320, 254, 320, 320, 320, 320, 155, 320, + 320, 320, 320, 320, 224, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 168, 167, 41, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 92, - 318, 318, 318, 318, 318, 5, 318, 318, 213, 318, - 318, 273, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 232, 25, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 233, 318, 318, 318, 135, - 318, 318, 318, 318, 318, 318, 318, 318, 169, 318, - 176, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 269, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 290, 318, - 318, 240, 318, 318, 318, 318, 318, 270, 318, 318, - 318, 318, 318, 318, 271, 318, 318, 318, 238, 318, + 320, 223, 320, 246, 274, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 5, 320, 320, + 215, 320, 320, 275, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 234, 25, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 235, 320, 320, + 320, 135, 320, 320, 320, 320, 320, 320, 320, 320, + 169, 320, 176, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 271, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 292, 320, 320, 242, 320, 320, 320, 320, 320, 272, - 241, 242, 318, 318, 318, 318, 318, 239, 243, 0 + 320, 320, 320, 320, 320, 320, 273, 320, 320, 320, + 240, 320, 243, 244, 320, 320, 320, 320, 320, 241, + 245, 0 } ; static const YY_CHAR yy_ec[256] = @@ -749,703 +751,705 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3129] = +static const flex_int16_t yy_base[3141] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3388, 3249, 81, 6084, - 6084, 6084, 129, 52, 130, 63, 131, 135, 70, 152, - 154, 157, 57, 88, 76, 159, 165, 95, 172, 148, - 183, 195, 193, 202, 208, 123, 3208, 6084, 6084, 6084, - 107, 3022, 6084, 6084, 6084, 186, 2951, 2430, 6084, 6084, - 6084, 234, 2178, 6084, 6084, 6084, 201, 2141, 6084, 238, - 6084, 242, 175, 2042, 1968, 6084, 6084, 6084, 246, 1893, - 6084, 6084, 6084, 228, 1818, 252, 153, 0, 256, 0, - 0, 182, 248, 250, 241, 254, 204, 259, 92, 258, + 90, 112, 96, 118, 124, 136, 4404, 4301, 81, 6102, + 6102, 6102, 129, 52, 130, 63, 131, 152, 70, 140, + 144, 156, 57, 88, 76, 173, 175, 95, 184, 135, + 185, 205, 147, 204, 178, 123, 4034, 6102, 6102, 6102, + 107, 3652, 6102, 6102, 6102, 178, 3620, 3363, 6102, 6102, + 6102, 224, 3199, 6102, 6102, 6102, 204, 3036, 6102, 238, + 6102, 242, 197, 2844, 2828, 6102, 6102, 6102, 246, 2274, + 6102, 6102, 6102, 216, 1904, 252, 166, 0, 256, 0, + 0, 216, 248, 162, 241, 250, 254, 258, 92, 259, - 263, 264, 261, 158, 265, 272, 268, 269, 281, 273, - 283, 286, 294, 288, 303, 310, 295, 307, 308, 297, - 305, 313, 318, 156, 320, 324, 326, 330, 334, 333, - 335, 336, 341, 339, 345, 328, 347, 350, 352, 354, - 363, 353, 360, 368, 271, 371, 362, 372, 374, 377, - 379, 380, 382, 391, 387, 1666, 403, 1656, 405, 1607, - 414, 1575, 1327, 418, 1162, 422, 426, 0, 403, 874, - 430, 636, 516, 434, 422, 434, 411, 430, 431, 212, - 432, 433, 435, 436, 437, 438, 448, 444, 451, 453, - 461, 460, 462, 464, 459, 467, 468, 474, 470, 481, + 262, 263, 260, 264, 265, 272, 267, 273, 271, 282, + 280, 288, 292, 290, 283, 299, 309, 289, 307, 310, + 311, 300, 316, 191, 321, 315, 323, 304, 325, 327, + 326, 337, 329, 338, 340, 348, 341, 345, 347, 350, + 357, 227, 351, 354, 358, 362, 369, 359, 373, 379, + 374, 377, 383, 385, 387, 384, 1574, 403, 1352, 406, + 814, 416, 740, 688, 410, 600, 420, 424, 0, 416, + 501, 430, 464, 442, 435, 422, 434, 429, 430, 431, + 433, 397, 432, 435, 436, 437, 440, 454, 438, 453, + 459, 462, 466, 461, 467, 471, 472, 473, 474, 476, - 484, 487, 477, 479, 485, 489, 493, 496, 502, 505, - 495, 509, 517, 512, 524, 527, 499, 529, 532, 514, - 534, 531, 539, 543, 538, 540, 542, 544, 546, 547, - 549, 550, 551, 558, 555, 559, 554, 566, 568, 561, - 572, 562, 577, 578, 586, 581, 582, 296, 583, 585, - 594, 595, 590, 599, 591, 598, 604, 607, 614, 616, - 611, 600, 615, 617, 618, 619, 621, 626, 622, 634, - 639, 635, 638, 642, 644, 646, 647, 648, 649, 625, - 658, 651, 653, 663, 669, 656, 667, 670, 661, 672, - 673, 675, 680, 684, 681, 688, 683, 692, 690, 696, + 477, 490, 485, 487, 480, 493, 495, 496, 498, 499, + 505, 512, 500, 502, 521, 526, 522, 530, 519, 535, + 537, 532, 540, 533, 542, 547, 543, 544, 545, 548, + 549, 552, 554, 556, 558, 561, 560, 564, 559, 572, + 573, 565, 577, 567, 582, 584, 591, 586, 587, 588, + 593, 594, 604, 605, 595, 613, 596, 597, 609, 616, + 623, 624, 619, 620, 622, 625, 626, 628, 629, 630, + 631, 639, 640, 642, 646, 650, 648, 652, 653, 655, + 656, 632, 665, 658, 660, 667, 673, 672, 674, 676, + 678, 680, 679, 681, 683, 684, 697, 686, 702, 687, - 693, 705, 700, 691, 701, 702, 703, 707, 706, 708, - 713, 716, 717, 719, 723, 721, 731, 727, 728, 744, - 729, 736, 741, 745, 739, 747, 755, 749, 771, 769, - 757, 758, 759, 775, 779, 776, 782, 780, 785, 786, - 787, 788, 789, 797, 793, 6084, 792, 802, 809, 810, - 811, 814, 799, 818, 820, 800, 830, 826, 823, 832, - 854, 827, 714, 831, 833, 836, 6084, 840, 838, 878, - 849, 842, 862, 860, 844, 863, 868, 858, 869, 885, - 872, 871, 886, 895, 884, 876, 901, 887, 903, 904, - 911, 909, 906, 912, 913, 920, 915, 916, 917, 931, + 704, 699, 705, 707, 714, 701, 709, 710, 711, 715, + 719, 717, 725, 713, 718, 733, 723, 737, 726, 745, + 743, 730, 758, 744, 747, 749, 759, 748, 750, 756, + 769, 761, 779, 766, 773, 781, 784, 792, 789, 795, + 785, 797, 787, 798, 801, 803, 810, 808, 6102, 805, + 807, 819, 822, 823, 826, 816, 832, 806, 836, 839, + 841, 838, 846, 868, 824, 842, 845, 847, 850, 6102, + 854, 852, 892, 861, 856, 878, 874, 858, 881, 870, + 888, 882, 896, 883, 893, 898, 916, 899, 903, 905, + 902, 914, 915, 924, 926, 921, 928, 929, 937, 932, - 918, 923, 925, 930, 933, 942, 943, 936, 945, 934, - 950, 951, 954, 952, 948, 955, 959, 956, 973, 958, - 970, 971, 977, 978, 981, 984, 982, 987, 988, 989, - 990, 998, 996, 994, 997, 999, 1003, 1005, 1007, 1010, - 1011, 1012, 1013, 1017, 1015, 1022, 1020, 1026, 1031, 1028, - 6084, 1033, 1035, 1036, 1037, 1038, 1039, 6084, 1041, 1040, - 1043, 1048, 1045, 1055, 1062, 1052, 1063, 1065, 1064, 1069, - 1076, 1053, 1072, 1083, 1079, 1080, 1081, 1086, 1087, 1089, - 1082, 1090, 1088, 1092, 1096, 1112, 6084, 1099, 1100, 1098, - 1105, 1106, 1110, 1116, 1108, 1129, 1117, 1130, 1141, 1127, + 933, 934, 938, 942, 944, 945, 950, 946, 951, 952, + 954, 965, 955, 963, 959, 967, 968, 970, 972, 983, + 976, 977, 993, 984, 989, 994, 996, 997, 991, 1000, + 1003, 1007, 1004, 1008, 1012, 1020, 1015, 1010, 1017, 1018, + 1022, 1028, 1024, 1026, 1030, 1031, 1032, 1040, 1033, 1041, + 1034, 1047, 1049, 752, 6102, 1051, 1053, 1054, 1055, 1056, + 1057, 6102, 1059, 1058, 1061, 1066, 1063, 1071, 1080, 1067, + 1082, 1070, 1083, 1084, 1092, 1087, 1088, 1095, 1094, 1096, + 947, 1098, 1100, 1105, 1102, 1106, 1109, 1103, 1114, 1128, + 6102, 1112, 1115, 1116, 1118, 1123, 1131, 1140, 1126, 1133, - 1137, 1142, 1144, 1147, 1145, 1149, 1151, 1155, 1153, 1152, - 1154, 1156, 1160, 1158, 1157, 1173, 6084, 1174, 1159, 1181, - 1178, 1180, 1182, 1184, 1185, 1186, 1187, 1189, 1192, 1188, - 1206, 1199, 1197, 1213, 1203, 1208, 1210, 1212, 1214, 1217, - 1216, 1218, 1229, 1226, 1222, 1231, 1242, 1238, 1241, 1249, - 1233, 1244, 1245, 1246, 1248, 1252, 1253, 1251, 1257, 1259, - 1266, 1264, 1261, 1262, 1269, 1277, 1270, 1272, 1280, 1273, - 1281, 1278, 1284, 1285, 1293, 1287, 1294, 6084, 1303, 1295, - 1299, 1306, 1307, 1305, 1311, 1313, 1315, 1314, 1317, 1318, - 1319, 1325, 1322, 1326, 1320, 1328, 1334, 1341, 1338, 1340, + 1143, 1146, 1156, 1151, 1121, 1152, 1153, 1157, 1160, 1163, + 1165, 1166, 1168, 1169, 1170, 1171, 1172, 1174, 1179, 1184, + 6102, 1177, 1187, 1195, 1196, 1182, 1198, 1199, 1200, 1201, + 1202, 1203, 1205, 1204, 1210, 1220, 1211, 1224, 1221, 1222, + 1226, 1227, 1229, 1228, 1230, 1232, 1244, 1237, 1236, 1252, + 1247, 1254, 1256, 1263, 1265, 1245, 1258, 1262, 1260, 1268, + 1269, 1270, 1271, 1273, 1274, 1283, 1280, 1281, 1282, 1285, + 1295, 1286, 1288, 1298, 1290, 1296, 1293, 1300, 1304, 1307, + 1303, 1313, 6102, 1320, 1315, 1318, 1319, 1322, 1326, 1325, + 1331, 1332, 1333, 1335, 1334, 1336, 1338, 1342, 1341, 1343, - 1350, 1349, 1351, 1342, 1353, 1361, 1354, 1363, 1362, 1364, - 1372, 1368, 1370, 1373, 1380, 1358, 1375, 1382, 1376, 1385, - 1388, 1391, 1403, 1389, 1399, 1406, 1407, 1390, 1410, 1379, - 1411, 1402, 1414, 1416, 1417, 1418, 1425, 1422, 1421, 1424, - 1427, 1423, 1428, 1431, 1429, 1446, 1435, 1433, 1437, 1448, - 1450, 1451, 1452, 1453, 1455, 1457, 1458, 1461, 1459, 1462, - 1464, 1470, 1465, 1472, 1478, 1480, 1482, 1484, 1485, 1486, - 1487, 1496, 1488, 1497, 1489, 1500, 1502, 1503, 1505, 1509, - 1513, 1507, 1516, 1508, 1518, 1519, 1527, 1528, 1531, 1524, - 6084, 1520, 1541, 1522, 1534, 1536, 1543, 1544, 1551, 1546, + 1344, 1346, 1355, 1357, 1361, 1368, 1367, 1369, 1354, 1362, + 1377, 1373, 1381, 1379, 1380, 1389, 1384, 1386, 1387, 1396, + 1391, 1393, 1395, 1394, 1403, 1398, 1408, 1415, 1401, 1412, + 1422, 1418, 1420, 1423, 1424, 1427, 1428, 1430, 1431, 1432, + 1433, 1440, 1435, 1438, 1437, 1441, 1436, 1442, 1450, 1444, + 1463, 1455, 1458, 1460, 1464, 1467, 1466, 1465, 1468, 1472, + 1473, 1475, 1474, 1476, 1478, 1485, 875, 1487, 1489, 1493, + 1495, 1497, 1496, 1500, 1499, 1502, 1508, 1498, 1511, 1512, + 1515, 1517, 1519, 1520, 1524, 1528, 1522, 1530, 1523, 1533, + 1534, 1541, 1542, 1545, 1537, 6102, 1535, 1556, 1548, 1549, - 1549, 1547, 1550, 1552, 1576, 6084, 1555, 6084, 6084, 1557, - 6084, 6084, 1558, 1553, 1561, 1560, 1578, 1582, 1569, 1566, - 1573, 1571, 1592, 1599, 1589, 1593, 1590, 1597, 1602, 1610, - 1612, 1615, 1613, 1620, 1624, 1623, 1625, 1632, 1633, 1627, - 1634, 1636, 1637, 1641, 1638, 1642, 1644, 1647, 1648, 1645, - 1650, 1651, 1658, 1664, 1655, 1671, 6084, 1667, 1674, 1681, - 1677, 1684, 1676, 1680, 1683, 1688, 1690, 1685, 1692, 1694, - 1695, 1696, 1698, 1700, 1703, 1707, 1704, 6084, 1705, 1708, - 1706, 1713, 1712, 1716, 1720, 1722, 1724, 1726, 1727, 1734, - 1731, 1729, 1737, 1738, 1739, 1742, 6084, 1741, 1751, 1746, + 1552, 1557, 1558, 1565, 1561, 1560, 1562, 1563, 1566, 1589, + 6102, 1570, 6102, 6102, 1573, 6102, 6102, 1572, 1571, 6102, + 1578, 1575, 1579, 1592, 1595, 1599, 1587, 1600, 1597, 1612, + 1618, 1602, 1603, 1613, 1604, 1623, 1633, 1621, 1615, 1634, + 1638, 1635, 1641, 1642, 1646, 1648, 1643, 1651, 1652, 1653, + 1657, 1654, 1658, 1660, 1663, 1664, 1661, 1666, 1667, 1674, + 1680, 1672, 1687, 6102, 1683, 1690, 1697, 1693, 1700, 1692, + 1696, 1699, 1704, 1706, 1701, 1708, 1710, 1711, 1712, 1714, + 1716, 1719, 1723, 1720, 6102, 1721, 1724, 1722, 1729, 1728, + 1732, 1736, 1738, 1740, 1742, 1669, 1749, 1744, 1747, 1750, - 1752, 1748, 1754, 1755, 1758, 1759, 1761, 1760, 1762, 1764, - 1765, 1777, 1772, 1773, 1768, 1776, 1786, 1788, 1789, 1796, - 1778, 1791, 1793, 1797, 1799, 1801, 1803, 1804, 1812, 1814, - 1807, 1815, 1810, 1817, 1826, 1825, 1816, 1827, 1828, 1831, - 1836, 1838, 1840, 1841, 1842, 1850, 1834, 1846, 1848, 1851, - 1863, 1849, 1861, 1867, 1853, 1858, 1869, 1860, 6084, 1870, - 1871, 6084, 1872, 1876, 1898, 1880, 1873, 1884, 1883, 1886, - 1887, 1889, 1888, 1890, 1896, 1906, 1908, 1912, 1915, 1918, - 1913, 1921, 1917, 1920, 1924, 1929, 1940, 1942, 1944, 1932, - 1945, 1937, 1946, 1948, 1967, 1949, 1947, 1950, 1951, 1953, + 1754, 1753, 1755, 6102, 1757, 1761, 1764, 1767, 1768, 1756, + 1770, 1771, 1774, 1773, 1775, 1779, 1778, 1780, 1787, 1786, + 1788, 1784, 1791, 1801, 1792, 1797, 1809, 1804, 1810, 1811, + 1812, 1813, 1814, 1815, 1817, 1822, 1827, 1818, 1829, 1825, + 1841, 1844, 1826, 1828, 1839, 1843, 1840, 1849, 1852, 1853, + 1842, 1854, 1863, 1855, 1865, 1858, 1866, 1874, 1862, 1878, + 1869, 1872, 1879, 1880, 1881, 6102, 1883, 1884, 6102, 1886, + 1887, 1909, 1888, 1891, 1890, 1893, 1896, 1897, 1902, 1910, + 1911, 1913, 1929, 1919, 1922, 1931, 1932, 1903, 1934, 1935, + 1936, 1940, 1941, 1942, 1951, 1958, 1944, 1960, 1959, 1956, - 1955, 1962, 1957, 1958, 1969, 1979, 1972, 1974, 6084, 1989, - 1982, 1980, 1984, 1996, 1995, 1991, 6084, 1992, 1998, 2002, - 2009, 2004, 2005, 2006, 2008, 2012, 2014, 2015, 2016, 2020, - 2017, 2019, 2037, 6084, 2022, 6084, 2021, 2030, 2032, 2033, - 2039, 2040, 2041, 2043, 6084, 6084, 2044, 2045, 2052, 2062, - 2058, 6084, 2059, 2066, 2063, 2069, 2068, 2061, 2070, 2073, - 2074, 2077, 2084, 2076, 2085, 2080, 2083, 2089, 6084, 2090, - 2094, 2097, 2099, 2098, 2100, 2101, 2107, 6084, 2110, 2108, - 2111, 2118, 2121, 2113, 2109, 2123, 2128, 2125, 2130, 2131, - 2132, 2133, 2140, 2142, 2139, 2145, 2147, 2154, 6084, 2137, + 1961, 1963, 1982, 1962, 1964, 1965, 1972, 1966, 1968, 1977, + 1975, 1976, 1986, 1971, 1987, 1992, 6102, 1999, 1994, 1998, + 2000, 2009, 2006, 2004, 6102, 2007, 2010, 2014, 2021, 2018, + 2020, 2024, 2022, 2026, 2025, 2031, 2028, 2032, 2038, 2033, + 2052, 6102, 2035, 6102, 2034, 2036, 2047, 2049, 2053, 2054, + 2055, 2057, 6102, 6102, 2059, 2058, 2072, 2074, 2065, 6102, + 2061, 2076, 2079, 2081, 2082, 2085, 2086, 2088, 2087, 2089, + 2097, 2090, 2098, 2093, 2094, 2095, 6102, 2111, 2101, 2107, + 2113, 2103, 2115, 2116, 2117, 6102, 2124, 2123, 2125, 2132, + 2128, 2133, 2134, 2135, 2136, 2140, 2141, 2143, 2144, 2146, - 2138, 2159, 2156, 2163, 2157, 2160, 2164, 2165, 2167, 2168, - 2172, 2173, 2174, 2175, 2185, 2187, 2177, 2188, 2190, 2176, - 2196, 2197, 2202, 2199, 2203, 2200, 2180, 6084, 2201, 2207, - 2204, 399, 2208, 2211, 2213, 2216, 2214, 2228, 2215, 2236, - 2237, 2229, 2238, 2239, 2218, 2233, 2241, 2242, 2243, 2245, - 2248, 2249, 6084, 2251, 2253, 2254, 2255, 2258, 2256, 2261, - 6084, 2259, 2269, 2279, 2281, 2271, 2283, 2265, 2273, 2287, - 2289, 2282, 2290, 2292, 2293, 6084, 2298, 2299, 2300, 2302, - 2306, 2309, 2307, 2308, 2310, 2314, 2315, 2317, 2319, 2318, - 2320, 2321, 2328, 2329, 2334, 2324, 2331, 2336, 6084, 2343, + 2151, 2154, 2150, 2156, 2157, 2170, 6102, 2149, 2153, 2171, + 2169, 2176, 2168, 2172, 2166, 2178, 2179, 2180, 2185, 2186, + 2187, 2188, 2195, 2198, 2190, 2201, 2194, 2191, 2200, 2203, + 2212, 2202, 2209, 2211, 2213, 6102, 2216, 2222, 2217, 391, + 2219, 2224, 2228, 2226, 2223, 2242, 2225, 2249, 2250, 2229, + 2246, 2247, 2251, 2253, 2254, 2255, 2256, 2257, 2258, 2260, + 6102, 2262, 2263, 2266, 2268, 2272, 2269, 2271, 6102, 2280, + 2286, 2293, 2288, 2282, 2294, 2298, 2300, 2227, 2299, 2301, + 2302, 2303, 2305, 2306, 6102, 2310, 2307, 2319, 2311, 2321, + 2323, 2313, 2315, 2328, 2329, 2332, 2334, 2333, 2335, 2336, - 2338, 2340, 2347, 2341, 2352, 2348, 2364, 2350, 2356, 2359, - 2365, 2373, 2362, 2367, 2374, 2379, 2383, 2384, 2377, 2385, - 2389, 2397, 2387, 2399, 2401, 2391, 2395, 2403, 2402, 2405, - 2407, 2409, 2420, 2423, 2419, 2425, 2426, 2415, 2433, 2428, - 6084, 2432, 2434, 2437, 2438, 2451, 2443, 2441, 2448, 2454, - 2456, 2457, 2458, 2459, 2466, 2461, 2464, 2467, 2469, 2470, - 2471, 2475, 2478, 2482, 2486, 2479, 2489, 2490, 6084, 2495, - 2491, 2483, 2497, 2500, 2501, 2505, 2507, 2509, 2510, 2511, - 2513, 2515, 2516, 2517, 2518, 2520, 2522, 2525, 6084, 2527, - 2526, 2528, 2534, 2539, 2538, 2540, 2542, 2549, 2551, 2536, + 2337, 2338, 2339, 2342, 2341, 2346, 2350, 6102, 2360, 2352, + 2351, 2362, 2353, 2363, 2364, 2375, 2371, 2372, 2378, 2379, + 2392, 2381, 2384, 2383, 2387, 2398, 2395, 2402, 2407, 2408, + 2409, 2385, 2416, 2418, 2399, 2414, 2420, 2422, 2425, 2424, + 2426, 2433, 2434, 2431, 2435, 2437, 2440, 2450, 2443, 6102, + 2445, 2452, 2456, 2459, 2464, 2460, 2461, 2465, 2462, 2466, + 2471, 2472, 2473, 2484, 2479, 2477, 2481, 2488, 2482, 2489, + 2486, 2492, 2494, 2501, 2497, 2503, 2505, 6102, 2506, 2508, + 2510, 2511, 2515, 2516, 2519, 2521, 2523, 2524, 2525, 2527, + 2530, 2531, 2532, 2533, 2535, 2537, 2540, 6102, 2548, 2541, - 2552, 2553, 2555, 6084, 2563, 2565, 2561, 2570, 2562, 2567, - 2569, 2573, 2574, 6084, 2575, 2576, 2577, 2584, 2585, 2581, - 6084, 2588, 2583, 2589, 2592, 2591, 2593, 2598, 2595, 2601, - 2602, 2607, 2614, 2606, 2616, 6084, 2608, 2623, 2610, 2624, - 2630, 2618, 2619, 2625, 2631, 2635, 2641, 6084, 2648, 2645, - 2646, 2653, 2644, 2650, 2651, 2654, 2656, 2660, 2658, 6084, - 2661, 2662, 2664, 2666, 2668, 2670, 2671, 2679, 2677, 2681, - 2683, 2684, 2686, 2685, 2687, 2691, 2702, 2693, 2694, 2695, - 2705, 2706, 2708, 2709, 2710, 2719, 2722, 2717, 2725, 6084, - 2728, 2729, 2714, 2721, 2731, 2732, 2734, 2735, 2737, 2738, + 2542, 2543, 2549, 2553, 2555, 2559, 2562, 2565, 2566, 2567, + 2382, 2568, 6102, 2575, 2577, 2574, 2578, 2576, 2580, 2582, + 2587, 2583, 6102, 2589, 2588, 2590, 2597, 2598, 2594, 6102, + 2601, 2596, 2602, 2605, 2606, 2607, 2611, 2609, 2614, 2615, + 2618, 2627, 2619, 2630, 6102, 2621, 2637, 2628, 2632, 2643, + 2624, 2634, 2644, 2645, 2652, 2647, 6102, 2663, 2656, 2655, + 2670, 2648, 2658, 2665, 2668, 2671, 2672, 2674, 2675, 6102, + 2677, 2678, 2680, 2681, 2685, 2686, 2687, 2694, 2693, 2692, + 2699, 2697, 2700, 2701, 2702, 2703, 2709, 2708, 2716, 2717, + 2719, 2721, 2722, 2723, 2724, 2736, 2737, 2732, 2739, 6102, - 2743, 2740, 2742, 2750, 2759, 2751, 2755, 2760, 2762, 2763, - 2764, 2765, 2766, 2752, 2773, 2775, 2768, 2782, 2774, 2777, - 2791, 2778, 2787, 2788, 2789, 2790, 2792, 2795, 2798, 2800, - 2802, 2812, 2816, 2796, 2805, 2817, 2818, 2819, 2820, 6084, - 2823, 2824, 2821, 2825, 2828, 2834, 2835, 2837, 2838, 2842, - 2843, 2846, 2847, 2849, 2852, 2854, 2862, 2858, 6084, 2859, - 6084, 2860, 2861, 2863, 2871, 2867, 6084, 2873, 6084, 2875, - 2880, 2868, 2876, 6084, 2882, 2883, 2886, 2888, 2890, 2891, - 2894, 2893, 2896, 2899, 2897, 2901, 2902, 2904, 2907, 2909, - 2914, 2911, 2915, 2921, 2918, 2924, 2925, 2927, 2928, 2931, + 2742, 2743, 2745, 2728, 2735, 2748, 2750, 2751, 2753, 2756, + 2755, 2758, 2759, 2767, 2771, 2762, 2768, 2774, 2775, 2776, + 2779, 2777, 2780, 2781, 2789, 2786, 2787, 2798, 2788, 2795, + 2803, 2790, 2802, 2804, 2805, 2806, 2808, 2810, 2811, 2814, + 2815, 2819, 2831, 2828, 2822, 2832, 2834, 2835, 2836, 6102, + 2839, 2841, 2837, 2840, 2847, 2850, 2851, 2859, 2854, 2858, + 2861, 2864, 2870, 2862, 2865, 2867, 2878, 2876, 6102, 2873, + 6102, 2877, 2879, 2880, 2892, 2885, 6102, 2889, 6102, 2890, + 2895, 2896, 2897, 6102, 2899, 2900, 2901, 2903, 2906, 2907, + 2908, 2909, 2911, 2915, 2917, 2918, 2919, 2922, 2923, 2929, - 2933, 2936, 6084, 2938, 2934, 2940, 2942, 2943, 2945, 2946, - 2947, 2955, 2953, 2954, 2957, 2964, 2961, 2965, 2970, 2978, - 2968, 2982, 6084, 2977, 2980, 2983, 2984, 6084, 2987, 2985, - 2993, 2995, 2986, 2989, 2997, 2998, 3003, 2999, 3005, 3010, - 3014, 3015, 3018, 6084, 3017, 3019, 3006, 3027, 3029, 3033, - 3034, 3039, 3042, 3041, 3032, 3043, 3044, 3047, 3048, 3055, - 3056, 3052, 3059, 3054, 3060, 3069, 3066, 3058, 3062, 3064, - 3072, 3073, 3078, 3079, 3070, 3080, 3075, 3081, 3085, 3088, - 6084, 3093, 3094, 3097, 3103, 3096, 3098, 3089, 3100, 3106, - 3105, 3110, 3107, 3108, 6084, 3121, 6084, 3122, 3123, 3128, + 2930, 2932, 2931, 2939, 2940, 2933, 2941, 2935, 2945, 2950, + 2949, 2955, 6102, 2952, 2958, 2959, 2961, 2962, 2964, 2963, + 2965, 2967, 2969, 2970, 2971, 2979, 2973, 2983, 2986, 2998, + 2976, 3000, 6102, 2987, 3003, 2995, 2999, 6102, 3004, 2997, + 3006, 3010, 3008, 3012, 3013, 3015, 3016, 3019, 3020, 3023, + 3033, 3032, 3035, 6102, 3025, 3039, 3024, 3042, 3047, 3056, + 3043, 3051, 3057, 3059, 3055, 3061, 3062, 3063, 3064, 3065, + 3072, 3073, 3070, 3077, 3069, 3076, 3079, 3083, 3085, 3086, + 3087, 3090, 3091, 3089, 3096, 3097, 3099, 3094, 3095, 3098, + 3100, 6102, 3117, 3102, 3113, 3119, 3109, 3111, 3123, 3126, - 3130, 3125, 3131, 3132, 3134, 3138, 3139, 3140, 3143, 3142, - 3144, 3146, 3150, 3153, 3154, 3170, 3157, 3152, 3166, 3159, - 3167, 3168, 3171, 6084, 6084, 3173, 3174, 3175, 3178, 3180, - 3182, 3185, 3190, 3188, 3191, 3195, 3196, 3207, 6084, 3197, - 3203, 3204, 3205, 3219, 3212, 3221, 3223, 3222, 3231, 3228, - 6084, 3215, 3224, 3239, 3229, 3237, 3247, 6084, 3236, 6084, - 3232, 3243, 3245, 3248, 3250, 3252, 3254, 3255, 3259, 3266, - 3267, 3264, 3271, 3256, 3272, 3273, 3274, 3281, 3278, 3279, - 3283, 6084, 3285, 3282, 3289, 3286, 3294, 3298, 3288, 3296, - 6084, 3304, 3305, 3307, 3308, 3309, 3310, 3312, 3314, 3315, + 3127, 3128, 3130, 3129, 3132, 6102, 3131, 6102, 3133, 3139, + 3135, 3150, 3140, 3145, 3153, 3155, 3157, 3159, 3160, 3161, + 3162, 3164, 3167, 3168, 3173, 3174, 3175, 3172, 3177, 3179, + 3184, 3186, 3188, 3189, 6102, 6102, 3190, 3191, 3193, 3195, + 3196, 3198, 3206, 3208, 3213, 3210, 3212, 3214, 3225, 6102, + 3216, 3222, 3223, 3226, 3235, 3234, 3239, 3242, 3241, 3249, + 3244, 6102, 3227, 3240, 3257, 3248, 3253, 3264, 6102, 3255, + 6102, 3259, 3260, 3265, 3266, 3267, 3268, 3269, 3270, 3272, + 3282, 3291, 3274, 3289, 3277, 3286, 3290, 3292, 3300, 3295, + 3296, 3298, 6102, 3302, 3299, 3303, 3306, 3308, 3310, 3314, - 3313, 3318, 3317, 3323, 3332, 3333, 3324, 3331, 3335, 3338, - 3340, 6084, 3344, 3346, 3353, 3351, 3348, 3352, 3356, 3357, - 3358, 3361, 3363, 3362, 3364, 3366, 3368, 3365, 3375, 3369, - 3382, 3371, 3385, 3391, 3392, 3372, 3388, 3395, 3396, 3399, - 3398, 3402, 3405, 3409, 3406, 3418, 3419, 3410, 3413, 3422, - 3423, 3430, 3425, 6084, 3435, 3415, 3438, 3436, 3437, 3442, - 3443, 3445, 3452, 3451, 3439, 3447, 3454, 3449, 6084, 3472, - 3460, 3453, 3457, 3458, 3462, 3475, 3476, 3477, 3479, 3480, - 3481, 3483, 3485, 3486, 3489, 3490, 6084, 6084, 3492, 3493, - 3495, 6084, 3499, 3494, 3511, 3501, 3502, 3497, 3509, 3513, + 3318, 6102, 3320, 3321, 3325, 3326, 3322, 3327, 3329, 3330, + 3331, 3335, 3337, 3333, 3339, 3348, 3343, 3340, 3350, 3354, + 3357, 3362, 6102, 3363, 3364, 3371, 3367, 3369, 3370, 3374, + 3375, 3376, 3378, 3379, 3380, 3382, 3387, 3386, 3383, 3384, + 3389, 3400, 3402, 3403, 3411, 3414, 3392, 6102, 3404, 3415, + 3416, 3417, 3421, 3424, 3427, 3429, 3420, 3433, 3438, 3422, + 3430, 3442, 3390, 3450, 3445, 6102, 3452, 3447, 3455, 3434, + 3453, 3458, 3460, 3462, 3469, 3464, 3454, 3466, 3479, 3468, + 6102, 3481, 3470, 3485, 3471, 3489, 3496, 3491, 3472, 3493, + 3495, 3497, 3498, 3501, 3502, 3505, 3508, 3509, 6102, 6102, - 3514, 3519, 3517, 3521, 6084, 3524, 3531, 3526, 3527, 3536, - 3538, 3542, 3528, 3535, 3539, 3545, 3548, 3547, 3549, 3551, - 3552, 3561, 3562, 3554, 3557, 3565, 6084, 3558, 3566, 3563, - 3571, 3573, 3575, 6084, 3576, 3579, 3580, 3582, 3594, 3596, - 3587, 3602, 3584, 3597, 3589, 3599, 3606, 3607, 3615, 3610, - 3612, 3614, 3618, 3616, 6084, 3621, 3622, 3623, 3629, 6084, - 3632, 3640, 3641, 3642, 3624, 3644, 3645, 3652, 6084, 3647, - 3651, 3648, 3637, 3664, 3653, 3667, 3663, 3654, 6084, 3665, - 3669, 3671, 6084, 3670, 3678, 3681, 3683, 3672, 3690, 3685, - 3689, 3687, 3686, 6084, 3696, 6084, 3697, 3698, 3702, 6084, + 3511, 3503, 3513, 6102, 3516, 3512, 3526, 3518, 3515, 3519, + 3530, 3531, 3527, 3538, 3532, 3535, 6102, 3541, 3548, 3543, + 3545, 3550, 3555, 3557, 3554, 3560, 3547, 3561, 3562, 3565, + 3564, 3566, 3570, 3578, 3579, 3575, 3576, 3577, 6102, 3583, + 3584, 3585, 3587, 3588, 3589, 6102, 3593, 3594, 3596, 3599, + 3601, 3605, 3610, 3614, 3611, 3615, 3616, 3617, 3618, 3619, + 3630, 3625, 3623, 3634, 3636, 3627, 6102, 3641, 3642, 3643, + 3645, 6102, 3647, 3655, 3657, 3662, 3648, 3659, 3660, 3667, + 6102, 3665, 3666, 3668, 3669, 3679, 3671, 3681, 3678, 3676, + 6102, 3684, 3682, 3685, 6102, 3686, 3691, 3698, 3700, 3687, - 3699, 3704, 3707, 3706, 3708, 3709, 3713, 3720, 3715, 3721, - 3656, 3722, 3723, 3724, 3731, 3726, 3728, 3732, 3733, 6084, - 3739, 3734, 3736, 3742, 3746, 3748, 3738, 3749, 3753, 6084, - 6084, 3757, 6084, 3758, 3762, 3763, 6084, 3765, 3767, 3770, - 3768, 3771, 3773, 3777, 3774, 6084, 3783, 3769, 3784, 3786, - 3788, 3789, 3793, 3794, 3795, 3792, 3796, 3802, 6084, 3799, - 3800, 3814, 3798, 3803, 3817, 3822, 3809, 6084, 3825, 3824, - 3815, 3831, 3828, 6084, 3832, 6084, 3834, 3837, 3838, 3840, - 3839, 6084, 3843, 3847, 3849, 3844, 3851, 3853, 3854, 3857, - 3860, 3863, 3871, 3864, 3866, 3867, 6084, 3868, 3872, 3874, + 3708, 3703, 3705, 3706, 3695, 6102, 3711, 6102, 3714, 3713, + 3718, 6102, 3715, 3720, 3721, 3723, 3724, 3729, 3730, 3737, + 3728, 3731, 3738, 3739, 3741, 3742, 3749, 3744, 3746, 3750, + 3751, 6102, 3752, 3754, 3757, 3759, 3761, 3763, 3767, 3769, + 3771, 6102, 6102, 3777, 6102, 3778, 3773, 3779, 6102, 3782, + 3780, 3791, 3783, 3786, 3790, 3799, 3793, 6102, 3796, 3802, + 3805, 3806, 3804, 3808, 3809, 3810, 3811, 3812, 3815, 3814, + 6102, 3816, 3819, 3818, 3826, 3827, 3832, 3834, 3828, 6102, + 3837, 3841, 3840, 3845, 3846, 6102, 3851, 6102, 3849, 3852, + 3854, 3855, 3856, 6102, 3862, 3859, 3869, 3863, 3865, 3872, - 3876, 3880, 3881, 3888, 3884, 3890, 3885, 3891, 3894, 3896, - 3897, 3904, 3900, 3906, 3902, 6084, 3910, 3912, 3913, 3924, - 3916, 3915, 6084, 3917, 3921, 3928, 6084, 3930, 3931, 3932, - 3936, 3937, 3938, 3942, 3939, 3944, 6084, 3940, 3945, 3946, - 3949, 3960, 3961, 6084, 6084, 3962, 6084, 3963, 3948, 3964, - 3967, 3947, 3973, 3975, 3977, 3984, 3976, 3987, 3988, 3989, - 3978, 3998, 3996, 4005, 4001, 4003, 3994, 6084, 6084, 4007, - 4008, 4010, 4013, 4015, 4017, 4018, 4026, 4022, 4024, 4031, - 4028, 4038, 6084, 4035, 4021, 4040, 6084, 4037, 4042, 4043, - 4045, 4046, 4049, 4048, 4050, 4052, 4053, 4055, 4059, 4056, + 3871, 3877, 3878, 3879, 3886, 3883, 3881, 3884, 6102, 3885, + 3887, 3891, 3897, 3893, 3895, 3906, 3902, 3903, 3909, 3910, + 3912, 3913, 3916, 3919, 3914, 3924, 3921, 6102, 3922, 3928, + 3932, 3941, 3933, 3936, 6102, 3937, 3938, 3945, 6102, 3944, + 3946, 3947, 3952, 3954, 3955, 3958, 3961, 3962, 6102, 3959, + 3964, 3960, 3963, 3965, 3969, 6102, 6102, 3979, 6102, 3981, + 3967, 3982, 3983, 3984, 3986, 3989, 3991, 3993, 3994, 3999, + 4002, 4004, 3996, 4011, 4012, 4014, 4016, 4015, 4020, 6102, + 6102, 4022, 4024, 4026, 4028, 4029, 4031, 4033, 4038, 4036, + 4044, 4047, 4037, 4054, 6102, 4049, 4052, 4055, 6102, 4056, - 4068, 4058, 4065, 4061, 4069, 4072, 4076, 4079, 6084, 4081, - 4082, 4083, 4086, 4087, 4088, 4091, 4092, 4093, 6084, 4090, - 4096, 4098, 4097, 4106, 4099, 4108, 4115, 4118, 4123, 4110, - 4120, 4126, 4128, 4130, 4131, 6084, 4134, 4124, 4132, 4135, - 4142, 4146, 4138, 4149, 4143, 4151, 4153, 4154, 4156, 4163, - 4158, 4160, 4164, 4165, 6084, 4166, 4174, 4167, 4176, 4170, - 4177, 4179, 4180, 4190, 4185, 4187, 4191, 4193, 6084, 4194, - 4195, 4197, 4199, 4201, 4198, 4206, 4205, 4207, 6084, 4209, - 4213, 4216, 4215, 4219, 4221, 4224, 4225, 4227, 4228, 4231, - 6084, 4232, 4235, 4238, 4241, 4242, 4246, 4247, 4245, 6084, + 4057, 4060, 4058, 4061, 4064, 4063, 4065, 4069, 4067, 4071, + 4076, 4075, 4086, 4068, 4084, 4078, 4087, 4088, 4077, 4099, + 6102, 4100, 4093, 4102, 4103, 4104, 4105, 4106, 4107, 4109, + 6102, 4110, 4114, 4111, 4115, 4120, 4117, 4122, 4136, 4139, + 4141, 4129, 4132, 4142, 4146, 4148, 4149, 6102, 4151, 4150, + 4152, 4153, 4160, 4162, 4157, 4164, 4166, 4168, 4171, 4169, + 4178, 4180, 4173, 4181, 4175, 4182, 6102, 4183, 4192, 4185, + 4194, 4195, 4196, 4197, 4198, 4206, 4203, 4208, 4207, 4210, + 6102, 4211, 4212, 4215, 4216, 4218, 4219, 4224, 4221, 4225, + 6102, 4228, 4232, 4234, 4233, 4237, 4239, 4242, 4243, 4245, - 4248, 4254, 4257, 4262, 4258, 4269, 4260, 4268, 4261, 4264, - 4275, 4274, 4276, 4280, 4281, 4270, 4288, 4293, 4291, 6084, - 4292, 6084, 4294, 4296, 4304, 4299, 4301, 4302, 6084, 4305, - 4307, 4310, 4311, 4316, 6084, 4315, 4313, 4317, 4318, 6084, - 4328, 4314, 4320, 4333, 4335, 4336, 6084, 4339, 4341, 4342, - 4349, 4352, 4351, 4348, 4353, 4355, 4356, 4357, 4358, 4366, - 4361, 4363, 6084, 4365, 4371, 4373, 4377, 4378, 4364, 4379, - 4381, 4385, 6084, 4386, 4388, 4389, 4390, 4392, 4393, 4394, - 4401, 4397, 4400, 6084, 4402, 4405, 4406, 4416, 4407, 4417, - 6084, 6084, 4412, 4422, 4424, 4420, 4428, 6084, 4430, 4431, + 4246, 4253, 6102, 4249, 4258, 4259, 4250, 4265, 4251, 4262, + 4260, 6102, 4269, 4276, 4270, 4283, 4266, 4288, 4279, 4289, + 4280, 4290, 4292, 4291, 4293, 4297, 4298, 4296, 4314, 4315, + 4312, 6102, 4299, 6102, 4304, 4317, 4326, 4321, 4323, 4311, + 6102, 4324, 4325, 4335, 4327, 4329, 6102, 4332, 4336, 4339, + 4337, 6102, 4343, 4345, 4347, 4348, 4356, 4357, 6102, 4362, + 4363, 4359, 4371, 4374, 4370, 4372, 4375, 4373, 4377, 4378, + 4379, 4387, 4382, 4383, 6102, 4389, 4392, 4399, 4400, 4394, + 4384, 4402, 4408, 4401, 6102, 4410, 4409, 4411, 4412, 4413, + 4416, 4418, 4425, 4421, 4420, 6102, 4422, 4424, 4428, 4441, - 4432, 4436, 4433, 6084, 6084, 4438, 6084, 4439, 6084, 4440, - 4443, 6084, 6084, 4445, 4441, 4447, 4448, 4456, 6084, 4461, - 6084, 4464, 4462, 4449, 4451, 4466, 6084, 4468, 4469, 4475, - 6084, 4470, 4478, 4476, 4477, 6084, 4483, 4485, 4480, 4484, - 6084, 4489, 4496, 4486, 4493, 4497, 4498, 4505, 4500, 4501, - 4504, 4508, 4509, 4512, 4519, 4521, 4523, 4525, 4526, 4510, - 4527, 4530, 4533, 4535, 4536, 4537, 4539, 4541, 4542, 4544, - 4546, 4549, 4550, 4551, 4552, 4553, 4554, 4556, 4563, 4566, - 4568, 4567, 4569, 4571, 4570, 4572, 4575, 4578, 4581, 4580, - 4582, 6084, 4574, 4585, 4588, 4596, 4591, 4598, 4601, 4609, + 4437, 4351, 6102, 6102, 4430, 4442, 4446, 4432, 4447, 6102, + 4450, 4457, 4452, 4456, 4453, 6102, 6102, 4460, 6102, 4461, + 6102, 4463, 4465, 6102, 6102, 4466, 4467, 4468, 4469, 4476, + 6102, 4483, 6102, 4478, 4484, 4470, 4480, 4487, 6102, 4488, + 4489, 4491, 6102, 4494, 4504, 4495, 4496, 6102, 4500, 4505, + 4497, 4506, 6102, 4509, 4515, 4512, 4518, 4519, 4520, 4521, + 4526, 4527, 4522, 4530, 4529, 4532, 4539, 4543, 4545, 4547, + 4548, 4533, 4550, 4552, 4556, 4554, 4558, 4559, 4561, 4563, + 4564, 4568, 4572, 4123, 4569, 4573, 4574, 4565, 4582, 4575, + 4576, 4589, 4584, 4578, 4590, 4592, 4591, 4594, 4597, 4598, - 4613, 4614, 6084, 4616, 6084, 4618, 4602, 4610, 4604, 6084, - 4622, 4625, 4624, 4627, 4626, 4628, 4629, 4630, 4633, 4634, - 4636, 6084, 4639, 4632, 4640, 4645, 6084, 4653, 4656, 4641, - 4657, 4658, 4661, 4660, 4663, 4664, 4666, 4668, 4670, 4672, - 4679, 4674, 4682, 4677, 4683, 4684, 4686, 4689, 4691, 4699, - 4700, 4708, 6084, 4690, 6084, 4701, 4695, 4703, 4705, 4711, - 4712, 4717, 6084, 6084, 4713, 4718, 4720, 4722, 4723, 4727, - 4724, 6084, 4729, 4730, 4739, 4735, 6084, 4731, 4740, 4742, - 4750, 6084, 4743, 4745, 4747, 4753, 4756, 4758, 4759, 4761, - 4763, 4765, 4767, 6084, 6084, 6084, 6084, 4768, 4771, 4773, + 4602, 4601, 4603, 6102, 4606, 4600, 4607, 4614, 4612, 4620, + 4623, 4632, 4634, 4635, 6102, 4637, 6102, 4639, 4627, 4641, + 4629, 6102, 4642, 4643, 4644, 4647, 4646, 4649, 4619, 4650, + 4653, 4654, 4656, 6102, 4659, 4651, 4665, 4664, 6102, 4668, + 4676, 4660, 4679, 4680, 4681, 4682, 4683, 4686, 4684, 4689, + 4691, 4693, 4704, 4694, 4695, 4699, 4706, 4685, 4707, 4708, + 4714, 4720, 4715, 4722, 6102, 4709, 6102, 4723, 4724, 4725, + 4726, 4729, 4730, 4733, 6102, 6102, 4731, 4735, 4740, 4741, + 4736, 4745, 4749, 6102, 4742, 4755, 4748, 4758, 6102, 4760, + 4761, 4762, 4764, 6102, 4765, 4767, 4766, 4769, 4772, 4774, - 4774, 4776, 4781, 4782, 4784, 4780, 6084, 4786, 6084, 6084, - 4792, 4794, 4788, 4796, 4798, 4800, 4803, 4805, 6084, 4807, - 4804, 4810, 4808, 4817, 4821, 4825, 4811, 4826, 4814, 4827, - 4834, 4830, 4836, 4829, 4833, 4840, 4842, 6084, 6084, 4843, - 4847, 4848, 4855, 4852, 4853, 4865, 4860, 4861, 4862, 4863, - 4867, 4868, 4876, 4879, 4869, 4872, 6084, 4877, 4880, 6084, - 4881, 6084, 4885, 4886, 4887, 4888, 4894, 4895, 4896, 4898, - 6084, 6084, 6084, 4892, 4899, 4902, 4909, 4906, 4913, 4900, - 4917, 4910, 6084, 4912, 6084, 4914, 4920, 4931, 4918, 4932, - 4939, 4941, 4937, 4938, 4923, 6084, 4940, 4942, 6084, 4944, + 4778, 4779, 4780, 4785, 4787, 6102, 6102, 6102, 6102, 4789, + 4784, 4793, 4794, 4795, 4800, 4801, 4799, 4802, 6102, 4804, + 6102, 6102, 4811, 4813, 4805, 4815, 4814, 4812, 4821, 4824, + 6102, 4823, 4828, 4829, 4825, 4827, 4836, 4842, 4837, 4843, + 4839, 4845, 4852, 4849, 4850, 4847, 4853, 4856, 4860, 6102, + 6102, 4861, 4865, 4866, 4873, 4870, 4871, 4883, 4878, 4879, + 4880, 4881, 4885, 4886, 4894, 4897, 4887, 4890, 6102, 4895, + 4898, 6102, 4899, 6102, 4903, 4904, 4905, 4906, 4912, 4913, + 4914, 4916, 6102, 6102, 6102, 4910, 4917, 4920, 4927, 4924, + 4931, 4918, 4935, 4928, 6102, 4930, 6102, 4932, 4938, 4949, - 4945, 4947, 6084, 4950, 4952, 4954, 4957, 6084, 4961, 4963, - 4964, 6084, 4966, 6084, 4958, 4968, 4971, 4980, 6084, 4972, - 4975, 6084, 4982, 4985, 4986, 4977, 6084, 4987, 6084, 4988, - 4994, 4995, 4998, 4991, 5000, 5001, 5002, 5003, 5010, 5012, - 5009, 6084, 6084, 260, 5022, 5007, 5015, 5018, 5019, 5029, - 5024, 5027, 5033, 6084, 6084, 5034, 6084, 5028, 5037, 6084, - 5026, 5041, 5042, 5043, 5045, 5046, 5047, 5053, 5050, 5054, - 5055, 5056, 5062, 5073, 5058, 5079, 5080, 5082, 5084, 5086, - 5074, 5071, 5068, 5089, 5091, 5092, 5093, 6084, 5095, 5096, - 5098, 6084, 5102, 5097, 5106, 5103, 6084, 5110, 5111, 5114, + 4936, 4950, 4957, 4959, 4955, 4956, 4941, 6102, 4958, 4960, + 6102, 4962, 4963, 4965, 6102, 4968, 4970, 4972, 4975, 6102, + 4979, 4981, 4982, 6102, 4984, 6102, 4976, 4986, 4989, 4998, + 6102, 4990, 4993, 6102, 5000, 5003, 5004, 4995, 6102, 5005, + 6102, 5006, 5012, 5013, 5016, 5009, 5018, 5019, 5020, 5021, + 5028, 5030, 5027, 6102, 6102, 181, 5040, 5025, 5033, 5036, + 5037, 5047, 5042, 5045, 5051, 6102, 6102, 5052, 6102, 5046, + 5055, 6102, 5044, 5059, 5060, 5061, 5063, 5064, 5065, 5071, + 5068, 5072, 5073, 5074, 5080, 5091, 5076, 5097, 5098, 5100, + 5102, 5104, 5092, 5089, 5086, 5107, 5109, 5110, 5111, 6102, - 5117, 6084, 5107, 5119, 5124, 5121, 5122, 5133, 5129, 5131, - 5134, 6084, 6084, 6084, 5136, 5144, 6084, 5146, 5135, 5139, - 5147, 6084, 5148, 5150, 6084, 6084, 5151, 5152, 5153, 5160, - 6084, 5155, 6084, 5156, 6084, 5158, 5166, 5168, 5170, 6084, - 5175, 5181, 6084, 5184, 5187, 5189, 5190, 5172, 5159, 5191, - 6084, 5200, 5193, 5197, 5204, 5195, 5201, 5205, 5206, 5214, - 5207, 5212, 6084, 5215, 5216, 5218, 5225, 5209, 5220, 5217, - 6084, 5230, 6084, 5227, 5231, 5234, 5233, 5236, 5239, 5241, - 5243, 5245, 5247, 5250, 6084, 5254, 5256, 6084, 5251, 6084, - 5260, 6084, 5257, 5261, 5262, 5263, 6084, 5265, 5266, 5267, + 5113, 5114, 5116, 6102, 5120, 5115, 5124, 5121, 6102, 5128, + 5129, 5132, 5135, 6102, 5125, 5137, 5142, 5139, 5140, 5151, + 5147, 5149, 5152, 6102, 6102, 6102, 5154, 5162, 6102, 5164, + 5153, 5157, 5165, 6102, 5166, 5168, 6102, 6102, 5169, 5170, + 5171, 5178, 6102, 5173, 6102, 5174, 6102, 5176, 5184, 5186, + 5188, 6102, 5193, 5199, 6102, 5202, 5205, 5207, 5208, 5190, + 5177, 5209, 6102, 5218, 5211, 5215, 5222, 5213, 5219, 5223, + 5224, 5232, 5225, 5230, 6102, 5233, 5234, 5236, 5243, 5227, + 5238, 5235, 6102, 5248, 6102, 5245, 5249, 5252, 5251, 5254, + 5257, 5259, 5261, 5263, 5265, 5268, 6102, 5272, 5274, 6102, - 5270, 6084, 5274, 5279, 5276, 5281, 6084, 6084, 5282, 5291, - 5283, 5284, 5297, 5299, 5287, 5301, 5292, 5304, 5294, 5311, - 5308, 5309, 5310, 5316, 5319, 5317, 6084, 6084, 6084, 5312, - 5323, 5331, 5329, 5332, 5339, 5326, 6084, 5336, 5337, 5334, - 5346, 5338, 5348, 6084, 5345, 5349, 5350, 5351, 5359, 5352, - 5354, 6084, 5361, 5366, 5368, 5362, 5369, 5378, 5380, 5382, - 5383, 6084, 5385, 6084, 6084, 5370, 6084, 5372, 5386, 5387, - 5390, 6084, 5393, 5396, 5395, 5397, 5399, 5401, 6084, 5411, - 5402, 5404, 5407, 6084, 6084, 5414, 6084, 5417, 5419, 5418, - 5426, 5421, 5427, 5429, 5425, 6084, 5431, 5434, 5436, 5437, + 5269, 6102, 5278, 6102, 5275, 5279, 5280, 5281, 6102, 5283, + 5284, 5285, 5288, 6102, 5292, 5297, 5294, 5299, 6102, 6102, + 5300, 5309, 5301, 5302, 5315, 5317, 5305, 5319, 5310, 5322, + 5312, 5329, 5326, 5327, 5328, 5334, 5337, 5335, 6102, 6102, + 6102, 5330, 5341, 5349, 5347, 5350, 5357, 5344, 6102, 5354, + 5355, 5352, 5364, 5356, 5366, 6102, 5363, 5367, 5368, 5369, + 5377, 5370, 5372, 6102, 5379, 5384, 5386, 5380, 5387, 5396, + 5398, 5400, 5401, 6102, 5403, 6102, 6102, 5388, 6102, 5390, + 5404, 5405, 5408, 6102, 5411, 5414, 5413, 5415, 5417, 5419, + 6102, 5429, 5420, 5422, 5425, 6102, 6102, 5432, 6102, 5435, - 5438, 6084, 5439, 5440, 5442, 5443, 5446, 5445, 5448, 5450, - 5452, 6084, 5453, 5455, 5473, 5469, 6084, 5456, 5468, 6084, - 6084, 5478, 5480, 5482, 6084, 6084, 6084, 5484, 6084, 5488, - 5492, 5496, 5500, 5491, 6084, 5502, 5485, 5499, 6084, 6084, - 5504, 5505, 5506, 5508, 6084, 6084, 5509, 5510, 5512, 5514, - 5515, 6084, 5518, 5519, 5520, 5527, 5532, 5522, 5533, 5535, - 5546, 5548, 5529, 5541, 5539, 5550, 5552, 5543, 5559, 5567, - 5563, 5565, 5571, 5568, 6084, 6084, 5575, 6084, 6084, 5577, - 5579, 5581, 5583, 5585, 5587, 5589, 6084, 5590, 5592, 5593, - 5460, 5594, 6084, 5553, 5596, 5551, 5597, 5600, 5603, 5598, + 5437, 5436, 5444, 5439, 5445, 5447, 5443, 6102, 5449, 5452, + 5454, 5455, 5456, 6102, 5457, 5458, 5460, 5461, 5464, 5463, + 5466, 5468, 5470, 6102, 5471, 5473, 5491, 5487, 6102, 5474, + 5486, 6102, 6102, 5496, 5498, 5500, 6102, 6102, 6102, 5502, + 6102, 5506, 5510, 5514, 5518, 5509, 6102, 5520, 5503, 5517, + 6102, 6102, 5522, 5523, 5524, 5526, 6102, 6102, 5527, 5528, + 5530, 5532, 5533, 6102, 5536, 5537, 5538, 5545, 5550, 5540, + 5551, 5553, 5564, 5566, 5547, 5559, 5557, 5568, 5570, 5561, + 5577, 5585, 5581, 5583, 5589, 5586, 6102, 6102, 5593, 6102, + 6102, 5595, 5597, 5599, 5601, 5603, 5605, 5607, 6102, 5608, - 5606, 6084, 6084, 5601, 5608, 5607, 5615, 5609, 6084, 5617, - 5624, 5621, 5623, 5622, 5625, 5626, 6084, 5630, 5629, 6084, - 6084, 5631, 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6084, - 5634, 6084, 5632, 5640, 5648, 5650, 6084, 5644, 5651, 5652, - 5653, 5654, 6084, 5655, 5658, 5657, 5659, 5664, 5665, 5663, - 5670, 5672, 5671, 5674, 5677, 5675, 5681, 5680, 5682, 5683, - 6084, 6084, 6084, 5686, 5685, 5695, 5697, 5704, 5707, 5710, - 5712, 5696, 5698, 5713, 5714, 5717, 5720, 5721, 5729, 5724, - 5725, 5726, 5727, 5733, 5728, 5730, 5735, 6084, 5739, 6084, - 5740, 6084, 6084, 5742, 5750, 5744, 5746, 5759, 5761, 5748, + 5610, 5611, 5478, 5612, 6102, 5571, 5614, 5569, 5615, 5618, + 5621, 5616, 5624, 6102, 6102, 5619, 5626, 5625, 5633, 5627, + 6102, 5635, 5642, 5639, 5641, 5640, 5643, 5644, 6102, 5648, + 5647, 6102, 6102, 5649, 6102, 6102, 6102, 6102, 6102, 6102, + 6102, 6102, 5652, 6102, 5650, 5658, 5666, 5668, 6102, 5662, + 5669, 5670, 5671, 5672, 6102, 5673, 5676, 5675, 5677, 5682, + 5683, 5681, 5688, 5690, 5689, 5692, 5695, 5693, 5699, 5698, + 5700, 5701, 6102, 6102, 6102, 5704, 5703, 5713, 5715, 5722, + 5725, 5728, 5730, 5714, 5716, 5731, 5732, 5735, 5738, 5739, + 5747, 5742, 5743, 5744, 5745, 5751, 5746, 5748, 5753, 6102, - 5756, 5757, 5763, 5767, 5771, 6084, 5760, 5764, 6084, 5772, - 5773, 6084, 5774, 5775, 5778, 5779, 5782, 5783, 5785, 5788, - 5799, 6084, 6084, 5787, 5791, 5789, 5801, 5805, 5812, 5803, - 5811, 5813, 5814, 5796, 5823, 6084, 5821, 5822, 5825, 6084, - 5826, 5828, 5829, 5831, 5832, 5839, 5834, 5835, 6084, 5837, - 6084, 5841, 5843, 5844, 5842, 5845, 5846, 5856, 5858, 5854, - 6084, 5860, 5865, 5862, 5868, 5870, 5872, 5873, 5874, 5876, - 5878, 5882, 5888, 5885, 5889, 5879, 5890, 5891, 6084, 5900, - 5894, 6084, 5897, 5901, 5903, 5904, 5907, 6084, 5912, 5905, - 5909, 5914, 5917, 5918, 6084, 5920, 5927, 5929, 6084, 5930, + 5757, 6102, 5758, 6102, 6102, 5760, 5768, 5762, 5764, 5777, + 5779, 5766, 5774, 5775, 5781, 5785, 5789, 6102, 5778, 5782, + 6102, 5790, 5791, 6102, 5792, 5793, 5796, 5797, 5800, 5801, + 5803, 5806, 5817, 6102, 6102, 5805, 5809, 5807, 5819, 5823, + 5830, 5821, 5829, 5831, 5832, 5814, 5841, 6102, 5839, 5840, + 5843, 6102, 5844, 5846, 5847, 5849, 5850, 5857, 5852, 5853, + 6102, 5855, 6102, 5859, 5861, 5862, 5860, 5863, 5864, 5874, + 5876, 5872, 6102, 5878, 5883, 5880, 5886, 5888, 5890, 5891, + 5892, 5894, 5896, 5900, 5906, 5903, 5907, 5897, 5908, 5909, + 6102, 5918, 5912, 6102, 5915, 5919, 5921, 5922, 5925, 6102, - 6084, 6084, 5932, 5921, 5931, 5934, 5939, 6084, 6084, 6084, - 5964, 5971, 5978, 5985, 5992, 5999, 6006, 88, 6013, 6020, - 6027, 6034, 6041, 6048, 6055, 6062, 6069, 6076 + 5930, 5923, 5927, 5932, 5935, 5936, 6102, 5938, 5945, 5947, + 6102, 5948, 6102, 6102, 5950, 5939, 5949, 5952, 5957, 6102, + 6102, 6102, 5982, 5989, 5996, 6003, 6010, 6017, 6024, 88, + 6031, 6038, 6045, 6052, 6059, 6066, 6073, 6080, 6087, 6094 } ; -static const flex_int16_t yy_def[3129] = +static const flex_int16_t yy_def[3141] = { 0, - 3110, 1, 3111, 3111, 3112, 3112, 3113, 3113, 3114, 3114, - 3115, 3115, 3116, 3116, 3117, 3117, 3110, 3118, 3110, 3110, - 3110, 3110, 3119, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3120, 3110, 3110, 3110, - 3120, 3121, 3110, 3110, 3110, 3121, 3122, 3110, 3110, 3110, - 3110, 3122, 3123, 3110, 3110, 3110, 3123, 3124, 3110, 3125, - 3110, 3124, 3124, 3126, 3110, 3110, 3110, 3110, 3126, 3127, - 3110, 3110, 3110, 3127, 3118, 3118, 3110, 3128, 3119, 3128, - 3119, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3122, 1, 3123, 3123, 3124, 3124, 3125, 3125, 3126, 3126, + 3127, 3127, 3128, 3128, 3129, 3129, 3122, 3130, 3122, 3122, + 3122, 3122, 3131, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3132, 3122, 3122, 3122, + 3132, 3133, 3122, 3122, 3122, 3133, 3134, 3122, 3122, 3122, + 3122, 3134, 3135, 3122, 3122, 3122, 3135, 3136, 3122, 3137, + 3122, 3136, 3136, 3138, 3122, 3122, 3122, 3122, 3138, 3139, + 3122, 3122, 3122, 3139, 3130, 3130, 3122, 3140, 3131, 3140, + 3131, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3120, 3120, 3121, 3121, 3122, - 3122, 3110, 3123, 3123, 3124, 3124, 3125, 3125, 3124, 3126, - 3126, 3110, 3127, 3127, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3132, 3132, 3133, 3133, + 3134, 3134, 3122, 3135, 3135, 3136, 3136, 3137, 3137, 3136, + 3138, 3138, 3122, 3139, 3139, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3136, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3136, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3124, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3136, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3136, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3110, 3118, - 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3122, 3122, 3130, 3122, 3122, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3136, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3124, 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3136, 3136, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3124, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3136, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3110, 3118, 3124, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3136, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3122, 3136, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3122, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3110, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3110, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3136, 3130, + 3122, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3110, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3122, 3130, 3122, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3136, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3122, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3118, 3110, 3118, 3118, 3118, 3118, 3124, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3136, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3110, 3118, - 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3122, 3130, + 3122, 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3136, 3130, - 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3110, 3110, 3110, 3118, 3118, 3118, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, + 3130, 3130, 3130, 3130, 3130, 3122, 3122, 3122, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3122, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3136, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3122, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, 3130, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3110, 3124, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3122, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, + 3130, 3130, 3130, 3122, 3130, 3122, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3122, 3136, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3122, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3110, 3110, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, - 3110, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, 3110, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3122, 3122, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3122, 3122, 3130, 3130, + 3130, 3130, 3122, 3130, 3122, 3130, 3122, 3130, 3130, 3130, + 3130, 3122, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3122, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3130, 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3122, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3122, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3122, 3122, 3130, 3122, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3122, 3130, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, - 3110, 3118, 3118, 3118, 3110, 3110, 3110, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3110, - 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3122, 3122, 3130, 3130, 3130, 3122, 3122, 3122, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3122, 3122, 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3130, + 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3122, 3130, 3122, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, - 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, - 3110, 3118, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, - 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3122, 3122, 3130, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3122, 3130, + 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3122, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, + 3130, 3122, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3122, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, + 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3122, 3130, 3130, 3122, 3130, 3130, 3130, 3130, 3130, 3122, - 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 0, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110 + 3130, 3130, 3130, 3130, 3130, 3130, 3122, 3130, 3130, 3130, + 3122, 3130, 3122, 3122, 3130, 3130, 3130, 3130, 3130, 3122, + 3122, 0, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122 } ; -static const flex_int16_t yy_nxt[6125] = +static const flex_int16_t yy_nxt[6143] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1455,675 +1459,677 @@ static const flex_int16_t yy_nxt[6125] = 55, 51, 55, 85, 51, 85, 85, 56, 85, 56, 58, 59, 60, 61, 85, 22, 58, 59, 60, 61, 86, 22, 62, 64, 65, 66, 86, 97, 62, 64, - 65, 66, 87, 86, 67, 117, 88, 107, 85, 86, + 65, 66, 87, 86, 67, 118, 88, 108, 85, 86, 67, 19, 20, 21, 69, 70, 71, 75, 76, 77, - 78, 86, 22, 72, 119, 86, 118, 108, 86, 79, - 156, 156, 73, 19, 20, 21, 69, 70, 71, 75, - 76, 77, 78, 183, 22, 72, 81, 82, 83, 127, + 78, 86, 22, 72, 120, 86, 119, 109, 86, 79, + 157, 157, 73, 19, 20, 21, 69, 70, 71, 75, + 76, 77, 78, 184, 22, 72, 81, 82, 83, 128, 90, 79, 90, 90, 73, 90, 86, 84, 81, 82, 83, 90, 91, 86, 86, 98, 92, 93, 86, 84, - 94, 155, 99, 102, 87, 95, 100, 103, 88, 101, - 104, 86, 105, 106, 96, 86, 109, 86, 111, 86, - 86, 86, 86, 120, 113, 133, 112, 114, 86, 124, - 110, 121, 222, 125, 115, 86, 116, 122, 166, 158, - 128, 123, 158, 191, 129, 86, 86, 134, 175, 126, + 94, 156, 99, 86, 110, 95, 100, 86, 112, 101, + 86, 145, 134, 146, 96, 86, 113, 87, 111, 86, + 102, 88, 147, 114, 103, 86, 115, 104, 148, 105, + 106, 159, 178, 116, 159, 117, 86, 121, 86, 125, + 107, 86, 153, 126, 167, 122, 154, 86, 86, 135, - 130, 135, 169, 131, 163, 163, 86, 144, 86, 145, - 132, 136, 137, 139, 138, 86, 140, 86, 146, 148, - 180, 86, 152, 141, 147, 86, 153, 142, 143, 149, - 154, 173, 173, 150, 151, 160, 272, 160, 160, 90, - 160, 90, 90, 165, 90, 165, 165, 170, 165, 170, - 170, 168, 170, 85, 86, 85, 85, 90, 85, 90, - 90, 86, 90, 86, 85, 176, 178, 86, 90, 91, - 177, 86, 86, 166, 86, 181, 86, 86, 86, 193, - 184, 86, 86, 186, 86, 86, 86, 179, 182, 187, - 185, 188, 189, 190, 86, 195, 86, 192, 194, 86, + 155, 123, 129, 136, 86, 124, 130, 164, 164, 127, + 167, 223, 131, 137, 138, 132, 139, 86, 86, 174, + 174, 149, 133, 140, 170, 161, 141, 161, 161, 86, + 161, 150, 176, 142, 246, 151, 152, 143, 144, 90, + 86, 90, 90, 166, 90, 166, 166, 171, 166, 171, + 171, 169, 171, 85, 86, 85, 85, 90, 85, 90, + 90, 86, 90, 86, 85, 177, 179, 86, 90, 91, + 181, 86, 86, 86, 182, 86, 86, 86, 86, 194, + 86, 185, 187, 180, 86, 86, 86, 183, 188, 186, + 189, 190, 191, 86, 196, 86, 86, 193, 195, 192, - 251, 86, 196, 202, 200, 197, 198, 86, 86, 86, - 86, 357, 203, 199, 201, 204, 86, 209, 86, 205, - 86, 86, 206, 86, 214, 212, 86, 211, 215, 217, - 220, 86, 219, 86, 218, 207, 208, 86, 221, 86, - 223, 86, 210, 86, 216, 213, 86, 86, 86, 86, - 224, 227, 86, 229, 86, 232, 237, 230, 86, 225, - 86, 226, 234, 86, 228, 86, 86, 86, 240, 231, - 244, 235, 233, 86, 246, 86, 86, 236, 245, 241, - 243, 86, 239, 242, 86, 86, 238, 86, 249, 255, - 86, 247, 86, 86, 248, 86, 253, 259, 256, 250, + 197, 86, 86, 86, 198, 86, 199, 200, 205, 204, + 206, 202, 86, 86, 201, 207, 211, 86, 208, 203, + 86, 213, 86, 86, 86, 214, 216, 221, 86, 86, + 217, 209, 210, 222, 86, 225, 86, 227, 86, 86, + 86, 212, 86, 219, 229, 215, 218, 224, 220, 226, + 86, 86, 234, 86, 86, 231, 228, 230, 86, 232, + 86, 86, 233, 86, 86, 236, 242, 86, 248, 239, + 86, 86, 86, 235, 237, 86, 247, 243, 251, 241, + 238, 244, 86, 245, 240, 249, 86, 86, 250, 252, + 86, 253, 86, 255, 257, 261, 86, 86, 86, 260, - 86, 254, 258, 252, 86, 260, 156, 156, 158, 262, - 257, 158, 166, 261, 263, 160, 166, 160, 160, 264, - 160, 163, 163, 165, 86, 165, 165, 90, 165, 90, - 90, 170, 90, 170, 170, 86, 170, 173, 173, 168, - 265, 266, 268, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 270, 273, 276, 279, 267, 86, 269, 271, - 278, 86, 280, 275, 86, 274, 86, 283, 284, 282, - 277, 285, 86, 86, 86, 86, 286, 86, 293, 288, - 86, 86, 281, 86, 289, 295, 296, 86, 299, 290, - 86, 294, 86, 287, 86, 291, 292, 86, 86, 297, + 86, 254, 256, 258, 167, 264, 157, 157, 262, 159, + 86, 265, 159, 164, 164, 259, 263, 161, 275, 161, + 161, 166, 161, 166, 166, 90, 166, 90, 90, 167, + 90, 171, 266, 171, 171, 86, 171, 169, 174, 174, + 267, 268, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 272, 86, 278, 175, 269, 274, 271, 273, + 270, 281, 280, 277, 276, 173, 86, 86, 282, 286, + 279, 284, 86, 285, 86, 86, 283, 287, 290, 86, + 86, 295, 288, 291, 86, 86, 86, 86, 292, 86, + 86, 298, 299, 86, 293, 294, 296, 302, 86, 289, - 86, 301, 86, 298, 303, 302, 86, 304, 86, 86, - 305, 308, 86, 306, 309, 86, 310, 300, 86, 311, - 307, 312, 86, 315, 318, 86, 319, 86, 316, 174, - 86, 320, 323, 313, 322, 314, 324, 86, 317, 325, - 86, 328, 86, 321, 86, 86, 330, 86, 327, 329, - 331, 86, 86, 86, 326, 86, 86, 86, 332, 86, - 86, 334, 86, 86, 86, 336, 333, 86, 86, 340, - 338, 86, 86, 345, 86, 86, 339, 335, 346, 86, - 341, 86, 337, 342, 351, 86, 347, 344, 343, 349, - 86, 86, 348, 354, 86, 86, 86, 350, 86, 86, + 86, 300, 304, 86, 297, 305, 86, 306, 86, 86, + 301, 86, 86, 86, 172, 86, 311, 312, 86, 313, + 308, 307, 314, 309, 315, 86, 303, 310, 321, 323, + 318, 320, 86, 319, 86, 86, 316, 325, 317, 86, + 322, 324, 327, 86, 328, 86, 86, 331, 86, 333, + 86, 332, 326, 86, 334, 86, 86, 86, 86, 329, + 86, 86, 86, 335, 337, 86, 330, 86, 339, 86, + 336, 86, 86, 86, 86, 341, 343, 86, 86, 348, + 86, 338, 342, 344, 349, 86, 86, 340, 345, 354, + 86, 350, 347, 346, 352, 86, 351, 86, 357, 86, - 356, 360, 361, 86, 86, 359, 363, 86, 86, 352, - 353, 86, 86, 86, 355, 358, 364, 86, 366, 367, - 86, 368, 362, 370, 86, 365, 371, 86, 86, 86, - 166, 86, 86, 374, 86, 86, 373, 172, 86, 86, - 377, 381, 375, 372, 379, 369, 382, 86, 86, 385, - 376, 86, 86, 383, 378, 86, 384, 86, 380, 86, - 86, 86, 86, 391, 86, 392, 86, 393, 394, 86, - 390, 86, 386, 387, 86, 389, 86, 395, 388, 396, - 86, 398, 86, 86, 399, 86, 86, 397, 86, 402, - 400, 405, 403, 86, 86, 407, 86, 86, 408, 409, + 86, 86, 353, 360, 86, 359, 86, 86, 86, 86, + 86, 363, 364, 167, 362, 355, 356, 86, 86, 358, + 366, 367, 86, 369, 368, 361, 86, 365, 370, 86, + 371, 373, 86, 86, 374, 86, 86, 86, 167, 86, + 377, 86, 86, 86, 86, 86, 384, 385, 382, 380, + 378, 375, 86, 86, 372, 86, 376, 388, 379, 86, + 386, 86, 381, 86, 387, 86, 86, 383, 86, 86, + 394, 86, 395, 86, 396, 397, 389, 393, 86, 390, + 86, 398, 392, 399, 391, 86, 86, 86, 401, 86, + 402, 86, 86, 86, 86, 405, 86, 86, 406, 86, - 401, 86, 404, 86, 86, 86, 86, 410, 406, 86, - 412, 413, 414, 86, 86, 86, 86, 419, 86, 86, - 86, 86, 416, 420, 411, 422, 86, 86, 418, 86, - 86, 425, 86, 415, 86, 417, 86, 421, 430, 427, - 86, 86, 86, 431, 86, 423, 429, 424, 500, 86, - 426, 439, 86, 432, 86, 445, 428, 86, 86, 441, - 86, 442, 86, 443, 448, 449, 433, 440, 86, 434, - 86, 86, 86, 446, 435, 436, 437, 438, 450, 444, - 447, 456, 86, 451, 86, 452, 455, 453, 86, 86, - 454, 458, 86, 86, 459, 86, 460, 457, 86, 86, + 86, 165, 412, 400, 409, 407, 408, 403, 404, 411, + 86, 413, 86, 410, 86, 86, 414, 86, 86, 416, + 86, 418, 86, 86, 86, 417, 86, 86, 86, 423, + 86, 86, 86, 415, 419, 424, 86, 422, 86, 86, + 420, 163, 426, 86, 421, 427, 86, 429, 425, 428, + 86, 433, 434, 431, 430, 436, 86, 86, 86, 435, + 86, 86, 86, 86, 449, 86, 443, 445, 454, 86, + 432, 86, 86, 455, 86, 446, 450, 447, 444, 86, + 437, 451, 86, 438, 452, 453, 86, 606, 439, 440, + 441, 442, 86, 448, 86, 456, 457, 86, 86, 458, - 86, 86, 86, 462, 467, 86, 86, 468, 461, 469, - 86, 463, 86, 86, 485, 86, 473, 466, 470, 464, - 472, 465, 86, 86, 86, 471, 479, 86, 474, 475, - 477, 86, 478, 86, 480, 476, 86, 486, 487, 86, - 86, 488, 484, 86, 86, 86, 86, 481, 489, 86, - 482, 86, 483, 86, 490, 86, 504, 166, 491, 501, - 499, 502, 86, 503, 515, 506, 492, 86, 493, 516, - 494, 86, 505, 86, 517, 86, 86, 514, 519, 518, - 522, 86, 86, 495, 86, 86, 496, 171, 497, 86, - 498, 86, 524, 507, 508, 520, 521, 86, 86, 86, + 86, 459, 86, 460, 462, 86, 461, 463, 86, 464, + 86, 86, 467, 465, 86, 466, 86, 471, 86, 86, + 86, 86, 472, 86, 473, 476, 477, 162, 488, 86, + 468, 470, 86, 474, 469, 86, 86, 86, 475, 86, + 478, 479, 481, 483, 482, 86, 490, 480, 484, 86, + 489, 86, 86, 491, 86, 86, 492, 503, 86, 86, + 86, 485, 493, 86, 486, 86, 487, 86, 494, 86, + 508, 167, 495, 505, 86, 506, 504, 507, 519, 510, + 496, 86, 497, 86, 498, 520, 509, 86, 86, 518, + 521, 86, 523, 522, 86, 86, 86, 499, 525, 841, - 86, 523, 528, 509, 526, 510, 511, 512, 86, 531, - 513, 525, 529, 527, 86, 533, 86, 86, 536, 86, - 530, 534, 86, 537, 86, 86, 86, 541, 86, 86, - 86, 86, 535, 86, 532, 544, 86, 539, 86, 538, - 540, 545, 546, 86, 86, 543, 86, 86, 551, 86, - 556, 547, 548, 542, 549, 86, 86, 550, 86, 553, - 554, 86, 558, 86, 86, 86, 552, 86, 86, 86, - 565, 86, 86, 566, 562, 555, 567, 557, 568, 559, - 569, 561, 560, 86, 86, 563, 86, 564, 572, 571, - 86, 86, 570, 573, 86, 86, 574, 86, 576, 578, + 500, 86, 501, 528, 502, 86, 86, 511, 512, 86, + 526, 86, 86, 524, 527, 86, 86, 513, 86, 514, + 515, 516, 529, 532, 517, 531, 530, 86, 86, 86, + 537, 540, 538, 533, 86, 534, 535, 86, 536, 86, + 541, 86, 86, 539, 545, 86, 86, 86, 549, 550, + 86, 86, 548, 543, 542, 86, 544, 86, 86, 86, + 86, 555, 547, 86, 86, 86, 556, 86, 86, 558, + 546, 559, 86, 552, 553, 551, 86, 554, 86, 561, + 86, 86, 634, 86, 557, 86, 560, 562, 564, 86, + 86, 563, 567, 572, 570, 566, 86, 86, 565, 573, - 86, 86, 86, 86, 581, 582, 579, 86, 577, 86, - 86, 86, 86, 583, 575, 580, 86, 586, 86, 588, - 86, 587, 584, 86, 86, 86, 86, 589, 86, 594, - 86, 585, 590, 86, 595, 86, 597, 593, 598, 86, - 596, 86, 592, 591, 86, 600, 86, 602, 86, 86, - 86, 86, 86, 86, 86, 612, 86, 604, 86, 605, - 599, 86, 614, 601, 607, 86, 86, 613, 86, 603, - 611, 606, 608, 610, 609, 86, 86, 86, 86, 616, - 615, 619, 86, 622, 617, 86, 623, 618, 624, 86, - 625, 620, 86, 86, 86, 86, 86, 621, 628, 86, + 574, 571, 86, 568, 86, 569, 86, 86, 576, 86, + 86, 577, 578, 86, 581, 579, 86, 86, 575, 583, + 86, 86, 584, 86, 580, 86, 586, 587, 86, 582, + 86, 86, 588, 86, 585, 86, 591, 86, 589, 86, + 592, 86, 593, 86, 86, 86, 86, 86, 599, 595, + 594, 590, 603, 86, 86, 602, 598, 600, 601, 596, + 86, 597, 86, 605, 86, 607, 86, 86, 86, 86, + 86, 86, 86, 617, 86, 609, 86, 610, 619, 86, + 86, 604, 612, 86, 86, 618, 624, 608, 616, 611, + 613, 615, 614, 86, 621, 86, 86, 86, 620, 627, - 86, 86, 86, 86, 631, 86, 627, 632, 634, 86, - 633, 86, 86, 86, 626, 648, 629, 635, 86, 86, - 630, 86, 637, 86, 636, 86, 638, 651, 647, 86, - 86, 639, 646, 640, 652, 650, 654, 649, 653, 641, - 86, 642, 86, 86, 643, 644, 656, 655, 659, 657, - 86, 645, 658, 662, 86, 86, 661, 86, 86, 660, - 86, 665, 86, 667, 86, 86, 86, 86, 86, 86, - 86, 86, 166, 86, 673, 166, 679, 664, 663, 668, - 669, 670, 674, 666, 671, 676, 86, 86, 680, 672, - 675, 86, 677, 86, 86, 86, 678, 86, 86, 86, + 86, 86, 630, 622, 629, 86, 623, 86, 86, 86, + 625, 86, 626, 86, 633, 86, 86, 636, 86, 86, + 628, 632, 86, 637, 639, 86, 631, 86, 86, 86, + 638, 86, 635, 653, 86, 641, 86, 667, 640, 86, + 642, 86, 643, 652, 86, 651, 86, 644, 656, 645, + 654, 660, 655, 86, 659, 646, 86, 647, 657, 86, + 648, 649, 658, 664, 86, 86, 86, 650, 663, 86, + 86, 670, 661, 86, 665, 662, 86, 672, 86, 86, + 666, 86, 86, 86, 86, 86, 669, 86, 668, 678, + 86, 674, 86, 673, 679, 86, 675, 86, 671, 683, - 86, 86, 86, 681, 687, 86, 692, 689, 682, 690, - 86, 684, 86, 685, 683, 688, 86, 686, 691, 86, - 694, 86, 693, 86, 696, 86, 86, 86, 695, 86, - 86, 86, 699, 700, 708, 86, 705, 697, 701, 86, - 698, 706, 86, 709, 86, 702, 86, 704, 703, 710, - 711, 86, 707, 712, 86, 86, 713, 86, 86, 86, - 715, 86, 86, 716, 86, 86, 86, 714, 719, 718, - 86, 720, 86, 724, 86, 86, 723, 86, 717, 86, - 727, 725, 86, 86, 729, 86, 86, 721, 730, 722, - 86, 86, 726, 86, 86, 736, 732, 86, 86, 731, + 167, 676, 685, 682, 684, 677, 680, 681, 86, 86, + 687, 86, 86, 86, 86, 86, 86, 86, 86, 692, + 694, 686, 696, 86, 86, 695, 689, 697, 690, 693, + 688, 699, 691, 86, 86, 86, 698, 86, 701, 86, + 86, 86, 86, 86, 705, 86, 700, 704, 713, 86, + 86, 710, 706, 702, 715, 703, 711, 86, 86, 707, + 86, 709, 708, 712, 714, 86, 716, 86, 717, 86, + 718, 86, 719, 86, 722, 86, 86, 720, 86, 721, + 723, 86, 86, 86, 86, 726, 86, 86, 727, 725, + 731, 730, 724, 86, 86, 86, 86, 732, 86, 86, - 86, 733, 728, 739, 735, 734, 86, 86, 86, 737, - 743, 740, 86, 738, 741, 745, 86, 744, 86, 86, - 86, 749, 742, 746, 86, 748, 86, 86, 86, 750, - 86, 86, 86, 86, 753, 86, 755, 757, 86, 86, - 164, 86, 751, 754, 758, 747, 752, 86, 763, 760, - 761, 86, 756, 86, 86, 86, 765, 764, 759, 762, - 766, 767, 86, 86, 86, 768, 86, 86, 772, 769, - 774, 86, 773, 770, 86, 86, 86, 86, 775, 777, - 771, 86, 776, 86, 778, 86, 86, 784, 86, 86, - 785, 781, 86, 86, 779, 86, 780, 786, 86, 789, + 734, 86, 736, 86, 737, 729, 86, 728, 86, 86, + 743, 86, 733, 86, 739, 738, 86, 86, 735, 740, + 86, 742, 746, 741, 744, 747, 86, 750, 86, 745, + 748, 86, 86, 86, 752, 86, 753, 751, 86, 86, + 755, 749, 756, 757, 86, 86, 86, 86, 86, 86, + 764, 86, 762, 760, 86, 86, 86, 86, 754, 86, + 758, 761, 770, 759, 765, 160, 768, 86, 86, 763, + 86, 769, 767, 766, 86, 86, 771, 772, 773, 774, + 86, 86, 86, 775, 779, 777, 86, 776, 781, 778, + 86, 780, 86, 86, 86, 782, 784, 86, 783, 86, - 787, 86, 86, 86, 86, 782, 783, 791, 790, 788, - 793, 801, 86, 796, 794, 86, 86, 795, 797, 86, - 86, 798, 792, 86, 86, 800, 802, 86, 799, 86, - 86, 86, 808, 803, 86, 86, 86, 86, 86, 809, - 86, 86, 86, 810, 86, 804, 86, 805, 86, 806, - 86, 807, 811, 817, 813, 812, 815, 816, 819, 86, - 814, 86, 818, 86, 86, 86, 86, 822, 86, 820, - 86, 86, 86, 831, 86, 86, 829, 86, 86, 832, - 821, 824, 823, 86, 825, 86, 826, 827, 830, 828, - 836, 86, 835, 86, 834, 86, 833, 86, 86, 86, + 86, 785, 86, 791, 86, 788, 86, 86, 86, 86, + 786, 86, 787, 794, 86, 793, 86, 796, 797, 789, + 790, 86, 800, 792, 798, 86, 801, 795, 86, 803, + 802, 86, 805, 86, 804, 86, 86, 86, 807, 799, + 86, 86, 809, 86, 86, 86, 86, 815, 86, 86, + 86, 86, 816, 86, 86, 86, 808, 86, 806, 810, + 817, 811, 812, 86, 813, 818, 814, 820, 86, 819, + 824, 86, 823, 86, 821, 822, 86, 86, 86, 86, + 86, 86, 825, 826, 829, 86, 86, 86, 86, 86, + 838, 86, 827, 836, 831, 839, 828, 830, 86, 832, - 86, 86, 86, 841, 840, 843, 842, 837, 839, 86, - 86, 847, 838, 86, 844, 86, 86, 846, 166, 845, - 86, 86, 86, 851, 849, 852, 86, 848, 850, 86, - 853, 86, 86, 86, 854, 86, 856, 86, 855, 859, - 86, 86, 860, 862, 86, 857, 863, 86, 865, 86, - 861, 867, 864, 858, 86, 866, 86, 86, 871, 86, - 86, 868, 86, 86, 86, 86, 86, 872, 86, 873, - 86, 86, 886, 86, 86, 870, 162, 888, 874, 86, - 885, 869, 86, 883, 86, 876, 86, 884, 875, 86, - 887, 86, 889, 891, 877, 86, 890, 892, 878, 895, + 86, 837, 86, 833, 834, 835, 86, 843, 86, 86, + 86, 86, 86, 86, 842, 86, 847, 840, 848, 849, + 850, 86, 844, 846, 86, 86, 851, 845, 86, 852, + 86, 853, 86, 167, 854, 86, 86, 86, 858, 856, + 859, 86, 855, 86, 857, 860, 86, 86, 86, 861, + 86, 863, 862, 866, 86, 86, 867, 869, 86, 870, + 864, 86, 86, 872, 868, 86, 874, 871, 865, 86, + 86, 86, 878, 86, 86, 86, 86, 875, 86, 86, + 880, 873, 879, 86, 86, 86, 86, 158, 86, 877, + 893, 86, 86, 881, 892, 876, 896, 894, 890, 883, - 893, 879, 86, 86, 894, 86, 86, 903, 880, 881, - 86, 882, 86, 896, 897, 86, 898, 908, 907, 899, - 161, 905, 909, 86, 900, 86, 86, 904, 86, 911, - 901, 902, 910, 86, 913, 906, 86, 86, 86, 915, - 86, 912, 914, 916, 917, 86, 86, 86, 918, 86, - 86, 86, 919, 921, 86, 86, 925, 86, 86, 924, - 86, 86, 928, 86, 86, 932, 920, 934, 86, 159, - 922, 86, 926, 923, 927, 930, 929, 86, 935, 157, - 86, 938, 933, 936, 86, 937, 931, 86, 939, 86, - 86, 941, 942, 86, 86, 940, 86, 86, 86, 943, + 86, 882, 86, 891, 895, 86, 897, 884, 86, 898, + 86, 885, 86, 86, 886, 86, 86, 86, 900, 903, + 911, 887, 888, 899, 889, 86, 86, 901, 86, 919, + 902, 86, 904, 905, 86, 906, 86, 912, 907, 915, + 916, 918, 914, 908, 913, 917, 86, 86, 86, 909, + 910, 86, 921, 922, 86, 86, 86, 923, 925, 86, + 924, 86, 920, 926, 86, 86, 86, 86, 927, 929, + 86, 86, 933, 86, 86, 932, 86, 86, 936, 86, + 86, 940, 86, 928, 942, 86, 930, 86, 934, 931, + 935, 938, 937, 86, 943, 975, 86, 946, 941, 944, - 945, 86, 946, 86, 944, 86, 947, 86, 86, 86, - 952, 86, 949, 86, 955, 950, 86, 86, 86, 86, - 86, 86, 953, 948, 954, 86, 86, 957, 951, 86, - 958, 960, 962, 86, 961, 86, 956, 86, 963, 86, - 86, 968, 86, 959, 86, 970, 969, 86, 966, 964, - 86, 86, 86, 967, 86, 86, 977, 971, 975, 86, - 973, 86, 965, 978, 86, 86, 976, 86, 86, 972, - 980, 86, 86, 86, 86, 86, 974, 86, 86, 988, - 979, 86, 981, 986, 991, 86, 86, 982, 983, 86, - 86, 86, 985, 984, 992, 989, 987, 990, 993, 86, + 86, 945, 939, 86, 947, 86, 86, 949, 950, 86, + 86, 948, 86, 86, 86, 951, 953, 86, 954, 86, + 952, 86, 955, 86, 86, 86, 960, 86, 957, 86, + 963, 958, 86, 86, 86, 86, 86, 86, 961, 956, + 962, 86, 86, 965, 959, 86, 966, 968, 970, 86, + 969, 86, 964, 86, 971, 86, 976, 86, 978, 967, + 86, 977, 86, 86, 974, 972, 86, 86, 86, 86, + 86, 983, 985, 986, 86, 979, 981, 86, 973, 984, + 86, 86, 980, 86, 86, 988, 86, 86, 86, 990, + 982, 86, 86, 86, 999, 994, 996, 86, 987, 86, - 994, 86, 86, 995, 86, 996, 86, 998, 999, 86, - 86, 1000, 86, 1001, 86, 997, 86, 86, 1003, 1008, - 86, 1009, 1011, 86, 1013, 86, 1002, 86, 86, 86, - 86, 86, 1004, 1014, 1010, 1006, 1005, 1007, 86, 86, - 86, 86, 1015, 1012, 86, 1022, 1019, 86, 1016, 86, - 1021, 86, 1017, 86, 86, 86, 1023, 1026, 1028, 86, - 1018, 86, 86, 86, 86, 1020, 86, 1027, 1025, 1030, - 1031, 86, 1024, 86, 86, 1032, 166, 1033, 1034, 1029, - 86, 1035, 86, 86, 86, 86, 86, 1038, 1036, 86, - 1051, 1037, 1039, 86, 1050, 1053, 86, 86, 1041, 86, + 86, 86, 989, 991, 86, 86, 992, 993, 1000, 997, + 86, 995, 998, 1001, 86, 1006, 1002, 86, 1003, 1005, + 1004, 1007, 86, 86, 86, 86, 86, 86, 86, 1016, + 86, 86, 1009, 1011, 1017, 86, 1019, 1008, 86, 86, + 86, 86, 86, 1023, 1010, 1018, 1012, 1014, 1021, 1013, + 1015, 1022, 86, 86, 86, 86, 86, 86, 1020, 1030, + 1024, 1027, 86, 1029, 1025, 86, 86, 86, 86, 1031, + 1034, 86, 1026, 1032, 1028, 86, 86, 1036, 86, 86, + 1033, 1039, 86, 1043, 1038, 86, 1040, 167, 1035, 1037, + 1041, 86, 86, 86, 86, 1042, 86, 86, 1046, 86, - 86, 86, 86, 86, 1055, 1042, 174, 1040, 1058, 86, - 1043, 86, 1052, 1060, 1044, 1057, 1045, 1056, 1061, 86, - 1046, 86, 1047, 1059, 1054, 86, 86, 1048, 86, 1063, - 86, 86, 1049, 86, 86, 1062, 1066, 86, 1068, 1069, - 1077, 1064, 86, 1065, 1070, 86, 1067, 1074, 1073, 1075, - 86, 1072, 1078, 86, 1071, 86, 1076, 86, 86, 86, - 86, 86, 86, 86, 86, 1090, 86, 1093, 86, 172, - 86, 86, 1079, 1094, 1089, 86, 1092, 1091, 1080, 1081, - 86, 1082, 86, 1095, 1096, 86, 1083, 86, 1084, 1100, - 1097, 1099, 86, 86, 1085, 86, 1102, 86, 1103, 1086, + 86, 86, 1058, 86, 86, 1061, 86, 1044, 1059, 86, + 86, 1049, 1045, 1047, 1063, 86, 86, 86, 1060, 1050, + 1048, 1051, 86, 86, 86, 1052, 86, 1053, 1076, 1066, + 1064, 1054, 86, 1055, 1062, 86, 1068, 1065, 1056, 1071, + 1067, 1069, 86, 1057, 86, 86, 1070, 86, 86, 86, + 1074, 1072, 1077, 86, 86, 86, 1085, 86, 1083, 1073, + 1075, 1082, 1078, 1081, 86, 1084, 1087, 1080, 1086, 86, + 1079, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 1102, 86, 1099, 1108, 86, 86, 1103, 1098, 86, 86, + 86, 1088, 1100, 1089, 1090, 86, 1091, 1101, 1104, 86, - 1087, 1098, 86, 1106, 86, 86, 1088, 1101, 86, 86, - 1105, 86, 1104, 1107, 1109, 86, 1112, 86, 86, 86, - 1110, 86, 86, 1108, 1115, 86, 1113, 86, 86, 86, - 86, 1111, 86, 86, 86, 86, 1122, 1114, 1120, 1117, - 1119, 1116, 1121, 86, 1124, 86, 86, 1118, 1126, 1123, - 86, 1125, 86, 86, 86, 171, 86, 86, 86, 1132, - 1129, 1133, 1134, 1127, 1128, 86, 1136, 1135, 1131, 1137, - 1130, 86, 86, 1140, 86, 86, 86, 1142, 1141, 86, - 1143, 86, 86, 86, 1138, 1144, 86, 86, 1139, 86, - 86, 1151, 1153, 86, 1146, 1145, 86, 86, 86, 1147, + 86, 1092, 1105, 1093, 1109, 86, 1111, 86, 1106, 1094, + 1112, 86, 86, 86, 1095, 1096, 1115, 86, 1107, 86, + 86, 1097, 86, 86, 1116, 1110, 1114, 86, 1121, 1118, + 1113, 86, 1119, 86, 86, 86, 1117, 86, 86, 86, + 1122, 86, 1124, 1120, 86, 86, 86, 86, 86, 86, + 1129, 86, 1123, 1126, 1130, 1125, 1128, 1131, 1127, 1133, + 86, 1135, 86, 1132, 1134, 86, 86, 86, 86, 1136, + 86, 86, 86, 1141, 86, 1142, 1138, 1143, 86, 1137, + 1144, 1146, 1140, 1149, 1139, 86, 1145, 86, 1150, 86, + 1148, 1147, 86, 1151, 86, 86, 1152, 1153, 86, 86, - 1149, 1155, 86, 86, 1148, 1150, 1157, 86, 1154, 1152, - 86, 86, 86, 86, 86, 1159, 1156, 1160, 1162, 1163, - 86, 86, 86, 86, 86, 1168, 86, 1161, 1158, 1165, - 1167, 86, 1164, 1169, 86, 1170, 86, 1166, 86, 1172, - 1171, 86, 1173, 86, 86, 86, 86, 1179, 1177, 1180, - 86, 86, 86, 86, 166, 86, 1174, 1181, 86, 1178, - 86, 1184, 1175, 1182, 1176, 1183, 1187, 86, 1185, 86, - 86, 1186, 86, 86, 1188, 1189, 86, 86, 86, 1190, - 86, 86, 1191, 1194, 1195, 86, 86, 86, 86, 86, - 86, 164, 1200, 86, 1201, 1192, 1196, 1193, 86, 1198, + 86, 86, 86, 86, 1160, 1162, 86, 86, 86, 1154, + 86, 86, 1164, 1158, 86, 1156, 86, 1159, 1155, 1157, + 86, 1163, 1165, 1161, 86, 1168, 86, 1166, 86, 86, + 86, 1169, 1170, 1171, 1172, 1167, 86, 86, 86, 1177, + 1178, 86, 1173, 1174, 1176, 86, 86, 86, 86, 86, + 1182, 1181, 1175, 86, 86, 1179, 86, 86, 1188, 86, + 1186, 1189, 86, 86, 86, 1180, 86, 86, 1190, 86, + 86, 1183, 1187, 1184, 1191, 1192, 1185, 1193, 1196, 86, + 1194, 86, 86, 86, 86, 86, 1195, 1197, 1198, 86, + 1199, 86, 86, 86, 1200, 1203, 1204, 1201, 86, 86, - 86, 86, 1204, 86, 1197, 1202, 1203, 1199, 1205, 86, - 86, 1208, 86, 86, 86, 86, 86, 166, 1212, 1214, - 86, 86, 1207, 1206, 86, 1210, 86, 86, 86, 86, - 1209, 86, 1211, 1213, 1219, 1216, 1220, 1215, 1218, 1217, - 1221, 86, 86, 1223, 1224, 1228, 86, 1225, 1222, 86, - 86, 86, 86, 1226, 86, 86, 86, 1227, 86, 1230, - 1229, 86, 86, 1236, 86, 1233, 86, 86, 86, 86, - 1231, 86, 86, 1246, 86, 1232, 1234, 1240, 86, 1242, - 1237, 1235, 86, 1239, 86, 1238, 86, 1247, 1243, 1241, - 1244, 1248, 86, 1245, 86, 86, 86, 1252, 1250, 1251, + 86, 86, 1209, 86, 86, 1210, 1213, 86, 86, 1205, + 1202, 86, 1207, 86, 86, 86, 86, 1206, 1211, 1212, + 1208, 1217, 86, 1214, 86, 86, 86, 1215, 1216, 86, + 167, 1219, 86, 1218, 1223, 86, 86, 86, 86, 86, + 86, 86, 86, 1220, 1228, 1229, 1225, 1234, 1222, 1263, + 1224, 1221, 1226, 1227, 1230, 86, 1232, 1233, 1231, 86, + 86, 1235, 86, 86, 86, 1236, 86, 86, 86, 86, + 86, 86, 1239, 86, 1245, 86, 86, 1242, 1237, 86, + 1238, 86, 86, 1240, 86, 86, 1243, 175, 1241, 1251, + 1246, 1249, 1244, 86, 1255, 86, 1248, 1247, 1252, 86, - 86, 1249, 86, 86, 1253, 86, 86, 1255, 1257, 1254, - 1260, 86, 86, 86, 1256, 86, 1258, 1261, 1262, 86, - 86, 86, 86, 86, 1264, 1259, 1265, 86, 86, 1266, - 86, 86, 86, 86, 86, 1263, 1267, 86, 1268, 1272, - 1270, 86, 86, 1273, 86, 1271, 1269, 86, 1277, 86, - 1282, 86, 1274, 86, 86, 1275, 86, 1279, 1281, 1276, - 86, 86, 1278, 86, 1280, 86, 1283, 1284, 1285, 86, - 1287, 1289, 86, 1288, 1286, 86, 1290, 86, 86, 1294, - 86, 1303, 1291, 1292, 1307, 1293, 86, 86, 1301, 1302, - 86, 1295, 86, 1304, 1296, 1297, 86, 86, 86, 1298, + 1253, 86, 1250, 1254, 1256, 1257, 86, 86, 1258, 1259, + 1260, 86, 86, 86, 86, 86, 86, 1264, 86, 86, + 86, 1267, 1270, 86, 86, 1271, 86, 1266, 86, 1268, + 1261, 1262, 86, 1265, 86, 1276, 86, 1272, 1269, 1274, + 1275, 86, 86, 1277, 1273, 86, 86, 86, 86, 86, + 86, 86, 86, 1282, 86, 86, 1278, 1280, 1287, 86, + 1283, 1279, 1281, 86, 86, 86, 86, 1292, 1284, 1286, + 1288, 1285, 1291, 86, 1289, 86, 86, 86, 1294, 1290, + 1293, 1297, 1299, 1295, 86, 86, 1296, 1300, 86, 1298, + 1313, 86, 86, 1304, 86, 86, 86, 86, 86, 1302, - 86, 1305, 86, 1308, 86, 1299, 1306, 1309, 86, 1300, - 86, 1310, 86, 1312, 86, 86, 86, 1313, 86, 1314, - 86, 1311, 86, 1319, 1315, 1317, 1316, 1322, 86, 1331, - 1323, 162, 86, 86, 1320, 1318, 86, 1324, 86, 86, - 1321, 86, 1325, 1332, 1333, 86, 86, 86, 1326, 1335, - 86, 86, 1334, 1327, 86, 1328, 86, 1329, 1339, 1330, - 1338, 86, 1336, 1340, 86, 1341, 1343, 86, 1337, 86, - 86, 86, 86, 1349, 86, 1350, 1342, 86, 1345, 86, - 86, 1344, 86, 86, 86, 1351, 1348, 1353, 86, 1346, - 1347, 86, 86, 1355, 1352, 86, 86, 1354, 1359, 86, + 86, 1314, 1404, 1301, 1303, 86, 1312, 1311, 86, 1317, + 1305, 86, 86, 1306, 1307, 86, 1315, 1316, 1308, 1321, + 86, 86, 86, 1320, 1309, 1318, 1319, 86, 1310, 86, + 1322, 86, 1325, 86, 1323, 86, 1324, 86, 86, 86, + 1332, 1333, 1327, 1329, 86, 1326, 86, 86, 86, 1334, + 86, 1330, 1335, 86, 1341, 1328, 86, 1331, 86, 1336, + 1342, 1343, 1345, 86, 1337, 86, 1338, 1344, 1339, 86, + 1340, 1349, 86, 86, 86, 86, 1350, 86, 86, 86, + 1346, 1348, 1351, 1353, 86, 86, 86, 1347, 1355, 1354, + 86, 1359, 86, 1360, 86, 86, 1352, 86, 1361, 86, - 1358, 1361, 86, 86, 86, 1362, 1356, 1360, 86, 1364, - 86, 1363, 1367, 86, 86, 1365, 1357, 1369, 86, 1366, - 86, 1370, 86, 86, 86, 1374, 86, 1371, 86, 86, - 86, 86, 1376, 86, 1368, 86, 1378, 1380, 86, 86, - 86, 86, 1379, 1382, 1372, 1373, 1384, 86, 1375, 86, - 1377, 86, 86, 86, 1383, 86, 1381, 1386, 1388, 1387, - 1389, 1385, 86, 1390, 86, 86, 86, 1392, 86, 1391, - 1396, 1393, 1397, 1394, 86, 86, 86, 1399, 86, 1398, - 86, 1395, 86, 86, 1400, 1403, 86, 86, 166, 86, - 86, 1408, 1409, 1402, 86, 1411, 86, 86, 86, 1401, + 1358, 86, 86, 1356, 1357, 86, 1363, 86, 1362, 1364, + 86, 1365, 1368, 1369, 86, 1371, 86, 1366, 86, 86, + 1372, 86, 1373, 86, 86, 1370, 1374, 1377, 86, 86, + 1367, 1379, 86, 1376, 86, 1380, 86, 86, 86, 1384, + 86, 1381, 1375, 86, 86, 86, 86, 1386, 86, 1378, + 86, 1388, 1390, 86, 86, 86, 86, 1389, 1382, 1383, + 1394, 86, 86, 1385, 1392, 1387, 86, 1396, 86, 1393, + 1395, 1391, 86, 1398, 1397, 86, 1400, 1399, 86, 86, + 86, 86, 1406, 1401, 1407, 1409, 1403, 86, 86, 86, + 86, 86, 1408, 86, 1405, 86, 86, 1402, 1410, 1413, - 1410, 86, 86, 1405, 86, 86, 86, 1404, 86, 1406, - 1412, 86, 1418, 1407, 86, 86, 1413, 1415, 1416, 86, - 86, 86, 1414, 86, 1417, 1422, 1423, 86, 1419, 86, - 1427, 86, 86, 1421, 1425, 1428, 86, 86, 86, 1420, - 1426, 1429, 1424, 86, 86, 1432, 1430, 1433, 86, 1436, - 1438, 1431, 1437, 1434, 86, 1440, 1435, 86, 86, 86, - 1443, 86, 1441, 86, 86, 1444, 86, 86, 1439, 86, - 1442, 86, 1448, 86, 86, 86, 1445, 86, 1450, 86, - 1455, 86, 1447, 86, 86, 1456, 1459, 1449, 1452, 1446, - 86, 1451, 86, 1453, 86, 1454, 86, 86, 86, 86, + 86, 86, 167, 86, 1418, 1419, 1412, 86, 1421, 86, + 86, 86, 1411, 1420, 86, 86, 1414, 1415, 86, 86, + 86, 1416, 86, 1422, 86, 1428, 1417, 86, 86, 1423, + 1425, 86, 86, 1426, 86, 1424, 1432, 86, 1427, 1433, + 86, 86, 1429, 86, 1437, 86, 1431, 86, 1435, 1438, + 86, 1442, 1430, 1436, 1440, 1434, 86, 86, 86, 1439, + 86, 86, 1443, 1446, 1441, 86, 1447, 1448, 86, 86, + 1450, 86, 1444, 1451, 1449, 1445, 86, 1453, 86, 1452, + 1455, 86, 1454, 86, 86, 86, 1458, 86, 86, 1459, + 86, 86, 1461, 86, 86, 1466, 1457, 1456, 86, 86, - 86, 1457, 1460, 1458, 86, 1466, 86, 86, 86, 1471, - 1462, 1467, 1463, 1461, 1464, 86, 1470, 1465, 86, 86, - 1468, 86, 86, 86, 1469, 1473, 1477, 86, 1476, 1478, - 86, 1479, 86, 1472, 86, 86, 1483, 1474, 86, 1480, - 1481, 86, 86, 1475, 86, 86, 1482, 86, 86, 1488, - 86, 86, 1484, 86, 1487, 86, 86, 1494, 1485, 1490, - 1486, 1491, 1495, 86, 86, 86, 1496, 1492, 86, 1499, - 1489, 1497, 86, 86, 1493, 86, 86, 86, 86, 86, - 1507, 86, 1503, 1506, 1498, 1502, 86, 86, 86, 1510, - 86, 86, 1500, 1508, 1501, 86, 1512, 1504, 1513, 1505, + 86, 1470, 1467, 1460, 1463, 86, 86, 86, 1462, 1464, + 86, 1465, 86, 86, 86, 86, 86, 1468, 1471, 1469, + 1477, 86, 86, 1478, 1472, 1474, 1473, 1479, 1475, 86, + 86, 1482, 86, 1476, 86, 86, 86, 86, 1481, 1480, + 1484, 86, 1487, 1488, 1489, 86, 1490, 1483, 86, 86, + 86, 1485, 86, 1491, 1492, 86, 86, 1486, 86, 1495, + 1493, 86, 1496, 86, 86, 1499, 86, 1494, 86, 86, + 1498, 86, 86, 1502, 1505, 86, 1497, 1501, 1507, 1506, + 86, 86, 1510, 1508, 86, 1503, 1500, 86, 86, 86, + 86, 1504, 86, 86, 86, 1509, 1518, 1514, 1513, 86, - 86, 86, 86, 86, 86, 86, 1511, 1509, 86, 86, - 1514, 86, 1521, 86, 1526, 86, 1522, 1518, 86, 1515, - 1516, 1517, 1527, 1520, 1524, 86, 1519, 1523, 1525, 86, - 86, 86, 86, 86, 86, 1531, 86, 86, 86, 1532, - 1529, 86, 1535, 1528, 1541, 1530, 1539, 86, 86, 1536, - 86, 86, 1533, 1540, 1534, 86, 86, 1538, 1537, 86, - 86, 1544, 86, 1545, 1546, 86, 1542, 86, 1543, 1550, - 1551, 86, 86, 86, 86, 86, 86, 1555, 1556, 1554, - 86, 86, 1547, 1548, 86, 1558, 86, 1549, 86, 86, - 1552, 1559, 1560, 86, 1553, 86, 86, 1561, 1563, 86, + 86, 86, 86, 86, 1519, 1521, 1511, 1512, 86, 1515, + 1524, 86, 1517, 1516, 1523, 86, 86, 86, 86, 86, + 1522, 86, 1525, 86, 86, 1532, 1520, 86, 86, 173, + 1533, 1535, 86, 1529, 1526, 86, 1527, 1528, 1531, 1538, + 1534, 86, 1530, 1536, 86, 86, 1537, 86, 86, 86, + 86, 1542, 86, 86, 86, 1543, 1540, 172, 1539, 1546, + 86, 1541, 1550, 86, 86, 1547, 1552, 86, 1544, 1551, + 1545, 86, 86, 1548, 86, 86, 1549, 86, 86, 1555, + 86, 1556, 1553, 86, 1554, 1561, 86, 1557, 1562, 86, + 86, 86, 86, 86, 1566, 1558, 1559, 1565, 86, 1567, - 1557, 86, 1566, 86, 86, 1562, 86, 86, 1565, 86, - 86, 1570, 86, 1572, 86, 86, 1564, 86, 1567, 1573, - 86, 1577, 86, 1571, 86, 1568, 1569, 86, 86, 1580, - 1575, 86, 1574, 1582, 86, 1583, 1578, 86, 86, 1585, - 86, 86, 1576, 1581, 86, 1579, 86, 166, 1588, 86, - 1591, 86, 1587, 86, 1590, 86, 86, 1584, 86, 86, - 86, 1599, 1586, 1592, 161, 1589, 86, 86, 86, 1594, - 86, 1593, 1597, 1600, 86, 1595, 1596, 86, 86, 1603, - 1606, 86, 1604, 86, 1598, 1608, 1601, 1602, 1607, 1610, - 86, 86, 1612, 86, 1605, 86, 86, 86, 86, 86, + 1560, 1569, 86, 86, 1563, 86, 1570, 1571, 86, 86, + 86, 1564, 86, 86, 86, 1574, 86, 1577, 1568, 86, + 86, 86, 86, 1576, 86, 1572, 1573, 1581, 86, 1583, + 86, 86, 86, 1575, 1578, 86, 86, 1588, 1582, 1584, + 1580, 1579, 86, 86, 86, 86, 86, 1586, 86, 1585, + 1591, 1593, 86, 86, 86, 1596, 1589, 1594, 86, 1592, + 1587, 1590, 86, 86, 1602, 86, 1595, 1599, 86, 1598, + 1597, 167, 86, 1601, 86, 86, 86, 86, 86, 1610, + 86, 1600, 86, 86, 86, 1611, 86, 1603, 1605, 86, + 1604, 1608, 86, 1614, 1606, 1607, 86, 1615, 1617, 86, - 86, 1609, 86, 1614, 1611, 1615, 86, 1617, 86, 1618, - 86, 86, 86, 1619, 1622, 1613, 86, 1623, 86, 86, - 1620, 1629, 1616, 86, 1624, 1621, 1626, 86, 86, 1627, - 86, 86, 86, 1630, 1631, 159, 1637, 1634, 1625, 1633, - 86, 1628, 86, 1636, 1635, 86, 86, 86, 1639, 1641, - 1632, 1638, 86, 1640, 86, 86, 86, 86, 1643, 1642, - 86, 86, 1648, 1649, 1647, 86, 1651, 86, 86, 86, - 1650, 86, 86, 86, 1644, 86, 1645, 86, 1653, 86, - 1646, 1654, 86, 86, 1655, 86, 86, 1664, 86, 1656, - 1652, 86, 86, 86, 86, 1657, 1663, 1658, 86, 1659, + 86, 1609, 1612, 1613, 1618, 1619, 1616, 1621, 86, 1620, + 86, 86, 86, 86, 1622, 1623, 86, 86, 1625, 86, + 1628, 86, 1626, 86, 1629, 86, 86, 1624, 86, 86, + 1634, 1633, 86, 86, 1627, 1630, 86, 86, 86, 1637, + 1640, 1632, 1638, 1631, 1635, 86, 86, 1644, 86, 167, + 1641, 1642, 86, 1636, 1639, 86, 86, 1645, 1647, 1648, + 86, 1650, 1646, 1649, 86, 1651, 1653, 1643, 86, 86, + 86, 1652, 86, 1654, 86, 86, 86, 86, 86, 1660, + 1661, 1659, 86, 86, 1663, 86, 86, 1655, 1662, 86, + 86, 1666, 86, 1656, 1665, 1657, 86, 1658, 86, 86, - 1660, 86, 86, 1661, 1662, 1669, 86, 86, 1665, 86, - 86, 86, 1667, 86, 1666, 1671, 86, 1672, 86, 86, - 86, 86, 1668, 86, 1673, 1674, 1675, 1670, 1677, 1680, - 1679, 1676, 1681, 1678, 86, 86, 86, 1682, 86, 1686, - 1687, 86, 1688, 86, 86, 86, 1692, 86, 1691, 1683, - 1689, 86, 86, 86, 1684, 86, 86, 86, 1695, 86, - 1685, 1696, 1690, 86, 1693, 86, 86, 86, 1699, 1705, - 86, 1694, 86, 1698, 1697, 1701, 1703, 1704, 1702, 86, - 86, 86, 1700, 86, 86, 1706, 86, 86, 86, 1714, - 1708, 86, 1707, 86, 1709, 86, 1711, 1710, 86, 1718, + 86, 1667, 86, 86, 86, 1664, 1676, 86, 86, 86, + 86, 86, 86, 86, 1673, 86, 1668, 1671, 1672, 1669, + 1670, 1674, 86, 1675, 86, 1679, 86, 1677, 1678, 1681, + 86, 1683, 86, 1684, 1680, 1682, 86, 1685, 1686, 86, + 86, 86, 86, 86, 86, 86, 86, 1699, 86, 1689, + 1691, 1692, 86, 86, 1693, 1698, 1690, 1688, 86, 1695, + 1687, 1694, 1700, 86, 1696, 1701, 86, 1704, 86, 1703, + 86, 1697, 86, 86, 86, 86, 1702, 86, 1707, 1708, + 86, 86, 1716, 1705, 1717, 86, 86, 86, 86, 1711, + 86, 1706, 86, 1710, 1709, 1713, 1715, 86, 1714, 86, - 1717, 86, 1716, 86, 86, 1713, 1722, 1715, 86, 86, - 86, 1712, 1720, 1719, 1726, 1721, 86, 86, 86, 1727, - 86, 157, 1723, 1731, 1728, 86, 1732, 1725, 86, 1724, - 1735, 1729, 86, 1734, 86, 86, 86, 86, 1737, 1730, - 1736, 86, 86, 1733, 86, 86, 1741, 1738, 1739, 86, - 86, 1740, 86, 1743, 1745, 1742, 86, 1746, 86, 1744, - 86, 86, 86, 86, 1747, 86, 1749, 86, 86, 86, - 1750, 1755, 86, 1757, 1758, 1748, 1751, 86, 1752, 86, - 86, 1753, 1754, 1760, 86, 86, 86, 86, 1765, 1761, - 1759, 86, 86, 1756, 86, 86, 86, 1769, 86, 86, + 1712, 86, 86, 86, 86, 1719, 86, 1726, 86, 86, + 1718, 86, 165, 1721, 1723, 1720, 1729, 1722, 1728, 86, + 1730, 86, 1725, 86, 1727, 86, 86, 86, 1724, 86, + 1732, 1734, 1738, 1733, 1731, 86, 86, 1739, 86, 86, + 86, 1735, 1744, 1740, 1743, 1737, 1736, 86, 86, 1747, + 1741, 1746, 86, 86, 86, 86, 1749, 86, 1742, 1748, + 1751, 86, 86, 1750, 1753, 1745, 86, 1752, 86, 1755, + 86, 1757, 86, 86, 1754, 1756, 1758, 86, 86, 86, + 86, 86, 86, 86, 1767, 86, 1761, 86, 1762, 1769, + 86, 1759, 1760, 1763, 1764, 86, 1765, 1766, 1770, 86, - 1764, 86, 86, 1762, 1772, 1763, 1771, 86, 1767, 86, - 1775, 86, 1773, 1766, 1768, 1770, 1774, 166, 86, 1779, - 86, 86, 86, 86, 1783, 86, 86, 86, 86, 1777, - 86, 86, 1776, 1778, 1781, 1785, 86, 86, 1786, 1790, - 1780, 1784, 1782, 1787, 86, 86, 86, 1794, 86, 1788, - 1793, 86, 1796, 86, 1795, 1792, 1789, 86, 1791, 86, - 1799, 86, 1797, 1800, 86, 86, 86, 1802, 1798, 86, - 86, 86, 1803, 1801, 86, 86, 86, 86, 86, 86, - 1808, 86, 86, 1812, 86, 86, 1809, 3110, 86, 1818, - 1804, 1810, 1806, 1805, 1807, 86, 1811, 1813, 86, 1821, + 1771, 1772, 86, 86, 86, 86, 1768, 1777, 86, 86, + 1773, 86, 86, 86, 1781, 86, 86, 1774, 1776, 86, + 1783, 86, 1775, 86, 1784, 1779, 1785, 86, 1786, 1780, + 1778, 86, 1782, 167, 86, 86, 1787, 1791, 86, 86, + 86, 1795, 86, 86, 86, 1789, 86, 1793, 86, 1790, + 86, 1797, 86, 86, 1788, 1802, 86, 1796, 1792, 1794, + 1798, 86, 1799, 86, 163, 1800, 1806, 86, 1803, 1805, + 86, 1804, 1801, 1807, 1808, 86, 86, 86, 1811, 1812, + 86, 1809, 86, 86, 86, 1814, 1810, 86, 86, 86, + 1815, 86, 86, 86, 1813, 86, 86, 86, 1820, 86, - 1816, 86, 1815, 1820, 86, 86, 1822, 1817, 86, 86, - 1814, 86, 86, 1819, 1826, 86, 1829, 1830, 86, 86, - 1823, 1831, 86, 86, 1824, 1827, 86, 1828, 86, 1825, - 1833, 86, 86, 1834, 1837, 86, 86, 1839, 86, 1832, - 1838, 1840, 1841, 86, 1835, 1843, 1842, 1836, 86, 86, - 86, 86, 86, 1845, 1846, 86, 86, 1847, 86, 1849, - 86, 1856, 86, 1848, 86, 86, 86, 86, 1861, 1864, - 86, 86, 1854, 86, 1844, 86, 1850, 1851, 1852, 1858, - 1855, 1862, 1857, 1853, 1859, 86, 1863, 1860, 86, 86, - 86, 1868, 86, 86, 86, 1870, 86, 1865, 86, 86, + 86, 1824, 86, 86, 1821, 86, 1825, 1850, 1816, 1818, + 1819, 1817, 1822, 86, 1823, 86, 86, 86, 1828, 1826, + 1830, 1833, 1827, 1832, 86, 1829, 1834, 86, 86, 86, + 86, 1831, 1838, 86, 86, 86, 1835, 86, 1841, 1842, + 86, 1843, 86, 86, 1836, 1845, 86, 86, 1839, 1837, + 1840, 86, 1846, 1844, 1849, 86, 1847, 1851, 86, 1853, + 86, 1852, 1855, 86, 1848, 86, 86, 86, 86, 1857, + 1858, 86, 1856, 86, 1859, 86, 1861, 86, 1854, 86, + 1860, 86, 86, 86, 86, 86, 1868, 1866, 1870, 1862, + 1863, 1864, 86, 1871, 86, 1874, 1865, 1872, 86, 1867, - 1873, 1874, 86, 86, 1876, 86, 86, 86, 86, 1866, - 86, 1867, 86, 1882, 86, 86, 1871, 1878, 1881, 1869, - 1872, 1879, 86, 1875, 86, 1884, 86, 86, 1880, 1885, - 86, 1877, 86, 1888, 86, 1886, 1883, 86, 1892, 86, - 86, 86, 1891, 1895, 86, 1896, 1898, 1894, 86, 86, - 1890, 86, 86, 1887, 1897, 86, 1889, 1899, 86, 1893, - 86, 86, 86, 1903, 86, 86, 1906, 86, 1907, 1908, - 86, 86, 1900, 1902, 86, 86, 86, 1901, 86, 86, - 1904, 1915, 1911, 1916, 86, 1910, 86, 1909, 86, 86, - 1905, 1913, 86, 86, 3110, 86, 1920, 86, 1912, 1921, + 1873, 1869, 86, 1876, 86, 1878, 86, 1880, 86, 86, + 86, 86, 1882, 1877, 86, 86, 86, 1875, 86, 1885, + 1886, 86, 86, 1888, 86, 86, 86, 1879, 86, 86, + 1894, 86, 86, 1893, 1883, 1890, 1881, 1884, 1891, 86, + 86, 1889, 1887, 86, 86, 86, 1892, 1896, 86, 1895, + 1897, 86, 1900, 1898, 86, 1904, 86, 1907, 86, 1903, + 86, 86, 1908, 86, 1902, 1906, 1899, 86, 86, 1909, + 86, 1901, 1910, 86, 86, 86, 1905, 86, 86, 86, + 1912, 1915, 1911, 86, 1918, 1919, 1920, 1914, 86, 86, + 86, 86, 86, 1913, 1923, 1916, 86, 86, 86, 1928, - 86, 1914, 86, 1918, 1922, 1917, 1923, 86, 1919, 86, - 86, 1925, 86, 1924, 1927, 86, 1926, 1931, 1928, 86, - 86, 1930, 1934, 86, 1929, 86, 1937, 86, 86, 86, - 1936, 86, 1938, 1939, 86, 86, 86, 86, 1935, 1932, - 1933, 1944, 86, 1940, 1945, 86, 1941, 1946, 1948, 1949, - 86, 1942, 1947, 86, 86, 86, 1943, 86, 86, 1953, - 86, 86, 1951, 1950, 86, 86, 86, 86, 1955, 86, - 1952, 1958, 1954, 1956, 1960, 1957, 166, 86, 86, 1962, - 86, 1961, 86, 86, 86, 86, 1966, 1990, 1959, 1965, - 1963, 86, 1967, 1968, 86, 1969, 86, 1971, 86, 86, + 86, 86, 86, 1927, 1922, 1917, 86, 86, 1921, 86, + 1924, 1932, 86, 1935, 86, 1933, 1925, 1930, 86, 1926, + 1929, 1934, 1936, 86, 86, 1931, 1939, 86, 86, 86, + 86, 86, 86, 162, 1937, 1943, 86, 1946, 86, 1938, + 86, 1948, 1941, 86, 1951, 1940, 1949, 86, 1942, 86, + 1950, 1944, 1945, 1947, 86, 86, 86, 1956, 86, 1957, + 86, 86, 1958, 1952, 1960, 160, 1953, 1959, 86, 1961, + 86, 1954, 86, 86, 1965, 86, 1955, 1963, 86, 86, + 86, 86, 86, 1967, 86, 1964, 1970, 1962, 1972, 86, + 1966, 167, 86, 1968, 86, 86, 1973, 86, 86, 86, - 86, 1964, 86, 86, 1972, 1970, 1974, 1973, 1975, 86, - 86, 86, 86, 1977, 1976, 86, 1979, 86, 1983, 86, - 86, 86, 86, 1978, 1980, 1982, 86, 1985, 86, 1981, - 1984, 1986, 1987, 86, 86, 86, 86, 86, 1994, 86, - 1992, 86, 1993, 1989, 86, 86, 86, 86, 1988, 86, - 1996, 86, 86, 1999, 1991, 86, 2003, 1995, 2002, 86, - 1998, 86, 86, 1997, 2000, 2001, 86, 2007, 2004, 2009, - 86, 86, 2006, 2005, 2010, 86, 86, 2015, 86, 2008, - 86, 86, 86, 86, 86, 2017, 86, 86, 2018, 2019, - 86, 2011, 2012, 2013, 2014, 2020, 86, 86, 2016, 86, + 86, 1974, 1978, 1977, 86, 1979, 1971, 1969, 86, 1975, + 1980, 86, 1981, 86, 1976, 1983, 86, 1987, 86, 86, + 1982, 86, 1984, 1985, 86, 1986, 86, 86, 86, 1988, + 1989, 86, 1991, 86, 86, 1995, 86, 86, 1990, 1994, + 1992, 86, 86, 86, 86, 1993, 1996, 1997, 1998, 1999, + 86, 86, 86, 2001, 86, 86, 2006, 86, 2004, 86, + 2005, 2000, 86, 86, 86, 86, 2011, 86, 2008, 2002, + 86, 2003, 86, 2015, 86, 2007, 86, 2012, 2010, 2014, + 86, 2009, 86, 2016, 86, 2013, 86, 2019, 2017, 2021, + 86, 86, 86, 86, 2022, 86, 86, 2020, 2027, 86, - 2024, 86, 86, 2021, 2022, 86, 86, 86, 86, 86, - 2025, 86, 86, 86, 3110, 86, 86, 2023, 2027, 2028, - 2029, 2032, 86, 2026, 2031, 2035, 2036, 86, 86, 2037, - 86, 2030, 2034, 2039, 2033, 86, 2038, 86, 86, 2043, - 2040, 86, 2041, 2042, 86, 86, 2044, 86, 2046, 2045, - 86, 86, 86, 86, 2047, 2051, 86, 86, 2053, 2049, - 86, 2055, 86, 2050, 86, 2048, 86, 86, 2058, 2057, - 86, 2052, 2059, 86, 2054, 2060, 86, 86, 2063, 86, - 86, 86, 2064, 2056, 86, 86, 2069, 86, 2066, 86, - 2070, 2061, 2065, 86, 86, 2073, 2062, 86, 86, 2068, + 2029, 2018, 2023, 86, 86, 2030, 86, 2026, 2024, 86, + 2025, 2031, 86, 2028, 2032, 86, 2033, 86, 86, 86, + 2036, 86, 86, 86, 86, 86, 2037, 86, 86, 86, + 2048, 86, 86, 2044, 2039, 2040, 2041, 2034, 2035, 86, + 86, 86, 2038, 2043, 2047, 86, 2045, 86, 2051, 2046, + 86, 2042, 2052, 86, 86, 2054, 2055, 2049, 86, 86, + 2050, 2053, 86, 2057, 86, 86, 2058, 86, 86, 86, + 2063, 2056, 86, 2059, 2061, 86, 86, 2065, 86, 2062, + 2060, 2067, 86, 2069, 86, 86, 2066, 2070, 2064, 2071, + 86, 86, 86, 2075, 86, 2072, 86, 86, 86, 86, - 2067, 86, 2074, 86, 86, 2075, 2079, 86, 2071, 86, - 86, 2081, 2077, 86, 2072, 86, 2076, 86, 2082, 86, - 2078, 2080, 2083, 86, 2084, 86, 86, 2088, 86, 86, - 86, 2090, 2086, 2085, 86, 2087, 2091, 86, 2092, 2095, - 2093, 86, 2094, 86, 86, 86, 2096, 2089, 2100, 86, - 86, 86, 86, 86, 2099, 86, 2097, 86, 86, 86, - 86, 86, 86, 3110, 2098, 2106, 2104, 2109, 2101, 2102, - 2107, 2103, 2105, 86, 86, 86, 86, 86, 2110, 2108, - 86, 2112, 2114, 2111, 2115, 2118, 86, 2120, 86, 86, - 86, 166, 2116, 3110, 2113, 2119, 2122, 86, 2117, 2121, + 86, 2076, 2068, 2081, 86, 2078, 86, 2077, 86, 2073, + 86, 2082, 2074, 2085, 2080, 86, 86, 2079, 2087, 86, + 2086, 2083, 86, 86, 2091, 86, 86, 86, 2084, 86, + 2093, 2089, 86, 2094, 86, 86, 2095, 86, 2092, 2090, + 2088, 86, 2096, 2100, 2098, 86, 86, 2099, 2102, 86, + 86, 86, 2097, 2103, 86, 2104, 2107, 86, 86, 86, + 86, 2105, 2106, 2108, 2112, 86, 2101, 86, 86, 2111, + 2109, 86, 86, 86, 86, 86, 86, 86, 86, 2110, + 86, 2121, 86, 2122, 2118, 2113, 2114, 2115, 2116, 2119, + 2117, 2123, 86, 2120, 86, 86, 86, 86, 2124, 86, - 86, 86, 86, 2130, 2124, 2128, 2125, 86, 2123, 86, - 2129, 86, 2131, 2127, 86, 2126, 86, 2132, 86, 2135, - 86, 86, 2136, 86, 2133, 2140, 86, 2134, 86, 2141, - 86, 86, 2139, 2144, 86, 86, 2137, 86, 2146, 86, - 2145, 86, 2142, 2147, 86, 2149, 2148, 2138, 86, 2143, - 86, 86, 2150, 86, 2151, 86, 86, 2152, 86, 86, - 2154, 86, 86, 86, 2157, 86, 86, 2163, 86, 86, - 2161, 86, 86, 2156, 86, 2153, 2164, 2159, 86, 2155, - 2158, 86, 86, 2160, 2165, 86, 2166, 2170, 2162, 86, - 2168, 2173, 86, 2169, 86, 86, 86, 2167, 2171, 86, + 2126, 2132, 86, 2127, 86, 2134, 86, 86, 2131, 167, + 2128, 2125, 86, 2133, 2129, 86, 2136, 86, 2140, 2142, + 2137, 2143, 2130, 2141, 86, 86, 2135, 86, 86, 86, + 2138, 2139, 2144, 86, 2147, 86, 2145, 86, 2148, 86, + 2152, 86, 86, 2153, 86, 2156, 86, 158, 2151, 86, + 86, 86, 2149, 2146, 2157, 2160, 2154, 86, 2158, 2159, + 86, 2161, 86, 2150, 2155, 86, 2162, 86, 86, 86, + 86, 86, 2164, 86, 86, 2166, 86, 86, 86, 2169, + 86, 86, 86, 2175, 86, 2163, 2168, 2173, 86, 86, + 86, 86, 2171, 2176, 2165, 2170, 2167, 86, 2172, 86, - 86, 86, 2174, 86, 86, 86, 86, 2172, 2184, 86, - 86, 86, 86, 2186, 2175, 2176, 2185, 2181, 2183, 86, - 2179, 86, 2177, 86, 2178, 2180, 2188, 2182, 86, 2190, - 2191, 86, 2187, 86, 2189, 2192, 86, 86, 2193, 86, - 2195, 86, 2198, 86, 86, 86, 2194, 86, 86, 2199, - 2196, 86, 2200, 2197, 2204, 86, 86, 2201, 2205, 86, - 2203, 2207, 86, 2209, 86, 2202, 86, 86, 2212, 86, - 2206, 86, 2211, 86, 2208, 2213, 86, 86, 86, 86, - 86, 2210, 2215, 86, 2218, 2214, 2219, 86, 2221, 86, - 86, 2216, 86, 86, 2225, 2224, 2223, 2217, 86, 2220, + 86, 86, 2174, 2177, 2178, 2182, 86, 2179, 2184, 2180, + 2181, 2185, 86, 86, 2183, 86, 86, 86, 86, 86, + 86, 2186, 86, 86, 86, 2187, 2196, 86, 86, 2197, + 86, 2198, 2193, 86, 2188, 86, 86, 2191, 2195, 2189, + 2192, 2190, 86, 2194, 2200, 86, 2199, 2423, 2201, 86, + 2202, 2203, 86, 2204, 86, 86, 2207, 2205, 2206, 86, + 2210, 86, 86, 86, 86, 86, 86, 2211, 2208, 2212, + 86, 2209, 2216, 86, 2217, 86, 2219, 86, 2215, 86, + 2221, 86, 86, 2213, 86, 2214, 86, 2223, 86, 2218, + 2224, 86, 2225, 86, 86, 86, 86, 2220, 86, 2222, - 86, 2222, 2227, 86, 86, 2231, 86, 86, 86, 2226, - 86, 86, 86, 2236, 86, 2229, 2235, 2228, 86, 86, - 86, 2241, 86, 2230, 2238, 2234, 86, 2232, 86, 86, - 2237, 2233, 86, 2239, 86, 2240, 2243, 86, 86, 2248, - 86, 86, 2244, 2250, 86, 86, 2242, 2251, 86, 2249, - 2245, 86, 2246, 2255, 86, 86, 2256, 2254, 86, 86, - 86, 86, 2252, 2247, 2253, 2260, 2262, 86, 2258, 2265, - 86, 86, 2263, 86, 86, 86, 2267, 86, 2268, 2257, - 2259, 86, 86, 86, 2261, 2264, 2269, 86, 86, 86, - 2271, 2272, 2266, 86, 86, 2278, 2273, 2277, 2274, 2270, + 2226, 2230, 2228, 2227, 2231, 86, 2233, 86, 86, 86, + 86, 86, 2237, 2236, 2229, 2235, 86, 2232, 2239, 86, + 86, 86, 2243, 86, 86, 86, 2234, 2238, 86, 86, + 2248, 86, 86, 2247, 86, 2240, 2241, 86, 86, 2242, + 2253, 86, 2250, 2246, 2244, 86, 86, 86, 2245, 2251, + 86, 2249, 86, 2252, 2255, 86, 86, 2260, 86, 86, + 2256, 2262, 86, 86, 86, 2254, 86, 2261, 2257, 2263, + 2258, 86, 86, 86, 2266, 86, 2267, 2268, 86, 86, + 2272, 2259, 86, 86, 2264, 2271, 2265, 2274, 2269, 86, + 2277, 2270, 86, 86, 2275, 2279, 86, 2280, 2276, 2273, - 2279, 86, 2275, 2276, 86, 86, 86, 86, 2280, 86, - 2283, 2284, 86, 2285, 166, 86, 2282, 86, 86, 2287, - 86, 2286, 2292, 86, 86, 2281, 86, 86, 86, 86, - 86, 86, 2300, 86, 2290, 2288, 2291, 2289, 2294, 2293, - 2295, 86, 2296, 2298, 2299, 2297, 86, 2303, 86, 86, - 2304, 2305, 86, 2301, 86, 86, 2308, 2306, 2302, 2309, - 2307, 86, 86, 2310, 86, 86, 86, 2312, 86, 86, - 86, 86, 2316, 2317, 86, 2311, 86, 86, 86, 86, - 2313, 2319, 2320, 2314, 86, 2322, 86, 2321, 2318, 2315, - 86, 86, 86, 2327, 86, 2323, 2326, 2325, 86, 86, + 2278, 86, 86, 86, 86, 86, 86, 2281, 2284, 86, + 86, 86, 86, 2285, 86, 2286, 2283, 86, 2282, 2287, + 2288, 2290, 2291, 2289, 86, 86, 2294, 86, 86, 2292, + 86, 2295, 2293, 2296, 86, 2297, 167, 86, 86, 86, + 86, 2299, 86, 2298, 2300, 86, 2301, 2304, 86, 86, + 86, 2306, 86, 2302, 2303, 2305, 86, 2307, 86, 2311, + 86, 86, 2310, 2312, 86, 2308, 2356, 2309, 2315, 86, + 86, 2316, 86, 2314, 2317, 86, 86, 2319, 2320, 2318, + 2313, 2321, 2322, 86, 86, 86, 86, 86, 86, 2324, + 86, 86, 86, 2328, 2329, 86, 86, 86, 2325, 2323, - 2324, 86, 86, 86, 2329, 86, 86, 86, 2336, 2333, - 86, 2328, 2335, 86, 86, 86, 2337, 2332, 86, 86, - 86, 2330, 2331, 2342, 2341, 86, 2334, 2339, 2343, 86, - 86, 2338, 2344, 86, 2340, 86, 2346, 86, 2351, 2345, - 2347, 86, 2349, 86, 86, 86, 86, 2350, 2353, 86, - 2355, 86, 86, 86, 86, 2354, 86, 2352, 86, 2348, - 86, 86, 86, 2359, 86, 2361, 2362, 2357, 2363, 86, - 2356, 2365, 2358, 2364, 86, 86, 2366, 86, 2367, 86, - 2360, 86, 86, 86, 2369, 2374, 2368, 2372, 86, 86, - 86, 86, 2373, 86, 2371, 2377, 86, 86, 86, 86, + 86, 2331, 86, 3122, 2326, 86, 2332, 86, 2333, 2330, + 2327, 2334, 86, 86, 86, 86, 2336, 2337, 2335, 2338, + 2339, 86, 86, 86, 86, 86, 86, 2340, 2341, 86, + 2345, 86, 2348, 86, 86, 86, 2347, 86, 86, 2344, + 2349, 86, 2342, 86, 2343, 86, 2353, 2351, 2354, 2346, + 86, 2350, 3122, 2352, 86, 86, 2358, 2357, 2355, 86, + 86, 2361, 2359, 86, 2363, 86, 86, 2362, 2365, 86, + 86, 2360, 2367, 86, 86, 2366, 86, 2364, 86, 86, + 86, 86, 86, 86, 2371, 2377, 2373, 2374, 2375, 86, + 2369, 86, 2368, 86, 2370, 2376, 86, 86, 2378, 2379, - 2370, 2378, 86, 2381, 2383, 2376, 86, 2375, 2382, 86, - 86, 86, 2379, 86, 86, 2380, 2386, 86, 86, 2385, - 2387, 86, 86, 86, 2384, 86, 2391, 2388, 2389, 2390, - 2393, 2394, 86, 2395, 86, 2396, 86, 2397, 86, 86, - 86, 2399, 2392, 86, 2401, 2400, 86, 2402, 86, 86, - 86, 2398, 86, 2407, 86, 86, 2409, 86, 2410, 86, - 2403, 2404, 86, 86, 86, 86, 86, 86, 2406, 86, - 2405, 2413, 2416, 2411, 2408, 2412, 86, 2414, 2419, 86, - 86, 86, 86, 86, 86, 86, 2415, 86, 166, 2417, - 2420, 86, 2427, 86, 86, 86, 2418, 2423, 86, 2425, + 86, 86, 86, 2384, 86, 2381, 2372, 86, 86, 86, + 86, 2386, 2389, 86, 2383, 2380, 2385, 86, 86, 86, + 2382, 2390, 86, 2393, 2388, 86, 2387, 2394, 86, 2391, + 2395, 86, 86, 86, 86, 86, 2399, 2392, 2398, 86, + 86, 2397, 86, 86, 3122, 86, 86, 2402, 2403, 2396, + 2405, 2406, 86, 2400, 2401, 2407, 86, 2408, 86, 2409, + 86, 86, 2404, 86, 2411, 86, 2413, 86, 2412, 86, + 2414, 86, 86, 2410, 86, 2419, 86, 86, 86, 2415, + 2421, 86, 86, 2416, 2422, 86, 86, 86, 86, 86, + 2418, 86, 2417, 2425, 2424, 86, 2420, 86, 2427, 2426, - 2426, 86, 2422, 2428, 86, 2431, 2421, 2424, 2429, 86, - 2430, 86, 2434, 3110, 86, 86, 2436, 86, 2435, 2437, - 2432, 2438, 86, 86, 2433, 2439, 86, 86, 2440, 86, - 2441, 86, 2442, 2443, 2444, 86, 2445, 86, 86, 86, - 86, 86, 86, 86, 2452, 86, 86, 86, 2450, 86, - 2456, 2457, 86, 86, 86, 2446, 2447, 2460, 86, 2448, - 2449, 2451, 2459, 2453, 2454, 2455, 86, 2458, 2462, 86, - 86, 86, 2463, 86, 86, 2461, 86, 86, 2465, 86, - 2471, 86, 2472, 86, 2473, 86, 2474, 86, 2464, 2466, - 86, 2467, 86, 2469, 2468, 86, 86, 86, 2470, 86, + 2428, 2431, 86, 86, 86, 86, 2432, 86, 2429, 2430, + 167, 86, 2439, 86, 86, 86, 86, 2433, 2435, 86, + 86, 2437, 2438, 2434, 2440, 86, 3122, 86, 2436, 2441, + 2446, 2442, 86, 86, 2464, 2444, 86, 2443, 2448, 2447, + 86, 2449, 86, 2445, 2450, 86, 2451, 86, 86, 2452, + 86, 2453, 86, 2454, 86, 86, 86, 86, 2455, 86, + 86, 2457, 86, 86, 86, 2456, 86, 86, 2462, 86, + 2468, 2469, 86, 86, 2459, 2458, 2472, 86, 86, 2460, + 2461, 86, 2463, 2465, 2466, 2467, 2470, 2471, 2474, 86, + 2473, 2475, 86, 86, 86, 86, 86, 86, 86, 86, - 3110, 2478, 86, 86, 86, 2475, 2482, 2481, 86, 2477, - 2476, 2483, 86, 86, 86, 2484, 86, 2479, 86, 2480, - 2485, 86, 2486, 2487, 86, 86, 86, 2488, 2489, 2491, - 86, 86, 2496, 86, 2495, 86, 86, 86, 2490, 2499, - 86, 2500, 86, 86, 86, 2492, 2494, 2502, 86, 2493, - 2497, 2503, 86, 86, 2498, 86, 86, 2501, 86, 2505, - 86, 2504, 2508, 86, 2511, 2512, 86, 2510, 2509, 86, - 2514, 86, 86, 2506, 86, 2507, 86, 2515, 86, 2519, - 86, 86, 2520, 2516, 86, 2522, 86, 86, 2513, 86, - 2518, 3110, 2517, 86, 86, 86, 2527, 86, 2529, 86, + 2477, 2483, 86, 2484, 86, 2485, 86, 86, 86, 2478, + 2476, 2486, 86, 2479, 2480, 2481, 2482, 86, 2491, 86, + 86, 86, 86, 2488, 2490, 2487, 2493, 86, 86, 2494, + 2496, 2489, 2495, 86, 2497, 86, 86, 86, 86, 86, + 2492, 2498, 86, 86, 86, 2499, 86, 2503, 86, 86, + 2501, 2507, 2508, 86, 86, 86, 2500, 2511, 86, 2502, + 2515, 86, 86, 2504, 2506, 2505, 2512, 2510, 86, 2509, + 2513, 86, 2514, 86, 86, 86, 2520, 86, 86, 86, + 86, 2524, 86, 2523, 2516, 86, 2526, 86, 2517, 2522, + 2521, 86, 86, 86, 2518, 2519, 2527, 86, 86, 2531, - 2523, 86, 2524, 2525, 2526, 86, 2521, 86, 2528, 86, - 2530, 86, 2531, 86, 2533, 2532, 86, 86, 86, 2534, - 86, 86, 2539, 86, 86, 2536, 2537, 86, 2540, 2542, - 86, 2545, 2535, 2543, 86, 2538, 2541, 2544, 166, 86, - 86, 2549, 86, 86, 2546, 2547, 86, 86, 2550, 86, - 2551, 2553, 2554, 86, 2555, 86, 86, 2552, 2548, 2557, - 86, 86, 2559, 3110, 2558, 86, 86, 2560, 86, 2556, - 2561, 2562, 2563, 86, 86, 86, 86, 2564, 86, 2565, - 86, 86, 86, 2570, 2566, 86, 2571, 2572, 2568, 86, - 86, 2567, 86, 86, 86, 2574, 2575, 2573, 86, 86, + 86, 2528, 86, 2532, 2525, 2534, 86, 86, 86, 2529, + 2530, 2539, 86, 86, 86, 86, 2541, 86, 86, 2533, + 2535, 2536, 2537, 2538, 86, 86, 86, 86, 86, 2542, + 2540, 2543, 2544, 2545, 86, 2546, 86, 86, 86, 2554, + 86, 86, 86, 2548, 2547, 2549, 2551, 2552, 2555, 86, + 86, 2550, 86, 2553, 2556, 167, 86, 2557, 86, 2561, + 86, 2558, 86, 86, 2563, 86, 86, 2562, 2566, 86, + 2559, 2565, 2567, 86, 86, 2564, 2560, 2569, 86, 86, + 2571, 3122, 2570, 86, 86, 2572, 86, 2568, 2573, 2574, + 2575, 86, 86, 86, 86, 2576, 86, 2577, 86, 86, - 86, 86, 2569, 2577, 2578, 86, 2576, 86, 86, 86, - 2583, 86, 86, 86, 2580, 86, 2581, 2582, 2579, 86, - 2584, 2588, 86, 86, 2585, 86, 86, 86, 2591, 2592, - 86, 86, 2586, 86, 2587, 2590, 86, 2596, 2589, 2599, - 2594, 2604, 2593, 2597, 86, 86, 2600, 2595, 2601, 2602, - 86, 86, 86, 86, 86, 86, 2598, 86, 86, 2603, - 86, 2607, 2605, 86, 2610, 86, 2612, 86, 2606, 2613, - 86, 86, 2608, 2614, 86, 2609, 86, 86, 2617, 86, - 2615, 86, 2616, 2611, 86, 86, 2619, 2621, 86, 2624, - 86, 2618, 2622, 86, 2625, 86, 2620, 2626, 86, 86, + 86, 2582, 2578, 86, 2583, 2584, 2580, 86, 86, 2579, + 86, 86, 86, 2586, 2587, 2585, 86, 86, 86, 86, + 2581, 2589, 2590, 86, 2588, 86, 86, 86, 2595, 86, + 86, 86, 2592, 86, 2593, 2594, 2591, 86, 2596, 2600, + 86, 86, 2597, 86, 86, 86, 2603, 2604, 86, 86, + 2598, 86, 2599, 2602, 86, 2608, 2601, 2611, 2606, 2616, + 2605, 2609, 86, 86, 2612, 2607, 2613, 2614, 86, 86, + 86, 86, 86, 86, 2610, 86, 86, 2615, 86, 2619, + 2617, 86, 2622, 86, 2624, 86, 2618, 2625, 86, 86, + 2620, 2626, 86, 2621, 86, 86, 2629, 86, 2627, 86, - 86, 86, 2627, 2628, 86, 2623, 2631, 86, 86, 2632, - 2633, 86, 2635, 86, 86, 86, 86, 2639, 2629, 2634, - 86, 2630, 86, 86, 2640, 86, 2641, 2636, 86, 2642, - 2638, 86, 86, 2637, 2643, 86, 2648, 86, 2647, 86, - 86, 86, 86, 2644, 2650, 2651, 86, 86, 2645, 2653, - 86, 2646, 2652, 2654, 86, 86, 86, 2656, 86, 86, - 86, 2659, 2649, 86, 2655, 2663, 86, 86, 86, 86, - 2665, 86, 2657, 2658, 2662, 86, 2660, 2664, 2666, 2661, - 2670, 86, 2667, 2669, 86, 2671, 86, 86, 2668, 2679, - 2672, 2673, 86, 86, 2674, 86, 2675, 86, 2676, 86, + 2628, 2623, 86, 86, 2631, 2633, 86, 2636, 86, 2630, + 2634, 86, 2637, 86, 2632, 2638, 86, 86, 86, 86, + 2639, 2640, 86, 2635, 2643, 86, 86, 2644, 2645, 86, + 2647, 86, 86, 86, 86, 2651, 2641, 2646, 86, 2642, + 86, 86, 2652, 86, 2653, 2648, 86, 2654, 2650, 86, + 86, 2649, 2655, 86, 2660, 86, 2659, 86, 86, 86, + 86, 2656, 2662, 2663, 86, 86, 2657, 2665, 86, 2658, + 2664, 2666, 86, 86, 86, 2668, 86, 86, 86, 2671, + 2661, 86, 2667, 2675, 86, 86, 86, 86, 2677, 86, + 2669, 2670, 2674, 86, 2672, 2676, 2678, 2673, 2682, 86, - 2677, 2680, 86, 2678, 86, 86, 86, 2685, 86, 86, - 86, 86, 2686, 2682, 2688, 86, 86, 2689, 2690, 86, - 86, 2691, 2692, 86, 86, 2683, 2684, 86, 2681, 2687, - 86, 2697, 86, 2693, 86, 86, 2694, 86, 2696, 2695, - 2701, 2698, 86, 2699, 86, 2702, 86, 86, 86, 86, - 2700, 2705, 86, 2704, 2706, 2703, 2707, 86, 2708, 86, - 86, 86, 2709, 86, 86, 86, 86, 2717, 86, 86, - 2712, 86, 86, 86, 2715, 2713, 2720, 2710, 2711, 86, - 2718, 86, 2722, 86, 2721, 86, 2716, 3110, 86, 2714, - 2719, 2732, 2723, 2724, 86, 2725, 2727, 86, 2726, 2728, + 2679, 2681, 86, 2683, 86, 86, 2680, 2691, 2684, 2685, + 86, 86, 2686, 86, 2687, 86, 2688, 86, 2689, 2692, + 86, 2690, 86, 86, 86, 2697, 86, 86, 86, 86, + 2698, 2694, 2700, 86, 86, 2701, 2702, 86, 86, 2703, + 2704, 86, 86, 2695, 2696, 86, 2693, 2699, 86, 2709, + 86, 2705, 86, 86, 2706, 86, 2708, 2707, 2713, 2710, + 86, 2711, 86, 2714, 86, 86, 86, 86, 2712, 2717, + 86, 2716, 2718, 2715, 2719, 86, 2720, 86, 86, 86, + 2721, 86, 86, 86, 86, 2729, 86, 86, 2724, 86, + 86, 86, 2727, 2725, 2732, 2722, 2723, 86, 2730, 86, - 86, 2729, 86, 86, 86, 2731, 86, 2734, 86, 2733, - 86, 2735, 2730, 86, 86, 2736, 2737, 86, 86, 86, - 86, 2742, 86, 2740, 2744, 86, 2738, 86, 86, 86, - 86, 86, 2745, 86, 2746, 2739, 2747, 2741, 86, 2748, - 86, 2749, 2752, 86, 86, 2743, 86, 86, 2750, 86, - 2751, 2755, 86, 2753, 86, 2756, 86, 2754, 86, 2762, - 86, 2760, 2759, 86, 86, 2757, 2764, 86, 2765, 86, - 86, 2758, 2767, 86, 86, 86, 86, 2772, 86, 86, - 86, 2771, 2763, 86, 2761, 2766, 2768, 86, 2776, 86, - 2769, 2770, 86, 2779, 86, 86, 86, 86, 2781, 2773, + 2734, 86, 2733, 86, 2728, 3122, 86, 2726, 2731, 2744, + 2735, 2736, 86, 2737, 2739, 86, 2738, 2740, 86, 2741, + 86, 86, 86, 2743, 86, 2746, 86, 2745, 86, 2747, + 2742, 86, 86, 2748, 2749, 86, 86, 86, 86, 2754, + 86, 2752, 2756, 86, 2750, 86, 86, 86, 86, 86, + 2757, 86, 2758, 2751, 2759, 2753, 86, 2760, 86, 2761, + 2764, 86, 86, 2755, 86, 86, 2762, 86, 2763, 2767, + 86, 2765, 86, 2768, 86, 2766, 86, 2774, 86, 2772, + 2771, 86, 86, 2769, 2776, 86, 2777, 86, 86, 2770, + 2779, 86, 86, 86, 86, 2784, 86, 86, 86, 2783, - 86, 2782, 2775, 2774, 86, 86, 2777, 86, 2778, 2784, - 86, 2785, 86, 2787, 86, 2780, 2789, 86, 2792, 2783, - 2786, 86, 86, 86, 86, 86, 2790, 2791, 2796, 86, - 86, 2798, 86, 2788, 2794, 2797, 86, 2799, 2801, 86, - 2793, 2802, 86, 2795, 86, 86, 2804, 86, 2803, 86, - 86, 86, 86, 2809, 2806, 2807, 2800, 2805, 86, 86, - 2812, 86, 86, 86, 86, 86, 2808, 86, 2810, 2811, - 2813, 2817, 86, 2820, 86, 86, 2819, 2816, 2821, 86, - 2814, 86, 86, 86, 2818, 86, 2822, 2824, 2815, 2823, - 2825, 86, 2826, 86, 2827, 86, 86, 2829, 86, 86, + 2775, 86, 2773, 2778, 2780, 86, 2788, 86, 2781, 2782, + 86, 2791, 86, 86, 86, 86, 2793, 2785, 86, 2794, + 2787, 2786, 86, 86, 2789, 86, 2790, 2796, 86, 2797, + 86, 2799, 86, 2792, 2801, 86, 2804, 2795, 2798, 86, + 86, 86, 86, 86, 2802, 2803, 2808, 86, 86, 2810, + 86, 2800, 2806, 2809, 86, 2811, 2813, 86, 2805, 2814, + 86, 2807, 86, 86, 2816, 86, 2815, 86, 86, 86, + 86, 2821, 2818, 2819, 2812, 2817, 86, 86, 2824, 86, + 86, 86, 86, 86, 2820, 86, 2822, 2823, 2825, 2829, + 86, 2832, 86, 86, 2831, 2828, 2833, 86, 2826, 86, - 86, 2828, 2830, 86, 2834, 2835, 86, 2831, 86, 86, - 86, 2839, 86, 2840, 86, 86, 3110, 86, 2841, 2838, - 86, 2832, 2833, 2836, 86, 2844, 2845, 86, 2837, 2846, - 86, 86, 86, 2849, 86, 2842, 2843, 2847, 86, 86, - 86, 2852, 86, 2853, 86, 2848, 2850, 86, 2851, 86, - 86, 86, 86, 86, 2856, 86, 86, 2858, 86, 86, - 2859, 86, 2857, 86, 2854, 86, 86, 2855, 86, 86, - 2868, 2869, 2860, 86, 2864, 2861, 2862, 2863, 2865, 2866, - 2871, 86, 86, 3110, 2867, 2934, 86, 2872, 2870, 2873, - 2875, 86, 2876, 86, 2874, 86, 2878, 86, 86, 2877, + 86, 86, 2830, 86, 2834, 2836, 2827, 2835, 2837, 86, + 2838, 86, 2839, 86, 86, 2841, 86, 86, 86, 2840, + 2842, 86, 2846, 2847, 86, 2843, 86, 86, 86, 2851, + 86, 2852, 86, 86, 3122, 86, 2853, 2850, 86, 2844, + 2845, 2848, 86, 2856, 2857, 86, 2849, 2858, 86, 86, + 86, 2861, 86, 2854, 2855, 2859, 86, 86, 86, 2864, + 86, 2865, 86, 2860, 2862, 86, 2863, 86, 86, 86, + 86, 86, 2868, 86, 86, 2870, 86, 86, 2871, 86, + 2869, 86, 2866, 86, 86, 2867, 86, 86, 2880, 2881, + 2872, 86, 2876, 2873, 2874, 2875, 2877, 2878, 2883, 86, - 2879, 86, 2880, 2881, 86, 86, 2882, 2883, 2886, 86, - 2884, 2885, 86, 86, 2887, 86, 2888, 86, 86, 86, - 2893, 86, 86, 86, 2892, 86, 2889, 86, 86, 2896, - 2895, 86, 86, 86, 2901, 86, 2897, 2890, 2891, 2902, - 86, 2900, 86, 2898, 2903, 86, 86, 2894, 86, 2899, - 2904, 2905, 86, 2908, 86, 2910, 86, 2906, 2909, 86, - 2907, 86, 3110, 86, 86, 86, 86, 2911, 2914, 2912, - 2915, 2917, 86, 2913, 2918, 2916, 86, 2920, 86, 2938, - 86, 86, 2919, 2921, 86, 2936, 2922, 2923, 86, 2924, - 86, 2925, 86, 2926, 86, 2927, 86, 2928, 86, 2929, + 86, 3122, 2879, 2946, 86, 2884, 2882, 2885, 2887, 86, + 2888, 86, 2886, 86, 2890, 86, 86, 2889, 2891, 86, + 2892, 2893, 86, 86, 2894, 2895, 2898, 86, 2896, 2897, + 86, 86, 2899, 86, 2900, 86, 86, 86, 2905, 86, + 86, 86, 2904, 86, 2901, 86, 86, 2908, 2907, 86, + 86, 86, 2913, 86, 2909, 2902, 2903, 2914, 86, 2912, + 86, 2910, 2915, 86, 86, 2906, 86, 2911, 2916, 2917, + 86, 2920, 86, 2922, 86, 2918, 2921, 86, 2919, 86, + 3122, 86, 86, 86, 86, 2923, 2926, 2924, 2927, 2929, + 86, 2925, 2930, 2928, 86, 2932, 86, 2950, 86, 86, - 86, 2930, 86, 86, 2932, 86, 86, 86, 2937, 86, - 86, 86, 2931, 86, 86, 2933, 86, 2941, 2943, 86, - 86, 86, 86, 2939, 2945, 2940, 2942, 2935, 86, 2947, - 86, 2950, 2944, 2949, 86, 86, 86, 86, 86, 86, - 2948, 2952, 86, 86, 86, 86, 2946, 86, 2951, 2956, - 2959, 2957, 2961, 86, 2953, 2955, 2954, 86, 2960, 2958, - 2962, 86, 2963, 86, 86, 86, 86, 86, 86, 2966, - 86, 86, 86, 2965, 2972, 2971, 86, 86, 86, 2974, - 2964, 2968, 2970, 86, 86, 86, 2967, 86, 86, 2975, - 86, 2969, 2973, 86, 86, 86, 86, 2981, 86, 86, + 2931, 2933, 86, 2948, 2934, 2935, 86, 2936, 86, 2937, + 86, 2938, 86, 2939, 86, 2940, 86, 2941, 86, 2942, + 86, 86, 2944, 86, 86, 86, 2949, 86, 86, 86, + 2943, 86, 86, 2945, 86, 2953, 2955, 86, 86, 86, + 86, 2951, 2957, 2952, 2954, 2947, 86, 2959, 86, 2962, + 2956, 2961, 86, 86, 86, 86, 86, 86, 2960, 2964, + 86, 86, 86, 86, 2958, 86, 2963, 2968, 2971, 2969, + 2973, 86, 2965, 2967, 2966, 86, 2972, 2970, 2974, 86, + 2975, 86, 86, 86, 86, 86, 86, 2978, 86, 86, + 86, 2977, 2984, 2983, 86, 86, 86, 2986, 2976, 2980, - 2978, 2985, 2976, 2977, 3110, 2980, 2982, 2988, 86, 86, - 86, 86, 2979, 2986, 2983, 2984, 2990, 86, 2987, 2989, - 86, 2991, 2992, 86, 2993, 86, 86, 86, 2994, 2996, - 86, 2995, 2997, 86, 86, 2998, 3001, 86, 86, 86, - 86, 86, 86, 86, 3004, 3006, 86, 3009, 86, 3000, - 3003, 3002, 86, 86, 3012, 86, 3007, 86, 2999, 86, - 3005, 86, 3008, 86, 3013, 3014, 3016, 3010, 3017, 86, - 86, 3011, 86, 86, 86, 3018, 86, 86, 3015, 3022, - 86, 3021, 3019, 3023, 86, 86, 86, 86, 86, 3020, - 3027, 86, 86, 3029, 3024, 86, 86, 3025, 86, 3026, + 2982, 86, 86, 86, 2979, 86, 86, 2987, 86, 2981, + 2985, 86, 86, 86, 86, 2993, 86, 86, 2990, 2997, + 2988, 2989, 3122, 2992, 2994, 3000, 86, 86, 86, 86, + 2991, 2998, 2995, 2996, 3002, 86, 2999, 3001, 86, 3003, + 3004, 86, 3005, 86, 86, 86, 3006, 3008, 86, 3007, + 3009, 86, 86, 3010, 3013, 86, 86, 86, 86, 86, + 86, 86, 3016, 3018, 86, 3021, 86, 3012, 3015, 3014, + 86, 86, 3024, 86, 3019, 86, 3011, 86, 3017, 86, + 3020, 86, 3025, 3026, 3028, 3022, 3029, 86, 86, 3023, + 86, 86, 86, 3030, 86, 86, 3027, 3034, 86, 3033, - 86, 86, 86, 3034, 86, 3031, 3035, 3028, 3032, 86, - 3030, 3036, 86, 3040, 86, 3033, 86, 3043, 86, 3042, - 3037, 3039, 3038, 3041, 86, 86, 86, 86, 3047, 3044, - 3048, 3045, 3046, 3049, 86, 86, 86, 3051, 86, 86, - 3050, 86, 86, 3052, 86, 86, 3057, 86, 86, 3054, - 86, 3060, 86, 3061, 86, 86, 86, 86, 86, 86, - 3053, 3059, 3064, 3055, 3056, 3062, 3058, 86, 3063, 86, - 3068, 86, 3067, 86, 3065, 86, 3069, 3066, 86, 3072, - 3070, 86, 3074, 86, 3075, 86, 86, 86, 3079, 86, - 3076, 86, 86, 3077, 3073, 86, 3080, 3081, 86, 3071, + 3031, 3035, 86, 86, 86, 86, 86, 3032, 3039, 86, + 86, 3041, 3036, 86, 86, 3037, 86, 3038, 86, 86, + 86, 3046, 86, 3043, 3047, 3040, 3044, 86, 3042, 3048, + 86, 3052, 86, 3045, 86, 3055, 86, 3054, 3049, 3051, + 3050, 3053, 86, 86, 86, 86, 3059, 3056, 3060, 3057, + 3058, 3061, 86, 86, 86, 3063, 86, 86, 3062, 86, + 86, 3064, 86, 86, 3069, 86, 86, 3066, 86, 3072, + 86, 3073, 86, 86, 86, 86, 86, 86, 3065, 3071, + 3076, 3067, 3068, 3074, 3070, 86, 3075, 86, 3080, 86, + 3079, 86, 3077, 86, 3081, 3078, 86, 3084, 3082, 86, - 3082, 86, 86, 86, 86, 3083, 3078, 86, 3086, 3084, - 86, 3085, 3088, 86, 86, 3090, 86, 86, 86, 3091, - 86, 3094, 86, 3087, 3095, 86, 3089, 86, 3098, 3099, - 86, 86, 3101, 86, 86, 3092, 3093, 3096, 3100, 3102, - 86, 3097, 86, 86, 86, 86, 3108, 86, 3104, 3103, - 3105, 3109, 86, 3106, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3107, 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, + 3086, 86, 3087, 86, 86, 86, 3091, 86, 3088, 86, + 86, 3089, 3085, 86, 3092, 3093, 86, 3083, 3094, 86, + 86, 86, 86, 3095, 3090, 86, 3098, 3096, 86, 3097, + 3100, 86, 86, 3102, 86, 86, 86, 3103, 86, 3106, + 86, 3099, 3107, 86, 3101, 86, 3110, 3111, 86, 86, + 3113, 86, 86, 3104, 3105, 3108, 3112, 3114, 86, 3109, + 86, 86, 86, 86, 3120, 86, 3116, 3115, 3117, 3121, + 86, 3118, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3119, 47, 47, 47, 47, 47, 47, 47, 52, + 52, 52, 52, 52, 52, 52, 57, 57, 57, 57, - 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, - 80, 80, 80, 89, 89, 3110, 89, 89, 89, 89, - 156, 156, 3110, 3110, 3110, 156, 156, 158, 158, 3110, - 3110, 158, 3110, 158, 160, 3110, 3110, 3110, 3110, 3110, - 160, 163, 163, 3110, 3110, 3110, 163, 163, 165, 3110, - 3110, 3110, 3110, 3110, 165, 167, 167, 3110, 167, 167, - 167, 167, 170, 3110, 3110, 3110, 3110, 3110, 170, 173, - 173, 3110, 3110, 3110, 173, 173, 90, 90, 3110, 90, - 90, 90, 90, 17, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 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, 3122, 89, 89, 89, 89, 157, 157, + 3122, 3122, 3122, 157, 157, 159, 159, 3122, 3122, 159, + 3122, 159, 161, 3122, 3122, 3122, 3122, 3122, 161, 164, + 164, 3122, 3122, 3122, 164, 164, 166, 3122, 3122, 3122, + 3122, 3122, 166, 168, 168, 3122, 168, 168, 168, 168, + 171, 3122, 3122, 3122, 3122, 3122, 171, 174, 174, 3122, + 3122, 3122, 174, 174, 90, 90, 3122, 90, 90, 90, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110 + 90, 17, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122 } ; -static const flex_int16_t yy_chk[6125] = +static const flex_int16_t yy_chk[6143] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2133,672 +2139,674 @@ static const flex_int16_t yy_chk[6125] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3118, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3130, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 28, 16, - 25, 46, 27, 28, 87, 25, 27, 28, 87, 27, - 28, 40, 28, 28, 25, 30, 30, 31, 31, 124, - 32, 104, 36, 36, 32, 40, 31, 32, 37, 37, - 30, 36, 124, 37, 32, 39, 32, 36, 73, 56, - 39, 36, 56, 104, 39, 92, 41, 41, 92, 37, + 16, 23, 23, 25, 27, 27, 25, 25, 40, 16, + 25, 46, 27, 30, 30, 25, 27, 31, 31, 27, + 43, 43, 40, 43, 25, 28, 31, 87, 30, 32, + 28, 87, 43, 32, 28, 94, 32, 28, 43, 28, + 28, 56, 94, 32, 56, 32, 36, 36, 37, 37, + 28, 45, 45, 37, 2556, 36, 45, 39, 41, 41, - 39, 41, 73, 39, 67, 67, 43, 43, 42, 43, - 39, 41, 41, 42, 41, 44, 42, 97, 43, 44, - 97, 45, 45, 42, 43, 180, 45, 42, 42, 44, - 45, 84, 84, 44, 44, 62, 180, 62, 62, 70, - 62, 70, 70, 72, 70, 72, 72, 79, 72, 79, + 45, 36, 39, 41, 124, 36, 39, 67, 67, 37, + 73, 124, 39, 41, 41, 39, 41, 44, 42, 84, + 84, 44, 39, 42, 73, 62, 42, 62, 62, 92, + 62, 44, 92, 42, 142, 44, 44, 42, 42, 70, + 142, 70, 70, 72, 70, 72, 72, 79, 72, 79, 79, 70, 79, 86, 95, 86, 86, 89, 86, 89, - 89, 93, 89, 94, 86, 93, 95, 96, 89, 89, - 94, 100, 98, 2544, 103, 98, 101, 102, 105, 106, - 100, 107, 108, 102, 145, 106, 110, 96, 98, 102, - 101, 102, 103, 103, 109, 107, 111, 105, 106, 112, + 89, 93, 89, 96, 86, 93, 95, 97, 89, 89, + 97, 98, 100, 103, 98, 101, 102, 104, 105, 106, + 107, 100, 102, 96, 109, 106, 108, 98, 102, 101, + 102, 103, 103, 111, 107, 110, 115, 105, 106, 104, - 145, 114, 108, 112, 110, 109, 109, 113, 117, 248, - 120, 248, 113, 109, 111, 114, 115, 116, 121, 115, - 118, 119, 115, 116, 119, 118, 122, 117, 119, 120, - 122, 123, 121, 125, 120, 115, 115, 126, 123, 127, - 125, 136, 116, 128, 119, 118, 130, 129, 131, 132, - 126, 129, 134, 131, 133, 133, 136, 131, 135, 127, - 137, 128, 135, 138, 130, 139, 142, 140, 139, 132, - 141, 135, 134, 143, 143, 147, 141, 135, 142, 139, - 140, 144, 138, 139, 146, 148, 137, 149, 144, 149, - 150, 143, 151, 152, 143, 153, 147, 151, 149, 144, + 108, 112, 118, 114, 109, 113, 110, 110, 114, 113, + 115, 111, 116, 122, 110, 116, 117, 128, 116, 112, + 119, 118, 117, 120, 121, 119, 120, 122, 126, 123, + 120, 116, 116, 123, 125, 126, 127, 128, 129, 131, + 130, 117, 133, 121, 130, 119, 120, 125, 121, 127, + 132, 134, 134, 135, 137, 132, 129, 131, 138, 132, + 139, 136, 133, 140, 143, 136, 140, 144, 144, 137, + 141, 145, 148, 135, 136, 146, 143, 140, 145, 139, + 136, 140, 147, 141, 138, 144, 149, 151, 144, 145, + 152, 146, 150, 148, 150, 152, 153, 156, 154, 151, - 155, 148, 150, 146, 154, 152, 157, 157, 159, 154, - 149, 159, 1032, 153, 155, 161, 169, 161, 161, 169, - 161, 164, 164, 166, 177, 166, 166, 167, 166, 167, - 167, 171, 167, 171, 171, 175, 171, 174, 174, 167, - 175, 176, 177, 178, 179, 181, 182, 176, 183, 184, - 185, 186, 179, 181, 184, 187, 176, 188, 178, 179, - 186, 187, 187, 183, 189, 182, 190, 190, 191, 189, - 185, 192, 195, 192, 191, 193, 192, 194, 194, 193, - 196, 197, 188, 199, 193, 196, 197, 198, 200, 193, - 203, 195, 204, 192, 200, 193, 193, 201, 205, 198, + 155, 147, 149, 150, 1040, 155, 158, 158, 153, 160, + 182, 156, 160, 165, 165, 150, 154, 162, 182, 162, + 162, 167, 162, 167, 167, 168, 167, 168, 168, 170, + 168, 172, 170, 172, 172, 176, 172, 168, 175, 175, + 176, 177, 178, 179, 180, 183, 181, 177, 184, 185, + 186, 189, 180, 187, 185, 174, 177, 181, 179, 180, + 178, 188, 187, 184, 183, 173, 190, 188, 188, 192, + 186, 190, 191, 191, 194, 192, 189, 193, 194, 193, + 195, 195, 193, 194, 196, 197, 198, 199, 194, 200, + 201, 198, 199, 205, 194, 194, 196, 202, 203, 193, - 202, 201, 206, 199, 203, 202, 207, 204, 211, 208, - 205, 207, 217, 205, 208, 209, 209, 200, 210, 209, - 206, 209, 212, 210, 213, 214, 214, 220, 211, 173, - 213, 215, 217, 209, 216, 209, 218, 215, 212, 219, - 216, 221, 218, 215, 222, 219, 223, 221, 220, 222, - 224, 225, 223, 226, 219, 227, 224, 228, 225, 229, - 230, 227, 231, 232, 233, 229, 226, 237, 235, 233, - 231, 234, 236, 238, 240, 242, 232, 228, 238, 238, - 234, 239, 230, 235, 243, 241, 239, 237, 236, 241, - 243, 244, 240, 245, 246, 247, 249, 242, 250, 245, + 204, 200, 203, 202, 197, 204, 206, 205, 207, 208, + 201, 209, 210, 213, 171, 214, 209, 210, 211, 211, + 207, 206, 211, 207, 211, 212, 202, 208, 215, 217, + 212, 214, 219, 213, 215, 217, 211, 218, 211, 216, + 216, 217, 220, 218, 221, 222, 224, 223, 220, 225, + 221, 224, 219, 223, 226, 225, 227, 228, 229, 221, + 226, 230, 231, 227, 229, 232, 222, 233, 231, 234, + 228, 235, 239, 237, 236, 233, 235, 238, 242, 240, + 244, 230, 234, 236, 240, 240, 241, 232, 237, 245, + 243, 241, 239, 238, 243, 245, 242, 246, 247, 248, - 247, 251, 252, 253, 255, 250, 254, 251, 252, 244, - 244, 256, 254, 262, 246, 249, 255, 257, 257, 258, - 258, 259, 253, 260, 261, 256, 261, 259, 263, 260, - 264, 265, 266, 263, 267, 269, 262, 172, 280, 268, - 266, 270, 264, 261, 268, 259, 271, 270, 272, 274, - 265, 273, 271, 272, 267, 274, 273, 275, 269, 276, - 277, 278, 279, 280, 282, 281, 283, 282, 283, 286, - 279, 281, 275, 276, 289, 278, 284, 284, 277, 285, - 287, 287, 285, 288, 288, 290, 291, 286, 292, 291, - 289, 294, 292, 293, 295, 296, 297, 294, 297, 298, + 249, 250, 244, 250, 247, 249, 251, 252, 255, 257, + 258, 253, 254, 166, 252, 246, 246, 253, 254, 248, + 256, 257, 259, 259, 258, 251, 256, 255, 260, 260, + 261, 262, 263, 264, 263, 265, 261, 262, 266, 267, + 265, 268, 269, 270, 271, 282, 272, 273, 270, 268, + 266, 263, 272, 273, 261, 274, 264, 276, 267, 275, + 274, 277, 269, 276, 275, 278, 279, 271, 280, 281, + 282, 284, 283, 285, 284, 285, 277, 281, 283, 278, + 286, 286, 280, 287, 279, 288, 287, 289, 289, 290, + 290, 291, 293, 292, 294, 293, 295, 296, 294, 298, - 290, 296, 293, 299, 304, 298, 301, 299, 295, 300, - 300, 301, 302, 303, 305, 306, 307, 307, 302, 309, - 308, 310, 304, 308, 299, 310, 311, 363, 306, 312, - 313, 313, 314, 303, 316, 305, 315, 309, 317, 315, - 318, 319, 321, 318, 317, 311, 316, 312, 363, 322, - 314, 321, 325, 319, 323, 325, 315, 320, 324, 323, - 326, 324, 328, 324, 328, 328, 320, 322, 327, 320, - 331, 332, 333, 326, 320, 320, 320, 320, 329, 324, - 327, 333, 330, 329, 329, 330, 332, 331, 334, 336, - 331, 335, 335, 338, 336, 337, 337, 334, 339, 340, + 300, 164, 300, 288, 297, 295, 296, 291, 292, 299, + 297, 301, 302, 298, 306, 299, 302, 301, 303, 303, + 304, 305, 307, 308, 309, 304, 314, 305, 310, 310, + 312, 315, 311, 302, 306, 311, 317, 309, 313, 319, + 307, 163, 313, 322, 308, 314, 316, 316, 312, 315, + 318, 319, 320, 318, 317, 322, 321, 324, 320, 321, + 325, 328, 326, 329, 328, 454, 324, 326, 332, 330, + 318, 323, 327, 332, 332, 327, 329, 327, 325, 334, + 323, 330, 331, 323, 331, 331, 335, 454, 323, 323, + 323, 323, 333, 327, 336, 333, 334, 337, 341, 334, - 341, 342, 343, 339, 344, 347, 345, 345, 338, 345, - 344, 340, 353, 356, 356, 348, 349, 343, 345, 341, - 348, 342, 349, 350, 351, 347, 353, 352, 350, 351, - 352, 354, 352, 355, 354, 351, 359, 357, 358, 358, - 362, 359, 355, 357, 364, 360, 365, 354, 360, 366, - 354, 369, 354, 368, 360, 372, 368, 375, 360, 364, - 362, 365, 371, 366, 372, 369, 360, 361, 361, 373, - 361, 378, 368, 374, 373, 373, 376, 371, 375, 374, - 378, 377, 379, 361, 382, 381, 361, 170, 361, 386, - 361, 370, 380, 370, 370, 376, 377, 385, 380, 383, + 343, 335, 339, 336, 338, 338, 337, 339, 340, 340, + 342, 344, 343, 341, 345, 342, 346, 347, 350, 358, + 351, 348, 348, 347, 348, 351, 352, 161, 358, 356, + 344, 346, 352, 348, 345, 353, 354, 365, 350, 355, + 353, 354, 355, 356, 355, 357, 360, 354, 357, 359, + 359, 362, 360, 361, 361, 366, 362, 365, 367, 363, + 368, 357, 363, 369, 357, 372, 357, 371, 363, 375, + 371, 378, 363, 367, 374, 368, 366, 369, 375, 372, + 363, 364, 364, 380, 364, 376, 371, 377, 667, 374, + 376, 376, 378, 377, 379, 382, 384, 364, 380, 667, - 388, 379, 384, 370, 382, 370, 370, 370, 384, 386, - 370, 381, 384, 383, 387, 388, 389, 390, 391, 393, - 385, 389, 392, 392, 391, 394, 395, 396, 397, 398, - 399, 401, 390, 396, 387, 399, 402, 394, 403, 393, - 395, 400, 400, 404, 400, 398, 405, 410, 405, 408, - 408, 401, 402, 397, 403, 406, 407, 404, 409, 406, - 407, 415, 410, 411, 412, 414, 405, 413, 416, 418, - 415, 420, 417, 416, 414, 407, 417, 409, 418, 411, - 419, 413, 412, 421, 422, 414, 419, 414, 422, 421, - 423, 424, 420, 423, 425, 427, 424, 426, 426, 428, + 364, 381, 364, 383, 364, 373, 385, 373, 373, 383, + 381, 386, 388, 379, 382, 391, 389, 373, 390, 373, + 373, 373, 384, 387, 373, 386, 385, 392, 393, 387, + 391, 394, 392, 387, 396, 388, 389, 394, 390, 395, + 395, 397, 398, 393, 399, 400, 401, 402, 403, 403, + 399, 403, 402, 397, 396, 404, 398, 405, 406, 408, + 481, 408, 401, 407, 409, 410, 409, 411, 413, 410, + 400, 411, 415, 405, 406, 404, 414, 407, 412, 412, + 416, 417, 481, 418, 409, 419, 411, 413, 415, 421, + 422, 414, 418, 421, 419, 417, 420, 424, 416, 422, - 428, 429, 430, 431, 431, 432, 429, 434, 427, 433, - 435, 432, 436, 433, 425, 430, 437, 436, 438, 438, - 439, 437, 434, 440, 441, 442, 443, 438, 445, 443, - 444, 435, 439, 447, 444, 446, 446, 442, 447, 448, - 445, 450, 441, 440, 449, 449, 452, 452, 453, 454, - 455, 456, 457, 460, 459, 462, 461, 454, 463, 455, - 448, 462, 464, 450, 457, 466, 472, 463, 464, 453, - 461, 456, 459, 460, 459, 465, 467, 469, 468, 466, - 465, 468, 470, 471, 467, 473, 472, 467, 473, 471, - 474, 469, 475, 476, 477, 481, 474, 470, 476, 478, + 423, 420, 425, 418, 429, 418, 423, 426, 425, 427, + 428, 426, 427, 430, 430, 428, 431, 433, 424, 432, + 432, 434, 433, 438, 429, 435, 435, 436, 437, 431, + 439, 440, 437, 436, 434, 441, 440, 443, 438, 444, + 441, 442, 442, 445, 446, 447, 449, 451, 447, 443, + 442, 439, 451, 448, 450, 450, 446, 448, 449, 444, + 452, 445, 453, 453, 456, 456, 457, 458, 459, 460, + 461, 464, 463, 466, 465, 458, 467, 459, 468, 466, + 470, 452, 461, 472, 468, 467, 472, 457, 465, 460, + 463, 464, 463, 469, 470, 471, 473, 474, 469, 475, - 479, 483, 480, 482, 479, 484, 475, 480, 482, 485, - 481, 490, 488, 489, 474, 490, 477, 483, 491, 492, - 478, 495, 485, 493, 484, 486, 486, 493, 489, 494, - 497, 486, 488, 486, 494, 492, 495, 491, 494, 486, - 500, 486, 496, 498, 486, 486, 497, 496, 499, 497, - 501, 486, 498, 501, 499, 502, 500, 503, 505, 499, - 504, 504, 506, 506, 507, 510, 509, 511, 508, 512, - 515, 514, 519, 513, 512, 165, 519, 503, 502, 507, - 508, 509, 513, 505, 510, 515, 516, 518, 520, 511, - 514, 521, 516, 522, 520, 523, 518, 524, 525, 526, + 476, 477, 478, 471, 477, 475, 471, 479, 478, 480, + 473, 482, 474, 483, 480, 485, 488, 483, 484, 486, + 476, 479, 487, 484, 486, 492, 478, 489, 493, 494, + 485, 495, 482, 494, 505, 488, 496, 505, 487, 499, + 489, 490, 490, 493, 497, 492, 500, 490, 497, 490, + 495, 500, 496, 498, 499, 490, 501, 490, 498, 502, + 490, 490, 498, 503, 504, 506, 507, 490, 502, 503, + 508, 508, 501, 509, 503, 501, 510, 510, 511, 512, + 504, 513, 514, 515, 516, 517, 507, 518, 506, 516, + 522, 512, 519, 511, 517, 526, 513, 520, 509, 522, - 527, 530, 528, 521, 527, 529, 532, 529, 522, 530, - 533, 524, 532, 525, 523, 528, 535, 526, 531, 531, - 534, 536, 533, 537, 536, 538, 534, 539, 535, 541, - 540, 542, 539, 540, 545, 545, 543, 537, 541, 544, - 538, 543, 543, 546, 546, 541, 551, 542, 541, 547, - 548, 548, 544, 549, 549, 547, 550, 552, 553, 554, - 552, 555, 550, 553, 558, 556, 557, 551, 556, 555, - 559, 557, 560, 561, 563, 564, 560, 562, 554, 561, - 564, 562, 565, 567, 566, 568, 570, 558, 567, 559, - 566, 572, 563, 569, 571, 571, 569, 573, 574, 568, + 523, 514, 524, 520, 523, 515, 518, 519, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 534, 533, 531, + 533, 525, 535, 535, 537, 534, 528, 536, 529, 532, + 527, 538, 530, 536, 539, 540, 537, 538, 540, 541, + 542, 544, 543, 545, 544, 546, 539, 543, 549, 549, + 548, 547, 545, 541, 551, 542, 547, 547, 556, 545, + 551, 546, 545, 548, 550, 550, 552, 552, 553, 553, + 554, 557, 555, 559, 557, 558, 554, 555, 555, 556, + 558, 560, 561, 562, 563, 561, 564, 565, 562, 560, + 566, 565, 559, 567, 568, 569, 566, 567, 570, 572, - 576, 569, 565, 574, 570, 569, 575, 577, 580, 572, - 579, 575, 581, 573, 576, 581, 579, 580, 584, 582, - 583, 584, 577, 582, 585, 583, 586, 588, 587, 585, - 589, 590, 591, 595, 588, 593, 590, 592, 592, 594, - 163, 596, 586, 589, 593, 582, 587, 597, 598, 595, - 596, 599, 591, 600, 598, 604, 600, 599, 594, 597, - 601, 601, 602, 601, 603, 602, 605, 607, 606, 603, - 608, 616, 607, 604, 606, 609, 608, 610, 609, 611, - 605, 612, 610, 613, 611, 611, 614, 615, 617, 619, - 616, 614, 630, 615, 612, 618, 613, 617, 620, 620, + 569, 573, 571, 575, 572, 564, 577, 563, 571, 576, + 576, 574, 568, 578, 574, 573, 581, 579, 570, 574, + 580, 575, 579, 574, 577, 580, 582, 584, 585, 578, + 581, 586, 587, 584, 586, 588, 587, 585, 590, 589, + 588, 582, 589, 590, 591, 592, 593, 595, 594, 596, + 597, 597, 595, 593, 599, 598, 600, 601, 587, 602, + 591, 594, 603, 592, 598, 159, 601, 609, 603, 596, + 604, 602, 600, 599, 605, 610, 604, 605, 606, 606, + 607, 606, 608, 607, 611, 609, 612, 608, 613, 610, + 611, 612, 614, 615, 613, 614, 616, 617, 615, 618, - 618, 621, 624, 628, 622, 614, 614, 622, 621, 619, - 623, 630, 625, 626, 624, 632, 623, 625, 626, 626, - 627, 627, 622, 629, 631, 629, 631, 633, 628, 634, - 635, 636, 637, 632, 639, 638, 642, 640, 637, 638, - 641, 643, 645, 639, 644, 633, 648, 634, 647, 635, - 649, 636, 640, 646, 642, 641, 644, 645, 648, 646, - 643, 650, 647, 651, 652, 653, 654, 651, 655, 649, - 656, 657, 659, 659, 658, 660, 657, 661, 663, 660, - 650, 653, 652, 662, 654, 664, 655, 655, 658, 656, - 664, 665, 663, 666, 662, 667, 661, 668, 669, 670, + 619, 616, 616, 620, 621, 619, 622, 624, 623, 620, + 617, 626, 618, 623, 629, 622, 625, 625, 626, 619, + 619, 627, 628, 621, 627, 630, 629, 624, 628, 631, + 630, 632, 632, 633, 631, 631, 634, 635, 634, 627, + 636, 637, 636, 638, 639, 640, 641, 642, 643, 647, + 645, 644, 643, 642, 646, 648, 635, 650, 633, 637, + 644, 638, 639, 649, 640, 645, 641, 647, 652, 646, + 651, 653, 650, 654, 648, 649, 651, 655, 658, 657, + 656, 659, 652, 653, 656, 660, 661, 663, 662, 664, + 664, 665, 654, 662, 658, 665, 655, 657, 666, 659, - 671, 673, 675, 669, 668, 671, 670, 665, 667, 672, - 674, 675, 666, 676, 672, 677, 678, 674, 679, 673, - 682, 684, 680, 679, 677, 680, 681, 676, 678, 683, - 681, 685, 686, 692, 682, 694, 684, 690, 683, 687, - 687, 688, 688, 689, 689, 685, 690, 695, 693, 696, - 688, 695, 692, 686, 693, 694, 697, 698, 699, 700, - 702, 696, 701, 703, 699, 704, 714, 700, 707, 701, - 710, 713, 714, 716, 715, 698, 162, 716, 702, 720, - 713, 697, 719, 707, 722, 704, 721, 710, 703, 705, - 715, 717, 717, 719, 705, 718, 718, 720, 705, 723, + 668, 663, 669, 660, 660, 661, 670, 669, 671, 673, + 672, 678, 675, 674, 668, 676, 673, 666, 674, 675, + 676, 677, 670, 672, 679, 680, 677, 671, 681, 678, + 682, 679, 683, 684, 680, 687, 689, 685, 684, 682, + 685, 686, 681, 688, 683, 686, 690, 691, 697, 687, + 695, 689, 688, 692, 692, 693, 693, 694, 694, 695, + 690, 699, 700, 698, 693, 701, 700, 697, 691, 698, + 702, 703, 704, 706, 705, 707, 708, 701, 704, 709, + 706, 699, 705, 712, 719, 718, 715, 157, 722, 703, + 719, 721, 723, 707, 718, 702, 723, 721, 712, 709, - 721, 705, 725, 727, 722, 723, 726, 725, 705, 705, - 728, 705, 724, 724, 724, 729, 724, 730, 729, 724, - 160, 727, 730, 730, 724, 731, 733, 726, 732, 732, - 724, 724, 731, 734, 734, 728, 736, 735, 737, 736, - 740, 733, 735, 737, 738, 738, 739, 741, 739, 742, - 743, 745, 740, 742, 744, 746, 746, 747, 750, 745, - 748, 749, 749, 751, 752, 753, 741, 755, 755, 158, - 743, 753, 747, 744, 748, 751, 750, 754, 756, 156, - 758, 759, 754, 756, 756, 758, 752, 759, 760, 763, - 761, 762, 763, 764, 760, 761, 765, 762, 768, 764, + 727, 708, 710, 715, 722, 724, 724, 710, 725, 725, + 729, 710, 726, 728, 710, 732, 733, 735, 727, 730, + 732, 710, 710, 726, 710, 730, 734, 728, 739, 739, + 729, 731, 731, 731, 738, 731, 736, 733, 731, 736, + 737, 738, 735, 731, 734, 737, 737, 740, 742, 731, + 731, 741, 741, 742, 743, 744, 747, 743, 745, 745, + 744, 746, 740, 746, 748, 749, 750, 752, 747, 749, + 751, 753, 753, 754, 757, 752, 755, 756, 756, 758, + 759, 760, 796, 748, 762, 762, 750, 760, 754, 751, + 755, 758, 757, 761, 763, 796, 765, 766, 761, 763, - 766, 766, 767, 767, 765, 769, 768, 770, 771, 772, - 773, 773, 770, 774, 776, 771, 775, 777, 779, 781, - 776, 780, 774, 769, 775, 783, 782, 779, 772, 784, - 780, 782, 784, 785, 783, 786, 777, 787, 785, 788, - 789, 790, 792, 781, 791, 791, 790, 790, 788, 786, - 793, 794, 795, 789, 798, 796, 798, 792, 796, 800, - 794, 802, 787, 799, 799, 801, 796, 803, 804, 793, - 801, 805, 806, 808, 807, 809, 795, 810, 811, 809, - 800, 815, 802, 807, 812, 813, 814, 803, 804, 816, - 812, 821, 806, 805, 813, 810, 808, 811, 814, 817, + 763, 765, 759, 766, 767, 770, 768, 769, 770, 771, + 767, 768, 772, 769, 775, 771, 773, 773, 774, 774, + 772, 776, 775, 777, 778, 779, 780, 780, 777, 781, + 783, 778, 782, 784, 786, 788, 783, 787, 781, 776, + 782, 790, 789, 786, 779, 791, 787, 789, 791, 792, + 790, 793, 784, 794, 792, 795, 797, 798, 798, 788, + 799, 797, 797, 800, 795, 793, 802, 801, 803, 810, + 805, 803, 805, 806, 806, 799, 801, 807, 794, 803, + 808, 809, 800, 811, 812, 808, 814, 813, 815, 810, + 802, 817, 816, 818, 819, 814, 816, 822, 807, 820, - 815, 818, 819, 816, 822, 817, 823, 819, 820, 820, - 824, 821, 825, 822, 826, 818, 827, 828, 824, 829, - 831, 830, 832, 833, 834, 829, 823, 830, 832, 837, - 834, 85, 825, 835, 831, 827, 826, 828, 836, 835, - 838, 839, 836, 833, 840, 842, 839, 847, 837, 841, - 841, 842, 838, 843, 844, 845, 843, 846, 848, 848, - 838, 849, 852, 846, 850, 840, 855, 847, 845, 850, - 851, 856, 844, 858, 853, 851, 851, 852, 853, 849, - 854, 854, 857, 860, 861, 863, 867, 857, 855, 864, - 867, 856, 858, 866, 866, 869, 869, 868, 861, 870, + 819, 821, 809, 811, 823, 825, 812, 813, 820, 817, + 826, 815, 818, 821, 824, 826, 822, 828, 823, 825, + 824, 827, 827, 829, 830, 831, 832, 833, 834, 836, + 835, 838, 829, 831, 837, 836, 839, 828, 840, 843, + 837, 844, 839, 843, 830, 838, 832, 834, 841, 833, + 835, 842, 845, 847, 841, 851, 846, 842, 840, 849, + 844, 846, 848, 848, 845, 849, 850, 852, 854, 850, + 853, 856, 845, 851, 847, 859, 853, 855, 855, 857, + 852, 858, 861, 861, 857, 862, 858, 858, 854, 856, + 859, 860, 863, 864, 865, 860, 867, 868, 864, 870, - 871, 873, 872, 874, 871, 863, 80, 860, 874, 875, - 864, 865, 868, 876, 865, 873, 865, 872, 876, 876, - 865, 877, 865, 875, 870, 878, 881, 865, 879, 878, - 883, 880, 865, 884, 882, 877, 880, 885, 881, 882, - 890, 878, 886, 879, 883, 890, 880, 887, 886, 888, - 892, 885, 891, 887, 884, 888, 889, 889, 891, 893, - 897, 894, 896, 898, 899, 897, 900, 900, 901, 75, - 903, 904, 892, 901, 896, 902, 899, 898, 893, 894, - 895, 895, 905, 902, 903, 907, 895, 908, 895, 907, - 904, 906, 906, 912, 895, 911, 910, 913, 911, 895, + 871, 873, 873, 875, 874, 876, 876, 862, 874, 877, + 878, 868, 863, 865, 878, 879, 888, 85, 875, 870, + 867, 871, 872, 880, 881, 872, 882, 872, 888, 881, + 879, 872, 884, 872, 877, 885, 883, 880, 872, 885, + 882, 883, 883, 872, 886, 887, 884, 889, 890, 891, + 887, 885, 889, 892, 893, 894, 897, 897, 895, 886, + 887, 894, 890, 893, 895, 896, 899, 892, 898, 900, + 891, 896, 899, 898, 901, 904, 902, 905, 906, 908, + 908, 909, 905, 914, 914, 907, 909, 904, 911, 912, + 910, 900, 906, 901, 902, 903, 903, 907, 910, 913, - 895, 905, 910, 914, 916, 918, 895, 908, 915, 914, - 913, 919, 912, 915, 918, 920, 921, 922, 923, 924, - 919, 925, 921, 916, 924, 926, 922, 927, 928, 929, - 931, 920, 932, 930, 937, 935, 931, 923, 929, 926, - 928, 925, 930, 938, 933, 939, 940, 927, 937, 932, - 933, 935, 941, 942, 943, 74, 944, 947, 948, 943, - 940, 944, 947, 938, 939, 949, 949, 948, 942, 950, - 941, 951, 953, 954, 958, 950, 955, 955, 954, 954, - 955, 957, 956, 959, 951, 956, 960, 961, 953, 964, - 962, 963, 965, 966, 958, 957, 967, 963, 965, 959, + 915, 903, 911, 903, 915, 916, 918, 919, 912, 903, + 919, 920, 918, 921, 903, 903, 922, 924, 913, 923, + 926, 903, 922, 927, 923, 916, 921, 928, 929, 926, + 920, 930, 927, 931, 929, 933, 924, 932, 935, 934, + 930, 937, 932, 928, 936, 938, 940, 945, 943, 946, + 937, 939, 931, 934, 938, 933, 936, 939, 935, 941, + 947, 945, 948, 940, 943, 941, 949, 950, 951, 946, + 952, 956, 955, 951, 961, 952, 948, 955, 959, 947, + 956, 958, 950, 962, 949, 957, 957, 958, 962, 962, + 961, 959, 963, 963, 964, 965, 963, 964, 966, 967, - 961, 967, 968, 970, 960, 962, 970, 971, 966, 964, - 972, 974, 973, 975, 976, 972, 968, 973, 975, 976, - 977, 980, 985, 979, 981, 982, 984, 974, 971, 979, - 981, 982, 977, 983, 983, 984, 986, 980, 988, 986, - 985, 987, 987, 989, 990, 991, 992, 993, 991, 994, - 1000, 1001, 995, 993, 68, 994, 988, 995, 996, 992, - 997, 998, 989, 996, 990, 997, 1002, 998, 1000, 1003, - 1005, 1001, 1002, 1006, 1003, 1004, 1004, 1007, 1008, 1005, - 1009, 1010, 1006, 1009, 1010, 1011, 1012, 1013, 1014, 1020, - 1017, 63, 1015, 1027, 1016, 1007, 1011, 1008, 1015, 1013, + 969, 968, 970, 972, 971, 973, 974, 975, 976, 965, + 971, 973, 975, 969, 979, 967, 982, 970, 966, 968, + 980, 974, 976, 972, 978, 980, 981, 978, 983, 984, + 985, 981, 982, 983, 984, 979, 988, 987, 989, 990, + 991, 991, 985, 987, 989, 990, 992, 993, 994, 995, + 995, 994, 988, 996, 997, 992, 998, 999, 1001, 1000, + 999, 1002, 1008, 1003, 1001, 993, 1009, 1002, 1003, 1004, + 1005, 996, 1000, 997, 1004, 1005, 998, 1006, 1010, 1015, + 1008, 1013, 1011, 1006, 1010, 1014, 1009, 1011, 1012, 1012, + 1013, 1016, 1017, 1018, 1014, 1017, 1018, 1015, 1019, 1020, - 1016, 1018, 1019, 1019, 1012, 1017, 1018, 1014, 1020, 1021, - 1022, 1023, 1024, 1026, 1029, 1023, 1025, 1031, 1027, 1030, - 1030, 1033, 1022, 1021, 1034, 1025, 1035, 1037, 1039, 1036, - 1024, 1045, 1026, 1029, 1036, 1033, 1037, 1031, 1035, 1034, - 1038, 1038, 1042, 1040, 1041, 1045, 1046, 1042, 1039, 1040, - 1041, 1043, 1044, 1043, 1047, 1048, 1049, 1044, 1050, 1047, - 1046, 1051, 1052, 1054, 1054, 1050, 1055, 1056, 1057, 1059, - 1048, 1058, 1062, 1062, 1060, 1049, 1051, 1058, 1068, 1060, - 1055, 1052, 1063, 1057, 1066, 1056, 1069, 1063, 1060, 1059, - 1060, 1064, 1064, 1060, 1065, 1072, 1067, 1068, 1066, 1067, + 1021, 1022, 1023, 1025, 1028, 1024, 1027, 1027, 1023, 1019, + 1016, 1024, 1021, 1029, 1026, 1032, 1030, 1020, 1025, 1026, + 1022, 1031, 1033, 1028, 1034, 1031, 1035, 1029, 1030, 1037, + 1039, 1033, 1041, 1032, 1038, 1038, 1045, 1042, 1047, 1044, + 1078, 1043, 1050, 1034, 1044, 1045, 1041, 1050, 1037, 1078, + 1039, 1035, 1042, 1043, 1046, 1046, 1048, 1049, 1047, 1051, + 1052, 1051, 1048, 1049, 1053, 1052, 1054, 1055, 1056, 1057, + 1058, 1059, 1055, 1060, 1062, 1062, 1063, 1058, 1053, 1064, + 1054, 1065, 1067, 1056, 1068, 1066, 1059, 80, 1057, 1068, + 1063, 1066, 1060, 1070, 1070, 1074, 1065, 1064, 1068, 1071, - 1070, 1065, 1071, 1073, 1069, 1074, 1075, 1071, 1073, 1070, - 1077, 1077, 1078, 1079, 1072, 1080, 1074, 1078, 1079, 1081, - 1083, 1084, 1082, 1085, 1081, 1075, 1082, 1086, 1087, 1083, - 1088, 1090, 1089, 1091, 1092, 1080, 1084, 1096, 1085, 1089, - 1087, 1093, 1094, 1090, 1097, 1088, 1086, 1095, 1094, 1098, - 1100, 1101, 1091, 1102, 1104, 1092, 1100, 1096, 1098, 1093, - 1103, 1106, 1095, 1108, 1097, 1105, 1101, 1102, 1103, 1109, - 1105, 1107, 1110, 1106, 1104, 1113, 1107, 1107, 1111, 1111, - 1114, 1115, 1108, 1109, 1119, 1110, 1112, 1115, 1113, 1114, - 1119, 1112, 1116, 1116, 1112, 1112, 1117, 1118, 1120, 1112, + 1068, 1073, 1067, 1068, 1071, 1072, 1072, 1075, 1073, 1074, + 1075, 1076, 1079, 1077, 1080, 1081, 1082, 1079, 1083, 1084, + 1087, 1082, 1086, 1086, 1089, 1087, 1092, 1081, 1093, 1083, + 1076, 1077, 1088, 1080, 1090, 1092, 1091, 1088, 1084, 1090, + 1091, 1094, 1095, 1093, 1089, 1096, 1098, 1097, 1099, 1100, + 1101, 1102, 1103, 1098, 1105, 1104, 1094, 1096, 1103, 1106, + 1099, 1095, 1097, 1107, 1111, 1110, 1113, 1109, 1100, 1102, + 1104, 1101, 1107, 1109, 1105, 1112, 1114, 1115, 1111, 1106, + 1110, 1114, 1116, 1112, 1117, 1118, 1113, 1116, 1116, 1115, + 1124, 1119, 1120, 1120, 1122, 1211, 1124, 1123, 1132, 1118, - 1123, 1117, 1121, 1120, 1126, 1112, 1118, 1121, 1127, 1112, - 1122, 1122, 1124, 1124, 1125, 1129, 1128, 1125, 1130, 1125, - 1131, 1123, 1132, 1130, 1126, 1128, 1127, 1133, 1138, 1138, - 1134, 58, 1135, 1133, 1131, 1129, 1134, 1135, 1136, 1137, - 1132, 1140, 1136, 1139, 1139, 1142, 1139, 1143, 1137, 1142, - 1144, 1145, 1140, 1137, 1148, 1137, 1147, 1137, 1146, 1137, - 1145, 1149, 1143, 1146, 1146, 1147, 1149, 1150, 1144, 1151, - 1152, 1153, 1154, 1155, 1156, 1156, 1148, 1157, 1151, 1155, - 1158, 1150, 1159, 1160, 1161, 1157, 1154, 1159, 1162, 1152, - 1153, 1163, 1166, 1161, 1158, 1164, 1172, 1160, 1165, 1165, + 1125, 1125, 1211, 1117, 1119, 1121, 1123, 1122, 1127, 1128, + 1121, 1126, 1135, 1121, 1121, 1128, 1126, 1127, 1121, 1132, + 1129, 1130, 1131, 1131, 1121, 1129, 1130, 1136, 1121, 1133, + 1133, 1134, 1135, 1137, 1134, 1138, 1134, 1140, 1139, 1141, + 1142, 1143, 1137, 1139, 1144, 1136, 1142, 1143, 1145, 1144, + 1146, 1140, 1145, 1147, 1147, 1138, 1149, 1141, 1151, 1146, + 1148, 1148, 1151, 1148, 1146, 1152, 1146, 1149, 1146, 1153, + 1146, 1155, 1154, 1156, 1157, 1159, 1155, 1155, 1158, 1160, + 1152, 1154, 1156, 1158, 1161, 1162, 1163, 1153, 1160, 1159, + 1166, 1164, 1165, 1165, 1167, 1169, 1157, 1164, 1166, 1171, - 1164, 1167, 1167, 1168, 1171, 1168, 1162, 1166, 1170, 1171, - 1173, 1170, 1174, 1174, 1175, 1172, 1163, 1176, 1176, 1173, - 1177, 1177, 1178, 1179, 1180, 1181, 1181, 1178, 1182, 1183, - 1184, 1185, 1183, 1186, 1175, 1187, 1185, 1187, 1188, 1191, - 1190, 1192, 1186, 1190, 1179, 1180, 1192, 1193, 1182, 1200, - 1184, 1195, 1194, 1196, 1191, 1197, 1188, 1194, 1196, 1195, - 1197, 1193, 1198, 1198, 1199, 1201, 1202, 1200, 1203, 1199, - 1205, 1201, 1206, 1202, 1207, 1209, 1205, 1208, 1206, 1207, - 1210, 1203, 1211, 1208, 1209, 1212, 1212, 1213, 1215, 1216, - 1217, 1218, 1219, 1211, 1220, 1222, 1223, 1218, 1219, 1210, + 1163, 1168, 1170, 1161, 1162, 1172, 1168, 1173, 1167, 1169, + 1175, 1170, 1173, 1174, 1174, 1176, 1176, 1171, 1177, 1179, + 1177, 1180, 1179, 1181, 1182, 1175, 1180, 1183, 1183, 1184, + 1172, 1185, 1185, 1182, 1186, 1186, 1187, 1188, 1189, 1190, + 1190, 1187, 1181, 1191, 1192, 1193, 1194, 1192, 1195, 1184, + 1196, 1194, 1196, 1197, 1200, 1201, 1202, 1195, 1188, 1189, + 1201, 1199, 1203, 1191, 1199, 1193, 1204, 1203, 1205, 1200, + 1202, 1197, 1206, 1205, 1204, 1207, 1207, 1206, 1208, 1209, + 1210, 1212, 1214, 1208, 1215, 1217, 1210, 1216, 1214, 1218, + 1215, 1217, 1216, 1219, 1212, 1220, 1222, 1209, 1218, 1221, - 1220, 1222, 1224, 1215, 1226, 1225, 1227, 1213, 1229, 1216, - 1223, 1228, 1228, 1217, 1230, 1231, 1223, 1225, 1226, 1234, - 1232, 1237, 1224, 1239, 1227, 1232, 1233, 1233, 1229, 1235, - 1238, 1242, 1243, 1231, 1235, 1238, 1238, 1240, 1244, 1230, - 1237, 1239, 1234, 1241, 1245, 1242, 1240, 1243, 1246, 1245, - 1246, 1241, 1245, 1244, 1247, 1249, 1244, 1253, 1250, 1251, - 1252, 1249, 1250, 1254, 1255, 1252, 1252, 1256, 1247, 1257, - 1251, 1259, 1256, 1258, 1261, 1262, 1253, 1263, 1258, 1264, - 1264, 1265, 1255, 1266, 1267, 1265, 1268, 1257, 1261, 1254, - 1269, 1259, 1268, 1262, 1270, 1263, 1271, 1272, 1274, 1273, + 1221, 1225, 1224, 1226, 1227, 1228, 1220, 1229, 1231, 1232, + 1227, 1228, 1219, 1229, 1231, 1233, 1222, 1224, 1234, 1235, + 1236, 1225, 1238, 1232, 1237, 1237, 1226, 1239, 1240, 1232, + 1234, 1241, 1243, 1235, 1246, 1233, 1241, 1251, 1236, 1242, + 1242, 1248, 1238, 1244, 1247, 1249, 1240, 1252, 1244, 1247, + 1247, 1251, 1239, 1246, 1249, 1243, 1250, 1253, 1254, 1248, + 1256, 1262, 1252, 1254, 1250, 1255, 1254, 1255, 1260, 1259, + 1258, 1263, 1253, 1259, 1256, 1253, 1258, 1261, 1264, 1260, + 1262, 1265, 1261, 1261, 1266, 1267, 1265, 1268, 1269, 1266, + 1271, 1272, 1268, 1273, 1274, 1274, 1264, 1263, 1275, 1276, - 1275, 1266, 1269, 1267, 1276, 1275, 1278, 1279, 1280, 1280, - 1271, 1276, 1272, 1270, 1273, 1277, 1279, 1274, 1281, 1282, - 1277, 1283, 1284, 1285, 1278, 1282, 1286, 1293, 1285, 1287, - 1288, 1288, 1286, 1281, 1294, 1287, 1293, 1283, 1289, 1289, - 1291, 1291, 1292, 1284, 1295, 1296, 1292, 1297, 1298, 1298, - 1299, 1300, 1294, 1302, 1297, 1303, 1301, 1304, 1295, 1300, - 1296, 1301, 1304, 1304, 1306, 1314, 1305, 1302, 1307, 1307, - 1299, 1305, 1305, 1308, 1303, 1309, 1310, 1311, 1312, 1313, - 1315, 1317, 1311, 1314, 1306, 1310, 1315, 1319, 1316, 1318, - 1320, 1322, 1308, 1316, 1309, 1318, 1320, 1312, 1321, 1313, + 1277, 1278, 1275, 1267, 1271, 1280, 1279, 1278, 1269, 1272, + 1282, 1273, 1281, 1283, 1284, 1285, 1286, 1276, 1279, 1277, + 1285, 1288, 1287, 1286, 1280, 1282, 1281, 1287, 1283, 1289, + 1290, 1290, 1291, 1284, 1292, 1293, 1294, 1295, 1289, 1288, + 1292, 1304, 1295, 1296, 1297, 1298, 1298, 1291, 1305, 1296, + 1297, 1293, 1299, 1299, 1301, 1301, 1302, 1294, 1303, 1304, + 1302, 1306, 1305, 1307, 1308, 1308, 1309, 1303, 1311, 1310, + 1307, 1312, 1313, 1311, 1314, 1316, 1306, 1310, 1315, 1314, + 1314, 1317, 1317, 1315, 1315, 1312, 1309, 1318, 1319, 1320, + 1322, 1313, 1321, 1323, 1324, 1316, 1325, 1321, 1320, 1326, - 1323, 1324, 1325, 1326, 1321, 1327, 1319, 1317, 1328, 1334, - 1322, 1329, 1329, 1330, 1334, 1331, 1330, 1326, 1335, 1323, - 1324, 1325, 1335, 1328, 1332, 1332, 1327, 1331, 1333, 1333, - 1336, 1337, 1338, 1339, 1343, 1339, 1341, 1342, 1344, 1339, - 1337, 1345, 1342, 1336, 1348, 1338, 1346, 1346, 1347, 1343, - 1348, 1349, 1339, 1347, 1341, 1350, 1351, 1345, 1344, 1352, - 1353, 1351, 1354, 1352, 1353, 1355, 1349, 1356, 1350, 1357, - 1358, 1358, 1360, 1362, 1363, 1357, 1364, 1364, 1365, 1363, - 1366, 1372, 1354, 1355, 1365, 1368, 1368, 1356, 1370, 1373, - 1360, 1370, 1371, 1371, 1362, 1375, 1376, 1372, 1375, 1377, + 1327, 1329, 1325, 1332, 1326, 1328, 1318, 1319, 1330, 1322, + 1331, 1328, 1324, 1323, 1330, 1333, 1331, 1334, 1335, 1336, + 1329, 1337, 1332, 1338, 1339, 1339, 1327, 1340, 1341, 75, + 1340, 1342, 1342, 1336, 1333, 1345, 1334, 1335, 1338, 1345, + 1341, 1344, 1337, 1343, 1343, 1346, 1344, 1347, 1348, 1349, + 1353, 1349, 1351, 1354, 1352, 1349, 1347, 74, 1346, 1352, + 1355, 1348, 1356, 1356, 1357, 1353, 1358, 1359, 1349, 1357, + 1351, 1360, 1358, 1354, 1361, 1364, 1355, 1362, 1365, 1361, + 1366, 1362, 1359, 1363, 1360, 1367, 1370, 1363, 1368, 1368, + 1372, 1367, 1373, 1374, 1374, 1364, 1365, 1373, 1376, 1375, - 1366, 1378, 1378, 1379, 1380, 1373, 1382, 1381, 1377, 1383, - 1385, 1382, 1384, 1384, 1386, 1387, 1376, 1388, 1379, 1385, - 1389, 1389, 1390, 1383, 1392, 1380, 1381, 1391, 1393, 1392, - 1387, 1395, 1386, 1394, 1394, 1395, 1390, 1396, 1397, 1397, - 1398, 1399, 1388, 1393, 1400, 1391, 1401, 1405, 1400, 1402, - 1404, 1404, 1399, 1406, 1402, 1407, 1408, 1396, 1409, 1410, - 1411, 1411, 1398, 1405, 57, 1401, 1413, 1414, 1412, 1407, - 1415, 1406, 1409, 1412, 1417, 1408, 1408, 1416, 1418, 1415, - 1418, 1421, 1416, 1419, 1410, 1420, 1413, 1414, 1419, 1422, - 1424, 1420, 1425, 1425, 1417, 1422, 1426, 1427, 1430, 1433, + 1366, 1378, 1378, 1380, 1370, 1375, 1380, 1381, 1381, 1382, + 1383, 1372, 1385, 1386, 1387, 1385, 1388, 1388, 1376, 1389, + 1390, 1391, 1392, 1387, 1393, 1382, 1383, 1392, 1394, 1394, + 1395, 1396, 1397, 1386, 1389, 1398, 1399, 1399, 1393, 1395, + 1391, 1390, 1400, 1401, 1403, 1402, 1406, 1397, 1408, 1396, + 1402, 1404, 1404, 1405, 1407, 1407, 1400, 1405, 1409, 1403, + 1398, 1401, 1411, 1410, 1414, 1414, 1406, 1410, 1412, 1409, + 1408, 1415, 1416, 1412, 1417, 1418, 1420, 1419, 1421, 1421, + 1422, 1411, 1423, 1424, 1425, 1422, 1427, 1415, 1417, 1431, + 1416, 1419, 1426, 1425, 1418, 1418, 1428, 1426, 1428, 1429, - 1429, 1421, 1434, 1427, 1424, 1429, 1431, 1431, 1432, 1432, - 1435, 1436, 1438, 1433, 1436, 1426, 1437, 1437, 1439, 1447, - 1434, 1441, 1430, 1440, 1438, 1435, 1440, 1441, 1442, 1440, - 1445, 1443, 1446, 1442, 1443, 52, 1449, 1446, 1439, 1445, - 1448, 1440, 1449, 1448, 1447, 1455, 1450, 1451, 1451, 1453, - 1443, 1450, 1452, 1452, 1454, 1453, 1456, 1457, 1455, 1454, - 1458, 1459, 1460, 1461, 1459, 1462, 1463, 1464, 1460, 1461, - 1462, 1468, 1463, 1465, 1456, 1469, 1457, 1470, 1465, 1467, - 1458, 1466, 1466, 1475, 1467, 1471, 1472, 1476, 1477, 1468, - 1464, 1473, 1474, 1476, 1478, 1469, 1475, 1470, 1479, 1471, + 1434, 1420, 1423, 1424, 1429, 1430, 1427, 1432, 1436, 1431, + 1440, 1430, 1437, 1432, 1434, 1435, 1435, 1439, 1437, 1441, + 1441, 1443, 1439, 1442, 1442, 1444, 1445, 1436, 1446, 1447, + 1447, 1446, 1448, 1449, 1440, 1443, 1450, 1457, 1455, 1450, + 1451, 1445, 1450, 1444, 1448, 1452, 1451, 1455, 1453, 68, + 1452, 1453, 1456, 1449, 1450, 1458, 1461, 1456, 1458, 1459, + 1459, 1461, 1457, 1460, 1462, 1462, 1464, 1453, 1465, 1460, + 1463, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, + 1472, 1470, 1475, 1473, 1474, 1471, 1472, 1466, 1473, 1476, + 1474, 1477, 1477, 1467, 1476, 1468, 1478, 1469, 1479, 1480, - 1472, 1480, 1488, 1473, 1474, 1482, 1482, 1483, 1477, 1486, - 1484, 1487, 1479, 1489, 1478, 1484, 1485, 1485, 1491, 1490, - 1493, 1494, 1480, 1492, 1486, 1487, 1488, 1483, 1490, 1493, - 1492, 1489, 1493, 1491, 1496, 1498, 1499, 1494, 1502, 1499, - 1500, 1500, 1501, 1501, 1503, 1504, 1505, 1505, 1504, 1496, - 1502, 1506, 1507, 1508, 1496, 1510, 1509, 1511, 1508, 1512, - 1498, 1509, 1503, 1513, 1506, 1518, 1514, 1515, 1512, 1517, - 1517, 1507, 1520, 1511, 1510, 1514, 1515, 1516, 1514, 1519, - 1521, 1522, 1513, 1516, 1523, 1518, 1526, 1527, 1528, 1528, - 1520, 1529, 1519, 1530, 1521, 1531, 1523, 1522, 1532, 1532, + 1481, 1478, 1484, 1482, 1483, 1475, 1487, 1488, 1489, 1485, + 1486, 1490, 1487, 1491, 1484, 1494, 1479, 1482, 1483, 1480, + 1481, 1485, 1497, 1486, 1498, 1490, 1495, 1488, 1489, 1493, + 1493, 1495, 1496, 1496, 1491, 1494, 1499, 1497, 1498, 1500, + 1501, 1502, 1504, 1503, 1507, 1505, 1509, 1511, 1511, 1501, + 1503, 1504, 1510, 1513, 1504, 1510, 1502, 1500, 1514, 1507, + 1499, 1505, 1512, 1512, 1507, 1513, 1515, 1516, 1516, 1515, + 1517, 1509, 1518, 1519, 1520, 1521, 1514, 1522, 1519, 1520, + 1523, 1524, 1527, 1517, 1528, 1528, 1525, 1526, 1527, 1523, + 1529, 1518, 1530, 1522, 1521, 1525, 1526, 1531, 1525, 1532, - 1531, 1534, 1530, 1533, 1535, 1527, 1534, 1529, 1536, 1537, - 1540, 1526, 1533, 1532, 1538, 1533, 1541, 1542, 1543, 1538, - 1538, 47, 1535, 1543, 1540, 1545, 1544, 1537, 1552, 1536, - 1547, 1541, 1544, 1546, 1546, 1548, 1547, 1553, 1549, 1542, - 1548, 1550, 1555, 1545, 1549, 1561, 1554, 1550, 1552, 1559, - 1556, 1553, 1554, 1556, 1557, 1555, 1562, 1559, 1563, 1556, - 1557, 1564, 18, 1565, 1561, 1566, 1563, 1567, 1568, 1574, - 1564, 1569, 1569, 1570, 1571, 1562, 1565, 1572, 1566, 1570, - 1571, 1567, 1568, 1573, 1573, 1575, 1576, 1577, 1578, 1574, - 1572, 1579, 1580, 1569, 1578, 1584, 1581, 1583, 1583, 1586, + 1524, 1533, 1534, 1537, 1538, 1530, 1539, 1539, 1540, 1541, + 1529, 1542, 63, 1532, 1534, 1531, 1542, 1533, 1541, 1543, + 1543, 1544, 1538, 1546, 1540, 1547, 1545, 1548, 1537, 1551, + 1544, 1545, 1549, 1544, 1543, 1552, 1553, 1549, 1549, 1554, + 1563, 1546, 1555, 1551, 1554, 1548, 1547, 1556, 1555, 1558, + 1552, 1557, 1557, 1564, 1559, 1558, 1560, 1561, 1553, 1559, + 1563, 1566, 1560, 1561, 1565, 1556, 1567, 1564, 1570, 1567, + 1565, 1568, 1572, 1573, 1566, 1567, 1570, 1568, 1574, 1575, + 1576, 1577, 1578, 1579, 1580, 1580, 1574, 1583, 1575, 1581, + 1585, 1572, 1573, 1576, 1577, 1581, 1578, 1579, 1582, 1586, - 1577, 1589, 1585, 1575, 1586, 1576, 1585, 1587, 1580, 1590, - 1589, 1588, 1587, 1579, 1581, 1584, 1588, 1592, 1593, 1594, - 1594, 1595, 1596, 1597, 1598, 1598, 1601, 1599, 1600, 1592, - 1603, 1602, 1590, 1593, 1596, 1600, 1604, 1607, 1601, 1605, - 1595, 1599, 1597, 1602, 1608, 1605, 1606, 1609, 1609, 1603, - 1608, 1610, 1611, 1611, 1610, 1607, 1604, 1613, 1606, 1614, - 1615, 1617, 1613, 1616, 1616, 1618, 1615, 1618, 1614, 1619, - 1620, 1621, 1619, 1617, 1622, 1624, 1623, 1625, 1628, 1626, - 1624, 1627, 1630, 1628, 1632, 1636, 1625, 17, 1629, 1632, - 1620, 1626, 1622, 1621, 1623, 1631, 1627, 1629, 1633, 1635, + 1583, 1584, 1584, 1587, 1582, 1588, 1580, 1589, 1590, 1591, + 1585, 1592, 1595, 1589, 1594, 1594, 1596, 1586, 1588, 1597, + 1596, 1598, 1587, 1599, 1597, 1591, 1598, 1600, 1599, 1592, + 1590, 1601, 1595, 1603, 1604, 1607, 1600, 1605, 1605, 1606, + 1608, 1609, 1609, 1610, 1611, 1603, 1614, 1607, 1612, 1604, + 1613, 1611, 1615, 1618, 1601, 1616, 1617, 1610, 1606, 1608, + 1612, 1616, 1613, 1619, 58, 1614, 1620, 1620, 1617, 1619, + 1621, 1618, 1615, 1621, 1622, 1622, 1624, 1625, 1626, 1627, + 1627, 1624, 1628, 1629, 1626, 1629, 1625, 1630, 1631, 1632, + 1630, 1633, 1634, 1635, 1628, 1636, 1639, 1640, 1635, 1638, - 1631, 1637, 1630, 1634, 1634, 1635, 1636, 1631, 1638, 1639, - 1629, 1641, 1640, 1633, 1640, 1642, 1642, 1643, 1643, 1645, - 1637, 1644, 1644, 1648, 1638, 1641, 1649, 1641, 1656, 1639, - 1646, 1646, 1647, 1647, 1650, 1650, 1651, 1652, 1653, 1645, - 1651, 1653, 1655, 1652, 1648, 1657, 1656, 1649, 1655, 1658, - 1659, 1657, 1665, 1659, 1660, 1660, 1661, 1661, 1662, 1663, - 1666, 1667, 1668, 1662, 1664, 1663, 1672, 1667, 1672, 1675, - 1673, 1674, 1665, 1671, 1658, 1675, 1664, 1664, 1664, 1670, - 1666, 1673, 1668, 1664, 1670, 1670, 1674, 1671, 1676, 1677, - 1678, 1679, 1679, 1680, 1681, 1681, 1682, 1676, 1683, 1684, + 1637, 1639, 1641, 1663, 1636, 1647, 1640, 1663, 1631, 1633, + 1634, 1632, 1637, 1642, 1638, 1643, 1644, 1649, 1642, 1640, + 1643, 1646, 1641, 1645, 1645, 1642, 1647, 1646, 1650, 1651, + 1652, 1644, 1652, 1657, 1653, 1660, 1649, 1654, 1654, 1655, + 1655, 1656, 1656, 1661, 1650, 1658, 1658, 1670, 1653, 1651, + 1653, 1659, 1659, 1657, 1662, 1662, 1660, 1664, 1665, 1667, + 1668, 1665, 1669, 1664, 1661, 1667, 1671, 1677, 1669, 1671, + 1672, 1672, 1670, 1673, 1673, 1674, 1675, 1676, 1668, 1678, + 1674, 1680, 1675, 1683, 1685, 1689, 1679, 1677, 1682, 1676, + 1676, 1676, 1679, 1682, 1682, 1685, 1676, 1683, 1684, 1678, - 1684, 1685, 1685, 1686, 1689, 1689, 1690, 1694, 1691, 1677, - 1698, 1678, 1693, 1696, 1696, 1697, 1682, 1691, 1695, 1680, - 1683, 1693, 1699, 1686, 1695, 1698, 1700, 1701, 1694, 1699, - 1703, 1690, 1702, 1702, 1704, 1700, 1697, 1706, 1707, 1708, - 1709, 1713, 1706, 1710, 1707, 1711, 1713, 1709, 1714, 1710, - 1704, 1711, 1715, 1701, 1712, 1712, 1703, 1714, 1716, 1708, - 1718, 1717, 1719, 1718, 1720, 1721, 1721, 1724, 1722, 1723, - 1725, 1728, 1715, 1717, 1722, 1723, 1730, 1716, 1726, 1729, - 1719, 1730, 1726, 1731, 1731, 1725, 1732, 1724, 1733, 1735, - 1720, 1728, 1736, 1737, 0, 1738, 1736, 1743, 1726, 1737, + 1684, 1680, 1686, 1687, 1688, 1689, 1690, 1691, 1691, 1687, + 1692, 1693, 1693, 1688, 1694, 1695, 1702, 1686, 1696, 1696, + 1697, 1697, 1698, 1701, 1701, 1706, 1703, 1690, 1709, 1705, + 1708, 1708, 1710, 1707, 1694, 1703, 1692, 1695, 1705, 1707, + 1713, 1702, 1698, 1711, 1712, 1715, 1706, 1710, 1716, 1709, + 1711, 1714, 1714, 1712, 1718, 1719, 1720, 1722, 1721, 1718, + 1727, 1719, 1723, 1722, 1716, 1721, 1713, 1725, 1723, 1724, + 1724, 1715, 1725, 1726, 1728, 1729, 1720, 1731, 1730, 1732, + 1727, 1730, 1726, 1733, 1733, 1734, 1735, 1729, 1736, 1737, + 1738, 1734, 1735, 1728, 1738, 1731, 1740, 1741, 1742, 1743, - 1741, 1729, 1745, 1733, 1738, 1732, 1739, 1739, 1735, 1740, - 1744, 1741, 1746, 1740, 1742, 1742, 1741, 1746, 1743, 1747, - 1748, 1745, 1749, 1750, 1744, 1751, 1752, 1752, 1749, 1754, - 1751, 1753, 1753, 1754, 1756, 1757, 1758, 1765, 1750, 1747, - 1748, 1759, 1759, 1756, 1761, 1761, 1757, 1762, 1763, 1764, - 1773, 1757, 1762, 1762, 1763, 1764, 1758, 1766, 1767, 1768, - 1770, 1772, 1766, 1765, 1771, 1768, 1775, 1778, 1771, 1811, - 1767, 1774, 1770, 1772, 1776, 1773, 1777, 1774, 1780, 1778, - 1776, 1777, 1781, 1784, 1782, 1788, 1784, 1811, 1775, 1782, - 1780, 1785, 1785, 1786, 1786, 1787, 1787, 1789, 1790, 1793, + 1743, 1744, 1745, 1742, 1737, 1732, 1747, 1748, 1736, 1749, + 1738, 1748, 1750, 1751, 1751, 1749, 1740, 1745, 1752, 1741, + 1744, 1750, 1752, 1753, 1755, 1747, 1754, 1754, 1756, 1757, + 1758, 1759, 1760, 57, 1753, 1758, 1763, 1761, 1762, 1753, + 1766, 1763, 1756, 1761, 1766, 1755, 1764, 1764, 1757, 1765, + 1765, 1759, 1760, 1762, 1768, 1769, 1770, 1771, 1771, 1773, + 1773, 1777, 1774, 1768, 1775, 52, 1769, 1774, 1774, 1776, + 1775, 1769, 1778, 1779, 1780, 1776, 1770, 1778, 1782, 1783, + 1780, 1784, 1785, 1783, 1787, 1779, 1786, 1777, 1788, 1790, + 1782, 1789, 1786, 1784, 1788, 1793, 1789, 1792, 1794, 1796, - 1792, 1781, 1791, 1789, 1790, 1788, 1792, 1791, 1793, 1795, - 1797, 1798, 1801, 1797, 1795, 1799, 1799, 1802, 1804, 1804, - 1803, 1805, 1806, 1798, 1801, 1803, 1807, 1806, 1809, 1802, - 1805, 1807, 1808, 1808, 1810, 1812, 1813, 1814, 1815, 1816, - 1813, 1817, 1814, 1810, 1815, 1818, 1819, 1822, 1809, 1823, - 1817, 1827, 1821, 1821, 1812, 1824, 1824, 1816, 1823, 1825, - 1819, 1826, 1828, 1818, 1821, 1822, 1829, 1828, 1825, 1832, - 1832, 1834, 1827, 1826, 1834, 1835, 1836, 1840, 1838, 1829, - 1839, 1841, 1848, 1840, 1842, 1842, 1843, 1845, 1843, 1844, - 1844, 1835, 1836, 1838, 1839, 1845, 1847, 1849, 1841, 1850, + 1800, 1790, 1796, 1794, 1797, 1797, 1787, 1785, 1805, 1792, + 1798, 1798, 1799, 1799, 1793, 1801, 1802, 1805, 1803, 1804, + 1800, 1801, 1802, 1803, 1807, 1804, 1810, 1809, 1813, 1807, + 1809, 1811, 1811, 1814, 1815, 1816, 1816, 1817, 1810, 1815, + 1813, 1821, 1818, 1819, 1822, 1814, 1817, 1818, 1819, 1820, + 1820, 1823, 1824, 1822, 1825, 1826, 1827, 1828, 1825, 1829, + 1826, 1821, 1827, 1830, 1831, 1833, 1833, 1834, 1829, 1823, + 1835, 1824, 1836, 1836, 1837, 1828, 1838, 1833, 1831, 1835, + 1839, 1830, 1840, 1837, 1841, 1834, 1847, 1840, 1838, 1844, + 1844, 1846, 1848, 1851, 1846, 1850, 1853, 1841, 1852, 1854, - 1850, 1851, 1852, 1847, 1848, 1856, 1853, 1854, 1855, 1857, - 1851, 1863, 1860, 1861, 0, 1858, 1864, 1849, 1853, 1854, - 1855, 1858, 1867, 1852, 1857, 1861, 1862, 1862, 1871, 1863, - 1865, 1856, 1860, 1865, 1858, 1866, 1864, 1870, 1869, 1870, - 1866, 1873, 1867, 1869, 1872, 1875, 1871, 1877, 1873, 1872, - 1878, 1879, 1881, 1880, 1875, 1880, 1883, 1886, 1883, 1878, - 1884, 1885, 1885, 1879, 1887, 1877, 1888, 1889, 1888, 1887, - 1890, 1881, 1889, 1891, 1884, 1890, 1892, 1894, 1893, 1895, - 1896, 1898, 1894, 1886, 1893, 1899, 1900, 1900, 1896, 1901, - 1901, 1891, 1895, 1902, 1903, 1904, 1892, 1905, 1907, 1899, + 1854, 1839, 1847, 1855, 1852, 1855, 1857, 1851, 1848, 1859, + 1850, 1856, 1856, 1853, 1857, 1860, 1859, 1863, 1861, 1862, + 1862, 1864, 1865, 1866, 1867, 1868, 1863, 1870, 1869, 1872, + 1874, 1874, 1873, 1870, 1865, 1866, 1867, 1860, 1861, 1875, + 1876, 1879, 1864, 1869, 1873, 1877, 1870, 1878, 1877, 1872, + 1881, 1868, 1878, 1883, 1882, 1881, 1882, 1875, 1884, 1885, + 1876, 1879, 1889, 1884, 1887, 1890, 1885, 1891, 1892, 1893, + 1892, 1883, 1896, 1887, 1890, 1895, 1898, 1895, 1899, 1891, + 1889, 1897, 1897, 1899, 1901, 1900, 1896, 1900, 1893, 1901, + 1902, 1903, 1904, 1905, 1907, 1902, 1906, 1908, 1910, 1905, - 1898, 1904, 1905, 1906, 1908, 1906, 1909, 1909, 1902, 1910, - 1911, 1911, 1908, 1913, 1903, 1915, 1907, 1912, 1912, 1914, - 1908, 1910, 1913, 1917, 1914, 1918, 1919, 1918, 1922, 1921, - 1924, 1920, 1917, 1915, 1925, 1917, 1920, 1920, 1921, 1925, - 1922, 1926, 1924, 1928, 1929, 1930, 1926, 1919, 1931, 1931, - 1932, 1933, 1935, 1938, 1930, 1934, 1928, 1936, 1939, 1940, - 1952, 1949, 1941, 0, 1929, 1938, 1935, 1941, 1932, 1933, - 1939, 1934, 1936, 1942, 1943, 1946, 1948, 1950, 1942, 1940, - 1951, 1946, 1948, 1943, 1949, 1952, 1953, 1954, 1954, 1957, - 1955, 1961, 1950, 0, 1946, 1953, 1956, 1956, 1951, 1955, + 1911, 1906, 1898, 1912, 1912, 1908, 1914, 1907, 1915, 1903, + 1913, 1913, 1904, 1916, 1911, 1917, 1918, 1910, 1918, 1916, + 1917, 1914, 1919, 1920, 1921, 1921, 1922, 1925, 1915, 1923, + 1923, 1920, 1924, 1924, 1927, 1929, 1925, 1926, 1922, 1920, + 1919, 1930, 1926, 1930, 1929, 1931, 1933, 1929, 1932, 1934, + 1936, 1937, 1927, 1932, 1932, 1933, 1937, 1940, 1938, 1941, + 1942, 1934, 1936, 1938, 1943, 1943, 1931, 1944, 1945, 1942, + 1940, 1946, 1950, 1952, 1947, 1948, 1953, 1951, 1954, 1941, + 1961, 1953, 1955, 1954, 1950, 1944, 1945, 1946, 1947, 1951, + 1948, 1955, 1958, 1952, 1960, 1962, 1963, 1964, 1958, 1965, - 1958, 1959, 1960, 1963, 1958, 1962, 1959, 1967, 1957, 1963, - 1962, 1962, 1964, 1961, 1965, 1960, 1966, 1965, 1964, 1970, - 1970, 1971, 1971, 1972, 1966, 1973, 1973, 1967, 1974, 1974, - 1975, 1976, 1972, 1977, 1985, 1978, 1971, 1979, 1979, 1977, - 1978, 1981, 1975, 1980, 1980, 1982, 1981, 1971, 1984, 1976, - 1988, 1982, 1984, 1986, 1985, 1989, 1990, 1986, 1991, 1992, - 1989, 1994, 1993, 1995, 1992, 1996, 1997, 1998, 1998, 2000, - 1996, 2002, 1999, 1991, 2004, 1988, 1999, 1994, 2003, 1990, - 1993, 2001, 2005, 1995, 2000, 2006, 2001, 2005, 1997, 2007, - 2003, 2008, 2008, 2004, 2010, 2011, 2012, 2002, 2006, 2013, + 1960, 1966, 1966, 1961, 1967, 1968, 1968, 1969, 1965, 1973, + 1962, 1958, 1970, 1967, 1963, 1971, 1970, 1972, 1974, 1975, + 1971, 1976, 1964, 1974, 1974, 1975, 1969, 1976, 1978, 1977, + 1972, 1973, 1977, 1979, 1982, 1982, 1978, 1983, 1983, 1984, + 1985, 1985, 1986, 1986, 1987, 1989, 1988, 47, 1984, 1990, + 1993, 1989, 1983, 1979, 1990, 1993, 1987, 1991, 1991, 1992, + 1992, 1994, 1996, 1983, 1988, 1997, 1996, 1994, 1998, 2000, + 2001, 2003, 1998, 2002, 2004, 2001, 2006, 2005, 2007, 2004, + 2009, 2014, 2008, 2010, 2010, 1997, 2003, 2008, 2012, 2011, + 2019, 2016, 2006, 2011, 2000, 2005, 2002, 2015, 2007, 2013, - 2014, 2015, 2010, 2020, 2016, 2017, 2018, 2007, 2021, 2021, - 2023, 2022, 2025, 2023, 2011, 2012, 2022, 2017, 2020, 2024, - 2015, 2026, 2013, 2030, 2014, 2016, 2025, 2018, 2027, 2027, - 2028, 2028, 2024, 2031, 2026, 2029, 2029, 2038, 2030, 2032, - 2032, 2033, 2034, 2034, 2035, 2039, 2031, 2037, 2040, 2035, - 2033, 2043, 2037, 2033, 2041, 2041, 2045, 2038, 2042, 2042, - 2040, 2044, 2044, 2046, 2046, 2039, 2047, 2048, 2049, 2049, - 2043, 2051, 2048, 2052, 2045, 2050, 2050, 2053, 2054, 2056, - 2058, 2047, 2052, 2060, 2056, 2051, 2057, 2057, 2059, 2059, - 2061, 2053, 2062, 2063, 2063, 2062, 2061, 2054, 2065, 2058, + 2017, 2018, 2009, 2012, 2013, 2017, 2023, 2014, 2019, 2015, + 2016, 2020, 2020, 2022, 2018, 2024, 2025, 2026, 2027, 2028, + 2029, 2022, 2030, 2032, 2034, 2023, 2033, 2033, 2035, 2034, + 2037, 2035, 2029, 2036, 2024, 2038, 2284, 2027, 2032, 2025, + 2028, 2026, 2042, 2030, 2037, 2043, 2036, 2284, 2038, 2039, + 2039, 2040, 2040, 2041, 2041, 2044, 2044, 2042, 2043, 2045, + 2046, 2046, 2047, 2050, 2049, 2051, 2052, 2047, 2045, 2049, + 2055, 2045, 2053, 2053, 2054, 2054, 2056, 2056, 2052, 2057, + 2058, 2058, 2060, 2050, 2059, 2051, 2063, 2060, 2065, 2055, + 2061, 2061, 2062, 2062, 2064, 2066, 2068, 2057, 2070, 2059, - 2066, 2060, 2064, 2064, 2067, 2068, 2068, 2070, 2071, 2063, - 2072, 2075, 2073, 2074, 2074, 2066, 2073, 2065, 2077, 2076, - 2078, 2080, 2080, 2067, 2076, 2072, 2081, 2070, 2083, 2082, - 2075, 2071, 2084, 2077, 2085, 2078, 2082, 2086, 2087, 2087, - 2088, 2089, 2083, 2089, 2090, 2092, 2081, 2090, 2093, 2088, - 2084, 2094, 2085, 2093, 2095, 2096, 2094, 2092, 2099, 2097, - 2098, 2101, 2090, 2086, 2090, 2098, 2101, 2102, 2096, 2104, - 2103, 2105, 2102, 2107, 2109, 2104, 2106, 2110, 2107, 2095, - 2097, 2108, 2106, 2116, 2099, 2103, 2108, 2112, 2111, 2113, - 2110, 2111, 2105, 2114, 2115, 2117, 2112, 2116, 2113, 2109, + 2063, 2068, 2065, 2064, 2069, 2069, 2071, 2071, 2072, 2073, + 2074, 2075, 2075, 2074, 2066, 2073, 2077, 2070, 2076, 2076, + 2079, 2078, 2080, 2080, 2082, 2083, 2072, 2075, 2084, 2085, + 2086, 2086, 2087, 2085, 2089, 2077, 2078, 2088, 2090, 2079, + 2092, 2092, 2088, 2084, 2082, 2093, 2095, 2094, 2083, 2089, + 2096, 2087, 2097, 2090, 2094, 2098, 2099, 2099, 2100, 2101, + 2095, 2101, 2104, 2107, 2109, 2093, 2102, 2100, 2096, 2102, + 2097, 2105, 2106, 2111, 2104, 2110, 2105, 2106, 2108, 2117, + 2110, 2098, 2113, 2115, 2102, 2109, 2102, 2113, 2107, 2114, + 2116, 2108, 2119, 2121, 2114, 2118, 2116, 2119, 2115, 2111, - 2118, 2117, 2114, 2115, 2119, 2121, 2118, 2123, 2119, 2124, - 2124, 2125, 2126, 2126, 2127, 2128, 2123, 2125, 2130, 2127, - 2131, 2126, 2132, 2132, 2133, 2121, 2137, 2142, 2136, 2134, - 2138, 2139, 2142, 2143, 2130, 2128, 2131, 2128, 2134, 2133, - 2136, 2141, 2137, 2139, 2141, 2138, 2144, 2145, 2145, 2146, - 2146, 2148, 2148, 2143, 2149, 2150, 2151, 2149, 2144, 2152, - 2150, 2154, 2151, 2153, 2153, 2152, 2155, 2155, 2156, 2157, - 2158, 2159, 2159, 2160, 2161, 2154, 2162, 2169, 2164, 2160, - 2156, 2162, 2164, 2157, 2165, 2166, 2166, 2165, 2161, 2158, - 2167, 2168, 2170, 2171, 2171, 2167, 2170, 2169, 2172, 2174, + 2117, 2118, 2120, 2122, 2124, 2123, 2125, 2120, 2123, 2128, + 2126, 2127, 2133, 2124, 18, 2125, 2122, 2135, 2121, 2126, + 2127, 2129, 2130, 2128, 2140, 2131, 2135, 2129, 2130, 2131, + 2136, 2136, 2133, 2137, 2138, 2138, 2139, 2142, 2143, 2137, + 2145, 2139, 2146, 2138, 2140, 2148, 2140, 2144, 2144, 2149, + 2151, 2146, 2150, 2142, 2143, 2145, 2153, 2148, 2154, 2153, + 2155, 2156, 2151, 2154, 2202, 2149, 2202, 2150, 2157, 2157, + 2158, 2158, 2162, 2156, 2160, 2160, 2161, 2162, 2163, 2161, + 2155, 2164, 2165, 2165, 2163, 2166, 2168, 2164, 2167, 2167, + 2169, 2170, 2171, 2171, 2172, 2173, 2174, 2181, 2168, 2166, - 2168, 2175, 2176, 2177, 2174, 2178, 2179, 2180, 2181, 2178, - 2182, 2172, 2180, 2183, 2181, 2185, 2182, 2177, 2186, 2187, - 2189, 2175, 2176, 2188, 2187, 2193, 2179, 2185, 2189, 2188, - 2190, 2183, 2190, 2196, 2186, 2194, 2194, 2195, 2200, 2193, - 2195, 2197, 2197, 2199, 2200, 2201, 2203, 2199, 2202, 2202, - 2206, 2206, 2208, 2210, 2215, 2203, 2211, 2201, 2214, 2196, - 2216, 2217, 2224, 2214, 2225, 2216, 2217, 2210, 2218, 2218, - 2208, 2222, 2211, 2220, 2220, 2223, 2223, 2222, 2224, 2226, - 2215, 2228, 2229, 2232, 2226, 2233, 2225, 2230, 2230, 2234, - 2235, 2233, 2232, 2239, 2229, 2237, 2237, 2240, 2238, 2244, + 2172, 2174, 2176, 17, 2169, 2177, 2176, 2180, 2177, 2173, + 2170, 2178, 2178, 2179, 2184, 2182, 2180, 2181, 2179, 2182, + 2183, 2183, 2187, 2186, 2188, 2189, 2190, 2184, 2186, 2191, + 2190, 2192, 2193, 2195, 2194, 2197, 2192, 2198, 2193, 2189, + 2194, 2199, 2187, 2205, 2188, 2208, 2199, 2197, 2200, 2191, + 2201, 2195, 0, 2198, 2200, 2206, 2206, 2205, 2201, 2207, + 2209, 2209, 2207, 2211, 2212, 2213, 2215, 2211, 2214, 2214, + 2212, 2208, 2218, 2218, 2220, 2215, 2222, 2213, 2223, 2226, + 2227, 2228, 2229, 2236, 2226, 2234, 2228, 2229, 2230, 2230, + 2222, 2234, 2220, 2237, 2223, 2232, 2232, 2235, 2235, 2236, - 2228, 2238, 2242, 2242, 2244, 2235, 2245, 2234, 2243, 2243, - 2246, 2247, 2239, 2249, 2250, 2240, 2247, 2251, 2248, 2246, - 2248, 2252, 2253, 2260, 2245, 2254, 2252, 2249, 2250, 2251, - 2254, 2255, 2255, 2256, 2256, 2257, 2257, 2258, 2258, 2259, - 2261, 2260, 2253, 2262, 2262, 2261, 2263, 2263, 2264, 2265, - 2266, 2259, 2267, 2268, 2268, 2269, 2270, 2270, 2271, 2271, - 2264, 2265, 2272, 2273, 2274, 2275, 2276, 2277, 2267, 2278, - 2266, 2274, 2277, 2272, 2269, 2273, 2279, 2275, 2280, 2280, - 2282, 2281, 2283, 2285, 2284, 2286, 2276, 2293, 2287, 2278, - 2281, 2288, 2288, 2290, 2289, 2291, 2279, 2284, 2294, 2286, + 2238, 2240, 2241, 2242, 2242, 2238, 2227, 2244, 2246, 2247, + 2251, 2245, 2249, 2249, 2241, 2237, 2244, 2245, 2250, 2252, + 2240, 2250, 2254, 2254, 2247, 2256, 2246, 2255, 2255, 2251, + 2256, 2257, 2258, 2259, 2260, 2263, 2260, 2252, 2259, 2261, + 2262, 2258, 2265, 2264, 0, 2266, 2272, 2263, 2264, 2257, + 2266, 2267, 2267, 2261, 2262, 2268, 2268, 2269, 2269, 2270, + 2270, 2271, 2265, 2273, 2272, 2274, 2274, 2276, 2273, 2275, + 2275, 2277, 2278, 2271, 2279, 2280, 2280, 2281, 2288, 2276, + 2282, 2282, 2285, 2277, 2283, 2283, 2286, 2287, 2290, 2291, + 2279, 2294, 2278, 2286, 2285, 2289, 2281, 2293, 2288, 2287, - 2287, 2295, 2283, 2289, 2297, 2293, 2282, 2285, 2290, 2296, - 2291, 2298, 2296, 0, 2299, 2307, 2298, 2309, 2297, 2299, - 2294, 2300, 2300, 2308, 2295, 2301, 2301, 2302, 2302, 2304, - 2304, 2306, 2306, 2307, 2308, 2311, 2309, 2313, 2312, 2315, - 2314, 2316, 2317, 2318, 2317, 2324, 2319, 2320, 2315, 2321, - 2321, 2323, 2323, 2325, 2330, 2311, 2312, 2326, 2326, 2313, - 2314, 2316, 2325, 2318, 2319, 2320, 2328, 2324, 2329, 2329, - 2331, 2332, 2330, 2334, 2333, 2328, 2335, 2336, 2332, 2337, - 2338, 2338, 2339, 2339, 2340, 2340, 2341, 2342, 2331, 2333, - 2344, 2334, 2341, 2336, 2335, 2343, 2345, 2346, 2337, 2347, + 2289, 2292, 2292, 2295, 2297, 2296, 2293, 2298, 2290, 2291, + 2299, 2300, 2300, 2306, 2302, 2301, 2303, 2294, 2296, 2305, + 2307, 2298, 2299, 2295, 2301, 2309, 0, 2308, 2297, 2302, + 2308, 2303, 2329, 2310, 2329, 2306, 2311, 2305, 2310, 2309, + 2319, 2311, 2321, 2307, 2312, 2312, 2313, 2313, 2314, 2314, + 2316, 2316, 2318, 2318, 2320, 2323, 2324, 2325, 2319, 2327, + 2326, 2321, 2328, 2330, 2336, 2320, 2331, 2332, 2327, 2333, + 2333, 2335, 2335, 2342, 2324, 2323, 2338, 2338, 2337, 2325, + 2326, 2340, 2328, 2330, 2331, 2332, 2336, 2337, 2341, 2341, + 2340, 2342, 2343, 2344, 2345, 2346, 2347, 2349, 2358, 2348, - 0, 2345, 2348, 2354, 2349, 2342, 2349, 2348, 2357, 2344, - 2343, 2350, 2350, 2351, 2356, 2351, 2358, 2346, 2359, 2347, - 2352, 2352, 2354, 2356, 2360, 2361, 2365, 2357, 2358, 2360, - 2362, 2366, 2367, 2367, 2366, 2368, 2369, 2371, 2359, 2370, - 2370, 2371, 2373, 2374, 2378, 2361, 2365, 2374, 2376, 2362, - 2368, 2375, 2375, 2379, 2369, 2380, 2383, 2373, 2384, 2378, - 2385, 2376, 2381, 2381, 2385, 2386, 2386, 2384, 2383, 2387, - 2388, 2388, 2389, 2379, 2390, 2380, 2391, 2389, 2392, 2393, - 2393, 2398, 2398, 2390, 2399, 2400, 2400, 2401, 2387, 2402, - 2392, 0, 2391, 2406, 2403, 2404, 2405, 2405, 2408, 2408, + 2344, 2350, 2350, 2351, 2351, 2352, 2352, 2354, 2355, 2345, + 2343, 2353, 2356, 2346, 2347, 2348, 2349, 2353, 2358, 2357, + 2359, 2360, 2366, 2355, 2357, 2354, 2360, 2361, 2363, 2361, + 2363, 2356, 2362, 2362, 2364, 2364, 2368, 2369, 2370, 2371, + 2359, 2366, 2372, 2373, 2377, 2368, 2374, 2372, 2378, 2381, + 2370, 2378, 2379, 2379, 2380, 2385, 2369, 2382, 2382, 2371, + 2387, 2387, 2383, 2373, 2377, 2374, 2383, 2381, 2386, 2380, + 2385, 2388, 2386, 2390, 2391, 2392, 2393, 2393, 2395, 2397, + 2396, 2398, 2398, 2397, 2388, 2399, 2400, 2400, 2390, 2396, + 2395, 2401, 2402, 2403, 2391, 2392, 2401, 2411, 2404, 2405, - 2401, 2413, 2402, 2403, 2404, 2411, 2399, 2412, 2406, 2414, - 2411, 2415, 2412, 2416, 2414, 2413, 2417, 2421, 2418, 2415, - 2420, 2423, 2421, 2422, 2427, 2417, 2418, 2429, 2422, 2424, - 2424, 2427, 2416, 2425, 2425, 2420, 2423, 2426, 2426, 2428, - 2430, 2431, 2434, 2432, 2428, 2429, 2435, 2431, 2432, 2433, - 2433, 2435, 2436, 2436, 2437, 2437, 2440, 2434, 2430, 2441, - 2441, 2442, 2443, 0, 2442, 2444, 2445, 2443, 2443, 2440, - 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2447, 2446, 2448, - 2451, 2452, 2455, 2453, 2449, 2456, 2454, 2455, 2451, 2453, - 2458, 2450, 2454, 2459, 2461, 2458, 2459, 2456, 2463, 2464, + 2405, 2402, 2410, 2410, 2399, 2412, 2412, 2413, 2414, 2403, + 2404, 2417, 2417, 2415, 2416, 2418, 2420, 2420, 2425, 2411, + 2413, 2414, 2415, 2416, 2423, 2428, 2424, 2427, 2426, 2423, + 2418, 2424, 2425, 2426, 2429, 2427, 2432, 2430, 2435, 2436, + 2436, 2433, 2434, 2429, 2428, 2430, 2433, 2434, 2437, 2437, + 2439, 2432, 2441, 2435, 2438, 2438, 2440, 2439, 2442, 2443, + 2446, 2440, 2444, 2445, 2445, 2443, 2447, 2444, 2448, 2448, + 2441, 2447, 2449, 2449, 2452, 2446, 2442, 2453, 2453, 2454, + 2455, 0, 2454, 2456, 2457, 2455, 2455, 2452, 2456, 2457, + 2458, 2459, 2460, 2461, 2462, 2459, 2458, 2460, 2463, 2464, - 2465, 2466, 2452, 2463, 2464, 2474, 2461, 2467, 2468, 2469, - 2469, 2470, 2475, 2480, 2466, 2476, 2467, 2468, 2465, 2478, - 2470, 2477, 2477, 2482, 2474, 2484, 2479, 2486, 2480, 2481, - 2481, 2489, 2475, 2487, 2476, 2479, 2495, 2487, 2478, 2490, - 2484, 2495, 2482, 2488, 2488, 2490, 2491, 2486, 2492, 2493, - 2493, 2494, 2491, 2497, 2492, 2498, 2489, 2500, 2501, 2494, - 2502, 2500, 2497, 2504, 2504, 2505, 2506, 2506, 2498, 2507, - 2507, 2515, 2501, 2509, 2509, 2502, 2510, 2511, 2513, 2513, - 2510, 2516, 2511, 2505, 2517, 2520, 2516, 2518, 2521, 2521, - 2526, 2515, 2518, 2518, 2523, 2523, 2517, 2524, 2524, 2525, + 2467, 2465, 2461, 2468, 2466, 2467, 2463, 2465, 2470, 2462, + 2466, 2471, 2473, 2470, 2471, 2468, 2475, 2476, 2477, 2478, + 2464, 2475, 2476, 2486, 2473, 2479, 2480, 2481, 2481, 2482, + 2487, 2492, 2478, 2488, 2479, 2480, 2477, 2490, 2482, 2489, + 2489, 2494, 2486, 2496, 2491, 2498, 2492, 2493, 2493, 2501, + 2487, 2499, 2488, 2491, 2507, 2499, 2490, 2502, 2496, 2507, + 2494, 2500, 2500, 2502, 2503, 2498, 2504, 2505, 2505, 2506, + 2503, 2509, 2504, 2510, 2501, 2512, 2513, 2506, 2514, 2512, + 2509, 2516, 2516, 2517, 2518, 2518, 2510, 2519, 2519, 2527, + 2513, 2521, 2521, 2514, 2522, 2523, 2525, 2525, 2522, 2528, - 2528, 2530, 2525, 2526, 2534, 2520, 2531, 2531, 2532, 2532, - 2533, 2533, 2535, 2535, 2536, 2537, 2538, 2539, 2528, 2534, - 2546, 2530, 2541, 2539, 2540, 2540, 2541, 2536, 2547, 2545, - 2538, 2548, 2549, 2537, 2545, 2545, 2550, 2551, 2549, 2561, - 2552, 2558, 2550, 2546, 2552, 2553, 2553, 2556, 2547, 2558, - 2559, 2548, 2556, 2559, 2562, 2563, 2564, 2562, 2565, 2566, - 2567, 2564, 2551, 2569, 2561, 2568, 2568, 2570, 2571, 2572, - 2570, 2575, 2563, 2563, 2567, 2573, 2565, 2569, 2570, 2566, - 2574, 2583, 2571, 2573, 2582, 2574, 2574, 2581, 2572, 2582, - 2575, 2576, 2576, 2577, 2577, 2578, 2578, 2579, 2579, 2580, + 2523, 2517, 2529, 2532, 2528, 2530, 2533, 2533, 2538, 2527, + 2530, 2530, 2535, 2535, 2529, 2536, 2536, 2537, 2540, 2542, + 2537, 2538, 2546, 2532, 2543, 2543, 2544, 2544, 2545, 2545, + 2547, 2547, 2548, 2549, 2550, 2551, 2540, 2546, 2558, 2542, + 2553, 2551, 2552, 2552, 2553, 2548, 2559, 2557, 2550, 2560, + 2561, 2549, 2557, 2557, 2562, 2563, 2561, 2573, 2564, 2570, + 2562, 2558, 2564, 2565, 2565, 2568, 2559, 2570, 2571, 2560, + 2568, 2571, 2574, 2575, 2576, 2574, 2577, 2578, 2579, 2576, + 2563, 2581, 2573, 2580, 2580, 2582, 2583, 2584, 2582, 2587, + 2575, 2575, 2579, 2585, 2577, 2581, 2582, 2578, 2586, 2595, - 2580, 2583, 2584, 2581, 2585, 2586, 2587, 2589, 2589, 2590, - 2594, 2591, 2590, 2585, 2593, 2593, 2596, 2594, 2595, 2595, - 2603, 2596, 2598, 2598, 2599, 2586, 2587, 2600, 2584, 2591, - 2601, 2604, 2604, 2599, 2606, 2607, 2600, 2605, 2603, 2601, - 2608, 2605, 2609, 2606, 2610, 2608, 2608, 2611, 2619, 2615, - 2607, 2611, 2620, 2610, 2615, 2609, 2616, 2616, 2618, 2618, - 2621, 2623, 2619, 2624, 2627, 2628, 2629, 2630, 2632, 2634, - 2623, 2636, 2649, 2630, 2628, 2624, 2636, 2620, 2621, 2637, - 2632, 2638, 2638, 2639, 2637, 2648, 2629, 0, 2641, 2627, - 2634, 2649, 2639, 2641, 2642, 2642, 2644, 2644, 2642, 2645, + 2583, 2585, 2594, 2586, 2586, 2593, 2584, 2594, 2587, 2588, + 2588, 2589, 2589, 2590, 2590, 2591, 2591, 2592, 2592, 2595, + 2596, 2593, 2597, 2598, 2599, 2601, 2601, 2602, 2606, 2603, + 2602, 2597, 2605, 2605, 2608, 2606, 2607, 2607, 2615, 2608, + 2610, 2610, 2611, 2598, 2599, 2612, 2596, 2603, 2613, 2616, + 2616, 2611, 2618, 2619, 2612, 2617, 2615, 2613, 2620, 2617, + 2621, 2618, 2622, 2620, 2620, 2623, 2631, 2627, 2619, 2623, + 2632, 2622, 2627, 2621, 2628, 2628, 2630, 2630, 2633, 2635, + 2631, 2636, 2639, 2640, 2641, 2642, 2644, 2646, 2635, 2648, + 2661, 2642, 2640, 2636, 2648, 2632, 2633, 2649, 2644, 2650, - 2645, 2646, 2646, 2647, 2650, 2648, 2653, 2652, 2656, 2650, - 2654, 2653, 2647, 2652, 2657, 2654, 2655, 2655, 2658, 2659, - 2661, 2660, 2668, 2658, 2662, 2662, 2656, 2660, 2664, 2665, - 2670, 2666, 2664, 2669, 2665, 2657, 2666, 2659, 2667, 2667, - 2674, 2668, 2672, 2672, 2675, 2661, 2677, 2676, 2669, 2678, - 2670, 2676, 2679, 2674, 2680, 2677, 2681, 2675, 2682, 2683, - 2683, 2681, 2680, 2684, 2689, 2678, 2686, 2686, 2687, 2687, - 2693, 2679, 2691, 2691, 2694, 2695, 2696, 2698, 2698, 2699, - 2700, 2696, 2684, 2701, 2682, 2689, 2693, 2703, 2703, 2705, - 2694, 2695, 2704, 2706, 2706, 2709, 2711, 2712, 2710, 2699, + 2650, 2651, 2649, 2660, 2641, 0, 2653, 2639, 2646, 2661, + 2651, 2653, 2654, 2654, 2656, 2656, 2654, 2657, 2657, 2658, + 2658, 2659, 2662, 2660, 2665, 2664, 2668, 2662, 2666, 2665, + 2659, 2664, 2669, 2666, 2667, 2667, 2670, 2671, 2673, 2672, + 2680, 2670, 2674, 2674, 2668, 2672, 2676, 2677, 2682, 2678, + 2676, 2681, 2677, 2669, 2678, 2671, 2679, 2679, 2686, 2680, + 2684, 2684, 2687, 2673, 2689, 2688, 2681, 2690, 2682, 2688, + 2691, 2686, 2692, 2689, 2693, 2687, 2694, 2695, 2695, 2693, + 2692, 2696, 2701, 2690, 2698, 2698, 2699, 2699, 2705, 2691, + 2703, 2703, 2706, 2707, 2708, 2710, 2710, 2711, 2712, 2708, - 2715, 2711, 2701, 2700, 2710, 2717, 2704, 2719, 2705, 2713, - 2713, 2714, 2714, 2716, 2716, 2709, 2717, 2718, 2720, 2712, - 2715, 2721, 2722, 2723, 2720, 2730, 2718, 2719, 2724, 2724, - 2726, 2726, 2725, 2716, 2722, 2725, 2731, 2730, 2732, 2736, - 2721, 2733, 2733, 2723, 2732, 2734, 2735, 2740, 2734, 2738, - 2739, 2742, 2735, 2741, 2738, 2739, 2731, 2736, 2745, 2741, - 2743, 2743, 2746, 2747, 2748, 2750, 2740, 2751, 2742, 2742, - 2745, 2749, 2749, 2753, 2753, 2756, 2751, 2748, 2754, 2754, - 2746, 2755, 2757, 2766, 2750, 2768, 2755, 2757, 2747, 2756, - 2758, 2758, 2759, 2759, 2760, 2760, 2761, 2763, 2763, 2769, + 2696, 2713, 2694, 2701, 2705, 2715, 2715, 2717, 2706, 2707, + 2716, 2718, 2718, 2721, 2723, 2724, 2722, 2711, 2727, 2723, + 2713, 2712, 2722, 2729, 2716, 2731, 2717, 2725, 2725, 2726, + 2726, 2728, 2728, 2721, 2729, 2730, 2732, 2724, 2727, 2733, + 2734, 2735, 2732, 2742, 2730, 2731, 2736, 2736, 2738, 2738, + 2737, 2728, 2734, 2737, 2743, 2742, 2744, 2748, 2733, 2745, + 2745, 2735, 2744, 2746, 2747, 2752, 2746, 2750, 2751, 2754, + 2747, 2753, 2750, 2751, 2743, 2748, 2757, 2753, 2755, 2755, + 2758, 2759, 2760, 2762, 2752, 2763, 2754, 2754, 2757, 2761, + 2761, 2765, 2765, 2768, 2763, 2760, 2766, 2766, 2758, 2767, - 2770, 2761, 2766, 2771, 2771, 2773, 2773, 2768, 2775, 2774, - 2776, 2777, 2777, 2778, 2778, 2781, 0, 2782, 2780, 2776, - 2783, 2769, 2770, 2774, 2780, 2783, 2786, 2786, 2775, 2788, - 2788, 2790, 2789, 2791, 2792, 2781, 2782, 2789, 2795, 2791, - 2793, 2794, 2794, 2795, 2797, 2790, 2792, 2798, 2793, 2799, - 2800, 2801, 2803, 2804, 2799, 2805, 2806, 2801, 2808, 2807, - 2803, 2809, 2800, 2810, 2797, 2811, 2813, 2798, 2814, 2818, - 2811, 2813, 2804, 2891, 2808, 2805, 2806, 2807, 2809, 2809, - 2815, 2819, 2816, 0, 2810, 2891, 2815, 2816, 2814, 2818, - 2822, 2822, 2823, 2823, 2819, 2824, 2828, 2828, 2837, 2824, + 2769, 2778, 2762, 2780, 2767, 2769, 2759, 2768, 2770, 2770, + 2771, 2771, 2772, 2772, 2773, 2775, 2775, 2781, 2782, 2773, + 2778, 2783, 2783, 2785, 2785, 2780, 2787, 2786, 2788, 2789, + 2789, 2790, 2790, 2793, 0, 2794, 2792, 2788, 2795, 2781, + 2782, 2786, 2792, 2795, 2798, 2798, 2787, 2800, 2800, 2802, + 2801, 2803, 2804, 2793, 2794, 2801, 2807, 2803, 2805, 2806, + 2806, 2807, 2809, 2802, 2804, 2810, 2805, 2811, 2812, 2813, + 2815, 2816, 2811, 2817, 2818, 2813, 2820, 2819, 2815, 2821, + 2812, 2822, 2809, 2823, 2825, 2810, 2826, 2830, 2823, 2825, + 2816, 2903, 2820, 2817, 2818, 2819, 2821, 2821, 2827, 2831, - 2830, 2830, 2831, 2831, 2834, 2831, 2832, 2832, 2834, 2832, - 2833, 2833, 2838, 2833, 2836, 2836, 2837, 2841, 2842, 2843, - 2844, 2844, 2847, 2848, 2843, 2849, 2838, 2850, 2851, 2849, - 2848, 2853, 2854, 2855, 2855, 2858, 2850, 2841, 2842, 2856, - 2856, 2854, 2863, 2851, 2857, 2857, 2859, 2847, 2860, 2853, - 2858, 2859, 2865, 2861, 2864, 2862, 2868, 2860, 2861, 2861, - 2860, 2862, 0, 2866, 2896, 2867, 2894, 2863, 2866, 2864, - 2867, 2869, 2869, 2865, 2870, 2868, 2871, 2872, 2872, 2896, - 2870, 2874, 2871, 2873, 2873, 2894, 2874, 2877, 2877, 2880, - 2880, 2881, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, + 2828, 0, 2822, 2903, 2827, 2828, 2826, 2830, 2834, 2834, + 2835, 2835, 2831, 2836, 2840, 2840, 2849, 2836, 2842, 2842, + 2843, 2843, 2846, 2843, 2844, 2844, 2846, 2844, 2845, 2845, + 2850, 2845, 2848, 2848, 2849, 2853, 2854, 2855, 2856, 2856, + 2859, 2860, 2855, 2861, 2850, 2862, 2863, 2861, 2860, 2865, + 2866, 2867, 2867, 2870, 2862, 2853, 2854, 2868, 2868, 2866, + 2875, 2863, 2869, 2869, 2871, 2859, 2872, 2865, 2870, 2871, + 2877, 2873, 2876, 2874, 2880, 2872, 2873, 2873, 2872, 2874, + 0, 2878, 2908, 2879, 2906, 2875, 2878, 2876, 2879, 2881, + 2881, 2877, 2882, 2880, 2883, 2884, 2884, 2908, 2882, 2886, - 2885, 2886, 2886, 2888, 2889, 2889, 2890, 2892, 2895, 2895, - 2897, 2900, 2888, 2898, 2904, 2890, 2899, 2899, 2901, 2901, - 2906, 2905, 2908, 2897, 2905, 2898, 2900, 2892, 2907, 2907, - 2910, 2911, 2904, 2910, 2912, 2914, 2913, 2911, 2915, 2916, - 2908, 2913, 2919, 2918, 2922, 2933, 2906, 2931, 2912, 2918, - 2931, 2919, 2934, 2934, 2914, 2916, 2915, 2938, 2933, 2922, - 2935, 2935, 2936, 2936, 2939, 2940, 2941, 2942, 2944, 2940, - 2946, 2945, 2947, 2939, 2947, 2946, 2950, 2948, 2949, 2949, - 2938, 2942, 2945, 2951, 2953, 2952, 2941, 2954, 2956, 2950, - 2955, 2944, 2948, 2958, 2957, 2959, 2960, 2956, 2965, 2964, + 2883, 2885, 2885, 2906, 2886, 2889, 2889, 2892, 2892, 2893, + 2893, 2894, 2894, 2895, 2895, 2896, 2896, 2897, 2897, 2898, + 2898, 2900, 2901, 2901, 2902, 2904, 2907, 2907, 2909, 2912, + 2900, 2910, 2916, 2902, 2911, 2911, 2913, 2913, 2918, 2917, + 2920, 2909, 2917, 2910, 2912, 2904, 2919, 2919, 2922, 2923, + 2916, 2922, 2924, 2926, 2925, 2923, 2927, 2928, 2920, 2925, + 2931, 2930, 2934, 2945, 2918, 2943, 2924, 2930, 2943, 2931, + 2946, 2946, 2926, 2928, 2927, 2950, 2945, 2934, 2947, 2947, + 2948, 2948, 2951, 2952, 2953, 2954, 2956, 2952, 2958, 2957, + 2959, 2951, 2959, 2958, 2962, 2960, 2961, 2961, 2950, 2954, - 2953, 2960, 2951, 2952, 0, 2955, 2957, 2966, 2966, 2972, - 2967, 2973, 2954, 2964, 2958, 2959, 2968, 2968, 2965, 2967, - 2969, 2969, 2970, 2970, 2971, 2971, 2974, 2975, 2972, 2974, - 2976, 2973, 2975, 2977, 2978, 2976, 2979, 2980, 2981, 2982, - 2983, 2985, 2979, 2986, 2982, 2984, 2984, 2987, 2987, 2978, - 2981, 2980, 2989, 2991, 2994, 2994, 2985, 2996, 2977, 2997, - 2983, 3000, 2986, 2995, 2995, 2996, 2998, 2989, 2999, 3001, - 3002, 2991, 2998, 3007, 2999, 3000, 3003, 3008, 2997, 3004, - 3004, 3003, 3001, 3005, 3005, 3010, 3011, 3013, 3014, 3002, - 3011, 3015, 3016, 3014, 3007, 3017, 3018, 3008, 3019, 3010, + 2957, 2963, 2965, 2964, 2953, 2966, 2968, 2962, 2967, 2956, + 2960, 2970, 2969, 2971, 2972, 2968, 2977, 2976, 2965, 2972, + 2963, 2964, 0, 2967, 2969, 2978, 2978, 2984, 2979, 2985, + 2966, 2976, 2970, 2971, 2980, 2980, 2977, 2979, 2981, 2981, + 2982, 2982, 2983, 2983, 2986, 2987, 2984, 2986, 2988, 2985, + 2987, 2989, 2990, 2988, 2991, 2992, 2993, 2994, 2995, 2997, + 2991, 2998, 2994, 2996, 2996, 2999, 2999, 2990, 2993, 2992, + 3001, 3003, 3006, 3006, 2997, 3008, 2989, 3009, 2995, 3012, + 2998, 3007, 3007, 3008, 3010, 3001, 3011, 3013, 3014, 3003, + 3010, 3019, 3011, 3012, 3015, 3020, 3009, 3016, 3016, 3015, - 3024, 3020, 3026, 3019, 3025, 3016, 3020, 3013, 3017, 3034, - 3015, 3021, 3021, 3027, 3027, 3018, 3030, 3030, 3028, 3029, - 3024, 3026, 3025, 3028, 3031, 3029, 3032, 3033, 3034, 3031, - 3035, 3032, 3033, 3037, 3037, 3038, 3035, 3039, 3039, 3041, - 3038, 3042, 3043, 3041, 3044, 3045, 3046, 3047, 3048, 3043, - 3050, 3050, 3046, 3052, 3052, 3055, 3053, 3054, 3056, 3057, - 3042, 3048, 3054, 3044, 3045, 3053, 3047, 3060, 3053, 3058, - 3058, 3059, 3057, 3062, 3055, 3064, 3059, 3056, 3063, 3063, - 3060, 3065, 3065, 3066, 3066, 3067, 3068, 3069, 3070, 3070, - 3067, 3071, 3076, 3068, 3064, 3072, 3071, 3072, 3074, 3062, + 3013, 3017, 3017, 3022, 3023, 3025, 3026, 3014, 3023, 3027, + 3028, 3026, 3019, 3029, 3030, 3020, 3031, 3022, 3036, 3032, + 3038, 3031, 3037, 3028, 3032, 3025, 3029, 3046, 3027, 3033, + 3033, 3039, 3039, 3030, 3042, 3042, 3040, 3041, 3036, 3038, + 3037, 3040, 3043, 3041, 3044, 3045, 3046, 3043, 3047, 3044, + 3045, 3049, 3049, 3050, 3047, 3051, 3051, 3053, 3050, 3054, + 3055, 3053, 3056, 3057, 3058, 3059, 3060, 3055, 3062, 3062, + 3058, 3064, 3064, 3067, 3065, 3066, 3068, 3069, 3054, 3060, + 3066, 3056, 3057, 3065, 3059, 3072, 3065, 3070, 3070, 3071, + 3069, 3074, 3067, 3076, 3071, 3068, 3075, 3075, 3072, 3077, - 3073, 3073, 3075, 3077, 3078, 3074, 3069, 3081, 3077, 3075, - 3083, 3076, 3080, 3080, 3084, 3083, 3085, 3086, 3090, 3084, - 3087, 3087, 3091, 3078, 3089, 3089, 3081, 3092, 3092, 3093, - 3093, 3094, 3096, 3096, 3104, 3085, 3086, 3090, 3094, 3097, - 3097, 3091, 3098, 3100, 3105, 3103, 3106, 3106, 3100, 3098, - 3103, 3107, 3107, 3104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3105, 3111, 3111, 3111, 3111, 3111, 3111, - 3111, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3113, 3113, - 3113, 3113, 3113, 3113, 3113, 3114, 3114, 3114, 3114, 3114, - 3114, 3114, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3116, + 3077, 3078, 3078, 3079, 3080, 3081, 3082, 3082, 3079, 3083, + 3088, 3080, 3076, 3084, 3083, 3084, 3086, 3074, 3085, 3085, + 3087, 3089, 3090, 3086, 3081, 3093, 3089, 3087, 3095, 3088, + 3092, 3092, 3096, 3095, 3097, 3098, 3102, 3096, 3099, 3099, + 3103, 3090, 3101, 3101, 3093, 3104, 3104, 3105, 3105, 3106, + 3108, 3108, 3116, 3097, 3098, 3102, 3106, 3109, 3109, 3103, + 3110, 3112, 3117, 3115, 3118, 3118, 3112, 3110, 3115, 3119, + 3119, 3116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3117, 3123, 3123, 3123, 3123, 3123, 3123, 3123, 3124, + 3124, 3124, 3124, 3124, 3124, 3124, 3125, 3125, 3125, 3125, - 3116, 3116, 3116, 3116, 3116, 3116, 3117, 3117, 3117, 3117, - 3117, 3117, 3117, 3119, 3119, 0, 3119, 3119, 3119, 3119, - 3120, 3120, 0, 0, 0, 3120, 3120, 3121, 3121, 0, - 0, 3121, 0, 3121, 3122, 0, 0, 0, 0, 0, - 3122, 3123, 3123, 0, 0, 0, 3123, 3123, 3124, 0, - 0, 0, 0, 0, 3124, 3125, 3125, 0, 3125, 3125, - 3125, 3125, 3126, 0, 0, 0, 0, 0, 3126, 3127, - 3127, 0, 0, 0, 3127, 3127, 3128, 3128, 0, 3128, - 3128, 3128, 3128, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3125, 3125, 3125, 3126, 3126, 3126, 3126, 3126, 3126, 3126, + 3127, 3127, 3127, 3127, 3127, 3127, 3127, 3128, 3128, 3128, + 3128, 3128, 3128, 3128, 3129, 3129, 3129, 3129, 3129, 3129, + 3129, 3131, 3131, 0, 3131, 3131, 3131, 3131, 3132, 3132, + 0, 0, 0, 3132, 3132, 3133, 3133, 0, 0, 3133, + 0, 3133, 3134, 0, 0, 0, 0, 0, 3134, 3135, + 3135, 0, 0, 0, 3135, 3135, 3136, 0, 0, 0, + 0, 0, 3136, 3137, 3137, 0, 3137, 3137, 3137, 3137, + 3138, 0, 0, 0, 0, 0, 3138, 3139, 3139, 0, + 0, 0, 3139, 3139, 3140, 3140, 0, 3140, 3140, 3140, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3110, 3110 + 3140, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122 } ; static yy_state_type yy_last_accepting_state; @@ -3004,7 +3012,7 @@ static void config_end_include(void) } #endif -#line 3005 "" +#line 3013 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3013,9 +3021,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3014 "" +#line 3022 "" -#line 3016 "" +#line 3024 "" #define INITIAL 0 #define quotedstring 1 @@ -3239,7 +3247,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3240 "" +#line 3248 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3272,13 +3280,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 >= 3111 ) + if ( yy_current_state >= 3123 ) 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] != 6084 ); + while ( yy_base[yy_current_state] != 6102 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4354,255 +4362,255 @@ YY_RULE_SETUP case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 233: YY_RULE_SETUP -#line 449 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 448 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 234: YY_RULE_SETUP -#line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 449 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 235: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 451 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 236: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 237: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 238: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 239: YY_RULE_SETUP -#line 457 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 456 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 240: YY_RULE_SETUP -#line 459 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 463 "./util/configlexer.lex" +#line 461 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 465 "./util/configlexer.lex" +#line 463 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 465 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 467 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 247: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 248: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 249: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 250: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 251: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 252: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 253: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 254: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 255: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 256: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 257: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 258: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 259: YY_RULE_SETUP @@ -4612,200 +4620,210 @@ YY_RULE_SETUP case 260: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 261: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 262: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 271: YY_RULE_SETUP -#line 495 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 494 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 272: YY_RULE_SETUP -#line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 495 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 273: YY_RULE_SETUP -#line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 497 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 274: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 275: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 276: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 277: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 278: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 279: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 280: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 281: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 282: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 283: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 284: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 285: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 286: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 287: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 288: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 289: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 290: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 291: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 292: -/* rule 292 can match eol */ YY_RULE_SETUP #line 517 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 293: +YY_RULE_SETUP +#line 518 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 294: +/* rule 294 can match eol */ +YY_RULE_SETUP +#line 519 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 293: +case 295: YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 522 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 521 "./util/configlexer.lex" +#line 523 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 294: +case 296: YY_RULE_SETUP -#line 526 "./util/configlexer.lex" +#line 528 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 295: -/* rule 295 can match eol */ +case 297: +/* rule 297 can match eol */ YY_RULE_SETUP -#line 527 "./util/configlexer.lex" +#line 529 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 296: +case 298: YY_RULE_SETUP -#line 529 "./util/configlexer.lex" +#line 531 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4818,34 +4836,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 297: +case 299: YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 543 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 542 "./util/configlexer.lex" +#line 544 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 298: +case 300: YY_RULE_SETUP -#line 547 "./util/configlexer.lex" +#line 549 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 299: -/* rule 299 can match eol */ +case 301: +/* rule 301 can match eol */ YY_RULE_SETUP -#line 548 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 300: +case 302: YY_RULE_SETUP -#line 550 "./util/configlexer.lex" +#line 552 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4858,38 +4876,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 301: +case 303: YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 564 "./util/configlexer.lex" +#line 566 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 302: -YY_RULE_SETUP -#line 568 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 303: -/* rule 303 can match eol */ -YY_RULE_SETUP -#line 569 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK case 304: YY_RULE_SETUP #line 570 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 305: +/* rule 305 can match eol */ YY_RULE_SETUP #line 571 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 306: +YY_RULE_SETUP +#line 572 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 307: +YY_RULE_SETUP +#line 573 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -4897,27 +4915,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 576 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 306: +case 308: YY_RULE_SETUP -#line 580 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 307: -/* rule 307 can match eol */ +case 309: +/* rule 309 can match eol */ YY_RULE_SETUP -#line 581 "./util/configlexer.lex" +#line 583 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 308: +case 310: YY_RULE_SETUP -#line 583 "./util/configlexer.lex" +#line 585 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4927,7 +4945,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 589 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4942,39 +4960,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 309: +case 311: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 605 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 606 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 310: -YY_RULE_SETUP -#line 610 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 311: -/* rule 311 can match eol */ -YY_RULE_SETUP -#line 611 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK case 312: YY_RULE_SETUP #line 612 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 313: +/* rule 313 can match eol */ YY_RULE_SETUP #line 613 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 314: +YY_RULE_SETUP +#line 614 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 315: +YY_RULE_SETUP +#line 615 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -4983,29 +5001,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 619 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 314: +case 316: YY_RULE_SETUP -#line 623 "./util/configlexer.lex" +#line 625 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 315: -/* rule 315 can match eol */ +case 317: +/* rule 317 can match eol */ YY_RULE_SETUP -#line 624 "./util/configlexer.lex" +#line 626 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 316: +case 318: YY_RULE_SETUP -#line 628 "./util/configlexer.lex" +#line 630 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5014,33 +5032,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 317: +case 319: YY_RULE_SETUP -#line 636 "./util/configlexer.lex" +#line 638 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 318: +case 320: YY_RULE_SETUP -#line 640 "./util/configlexer.lex" +#line 642 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 319: +case 321: YY_RULE_SETUP -#line 644 "./util/configlexer.lex" +#line 646 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 320: +case 322: YY_RULE_SETUP -#line 648 "./util/configlexer.lex" +#line 650 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5041 "" +#line 5059 "" case YY_END_OF_BUFFER: { @@ -5335,7 +5353,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 >= 3111 ) + if ( yy_current_state >= 3123 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5363,11 +5381,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 >= 3111 ) + if ( yy_current_state >= 3123 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3110); + yy_is_jam = (yy_current_state == 3122); return yy_is_jam ? 0 : yy_current_state; } @@ -6006,6 +6024,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 648 "./util/configlexer.lex" +#line 650 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 09a263b5f..0aefe952c 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -422,6 +422,8 @@ control-key-file{COLON} { YDVAR(1, VAR_CONTROL_KEY_FILE) } control-cert-file{COLON} { YDVAR(1, VAR_CONTROL_CERT_FILE) } python-script{COLON} { YDVAR(1, VAR_PYTHON_SCRIPT) } python{COLON} { YDVAR(0, VAR_PYTHON) } +dynlib-file{COLON} { YDVAR(1, VAR_DYNLIB_FILE) } +dynlib{COLON} { YDVAR(0, VAR_DYNLIB) } domain-insecure{COLON} { YDVAR(1, VAR_DOMAIN_INSECURE) } minimal-responses{COLON} { YDVAR(1, VAR_MINIMAL_RESPONSES) } rrset-roundrobin{COLON} { YDVAR(1, VAR_RRSET_ROUNDROBIN) } diff --git a/util/configparser.c b/util/configparser.c index e9954dbfa..81a42581c 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5. */ /* Bison implementation for Yacc-like parsers in C @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,6 +97,15 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -419,7 +428,9 @@ extern int yydebug; VAR_RPZ_ACTION_OVERRIDE = 540, VAR_RPZ_CNAME_OVERRIDE = 541, VAR_RPZ_LOG = 542, - VAR_RPZ_LOG_NAME = 543 + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -709,6 +720,8 @@ extern int yydebug; #define VAR_RPZ_CNAME_OVERRIDE 541 #define VAR_RPZ_LOG 542 #define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -718,7 +731,7 @@ union YYSTYPE char* str; -#line 722 "util/configparser.c" +#line 735 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -739,36 +752,83 @@ int yyparse (void); # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -776,7 +836,19 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -790,22 +862,20 @@ typedef short yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -817,11 +887,11 @@ typedef short yytype_int16; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -834,6 +904,18 @@ typedef short yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + #define YY_ASSERT(E) ((void) (0 && (E))) @@ -912,17 +994,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -935,11 +1017,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -951,12 +1033,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -968,28 +1050,29 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 613 +#define YYLAST 616 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 289 +#define YYNTOKENS 291 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 312 +#define YYNNTS 316 /* YYNRULES -- Number of rules. */ -#define YYNRULES 602 +#define YYNRULES 607 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 895 +#define YYNSTATES 902 #define YYUNDEFTOK 2 -#define YYMAXUTOK 543 +#define YYMAXUTOK 545 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint16 yytranslate[] = +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1045,74 +1128,74 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288 + 285, 286, 287, 288, 289, 290 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { - 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, - 183, 184, 184, 185, 185, 186, 187, 189, 194, 199, - 200, 201, 201, 201, 202, 202, 203, 203, 203, 204, - 204, 205, 205, 205, 206, 206, 207, 207, 207, 208, - 208, 208, 209, 209, 210, 210, 211, 211, 212, 212, - 213, 213, 214, 214, 215, 215, 216, 216, 217, 217, - 217, 218, 218, 218, 219, 219, 219, 220, 220, 221, - 221, 222, 222, 223, 223, 224, 224, 224, 225, 225, - 226, 226, 227, 227, 227, 228, 228, 229, 229, 230, - 230, 231, 231, 231, 232, 232, 233, 233, 234, 234, - 235, 235, 236, 236, 237, 237, 237, 238, 238, 239, - 239, 239, 240, 240, 240, 241, 241, 241, 242, 242, - 242, 242, 243, 244, 244, 244, 245, 245, 245, 246, - 246, 247, 247, 248, 248, 248, 249, 249, 250, 250, - 250, 251, 252, 252, 253, 253, 254, 255, 255, 256, - 256, 257, 257, 258, 259, 259, 260, 260, 261, 261, - 262, 262, 263, 263, 264, 264, 264, 265, 265, 266, - 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, - 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, - 275, 276, 276, 277, 277, 278, 278, 279, 279, 280, - 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, - 284, 284, 285, 285, 286, 288, 300, 301, 302, 302, - 302, 302, 302, 303, 303, 305, 317, 318, 319, 319, - 319, 319, 320, 320, 322, 336, 337, 338, 338, 338, - 338, 339, 339, 339, 341, 358, 359, 360, 360, 360, - 360, 361, 361, 361, 362, 365, 384, 401, 409, 419, - 427, 444, 445, 446, 446, 446, 446, 446, 447, 447, - 447, 448, 448, 450, 459, 468, 479, 488, 497, 506, - 517, 526, 538, 552, 567, 578, 595, 612, 629, 646, - 661, 676, 689, 704, 713, 722, 731, 740, 749, 758, - 767, 776, 785, 794, 803, 812, 821, 830, 843, 852, - 865, 874, 883, 892, 899, 906, 915, 922, 931, 939, - 946, 953, 961, 970, 979, 988, 1002, 1011, 1020, 1029, - 1038, 1047, 1056, 1063, 1070, 1096, 1104, 1111, 1118, 1125, - 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, 1210, - 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, 1301, - 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, 1401, - 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, 1497, - 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, 1587, - 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, 1702, - 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, 1796, - 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, 1892, - 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, 2020, - 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, 2143, - 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, 2264, - 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, 2364, - 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, 2466, - 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, 2549, - 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, 2677, - 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, 2695, - 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, 2758, - 2763, 2764, 2765, 2765, 2766, 2766, 2766, 2767, 2768, 2768, - 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, 2775, 2776, - 2778, 2787, 2794, 2801, 2810, 2817, 2824, 2831, 2838, 2847, - 2856, 2863, 2870, 2880, 2890, 2900, 2910, 2920, 2930, 2935, - 2936, 2937, 2939, 2945, 2955, 2962, 2971, 2979, 2984, 2985, - 2987, 2987, 2987, 2988, 2988, 2989, 2990, 2991, 2992, 2993, - 2995, 3005, 3014, 3021, 3030, 3037, 3046, 3054, 3067, 3075, - 3088, 3093, 3094, 3095, 3095, 3096, 3096, 3096, 3097, 3099, - 3111, 3123, 3135, 3150, 3163, 3176, 3187, 3192, 3193, 3194, - 3194, 3196, 3211 + 0, 181, 181, 181, 182, 182, 183, 183, 184, 184, + 184, 185, 185, 186, 186, 187, 187, 190, 195, 200, + 201, 202, 202, 202, 203, 203, 204, 204, 204, 205, + 205, 206, 206, 206, 207, 207, 208, 208, 208, 209, + 209, 209, 210, 210, 211, 211, 212, 212, 213, 213, + 214, 214, 215, 215, 216, 216, 217, 217, 218, 218, + 218, 219, 219, 219, 220, 220, 220, 221, 221, 222, + 222, 223, 223, 224, 224, 225, 225, 225, 226, 226, + 227, 227, 228, 228, 228, 229, 229, 230, 230, 231, + 231, 232, 232, 232, 233, 233, 234, 234, 235, 235, + 236, 236, 237, 237, 238, 238, 238, 239, 239, 240, + 240, 240, 241, 241, 241, 242, 242, 242, 243, 243, + 243, 243, 244, 245, 245, 245, 246, 246, 246, 247, + 247, 248, 248, 249, 249, 249, 250, 250, 251, 251, + 251, 252, 253, 253, 254, 254, 255, 256, 256, 257, + 257, 258, 258, 259, 260, 260, 261, 261, 262, 262, + 263, 263, 264, 264, 265, 265, 265, 266, 266, 267, + 267, 268, 268, 269, 269, 270, 270, 271, 271, 272, + 272, 272, 273, 273, 273, 274, 274, 274, 275, 275, + 276, 277, 277, 278, 278, 279, 279, 280, 280, 281, + 281, 281, 282, 282, 282, 283, 283, 283, 284, 284, + 285, 285, 286, 286, 287, 289, 301, 302, 303, 303, + 303, 303, 303, 304, 304, 306, 318, 319, 320, 320, + 320, 320, 321, 321, 323, 337, 338, 339, 339, 339, + 339, 340, 340, 340, 342, 359, 360, 361, 361, 361, + 361, 362, 362, 362, 363, 366, 385, 402, 410, 420, + 428, 445, 446, 447, 447, 447, 447, 447, 448, 448, + 448, 449, 449, 451, 460, 469, 480, 489, 498, 507, + 518, 527, 539, 553, 568, 579, 596, 613, 630, 647, + 662, 677, 690, 705, 714, 723, 732, 741, 750, 759, + 768, 777, 786, 795, 804, 813, 822, 831, 844, 853, + 866, 875, 884, 893, 900, 907, 916, 923, 932, 940, + 947, 954, 962, 971, 980, 989, 1003, 1012, 1021, 1030, + 1039, 1048, 1057, 1064, 1071, 1097, 1105, 1112, 1119, 1126, + 1133, 1141, 1149, 1157, 1164, 1175, 1186, 1193, 1202, 1211, + 1220, 1227, 1234, 1242, 1250, 1260, 1270, 1280, 1294, 1302, + 1315, 1326, 1334, 1347, 1356, 1365, 1374, 1384, 1394, 1402, + 1415, 1424, 1432, 1441, 1449, 1462, 1471, 1478, 1488, 1498, + 1508, 1518, 1528, 1538, 1548, 1558, 1565, 1572, 1579, 1588, + 1597, 1606, 1615, 1622, 1632, 1652, 1659, 1677, 1690, 1703, + 1712, 1721, 1730, 1739, 1749, 1759, 1770, 1779, 1788, 1797, + 1806, 1815, 1824, 1837, 1850, 1859, 1866, 1875, 1884, 1893, + 1902, 1910, 1923, 1931, 1972, 1979, 1994, 2004, 2014, 2021, + 2028, 2035, 2044, 2052, 2066, 2087, 2108, 2120, 2132, 2144, + 2153, 2174, 2184, 2193, 2201, 2209, 2222, 2235, 2250, 2265, + 2274, 2283, 2289, 2298, 2307, 2317, 2327, 2340, 2353, 2365, + 2379, 2391, 2405, 2415, 2422, 2429, 2438, 2447, 2457, 2467, + 2477, 2484, 2491, 2500, 2509, 2519, 2529, 2536, 2543, 2550, + 2558, 2568, 2578, 2588, 2598, 2637, 2647, 2655, 2663, 2678, + 2687, 2692, 2693, 2694, 2694, 2694, 2695, 2695, 2695, 2696, + 2696, 2698, 2708, 2717, 2724, 2731, 2738, 2745, 2752, 2759, + 2764, 2765, 2766, 2766, 2767, 2767, 2767, 2768, 2769, 2769, + 2770, 2770, 2771, 2771, 2772, 2773, 2774, 2775, 2776, 2777, + 2779, 2788, 2795, 2802, 2811, 2818, 2825, 2832, 2839, 2848, + 2857, 2864, 2871, 2881, 2891, 2901, 2911, 2921, 2931, 2936, + 2937, 2938, 2940, 2946, 2951, 2952, 2953, 2955, 2961, 2971, + 2978, 2987, 2995, 3000, 3001, 3003, 3003, 3003, 3004, 3004, + 3005, 3006, 3007, 3008, 3009, 3011, 3021, 3030, 3037, 3046, + 3053, 3062, 3070, 3083, 3091, 3104, 3109, 3110, 3111, 3111, + 3112, 3112, 3112, 3113, 3115, 3127, 3139, 3151, 3166, 3179, + 3192, 3203, 3208, 3209, 3210, 3210, 3212, 3227 }; #endif @@ -1227,17 +1310,18 @@ static const char *const yytname[] = "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", - "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "$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", "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", + "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "$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", "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_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", @@ -1339,10 +1423,10 @@ static const char *const yytname[] = "dt_dnstap_log_client_response_messages", "dt_dnstap_log_forwarder_query_messages", "dt_dnstap_log_forwarder_response_messages", "pythonstart", - "contents_py", "content_py", "py_script", - "server_disable_dnssec_lame_check", "server_log_identity", - "server_response_ip", "server_response_ip_data", "dnscstart", - "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", + "contents_py", "content_py", "py_script", "dynlibstart", "contents_dl", + "content_dl", "dl_file", "server_disable_dnssec_lame_check", + "server_log_identity", "server_response_ip", "server_response_ip_data", + "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider", "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated", "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size", @@ -1359,7 +1443,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1389,18 +1473,19 @@ static const yytype_uint16 yytoknum[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545 }; # endif -#define YYPACT_NINF -272 +#define YYPACT_NINF (-272) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-272))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1410,27 +1495,27 @@ static const yytype_int16 yypact[] = -272, 0, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - 271, -42, -37, -43, -21, -44, -12, -87, -109, -205, - -229, -271, -3, 3, 4, 5, 25, 26, 27, 30, - 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 54, 55, 83, 84, 85, 88, 89, 92, 94, 95, - 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, - 216, 217, 220, 221, 224, 237, 238, 239, 240, 241, - 242, 243, 244, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 270, 272, 306, 307, - 308, 309, 313, 314, 315, 357, -272, -272, -272, -272, + 277, -42, -37, -41, -7, -43, -30, -136, -106, -10, + -177, -172, -271, 1, 3, 4, 5, 26, 27, 29, + 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, + 54, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 88, 89, 92, 94, + 95, 96, 97, 98, 99, 100, 101, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 202, 206, 207, 208, 209, 210, 211, 212, 214, + 215, 216, 217, 220, 221, 223, 224, 225, 226, 227, + 228, 229, 230, 238, 244, 246, 247, 248, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 271, 272, 274, + 275, 276, 278, 312, 313, 314, 315, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, @@ -1450,65 +1535,66 @@ static const yytype_int16 yypact[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 358, 359, 360, 361, 362, 363, 364, -272, -272, - -272, -272, -272, -272, -272, -272, 365, 369, 373, 374, - 399, 400, -272, -272, -272, -272, -272, -272, -272, 401, - 403, 414, 415, 416, 417, 418, -272, -272, -272, -272, - -272, -272, -272, -272, 419, 420, 421, 422, 423, 424, - 425, 426, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 427, 428, 429, 430, 431, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, 432, 472, 474, - 490, 491, 492, 493, 494, -272, -272, -272, -272, -272, - -272, -272, -272, -272, 495, 496, 497, 498, 499, 500, - 507, 508, 509, 510, 511, 512, 513, 515, 516, 517, - 518, 519, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, 319, 320, 321, 363, 364, 365, 366, -272, + -272, -272, -272, -272, -272, -272, -272, 367, 368, 369, + 370, 371, 375, -272, -272, -272, -272, -272, -272, -272, + 379, 380, 405, 406, 407, 409, 420, -272, -272, -272, + -272, -272, -272, -272, -272, 421, 422, 423, 424, 425, + 426, 427, 428, -272, -272, -272, -272, -272, -272, -272, + -272, -272, 429, 430, 431, 432, 433, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, 434, 435, + 436, 437, 438, 478, 480, 496, -272, -272, -272, -272, + -272, -272, -272, -272, -272, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 513, 514, 515, 516, 517, + 518, 519, 521, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 520, -272, -272, 521, 524, 527, 530, 531, 540, - 541, 542, 544, 545, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 546, 547, 548, 549, 550, - 551, -272, -272, -272, -272, -272, -272, -272, 552, 553, + -272, -272, 522, -272, -272, -272, 523, -272, -272, -272, + 524, 525, 526, 527, 530, 533, 536, 537, 546, 547, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 548, 550, 551, 552, 553, 554, -272, -272, -272, + -272, -272, -272, -272, 555, 556, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, 557, + 558, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, 559, 560, 561, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, 562, + 563, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + 564, 565, 566, 567, 568, 569, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 570, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, 571, -272, -272, + 572, 573, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 554, 555, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - 556, 557, 558, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 559, 560, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, 561, 562, 563, 564, 565, 566, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, 567, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 568, -272, -272, 569, 570, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, 571, 572, 573, -272, -272, -272, - -272, -272, -272, -272, -272 + -272, 574, 575, 576, -272, -272, -272, -272, -272, -272, + -272, -272 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { - 2, 0, 1, 17, 18, 215, 225, 490, 548, 509, - 234, 557, 580, 244, 596, 260, 3, 16, 20, 217, - 227, 236, 246, 262, 492, 511, 550, 559, 582, 598, - 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, - 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 18, 215, 225, 490, 548, 509, 234, + 562, 585, 244, 601, 260, 553, 3, 20, 217, 227, + 236, 246, 262, 492, 511, 550, 555, 564, 587, 603, + 4, 5, 6, 10, 14, 15, 8, 9, 7, 0, + 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1527,73 +1613,74 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 21, 22, 85, - 88, 97, 185, 186, 23, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 36, 76, 24, 89, 90, - 47, 69, 84, 25, 26, 29, 30, 27, 28, 31, - 32, 33, 34, 35, 120, 197, 121, 123, 124, 125, - 199, 204, 200, 211, 212, 213, 214, 181, 86, 75, - 101, 118, 119, 209, 206, 122, 37, 38, 39, 40, - 41, 77, 91, 92, 107, 63, 73, 64, 189, 190, - 102, 57, 58, 188, 59, 60, 111, 115, 129, 138, - 164, 141, 210, 112, 70, 42, 43, 44, 99, 130, - 131, 132, 45, 46, 48, 49, 51, 52, 50, 136, - 53, 54, 55, 61, 80, 116, 94, 137, 87, 160, - 95, 96, 113, 114, 207, 100, 56, 78, 81, 62, - 65, 103, 104, 79, 161, 105, 66, 67, 68, 198, - 117, 174, 175, 176, 177, 178, 179, 187, 106, 74, - 108, 109, 110, 162, 71, 72, 93, 82, 83, 98, - 126, 127, 208, 128, 133, 134, 135, 165, 166, 168, - 170, 171, 169, 172, 182, 139, 140, 144, 145, 142, - 143, 146, 147, 149, 148, 201, 203, 202, 163, 173, - 191, 193, 192, 194, 195, 196, 167, 180, 183, 184, - 205, 0, 0, 0, 0, 0, 0, 0, 216, 218, - 219, 220, 222, 223, 224, 221, 0, 0, 0, 0, - 0, 0, 226, 228, 229, 230, 231, 232, 233, 0, - 0, 0, 0, 0, 0, 0, 235, 237, 238, 241, - 242, 239, 243, 240, 0, 0, 0, 0, 0, 0, - 0, 0, 245, 247, 248, 249, 250, 254, 251, 252, - 253, 0, 0, 0, 0, 0, 265, 269, 270, 271, - 272, 261, 263, 264, 266, 267, 268, 0, 0, 0, - 0, 0, 0, 0, 0, 491, 493, 495, 494, 500, - 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 21, 22, + 85, 88, 97, 185, 186, 23, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 36, 76, 24, 89, + 90, 47, 69, 84, 25, 26, 29, 30, 27, 28, + 31, 32, 33, 34, 35, 120, 197, 121, 123, 124, + 125, 199, 204, 200, 211, 212, 213, 214, 181, 86, + 75, 101, 118, 119, 209, 206, 122, 37, 38, 39, + 40, 41, 77, 91, 92, 107, 63, 73, 64, 189, + 190, 102, 57, 58, 188, 59, 60, 111, 115, 129, + 138, 164, 141, 210, 112, 70, 42, 43, 44, 99, + 130, 131, 132, 45, 46, 48, 49, 51, 52, 50, + 136, 53, 54, 55, 61, 80, 116, 94, 137, 87, + 160, 95, 96, 113, 114, 207, 100, 56, 78, 81, + 62, 65, 103, 104, 79, 161, 105, 66, 67, 68, + 198, 117, 174, 175, 176, 177, 178, 179, 187, 106, + 74, 108, 109, 110, 162, 71, 72, 93, 82, 83, + 98, 126, 127, 208, 128, 133, 134, 135, 165, 166, + 168, 170, 171, 169, 172, 182, 139, 140, 144, 145, + 142, 143, 146, 147, 149, 148, 201, 203, 202, 163, + 173, 191, 193, 192, 194, 195, 196, 167, 180, 183, + 184, 205, 0, 0, 0, 0, 0, 0, 0, 216, + 218, 219, 220, 222, 223, 224, 221, 0, 0, 0, + 0, 0, 0, 226, 228, 229, 230, 231, 232, 233, + 0, 0, 0, 0, 0, 0, 0, 235, 237, 238, + 241, 242, 239, 243, 240, 0, 0, 0, 0, 0, + 0, 0, 0, 245, 247, 248, 249, 250, 254, 251, + 252, 253, 0, 0, 0, 0, 0, 265, 269, 270, + 271, 272, 261, 263, 264, 266, 267, 268, 0, 0, + 0, 0, 0, 0, 0, 0, 491, 493, 495, 494, + 500, 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 510, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, - 529, 0, 549, 551, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 558, 560, 561, 562, 564, 565, - 563, 566, 567, 568, 569, 0, 0, 0, 0, 0, - 0, 581, 583, 584, 585, 586, 587, 588, 0, 0, - 597, 599, 600, 274, 273, 280, 293, 291, 303, 299, - 300, 304, 301, 302, 305, 306, 307, 308, 309, 332, - 333, 334, 335, 336, 361, 362, 363, 368, 369, 296, - 370, 371, 374, 372, 373, 376, 377, 378, 392, 347, - 348, 350, 351, 379, 395, 341, 343, 396, 402, 403, - 404, 297, 360, 420, 421, 342, 415, 325, 292, 337, - 393, 399, 380, 0, 0, 424, 298, 275, 324, 384, - 276, 294, 295, 338, 339, 422, 382, 386, 387, 277, - 425, 364, 391, 326, 346, 397, 398, 401, 414, 340, - 418, 416, 417, 352, 359, 388, 389, 353, 354, 381, - 406, 327, 328, 331, 310, 312, 313, 314, 315, 316, - 426, 427, 429, 365, 366, 367, 375, 430, 431, 432, - 0, 0, 0, 383, 355, 357, 553, 441, 445, 443, - 442, 446, 444, 0, 0, 449, 450, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 385, 400, 419, - 454, 455, 356, 433, 0, 0, 0, 0, 0, 0, - 407, 408, 409, 410, 411, 412, 413, 554, 349, 344, - 405, 323, 278, 279, 345, 456, 458, 457, 459, 460, - 461, 311, 318, 451, 453, 452, 317, 0, 330, 390, - 428, 329, 358, 319, 320, 322, 321, 462, 463, 464, - 468, 467, 465, 466, 469, 470, 471, 472, 474, 473, - 483, 0, 487, 488, 0, 0, 489, 475, 481, 476, - 477, 478, 480, 482, 479, 255, 256, 257, 258, 259, - 501, 503, 502, 505, 506, 507, 508, 504, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 552, 570, 571, 572, - 575, 573, 574, 576, 577, 578, 579, 589, 590, 591, - 592, 593, 594, 601, 602, 394, 423, 440, 555, 556, - 447, 448, 434, 435, 0, 0, 0, 439, 595, 484, - 485, 486, 438, 436, 437 + 0, 0, 0, 510, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 549, 551, 17, 0, 16, 554, 556, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 565, 566, 567, 569, 570, 568, 571, 572, 573, + 574, 0, 0, 0, 0, 0, 0, 586, 588, 589, + 590, 591, 592, 593, 0, 0, 602, 604, 605, 274, + 273, 280, 293, 291, 303, 299, 300, 304, 301, 302, + 305, 306, 307, 308, 309, 332, 333, 334, 335, 336, + 361, 362, 363, 368, 369, 296, 370, 371, 374, 372, + 373, 376, 377, 378, 392, 347, 348, 350, 351, 379, + 395, 341, 343, 396, 402, 403, 404, 297, 360, 420, + 421, 342, 415, 325, 292, 337, 393, 399, 380, 0, + 0, 424, 298, 275, 324, 384, 276, 294, 295, 338, + 339, 422, 382, 386, 387, 277, 425, 364, 391, 326, + 346, 397, 398, 401, 414, 340, 418, 416, 417, 352, + 359, 388, 389, 353, 354, 381, 406, 327, 328, 331, + 310, 312, 313, 314, 315, 316, 426, 427, 429, 365, + 366, 367, 375, 430, 431, 432, 0, 0, 0, 383, + 355, 357, 558, 441, 445, 443, 442, 446, 444, 0, + 0, 449, 450, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 385, 400, 419, 454, 455, 356, 433, + 0, 0, 0, 0, 0, 0, 407, 408, 409, 410, + 411, 412, 413, 559, 349, 344, 405, 323, 278, 279, + 345, 456, 458, 457, 459, 460, 461, 311, 318, 451, + 453, 452, 317, 0, 330, 390, 428, 329, 358, 319, + 320, 322, 321, 462, 463, 464, 468, 467, 465, 466, + 469, 470, 471, 472, 474, 473, 483, 0, 487, 488, + 0, 0, 489, 475, 481, 476, 477, 478, 480, 482, + 479, 255, 256, 257, 258, 259, 501, 503, 502, 505, + 506, 507, 508, 504, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 552, 557, 575, 576, 577, 580, 578, 579, + 581, 582, 583, 584, 594, 595, 596, 597, 598, 599, + 606, 607, 394, 423, 440, 560, 561, 447, 448, 434, + 435, 0, 0, 0, 439, 600, 484, 485, 486, 438, + 436, 437 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1621,8 +1708,8 @@ static const yytype_int16 yypgoto[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 574, - 575, 576, 577, 578, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, 577, + 578, 579, 580, 581, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, @@ -1630,23 +1717,209 @@ static const yytype_int16 yypgoto[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272 + -272, -272, -272, -272, -272, -272 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 16, 17, 18, 30, 236, 19, 31, 438, - 20, 32, 452, 21, 33, 466, 22, 34, 482, 496, - 497, 498, 499, 500, 23, 35, 501, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + -1, 1, 16, 567, 17, 30, 237, 18, 31, 439, + 19, 32, 453, 20, 33, 467, 21, 34, 483, 497, + 498, 499, 500, 501, 22, 35, 502, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 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, 440, 441, 442, 443, + 444, 445, 446, 454, 455, 456, 457, 458, 459, 484, + 485, 486, 487, 488, 489, 490, 491, 468, 469, 470, + 471, 472, 473, 474, 23, 36, 516, 517, 518, 519, + 520, 521, 522, 523, 524, 24, 37, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 558, 559, 560, 561, 25, 38, 563, 564, + 26, 39, 568, 569, 427, 428, 429, 430, 27, 40, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 28, 41, 597, 598, 599, 600, 601, 602, 603, + 431, 29, 42, 606, 607, 608 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int16 yytable[] = +{ + 2, 565, 475, 432, 460, 433, 434, 562, 447, 604, + 605, 609, 3, 610, 611, 612, 448, 449, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 613, 614, 475, 615, + 461, 462, 616, 617, 618, 619, 4, 620, 621, 622, + 623, 624, 5, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 625, 626, 463, 435, 508, 509, 510, + 511, 512, 513, 514, 515, 591, 592, 593, 594, 595, + 596, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 6, 436, 642, 643, + 437, 450, 644, 451, 645, 646, 647, 648, 649, 650, + 651, 652, 7, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 464, 465, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 690, 8, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, + 707, 708, 466, 709, 710, 711, 712, 713, 714, 715, + 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, + 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, + 746, 9, 747, 477, 478, 479, 748, 749, 750, 751, + 752, 753, 754, 482, 755, 756, 757, 758, 438, 10, + 759, 760, 452, 761, 762, 763, 764, 765, 766, 767, + 768, 492, 493, 494, 495, 496, 11, 476, 769, 477, + 478, 479, 480, 481, 770, 12, 771, 772, 773, 482, + 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, + 784, 785, 786, 787, 788, 789, 790, 791, 792, 13, + 566, 793, 794, 14, 795, 796, 797, 0, 798, 15, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 799, 800, 801, 802, 75, 76, 77, 803, + 804, 805, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 806, 807, 808, 809, 810, 811, 812, + 813, 814, 119, 120, 121, 815, 122, 123, 124, 816, + 817, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 818, 819, 820, 149, 821, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 832, 833, 834, 835, 836, 837, 838, 839, 840, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 841, 199, + 842, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 215, 216, 217, + 218, 219, 220, 854, 855, 856, 857, 858, 859, 860, + 221, 861, 862, 863, 864, 865, 866, 867, 222, 223, + 868, 224, 225, 869, 226, 227, 870, 871, 228, 229, + 230, 231, 232, 233, 234, 235, 872, 873, 874, 236, + 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 503, 504, 505, 506, 507 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 11, 45, 45, 45, 47, 48, 113, 45, 280, + 281, 10, 12, 10, 10, 10, 53, 54, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 10, 10, 45, 10, + 81, 82, 10, 10, 10, 10, 46, 10, 10, 10, + 10, 10, 52, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 10, 10, 106, 108, 97, 98, 99, + 100, 101, 102, 103, 104, 247, 248, 249, 250, 251, + 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 96, 139, 10, 10, + 142, 138, 10, 140, 10, 10, 10, 10, 10, 10, + 10, 10, 112, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 213, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 211, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 290, 10, 10, 283, 10, 10, 10, -1, 10, 289, + 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, 10, 10, 10, 10, 49, 50, 51, 10, + 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 105, 106, 107, 10, 109, 110, 111, 10, + 10, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 10, 10, 10, 141, 10, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 10, 212, + 10, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 240, 241, 242, + 243, 244, 245, 10, 10, 10, 10, 10, 10, 10, + 253, 10, 10, 10, 10, 10, 10, 10, 261, 262, + 10, 264, 265, 10, 267, 268, 10, 10, 271, 272, + 273, 274, 275, 276, 277, 278, 10, 10, 10, 282, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 35, 35, 35, 35, 35 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_int16 yystos[] = +{ + 0, 292, 0, 12, 46, 52, 96, 112, 153, 211, + 229, 246, 255, 279, 283, 289, 293, 295, 298, 301, + 304, 307, 315, 535, 546, 567, 571, 579, 592, 602, + 296, 299, 302, 305, 308, 316, 536, 547, 568, 572, + 580, 593, 603, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 49, 50, 51, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 105, + 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 141, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 240, 241, 242, 243, 244, + 245, 253, 261, 262, 264, 265, 267, 268, 271, 272, + 273, 274, 275, 276, 277, 278, 282, 297, 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, @@ -1657,219 +1930,33 @@ static const yytype_int16 yydefgoto[] = 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, 439, 440, 441, 442, - 443, 444, 445, 453, 454, 455, 456, 457, 458, 483, - 484, 485, 486, 487, 488, 489, 490, 467, 468, 469, - 470, 471, 472, 473, 24, 36, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 25, 37, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 26, 38, 562, 563, - 426, 427, 428, 429, 27, 39, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 28, 40, 591, - 592, 593, 594, 595, 596, 597, 430, 29, 41, 600, - 601, 602 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint16 yytable[] = -{ - 2, 474, 459, 431, 561, 432, 433, 603, 446, 598, - 599, 3, 4, 604, 605, 606, 447, 448, 585, 586, - 587, 588, 589, 590, 474, 564, 565, 566, 567, 568, - 569, 570, 571, 572, 573, 607, 608, 609, 460, 461, - 610, 611, 612, 613, 614, 615, 5, 616, 617, 618, - 619, 620, 6, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 462, 631, 632, 434, 524, 525, 526, - 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 507, 508, 509, 510, 511, - 512, 513, 514, 633, 634, 635, 7, 435, 636, 637, - 436, 449, 638, 450, 639, 640, 641, 642, 643, 644, - 645, 646, 8, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 463, 464, 664, 665, 666, 667, 668, 669, 670, 671, - 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 9, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, - 465, 701, 702, 703, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, - 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, - 740, 10, 476, 477, 478, 741, 742, 743, 744, 745, - 746, 747, 481, 748, 749, 750, 751, 752, 437, 11, - 753, 754, 451, 475, 755, 476, 477, 478, 479, 480, - 491, 492, 493, 494, 495, 481, 12, 756, 757, 758, - 759, 760, 761, 762, 763, 13, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 14, - 787, 0, 788, 15, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 789, 790, 791, 792, - 74, 75, 76, 793, 794, 795, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 118, 119, 120, 805, - 121, 122, 123, 806, 807, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 808, - 809, 810, 148, 811, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 812, 813, 814, 815, 816, 817, - 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, - 828, 829, 830, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 831, 198, 832, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 214, 215, 216, 217, 218, 219, 844, 845, 846, - 847, 848, 849, 850, 220, 851, 852, 853, 854, 855, - 856, 857, 221, 222, 858, 223, 224, 859, 225, 226, - 860, 861, 227, 228, 229, 230, 231, 232, 233, 234, - 862, 863, 864, 235, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, - 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 893, 894, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, - 503, 504, 505, 506 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 45, 45, 45, 113, 47, 48, 10, 45, 280, - 281, 11, 12, 10, 10, 10, 53, 54, 247, 248, - 249, 250, 251, 252, 45, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 10, 10, 10, 81, 82, - 10, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 106, 10, 10, 108, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 97, 98, 99, 100, 101, - 102, 103, 104, 10, 10, 10, 96, 139, 10, 10, - 142, 138, 10, 140, 10, 10, 10, 10, 10, 10, - 10, 10, 112, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 213, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 211, 256, 257, 258, 10, 10, 10, 10, 10, - 10, 10, 266, 10, 10, 10, 10, 10, 270, 229, - 10, 10, 269, 254, 10, 256, 257, 258, 259, 260, - 284, 285, 286, 287, 288, 266, 246, 10, 10, 10, - 10, 10, 10, 10, 10, 255, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, - 10, -1, 10, 283, 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, 10, 10, 10, 10, - 49, 50, 51, 10, 10, 10, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 105, 106, 107, 10, - 109, 110, 111, 10, 10, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 10, - 10, 10, 141, 10, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 10, 212, 10, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 240, 241, 242, 243, 244, 245, 10, 10, 10, - 10, 10, 10, 10, 253, 10, 10, 10, 10, 10, - 10, 10, 261, 262, 10, 264, 265, 10, 267, 268, - 10, 10, 271, 272, 273, 274, 275, 276, 277, 278, - 10, 10, 10, 282, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, - 35, 35, 35, 35 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 290, 0, 11, 12, 46, 52, 96, 112, 153, - 211, 229, 246, 255, 279, 283, 291, 292, 293, 296, - 299, 302, 305, 313, 533, 544, 565, 573, 586, 596, - 294, 297, 300, 303, 306, 314, 534, 545, 566, 574, - 587, 597, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 49, 50, 51, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 105, 106, - 107, 109, 110, 111, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 141, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 212, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 240, 241, 242, 243, 244, 245, - 253, 261, 262, 264, 265, 267, 268, 271, 272, 273, - 274, 275, 276, 277, 278, 282, 295, 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, 569, 570, 571, 572, - 595, 45, 47, 48, 108, 139, 142, 270, 298, 505, - 506, 507, 508, 509, 510, 511, 45, 53, 54, 138, - 140, 269, 301, 512, 513, 514, 515, 516, 517, 45, - 81, 82, 106, 173, 174, 213, 304, 526, 527, 528, - 529, 530, 531, 532, 45, 254, 256, 257, 258, 259, - 260, 266, 307, 518, 519, 520, 521, 522, 523, 524, - 525, 284, 285, 286, 287, 288, 308, 309, 310, 311, - 312, 315, 518, 519, 520, 521, 522, 97, 98, 99, - 100, 101, 102, 103, 104, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, - 564, 113, 567, 568, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 247, 248, 249, 250, 251, - 252, 588, 589, 590, 591, 592, 593, 594, 280, 281, - 598, 599, 600, 10, 10, 10, 10, 10, 10, 10, + 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, 575, 576, 577, + 578, 601, 45, 47, 48, 108, 139, 142, 270, 300, + 507, 508, 509, 510, 511, 512, 513, 45, 53, 54, + 138, 140, 269, 303, 514, 515, 516, 517, 518, 519, + 45, 81, 82, 106, 173, 174, 213, 306, 528, 529, + 530, 531, 532, 533, 534, 45, 254, 256, 257, 258, + 259, 260, 266, 309, 520, 521, 522, 523, 524, 525, + 526, 527, 284, 285, 286, 287, 288, 310, 311, 312, + 313, 314, 317, 520, 521, 522, 523, 524, 97, 98, + 99, 100, 101, 102, 103, 104, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 113, 569, 570, 11, 290, 294, 573, 574, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 247, 248, 249, 250, 251, 252, 594, 595, 596, + 597, 598, 599, 600, 280, 281, 604, 605, 606, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1898,80 +1985,81 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 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_uint16 yyr1[] = +static const yytype_int16 yyr1[] = { - 0, 289, 290, 290, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 292, 293, 294, - 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 296, 297, 297, 298, 298, - 298, 298, 298, 298, 298, 299, 300, 300, 301, 301, - 301, 301, 301, 301, 302, 303, 303, 304, 304, 304, - 304, 304, 304, 304, 305, 306, 306, 307, 307, 307, - 307, 307, 307, 307, 307, 308, 309, 310, 311, 312, - 313, 314, 314, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, - 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, - 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, - 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, - 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, - 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, - 533, 534, 534, 535, 535, 535, 535, 535, 535, 535, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 574, - 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 597, 598, - 598, 599, 600 + 0, 291, 292, 292, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 293, 293, 293, 294, 295, 296, + 296, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, + 297, 297, 297, 297, 297, 298, 299, 299, 300, 300, + 300, 300, 300, 300, 300, 301, 302, 302, 303, 303, + 303, 303, 303, 303, 304, 305, 305, 306, 306, 306, + 306, 306, 306, 306, 307, 308, 308, 309, 309, 309, + 309, 309, 309, 309, 309, 310, 311, 312, 313, 314, + 315, 316, 316, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 536, 537, 537, 537, 537, 537, 537, 537, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 547, 547, 548, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, + 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, + 568, 569, 570, 571, 572, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 580, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 593, 594, 594, + 594, 594, 594, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 603, 604, 604, 605, 606 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 3, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2025,12 +2113,12 @@ static const yytype_uint8 yyr2[] = 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, 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 + 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 }; @@ -2116,7 +2204,9 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2140,7 +2230,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2163,12 +2253,12 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) @@ -2220,13 +2310,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2262,12 +2352,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2298,10 +2388,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2314,19 +2404,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ + /* Actual size of YYARG. */ int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2354,6 +2444,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2378,7 +2470,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2405,7 +2498,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2435,8 +2530,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } else { - yyp++; - yyformat++; + ++yyp; + ++yyformat; } } return 0; @@ -2479,7 +2574,7 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2491,16 +2586,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYPTRDIFF_T yystacksize; int yyn; int yyresult; @@ -2514,7 +2609,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2546,12 +2641,14 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2559,23 +2656,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2589,9 +2686,10 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2605,8 +2703,10 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2672,14 +2772,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -2715,24 +2814,24 @@ yyreduce: switch (yyn) { case 17: -#line 190 "./util/configparser.y" - { +#line 191 "./util/configparser.y" + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2723 "util/configparser.c" +#line 2822 "util/configparser.c" break; case 18: -#line 195 "./util/configparser.y" - { +#line 196 "./util/configparser.y" + { OUTYY(("\nP(server:)\n")); } -#line 2731 "util/configparser.c" +#line 2830 "util/configparser.c" break; case 215: -#line 289 "./util/configparser.y" - { +#line 290 "./util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2742,12 +2841,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2746 "util/configparser.c" +#line 2845 "util/configparser.c" break; case 225: -#line 306 "./util/configparser.y" - { +#line 307 "./util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2757,12 +2856,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2761 "util/configparser.c" +#line 2860 "util/configparser.c" break; case 234: -#line 323 "./util/configparser.y" - { +#line 324 "./util/configparser.y" + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2774,12 +2873,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2778 "util/configparser.c" +#line 2877 "util/configparser.c" break; case 244: -#line 342 "./util/configparser.y" - { +#line 343 "./util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2794,12 +2893,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2798 "util/configparser.c" +#line 2897 "util/configparser.c" break; case 255: -#line 366 "./util/configparser.y" - { +#line 367 "./util/configparser.y" + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2815,12 +2914,12 @@ yyreduce: } } -#line 2819 "util/configparser.c" +#line 2918 "util/configparser.c" break; case 256: -#line 385 "./util/configparser.y" - { +#line 386 "./util/configparser.y" + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2834,44 +2933,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2838 "util/configparser.c" +#line 2937 "util/configparser.c" break; case 257: -#line 402 "./util/configparser.y" - { +#line 403 "./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 2848 "util/configparser.c" +#line 2947 "util/configparser.c" break; case 258: -#line 410 "./util/configparser.y" - { +#line 411 "./util/configparser.y" + { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2860 "util/configparser.c" +#line 2959 "util/configparser.c" break; case 259: -#line 420 "./util/configparser.y" - { +#line 421 "./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 2870 "util/configparser.c" +#line 2969 "util/configparser.c" break; case 260: -#line 428 "./util/configparser.y" - { +#line 429 "./util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2886,36 +2985,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2890 "util/configparser.c" +#line 2989 "util/configparser.c" break; case 273: -#line 451 "./util/configparser.y" - { +#line 452 "./util/configparser.y" + { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2902 "util/configparser.c" +#line 3001 "util/configparser.c" break; case 274: -#line 460 "./util/configparser.y" - { +#line 461 "./util/configparser.y" + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2914 "util/configparser.c" +#line 3013 "util/configparser.c" break; case 275: -#line 469 "./util/configparser.y" - { +#line 470 "./util/configparser.y" + { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; @@ -2924,48 +3023,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2928 "util/configparser.c" +#line 3027 "util/configparser.c" break; case 276: -#line 480 "./util/configparser.y" - { +#line 481 "./util/configparser.y" + { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2940 "util/configparser.c" +#line 3039 "util/configparser.c" break; case 277: -#line 489 "./util/configparser.y" - { +#line 490 "./util/configparser.y" + { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2952 "util/configparser.c" +#line 3051 "util/configparser.c" break; case 278: -#line 498 "./util/configparser.y" - { +#line 499 "./util/configparser.y" + { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2964 "util/configparser.c" +#line 3063 "util/configparser.c" break; case 279: -#line 507 "./util/configparser.y" - { +#line 508 "./util/configparser.y" + { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->shm_key = 0; @@ -2974,24 +3073,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2978 "util/configparser.c" +#line 3077 "util/configparser.c" break; case 280: -#line 518 "./util/configparser.y" - { +#line 519 "./util/configparser.y" + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2990 "util/configparser.c" +#line 3089 "util/configparser.c" break; case 281: -#line 527 "./util/configparser.y" - { +#line 528 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3001,12 +3100,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3005 "util/configparser.c" +#line 3104 "util/configparser.c" break; case 282: -#line 539 "./util/configparser.y" - { +#line 540 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3017,12 +3116,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3021 "util/configparser.c" +#line 3120 "util/configparser.c" break; case 283: -#line 553 "./util/configparser.y" - { +#line 554 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3035,12 +3134,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3039 "util/configparser.c" +#line 3138 "util/configparser.c" break; case 284: -#line 568 "./util/configparser.y" - { +#line 569 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3049,12 +3148,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3053 "util/configparser.c" +#line 3152 "util/configparser.c" break; case 285: -#line 579 "./util/configparser.y" - { +#line 580 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3069,12 +3168,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3073 "util/configparser.c" +#line 3172 "util/configparser.c" break; case 286: -#line 596 "./util/configparser.y" - { +#line 597 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3089,12 +3188,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3093 "util/configparser.c" +#line 3192 "util/configparser.c" break; case 287: -#line 613 "./util/configparser.y" - { +#line 614 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3109,12 +3208,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3113 "util/configparser.c" +#line 3212 "util/configparser.c" break; case 288: -#line 630 "./util/configparser.y" - { +#line 631 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3129,12 +3228,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3133 "util/configparser.c" +#line 3232 "util/configparser.c" break; case 289: -#line 647 "./util/configparser.y" - { +#line 648 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3147,12 +3246,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3151 "util/configparser.c" +#line 3250 "util/configparser.c" break; case 290: -#line 662 "./util/configparser.y" - { +#line 663 "./util/configparser.y" + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3165,12 +3264,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3169 "util/configparser.c" +#line 3268 "util/configparser.c" break; case 291: -#line 677 "./util/configparser.y" - { +#line 678 "./util/configparser.y" + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3181,12 +3280,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3185 "util/configparser.c" +#line 3284 "util/configparser.c" break; case 292: -#line 690 "./util/configparser.y" - { +#line 691 "./util/configparser.y" + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3199,180 +3298,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3203 "util/configparser.c" +#line 3302 "util/configparser.c" break; case 293: -#line 705 "./util/configparser.y" - { +#line 706 "./util/configparser.y" + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3215 "util/configparser.c" +#line 3314 "util/configparser.c" break; case 294: -#line 714 "./util/configparser.y" - { +#line 715 "./util/configparser.y" + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3227 "util/configparser.c" +#line 3326 "util/configparser.c" break; case 295: -#line 723 "./util/configparser.y" - { +#line 724 "./util/configparser.y" + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" +#line 3338 "util/configparser.c" break; case 296: -#line 732 "./util/configparser.y" - { +#line 733 "./util/configparser.y" + { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3251 "util/configparser.c" +#line 3350 "util/configparser.c" break; case 297: -#line 741 "./util/configparser.y" - { +#line 742 "./util/configparser.y" + { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3263 "util/configparser.c" +#line 3362 "util/configparser.c" break; case 298: -#line 750 "./util/configparser.y" - { +#line 751 "./util/configparser.y" + { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" +#line 3374 "util/configparser.c" break; case 299: -#line 759 "./util/configparser.y" - { +#line 760 "./util/configparser.y" + { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3287 "util/configparser.c" +#line 3386 "util/configparser.c" break; case 300: -#line 768 "./util/configparser.y" - { +#line 769 "./util/configparser.y" + { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3299 "util/configparser.c" +#line 3398 "util/configparser.c" break; case 301: -#line 777 "./util/configparser.y" - { +#line 778 "./util/configparser.y" + { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3311 "util/configparser.c" +#line 3410 "util/configparser.c" break; case 302: -#line 786 "./util/configparser.y" - { +#line 787 "./util/configparser.y" + { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3323 "util/configparser.c" +#line 3422 "util/configparser.c" break; case 303: -#line 795 "./util/configparser.y" - { +#line 796 "./util/configparser.y" + { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3335 "util/configparser.c" +#line 3434 "util/configparser.c" break; case 304: -#line 804 "./util/configparser.y" - { +#line 805 "./util/configparser.y" + { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3347 "util/configparser.c" +#line 3446 "util/configparser.c" break; case 305: -#line 813 "./util/configparser.y" - { +#line 814 "./util/configparser.y" + { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3359 "util/configparser.c" +#line 3458 "util/configparser.c" break; case 306: -#line 822 "./util/configparser.y" - { +#line 823 "./util/configparser.y" + { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3371 "util/configparser.c" +#line 3470 "util/configparser.c" break; case 307: -#line 831 "./util/configparser.y" - { +#line 832 "./util/configparser.y" + { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3383,24 +3482,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3387 "util/configparser.c" +#line 3486 "util/configparser.c" break; case 308: -#line 844 "./util/configparser.y" - { +#line 845 "./util/configparser.y" + { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3399 "util/configparser.c" +#line 3498 "util/configparser.c" break; case 309: -#line 853 "./util/configparser.y" - { +#line 854 "./util/configparser.y" + { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3411,180 +3510,180 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3415 "util/configparser.c" +#line 3514 "util/configparser.c" break; case 310: -#line 866 "./util/configparser.y" - { +#line 867 "./util/configparser.y" + { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3427 "util/configparser.c" +#line 3526 "util/configparser.c" break; case 311: -#line 875 "./util/configparser.y" - { +#line 876 "./util/configparser.y" + { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3439 "util/configparser.c" +#line 3538 "util/configparser.c" break; case 312: -#line 884 "./util/configparser.y" - { +#line 885 "./util/configparser.y" + { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3451 "util/configparser.c" +#line 3550 "util/configparser.c" break; case 313: -#line 893 "./util/configparser.y" - { +#line 894 "./util/configparser.y" + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3461 "util/configparser.c" +#line 3560 "util/configparser.c" break; case 314: -#line 900 "./util/configparser.y" - { +#line 901 "./util/configparser.y" + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3471 "util/configparser.c" +#line 3570 "util/configparser.c" break; case 315: -#line 907 "./util/configparser.y" - { +#line 908 "./util/configparser.y" + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3483 "util/configparser.c" +#line 3582 "util/configparser.c" break; case 316: -#line 916 "./util/configparser.y" - { +#line 917 "./util/configparser.y" + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3493 "util/configparser.c" +#line 3592 "util/configparser.c" break; case 317: -#line 923 "./util/configparser.y" - { +#line 924 "./util/configparser.y" + { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3604 "util/configparser.c" break; case 318: -#line 932 "./util/configparser.y" - { +#line 933 "./util/configparser.y" + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3516 "util/configparser.c" +#line 3615 "util/configparser.c" break; case 319: -#line 940 "./util/configparser.y" - { +#line 941 "./util/configparser.y" + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3526 "util/configparser.c" +#line 3625 "util/configparser.c" break; case 320: -#line 947 "./util/configparser.y" - { +#line 948 "./util/configparser.y" + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3536 "util/configparser.c" +#line 3635 "util/configparser.c" break; case 321: -#line 954 "./util/configparser.y" - { +#line 955 "./util/configparser.y" + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3547 "util/configparser.c" +#line 3646 "util/configparser.c" break; case 322: -#line 962 "./util/configparser.y" - { +#line 963 "./util/configparser.y" + { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3658 "util/configparser.c" break; case 323: -#line 971 "./util/configparser.y" - { +#line 972 "./util/configparser.y" + { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 3670 "util/configparser.c" break; case 324: -#line 980 "./util/configparser.y" - { +#line 981 "./util/configparser.y" + { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3583 "util/configparser.c" +#line 3682 "util/configparser.c" break; case 325: -#line 989 "./util/configparser.y" - { +#line 990 "./util/configparser.y" + { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3596,104 +3695,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3600 "util/configparser.c" +#line 3699 "util/configparser.c" break; case 326: -#line 1003 "./util/configparser.y" - { +#line 1004 "./util/configparser.y" + { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3612 "util/configparser.c" +#line 3711 "util/configparser.c" break; case 327: -#line 1012 "./util/configparser.y" - { +#line 1013 "./util/configparser.y" + { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3624 "util/configparser.c" +#line 3723 "util/configparser.c" break; case 328: -#line 1021 "./util/configparser.y" - { +#line 1022 "./util/configparser.y" + { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3636 "util/configparser.c" +#line 3735 "util/configparser.c" break; case 329: -#line 1030 "./util/configparser.y" - { +#line 1031 "./util/configparser.y" + { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3648 "util/configparser.c" +#line 3747 "util/configparser.c" break; case 330: -#line 1039 "./util/configparser.y" - { +#line 1040 "./util/configparser.y" + { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3660 "util/configparser.c" +#line 3759 "util/configparser.c" break; case 331: -#line 1048 "./util/configparser.y" - { +#line 1049 "./util/configparser.y" + { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3672 "util/configparser.c" +#line 3771 "util/configparser.c" break; case 332: -#line 1057 "./util/configparser.y" - { +#line 1058 "./util/configparser.y" + { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3682 "util/configparser.c" +#line 3781 "util/configparser.c" break; case 333: -#line 1064 "./util/configparser.y" - { +#line 1065 "./util/configparser.y" + { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3692 "util/configparser.c" +#line 3791 "util/configparser.c" break; case 334: -#line 1071 "./util/configparser.y" - { +#line 1072 "./util/configparser.y" + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3717,106 +3816,106 @@ yyreduce: } } } -#line 3721 "util/configparser.c" +#line 3820 "util/configparser.c" break; case 335: -#line 1097 "./util/configparser.y" - { +#line 1098 "./util/configparser.y" + { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3732 "util/configparser.c" +#line 3831 "util/configparser.c" break; case 336: -#line 1105 "./util/configparser.y" - { +#line 1106 "./util/configparser.y" + { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3742 "util/configparser.c" +#line 3841 "util/configparser.c" break; case 337: -#line 1112 "./util/configparser.y" - { +#line 1113 "./util/configparser.y" + { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3752 "util/configparser.c" +#line 3851 "util/configparser.c" break; case 338: -#line 1119 "./util/configparser.y" - { +#line 1120 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3762 "util/configparser.c" +#line 3861 "util/configparser.c" break; case 339: -#line 1126 "./util/configparser.y" - { +#line 1127 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3772 "util/configparser.c" +#line 3871 "util/configparser.c" break; case 340: -#line 1133 "./util/configparser.y" - { +#line 1134 "./util/configparser.y" + { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3783 "util/configparser.c" +#line 3882 "util/configparser.c" break; case 341: -#line 1141 "./util/configparser.y" - { +#line 1142 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3794 "util/configparser.c" +#line 3893 "util/configparser.c" break; case 342: -#line 1149 "./util/configparser.y" - { +#line 1150 "./util/configparser.y" + { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3805 "util/configparser.c" +#line 3904 "util/configparser.c" break; case 343: -#line 1157 "./util/configparser.y" - { +#line 1158 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3815 "util/configparser.c" +#line 3914 "util/configparser.c" break; case 344: -#line 1164 "./util/configparser.y" - { +#line 1165 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3825,12 +3924,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3829 "util/configparser.c" +#line 3928 "util/configparser.c" break; case 345: -#line 1175 "./util/configparser.y" - { +#line 1176 "./util/configparser.y" + { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3839,99 +3938,99 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3843 "util/configparser.c" +#line 3942 "util/configparser.c" break; case 346: -#line 1186 "./util/configparser.y" - { +#line 1187 "./util/configparser.y" + { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3853 "util/configparser.c" +#line 3952 "util/configparser.c" break; case 347: -#line 1193 "./util/configparser.y" - { +#line 1194 "./util/configparser.y" + { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3865 "util/configparser.c" +#line 3964 "util/configparser.c" break; case 348: -#line 1202 "./util/configparser.y" - { +#line 1203 "./util/configparser.y" + { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3877 "util/configparser.c" +#line 3976 "util/configparser.c" break; case 349: -#line 1211 "./util/configparser.y" - { +#line 1212 "./util/configparser.y" + { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3889 "util/configparser.c" +#line 3988 "util/configparser.c" break; case 350: -#line 1220 "./util/configparser.y" - { +#line 1221 "./util/configparser.y" + { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3899 "util/configparser.c" +#line 3998 "util/configparser.c" break; case 351: -#line 1227 "./util/configparser.y" - { +#line 1228 "./util/configparser.y" + { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3909 "util/configparser.c" +#line 4008 "util/configparser.c" break; case 352: -#line 1234 "./util/configparser.y" - { +#line 1235 "./util/configparser.y" + { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3920 "util/configparser.c" +#line 4019 "util/configparser.c" break; case 353: -#line 1242 "./util/configparser.y" - { +#line 1243 "./util/configparser.y" + { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" +#line 4030 "util/configparser.c" break; case 354: -#line 1250 "./util/configparser.y" +#line 1251 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3940,11 +4039,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 4043 "util/configparser.c" break; case 355: -#line 1260 "./util/configparser.y" +#line 1261 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3953,11 +4052,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 4056 "util/configparser.c" break; case 356: -#line 1270 "./util/configparser.y" +#line 1271 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3966,12 +4065,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3970 "util/configparser.c" +#line 4069 "util/configparser.c" break; case 357: -#line 1280 "./util/configparser.y" - { +#line 1281 "./util/configparser.y" + { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3983,23 +4082,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3987 "util/configparser.c" +#line 4086 "util/configparser.c" break; case 358: -#line 1294 "./util/configparser.y" - { +#line 1295 "./util/configparser.y" + { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3998 "util/configparser.c" +#line 4097 "util/configparser.c" break; case 359: -#line 1302 "./util/configparser.y" - { +#line 1303 "./util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4010,12 +4109,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4014 "util/configparser.c" +#line 4113 "util/configparser.c" break; case 360: -#line 1315 "./util/configparser.y" - { +#line 1316 "./util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4024,23 +4123,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" +#line 4127 "util/configparser.c" break; case 361: -#line 1326 "./util/configparser.y" - { +#line 1327 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4039 "util/configparser.c" +#line 4138 "util/configparser.c" break; case 362: -#line 1334 "./util/configparser.y" - { +#line 1335 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4051,48 +4150,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4055 "util/configparser.c" +#line 4154 "util/configparser.c" break; case 363: -#line 1347 "./util/configparser.y" - { +#line 1348 "./util/configparser.y" + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4067 "util/configparser.c" +#line 4166 "util/configparser.c" break; case 364: -#line 1356 "./util/configparser.y" - { +#line 1357 "./util/configparser.y" + { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4079 "util/configparser.c" +#line 4178 "util/configparser.c" break; case 365: -#line 1365 "./util/configparser.y" - { +#line 1366 "./util/configparser.y" + { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4190 "util/configparser.c" break; case 366: -#line 1374 "./util/configparser.y" - { +#line 1375 "./util/configparser.y" + { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4100,12 +4199,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4203 "util/configparser.c" break; case 367: -#line 1384 "./util/configparser.y" - { +#line 1385 "./util/configparser.y" + { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4113,23 +4212,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4117 "util/configparser.c" +#line 4216 "util/configparser.c" break; case 368: -#line 1394 "./util/configparser.y" - { +#line 1395 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4128 "util/configparser.c" +#line 4227 "util/configparser.c" break; case 369: -#line 1402 "./util/configparser.y" - { +#line 1403 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4140,58 +4239,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4144 "util/configparser.c" +#line 4243 "util/configparser.c" break; case 370: -#line 1415 "./util/configparser.y" - { +#line 1416 "./util/configparser.y" + { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4156 "util/configparser.c" +#line 4255 "util/configparser.c" break; case 371: -#line 1424 "./util/configparser.y" - { +#line 1425 "./util/configparser.y" + { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4167 "util/configparser.c" +#line 4266 "util/configparser.c" break; case 372: -#line 1432 "./util/configparser.y" - { +#line 1433 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4179 "util/configparser.c" +#line 4278 "util/configparser.c" break; case 373: -#line 1441 "./util/configparser.y" - { +#line 1442 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4190 "util/configparser.c" +#line 4289 "util/configparser.c" break; case 374: -#line 1449 "./util/configparser.y" - { +#line 1450 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4202,34 +4301,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4206 "util/configparser.c" +#line 4305 "util/configparser.c" break; case 375: -#line 1462 "./util/configparser.y" - { +#line 1463 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4218 "util/configparser.c" +#line 4317 "util/configparser.c" break; case 376: -#line 1471 "./util/configparser.y" - { +#line 1472 "./util/configparser.y" + { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4228 "util/configparser.c" +#line 4327 "util/configparser.c" break; case 377: -#line 1478 "./util/configparser.y" - { +#line 1479 "./util/configparser.y" + { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4237,12 +4336,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4241 "util/configparser.c" +#line 4340 "util/configparser.c" break; case 378: -#line 1488 "./util/configparser.y" - { +#line 1489 "./util/configparser.y" + { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4250,12 +4349,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4254 "util/configparser.c" +#line 4353 "util/configparser.c" break; case 379: -#line 1498 "./util/configparser.y" - { +#line 1499 "./util/configparser.y" + { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4263,12 +4362,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4366 "util/configparser.c" break; case 380: -#line 1508 "./util/configparser.y" - { +#line 1509 "./util/configparser.y" + { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4276,12 +4375,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4379 "util/configparser.c" break; case 381: -#line 1518 "./util/configparser.y" - { +#line 1519 "./util/configparser.y" + { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4289,12 +4388,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4392 "util/configparser.c" break; case 382: -#line 1528 "./util/configparser.y" - { +#line 1529 "./util/configparser.y" + { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4302,12 +4401,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4405 "util/configparser.c" break; case 383: -#line 1538 "./util/configparser.y" - { +#line 1539 "./util/configparser.y" + { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4315,12 +4414,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4319 "util/configparser.c" +#line 4418 "util/configparser.c" break; case 384: -#line 1548 "./util/configparser.y" - { +#line 1549 "./util/configparser.y" + { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4328,100 +4427,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4332 "util/configparser.c" +#line 4431 "util/configparser.c" break; case 385: -#line 1558 "./util/configparser.y" - { +#line 1559 "./util/configparser.y" + { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4342 "util/configparser.c" +#line 4441 "util/configparser.c" break; case 386: -#line 1565 "./util/configparser.y" - { +#line 1566 "./util/configparser.y" + { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4352 "util/configparser.c" +#line 4451 "util/configparser.c" break; case 387: -#line 1572 "./util/configparser.y" - { +#line 1573 "./util/configparser.y" + { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4362 "util/configparser.c" +#line 4461 "util/configparser.c" break; case 388: -#line 1579 "./util/configparser.y" - { +#line 1580 "./util/configparser.y" + { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4374 "util/configparser.c" +#line 4473 "util/configparser.c" break; case 389: -#line 1588 "./util/configparser.y" - { +#line 1589 "./util/configparser.y" + { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4386 "util/configparser.c" +#line 4485 "util/configparser.c" break; case 390: -#line 1597 "./util/configparser.y" - { +#line 1598 "./util/configparser.y" + { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4398 "util/configparser.c" +#line 4497 "util/configparser.c" break; case 391: -#line 1606 "./util/configparser.y" - { +#line 1607 "./util/configparser.y" + { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4410 "util/configparser.c" +#line 4509 "util/configparser.c" break; case 392: -#line 1615 "./util/configparser.y" - { +#line 1616 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4420 "util/configparser.c" +#line 4519 "util/configparser.c" break; case 393: -#line 1622 "./util/configparser.y" - { +#line 1623 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4429,12 +4528,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4433 "util/configparser.c" +#line 4532 "util/configparser.c" break; case 394: -#line 1632 "./util/configparser.y" - { +#line 1633 "./util/configparser.y" + { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "deny_non_local")!=0 && @@ -4452,22 +4551,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4456 "util/configparser.c" +#line 4555 "util/configparser.c" break; case 395: -#line 1652 "./util/configparser.y" - { +#line 1653 "./util/configparser.y" + { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4466 "util/configparser.c" +#line 4565 "util/configparser.c" break; case 396: -#line 1659 "./util/configparser.y" - { +#line 1660 "./util/configparser.y" + { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; @@ -4483,12 +4582,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4487 "util/configparser.c" +#line 4586 "util/configparser.c" break; case 397: -#line 1677 "./util/configparser.y" - { +#line 1678 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4499,12 +4598,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4503 "util/configparser.c" +#line 4602 "util/configparser.c" break; case 398: -#line 1690 "./util/configparser.y" - { +#line 1691 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4515,60 +4614,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4519 "util/configparser.c" +#line 4618 "util/configparser.c" break; case 399: -#line 1703 "./util/configparser.y" - { +#line 1704 "./util/configparser.y" + { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4531 "util/configparser.c" +#line 4630 "util/configparser.c" break; case 400: -#line 1712 "./util/configparser.y" - { +#line 1713 "./util/configparser.y" + { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4543 "util/configparser.c" +#line 4642 "util/configparser.c" break; case 401: -#line 1721 "./util/configparser.y" - { +#line 1722 "./util/configparser.y" + { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4555 "util/configparser.c" +#line 4654 "util/configparser.c" break; case 402: -#line 1730 "./util/configparser.y" - { +#line 1731 "./util/configparser.y" + { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4666 "util/configparser.c" break; case 403: -#line 1739 "./util/configparser.y" - { +#line 1740 "./util/configparser.y" + { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4576,12 +4675,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4580 "util/configparser.c" +#line 4679 "util/configparser.c" break; case 404: -#line 1749 "./util/configparser.y" - { +#line 1750 "./util/configparser.y" + { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4589,12 +4688,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 4692 "util/configparser.c" break; case 405: -#line 1759 "./util/configparser.y" - { +#line 1760 "./util/configparser.y" + { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4603,84 +4702,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4607 "util/configparser.c" +#line 4706 "util/configparser.c" break; case 406: -#line 1770 "./util/configparser.y" - { +#line 1771 "./util/configparser.y" + { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4619 "util/configparser.c" +#line 4718 "util/configparser.c" break; case 407: -#line 1779 "./util/configparser.y" - { +#line 1780 "./util/configparser.y" + { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4631 "util/configparser.c" +#line 4730 "util/configparser.c" break; case 408: -#line 1788 "./util/configparser.y" - { +#line 1789 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4643 "util/configparser.c" +#line 4742 "util/configparser.c" break; case 409: -#line 1797 "./util/configparser.y" - { +#line 1798 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4655 "util/configparser.c" +#line 4754 "util/configparser.c" break; case 410: -#line 1806 "./util/configparser.y" - { +#line 1807 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4667 "util/configparser.c" +#line 4766 "util/configparser.c" break; case 411: -#line 1815 "./util/configparser.y" - { +#line 1816 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4679 "util/configparser.c" +#line 4778 "util/configparser.c" break; case 412: -#line 1824 "./util/configparser.y" - { +#line 1825 "./util/configparser.y" + { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4691,12 +4790,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4695 "util/configparser.c" +#line 4794 "util/configparser.c" break; case 413: -#line 1837 "./util/configparser.y" - { +#line 1838 "./util/configparser.y" + { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4707,70 +4806,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4711 "util/configparser.c" +#line 4810 "util/configparser.c" break; case 414: -#line 1850 "./util/configparser.y" - { +#line 1851 "./util/configparser.y" + { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4723 "util/configparser.c" +#line 4822 "util/configparser.c" break; case 415: -#line 1859 "./util/configparser.y" - { +#line 1860 "./util/configparser.y" + { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4733 "util/configparser.c" +#line 4832 "util/configparser.c" break; case 416: -#line 1866 "./util/configparser.y" - { +#line 1867 "./util/configparser.y" + { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4745 "util/configparser.c" +#line 4844 "util/configparser.c" break; case 417: -#line 1875 "./util/configparser.y" - { +#line 1876 "./util/configparser.y" + { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4757 "util/configparser.c" +#line 4856 "util/configparser.c" break; case 418: -#line 1884 "./util/configparser.y" - { +#line 1885 "./util/configparser.y" + { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4868 "util/configparser.c" break; case 419: -#line 1893 "./util/configparser.y" - { +#line 1894 "./util/configparser.y" + { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4778,23 +4877,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4782 "util/configparser.c" +#line 4881 "util/configparser.c" break; case 420: -#line 1902 "./util/configparser.y" - { +#line 1903 "./util/configparser.y" + { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4793 "util/configparser.c" +#line 4892 "util/configparser.c" break; case 421: -#line 1910 "./util/configparser.y" - { +#line 1911 "./util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4805,23 +4904,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4809 "util/configparser.c" +#line 4908 "util/configparser.c" break; case 422: -#line 1923 "./util/configparser.y" - { +#line 1924 "./util/configparser.y" + { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4820 "util/configparser.c" +#line 4919 "util/configparser.c" break; case 423: -#line 1931 "./util/configparser.y" - { +#line 1932 "./util/configparser.y" + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -4860,22 +4959,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4864 "util/configparser.c" +#line 4963 "util/configparser.c" break; case 424: -#line 1972 "./util/configparser.y" - { +#line 1973 "./util/configparser.y" + { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4874 "util/configparser.c" +#line 4973 "util/configparser.c" break; case 425: -#line 1979 "./util/configparser.y" - { +#line 1980 "./util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -4888,12 +4987,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4892 "util/configparser.c" +#line 4991 "util/configparser.c" break; case 426: -#line 1994 "./util/configparser.y" - { +#line 1995 "./util/configparser.y" + { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4901,12 +5000,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4905 "util/configparser.c" +#line 5004 "util/configparser.c" break; case 427: -#line 2004 "./util/configparser.y" - { +#line 2005 "./util/configparser.y" + { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4914,65 +5013,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4918 "util/configparser.c" +#line 5017 "util/configparser.c" break; case 428: -#line 2014 "./util/configparser.y" - { +#line 2015 "./util/configparser.y" + { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4928 "util/configparser.c" +#line 5027 "util/configparser.c" break; case 429: -#line 2021 "./util/configparser.y" - { +#line 2022 "./util/configparser.y" + { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4938 "util/configparser.c" +#line 5037 "util/configparser.c" break; case 430: -#line 2028 "./util/configparser.y" - { +#line 2029 "./util/configparser.y" + { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4948 "util/configparser.c" +#line 5047 "util/configparser.c" break; case 431: -#line 2035 "./util/configparser.y" - { +#line 2036 "./util/configparser.y" + { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4960 "util/configparser.c" +#line 5059 "util/configparser.c" break; case 432: -#line 2044 "./util/configparser.y" - { +#line 2045 "./util/configparser.y" + { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4971 "util/configparser.c" +#line 5070 "util/configparser.c" break; case 433: -#line 2052 "./util/configparser.y" - { +#line 2053 "./util/configparser.y" + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -4984,12 +5083,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4988 "util/configparser.c" +#line 5087 "util/configparser.c" break; case 434: -#line 2066 "./util/configparser.y" - { +#line 2067 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5008,12 +5107,12 @@ yyreduce: } } } -#line 5012 "util/configparser.c" +#line 5111 "util/configparser.c" break; case 435: -#line 2087 "./util/configparser.y" - { +#line 2088 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5032,12 +5131,12 @@ yyreduce: } } } -#line 5036 "util/configparser.c" +#line 5135 "util/configparser.c" break; case 436: -#line 2108 "./util/configparser.y" - { +#line 2109 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5047,12 +5146,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5051 "util/configparser.c" +#line 5150 "util/configparser.c" break; case 437: -#line 2120 "./util/configparser.y" - { +#line 2121 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5062,12 +5161,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5066 "util/configparser.c" +#line 5165 "util/configparser.c" break; case 438: -#line 2132 "./util/configparser.y" - { +#line 2133 "./util/configparser.y" + { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5077,24 +5176,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5081 "util/configparser.c" +#line 5180 "util/configparser.c" break; case 439: -#line 2144 "./util/configparser.y" - { +#line 2145 "./util/configparser.y" + { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5093 "util/configparser.c" +#line 5192 "util/configparser.c" break; case 440: -#line 2153 "./util/configparser.y" - { +#line 2154 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5113,58 +5212,58 @@ yyreduce: } } } -#line 5117 "util/configparser.c" +#line 5216 "util/configparser.c" break; case 441: -#line 2174 "./util/configparser.y" - { +#line 2175 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5129 "util/configparser.c" +#line 5228 "util/configparser.c" break; case 442: -#line 2184 "./util/configparser.y" - { +#line 2185 "./util/configparser.y" + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5141 "util/configparser.c" +#line 5240 "util/configparser.c" break; case 443: -#line 2193 "./util/configparser.y" - { +#line 2194 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5152 "util/configparser.c" +#line 5251 "util/configparser.c" break; case 444: -#line 2201 "./util/configparser.y" - { +#line 2202 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5163 "util/configparser.c" +#line 5262 "util/configparser.c" break; case 445: -#line 2209 "./util/configparser.y" - { +#line 2210 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5175,12 +5274,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5179 "util/configparser.c" +#line 5278 "util/configparser.c" break; case 446: -#line 2222 "./util/configparser.y" - { +#line 2223 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5191,12 +5290,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5195 "util/configparser.c" +#line 5294 "util/configparser.c" break; case 447: -#line 2235 "./util/configparser.y" - { +#line 2236 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5209,12 +5308,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5213 "util/configparser.c" +#line 5312 "util/configparser.c" break; case 448: -#line 2250 "./util/configparser.y" - { +#line 2251 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5227,69 +5326,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5231 "util/configparser.c" +#line 5330 "util/configparser.c" break; case 449: -#line 2265 "./util/configparser.y" - { +#line 2266 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5243 "util/configparser.c" +#line 5342 "util/configparser.c" break; case 450: -#line 2274 "./util/configparser.y" - { +#line 2275 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5255 "util/configparser.c" +#line 5354 "util/configparser.c" break; case 451: -#line 2283 "./util/configparser.y" - { +#line 2284 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5264 "util/configparser.c" +#line 5363 "util/configparser.c" break; case 452: -#line 2289 "./util/configparser.y" - { +#line 2290 "./util/configparser.y" + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5276 "util/configparser.c" +#line 5375 "util/configparser.c" break; case 453: -#line 2298 "./util/configparser.y" - { +#line 2299 "./util/configparser.y" + { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5387 "util/configparser.c" break; case 454: -#line 2307 "./util/configparser.y" - { +#line 2308 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5297,12 +5396,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5400 "util/configparser.c" break; case 455: -#line 2317 "./util/configparser.y" - { +#line 2318 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5310,12 +5409,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5314 "util/configparser.c" +#line 5413 "util/configparser.c" break; case 456: -#line 2327 "./util/configparser.y" - { +#line 2328 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5326,12 +5425,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5330 "util/configparser.c" +#line 5429 "util/configparser.c" break; case 457: -#line 2340 "./util/configparser.y" - { +#line 2341 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5342,12 +5441,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5346 "util/configparser.c" +#line 5445 "util/configparser.c" break; case 458: -#line 2353 "./util/configparser.y" - { +#line 2354 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5357,12 +5456,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5361 "util/configparser.c" +#line 5460 "util/configparser.c" break; case 459: -#line 2365 "./util/configparser.y" - { +#line 2366 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5374,12 +5473,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5378 "util/configparser.c" +#line 5477 "util/configparser.c" break; case 460: -#line 2379 "./util/configparser.y" - { +#line 2380 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5389,12 +5488,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5393 "util/configparser.c" +#line 5492 "util/configparser.c" break; case 461: -#line 2391 "./util/configparser.y" - { +#line 2392 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5406,12 +5505,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5410 "util/configparser.c" +#line 5509 "util/configparser.c" break; case 462: -#line 2405 "./util/configparser.y" - { +#line 2406 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5419,56 +5518,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5423 "util/configparser.c" +#line 5522 "util/configparser.c" break; case 463: -#line 2415 "./util/configparser.y" - { +#line 2416 "./util/configparser.y" + { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5433 "util/configparser.c" +#line 5532 "util/configparser.c" break; case 464: -#line 2422 "./util/configparser.y" - { +#line 2423 "./util/configparser.y" + { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5443 "util/configparser.c" +#line 5542 "util/configparser.c" break; case 465: -#line 2429 "./util/configparser.y" - { +#line 2430 "./util/configparser.y" + { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5455 "util/configparser.c" +#line 5554 "util/configparser.c" break; case 466: -#line 2438 "./util/configparser.y" - { +#line 2439 "./util/configparser.y" + { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5566 "util/configparser.c" break; case 467: -#line 2447 "./util/configparser.y" - { +#line 2448 "./util/configparser.y" + { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5476,12 +5575,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5579 "util/configparser.c" break; case 468: -#line 2457 "./util/configparser.y" - { +#line 2458 "./util/configparser.y" + { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5489,12 +5588,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5493 "util/configparser.c" +#line 5592 "util/configparser.c" break; case 469: -#line 2467 "./util/configparser.y" - { +#line 2468 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5502,56 +5601,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5506 "util/configparser.c" +#line 5605 "util/configparser.c" break; case 470: -#line 2477 "./util/configparser.y" - { +#line 2478 "./util/configparser.y" + { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5516 "util/configparser.c" +#line 5615 "util/configparser.c" break; case 471: -#line 2484 "./util/configparser.y" - { +#line 2485 "./util/configparser.y" + { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5526 "util/configparser.c" +#line 5625 "util/configparser.c" break; case 472: -#line 2491 "./util/configparser.y" - { +#line 2492 "./util/configparser.y" + { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5538 "util/configparser.c" +#line 5637 "util/configparser.c" break; case 473: -#line 2500 "./util/configparser.y" - { +#line 2501 "./util/configparser.y" + { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5649 "util/configparser.c" break; case 474: -#line 2509 "./util/configparser.y" - { +#line 2510 "./util/configparser.y" + { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5559,12 +5658,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5563 "util/configparser.c" +#line 5662 "util/configparser.c" break; case 475: -#line 2519 "./util/configparser.y" - { +#line 2520 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5572,53 +5671,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5576 "util/configparser.c" +#line 5675 "util/configparser.c" break; case 476: -#line 2529 "./util/configparser.y" - { +#line 2530 "./util/configparser.y" + { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5586 "util/configparser.c" +#line 5685 "util/configparser.c" break; case 477: -#line 2536 "./util/configparser.y" - { +#line 2537 "./util/configparser.y" + { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5596 "util/configparser.c" +#line 5695 "util/configparser.c" break; case 478: -#line 2543 "./util/configparser.y" - { +#line 2544 "./util/configparser.y" + { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5606 "util/configparser.c" +#line 5705 "util/configparser.c" break; case 479: -#line 2550 "./util/configparser.y" - { +#line 2551 "./util/configparser.y" + { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5617 "util/configparser.c" +#line 5716 "util/configparser.c" break; case 480: -#line 2558 "./util/configparser.y" - { +#line 2559 "./util/configparser.y" + { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5626,12 +5725,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 5729 "util/configparser.c" break; case 481: -#line 2568 "./util/configparser.y" - { +#line 2569 "./util/configparser.y" + { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5639,12 +5738,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5643 "util/configparser.c" +#line 5742 "util/configparser.c" break; case 482: -#line 2578 "./util/configparser.y" - { +#line 2579 "./util/configparser.y" + { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5652,12 +5751,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" +#line 5755 "util/configparser.c" break; case 483: -#line 2588 "./util/configparser.y" - { +#line 2589 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5665,12 +5764,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5669 "util/configparser.c" +#line 5768 "util/configparser.c" break; case 484: -#line 2598 "./util/configparser.y" - { +#line 2599 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5707,12 +5806,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5711 "util/configparser.c" +#line 5810 "util/configparser.c" break; case 485: -#line 2637 "./util/configparser.y" - { +#line 2638 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5720,34 +5819,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5724 "util/configparser.c" +#line 5823 "util/configparser.c" break; case 486: -#line 2647 "./util/configparser.y" - { +#line 2648 "./util/configparser.y" + { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5735 "util/configparser.c" +#line 5834 "util/configparser.c" break; case 487: -#line 2655 "./util/configparser.y" - { +#line 2656 "./util/configparser.y" + { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5746 "util/configparser.c" +#line 5845 "util/configparser.c" break; case 488: -#line 2663 "./util/configparser.y" - { +#line 2664 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5760,32 +5859,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5764 "util/configparser.c" +#line 5863 "util/configparser.c" break; case 489: -#line 2678 "./util/configparser.y" - { +#line 2679 "./util/configparser.y" + { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5776 "util/configparser.c" +#line 5875 "util/configparser.c" break; case 490: -#line 2687 "./util/configparser.y" - { +#line 2688 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 5784 "util/configparser.c" +#line 5883 "util/configparser.c" break; case 501: -#line 2698 "./util/configparser.y" - { +#line 2699 "./util/configparser.y" + { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5793,220 +5892,220 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5797 "util/configparser.c" +#line 5896 "util/configparser.c" break; case 502: -#line 2708 "./util/configparser.y" - { +#line 2709 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5908 "util/configparser.c" break; case 503: -#line 2717 "./util/configparser.y" - { +#line 2718 "./util/configparser.y" + { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5819 "util/configparser.c" +#line 5918 "util/configparser.c" break; case 504: -#line 2724 "./util/configparser.y" - { +#line 2725 "./util/configparser.y" + { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5829 "util/configparser.c" +#line 5928 "util/configparser.c" break; case 505: -#line 2731 "./util/configparser.y" - { +#line 2732 "./util/configparser.y" + { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5839 "util/configparser.c" +#line 5938 "util/configparser.c" break; case 506: -#line 2738 "./util/configparser.y" - { +#line 2739 "./util/configparser.y" + { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5849 "util/configparser.c" +#line 5948 "util/configparser.c" break; case 507: -#line 2745 "./util/configparser.y" - { +#line 2746 "./util/configparser.y" + { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5859 "util/configparser.c" +#line 5958 "util/configparser.c" break; case 508: -#line 2752 "./util/configparser.y" - { +#line 2753 "./util/configparser.y" + { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5869 "util/configparser.c" +#line 5968 "util/configparser.c" break; case 509: -#line 2759 "./util/configparser.y" - { +#line 2760 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 5877 "util/configparser.c" +#line 5976 "util/configparser.c" break; case 530: -#line 2779 "./util/configparser.y" - { +#line 2780 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5889 "util/configparser.c" +#line 5988 "util/configparser.c" break; case 531: -#line 2788 "./util/configparser.y" - { +#line 2789 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5899 "util/configparser.c" +#line 5998 "util/configparser.c" break; case 532: -#line 2795 "./util/configparser.y" - { +#line 2796 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 5909 "util/configparser.c" +#line 6008 "util/configparser.c" break; case 533: -#line 2802 "./util/configparser.y" - { +#line 2803 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5921 "util/configparser.c" +#line 6020 "util/configparser.c" break; case 534: -#line 2811 "./util/configparser.y" - { +#line 2812 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 5931 "util/configparser.c" +#line 6030 "util/configparser.c" break; case 535: -#line 2818 "./util/configparser.y" - { +#line 2819 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 5941 "util/configparser.c" +#line 6040 "util/configparser.c" break; case 536: -#line 2825 "./util/configparser.y" - { +#line 2826 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 5951 "util/configparser.c" +#line 6050 "util/configparser.c" break; case 537: -#line 2832 "./util/configparser.y" - { +#line 2833 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 5961 "util/configparser.c" +#line 6060 "util/configparser.c" break; case 538: -#line 2839 "./util/configparser.y" - { +#line 2840 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5973 "util/configparser.c" +#line 6072 "util/configparser.c" break; case 539: -#line 2848 "./util/configparser.y" - { +#line 2849 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5985 "util/configparser.c" +#line 6084 "util/configparser.c" break; case 540: -#line 2857 "./util/configparser.y" - { +#line 2858 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 5995 "util/configparser.c" +#line 6094 "util/configparser.c" break; case 541: -#line 2864 "./util/configparser.y" - { +#line 2865 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6005 "util/configparser.c" +#line 6104 "util/configparser.c" break; case 542: -#line 2871 "./util/configparser.y" - { +#line 2872 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6014,12 +6113,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6018 "util/configparser.c" +#line 6117 "util/configparser.c" break; case 543: -#line 2881 "./util/configparser.y" - { +#line 2882 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6027,12 +6126,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6130 "util/configparser.c" break; case 544: -#line 2891 "./util/configparser.y" - { +#line 2892 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6040,12 +6139,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6044 "util/configparser.c" +#line 6143 "util/configparser.c" break; case 545: -#line 2901 "./util/configparser.y" - { +#line 2902 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6053,12 +6152,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 6156 "util/configparser.c" break; case 546: -#line 2911 "./util/configparser.y" - { +#line 2912 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6066,12 +6165,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6070 "util/configparser.c" +#line 6169 "util/configparser.c" break; case 547: -#line 2921 "./util/configparser.y" - { +#line 2922 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6079,30 +6178,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6083 "util/configparser.c" +#line 6182 "util/configparser.c" break; case 548: -#line 2931 "./util/configparser.y" - { +#line 2932 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6091 "util/configparser.c" +#line 6190 "util/configparser.c" break; case 552: -#line 2940 "./util/configparser.y" - { +#line 2941 "./util/configparser.y" + { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6101 "util/configparser.c" +#line 6200 "util/configparser.c" break; case 553: -#line 2946 "./util/configparser.y" - { +#line 2947 "./util/configparser.y" + { + OUTYY(("\nP(dynlib:)\n")); + } +#line 6208 "util/configparser.c" + break; + + case 557: +#line 2956 "./util/configparser.y" + { + OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 6218 "util/configparser.c" + break; + + case 558: +#line 2962 "./util/configparser.y" + { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6110,132 +6227,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6114 "util/configparser.c" +#line 6231 "util/configparser.c" break; - case 554: -#line 2956 "./util/configparser.y" - { + case 559: +#line 2972 "./util/configparser.y" + { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 555: -#line 2963 "./util/configparser.y" - { + case 560: +#line 2979 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6136 "util/configparser.c" +#line 6253 "util/configparser.c" break; - case 556: -#line 2972 "./util/configparser.y" - { + case 561: +#line 2988 "./util/configparser.y" + { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6147 "util/configparser.c" +#line 6264 "util/configparser.c" break; - case 557: -#line 2980 "./util/configparser.y" - { + case 562: +#line 2996 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6155 "util/configparser.c" +#line 6272 "util/configparser.c" break; - case 570: -#line 2996 "./util/configparser.y" - { + case 575: +#line 3012 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6167 "util/configparser.c" +#line 6284 "util/configparser.c" break; - case 571: -#line 3006 "./util/configparser.y" - { + case 576: +#line 3022 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6179 "util/configparser.c" +#line 6296 "util/configparser.c" break; - case 572: -#line 3015 "./util/configparser.y" - { + case 577: +#line 3031 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6189 "util/configparser.c" +#line 6306 "util/configparser.c" break; - case 573: -#line 3022 "./util/configparser.y" - { + case 578: +#line 3038 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6201 "util/configparser.c" +#line 6318 "util/configparser.c" break; - case 574: -#line 3031 "./util/configparser.y" - { + case 579: +#line 3047 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6211 "util/configparser.c" +#line 6328 "util/configparser.c" break; - case 575: -#line 3038 "./util/configparser.y" - { + case 580: +#line 3054 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6223 "util/configparser.c" +#line 6340 "util/configparser.c" break; - case 576: -#line 3047 "./util/configparser.y" - { + case 581: +#line 3063 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6234 "util/configparser.c" +#line 6351 "util/configparser.c" break; - case 577: -#line 3055 "./util/configparser.y" - { + case 582: +#line 3071 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6246,23 +6363,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6250 "util/configparser.c" +#line 6367 "util/configparser.c" break; - case 578: -#line 3068 "./util/configparser.y" - { + case 583: +#line 3084 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6261 "util/configparser.c" +#line 6378 "util/configparser.c" break; - case 579: -#line 3076 "./util/configparser.y" - { + case 584: +#line 3092 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6273,20 +6390,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6277 "util/configparser.c" +#line 6394 "util/configparser.c" break; - case 580: -#line 3089 "./util/configparser.y" - { + case 585: +#line 3105 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6285 "util/configparser.c" +#line 6402 "util/configparser.c" break; - case 589: -#line 3100 "./util/configparser.y" - { + case 594: +#line 3116 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6296,12 +6413,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6300 "util/configparser.c" +#line 6417 "util/configparser.c" break; - case 590: -#line 3112 "./util/configparser.y" - { + case 595: +#line 3128 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6311,12 +6428,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6315 "util/configparser.c" +#line 6432 "util/configparser.c" break; - case 591: -#line 3124 "./util/configparser.y" - { + case 596: +#line 3140 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6326,12 +6443,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6330 "util/configparser.c" +#line 6447 "util/configparser.c" break; - case 592: -#line 3136 "./util/configparser.y" - { + case 597: +#line 3152 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6344,12 +6461,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6348 "util/configparser.c" +#line 6465 "util/configparser.c" break; - case 593: -#line 3151 "./util/configparser.y" - { + case 598: +#line 3167 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6360,12 +6477,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6364 "util/configparser.c" +#line 6481 "util/configparser.c" break; - case 594: -#line 3164 "./util/configparser.y" - { + case 599: +#line 3180 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6376,12 +6493,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6380 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 595: -#line 3177 "./util/configparser.y" - { + case 600: +#line 3193 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6390,20 +6507,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6394 "util/configparser.c" - break; - - case 596: -#line 3188 "./util/configparser.y" - { - OUTYY(("\nP(ipset:)\n")); - } -#line 6402 "util/configparser.c" +#line 6511 "util/configparser.c" break; case 601: -#line 3197 "./util/configparser.y" - { +#line 3204 "./util/configparser.y" + { + OUTYY(("\nP(ipset:)\n")); + } +#line 6519 "util/configparser.c" + break; + + case 606: +#line 3213 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6416,12 +6533,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6420 "util/configparser.c" +#line 6537 "util/configparser.c" break; - case 602: -#line 3212 "./util/configparser.y" - { + case 607: +#line 3228 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6434,11 +6551,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6438 "util/configparser.c" +#line 6555 "util/configparser.c" break; -#line 6442 "util/configparser.c" +#line 6559 "util/configparser.c" default: break; } @@ -6502,7 +6619,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (!yymsg) { yymsg = yymsgbuf; @@ -6670,7 +6787,7 @@ yyreturn: #endif return yyresult; } -#line 3226 "./util/configparser.y" +#line 3242 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index dc7a9c6f5..e5efc4374 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5. */ /* Bison interface for Yacc-like parsers in C @@ -334,7 +334,9 @@ extern int yydebug; VAR_RPZ_ACTION_OVERRIDE = 540, VAR_RPZ_CNAME_OVERRIDE = 541, VAR_RPZ_LOG = 542, - VAR_RPZ_LOG_NAME = 543 + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -624,6 +626,8 @@ extern int yydebug; #define VAR_RPZ_CNAME_OVERRIDE 541 #define VAR_RPZ_LOG 542 #define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -633,7 +637,7 @@ union YYSTYPE char* str; -#line 637 "util/configparser.h" +#line 641 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 7a6ad00f9..3f6e844fe 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -175,6 +175,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME +%token VAR_DYNLIB VAR_DYNLIB_FILE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -183,7 +184,7 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | ipsetstart contents_ipset | authstart contents_auth | - rpzstart contents_rpz | + rpzstart contents_rpz | dynlibstart contents_dl force_toplevel ; force_toplevel: VAR_FORCE_TOPLEVEL @@ -2942,6 +2943,21 @@ py_script: VAR_PYTHON_SCRIPT STRING_ARG if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, $2)) yyerror("out of memory"); } +dynlibstart: VAR_DYNLIB + { + OUTYY(("\nP(dynlib:)\n")); + } + ; +contents_dl: contents_dl content_dl + | ; +content_dl: dl_file + ; +dl_file: VAR_DYNLIB_FILE STRING_ARG + { + OUTYY(("P(dynlib-file:%s)\n", $2)); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, $2)) + yyerror("out of memory"); + } server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG { OUTYY(("P(disable_dnssec_lame_check:%s)\n", $2)); diff --git a/util/data/dname.c b/util/data/dname.c index c8f09ddbc..76b2ec7d6 100644 --- a/util/data/dname.c +++ b/util/data/dname.c @@ -233,17 +233,28 @@ int dname_pkt_compare(sldns_buffer* pkt, uint8_t* d1, uint8_t* d2) { uint8_t len1, len2; + int count1 = 0, count2 = 0; log_assert(pkt && d1 && d2); len1 = *d1++; len2 = *d2++; while( len1 != 0 || len2 != 0 ) { /* resolve ptrs */ if(LABEL_IS_PTR(len1)) { + if((size_t)PTR_OFFSET(len1, *d1) + >= sldns_buffer_limit(pkt)) + return -1; + if(count1++ > MAX_COMPRESS_PTRS) + return -1; d1 = sldns_buffer_at(pkt, PTR_OFFSET(len1, *d1)); len1 = *d1++; continue; } if(LABEL_IS_PTR(len2)) { + if((size_t)PTR_OFFSET(len2, *d2) + >= sldns_buffer_limit(pkt)) + return 1; + if(count2++ > MAX_COMPRESS_PTRS) + return 1; d2 = sldns_buffer_at(pkt, PTR_OFFSET(len2, *d2)); len2 = *d2++; continue; @@ -302,12 +313,18 @@ dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_type h) uint8_t labuf[LDNS_MAX_LABELLEN+1]; uint8_t lablen; int i; + int count = 0; /* preserve case of query, make hash label by label */ lablen = *dname++; while(lablen) { if(LABEL_IS_PTR(lablen)) { /* follow pointer */ + if((size_t)PTR_OFFSET(lablen, *dname) + >= sldns_buffer_limit(pkt)) + return h; + if(count++ > MAX_COMPRESS_PTRS) + return h; dname = sldns_buffer_at(pkt, PTR_OFFSET(lablen, *dname)); lablen = *dname++; continue; @@ -341,6 +358,9 @@ void dname_pkt_copy(sldns_buffer* pkt, uint8_t* to, uint8_t* dname) return; } /* follow pointer */ + if((size_t)PTR_OFFSET(lablen, *dname) + >= sldns_buffer_limit(pkt)) + return; dname = sldns_buffer_at(pkt, PTR_OFFSET(lablen, *dname)); lablen = *dname++; continue; @@ -369,6 +389,7 @@ void dname_pkt_copy(sldns_buffer* pkt, uint8_t* to, uint8_t* dname) void dname_print(FILE* out, struct sldns_buffer* pkt, uint8_t* dname) { uint8_t lablen; + int count = 0; if(!out) out = stdout; if(!dname) return; @@ -382,6 +403,15 @@ void dname_print(FILE* out, struct sldns_buffer* pkt, uint8_t* dname) fputs("??compressionptr??", out); return; } + if((size_t)PTR_OFFSET(lablen, *dname) + >= sldns_buffer_limit(pkt)) { + fputs("??compressionptr??", out); + return; + } + if(count++ > MAX_COMPRESS_PTRS) { + fputs("??compressionptr??", out); + return; + } dname = sldns_buffer_at(pkt, PTR_OFFSET(lablen, *dname)); lablen = *dname++; continue; diff --git a/util/data/msgparse.c b/util/data/msgparse.c index fb3123703..7c32618a3 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -55,7 +55,11 @@ smart_compare(sldns_buffer* pkt, uint8_t* dnow, { if(LABEL_IS_PTR(*dnow)) { /* ptr points to a previous dname */ - uint8_t* p = sldns_buffer_at(pkt, PTR_OFFSET(dnow[0], dnow[1])); + uint8_t* p; + if((size_t)PTR_OFFSET(dnow[0], dnow[1]) + >= sldns_buffer_limit(pkt)) + return -1; + p = sldns_buffer_at(pkt, PTR_OFFSET(dnow[0], dnow[1])); if( p == dprfirst || p == dprlast ) return 0; /* prev dname is also a ptr, both ptrs are the same. */ diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index b124e7169..aa275ed53 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -81,6 +81,9 @@ #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef WITH_DYNLIBMODULE +#include "dynlibmod/dynlibmod.h" +#endif #ifdef USE_CACHEDB #include "cachedb/cachedb.h" #endif @@ -392,6 +395,9 @@ fptr_whitelist_mod_init(int (*fptr)(struct module_env* env, int id)) #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_init) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_init) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_init) return 1; #endif @@ -417,6 +423,9 @@ fptr_whitelist_mod_deinit(void (*fptr)(struct module_env* env, int id)) #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_deinit) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_deinit) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_deinit) return 1; #endif @@ -443,6 +452,9 @@ fptr_whitelist_mod_operate(void (*fptr)(struct module_qstate* qstate, #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_operate) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_operate) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_operate) return 1; #endif @@ -469,6 +481,9 @@ fptr_whitelist_mod_inform_super(void (*fptr)( #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_inform_super) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_inform_super) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_inform_super) return 1; #endif @@ -495,6 +510,9 @@ fptr_whitelist_mod_clear(void (*fptr)(struct module_qstate* qstate, #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_clear) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_clear) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_clear) return 1; #endif @@ -520,6 +538,9 @@ fptr_whitelist_mod_get_mem(size_t (*fptr)(struct module_env* env, int id)) #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_get_mem) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_get_mem) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_get_mem) return 1; #endif @@ -577,18 +598,30 @@ int fptr_whitelist_inplace_cb_reply_generic(inplace_cb_reply_func_type* fptr, if(type == inplace_cb_reply) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } else if(type == inplace_cb_reply_cache) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } else if(type == inplace_cb_reply_local) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } else if(type == inplace_cb_reply_servfail) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } return 0; @@ -603,6 +636,10 @@ int fptr_whitelist_inplace_cb_query(inplace_cb_query_func_type* fptr) #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_query_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_query_generic) + return 1; #endif (void)fptr; return 0; @@ -616,6 +653,10 @@ int fptr_whitelist_inplace_cb_edns_back_parsed( return 1; #else (void)fptr; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_edns_back_parsed) + return 1; #endif return 0; } @@ -628,6 +669,10 @@ int fptr_whitelist_inplace_cb_query_response( return 1; #else (void)fptr; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_query_response) + return 1; #endif return 0; } diff --git a/util/iana_ports.inc b/util/iana_ports.inc index b26677efb..79488f49a 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -3771,6 +3771,7 @@ 4188, 4191, 4192, +4195, 4197, 4199, 4300, @@ -5230,6 +5231,7 @@ 18241, 18262, 18463, +18516, 18634, 18635, 18668, diff --git a/util/net_help.c b/util/net_help.c index e287f90aa..a00fe2e2f 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -55,6 +55,9 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif +#ifdef HAVE_OPENSSL_CORE_NAMES_H +#include +#endif #ifdef USE_WINSOCK #include #endif @@ -79,6 +82,30 @@ static struct tls_session_ticket_key { unsigned char *hmac_key; } *ticket_keys; +/** + * callback TLS session ticket encrypt and decrypt + * For use with SSL_CTX_set_tlsext_ticket_key_cb or + * SSL_CTX_set_tlsext_ticket_key_evp_cb + * @param s: the SSL_CTX to use (from connect_sslctx_create()) + * @param key_name: secret name, 16 bytes + * @param iv: up to EVP_MAX_IV_LENGTH. + * @param evp_ctx: the evp cipher context, function sets this. + * @param hmac_ctx: the hmac context, function sets this. + * with ..key_cb it is of type HMAC_CTX* + * with ..key_evp_cb it is of type EVP_MAC_CTX* + * @param enc: 1 is encrypt, 0 is decrypt + * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket + * (the ticket is decrypt only). and <0 for failures. + */ +int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, + unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + EVP_MAC_CTX *hmac_ctx, +#else + HMAC_CTX* hmac_ctx, +#endif + int enc); + /* returns true is string addr is an ip6 specced address */ int str_is_ip6(const char* str) @@ -1387,10 +1414,17 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } /* terminate array with NULL key name entry */ keys->key_name = NULL; +# ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + if(SSL_CTX_set_tlsext_ticket_key_evp_cb(sslctx, tls_session_ticket_key_cb) == 0) { + log_err("no support for TLS session ticket"); + return 0; + } +# else if(SSL_CTX_set_tlsext_ticket_key_cb(sslctx, tls_session_ticket_key_cb) == 0) { log_err("no support for TLS session ticket"); return 0; } +# endif return 1; #else (void)sslctx; @@ -1400,13 +1434,26 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } -int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name, unsigned char* iv, void *evp_sctx, void *hmac_ctx, int enc) +int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, + unsigned char* iv, EVP_CIPHER_CTX *evp_sctx, +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + EVP_MAC_CTX *hmac_ctx, +#else + HMAC_CTX* hmac_ctx, +#endif + int enc) { #ifdef HAVE_SSL +# ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + OSSL_PARAM params[3]; +# else const EVP_MD *digest; +# endif const EVP_CIPHER *cipher; int evp_cipher_length; +# ifndef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB digest = EVP_sha256(); +# endif cipher = EVP_aes_256_cbc(); evp_cipher_length = EVP_CIPHER_iv_length(cipher); if( enc == 1 ) { @@ -1421,7 +1468,14 @@ int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name verbose(VERB_CLIENT, "EVP_EncryptInit_ex failed"); return -1; } -#ifndef HMAC_INIT_EX_RETURNS_VOID +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + params[0] = OSSL_PARAM_construct_octet_string(OSSL_MAC_PARAM_KEY, + ticket_keys->hmac_key, 32); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, + "sha256", 0); + params[2] = OSSL_PARAM_construct_end(); + EVP_MAC_set_ctx_params(hmac_ctx, params); +#elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); return -1; @@ -1445,7 +1499,14 @@ int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name return 0; } -#ifndef HMAC_INIT_EX_RETURNS_VOID +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + params[0] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, + key->hmac_key, 32); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, + "sha256", 0); + params[2] = OSSL_PARAM_construct_end(); + EVP_MAC_set_ctx_params(hmac_ctx, params); +#elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); return -1; diff --git a/util/net_help.h b/util/net_help.h index c1bb13923..29943ada0 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -478,20 +478,6 @@ void ub_openssl_lock_delete(void); int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_session_ticket_keys); -/** - * callback TLS session ticket encrypt and decrypt - * For use with SSL_CTX_set_tlsext_ticket_key_cb - * @param s: the SSL_CTX to use (from connect_sslctx_create()) - * @param key_name: secret name, 16 bytes - * @param iv: up to EVP_MAX_IV_LENGTH. - * @param evp_ctx: the evp cipher context, function sets this. - * @param hmac_ctx: the hmax context, function sets this. - * @param enc: 1 is encrypt, 0 is decrypt - * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket - * (the ticket is decrypt only). and <0 for failures. - */ -int tls_session_ticket_key_cb(void *s, unsigned char* key_name,unsigned char* iv, void *evp_ctx, void *hmac_ctx, int enc); - /** Free memory used for TLS session ticket keys */ void listen_sslctx_delete_ticket_keys(void); diff --git a/util/shm_side/shm_main.c b/util/shm_side/shm_main.c index 46a71510f..af8c5bcf3 100644 --- a/util/shm_side/shm_main.c +++ b/util/shm_side/shm_main.c @@ -284,6 +284,10 @@ void shm_main_run(struct worker *worker) #ifdef USE_IPSECMOD shm_stat->mem.ipsecmod = (long long)mod_get_mem(&worker->env, "ipsecmod"); +#endif +#ifdef WITH_DYNLIBMODULE + shm_stat->mem.dynlib = (long long)mod_get_mem(&worker->env, + "dynlib"); #endif } diff --git a/util/ub_event.c b/util/ub_event.c index 9af476ad4..68f633bb0 100644 --- a/util/ub_event.c +++ b/util/ub_event.c @@ -148,7 +148,7 @@ const char* ub_event_get_version(void) return event_get_version(); } -#if (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && defined(EVBACKEND_SELECT) +#if (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && defined(EV_FEATURE_BACKENDS) static const char* ub_ev_backend2str(int b) { switch(b) { @@ -184,7 +184,7 @@ ub_get_event_sys(struct ub_event_base* base, const char** n, const char** s, *n = "libev"; if (!b) b = (struct event_base*)ev_default_loop(EVFLAG_AUTO); -# ifdef EVBACKEND_SELECT +# ifdef EV_FEATURE_BACKENDS *m = ub_ev_backend2str(ev_backend((struct ev_loop*)b)); # else *m = "not obtainable"; diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index 3dbbe9ac9..65bca8b69 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -77,6 +77,10 @@ int fake_sha1 = 0; #include #endif +#if defined(HAVE_OPENSSL_DSA_H) && defined(USE_DSA) +#include +#endif + /** * Output a libcrypto openssl error to the logfile. * @param str: string to add to it.