]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- updated configure, dependencies and flex output.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 16 May 2017 13:21:10 +0000 (13:21 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 16 May 2017 13:21:10 +0000 (13:21 +0000)
git-svn-id: file:///svn/unbound/trunk@4159 be551aaa-1e26-0410-a405-d3ace91eadb9

Makefile.in
config.h.in
configure
doc/Changelog
util/configlexer.c
util/configparser.c
util/configparser.h

index fe33c461c9e9332a53f0f8ad76d7b3d75a08d2c5..5ee3a3914c4f82ae7a4bec2332820f752e14dbcf 100644 (file)
@@ -765,8 +765,9 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service
  $(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)/cachedb/cachedb.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h
+ $(srcdir)/cachedb/cachedb.h $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h \
+ $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.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 \
@@ -835,8 +836,8 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/
  $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \
  $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h $(PYTHONMOD_HEADER) \
- $(srcdir)/cachedb/cachedb.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \
- $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h
+ $(srcdir)/cachedb/cachedb.h $(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
 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 \
@@ -1029,6 +1030,20 @@ checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/u
 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
+ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h $(srcdir)/ipsecmod/ipsecmod.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)/ipsecmod/ipsecmod-whitelist.h \
+ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \
+ $(srcdir)/dnscrypt/dnscrypt.h  $(srcdir)/dnscrypt/cert.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
+ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \
+ $(srcdir)/ipsecmod/ipsecmod.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)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.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 \
  $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h
index a4eae9d51599893563c5445f1a5af4ed9e55e8d1..2713bcdab62935386ea29bfc1a42b30f7214b9ba 100644 (file)
 /* Define to 1 to use cachedb support */
 #undef USE_CACHEDB
 
-/* Define to 1 to use ipsecmod support */
-#undef USE_IPSECMOD
-
 /* Define to 1 to enable dnscrypt support */
 #undef USE_DNSCRYPT
 
 /* Define this to enable GOST support. */
 #undef USE_GOST
 
+/* Define to 1 to use ipsecmod support. */
+#undef USE_IPSECMOD
+
 /* Define if you want to use internal select based events */
 #undef USE_MINI_EVENT
 
index 48162d86f4e76a402703a82a261e32c067debd60..34e755126e5e5ffb023223d7fdf7a549747c0c9c 100755 (executable)
--- a/configure
+++ b/configure
@@ -638,6 +638,8 @@ INSTALLTARGET
 ALLTARGET
 SOURCEFILE
 SOURCEDETERMINE
+IPSECMOD_HEADER
+IPSECMOD_OBJ
 DNSCRYPT_OBJ
 DNSCRYPT_SRC
 ENABLE_DNSCRYPT
@@ -867,6 +869,7 @@ with_libfstrm
 enable_dnscrypt
 with_libsodium
 enable_cachedb
+enable_ipsecmod
 with_libunbound_only
 '
       ac_precious_vars='build_alias
@@ -1547,6 +1550,8 @@ Optional Features:
   --enable-dnscrypt       Enable dnscrypt support (requires libsodium)
   --enable-cachedb        enable cachedb module that can use external cache
                           storage
+  --enable-ipsecmod       Enable ipsecmod module that facilitates
+                          opportunistic IPsec
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -20347,6 +20352,27 @@ $as_echo "#define USE_CACHEDB 1" >>confdefs.h
        ;;
 esac
 
+# check for ipsecmod if requested
+# Check whether --enable-ipsecmod was given.
+if test "${enable_ipsecmod+set}" = set; then :
+  enableval=$enable_ipsecmod;
+fi
+
+case "$enable_ipsecmod" in
+       yes)
+
+$as_echo "#define USE_IPSECMOD 1" >>confdefs.h
+
+               IPSECMOD_OBJ="ipsecmod.lo ipsecmod-whitelist.lo"
+
+               IPSECMOD_HEADER='$(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h'
+
+               ;;
+       no|*)
+               # nothing
+               ;;
+esac
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5
 $as_echo_n "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; }
 # on openBSD, the implicit rule make $< work.
index 40c1c4ce063ef31a31f0b9fb7c0aa4dce53f8942..10d52f559e01ac9a7a8b72a94e7b4d99f68d08af 100644 (file)
@@ -5,6 +5,7 @@
 16 May 2017: Wouter
        - updated dependencies in the makefile.
        - document trust-anchor-signaling in example config file.
+       - updated configure, dependencies and flex output.
 
 12 May 2017: Wouter
        - Adjust servfail by iterator to not store in cache when serve-expired
index 4ae510f75596968e76ec1e166696bbf1072a9ab5..cd22aa24de952308f804b449c0870b2bbf99c877 100644 (file)
@@ -10,7 +10,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 1
+#define YY_FLEX_SUBMINOR_VERSION 0
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -89,13 +89,25 @@ typedef unsigned int flex_uint32_t;
 
 #endif /* ! FLEXINT_H */
 
-/* TODO: this is always defined, so inline it */
-#define yyconst const
+#ifdef __cplusplus
 
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define yynoreturn __attribute__((__noreturn__))
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else  /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
 #else
-#define yynoreturn
+#define yyconst
 #endif
 
 /* Returned upon end-of-file. */
@@ -156,7 +168,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 typedef size_t yy_size_t;
 #endif
 
-extern int yyleng;
+extern yy_size_t yyleng;
 
 extern FILE *yyin, *yyout;
 
@@ -172,7 +184,7 @@ extern FILE *yyin, *yyout;
        do \
                { \
                /* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
+        yy_size_t yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
@@ -195,12 +207,12 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       int yy_buf_size;
+       yy_size_t yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -223,7 +235,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-
+    
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -251,7 +263,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -270,11 +282,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int yyleng;
+static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = NULL;
+static char *yy_c_buf_p = (char *) 0;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
@@ -299,7 +311,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 void *yyalloc (yy_size_t  );
 void *yyrealloc (void *,yy_size_t  );
@@ -333,7 +345,7 @@ void yyfree (void *  );
 
 typedef unsigned char YY_CHAR;
 
-FILE *yyin = NULL, *yyout = NULL;
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 
 typedef int yy_state_type;
 
@@ -350,7 +362,10 @@ extern char *yytext;
 static yy_state_type yy_get_previous_state (void );
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 static int yy_get_next_buffer (void );
-static void yynoreturn yy_fatal_error (yyconst char* msg  );
+#if defined(__GNUC__) && __GNUC__ >= 3
+__attribute__((__noreturn__))
+#endif
+static void yy_fatal_error (yyconst char msg[]  );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
@@ -358,13 +373,13 @@ static void yynoreturn yy_fatal_error (yyconst char* msg  );
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
        (yytext_ptr) -= (yy_more_len); \
-       yyleng = (int) (yy_cp - (yytext_ptr)); \
+       yyleng = (size_t) (yy_cp - (yytext_ptr)); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 222
-#define YY_END_OF_BUFFER 223
+#define YY_NUM_RULES 228
+#define YY_END_OF_BUFFER 229
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -372,247 +387,254 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[2175] =
+static yyconst flex_int16_t yy_accept[2233] =
     {   0,
-        1,    1,  204,  204,  208,  208,  212,  212,  216,  216,
-        1,    1,  223,  220,    1,  202,  202,  221,    2,  221,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      204,  205,  205,  206,  221,  208,  209,  209,  210,  221,
-      215,  212,  213,  213,  214,  221,  216,  217,  217,  218,
-      221,  219,  203,    2,  207,  221,  219,  220,    0,    1,
-        2,    2,    2,    2,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      204,    0,  208,    0,  215,    0,  212,  216,    0,  219,
-        0,    2,    2,  219,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  219,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      219,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,   77,  220,  220,  220,
-      220,  220,  220,    8,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,   88,  219,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  219,
-      220,  220,  220,  220,  220,   37,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  169,  220,
-       14,   15,  220,   18,   17,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  155,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,    3,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  219,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  211,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,   40,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,   41,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  144,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,   20,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  102,  220,  211,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  196,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  119,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      101,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,   75,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,   25,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,   38,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,   39,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  120,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-       28,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  184,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,   32,  220,   33,
-      220,  220,  220,   78,  220,   79,  220,  220,   76,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,    7,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  162,  220,  220,  220,  220,  104,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,   29,  220,  220,  220,
-
-      220,  220,  220,  220,  136,  220,  135,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,   16,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,   42,  220,  220,
-      220,  220,  220,  220,  143,  220,  220,  220,  220,   81,
-       80,  220,  220,  220,  220,  220,  220,  220,  220,  130,
-      220,  220,  220,  220,  220,  220,  220,  220,   89,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,   60,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,   64,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,   36,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  133,
-      134,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,    6,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      194,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-       26,  220,  220,  220,  220,  220,  220,  220,  220,  126,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      148,  220,  127,  220,  220,  160,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-       27,  220,  220,  220,  220,   84,  220,   85,  220,   83,
-      220,  220,  220,  220,  220,  220,  220,  220,   99,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      183,  220,  220,  128,  220,  220,  220,  220,  220,  131,
-      220,  220,  159,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,   74,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,   34,  220,  220,   22,  220,
-      220,  220,  220,   19,  220,  109,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-       49,   51,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  198,  220,  220,  170,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-       86,  220,  220,  220,  220,  220,  220,  220,   98,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  103,  220,  220,  220,  220,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  154,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      118,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  114,  220,  121,  220,  220,
-      220,  220,  220,   92,  220,  220,   70,  220,  220,  220,
-      146,  220,  220,  220,  220,  220,  161,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  175,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  117,  220,  220,  220,  220,  220,   52,   53,  220,
-      220,  220,  220,  220,   35,   59,  122,  220,  137,  220,
-
-      163,  132,  220,  220,  220,   45,  220,  124,  220,  220,
-      220,  220,  220,    9,  220,  220,  220,   73,  220,  220,
-      220,  220,  188,  220,  145,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  105,  197,  220,  220,  174,  220,  220,  220,
-      220,  220,  220,  220,  220,  156,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  123,  220,  220,  220,
-
-       44,   46,  220,  220,  220,  220,  220,  220,  220,   72,
-      220,  220,  220,  220,  186,  220,  193,  220,  220,  220,
-      220,  220,  150,   23,   24,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,   69,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  152,
-      149,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,   43,  220,  220,  220,  220,  220,  220,  220,
-      220,  100,   13,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,   12,  220,  220,
-       21,  220,  220,  220,  192,  220,  195,   47,  220,  158,
-
-      220,  151,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  113,  112,  220,  220,  220,
-      220,  220,  220,  153,  147,  220,  220,  199,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,   54,  220,
-      220,  220,  187,  220,  220,  220,  157,  220,  220,  220,
-      220,  220,  220,  220,  220,   48,  220,  220,  220,   82,
-      220,  106,  220,  108,  138,  220,  220,  220,  111,  220,
-      220,  164,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  171,  220,  220,  220,
-
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      139,  220,  220,  185,  220,  220,  220,   30,  220,  220,
-      220,  220,    4,  220,  220,   93,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  167,  220,  220,  220,
-      220,  220,  220,  200,  220,  220,  220,  220,  220,  173,
-      220,  220,  142,  220,  220,  220,  220,  220,  220,  220,
-      220,   57,  220,   31,  191,  168,  220,  220,   11,  220,
-      220,  220,  220,  220,  220,  140,   61,  220,  220,  220,
-      220,  116,  220,  220,  220,  220,  220,   95,  220,  220,
-      220,  220,  220,  220,  220,  172,   90,  220,   87,  220,
-
-      220,  220,   63,   67,   62,  220,   55,  220,  220,   10,
-      220,  220,  220,  189,  220,  220,  220,  115,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,   68,   66,  220,   56,  220,  220,  220,
-      129,  220,  220,  141,  220,  220,  220,  220,  220,  107,
-       50,  220,  220,  201,  220,  220,  220,  220,  220,  220,
-       91,   65,   96,   97,   58,  220,  190,  110,  220,  220,
-      220,  166,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,   71,  220,  165,  220,  182,  220,  220,
-
-      220,  220,  220,  220,    5,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,   94,  220,  220,  220,  220,  220,  220,  125,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  178,  220,
-      220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
-      220,  220,  176,  220,  179,  180,  220,  220,  220,  220,
-      220,  177,  181,    0
+        1,    1,  210,  210,  214,  214,  218,  218,  222,  222,
+        1,    1,  229,  226,    1,  208,  208,  227,    2,  227,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      210,  211,  211,  212,  227,  214,  215,  215,  216,  227,
+      221,  218,  219,  219,  220,  227,  222,  223,  223,  224,
+      227,  225,  209,    2,  213,  227,  225,  226,    0,    1,
+        2,    2,    2,    2,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      210,    0,  214,    0,  221,    0,  218,  222,    0,  225,
+        0,    2,    2,  225,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  225,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  225,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,   77,
+      226,  226,  226,  226,  226,  226,    8,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,   88,  225,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  225,  226,  226,  226,  226,  226,   37,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  169,  226,   14,   15,  226,   18,   17,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  155,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+        3,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  225,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  217,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+       40,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,   41,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  144,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,   20,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  102,  226,  217,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  196,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  119,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  101,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,   75,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+       25,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,   38,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,   39,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  120,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,   28,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  184,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+       32,  226,   33,  226,  226,  226,   78,  226,   79,  226,
+      226,   76,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,    7,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  162,  226,  226,  226,  226,  104,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,   29,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  136,  226,  135,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,   16,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,   42,  226,  226,  226,
+      226,  226,  226,  143,  226,  226,  226,  226,   81,   80,
+      226,  226,  226,  226,  226,  226,  226,  226,  130,  226,
+      226,  226,  226,  226,  226,  226,  226,   89,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,   60,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,   64,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,   36,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  133,  134,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,    6,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  194,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,   26,  226,  226,  226,  226,
+      226,  226,  226,  226,  126,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  148,  226,  127,  226,  226,
+      160,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,   27,  226,  226,  226,  226,
+       84,  226,   85,  226,   83,  226,  226,  226,  226,  226,
+      226,  226,  226,   99,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  183,  226,  226,  226,  226,
+      226,  226,  226,  226,  128,  226,  226,  226,  226,  226,
+
+      131,  226,  226,  159,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,   74,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,   34,  226,  226,   22,
+      226,  226,  226,  226,   19,  226,  109,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,   49,   51,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  198,  226,  226,  170,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,   86,  226,  226,  226,  226,  226,  226,  226,   98,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  204,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  103,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  154,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  118,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  114,  226,  121,  226,  226,  226,  226,  226,
+       92,  226,  226,   70,  226,  226,  226,  146,  226,  226,
+      226,  226,  226,  161,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  175,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  117,  226,
+      226,  226,  226,  226,   52,   53,  226,  226,  226,  226,
+      226,   35,  226,  226,  226,  226,  226,   59,  122,  226,
+      137,  226,  163,  132,  226,  226,  226,   45,  226,  124,
+      226,  226,  226,  226,  226,    9,  226,  226,  226,   73,
+      226,  226,  226,  226,  188,  226,  145,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  105,  197,  226,  226,  174,  226,
+      226,  226,  226,  226,  226,  226,  226,  156,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  207,  226,  123,  226,  226,  226,   44,   46,  226,
+      226,  226,  226,  226,  226,  226,   72,  226,  226,  226,
+      226,  186,  226,  193,  226,  226,  226,  226,  226,  150,
+       23,   24,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,   69,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  152,  149,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  226,  226,  226,   43,
+      226,  226,  226,  226,  226,  226,  226,  226,  100,   13,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  202,
+      226,  205,  226,  226,  226,  226,  226,  226,   12,  226,
+      226,   21,  226,  226,  226,  192,  226,  195,   47,  226,
+      158,  226,  151,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  113,  112,  226,  226,
+      226,  226,  226,  226,  153,  147,  226,  226,  199,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,   54,
+
+      226,  226,  226,  187,  226,  226,  226,  226,  226,  157,
+      226,  226,  226,  226,  226,  226,  226,  226,   48,  226,
+      226,  226,   82,  226,  106,  226,  108,  138,  226,  226,
+      226,  111,  226,  226,  164,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  171,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  139,  226,  226,  185,  226,  206,  226,
+      226,  226,   30,  226,  226,  226,  226,    4,  226,  226,
+       93,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  167,  226,  226,  226,  226,  226,  226,  200,  226,
+
+      226,  226,  226,  226,  173,  226,  226,  142,  226,  226,
+      226,  226,  226,  226,  226,  226,   57,  226,   31,  191,
+      226,  168,  226,  226,   11,  226,  226,  226,  226,  226,
+      226,  140,   61,  226,  226,  226,  226,  116,  226,  226,
+      226,  226,  226,   95,  226,  226,  226,  226,  226,  226,
+      226,  172,   90,  226,   87,  226,  226,  226,   63,   67,
+       62,  226,   55,  226,  226,  226,   10,  226,  226,  226,
+      189,  226,  226,  226,  115,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+       68,   66,  226,   56,  203,  226,  226,  226,  129,  226,
+
+      226,  141,  226,  226,  226,  226,  226,  107,   50,  226,
+      226,  201,  226,  226,  226,  226,  226,  226,   91,   65,
+       96,   97,   58,  226,  190,  110,  226,  226,  226,  166,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      226,   71,  226,  165,  226,  182,  226,  226,  226,  226,
+      226,  226,    5,  226,  226,  226,  226,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+       94,  226,  226,  226,  226,  226,  226,  125,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+
+      226,  226,  226,  226,  226,  226,  178,  226,  226,  226,
+      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
+      176,  226,  179,  180,  226,  226,  226,  226,  226,  177,
+      181,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -655,495 +677,509 @@ static yyconst YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[2189] =
+static yyconst flex_uint16_t yy_base[2247] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112, 2240, 2121,   81, 4282, 4282, 4282,   96,   52,
+       90,  112, 2503, 2455,   81, 4382, 4382, 4382,   96,   52,
        72,  107,  111,   70,   91,  109,  124,   98,  127,  114,
       133,  136,   64,  144,  146,  150,  156,  177,  167,  182,
-     2077, 4282, 4282, 4282,  182, 2049, 4282, 4282, 4282,  173,
-     1931, 1589, 4282, 4282, 4282,  206, 1411, 4282, 4282, 4282,
-      194, 1269, 4282,  210, 4282,  214,  174,  948,  218,  147,
+     1910, 4382, 4382, 4382,  182, 1672, 4382, 4382, 4382,  173,
+     1553, 1246, 4382, 4382, 4382,  206,  957, 4382, 4382, 4382,
+      194,  879, 4382,  210, 4382,  214,  174,  843,  218,  147,
         0,  225,    0,    0,  189,  143,   97,  219,  212,  145,
       179,  214,  221,  223,  227,  234,  229,  170,  231,  232,
-      233,  237,  244,  238,  253,   63,  236,  257,  258,  254,
-
-      260,  263,  264,  266,  268,  270,  269,  276,  277,  280,
-      286,  284,  287,  285,  290,  292,  293,  296,  300,  308,
-      299,  315,  301,  306,  297,  321,  320,  317,  324,  326,
-      872,  337,  760,  340,  686,  344,  352,  248,  348,  158,
-      355,  359,    0,  351,  353,  361,  341,  357,  360,  362,
-      363,  364,  366,  373,  371,  369,  378,  382,  383,  388,
-      381,  386,  390,  393,  394,  396,  399,  405,  406,  407,
-      409,  410,  411,  408,  419,  430,  422,  432,  433,  434,
-      436,  445,  437,  446,  447,  444,  448,  449,  450,  452,
-      453,  454,  456,  459,  463,  460,  465,  466,  468,  467,
-
-      479,  474,  483,  480,  482,  481,  496,  486,  487,  494,
-      497,  504,  501,  502,  506,  507,  508,  517,  509,  519,
-      512,  510,  521,  522,  523,  528,  529,  533,  537,  543,
-      530,  541,  544,  534,  546,  549,  547,  554,  562,  555,
-      564,  559,  565,  572,  557,  567,  568,  571,  573,  575,
-      576,  579,  580,  581,  586,  587,  596,  588,  593,  592,
-      597,  600,  595,  602,  613,  618,  619,  607,  611,  620,
-      623,  631,  628,  634,  625,  636,  637,  638,  639,  648,
-      643,  650,  646,  655,  656,  653,  652,  665,  670,  657,
-      669,  672,  676,  675,  677,  679,  697,  683,  678,  707,
-
-      681,  684,  695,  685,  694,  704,  708,  714,  715,  717,
-      718,  725,  720,  723,  724,  732,  721,  729,  731,  744,
-      737,  739,  743,  747,  645,  748,  749,  751,  750,  754,
-      756,  762,  766,  771,  778,  758,  775,  773,  782,  783,
-      784,  786,  788,  789,  798,  793,  794,  795,  796,  799,
-      802,  804,  806,  812,  809,  818, 4282,  820,  810,  816,
-      813,  823,  825, 4282,  826,  827,  828,  835,  832,  833,
-      834,  845,  855,  836,  856,  840,  852,  851,  858,  859,
-      860,  861,  862,  864,  884,  867,  869,  865,  877,  886,
-      876,  893,  870,  897,  891,  868,  899,  901,  902,  904,
-
-      907,  908,  911,  912, 4282,  913,  921,  919,  905,  922,
-      925,  929,  936,  932,  940,  937,  938,  939,  942,  943,
-      945,  950,  957,  952,  959,  963,  973,  969,  971,  978,
-      953,  955,  975,  976,  977,  985,  982,  980,  983,  987,
-      995,  991,  990,  997,  992, 1001,  993, 1003, 1012,  999,
-     1020, 1006, 1016, 1018, 1021, 1023, 1024, 1025, 1027, 1030,
-     1029, 1031, 1041, 1036, 1034, 1046, 1047, 1033, 1048, 1056,
-     1053, 1060, 1061, 1063, 1071, 1059, 1066, 1073, 1055, 1069,
-     1077, 1075, 1076, 1089, 1084, 1057, 1090, 1086, 1091, 1094,
-     1096, 1097, 1098, 1099, 1100, 1102, 1101, 1104, 1106, 1113,
-
-     1108, 1110, 1124, 1111, 1120, 1128, 1122, 1126, 1130, 1132,
-     1135, 1134, 1137, 1144, 1136, 1146, 1147, 1148, 1150, 1152,
-     1155, 1160, 1151, 1165, 1161, 4282, 1163, 1173, 1168, 1171,
-     1169, 1176, 1183, 1178, 1179, 1180, 1184, 1187, 4282, 1185,
-     4282, 4282, 1190, 4282, 4282, 1189, 1195, 1208, 1202, 1210,
-     1219, 1220, 1218, 1193, 1215, 1191, 1225, 1230, 1234, 1235,
-     1231, 1242, 1240, 1244, 1248, 1249, 1250, 1237, 1252, 1254,
-     1255, 1257, 1259, 1261, 1260, 1264, 1265, 1267, 1277, 1285,
-     1286, 1268, 1281, 1283, 1284, 1288, 1289, 1290, 1293, 1296,
-     1217, 1299, 1304, 1300, 4282, 1301, 1302, 1305, 1309, 1303,
-
-     1315, 1313, 1318, 1320, 1321, 4282, 1323, 1330, 1322, 1326,
-     1333, 1335, 1334, 1337, 1336, 1338, 1340, 1341, 1339, 1347,
-     1349, 1346, 1351, 1353, 1361, 1368, 1370, 1365, 1366, 1367,
-     1371, 1372, 1377, 1380, 1381, 1382, 1383, 1392, 1388, 1390,
-     1391, 1395, 1397, 1398, 1399, 1401, 1403, 1404, 1405, 1427,
-     1406, 1410, 1413, 1415, 1416, 1419, 1437, 1421, 1445, 1433,
-     1446, 1441, 1449, 1452, 1451, 1453, 1455, 1423, 1466, 1459,
-     1467, 1470, 1461, 1463, 1472, 1475, 1479, 1477, 1483, 1481,
-     1484, 1485, 1493, 1490, 4282, 1505, 1497, 1488, 1498, 1508,
-     1501, 1509, 1422, 1510, 1513, 1512, 1514, 1515, 1516, 1517,
-
-     1518, 1523, 1525, 1530, 4282, 1526, 1522, 1527, 1535, 1537,
-     1539, 1543, 1546, 1551, 1553, 1549, 4282, 1554, 1564, 1556,
-     1565, 1559, 1561, 1567, 1572, 1569, 1571, 1575, 1578, 1576,
-     1579, 1580, 1586, 4282, 1587, 1588, 1591, 1595, 1590, 1600,
-     1602, 1601, 1603, 1606, 1607, 1614, 1610, 1611, 4282, 1609,
-     1621, 1612, 1613, 1634, 1635, 1617, 1631, 1638, 1630, 1633,
-     1639, 1644, 1641, 1643, 1642, 1645, 4282, 1646,  130, 1648,
-     1653, 1654, 1656, 1663, 1655, 1664, 1667, 1669, 1671, 1673,
-     1675, 1658, 1679, 1676, 1680, 1682, 1684, 1687, 1688, 1689,
-     1692, 4282, 1695, 1701, 1693, 1702, 1704, 1703, 1710, 1712,
-
-     1713, 1715, 1714, 4282, 1723, 1724, 1718, 1725, 1726, 1729,
-     1730, 1731, 1734, 1735, 1736, 1741, 1742, 1738, 1739, 1746,
-     4282, 1766, 1748, 1761, 1750, 1763, 1752, 1773, 1765, 1771,
-     1774, 1775, 1777, 1779, 1786, 1781, 1778, 1789, 1791, 1792,
-     1793, 1795, 1799, 1800, 1802, 1801, 1809, 1810, 1806, 1813,
-     1812, 1822, 1751, 1807, 4282, 1820, 1814, 1825, 1827, 1839,
-     1831, 1835, 1834, 1840, 1837, 1841, 1847, 1842, 1846, 1849,
-     1858, 1850, 1862, 4282, 1863, 1859, 1867, 1869, 1852, 1874,
-     1870, 1876, 1878, 1879, 1880, 1881, 1882, 1883, 1888, 1890,
-     1891, 1892, 4282, 1900, 1901, 1902, 1909, 1904, 1893, 1908,
-
-     1911, 1914, 1915, 1916, 1923, 1918, 1920, 1921, 1922, 1924,
-     1925, 1927, 1928, 1930, 1941, 1944, 1929, 1945, 4282, 1937,
-     1955, 1951, 1957, 1958, 1959, 1961, 1962, 1967, 1969, 1971,
-     1968, 1970, 1973, 1976, 1978, 1980, 1982, 4282, 1984, 1985,
-     1986, 1992, 1987, 1991, 1993, 1990, 1995, 2007, 2010, 2011,
-     2012, 1996, 2013, 2016, 2017, 2018, 2025, 2026, 2030, 2032,
-     4282, 2035, 2036, 2037, 2024, 2039, 2027, 2043, 2051, 2053,
-     2048, 2054, 2055, 2056, 2063, 2058, 2059, 2060, 2067, 2064,
-     2069, 2070, 2071, 2065, 2072, 2076, 2080, 2082, 2086, 2095,
-     2087, 2096, 2097, 2099, 2101, 2103, 4282, 2104, 2102, 2107,
-
-     2111, 2113, 2112, 2115, 2119, 2126, 2128, 4282, 2123, 4282,
-     2125, 2134, 2137, 4282, 2143, 4282, 2145, 2136, 4282, 2146,
-     2147, 2138, 2129, 2150, 2151, 2140, 2158, 2159, 2160, 2161,
-     2165, 2166, 2167, 2169, 2168, 4282, 2175, 2172, 2170, 2178,
-     2176, 2182, 2183, 2185, 2186, 2189, 2193, 2192, 2204, 2196,
-     2205, 4282, 2200, 2207, 2201, 2211, 4282, 2208, 2212, 2218,
-     2210, 2215, 2221, 2222, 2223, 2233, 2231, 2235, 2229, 2237,
-     2227, 2241, 2253, 2245, 2248, 2249, 2250, 2260, 2256, 2263,
-     2255, 2259, 2272, 2262, 2258, 2265, 2269, 2273, 2274, 2279,
-     2277, 2281, 2280, 2282, 2283, 2284, 4282, 2293, 2286, 2294,
-
-     2295, 2296, 2304, 2298, 4282, 2307, 4282, 2301, 2309, 2312,
-     2315, 2317, 2319, 2321, 2320, 2323, 2331, 2325, 2338, 2345,
-     2328, 2333, 2335, 2341, 2347, 2339, 4282, 2349, 2350, 2356,
-     2354, 2352, 2359, 2365, 2360, 2358, 2379, 4282, 2377, 2367,
-     2381, 2382, 2389, 2384, 4282, 2386, 2394, 2391, 2392, 4282,
-     4282, 2393, 2397, 2396, 2398, 2399, 2408, 2403, 2407, 4282,
-     2411, 2400, 2413, 2421, 2422, 2423, 2415, 2414, 4282, 2429,
-     2431, 2432, 2433, 2435, 2436, 2434, 2438, 2445, 2442, 2441,
-     2443, 2451, 2452, 2457, 4282, 2460, 2461, 2463, 2464, 2466,
-     2467, 2469, 2471, 2472, 2473, 2474, 2475, 2478, 2479, 2480,
-
-     2481, 2485, 2498, 2493, 2494, 2495, 2503, 2497, 2505, 2499,
-     2507, 2508, 2516, 2518, 4282, 2525, 2509, 2528, 2511, 2523,
-     2530, 2531, 2539, 2534, 2524, 2535, 2543, 2538, 4282, 2551,
-     2540, 2541, 2557, 2542, 2559, 2549, 2552, 2563, 2566, 4282,
-     4282, 2561, 2567, 2572, 2575, 2573, 2576, 2577, 2578, 2581,
-     2582, 4282, 2584, 2592, 2591, 2587, 2599, 2601, 2597, 2600,
-     2604, 2602, 2606, 2608, 2609, 2610, 2614, 2615, 2617, 2619,
-     4282, 2618, 2621, 2624, 2626, 2627, 2629, 2635, 2631, 2645,
-     2641, 2646, 2648, 2655, 2651, 2658, 2659, 2654, 2661, 2669,
-     4282, 2664, 2666, 2665, 2656, 2678, 2667, 2685, 2671, 4282,
-
-     2684, 2674, 2691, 2693, 2682, 2694, 2695, 2698, 2699, 2697,
-     4282, 2704, 4282, 2707, 2696, 4282, 2700, 2711, 2714, 2715,
-     2716, 2718, 2719, 2720, 2722, 2725, 2726, 2727, 2734, 2731,
-     4282, 2735, 2733, 2737, 2741, 4282, 2743, 4282, 2738, 4282,
-     2748, 2752, 2755, 2753, 2756, 2758, 2762, 2759, 4282, 2764,
-     2765, 2768, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2783,
-     4282, 2779, 2780, 4282, 2790, 2782, 2791, 2792, 2798, 4282,
-     2801, 2804, 4282, 2807, 2812, 2796, 2808, 2814, 2815, 2818,
-     2817, 2819, 2830, 2826, 2825, 2828, 4282, 2827, 2829, 2833,
-     2840, 2834, 2837, 2848, 2845, 2851, 2844, 2854, 2858, 2852,
-
-     2860, 2847, 2866, 2863, 2867, 4282, 2869, 2870, 4282, 2871,
-     2873, 2876, 2880, 4282, 2881, 4282, 2877, 2882, 2878, 2886,
-     2889, 2890, 2892, 2885, 2898, 2901, 2905, 2913, 2908, 2909,
-     4282, 4282, 2911, 2919, 2914, 2922, 2924, 2915, 2917, 2932,
-     2928, 2931, 2936, 4282, 2938, 2937, 4282, 2939, 2940, 2943,
-     2944, 2946, 2947, 2952, 2949, 2950, 2955, 2953, 2956, 2960,
-     4282, 2961, 2962, 2963, 2967, 2969, 2971, 2972, 4282, 2973,
-     2975, 2978, 2976, 2977, 2984, 2994, 2999, 3001, 2992, 2996,
-     3002, 3004, 3006, 3011, 3015, 3008, 3018, 3012, 3020, 3022,
-     3023, 3024, 4282, 3026, 3029, 3025, 3033, 3034, 3035, 3036,
-
-     3045, 3048, 3038, 3040, 3049, 3051, 4282, 3042, 3053, 3054,
-     3056, 3059, 3063, 3065, 3066, 3067, 3070, 3071, 3075, 3077,
-     4282, 3073, 3078, 3080, 3081, 3087, 3088, 3090, 3089, 3091,
-     3092, 3097, 3098, 3109, 3107, 4282, 3099, 4282, 3113, 3114,
-     3116, 3117, 3120, 4282, 3121, 3123, 4282, 3125, 3127, 3129,
-     4282, 3128, 3130, 3124, 3133, 3139, 4282, 3147, 3148, 3155,
-     3151, 3152, 3156, 3158, 3154, 3159, 3160, 4282, 3163, 3162,
-     3172, 3164, 3173, 3174, 3175, 3176, 3177, 3179, 3187, 3182,
-     3183, 4282, 3186, 3185, 3198, 3191, 3203, 4282, 4282, 3195,
-     3206, 3208, 3196, 3212, 4282, 4282, 4282, 3215, 4282, 3200,
-
-     4282, 4282, 3216, 3219, 3226, 4282, 3228, 4282, 3210, 3229,
-     3217, 3220, 3231, 4282, 3232, 3223, 3238, 4282, 3234, 3245,
-     3240, 3241, 4282, 3247, 4282, 3248, 3253, 3250, 3257, 3254,
-     3260, 3261, 3263, 3265, 3270, 3267, 3271, 3272, 3275, 3276,
-     3277, 3278, 3280, 3281, 3283, 3286, 3291, 3292, 3293, 3294,
-     3296, 3297, 3299, 3302, 3300, 3303, 3304, 3309, 3311, 3324,
-     3328, 3329, 4282, 4282, 3313, 3321, 4282, 3305, 3315, 3319,
-     3334, 3335, 3336, 3337, 3338, 4282, 3343, 3340, 3345, 3346,
-     3347, 3348, 3350, 3351, 3352, 3358, 3360, 3370, 3361, 3365,
-     3369, 3372, 3373, 3374, 3376, 3382, 4282, 3378, 3375, 3383,
-
-     4282, 4282, 3385, 3386, 3391, 3392, 3396, 3398, 3399, 4282,
-     3400, 3404, 3410, 3406, 4282, 3412, 4282, 3417, 3401, 3422,
-     3413, 3424, 4282, 4282, 4282, 3425, 3427, 3428, 3429, 3430,
-     3431, 3432, 3433, 3434, 4282, 3436, 3439, 3443, 3440, 3447,
-     3454, 3450, 3456, 3464, 3460, 3462, 3459, 3467, 3469, 4282,
-     4282, 3470, 3477, 3473, 3481, 3480, 3482, 3479, 3485, 3486,
-     3490, 3489, 4282, 3493, 3492, 3491, 3498, 3499, 3503, 3504,
-     3506, 4282, 4282, 3502, 3507, 3510, 3514, 3516, 3517, 3518,
-     3520, 3522, 3524, 3531, 3537, 3530, 3534, 4282, 3523, 3540,
-     4282, 3542, 3543, 3544, 4282, 3547, 4282, 4282, 3550, 4282,
-
-     3545, 4282, 3551, 3554, 3561, 3563, 3568, 3569, 3573, 3575,
-     3558, 3564, 3562, 3580, 3577, 4282, 4282, 3588, 3583, 3584,
-     3591, 3586, 3589, 4282, 4282, 3592, 3595, 4282, 3594, 3596,
-     3599, 3600, 3601, 3602, 3608, 3603, 3609, 3605, 3625, 3627,
-     3629, 3615, 3632, 3620, 3610, 3633, 3623, 3634, 4282, 3639,
-     3641, 3635, 4282, 3646, 3647, 3648, 4282, 3649, 3651, 3655,
-     3656, 3658, 3669, 3661, 3662, 4282, 3676, 3670, 3660, 4282,
-     3664, 4282, 3666, 4282, 4282, 3677, 3680, 3683, 4282, 3685,
-     3687, 4282, 3694, 3686, 3684, 3696, 3697, 3705, 3698, 3701,
-     3706, 3707, 3708, 3716, 3709, 3714, 4282, 3711, 3717, 3719,
-
-     3720, 3721, 3722, 3723, 3724, 3728, 3735, 3729, 3738, 3741,
-     4282, 3745, 3747, 4282, 3749, 3742, 3751, 4282, 3753, 3750,
-     3754, 3757, 4282, 3761, 3759, 4282, 3763, 3765, 3767, 3769,
-     3768, 3771, 3772, 3775, 3779, 3780, 4282, 3784, 3786, 3794,
-     3790, 3795, 3791, 4282, 3797, 3793, 3805, 3800, 3804, 4282,
-     3808, 3801, 4282, 3811, 3814, 3813, 3816, 3823, 3825, 3829,
-     3826, 4282, 3833, 4282, 4282, 4282, 3815, 3834, 4282, 3839,
-     3830, 3836, 3840, 3842, 3843, 4282, 4282, 3845, 3846, 3851,
-     3847, 4282, 3853, 3855, 3857, 3858, 3860, 4282, 3861, 3863,
-     3864, 3865, 3867, 3868, 3871, 4282, 4282, 3872, 4282, 3878,
-
-     3880, 3886, 4282, 4282, 4282, 3888, 4282, 3896, 3891, 4282,
-     3898, 3899, 3900, 4282, 3902, 3903, 3904, 4282, 3905, 3906,
-     3907, 3912, 3921, 3909, 3913, 3926, 3916, 3922, 3927, 3928,
-     3929, 3930, 3932, 4282, 4282, 3936, 4282, 3939, 3943, 3945,
-     4282, 3946, 3951, 4282, 3953, 3947, 3956, 3954, 3961, 4282,
-     4282, 3940, 3962, 4282, 3970, 3963, 3966, 3967, 3972, 3968,
-     4282, 4282, 4282, 4282, 4282, 3973, 4282, 4282, 3974, 3975,
-     3979, 4282, 3980, 3981, 3983, 3982, 3987, 3988, 3985, 3991,
-     3989, 3998, 3999, 4012, 4013, 4016, 4002, 4017, 3994, 4018,
-     4026, 4021, 4024, 4282, 4025, 4282, 4027, 4282, 4028, 4036,
-
-     4037, 4029, 4038, 4034, 4282, 4032, 4044, 4039, 4041, 4042,
-     4049, 4052, 4056, 4050, 4060, 4062, 4065, 4066, 4067, 4064,
-     4079, 4075, 4282, 4077, 4076, 4078, 4086, 4081, 4085, 4282,
-     4082, 4088, 4089, 4090, 4091, 4094, 4093, 4101, 4104, 4106,
-     4109, 4096, 4114, 4110, 4118, 4119, 4121, 4120, 4282, 4122,
-     4123, 4124, 4129, 4130, 4132, 4133, 4134, 4137, 4140, 4142,
-     4145, 4146, 4282, 4149, 4282, 4282, 4150, 4156, 4157, 4159,
-     4161, 4282, 4282, 4282, 4190, 4197, 4204, 4211, 4218,  101,
-     4225, 4232, 4239, 4246, 4253, 4260, 4267, 4274
+      233,  237,  244,  238,  253,  260,  236,  257,  258,  263,
+
+      264,  266,  267,  268,  269,  271,  275,  280,  285,  283,
+      288,  286,  290,  292,  294,  296,  299,  302,  304,   63,
+      303,  308,  305,  310,  300,  322,  314,  325,  328,  327,
+      833,  340,  751,  343,  551,  350,  289,  248,  344,  158,
+      359,  363,    0,  339,  355,  364,  344,  357,  348,  361,
+      366,  362,  368,  378,  369,  380,  389,  387,  384,  391,
+      375,  395,  396,  386,  399,  397,  406,  408,  410,  411,
+      412,  413,  415,  414,  424,  426,  434,  430,  443,  438,
+      427,  439,  446,  445,  447,  454,  451,  452,  453,  455,
+      456,  457,  461,  463,  466,  467,  464,  468,  472,  470,
+
+      473,  484,  481,  489,  485,  490,  486,  497,  487,  496,
+      501,  504,  509,  510,  494,  507,  511,  513,  520,  518,
+      531,  524,  526,  515,  527,  528,  532,  370,  535,  542,
+      547,  516,  545,  548,  538,  550,  552,  556,  553,  564,
+      559,  567,  568,  566,  576,  563,  572,  574,  575,  577,
+      579,  580,  581,  584,  586,  589,  591,  592,  599,  597,
+      596,  601,  603,  606,  611,  605,  613,  623,  625,  614,
+      620,  629,  630,  633,  636,  642,  637,  640,  644,  626,
+      647,  654,  649,  657,  650,  653,  660,  659,  661,  666,
+      674,  667,  670,  676,  671,  678,  681,  679,  701,  687,
+
+      685,  711,  688,  689,  697,  698,  725,  699,  706,  707,
+      714,  690,  721,  730,  723,  728,  731,  738,  733,  734,
+      737,  749,  735,  741,  744,  739,  752,  759,  761,  748,
+      756,  762,  764,  767,  774,  768,  775,  776,  779,  783,
+      781,  788,  789,  791,  793,  792,  794,  802,  799,  800,
+      801,  807,  810,  811,  809,  814,  812,  818,  819, 4382,
+      824,  826,  827,  828,  829,  830, 4382,  832,  831,  834,
+      844,  836,  841,  840,  853,  862,  855,  863,  859,  860,
+      864,  866,  867,  868,  869,  872,  870,  890,  875,  878,
+      876,  899,  877,  882,  884,  894,  900,  903,  905,  907,
+
+      908,  910,  915,  912,  911,  913,  923, 4382,  931,  939,
+      914,  924,  925,  936,  941,  943,  934,  951,  947,  949,
+      948,  950,  953,  954,  958,  966,  962,  968,  972,  982,
+      978,  980,  987,  964,  983,  984,  961,  986,  995,  992,
+      991,  993,  994, 1005,  997, 1001, 1004, 1000, 1010, 1006,
+     1008, 1017, 1019, 1020, 1027, 1023, 1025, 1026, 1029, 1031,
+     1037, 1038, 1039, 1040, 1041, 1042, 1056, 1055, 1043, 1045,
+     1058, 1047, 1059, 1066, 1062, 1070, 1068, 1069, 1078, 1075,
+     1076, 1085, 1080, 1081, 1083, 1082, 1087, 1097, 1102, 1084,
+     1093, 1098, 1104, 1100, 1105, 1107, 1108, 1110, 1111, 1112,
+
+     1113, 1115, 1121, 1122, 1119, 1124, 1129, 1133, 1135, 1139,
+     1125, 1132, 1140, 1142, 1145, 1147, 1152, 1155, 1148, 1156,
+     1158, 1159, 1161, 1164, 1162, 1168, 1171, 1174, 1176, 4382,
+     1177, 1184, 1179, 1182, 1181, 1180, 1194, 1187, 1189, 1190,
+     1191, 1197, 4382, 1203, 4382, 4382, 1200, 4382, 4382, 1201,
+     1208, 1220, 1204, 1212, 1227, 1228, 1226, 1222, 1223, 1225,
+     1233, 1238, 1242, 1244, 1239, 1251, 1248, 1255, 1256, 1257,
+     1260, 1262, 1263, 1264, 1266, 1265, 1268, 1271, 1274, 1275,
+     1270, 1278, 1277, 1287, 1295, 1296, 1291, 1297, 1298, 1299,
+     1300, 1304, 1301, 1302, 1280, 1305, 1311, 1316, 1312, 4382,
+
+     1313, 1315, 1317, 1323, 1325, 1326, 1329, 1332, 1330, 1334,
+     4382, 1333, 1343, 1336, 1346, 1338, 1340, 1347, 1348, 1349,
+     1352, 1353, 1355, 1361, 1350, 1363, 1366, 1365, 1367, 1375,
+     1379, 1382, 1380, 1378, 1381, 1383, 1385, 1390, 1392, 1395,
+     1394, 1396, 1405, 1400, 1403, 1404, 1408, 1410, 1411, 1413,
+     1414, 1416, 1417, 1418, 1440, 1423, 1427, 1419, 1421, 1429,
+     1426, 1442, 1436, 1454, 1444, 1455, 1452, 1457, 1460, 1463,
+     1464, 1466, 1468, 1475, 1471, 1478, 1481, 1476, 1479, 1483,
+     1486, 1490, 1494, 1493, 1492, 1495, 1496, 1503, 1504, 4382,
+     1511, 1509, 1510, 1513, 1522, 1518, 1517, 1519, 1521, 1524,
+
+     1531, 1532, 1520, 1533, 1527, 1534, 1535, 1537, 1542, 1549,
+     4382, 1544, 1545, 1550, 1552, 1554, 1556, 1557, 1560, 1565,
+     1576, 1571, 4382, 1563, 1578, 1581, 1580, 1573, 1574, 1575,
+     1592, 1588, 1593, 1589, 1595, 1591, 1597, 1598, 1599, 4382,
+     1606, 1601, 1609, 1605, 1613, 1614, 1616, 1618, 1620, 1621,
+     1624, 1629, 1625, 1626, 4382, 1627, 1635, 1633, 1628, 1648,
+     1649, 1646, 1647, 1651, 1634, 1654, 1655, 1660, 1657, 1662,
+     1658, 1659, 4382, 1663,  130, 1664, 1665, 1666, 1676, 1679,
+     1669, 1681, 1685, 1687, 1688, 1689, 1691, 1692, 1428, 1693,
+     1695, 1697, 1698, 1699, 1703, 1700, 1705, 4382, 1715, 1713,
+
+     1719, 1722, 1704, 1723, 1725, 1727, 1728, 1730, 1729, 4382,
+     1738, 1739, 1731, 1742, 1733, 1744, 1746, 1749, 1745, 1750,
+     1751, 1754, 1755, 1756, 1758, 1763, 4382, 1768, 1765, 1766,
+     1767, 1775, 1773, 1783, 1781, 1784, 1786, 1788, 1801, 1790,
+     1793, 1797, 1794, 1807, 1796, 1808, 1811, 1817, 1815, 1819,
+     1821, 1822, 1823, 1831, 1833, 1829, 1838, 1830, 1851, 1845,
+     1847, 4382, 1849, 1840, 1854, 1856, 1863, 1859, 1860, 1861,
+     1866, 1864, 1867, 1868, 1870, 1871, 1832, 1876, 1879, 1883,
+     4382, 1884, 1885, 1886, 1892, 1889, 1898, 1895, 1893, 1902,
+     1899, 1903, 1904, 1906, 1915, 1907, 1917, 1913, 1918, 4382,
+
+     1927, 1928, 1924, 1932, 1930, 1933, 1934, 1936, 1937, 1938,
+     1940, 1947, 1942, 1944, 1792, 1946, 1943, 1948, 1950, 1951,
+     1953, 1954, 1966, 1955, 1967, 4382, 1968, 1975, 1973, 1977,
+     1979, 1980, 1981, 1988, 1983, 2000, 1992, 1991, 1984, 1989,
+     1999, 2001, 2004, 2005, 4382, 2007, 2008, 2009, 2012, 2013,
+     2014, 2016, 2018, 2030, 2032, 2033, 2023, 2010, 2020, 2034,
+     2036, 2040, 2043, 2050, 2051, 2046, 2052, 4382, 2055, 2056,
+     2057, 2058, 2059, 2062, 2063, 2064, 2067, 2071, 2069, 2068,
+     2072, 2081, 2084, 2085, 2088, 2089, 2090, 2092, 2093, 2094,
+     2095, 2102, 2097, 2098, 2099, 2103, 2100, 2104, 2106, 2110,
+
+     2112, 2120, 2124, 2126, 2129, 2127, 2128, 2130, 2136, 4382,
+     2134, 2135, 2145, 2141, 2148, 2139, 2147, 2149, 2156, 2158,
+     4382, 2153, 4382, 2161, 2162, 2170, 4382, 2168, 4382, 2173,
+     2160, 4382, 2174, 2178, 2175, 2180, 2181, 2182, 2183, 2185,
+     2188, 2186, 2193, 2189, 2191, 2196, 2197, 2199, 4382, 2208,
+     2201, 2203, 2209, 2213, 2212, 2214, 2215, 2220, 2221, 2226,
+     2222, 2229, 2230, 2237, 4382, 2233, 2236, 2238, 2239, 4382,
+     2240, 2242, 2248, 2244, 2246, 2251, 2253, 2252, 2260, 2273,
+     2269, 2259, 2270, 2255, 2276, 2277, 2281, 2283, 2284, 2285,
+     2292, 2288, 2295, 2287, 2291, 2298, 2294, 2290, 2300, 2302,
+
+     2304, 2307, 2311, 2306, 2315, 2312, 2313, 2314, 2316, 4382,
+     2325, 2326, 2329, 2330, 2327, 2335, 2317, 2336, 2338, 2340,
+     2343, 2339, 2344, 4382, 2352, 4382, 2345, 2357, 2359, 2361,
+     2362, 2363, 2353, 2365, 2366, 2371, 2373, 2384, 2376, 2377,
+     2379, 2386, 2387, 2389, 2388, 4382, 2390, 2391, 2393, 2395,
+     2398, 2403, 2412, 2410, 2396, 2424, 4382, 2426, 2399, 2431,
+     2416, 2434, 2429, 4382, 2430, 2438, 2433, 2436, 4382, 4382,
+     2437, 2440, 2441, 2442, 2443, 2453, 2449, 2451, 4382, 2458,
+     2444, 2402, 2461, 2463, 2467, 2470, 2452, 4382, 2459, 2477,
+     2471, 2473, 2478, 2481, 2482, 2483, 2492, 2484, 2487, 2488,
+
+     2498, 2499, 2507, 4382, 2495, 2504, 2509, 2510, 2256, 2491,
+     2512, 2514, 2515, 2516, 2517, 2518, 2519, 2521, 2526, 2523,
+     2528, 2537, 2535, 2536, 2539, 2541, 2542, 2545, 2547, 2549,
+     2550, 2557, 2558, 4382, 2566, 2552, 2569, 2553, 2564, 2572,
+     2573, 2581, 2576, 2565, 2577, 2586, 2579, 4382, 2593, 2582,
+     2598, 2583, 2591, 2607, 2602, 2584, 2603, 2609, 2605, 2612,
+     2610, 2614, 2615, 2618, 4382, 4382, 2619, 2620, 2622, 2623,
+     2625, 2626, 2627, 2633, 2629, 2640, 4382, 2637, 2645, 2643,
+     2644, 2652, 2654, 2650, 2657, 2658, 2659, 2647, 2660, 2661,
+     2665, 2668, 2669, 2671, 2673, 4382, 2676, 2674, 2678, 2680,
+
+     2675, 2682, 2688, 2685, 2699, 2690, 2692, 2700, 2708, 2704,
+     2713, 2715, 2705, 2710, 2723, 4382, 2714, 2721, 2716, 2718,
+     2730, 2719, 2733, 2732, 4382, 2734, 2735, 2739, 2746, 2729,
+     2748, 2747, 2750, 2751, 2752, 4382, 2754, 4382, 2760, 2756,
+     4382, 2758, 2762, 2765, 2766, 2767, 2777, 2769, 2771, 2773,
+     2778, 2779, 2781, 2788, 2784, 4382, 2792, 2785, 2787, 2790,
+     4382, 2795, 4382, 2800, 4382, 2802, 2801, 2811, 2806, 2807,
+     2810, 2814, 2818, 4382, 2820, 2809, 2821, 2819, 2824, 2825,
+     2830, 2831, 2832, 2833, 2834, 4382, 2835, 2838, 2847, 2836,
+     2839, 2841, 2851, 2849, 4382, 2852, 2860, 2861, 2863, 2864,
+
+     4382, 2865, 2870, 4382, 2866, 2876, 2867, 2873, 2881, 2877,
+     2884, 2885, 2886, 2894, 2887, 2891, 2890, 4382, 2895, 2896,
+     2900, 2901, 2897, 2905, 2913, 2911, 2915, 2908, 2918, 2921,
+     2923, 2924, 2909, 2928, 2929, 2931, 4382, 2934, 2936, 4382,
+     2933, 2937, 2940, 2944, 4382, 2942, 4382, 2945, 2947, 2949,
+     2950, 2953, 2954, 2956, 2964, 2965, 2966, 2967, 2976, 2973,
+     2968, 4382, 4382, 2978, 2984, 2982, 2987, 2989, 2992, 2979,
+     3000, 2993, 2996, 3001, 4382, 3003, 3002, 4382, 3005, 3008,
+     3009, 3010, 3011, 3015, 3012, 3018, 3019, 3014, 3021, 3020,
+     3024, 4382, 3031, 3034, 3027, 3035, 3037, 3036, 3038, 4382,
+
+     3040, 3042, 3044, 3039, 3049, 3053, 3060, 3065, 3068, 3056,
+     3062, 3069, 3072, 3074, 3077, 4382, 3078, 3076, 3079, 3080,
+     3086, 3088, 3089, 3091, 3093, 3095, 3098, 3100, 3101, 4382,
+     3102, 3104, 3105, 3110, 3112, 3113, 3115, 3116, 3122, 3106,
+     3123, 3126, 3128, 4382, 3129, 3131, 3133, 3135, 3137, 3134,
+     3141, 3142, 3143, 3144, 3146, 3151, 3155, 4382, 3152, 3156,
+     3158, 3159, 3163, 3166, 3168, 3165, 3167, 3169, 3177, 3174,
+     3181, 3185, 4382, 3179, 4382, 3182, 3192, 3196, 3194, 3187,
+     4382, 3197, 3201, 4382, 3202, 3200, 3205, 4382, 3208, 3213,
+     3204, 3215, 3220, 4382, 3222, 3223, 3231, 3230, 3226, 3232,
+
+     3234, 3235, 3236, 3237, 4382, 3239, 3241, 3248, 3245, 3242,
+     3251, 3252, 3253, 3254, 3256, 3264, 3259, 3260, 4382, 3263,
+     3267, 3275, 3198, 3268, 4382, 4382, 3273, 3276, 3280, 3281,
+     3284, 4382, 3282, 3294, 3289, 3291, 3293, 4382, 4382, 3296,
+     4382, 3292, 4382, 4382, 3298, 3299, 3306, 4382, 3309, 4382,
+     3317, 3312, 3300, 3297, 3315, 4382, 3314, 3318, 3322, 4382,
+     3323, 3331, 3324, 3326, 4382, 3328, 4382, 3334, 3337, 3338,
+     3344, 3339, 3340, 3345, 3348, 3352, 3356, 3349, 3357, 3358,
+     3360, 3362, 3363, 3364, 3366, 3365, 3368, 3369, 3373, 3377,
+     3379, 3380, 3381, 3382, 3384, 3387, 3386, 3388, 3391, 3396,
+
+     3398, 3390, 3407, 3409, 4382, 4382, 3400, 3402, 4382, 3412,
+     3415, 3414, 3417, 3416, 3419, 3420, 3421, 4382, 3424, 3426,
+     3427, 3434, 3428, 3429, 3430, 3440, 3431, 3452, 3454, 3455,
+     3442, 3444, 3446, 3457, 3458, 3461, 3463, 3464, 3470, 3471,
+     3475, 4382, 3467, 4382, 3476, 3472, 3477, 4382, 4382, 3479,
+     3480, 3488, 3482, 3484, 3490, 3491, 4382, 3493, 3494, 3501,
+     3503, 4382, 3505, 4382, 3507, 3509, 3511, 3512, 3514, 4382,
+     4382, 4382, 3518, 3515, 3520, 3521, 3522, 3524, 3526, 3523,
+     3532, 4382, 3529, 3534, 3536, 3535, 3546, 3548, 3549, 3552,
+     3559, 3555, 3561, 3543, 3564, 3566, 4382, 4382, 3554, 3574,
+
+     3570, 3577, 3572, 3578, 3579, 3569, 3581, 3580, 3582, 4382,
+     3587, 3586, 3592, 3593, 3595, 3596, 3597, 3599, 4382, 4382,
+     3600, 3601, 3603, 3612, 3607, 3609, 3602, 3614, 3615, 4382,
+     3616, 4382, 3620, 3623, 3630, 3629, 3625, 3632, 4382, 3635,
+     3636, 4382, 3638, 3639, 3641, 4382, 3645, 4382, 4382, 3648,
+     4382, 3643, 4382, 3650, 3651, 3655, 3657, 3659, 3661, 3665,
+     3667, 3668, 3669, 3677, 3673, 3674, 4382, 4382, 3681, 3676,
+     3679, 3688, 3684, 3687, 4382, 4382, 3689, 3690, 4382, 3692,
+     3695, 3696, 3697, 3698, 3700, 3703, 3704, 3708, 3705, 3706,
+     3710, 3719, 3721, 3722, 3725, 3525, 3726, 3728, 3729, 4382,
+
+     3731, 3733, 3732, 4382, 3739, 3734, 3743, 3746, 3744, 4382,
+     3740, 3755, 3752, 3757, 3747, 3765, 3760, 3761, 4382, 3768,
+     3763, 3769, 4382, 3771, 4382, 3774, 4382, 4382, 3775, 3776,
+     3778, 4382, 3779, 3788, 4382, 3783, 3785, 3790, 3793, 3795,
+     3797, 3798, 3802, 3799, 3804, 3805, 3813, 3806, 3815, 4382,
+     3808, 3811, 3817, 3819, 3818, 3821, 3824, 3825, 3828, 3829,
+     3833, 3838, 3835, 4382, 3842, 3846, 4382, 3839, 4382, 3848,
+     3849, 3850, 4382, 3852, 3843, 3853, 3856, 4382, 3857, 3864,
+     4382, 3861, 3867, 3869, 3862, 3870, 3872, 3873, 3880, 3874,
+     3881, 4382, 3885, 3886, 3894, 3891, 3892, 3887, 4382, 3896,
+
+     3898, 3908, 3903, 3900, 4382, 3910, 3904, 4382, 3912, 3913,
+     3914, 3919, 3916, 3926, 3930, 3922, 4382, 3932, 4382, 4382,
+     3933, 4382, 3934, 3935, 4382, 3938, 3939, 3940, 3941, 3943,
+     3944, 4382, 4382, 3945, 3946, 3948, 3957, 4382, 3951, 3955,
+     3958, 3961, 3964, 4382, 3966, 3965, 3968, 3967, 3972, 3976,
+     3977, 4382, 4382, 3978, 4382, 3980, 3988, 3991, 4382, 4382,
+     4382, 3993, 4382, 4000, 4004, 4003, 4382, 4006, 3994, 3996,
+     4382, 4009, 4011, 3969, 4382, 4013, 4014, 4015, 4020, 4022,
+     4017, 4024, 4026, 4027, 4028, 4030, 4033, 4034, 4035, 4037,
+     4382, 4382, 4041, 4382, 4382, 4045, 4047, 4049, 4382, 4050,
+
+     4056, 4382, 4058, 4053, 4060, 4062, 4064, 4382, 4382, 4066,
+     4067, 4382, 4074, 4069, 4071, 4072, 4075, 4073, 4382, 4382,
+     4382, 4382, 4382, 4078, 4382, 4382, 4082, 4079, 4080, 4382,
+     4085, 4087, 4088, 4090, 4092, 4095, 4096, 4097, 4100, 4103,
+     4104, 4106, 4114, 4117, 4118, 4119, 4107, 4122, 4131, 4126,
+     4128, 4382, 4129, 4382, 4130, 4382, 4133, 4141, 4142, 4139,
+     4134, 4138, 4382, 4145, 4146, 4143, 4151, 4154, 4149, 4155,
+     4156, 4158, 4166, 4169, 4171, 4173, 4174, 4163, 4181, 4184,
+     4382, 4180, 4172, 4185, 4192, 4188, 4189, 4382, 4190, 4193,
+     4194, 4196, 4197, 4200, 4199, 4210, 4214, 4201, 4216, 4203,
+
+     4220, 4217, 4221, 4208, 4225, 4226, 4382, 4229, 4231, 4232,
+     4233, 4237, 4235, 4239, 4240, 4243, 4246, 4248, 4250, 4255,
+     4382, 4256, 4382, 4382, 4259, 4244, 4257, 4266, 4268, 4382,
+     4382, 4382, 4290, 4297, 4304, 4311, 4318,  101, 4325, 4332,
+     4339, 4346, 4353, 4360, 4367, 4374
     } ;
 
-static yyconst flex_int16_t yy_def[2189] =
+static yyconst flex_int16_t yy_def[2247] =
     {   0,
-     2174,    1, 2175, 2175, 2176, 2176, 2177, 2177, 2178, 2178,
-     2179, 2179, 2174, 2180, 2174, 2174, 2174, 2174, 2181, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2182, 2174, 2174, 2174, 2182, 2183, 2174, 2174, 2174, 2183,
-     2184, 2174, 2174, 2174, 2174, 2184, 2185, 2174, 2174, 2174,
-     2185, 2186, 2174, 2187, 2174, 2186, 2186, 2180, 2180, 2174,
-     2188, 2181, 2188, 2181, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2182, 2182, 2183, 2183, 2184, 2184, 2174, 2185, 2185, 2186,
-     2186, 2187, 2187, 2186, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2186, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2186, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2174, 2186, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2186,
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2174, 2174, 2180, 2174, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2186, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2186, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2174,
-     2180, 2180, 2180, 2174, 2180, 2174, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2174, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2174,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2174, 2180, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2174, 2180, 2174, 2180, 2174,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2174,
-     2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2174, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2174, 2180, 2180, 2180,
-     2174, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2174, 2174, 2180,
-     2180, 2180, 2180, 2180, 2174, 2174, 2174, 2180, 2174, 2180,
-
-     2174, 2174, 2180, 2180, 2180, 2174, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2174, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2174, 2174, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-
-     2174, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174,
-     2180, 2180, 2180, 2180, 2174, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2174, 2174, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174,
-     2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2174, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180,
-     2174, 2180, 2180, 2180, 2174, 2180, 2174, 2174, 2180, 2174,
-
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2174, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2174, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2174,
-     2180, 2174, 2180, 2174, 2174, 2180, 2180, 2180, 2174, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2180, 2180, 2174, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2174, 2180, 2180, 2174, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2174,
-     2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2174, 2180, 2174, 2174, 2174, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2174, 2180, 2180, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2174, 2174, 2180, 2174, 2180,
-
-     2180, 2180, 2174, 2174, 2174, 2180, 2174, 2180, 2180, 2174,
-     2180, 2180, 2180, 2174, 2180, 2180, 2180, 2174, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2174, 2180, 2174, 2180, 2180, 2180,
-     2174, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2174,
-     2174, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180,
-     2174, 2174, 2174, 2174, 2174, 2180, 2174, 2174, 2180, 2180,
-     2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2174, 2180, 2174, 2180, 2174, 2180, 2180,
-
-     2180, 2180, 2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2174, 2180, 2180, 2180, 2180, 2180, 2180, 2174,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2174, 2180,
-     2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180,
-     2180, 2180, 2174, 2180, 2174, 2174, 2180, 2180, 2180, 2180,
-     2180, 2174, 2174,    0, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174
+     2232,    1, 2233, 2233, 2234, 2234, 2235, 2235, 2236, 2236,
+     2237, 2237, 2232, 2238, 2232, 2232, 2232, 2232, 2239, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2240, 2232, 2232, 2232, 2240, 2241, 2232, 2232, 2232, 2241,
+     2242, 2232, 2232, 2232, 2232, 2242, 2243, 2232, 2232, 2232,
+     2243, 2244, 2232, 2245, 2232, 2244, 2244, 2238, 2238, 2232,
+     2246, 2239, 2246, 2239, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2240, 2240, 2241, 2241, 2242, 2242, 2232, 2243, 2243, 2244,
+     2244, 2245, 2245, 2244, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2244, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2244, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2244, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2244, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2232, 2238, 2232, 2232, 2238, 2232, 2232, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2244, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2232, 2238, 2244, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2232, 2238, 2238, 2238, 2232, 2238, 2232, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2232, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238,
+     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+     2232, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+
+     2232, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2238, 2232, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
+     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238,
+     2232, 2238, 2232, 2232, 2238, 2238, 2238, 2232, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2232, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2232, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2232, 2238, 2238, 2238, 2232, 2232, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232,
+     2232, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
+     2238, 2232, 2238, 2238, 2238, 2232, 2238, 2232, 2232, 2238,
+     2232, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2232, 2232, 2238, 2238, 2232, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
+     2238, 2238, 2232, 2238, 2232, 2238, 2232, 2232, 2238, 2238,
+     2238, 2232, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2232, 2238, 2232, 2238,
+     2238, 2238, 2232, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238,
+
+     2238, 2238, 2238, 2238, 2232, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2232, 2232,
+     2238, 2232, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2232, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2232, 2238, 2232, 2238, 2238, 2238, 2232, 2232,
+     2232, 2238, 2232, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2232, 2238, 2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2232, 2238, 2232, 2232, 2238, 2238, 2238, 2232, 2238,
+
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2232, 2232, 2238,
+     2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2232,
+     2232, 2232, 2232, 2238, 2232, 2232, 2238, 2238, 2238, 2232,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2232, 2238, 2232, 2238, 2232, 2238, 2238, 2238, 2238,
+     2238, 2238, 2232, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+
+     2238, 2238, 2238, 2238, 2238, 2238, 2232, 2238, 2238, 2238,
+     2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
+     2232, 2238, 2232, 2232, 2238, 2238, 2238, 2238, 2238, 2232,
+     2232,    0, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232, 2232, 2232, 2232, 2232
     } ;
 
-static yyconst flex_uint16_t yy_nxt[4323] =
+static yyconst flex_uint16_t yy_nxt[4423] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   14,   18,   20,   21,   14,   22,   23,   24,   25,
@@ -1152,7 +1188,7 @@ static yyconst flex_uint16_t yy_nxt[4323] =
        42,   43,   44,   42,   43,   44,   47,   48,   47,   48,
        49,   45,   49,   68,   45,   68,   68,   50,   68,   50,
        52,   53,   54,   55,   68,   18,   52,   53,   54,   55,
-      173,   18,   56,   58,   59,   60,   69,   69,   56,   58,
+      203,   18,   56,   58,   59,   60,   69,   69,   56,   58,
        59,   60,   70,   69,   61,   69,   71,   87,   75,   76,
        61,   15,   16,   17,   63,   64,   65,   73,  107,   73,
 
@@ -1173,457 +1209,468 @@ static yyconst flex_uint16_t yy_nxt[4323] =
        68,   73,   69,  153,   69,  148,   69,   73,   74,  154,
        69,  159,   69,  150,   69,   69,   69,   69,  149,   69,
        69,   69,  155,  156,  166,  163,  161,   69,  157,  158,
-      160,  139,  167,  164,  165,  168,   69,   69,  174,  169,
-       69,   69,  170,   69,  177,  175,   69,   69,  178,   69,
-      181,   69,   69,   69,  182,  171,  172,  180,  184,   69,
-       69,  179,  183,   69,  188,  176,  185,   69,   69,   69,
-
-       69,  193,  186,   69,  190,   69,   69,  187,  191,   69,
-       69,  189,   69,   69,   69,  202,  195,  192,  194,   69,
-      197,   69,  196,  199,  203,  198,  201,  200,   69,  204,
-       69,  208,  206,   69,   69,  207,  209,   69,  211,   69,
-      131,  131,  212,  133,  214,  135,  133,  135,  135,  205,
-      135,  138,  138,  137,   69,  213,  140,  210,  140,  140,
-       73,  140,   73,   73,  141,   73,   69,  215,  217,  218,
-       69,  216,  143,   69,   69,   69,   69,   69,  219,   69,
-      225,  222,   69,  228,   69,  229,   69,  226,  224,  227,
-      221,   69,  220,  230,   69,   69,   69,  223,  231,   69,
-
-      233,   69,  238,   69,  240,  234,   69,   69,  241,   69,
-      235,  243,   69,  239,  244,  232,  236,  237,   69,   69,
-       69,   69,   69,   69,   69,  252,  245,  250,  251,  242,
-      253,  247,   69,  246,  248,   69,  259,  258,  249,  260,
-      262,  256,  254,   69,  255,   69,   69,   69,  257,   69,
-       69,  261,  265,  267,  268,  266,  263,   69,   69,   69,
-       69,   69,   69,   69,  269,   69,   69,   69,  271,   69,
-      264,  273,   69,   69,  270,  275,   69,  277,   69,   69,
-       69,   69,  276,  272,  281,  282,  284,   69,  274,  279,
-      287,  278,   69,   69,   69,   69,   69,  289,  280,   69,
-
-       69,  290,  283,  291,  295,  285,  286,   69,  294,   69,
-       69,  297,  293,  288,   69,   69,  298,   69,  292,  141,
-       69,   69,   69,   69,  304,   69,  306,  305,  296,  303,
-       69,  301,   69,  299,   69,   69,   69,  308,  300,  302,
-      307,   69,   69,   69,  311,  313,   69,   69,  314,  310,
-       69,  315,  309,  316,   69,  318,   69,   69,  319,   69,
-       69,  317,   69,  320,  323,  322,  312,   69,   69,  325,
-       69,  327,   69,  328,  321,   69,  324,   69,   69,  330,
-       69,   69,  326,  329,   69,   69,   69,  335,   69,   69,
-      331,  336,   69,   69,   69,  340,  338,  334,  332,   69,
-
-       69,   69,  333,  343,  344,   69,   69,  337,   69,   69,
-       69,  339,  342,   69,  346,   69,  351,  341,  345,  350,
-       69,  353,  347,  348,   69,  349,   69,  354,  355,  356,
-      357,   69,   69,   69,  352,  358,   69,  359,   69,  361,
-      360,   69,  362,  364,   69,  363,  365,   69,  366,   69,
-       69,   69,   69,  367,  368,  372,   69,  374,   69,   69,
-      431,   69,  369,   69,  375,   69,   69,  371,   69,   69,
-       69,  370,  378,  376,  379,  386,  373,  385,   69,  377,
-      380,  381,   69,   69,  382,   69,  383,  384,   69,   69,
-       69,   69,   69,  392,  141,  387,   69,   69,   69,  136,
-
-      403,  410,  391,  388,  390,  389,  394,   69,   69,  393,
-       69,  402,  395,  396,  404,  406,  407,   69,  409,  405,
-       69,   69,  397,  408,  398,  399,  400,   69,   69,  401,
-       69,   69,  417,   69,   69,  415,   69,   69,   69,  421,
-      411,  412,   69,  414,   69,   69,  416,  413,  419,  424,
-       69,  420,   69,  418,  425,  426,   69,   69,  423,  422,
-       69,   69,   69,   69,   69,  432,  433,   69,  428,   69,
-      427,   69,  429,  134,  430,   69,  437,  436,  440,   69,
-      441,  434,  435,  442,   69,  444,   69,  438,   69,  439,
-      447,   69,  445,  443,  446,   69,   69,   69,  450,   69,
-
-      448,   69,   69,  453,  451,  454,   69,   69,   69,   69,
-      455,   69,   69,  457,  452,   69,  449,   69,  458,   69,
-      462,  461,   69,   69,  459,   69,   69,  460,  456,   69,
-      463,   69,  465,   69,  466,  469,   69,  468,   69,   69,
-       69,   69,  476,  464,  467,   69,   69,   69,   69,   69,
-      471,  478,  482,   69,  477,  475,  470,  472,   69,  473,
-      474,  479,  481,  483,   69,   69,  480,  485,   69,   69,
-      486,   69,   69,   69,   69,   69,  489,   69,   69,  491,
-       69,   69,   69,   69,  503,  132,  487,  484,  490,   69,
-       69,  492,  488,  511,  502,  504,  493,   69,  494,   69,
-
-      500,  501,  505,  495,   69,  496,   69,  507,  508,  506,
-       69,  509,   69,  497,   69,   69,  498,   69,   69,  510,
-       69,   69,  515,  499,   69,   69,  141,  512,  521,  516,
-      520,  519,   69,  513,   69,   69,  523,  514,   69,  518,
-      517,  526,   69,  527,  522,   69,  525,  529,  524,   69,
-       69,   69,   69,   69,  531,   69,   69,  528,   69,  534,
-      533,   69,  530,   69,  538,   69,   69,  532,   69,  539,
-       69,  541,   69,  548,  535,  542,   69,  536,  540,  537,
-      543,  544,   69,  545,   69,  546,   69,  547,   69,   69,
-       69,   69,  552,   69,  551,   69,   69,  550,   69,  553,
-
-       69,  555,  557,   69,   69,   69,   69,  549,   69,  558,
-       69,  554,   69,  560,   69,  564,   69,  559,  561,   69,
-      556,  566,  562,  563,  565,   69,  568,  569,  570,   69,
-      567,   69,  571,   69,   69,  572,   69,   69,   69,  574,
-       69,  575,   69,   69,   69,  578,   69,   69,  582,   69,
-      584,  577,  579,  576,   69,  583,  581,  573,  580,   69,
-       69,   69,  585,  589,  587,  586,   69,  591,   69,   69,
-       69,  590,   69,   69,   69,  588,   69,  592,  594,   69,
-      598,  593,   69,  595,   69,  596,   69,  599,   69,   69,
-       69,  600,  597,  601,  604,  608,  605,   69,  607,   69,
-
-      603,  606,   69,   69,   69,  609,  611,   69,  602,   69,
-       69,   69,   69,   69,   69,   69,  616,   69,  610,   69,
-      622,   69,  617,   69,   69,  612,   69,  613,  626,  614,
-      618,  615,  619,   69,  621,   69,  620,   69,  625,   69,
-      623,   69,  624,   69,  627,   69,  628,   69,   69,   69,
-       69,  629,  632,  633,  634,  635,  631,   69,  630,   69,
-       69,   69,  636,   69,   69,  141,  638,  637,   69,  639,
-      642,  643,  641,   69,   69,  640,   69,  644,   69,  646,
-      650,   69,   69,  648,   69,  645,   69,  647,  652,   69,
-      655,   69,   69,   69,  653,  649,   69,   69,   69,  656,
-
-       69,  651,   69,   69,   69,  660,   69,  654,   69,  661,
-      657,  667,  662,  665,  668,   69,  670,  659,  658,  663,
-      666,   69,  664,   69,  671,  669,  672,  681,   69,  683,
-       69,   69,   69,   69,  673,  674,  680,  675,   69,  718,
-      676,  684,  685,   69,   69,  677,  682,   69,   69,  687,
-       69,  678,  679,   69,  686,   69,  689,   69,  690,  688,
-      691,   69,   69,   69,  693,   69,  692,   69,   69,  695,
-       69,  699,   69,   69,   69,  694,  698,   69,   69,  705,
-       69,   69,  141,  704,  709,  696,  697,  700,  701,  703,
-       69,  702,  707,  708,   69,  706,   69,   69,   69,   69,
-
-      710,   69,   69,   69,  711,  712,   69,  714,  717,   69,
-      715,  720,   69,   69,   69,   69,   69,   69,   69,  713,
-      719,  724,   69,  722,  723,  716,   69,  725,   69,  727,
-      726,   69,  721,   69,   69,   69,   69,  731,  733,   69,
-      729,  728,  734,   69,  736,  732,   69,   69,   69,   69,
-       69,   69,   69,   69,   69,  742,  735,  730,  741,   69,
-       69,  745,   69,  749,   69,  748,   69,  737,  738,  739,
-      740,  743,  746,  744,   69,  752,  747,  753,   69,   69,
-       69,   69,  754,   69,   69,   69,  750,  761,  751,  758,
-       69,  760,  756,   69,   69,   69,   69,  762,  755,  765,
-
-      757,   69,  767,   69,   69,   69,  759,  769,  141,  764,
-       69,   69,   69,  763,   69,  771,   69,   69,   69,   69,
-      783,  766,  768,   69,  139,  770,   69,  784,   69,   69,
-      774,  772,   69,  787,   69,   69,   69,  775,  773,  776,
-       69,  785,  802,  777,  830,  778,   69,  788,  790,  779,
-       69,  780,  791,  786,   69,  789,  781,  792,   69,   69,
-      793,  782,   69,  794,   69,   69,   69,  796,   69,  795,
-      798,  804,   69,  803,   69,  805,   69,  797,  799,   69,
-       69,  812,  801,   69,  806,   69,  811,  800,   69,  807,
-       69,  808,   69,  815,   69,  816,   69,   69,   69,  813,
-
-      814,   69,  809,   69,  817,  821,   69,  822,  818,  810,
-       69,   69,  823,  824,   69,  827,  819,  820,   69,  828,
-      825,   69,   69,   69,  826,   69,   69,   69,   69,   69,
-       69,   69,  831,  835,  833,   69,   69,  841,   69,   69,
-       69,  829,  832,   69,  837,  839,  834,  840,   69,  836,
-       69,  838,   69,  842,  843,  846,   69,  847,  844,   69,
-      851,  848,   69,  845,   69,  850,   69,   69,  849,   69,
-      856,  854,   69,  857,   69,  852,  855,   69,   69,  862,
-       69,  858,   69,  853,   69,   69,  859,  864,   69,   69,
-      137,   69,   69,   69,  860,  861,  866,  868,  869,   69,
-
-       69,   69,  863,   69,   69,  867,  871,  874,   69,  865,
-      873,  870,  875,   69,   69,   69,   69,  872,  877,   69,
-       69,  882,   69,   69,   69,   69,   69,   69,  883,  884,
-       69,  876,  878,  881,   69,  879,  887,  886,  888,  880,
-      885,  889,  890,   69,   69,  891,   69,   69,   69,  892,
-      893,   69,   69,  897,   69,   69,   69,   69,   69,   69,
-      895,   69,  894,  906,  896,  899,   69,   69,   69,   69,
-      907,   69,  898,  908,  900,  903,   69,   69,  902,  909,
-       69,  904,   69,  901,   69,  910,   69,  905,   69,   69,
-      915,  913,   69,   69,  919,   69,  911,   69,  912,  916,
-
-       69,   69,   69,  914,  917,   69,   69,  922,   69,  927,
-      924,  920,  918,  929,   69,   69,   69,   69,  921,  928,
-      931,  925,  923,   69,  926,   69,   69,   69,   69,  930,
-      934,   69,  933,  936,  932,  938,   69,   69,   69,   69,
-      940,  939,   69,   69,   69,  935,  937,   69,   69,   69,
-      944,   69,   69,  941,   69,   69,  945,  943,  942,   69,
-      949,   69,  990,   69,   69,   69,  946,  948,  953,  947,
-      950,  951,  952,  954,   69,  955,   69,  959,   69,   69,
-      960,  958,  956,  957,   69,  961,   69,   69,   69,  965,
-       69,   69,   69,  968,   69,  969,  970,  962,  963,   69,
-
-      964,  967,   69,  966,   69,   69,   69,  974,   69,  972,
-      973,  971,   69,   69,   69,   69,  980,  981,  977,   69,
-       69,  976,   69,   69,  982,   69,   69,   69,  975,  978,
-      983,  991,  979,   69,  984,   69,  989,  992,   69,  985,
-       69,  986,  993,  987,   69,  988,  996,   69,   69,  995,
-       69,  997,   69,   69,   69,   69,  994,  999,  998,   69,
-       69, 1001,   69,   69, 1002,   69, 1000, 1007, 1003, 1004,
-     1008,   69,   69, 1005, 1010,   69,   69, 1012, 1009, 1011,
-       69, 1014,   69,   69, 1006, 1015, 1016,   69, 1017,   69,
-     1019,   69,   69,   69,   69,   69,   69, 1024, 1021, 1013,
-
-     1023,   69, 1022,   69,   69,   69,   69, 1029, 1030, 1026,
-     1018, 1027, 1020,   69,   69,   69, 1032,   69, 1028, 1025,
-     1031,   69,   69, 1036,   69, 1034, 1033,   69,   69,   69,
-     1040,   69, 1035,   69,   69,   69,   69,   69,   69, 1047,
-       69,   69,   69,   69,  136, 1041, 1044, 1037, 1038, 1045,
-       69, 1042, 1039, 1043,   69, 1046, 1052,   69,   69, 1051,
-     1048, 1050, 1056, 1054,   69, 1053, 1049, 1057,   69, 1055,
-       69,   69,   69, 1058,   69,   69, 1066, 1064, 1059, 1063,
-       69,   69,   69,   69,   69, 1060,   69, 1061, 1067,   69,
-     1062,   69, 1068,   69, 1065,   69, 1072,   69,   69,   69,
-
-       69, 1075, 1069,   69,   69,   69,   69, 1071,   69,   69,
-     1088, 1073, 1070, 1083, 1079, 1074, 1076, 1078, 1077, 1080,
-       69, 1081, 1082,   69,   69,   69,   69, 1084, 1085,   69,
-       69,   69, 1093, 1094, 1087, 1090, 1092,   69,   69,   69,
-       69, 1089, 1086,   69, 1095,   69, 1096, 1097,   69,   69,
-       69, 1091,   69, 1098, 1102, 1100,   69, 1101, 1104, 1099,
-     1106,   69,  134, 1105,   69, 1107,   69,   69,   69,   69,
-     1112,   69,   69,   69, 1116, 1103,   69,   69,   69, 1115,
-       69, 1108,   69,   69,   69,   69, 1109, 1110, 1111,   69,
-      132, 1114, 1121,   69, 1124,   69, 1117, 1113, 1125,   69,
-
-       69, 1118, 1119, 1120, 1123, 1128, 1122, 1127,   69,   69,
-       69, 1126,   69, 1129,   69,   69,   69,   69, 1133, 1138,
-       69, 1131, 1134, 1130,   69,   69,   69, 1132,   69, 1139,
-     1140, 1137,   69, 1144,   69, 1135,   69, 1136,   69,   69,
-     1145,   69,   69, 1147, 1149, 1141, 1142,   69, 1148,   69,
-       69,   69, 1143,   69, 1146, 1150,   69, 1151,   69,   69,
-       69, 1154, 1153,   69,   69, 1152, 1155, 1156, 1159, 1158,
-     1160,   69,   69,   69,   69, 1163, 1161, 1157,   69,   69,
-       69,   69,   69,   69, 1166,   69, 1168, 1169,   69,   69,
-     1165,   69, 1172, 1162, 1173,   69,   69, 1171,   69,   69,
-
-     1164, 1167,   69, 1170, 1177,   69,   69, 1176, 1179,   69,
-     1180, 1181, 1183,   69,   69, 1174, 1175,   69,   69, 1185,
-       69,   69, 1178,   69,   69,   69, 1189, 1184,   69, 1182,
-     1187,   69, 1190, 1186,   69,   69,   69, 1193, 1199, 2174,
-       69, 1191,   69, 1192,   69, 1188,   69, 1194,   69, 1196,
-       69, 1201, 1197, 1200,   69, 1202, 1195, 1204,   69, 1206,
-     1205,   69,   69,   69, 1198, 1203,   69, 1210,   69,   69,
-     1212,   69,   69,   69, 1211,   69,   69, 1214,   69, 1207,
-     1216, 1208,   69, 1209, 1215,   69,   69,   69, 1224, 1217,
-       69, 1213,   69,   69,   69,   69,   69,   69, 1218,   69,
-
-     1220, 1221, 1219, 1223, 1222, 1229,   69,   69,   69,   69,
-     1227,   69, 1231, 1225,   69, 1226, 1233,   69, 1228, 1230,
-       69, 1240,   69, 1232, 1241,   69, 1234, 1236,   69, 1235,
-       69, 1242,   69,   69,   69, 1237,   69, 1244,   69, 1239,
-     1238,   69, 1246, 2174,   69, 1251,   69, 1250,   69, 1243,
-     1245,   69,   69, 1248,   69, 1247, 1249, 1252,   69, 1254,
-       69, 1253,   69,   69, 1258,   69, 1255,   69, 1256,   69,
-     1261,   69,   69,   69, 1263, 2174, 1257, 1264,   69, 1265,
-       69, 1260, 1267, 1262, 1272, 1268, 1270, 1259, 1274, 1269,
-       69, 1271,   69, 1266,   69,   69, 1276,   69, 1273,   69,
-
-     1275, 1279,   69, 1277,   69,   69,   69,   69, 1281,   69,
-       69,   69,   69,   69, 1282, 1288,   69, 1280, 1284, 1278,
-       69,   69, 1285, 1291,   69, 1283,   69,   69,   69, 1286,
-     1293, 1287, 1289, 1292,   69,   69,   69, 1297, 1290, 1294,
-     1295, 1296,   69, 1300,   69,   69,   69,   69,   69,   69,
-     1298,   69, 1307, 1302,   69,   69,   69, 1299,   69, 1301,
-     1303, 1304, 1310, 1311,   69,   69, 1305, 1308, 1312, 1313,
-       69, 1306, 1309,   69,   69, 1316,   69,   69, 1314,   69,
-       69, 1318,   69, 1315,   69,   69,   69,   69,   69, 1317,
-     1322,   69,   69,   69,   69, 1323, 1326, 1331,   69, 1324,
-
-     1319, 1327, 1321, 1325, 1320, 1332,   69,   69,   69, 1330,
-       69,   69,   69, 1329, 1328, 1336,   69, 1338,   69, 1340,
-       69,   69,   69, 1342,   69, 1341, 1334, 1333, 1335,   69,
-     1337,   69, 1344, 1339, 1343, 1346,   69,   69,   69, 1348,
-     1345,   69, 1349,   69,   69, 1350, 1351,   69,   69, 1347,
-     1358,   69,   69,   69,   69,   69,   69, 1356, 1360, 1352,
-     1353, 1354,   69, 1361,   69,   69, 1355, 1362, 1357, 1364,
-       69, 1359,   69, 1366,   69, 1363,   69, 1369, 1370,   69,
-       69, 1365, 1367, 1371, 1373,   69,   69, 1368,   69,   69,
-       69,   69, 1378, 1375,   69,   69, 2174,   69, 1376, 1382,
-
-       69, 1372, 1381, 1374,   69,   69, 1385, 1384, 1386, 1387,
-       69, 1380,   69,   69,   69,   69, 1377,   69, 1388,   69,
-     1379,   69,   69,   69, 1383, 1393, 1389,   69,   69, 1396,
-       69,   69,   69, 1392,   69, 1390, 1398,   69, 1391,   69,
-       69, 1394,   69, 1403,   69, 1397, 1404, 1406,   69, 1401,
-     1400, 1405, 1399, 1395,   69, 1407, 1402, 1409,   69,   69,
-     1408,   69, 1413, 1414,   69, 1415, 1417,   69,   69,   69,
-     1416,   69,   69, 1411,   69, 1410, 1420,   69,   69,   69,
-       69, 1412,   69, 1422,   69, 1425, 1419,   69, 1430, 1421,
-     1423,   69, 1427, 1418, 1424,   69, 1428,   69,   69, 2174,
-
-     1429, 1434, 1426, 1431,   69, 1432,   69,   69,   69,   69,
-       69,   69,   69,   69, 1435, 1433, 1436,   69, 1437, 1438,
-       69, 1441, 1439, 1440,   69, 1442, 1444,   69,   69,   69,
-     1447,   69,   69,   69, 1446,   69, 1443, 1445,   69,   69,
-       69, 1454, 1449, 1452,   69, 1453,   69,   69,   69, 1456,
-       69,   69, 1448, 1450,   69, 1461,   69, 1451, 1455, 1459,
-     1457,   69, 1465, 1460, 1458,   69,   69, 1462,   69,   69,
-     1467,   69,   69, 1468, 1469,   69, 1463,   69,   69, 1464,
-     1470,   69, 1473, 1466, 1471,   69,   69,   69,   69,   69,
-       69,   69,   69,   69, 1474,   69,   69, 1486, 1472, 1476,
-
-     1477, 1478, 1481,   69,   69,   69, 1480, 1475, 1485,   69,
-     1488,   69, 1483, 1484,   69, 1482, 1479,   69, 1489, 1491,
-       69,   69, 1487, 1490, 1493,   69, 1495,   69,   69, 1496,
-       69,   69,   69, 1497, 1492, 1494, 1498, 1501,   69,   69,
-       69,   69,   69,   69, 1502, 1507,   69,   69, 1499, 1504,
-       69, 1503, 1500,   69, 1508, 1511, 1506,   69,   69, 1505,
-       69,   69, 1509, 1512,   69,   69, 1513,   69, 1515, 1514,
-     1510,   69, 1516,   69, 1517, 1519,   69, 1518, 1521,   69,
-       69, 1520,   69,   69,   69, 1522,   69, 1524, 1525,   69,
-       69,   69, 1523,   69,   69,   69, 1532, 1526,   69,   69,
-
-     1530, 1536,   69,   69, 1538,   69, 1527, 1528, 1535, 1529,
-     1533,   69, 1537, 1531,   69, 1540, 1534, 1539,   69, 1541,
-     1543,   69,   69, 1547,   69, 1544,   69,   69,   69, 1545,
-       69, 1542,   69, 1548, 1551,   69, 1550,   69, 1552, 1555,
-     1553,   69, 1546, 1557,   69,   69, 1556, 1549, 1554,   69,
-       69,   69,   69,   69, 1558, 1559,   69,   69, 1562,   69,
-       69, 1568,   69,   69, 1565,   69,   69, 1569,   69,   69,
-     1560, 1571, 1564,   69,   69,   69,   69, 1561, 1566, 1563,
-       69, 1567,   69, 1570,   69,   69,   69, 1582,   69,   69,
-       69,   69, 1573, 1574, 1583, 1572, 1579,   69, 1575, 1577,
-
-     1576, 1581, 1584, 1578, 1585,   69, 1580,   69, 1587,   69,
-     1586, 1588,   69, 1589,   69,   69, 1592,   69, 1595,   69,
-     1590,   69, 1591, 1596,   69,   69, 1593, 1597,   69, 1594,
-     1599,   69, 1601,   69, 1602,   69,   69,   69,   69,   69,
-     1598, 1606,   69, 1600, 1605, 1608,   69,   69,   69,   69,
-     1603,   69, 1611,   69, 1610,   69, 1604, 1607,   69, 1612,
-     1614,   69,   69, 1618,   69, 1609,   69,   69, 1616,   69,
-     1615, 1623,   69, 1622, 1613, 1619,   69, 1625,   69,   69,
-       69, 1617, 1621,   69,   69, 1629,   69, 1627,   69, 1620,
-       69,   69, 1631,   69,   69, 1624, 1633, 1630, 1632, 1626,
-
-       69,   69,   69,   69,   69,   69, 1637, 1635, 1638, 1628,
-       69,   69,   69, 1640, 1641, 2174, 1644, 1639, 1634, 1642,
-       69, 1636,   69, 1649, 1645, 1643,   69,   69, 1648,   69,
-       69, 1650, 1646,   69,   69, 1647,   69,   69,   69, 1651,
-       69,   69,   69,   69, 1659, 1655,   69, 2174, 1660, 1654,
-     1656, 1663,   69, 1652, 1658, 1653, 1657, 1661, 1662, 1664,
-       69,   69, 1666, 1667,   69,   69, 1665,   69,   69,   69,
-     1669,   69,   69,   69, 1673,   69,   69,   69, 1675, 1668,
-     1674, 1671, 1677, 1670, 1676,   69,   69,   69,   69,   69,
-       69, 1672,   69, 1681, 1684,   69,   69, 1683,   69,   69,
-
-       69, 1685, 1680, 1688,   69, 1689, 1678, 1679,   69,   69,
-     1682,   69, 1690,   69, 1686, 1687,   69, 1703, 1691,   69,
-     1693,   69, 1692,   69, 1694,   69, 1696, 1697,   69,   69,
-       69, 1698,   69,   69, 1699, 1695,   69, 1700, 1701,   69,
-     1702,   69,   69, 1704,   69,   69, 1705,   69, 1709, 1707,
-     1710,   69, 1712,   69,   69, 1706, 1711, 2174,   69, 1715,
-       69,   69, 1716,   69, 1708, 1717,   69,   69, 1718, 1714,
-       69, 1713, 1719,   69,   69, 1723,   69, 1724,   69, 1722,
-       69, 1720, 1725,   69,   69,   69, 1728, 1721,   69,   69,
-       69,   69, 1726,   69,   69, 1735,   69, 1731, 1733,   69,
-
-     1729, 1730, 1727, 1732,   69,   69,   69,   69, 1736,   69,
-       69, 1742,   69,   69, 1734,   69,   69,   69,   69, 1739,
-     1747, 1743,   69, 1741,   69, 1738,   69, 1748,   69, 1749,
-     1737, 1740,   69, 1744,   69, 1745, 1750,   69, 1755, 1746,
-     1751,   69,   69, 1752, 1753, 1754, 1756,   69,   69,   69,
-       69,   69, 1762,   69, 1757, 1763,   69, 1759,   69,   69,
-       69,   69, 1764,   69,   69,   69, 1766, 1758, 1761, 1760,
-     1772,   69, 1773,   69,   69, 1767, 1765, 1774,   69, 1768,
-     1770, 1769,   69,   69, 1771,   69,   69,   69,   69,   69,
-     1778,   69, 1775, 1776, 1781,   69,   69, 1782,   69,   69,
-
-     1783, 1777, 1787, 1788,   69,   69, 1779, 1780, 1784,   69,
-     1791,   69,   69,   69,   69, 1785, 1792,   69, 1786,   69,
-     1789, 1794, 1795,   69, 1797,   69,   69, 1790, 1793, 1798,
-       69, 1801, 1796, 1799, 1800,   69, 1802,   69,   69, 1803,
-       69,   69,   69,   69,   69,   69,   69,   69, 1807,   69,
-     1809, 1806,   69,   69, 1805, 1811,   69, 1813, 1808, 1816,
-       69, 1814, 1804,   69, 1812, 1810, 1817,   69, 1815,   69,
-     1818, 1820,   69,   69, 1819,   69, 1822,   69, 1821, 1824,
-       69, 1825,   69,   69, 1827, 2174,   69, 1823, 1830, 1828,
-       69, 1829,   69,   69,   69,   69, 1826, 1831,   69,   69,
-
-     1832, 1833,   69,   69,   69,   69,   69, 1835, 1836, 1838,
-     1839,   69,   69, 1834, 1837,   69,   69,   69, 1844,   69,
-       69, 1842, 1840,   69, 1841, 1843, 1849,   69, 1845,   69,
-       69,   69, 1853,   69, 1846,   69,   69,   69, 1856, 1851,
-     1847, 1855, 1848,   69,   69, 1860, 1852,   69, 1850, 1857,
-       69, 1858, 1859,   69, 1854,   69,   69,   69,   69, 1862,
-       69, 1865, 1866,   69,   69, 2174, 1861,   69, 1869, 1878,
-     1863,   69, 1864, 1870,   69,   69,   69,   69, 1867, 1871,
-     1872,   69,   69, 1873, 1868, 1874,   69, 1875,   69, 1876,
-       69, 1877, 1879,   69, 1880, 1881,   69,   69, 1885,   69,
-
-     1882,   69,   69, 1884,   69,   69, 1887,   69,   69,   69,
-     1888, 1889,   69,   69,   69,   69,   69, 1893,   69, 1883,
-     1897,   69,   69,   69, 1886, 2174, 1891, 1892,   69, 1896,
-     1899, 1894, 1890,   69, 1895, 1898,   69, 1900,   69, 1901,
-       69, 1902,   69, 1903, 1904,   69,   69,   69,   69, 1907,
-     1905, 1911,   69, 1906,   69, 1908, 1909, 1912, 1914,   69,
-       69,   69,   69, 1918,   69, 1915, 1913, 1910,   69,   69,
-     1916,   69, 1919,   69,   69,   69, 1922,   69, 1920,   69,
-     1917, 1923,   69,   69, 1925, 1928, 1921, 1924, 1926,   69,
-       69, 1930, 1927,   69, 1932, 1931,   69,   69,   69,   69,
-
-       69, 1935, 1929, 1934, 1936, 1933, 1937,   69, 1938,   69,
-       69,   69, 1942, 1944,   69, 1941, 1943, 1939,   69,   69,
-       69,   69,   69, 1948,   69, 1946, 1950,   69, 1940,   69,
-       69, 1953,   69,   69,   69,   69,   69,   69, 1955, 1947,
-     1945,   69,   69, 1951, 1956, 1952, 1954, 1949,   69, 1959,
-     1962,   69, 1957, 1960,   69,   69, 1958, 1964,   69, 1965,
-       69, 1966,   69,   69,   69, 1969,   69,   69, 1961, 1968,
-       69, 1967,   69, 1963,   69, 1973,   69, 1976,   69, 1977,
-       69,   69,   69, 1970,   69,   69, 1974, 1982,   69, 1972,
-     1971, 1978,   69,   69, 1984, 1983, 1980,   69, 1975,   69,
-
-     1979, 1987, 1988,   69,   69, 1981,   69,   69,   69, 1985,
-       69, 1989, 1993,   69,   69, 1991, 1996,   69,   69, 1986,
-     1997,   69, 1990, 1999,   69, 1992,   69,   69,   69,   69,
-     1994, 1995, 2000, 1998, 2002, 2003,   69, 2004,   69,   69,
-     2001, 2005,   69,   69, 2006, 2007,   69,   69, 2009,   69,
-     2008, 2010,   69,   69, 2014,   69,   69, 2011,   69,   69,
-       69, 2015, 2013, 2018,   69, 2019,   69, 2017,   69, 2012,
-       69,   69, 2016,   69,   69, 2022,   69,   69,   69, 2024,
-       69,   69, 2025, 2023,   69,   69, 2020, 2174, 2021, 2032,
-     2034,   69, 2035,   69, 2028, 2027, 2026, 2029, 2030,   69,
-
-     2037,   69, 2031, 2036,   69, 2033, 2038, 2039, 2040,   69,
-     2041,   69,   69,   69, 2044,   69,   69,   69,   69,   69,
-       69, 2049,   69, 2045, 2050,   69,   69, 2043, 2048,   69,
-     2042, 2053, 2046, 2051,   69,   69, 2047, 2052, 2054,   69,
-       69,   69,   69,   69, 2061,   69, 2058, 2059, 2062,   69,
-     2056, 2063,   69,   69, 2055, 2064,   69, 2065,   69,   69,
-       69, 2057, 2060, 2067,   69, 2068,   69,   69, 2066,   69,
-     2070, 2073, 2069, 2072,   69,   69,   69, 2075, 2074,   69,
-       69,   69, 2071,   69, 2077,   69,   69,   69,   69, 2081,
-     2076, 2082,   69,   69,   69,   69,   69, 2080,   69, 2078,
-
-       69,   69,   69, 2079,   69, 2086, 2084,   69, 2083, 2087,
-     2094,   69,   69, 2174, 2088,   69, 2085, 2090, 2089, 2092,
-     2099, 2095, 2093, 2091, 2096,   69,   69, 2097, 2098,   69,
-       69,   69, 2101, 2103,   69, 2100, 2105,   69,   69,   69,
-       69,   69,   69, 2109, 2110,   69, 2102,   69, 2104,   69,
-       69,   69,   69, 2106,   69,   69, 2111,   69, 2107, 2114,
-     2108, 2115,   69,   69, 2112,   69, 2113, 2117, 2118,   69,
-     2120, 2116, 2123,   69, 2121,   69, 2124,   69,   69,   69,
-       69, 2119, 2122, 2125, 2126, 2127, 2129, 2130,   69,   69,
-       69,   69,   69, 2134,   69,   69, 2128, 2131,   69,   69,
-
-     2137,   69,   69,   69,   69, 2141,   69,   69, 2132,   69,
-     2133, 2136, 2142, 2135,   69, 2144, 2140,   69, 2145,   69,
-     2138, 2139,   69,   69, 2146, 2143, 2149,   69, 2148, 2147,
-     2150,   69,   69,   69,   69,   69,   69,   69, 2151, 2153,
-     2155, 2156,   69,   69, 2159,   69,   69,   69, 2162, 2163,
-       69, 2152, 2154,   69, 2165,   69, 2157, 2166,   69,   69,
-     2164, 2158,   69,   69, 2160, 2161, 2167, 2168, 2169,   69,
-       69, 2172,   69, 2173,   69, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2170, 2171,
+      160,  139,  167,  164,  165,  168,   69,  173,  175,  169,
+       69,   69,  170,   69,  178,  176,   69,   69,  179,   69,
+       69,   69,   69,  182,   69,  171,  172,  183,   69,  185,
+      137,  181,  174,   69,  184,  177,   69,  186,   69,   69,
+
+      180,   69,  189,   69,  194,   69,  191,   69,  187,   69,
+      192,  188,   69,   69,  190,   69,   69,   69,   69,  193,
+      196,   69,  205,   69,  198,  195,  197,   69,  204,  200,
+      202,  199,  212,  201,  209,   69,  207,  210,   69,  208,
+       69,   69,  206,  131,  131,  215,  133,  138,  138,  133,
+      213,  135,  141,  135,  135,  216,  135,   69,  211,  214,
+      140,   69,  140,  140,   73,  140,   73,   73,   69,   73,
+       69,  218,  219,  217,   69,   69,  143,   69,  220,   69,
+      221,   69,   69,   69,  223,  226,  315,  228,   69,  222,
+      225,   69,  227,   69,  229,  224,  230,   69,  231,   69,
+
+       69,  234,   69,  232,   69,  239,  235,  240,   69,   69,
+       69,  236,   69,  241,  242,  245,  244,  237,  238,   69,
+      233,   69,  243,   69,   69,   69,   69,   69,   69,  253,
+      251,  252,  257,  246,  254,  248,  247,   69,  249,   69,
+       69,  260,  250,   69,  261,  264,  255,   69,  256,  265,
+      262,   69,   69,  267,  269,  259,   69,  258,   69,   69,
+       69,  270,  263,  268,   69,   69,   69,   69,   69,   69,
+       69,  271,  273,  266,   69,  275,   69,   69,  272,   69,
+       69,   69,  277,   69,  279,   69,   69,  284,  274,  278,
+      283,  286,  276,  281,   69,  280,  289,   69,   69,   69,
+
+       69,  282,   69,   69,  293,  291,  292,   69,  285,   69,
+       69,  297,  287,  288,   69,  296,  299,   69,  290,  294,
+      141,  295,   69,   69,   69,  300,   69,  306,   69,   69,
+      302,   69,  303,   69,  305,  298,  307,   69,  308,   69,
+       69,   69,  301,  304,   69,   69,  311,  319,   69,  313,
+      316,   69,  309,  310,  312,   69,  317,  318,   69,  320,
+       69,   69,  321,   69,  136,   69,   69,  322,  324,   69,
+      314,  327,   69,  325,  329,  326,   69,   69,  323,   69,
+       69,   69,  330,  332,  331,   69,  328,   69,   69,   69,
+       69,  337,   69,   69,   69,  338,  333,   69,  340,   69,
+
+      342,  336,   69,  334,   69,   69,  346,  344,  335,   69,
+       69,  339,   69,  347,   69,  341,   69,  345,   69,   69,
+      343,  348,  354,  349,   69,  353,   69,   69,  358,  359,
+      357,  350,  351,   69,  352,  360,   69,  356,   69,   69,
+      355,  361,   69,   69,  362,  367,   69,  363,  364,   69,
+       69,  365,  366,   69,  368,   69,  369,   69,  371,  373,
+       69,  375,   69,   69,  377,  370,   69,   69,  378,  372,
+       69,  379,   69,   69,   69,  374,  381,  380,  382,   69,
+       69,  388,  376,   69,   69,  389,  383,   69,  387,   69,
+      384,   69,   69,  385,   69,  386,  390,  395,   69,  393,
+
+       69,  141,   69,   69,  391,  394,  397,  406,  418,  392,
+       69,   69,   69,  396,   69,  405,  398,  399,  407,   69,
+       69,  410,  409,  408,   69,  411,  400,   69,  401,  402,
+      403,  412,  413,  404,   69,  414,   69,  420,   69,  415,
+      416,   69,  417,   69,   69,  424,   69,   69,   69,  419,
+       69,   69,   69,  422,   69,  427,  421,   69,  423,  428,
+      429,   69,   69,  426,  134,   69,  433,  434,  430,   69,
+      431,  425,   69,  432,   69,   69,  435,   69,  436,  438,
+       69,   69,  447,  439,  440,  444,  443,   69,   69,   69,
+      446,  445,   69,  437,   69,  441,   69,  442,  449,  451,
+
+      450,   69,   69,  453,   69,   69,   69,   69,  457,  458,
+      448,  455,   69,   69,   69,   69,  459,  454,  456,  461,
+       69,  452,   69,   69,   69,   69,  465,   69,  466,  462,
+      467,   69,   69,  469,  460,  463,  464,   69,  470,   69,
+       69,   69,   69,   69,   69,   69,  132,   69,  472,   69,
+      473,  480,  468,   69,   69,  475,   69,   69,  481,  482,
+      471,  479,  474,  476,  478,  477,   69,  483,   69,  485,
+      487,  486,   69,   69,  484,   69,   69,   69,  490,   69,
+       69,   69,   69,   69,  493,   69,  489,  495,   69,   69,
+       69,   69,  141,  509,  488,   69,  494,   69,  511,  491,
+
+      492,  496,  497,   69,  498,  506,  507,   69,  504,  499,
+      505,  500,   69,   69,  513,  510,   69,  508,   69,  501,
+       69,   69,  502,   69,   69,   69,   69,   69,   69,  503,
+      515,  514,  512,  519,  520,  516,   69,   69,   69,  526,
+      517,  522,  523,  521,  141,  518,  525,   69,  524,   69,
+      531,  528,   69,  530,   69,  527,   69,  529,  533,  532,
+       69,   69,   69,   69,   69,  535,   69,   69,  537,  538,
+      139,   69,  534,  542,   69,   69,  536,   69,  543,   69,
+      545,   69,  554,  539,  546,   69,  540,  541,  544,  547,
+      548,   69,  549,   69,  550,   69,   69,   69,  551,   69,
+
+       69,  552,  556,  555,   69,   69,   69,   69,   69,  557,
+       69,  559,  561,   69,   69,  562,  553,   69,   69,   69,
+      564,   69,  558,   69,  568,  565,  570,  560,  563,  566,
+       69,  567,   69,   69,  574,  571,   69,  569,   69,   69,
+       69,  576,   69,  577,   69,  575,  572,  579,  573,  580,
+       69,   69,   69,   69,   69,   69,   69,  583,   69,  589,
+       69,  590,  584,  587,  582,  578,  581,  586,   69,   69,
+      585,   69,   69,  594,  588,   69,  591,  596,  592,   69,
+      595,   69,   69,   69,  597,  599,  593,  598,   69,   69,
+      600,   69,  603,   69,   69,   69,   69,   69,   69,  606,
+
+       69,  601,  602,  605,  610,  609,   69,  608,  614,  611,
+       69,   69,  604,   69,  607,   69,  612,   69,   69,  616,
+       69,   69,  613,   69,   69,   69,   69,  621,   69,  627,
+      615,  617,   69,  622,   69,   69,  618,   69,   69,  619,
+      623,  620,   69,  630,  624,   69,   69,  625,   69,  626,
+      631,  628,   69,   69,  634,   69,  629,  633,   69,  632,
+       69,   69,  637,  638,  635,   69,  636,  639,   69,   69,
+      640,   69,   69,  641,   69,   69,  643,  141,  648,  642,
+      644,   69,  647,  646,   69,  649,  645,   69,  651,   69,
+       69,  655,   69,   69,   69,   69,  652,   69,  653,  657,
+
+       69,  660,   69,   69,   69,  650,  658,   69,  661,  654,
+       69,  659,  656,   69,   69,  665,   69,   69,  675,  666,
+      662,   69,  667,  672,  664,   69,  676,  673,  663,  668,
+      671,  670,  669,   69,  677,   69,   69,  674,   69,   69,
+       69,   69,  678,  679,  685,  680,   69,  137,  681,  689,
+      690,   69,   69,  682,  687,   69,  686,   69,  692,  683,
+      684,   69,  691,  688,   69,  694,  695,  693,   69,   69,
+       69,  696,  698,   69,  697,   69,   69,   69,   69,   69,
+      701,   69,  705,   69,   69,  699,  704,   69,   69,  711,
+       69,   69,  723,   69,  700,  709,  710,  702,  703,  706,
+
+       69,  707,  713,  714,   69,  712,  708,  715,   69,   69,
+       69,   69,   69,   69,   69,   69,  716,   69,   69,  717,
+      718,  721,  720,  726,   69,   69,   69,  724,   69,   69,
+       69,  719,  725,  730,  722,  728,   69,  729,   69,   69,
+      733,  731,   69,   69,  727,   69,   69,   69,  739,   69,
+      737,   69,  732,   69,  735,  740,   69,  734,  738,   69,
+       69,   69,   69,   69,  742,   69,   69,  736,   69,  748,
+      741,  747,  743,  744,   69,  752,   69,  755,   69,   69,
+       69,  746,  745,  751,  749,  754,  758,  750,   69,  759,
+      753,   69,   69,   69,   69,   69,   69,  760,   69,  767,
+
+      756,  764,  757,   69,  766,   69,  762,   69,   69,   69,
+      761,  768,  771,   69,  763,  773,   69,   69,   69,  765,
+      775,  141,  770,   69,   69,  769,   69,   69,  777,   69,
+       69,   69,   69,  772,   69,  774,   69,  789,  776,   69,
+       69,   69,   69,  780,  790,  778,  793,  791,  923,   69,
+      781,  779,  782,   69,  794,   69,  783,   69,  784,  792,
+      795,  797,  785,  796,  786,   69,  798,   69,   69,  787,
+       69,  799,  800,   69,  788,  802,   69,   69,  804,   69,
+      801,   69,  809,  810,   69,  803,  811,  808,   69,   69,
+      805,   69,   69,  807,   69,  812,   69,  818,  806,   69,
+
+      813,  817,  814,   69,  821,   69,   69,   69,   69,   69,
+      819,  820,  822,  815,  823,  827,   69,   69,  829,  824,
+      816,  828,   69,   69,   69,  830,   69,  825,  826,  833,
+       69,   69,   69,   69,   69,   69,  834,   69,  839,  832,
+       69,  836,  831,  837,   69,   69,   69,   69,   69,  835,
+       69,  842,  841,  838,  840,   69,  848,   69,   69,  846,
+      843,  844,   69,   69,  847,   69,  136,   69,  845,   69,
+       69,  849,  853,   69,  854,  855,   69,  850,   69,  857,
+      852,  851,  856,  858,   69,  861,   69,   69,   69,   69,
+      862,   69,  860,   69,   69,  863,  865,  859,  864,  869,
+
+      866,   69,   69,  868,   69,   69,   69,  867,   69,  871,
+       69,   69,   69,  873,   69,  875,  876,  881,   69,   69,
+      874,  870,   69,  872,  877,  878,   69,   69,  880,   69,
+      879,   69,  884,   69,   69,  882,  889,   69,   69,   69,
+       69,   69,   69,  890,  891,  883,   69,   69,   69,  885,
+      888,  893,  886,  895,  887,  896,  897,  894,  892,   69,
+       69,   69,   69,  900,   69,  899,  901,   69,   69,  904,
+       69,   69,   69,   69,  898,   69,   69,   69,   69,   69,
+      903,  902,   69,  913,  906,  134,  914,  915,  905,   69,
+      907,  910,   69,  911,   69,  909,  916,  908,   69,  912,
+
+       69,   69,   69,  917,   69,   69,   69,  920,   69,  926,
+       69,   69,   69,   69,  918,  919,   69,   69,   69,  921,
+      938,  924,  929,  931,  922,  927,   69,  925,   69,  934,
+      928,  935,   69,  930,  932,   69,   69,  933,   69,  936,
+       69,   69,   69,   69,   69,  941,   69,  940,  943,  937,
+      945,   69,   69,  947,  939,   69,  946,   69,   69,   69,
+      942,  944,   69,   69,   69,  949,  951,   69,   69,   69,
+      948,   69,  950,  956,  952,  961,   69,  953,   69,   69,
+       69,   69,  955,  957,  954,  960,   69,  963,   69,  958,
+      967,  959,  962,  965,   69,  968,   69,   69,  966,   69,
+
+      964,   69,  972,   69,  981,   69,   69,   69,  982,   69,
+       69,  970,  971,  969,   69,  980,  979, 1057,  984,  973,
+       69,   69,  974,  975,   69,  983,  985,  976,   69,  986,
+       69,  987,   69,  977,   69,   69,   69,  978,  993,  990,
+      994,  989,   69,   69,   69,   69,   69,  995,  988,  991,
+     1020,   69,  997,   69,  992,  996, 1003,  998,   69,  999,
+       69, 1000,   69, 1001,   69, 1002, 1005,   69, 1006,   69,
+     1009, 1004,   69,   69,   69, 1010,   69,   69, 1008,   69,
+       69,   69, 1012,   69,   69, 1007, 1011, 1014, 1021,   69,
+     1017, 1015,   69, 1013, 1016, 1023,   69,   69,   69,   69,
+
+     1024, 1018,   69, 1025, 1027,   69,   69, 1022,   69, 1019,
+     1029,   69,   69, 1030, 1032,   69,   69,   69, 1026,   69,
+       69, 1034, 1028,  132, 1036, 1035,   69, 1031,   69, 1037,
+       69,   69, 1033, 1040, 1042, 1043, 1039,   69, 1038, 1045,
+       69,   69, 1044,   69, 1041,   69,   69,   69, 1049,   69,
+       69,   69, 1046,   69, 1053,   69,   69,   69, 1048,   69,
+       69,   69, 1060,   69,   69, 1047,   69,   69,   69, 1054,
+     1050, 1051, 1064, 1058, 1059, 1055, 1052, 1056, 1065,   69,
+       69,   69, 1069, 1061, 1063, 1067,   69, 1070,   69, 1062,
+       69, 1066,   69,   69,   69, 1071,   69,   69, 1072, 1076,
+
+     1068,   69,   69, 1077,   69,   69, 1073, 1079, 1074, 1080,
+     1078, 1075,   69,   69,   69, 1081, 1082,   69,   69, 1085,
+       69,   69,   69,   69, 1088,   69,   69,   69, 1083,   69,
+     1084,   69, 1100,   69, 1101, 1086,   69, 1091, 1087, 1089,
+     1092, 1090, 1093,   69, 1094,   69,   69,   69, 1096,   69,
+     1095, 1098, 1097,   69, 1099, 1103,   69, 1106, 1107,   69,
+     1108, 1105, 1102,   69,   69,   69, 1109, 1110,   69,   69,
+       69,   69,   69, 1111, 1104,   69,   69,   69, 1117, 1112,
+       69,   69,   69, 1116,   69,   69, 1114, 1120, 1123, 1113,
+     1115, 1125, 1119, 1124,   69, 1121, 1126,   69,   69, 1131,
+
+     1118,   69,   69,   69, 1122,   69,   69,   69,   69, 1135,
+       69,   69,   69,   69, 1134,   69,   69,   69, 1127,   69,
+     1128, 1129, 1130,   69, 1143,   69, 1133, 1140, 1144, 1136,
+     1137, 1138, 1132,   69, 1142, 1139, 1146,   69, 1141,   69,
+       69,   69,   69,   69, 1147, 1145, 1148,   69,   69,   69,
+     1150, 1152,   69, 1149,   69, 1153, 1151, 1157,   69, 1158,
+       69,   69,   69, 1163, 1156, 1159,   69, 1155, 1154,   69,
+     1164,   69, 1160,   69,   69,   69, 1167, 1168, 1161, 1166,
+     1169,   69, 1162,   69, 1165, 1170,   69,   69,   69, 1171,
+     1172,   69, 1173,   69,   69,   69,   69, 1179,   69,   69,
+
+     1177,   69,   69, 1174,   69, 1180,   69, 1182, 1176,   69,
+       69, 1178,   69, 1185,   69, 1184,   69, 1187, 1175, 1181,
+     1188,   69,   69, 1191, 1183,   69,   69,   69,   69, 1186,
+     1190, 1192, 1189,   69,   69,   69, 1200, 1195, 1196,   69,
+     1199, 1198,   69,   69, 1202, 1193,   69, 1194, 1204,   69,
+       69,   69,   69,   69, 1197,   69, 1208,   69, 1206,   69,
+     1203,   69, 1209, 1201,   69,   69,   69, 1212,   69,   69,
+     1205, 1343,   69,   69, 1211, 1210, 1215, 1207, 1213, 1216,
+     1218, 1220,   69,   69, 1224, 1214,   69, 1219, 1221,   69,
+       69, 1217, 1223, 1222,   69, 1225,   69,   69,   69, 1229,
+
+       69,   69, 1231,   69,   69,   69, 1230,   69,   69, 1233,
+     1234,   69, 1235,   69, 1226,   69, 1227,   69, 1228,   69,
+       69, 1236, 1243, 1232,   69,   69,   69,   69,   69,   69,
+       69, 1239, 1242, 1237, 1240, 1238, 1241, 1248,   69,   69,
+       69, 1246,   69,   69, 1251, 1244, 1245, 1250,   69,   69,
+     1247,   69,   69,   69, 1254, 1252,   69,   69,   69, 1249,
+     1256, 1259, 1253, 1258, 1260,   69,   69, 1255, 1257, 1265,
+       69, 1266,   69, 1261,   69,   69,   69, 1267,   69,   69,
+     1262, 1269, 1270, 1264,   69, 1263,   69, 1271, 1277,   69,
+       69, 1276,   69, 1273, 1268, 1275, 1274,   69, 1272,   69,
+
+       69,   69,   69,   69,   69, 1279,   69, 1286,   69,   69,
+     1278,   69,   69, 1283, 1281,   69,   69, 1280, 1282, 1318,
+     1288, 1289, 1285,   69, 1287,   69, 1290, 1294, 1284,   69,
+     1298, 1295, 1292, 1297, 1300, 1293, 1296,   69, 1299,   69,
+     1291, 1301,   69,   69,   69, 1304,   69,   69, 1302,   69,
+       69,   69, 1306,   69,   69,   69,   69,   69, 1307, 1305,
+     1313, 1309,   69, 1303,   69,   69,   69, 1310,   69, 1308,
+     1316,   69,   69, 1311,   69, 1312,   69, 1317, 1314, 1319,
+       69, 1320, 1315,   69,   69, 1321,   69, 1324, 1323, 1325,
+       69,   69, 1322, 1327,   69,   69,   69,   69, 1326, 1332,
+
+       69,   69, 2232, 1328,   69,   69, 1329, 1335,   69, 1333,
+     1336,   69,   69, 1339, 1330, 1337, 1331,   69, 1334, 1338,
+       69, 1341,   69,   69, 1344,   69, 1340,   69,   69,   69,
+       69,   69,   69, 1347,   69, 1342,   69, 1351, 1348,   69,
+     1356,   69, 1349, 1352, 1357, 1346, 1350, 1345,   69,   69,
+       69, 1355,   69, 1361,   69,   69, 1353, 1363,   69, 1354,
+       69, 1365,   69,   69, 1367,   69,   69, 1366, 1359, 1358,
+       69,   69, 1360, 1369, 1368, 1362, 1371,   69,   69,   69,
+     1373, 1364,   69, 1370, 1374,   69,   69, 1375, 1376,   69,
+       69, 1372,   69, 1383,   69,   69,   69,   69, 1381,   69,
+
+     1385, 1377, 1378, 1379,   69, 1386,   69, 1389, 1380, 1387,
+     1382,   69, 1384, 1388, 1391,   69,   69, 1393,   69, 1390,
+       69, 1395,   69,   69, 1392,   69, 1397,   69,   69, 1400,
+     1401,   69,   69,   69, 1404,   69,   69, 1394,   69,   69,
+       69, 1402,   69, 1398, 1396, 1406,   69, 1409, 1407, 1399,
+       69, 1405, 1413,   69, 1403, 1412,   69,   69,   69, 1416,
+       69, 1417, 1418,   69, 1415,   69, 1408,   69, 1410, 1411,
+       69,   69,   69,   69,   69, 1419, 1414, 1424,   69, 1422,
+     1420,   69,   69, 1427,   69, 1423,   69,   69,   69,   69,
+     1429,   69, 1421,   69, 1435,   69, 1425, 1434,   69, 1428,
+
+     1437,   69, 1432,   69, 1436,   69, 1430, 1426, 1431, 1438,
+     1433, 1440,   69,   69, 1439, 1444, 1445,   69,   69, 1442,
+     1446,   69, 1448,   69, 1441, 1447,   69,   69,   69,   69,
+     1451,   69,   69, 1443,   69, 1450,   69, 1456, 1453, 1452,
+     1458, 1454,   69,   69, 1449,   69,   69,   69,   69, 1461,
+     1460, 1462,   69, 2232, 1457, 1465, 1455, 1459, 1463,   69,
+       69,   69, 1464,   69,   69,   69, 1466,   69, 1467,   69,
+     1468,   69, 1470,   69, 1469,   69, 1471, 1475,   69,   69,
+       69, 1472,   69, 1473,   69, 1477,   69, 1474, 1476, 1478,
+       69,   69,   69, 1480,   69, 1485, 1483,   69,   69, 1484,
+
+       69,   69, 1479,   69, 1481,   69, 1487, 1492,   69, 1490,
+     1482, 1486, 1491,   69,   69,   69, 1489, 1488, 1496,   69,
+       69, 1498,   69,   69,   69, 1499, 1500,   69, 1495, 1493,
+     1494,   69,   69,   69,   69, 1504, 1497,   69,   69, 1501,
+     1502, 1505, 1503,   69,   69,   69,   69,   69,   69,   69,
+     1507,   69,   69, 1512,   69, 1508, 1509, 1519, 1506, 1516,
+       69, 1511,   69, 1515,   69,   69, 1513, 1517, 1514, 1520,
+     1522, 1510, 1518,   69,   69, 1523,   69,   69,   69,   69,
+       69, 1525, 1521,   69, 1526, 1528,   69, 1527, 1530,   69,
+       69, 1532, 1524, 1529,   69, 1534, 1533,   69,   69,   69,
+
+       69, 1538, 1535,   69,   69, 1539, 1531,   69,   69,   69,
+       69, 1541, 1544,   69,   69, 1545, 1536, 1540,   69, 1537,
+     1548,   69,   69, 1543,   69, 1546,   69, 1542,   69, 1549,
+     1550,   69, 1552, 1551,   69, 1553,   69,   69, 1547, 1556,
+     1558,   69,   69, 1557,   69, 1554,   69,   69, 1555,   69,
+       69, 1559, 1561,   69, 1562,   69, 1560,   69,   69, 1563,
+       69, 1567,   69,   69, 1569, 1573,   69,   69, 1575,   69,
+     1564, 1565, 1572, 1566, 1568, 1570, 1574,   69,   69,   69,
+       69,   69, 1577, 1580, 1578, 2232,   69, 1571, 1581,   69,
+     1584,   69,   69, 1579, 1582,   69, 1576,   69, 1585, 1588,
+
+       69, 1583,   69, 1589, 1587,   69,   69, 1592, 1594,   69,
+     1591, 1593, 1586,   69,   69,   69,   69, 1590,   69, 1595,
+     1596,   69,   69,   69,   69,   69, 1599,   69,   69, 1602,
+     1605,   69,   69,   69,   69, 1597, 1606,   69, 1601, 1608,
+       69, 1604, 1607, 1598,   69, 1600, 1603,   69,   69,   69,
+       69,   69,   69,   69, 1619,   69, 1610,   69, 2232, 1609,
+     1620, 1616,   69, 1611, 1613, 1621,   69, 1614, 1618,   69,
+     1612, 1615, 1617,   69, 1624,   69, 1622, 1625,   69, 1623,
+     1626,   69,   69, 1629, 1627,   69, 1632,   69, 1628,   69,
+       69,   69,   69,   69, 1630, 1633, 1634, 1631, 1638,   69,
+
+     1639,   69,   69, 1641,   69, 1637,   69, 1643,   69, 1635,
+     1644,   69, 1636,   69,   69,   69, 1648,   69,   69,   69,
+     1647, 1640, 1650,   69, 1642,   69,   69, 1645,   69,   69,
+     1654, 1653, 1652, 1646, 1656,   69,   69, 1649, 1657,   69,
+     1660,   69,   69, 1651,   69, 1655,   69,   69,   69, 1665,
+       69, 1658, 1664, 1667,   69,   69,   69,   69, 1659,   69,
+     1671, 1663, 1661, 1669,   69,   69, 1666, 1662,   69,   69,
+     1673,   69,   69, 1672, 1675, 1668,   69, 1674,   69,   69,
+       69,   69,   69, 1670, 1679, 1677, 1680,   69, 1686, 1682,
+       69, 1683,   69, 1681,   69,   69, 1676, 1678,   69, 1684,
+
+       69, 1685, 1687, 1691, 1689,   69, 1690,   69, 1692,   69,
+       69,   69, 1688,   69,   69,   69, 1693,   69,   69, 1732,
+     1694,   69, 1695, 1697, 1701, 1696,   69, 1698,   69, 1699,
+     1700, 1702, 1705,   69, 1706,   69,   69, 1703, 1708,   69,
+     1704, 1707, 1709,   69,   69,   69, 1711,   69,   69,   69,
+       69, 1715,   69, 1710,   69,   69, 1716, 1717,   69, 1712,
+     1718,   69, 1713, 1719,   69,   69,   69,   69, 1714,   69,
+     1723, 1726,   69,   69, 1725, 1720,   69,   69, 1727, 1722,
+       69,   69, 1731, 1733, 1721, 1730,   69, 1724,   69,   69,
+     1735, 1728, 1729,   69,   69,   69, 1736,   69, 1738, 1739,
+
+     1734, 1740,   69, 1742,   69,   69,   69,   69, 1744,   69,
+       69,   69,   69,   69, 1741, 1743, 1746, 1747, 1748,   69,
+     1737, 1749,   69, 1745, 1750,   69, 1751,   69,   69, 1752,
+       69,   69, 1753, 1754, 1757,   69,   69,   69, 1759,   69,
+     1762,   69, 2232, 1756,   69, 1758, 1755,   69, 1763, 1764,
+       69,   69,   69,   69, 1761, 1760, 1765,   69,   69, 1766,
+     1770,   69,   69, 1769, 1771,   69, 1767, 1768, 1772,   69,
+       69,   69, 1775,   69, 1773,   69,   69,   69,   69,   69,
+     1782,   69,   69, 1778, 1780, 1776,   69, 1777, 1774, 1779,
+       69, 1783,   69,   69,   69,   69, 1789,   69, 1781,   69,
+
+       69,   69, 1797,   69,   69, 1786, 1790, 1794, 1788,   69,
+     1785,   69, 1784,   69, 1795,   69, 1796, 1787, 1791, 1798,
+       69, 1792,   69, 1799, 1793,   69, 1801,   69,   69,   69,
+       69, 1800,   69,   69,   69, 1809, 1810,   69, 1806,   69,
+       69,   69,   69,   69,   69, 1802, 1803,   69, 1811, 1804,
+     1805, 1808, 1807,   69, 1813,   69, 1814,   69, 1812,   69,
+     1815, 1816, 1821, 1818, 1819,   69, 1820,   69,   69, 1817,
+       69,   69, 1823, 1822,   69, 1825,   69,   69, 1824, 1829,
+       69, 1828, 1830,   69,   69,   69, 1831, 1832,   69,   69,
+       69, 1826,   69,   69, 1827,   69, 1838,   69, 1834, 1833,
+
+     1839,   69, 1842,   69,   69, 1835,   69,   69, 1843, 1836,
+     1840, 1845, 1837, 1846,   69, 1841,   69, 1848,   69, 1849,
+       69, 1844,   69, 1851,   69,   69, 1853,   69,   69, 1847,
+     1852,   69, 1854,   69,   69,   69,   69,   69,   69,   69,
+     1858, 1850,   69, 1857, 1860,   69, 1856,   69,   69,   69,
+     1855, 1859, 1864, 1862, 1865, 1861,   69, 1863, 1867,   69,
+     1868,   69,   69, 1866, 1960,   69, 1871,   69,   69, 1869,
+     1870, 1874,   69, 1872,   69, 1873, 1875,   69, 1876,   69,
+     1877, 1878,   69,   69, 1881,   69, 1879,   69, 1880, 1882,
+       69,   69,   69,   69,   69,   69, 1883, 1885, 1887,   69,
+
+       69, 1884, 1886, 1889, 1890,   69,   69, 1888,   69,   69,
+       69, 1895,   69,   69,   69,   69,   69, 1893, 1894, 1892,
+       69, 1896,   69, 1891, 1900,   69, 1904,   69,   69,   69,
+     1903, 1902, 1897,   69, 1898, 1899,   69, 1909,   69, 1901,
+     1908, 1910,   69,   69, 1906,   69, 1911, 1905,   69,   69,
+     1912,   69,   69, 1907,   69, 1915,   69, 1913,   69, 1918,
+     1919,   69, 1914,   69,   69, 1922, 1916, 1923,   69, 1917,
+       69, 1925,   69, 1924,   69, 1926, 1920, 1927,   69, 1928,
+       69,   69,   69, 1921, 1931, 1932,   69,   69, 1934,   69,
+       69, 1933,   69, 1935,   69, 1938, 1930,   69, 1937, 1929,
+
+       69,   69,   69,   69, 1940,   69, 1942, 1941,   69,   69,
+       69,   69, 1936,   69, 1946, 1950,   69,   69,   69,   69,
+     1954,   69, 1939,   69, 1955, 1944, 1945, 1949, 1947, 1952,
+     1943, 1948,   69, 1956,   69,   69, 1951, 1953,   69,   69,
+     1958,   69,   69, 1964,   69,   69,   69,   69, 1961, 1965,
+     1957, 1967,   69,   69, 1968, 1969,   69,   69, 1959,   69,
+       69, 1962, 1963, 1966, 1970,   69, 1971, 1973,   69, 1974,
+       69, 1972, 1977,   69,   69, 1976,   69, 1978,   69, 1975,
+     1981,   69,   69, 1980,   69, 1982, 1979,   69,   69,   69,
+     1987,   69,   69, 1986, 1983, 1992,   69, 1989,   69, 1985,
+
+     1988,   69, 1990,   69, 1997, 1991,   69, 1993,   69, 1984,
+       69,   69,   69, 1996, 1999,   69, 1998,   69,   69,   69,
+     2003,   69, 2001, 1994,   69, 1995,   69, 2005,   69, 2008,
+       69,   69,   69, 2000,   69, 2010, 2002,   69,   69, 2007,
+     2006,   69,   69, 2011, 2004, 2009,   69, 2015,   69, 2014,
+     2017,   69,   69, 2012, 2019,   69,   69, 2013, 2020,   69,
+     2022,   69,   69,   69, 2025,   69,   69, 2018, 2024,   69,
+       69, 2029, 2016, 2021,   69,   69, 2026,   69, 2023, 2032,
+       69, 2033,   69,   69, 2034,   69,   69,   69, 2028, 2027,
+     2039, 2030, 2038,   69,   69, 2040, 2031, 2036,   69,   69,
+
+       69, 2043, 2035, 2044,   69,   69, 2037,   69, 2045,   69,
+     2041,   69, 2052,   69, 2047, 2049,   69,   69, 2046, 2042,
+     2232,   69, 2053,   69, 2055,   69,   69,   69, 2059,   69,
+     2048, 2056,   69, 2050, 2051,   69, 2054, 2058, 2060,   69,
+     2062, 2057, 2061,   69, 2063,   69,   69,   69,   69, 2066,
+     2067,   69,   69,   69,   69, 2071,   69,   69,   69,   69,
+     2075,   69, 2072, 2070,   69, 2064, 2068, 2074,   69, 2065,
+       69,   69, 2073, 2069,   69, 2076, 2079,   69,   69,   69,
+       69,   69,   69, 2081, 2077,   69, 2080, 2082, 2078,   69,
+       69,   69, 2091,   69, 2232, 2089, 2085, 2104, 2083, 2084,
+
+     2092,   69, 2086, 2087,   69, 2094,   69,   69, 2093,   69,
+     2088, 2090, 2095,   69, 2096, 2097,   69,   69, 2099,   69,
+     2098, 2102,   69, 2101,   69, 2100,   69,   69,   69, 2107,
+       69, 2103, 2108,   69, 2109,   69, 2106,   69, 2112,   69,
+       69,   69, 2111,   69, 2105, 2110,   69,   69,   69, 2119,
+       69, 2116, 2117, 2120,   69, 2232, 2114, 2121,   69, 2122,
+       69, 2123,   69,   69, 2115, 2113,   69, 2118, 2125,   69,
+     2126,   69, 2124,   69, 2128,   69, 2130,   69, 2127,   69,
+       69, 2133,   69, 2132,   69,   69,   69,   69,   69, 2135,
+     2129,   69,   69,   69, 2139,   69, 2134, 2131,   69, 2140,
+
+       69,   69, 2138,   69, 2136,   69, 2137, 2142,   69,   69,
+       69, 2144, 2141,   69, 2145, 2152,   69,   69, 2154,   69,
+       69, 2143, 2146, 2147, 2148, 2150, 2153,   69, 2155, 2156,
+       69,   69,   69, 2151, 2149,   69, 2157, 2158, 2161,   69,
+     2163,   69,   69,   69,   69, 2159,   69,   69, 2167, 2168,
+     2160,   69,   69, 2162,   69,   69,   69, 2164,   69,   69,
+     2170, 2165,   69, 2173,   69, 2166, 2169,   69,   69,   69,
+     2171,   69, 2172, 2178, 2179, 2174,   69, 2175, 2181,   69,
+     2176, 2177,   69, 2182,   69,   69,   69,   69, 2187, 2183,
+     2180, 2184, 2185,   69,   69, 2186, 2188,   69,   69, 2192,
+
+     2189,   69,   69,   69, 2190,   69,   69,   69, 2195,   69,
+       69, 2199,   69,   69,   69, 2194,   69, 2191, 2200, 2204,
+     2193,   69, 2198,   69, 2202, 2196, 2197,   69, 2203,   69,
+       69, 2201, 2207,   69,   69, 2206, 2205, 2208,   69,   69,
+     2210, 2209,   69, 2211,   69,   69,   69, 2213,   69, 2214,
+       69, 2217,   69,   69, 2220, 2221,   69,   69, 2212,   69,
+     2223,   69, 2224,   69, 2215, 2216, 2222, 2218,   69,   69,
+       69, 2219,   69, 2232, 2226, 2225, 2228, 2227, 2230,   69,
+     2231,   69, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2229,
        41,   41,   41,   41,   41,   41,   41,   46,   46,   46,
 
        46,   46,   46,   46,   51,   51,   51,   51,   51,   51,
        51,   57,   57,   57,   57,   57,   57,   57,   62,   62,
-       62,   62,   62,   62,   62,   72,   72, 2174,   72,   72,
-       72,   72,  131,  131, 2174, 2174, 2174,  131,  131,  133,
-      133, 2174, 2174,  133, 2174,  133,  135, 2174, 2174, 2174,
-     2174, 2174,  135,  138,  138, 2174, 2174, 2174,  138,  138,
-      140, 2174, 2174, 2174, 2174, 2174,  140,  142,  142, 2174,
-      142,  142,  142,  142,   73,   73, 2174,   73,   73,   73,
-       73,   13, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174
+       62,   62,   62,   62,   62,   72,   72, 2232,   72,   72,
+       72,   72,  131,  131, 2232, 2232, 2232,  131,  131,  133,
+      133, 2232, 2232,  133, 2232,  133,  135, 2232, 2232, 2232,
+     2232, 2232,  135,  138,  138, 2232, 2232, 2232,  138,  138,
+      140, 2232, 2232, 2232, 2232, 2232,  140,  142,  142, 2232,
+      142,  142,  142,  142,   73,   73, 2232,   73,   73,   73,
+       73,   13, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+
+     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232
     } ;
 
-static yyconst flex_int16_t yy_chk[4323] =
+static yyconst flex_int16_t yy_chk[4423] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1632,15 +1679,15 @@ static yyconst flex_int16_t yy_chk[4323] =
         3,    3,    3,    4,    4,    4,    5,    5,    6,    6,
         5,    3,    6,   20,    4,   20,   20,    5,   20,    6,
         7,    7,    7,    7,   20,    7,    8,    8,    8,    8,
-       96,    8,    7,    9,    9,    9,   96,   33,    8,   10,
+      120,    8,    7,    9,    9,    9,  120,   33,    8,   10,
        10,   10,   15,   24,    9,   21,   15,   24,   21,   21,
        10,   11,   11,   11,   11,   11,   11,   19,   33,   19,
 
-       19, 2180,   19,   11,   25,   25,   21,   24,   19,   19,
+       19, 2238,   19,   11,   25,   25,   21,   24,   19,   19,
        77,   28,   11,   12,   12,   12,   12,   12,   12,   25,
        22,   22,   26,   26,   23,   12,   28,   30,   22,   23,
        77,   26,   22,   23,   12,   22,   23,   27,   23,   23,
-       29,   27,   30,  769,   27,   29,   31,   31,   70,   32,
+       29,   27,   30,  775,   27,   29,   31,   31,   70,   32,
        32,   27,   70,   27,   32,   31,   76,   34,   80,   35,
        76,   31,   34,   36,   36,   31,   34,   80,   36,   37,
        32,  140,   34,   35,   37,   34,   50,   37,   36,   50,
@@ -1653,454 +1700,465 @@ static yyconst flex_int16_t yy_chk[4323] =
        69,   72,   78,   82,   83,   78,   84,   72,   72,   82,
        85,   86,   87,   79,   89,   90,   91,   86,   78,   97,
        92,   94,   83,   83,   92,   89,   87,   93,   84,   85,
-       86,  138,   93,   90,   91,   94,   95,  100,   97,   95,
-       98,   99,   95,  101,   99,   98,  102,  103,   99,  104,
-      102,  105,  107,  106,  103,   95,   95,  101,  105,  108,
-      109,  100,  104,  110,  109,   98,  106,  112,  114,  111,
-
-      113,  113,  107,  115,  111,  116,  117,  108,  111,  118,
-      125,  110,  121,  119,  123,  120,  115,  112,  114,  124,
-      116,  120,  115,  118,  121,  117,  119,  118,  122,  122,
-      128,  125,  123,  127,  126,  124,  126,  129,  127,  130,
-      132,  132,  128,  134,  130,  136,  134,  136,  136,  122,
-      136,  139,  139,  137,  147,  129,  141,  126,  141,  141,
-      142,  141,  142,  142,  144,  142,  145,  144,  146,  147,
-      148,  145,  142,  149,  146,  150,  151,  152,  148,  153,
-      154,  151,  156,  156,  155,  157,  154,  154,  153,  155,
-      150,  157,  149,  158,  161,  158,  159,  152,  158,  162,
-
-      159,  160,  160,  163,  162,  159,  164,  165,  163,  166,
-      159,  165,  167,  161,  166,  158,  159,  159,  168,  169,
-      170,  174,  171,  172,  173,  173,  167,  171,  172,  164,
-      173,  169,  175,  168,  169,  177,  177,  176,  170,  178,
-      179,  174,  173,  176,  173,  178,  179,  180,  175,  181,
-      183,  178,  182,  184,  185,  183,  180,  186,  182,  184,
-      185,  187,  188,  189,  186,  190,  191,  192,  188,  193,
-      181,  190,  194,  196,  187,  192,  195,  194,  197,  198,
-      200,  199,  193,  189,  198,  199,  201,  202,  191,  196,
-      203,  195,  201,  204,  206,  205,  203,  205,  197,  208,
-
-      209,  206,  200,  207,  211,  202,  202,  210,  210,  207,
-      211,  212,  209,  204,  213,  214,  213,  212,  208,  215,
-      216,  217,  219,  222,  218,  221,  220,  219,  211,  217,
-      218,  215,  220,  213,  223,  224,  225,  222,  214,  216,
-      221,  226,  227,  231,  225,  227,  228,  234,  228,  224,
-      229,  229,  223,  230,  232,  232,  230,  233,  233,  235,
-      237,  231,  236,  234,  237,  236,  226,  238,  240,  239,
-      245,  241,  242,  242,  235,  239,  238,  241,  243,  244,
-      246,  247,  240,  243,  248,  244,  249,  249,  250,  251,
-      245,  250,  252,  253,  254,  254,  252,  248,  246,  255,
-
-      256,  258,  247,  257,  258,  260,  259,  251,  263,  257,
-      261,  253,  256,  262,  260,  264,  262,  255,  259,  261,
-      268,  263,  260,  260,  269,  260,  265,  264,  265,  265,
-      266,  266,  267,  270,  262,  267,  271,  268,  275,  269,
-      268,  273,  270,  272,  272,  271,  273,  274,  274,  276,
-      277,  278,  279,  275,  276,  280,  281,  282,  325,  283,
-      325,  280,  277,  282,  283,  287,  286,  279,  284,  285,
-      290,  278,  285,  284,  285,  290,  281,  289,  288,  284,
-      286,  287,  291,  289,  287,  292,  287,  288,  294,  293,
-      295,  299,  296,  295,  301,  291,  298,  302,  304,  135,
-
-      299,  305,  294,  291,  293,  292,  296,  305,  303,  295,
-      297,  298,  297,  297,  300,  301,  302,  306,  304,  300,
-      300,  307,  297,  303,  297,  297,  297,  308,  309,  297,
-      310,  311,  312,  313,  317,  310,  314,  315,  312,  316,
-      306,  307,  318,  309,  319,  316,  311,  308,  314,  319,
-      321,  315,  322,  313,  320,  320,  323,  320,  318,  317,
-      324,  326,  327,  329,  328,  326,  327,  330,  322,  331,
-      321,  336,  323,  133,  324,  332,  330,  329,  331,  333,
-      332,  327,  328,  333,  334,  335,  338,  330,  337,  330,
-      338,  335,  336,  334,  337,  339,  340,  341,  341,  342,
-
-      339,  343,  344,  344,  342,  345,  346,  347,  348,  349,
-      346,  345,  350,  348,  343,  351,  340,  352,  349,  353,
-      353,  352,  355,  359,  350,  354,  361,  351,  347,  360,
-      354,  356,  356,  358,  358,  361,  362,  360,  363,  365,
-      366,  367,  368,  355,  359,  369,  370,  371,  368,  374,
-      363,  370,  374,  376,  369,  367,  362,  365,  372,  365,
-      366,  371,  373,  375,  378,  377,  372,  376,  373,  375,
-      377,  379,  380,  381,  382,  383,  380,  384,  388,  382,
-      386,  396,  387,  393,  389,  131,  378,  375,  381,  391,
-      389,  383,  379,  396,  388,  389,  384,  385,  385,  390,
-
-      386,  387,  390,  385,  395,  385,  392,  392,  393,  391,
-      394,  394,  397,  385,  398,  399,  385,  400,  409,  395,
-      401,  402,  400,  385,  403,  404,  406,  397,  407,  401,
-      406,  404,  408,  398,  407,  410,  409,  399,  411,  403,
-      402,  412,  412,  413,  408,  414,  411,  415,  410,  413,
-      416,  417,  418,  415,  417,  419,  420,  414,  421,  420,
-      419,   68,  416,  422,  423,  424,  431,  418,  432,  423,
-      423,  425,  425,  432,  421,  426,  426,  421,  424,  422,
-      427,  428,  428,  429,  429,  430,  427,  431,  433,  434,
-      435,  430,  436,  438,  435,  437,  439,  434,  436,  437,
-
-      440,  439,  441,  443,  442,  445,  447,  433,  441,  442,
-      444,  438,  450,  444,  446,  446,  448,  443,  444,  452,
-      440,  448,  444,  445,  447,  449,  450,  451,  452,  453,
-      449,  454,  453,  451,  455,  454,  456,  457,  458,  455,
-      459,  456,  461,  460,  462,  459,  468,  465,  463,  464,
-      465,  458,  460,  457,  463,  464,  462,  454,  461,  466,
-      467,  469,  466,  470,  468,  467,  471,  472,  479,  470,
-      486,  471,  476,  472,  473,  469,  474,  473,  475,  477,
-      478,  474,  480,  475,  475,  476,  478,  479,  482,  483,
-      481,  480,  477,  481,  483,  486,  484,  485,  485,  488,
-
-      482,  484,  484,  487,  489,  487,  489,  490,  481,  491,
-      492,  493,  494,  495,  497,  496,  494,  498,  488,  499,
-      500,  501,  495,  502,  504,  490,  500,  491,  504,  492,
-      496,  493,  497,  505,  499,  507,  498,  503,  503,  508,
-      501,  506,  502,  509,  505,  510,  506,  512,  511,  515,
-      513,  507,  510,  511,  512,  513,  509,  514,  508,  516,
-      517,  518,  514,  519,  523,  520,  516,  515,  521,  517,
-      520,  521,  519,  522,  525,  518,  527,  522,  524,  524,
-      528,  529,  531,  525,  530,  523,  528,  524,  530,  532,
-      533,  534,  535,  536,  531,  527,  533,  537,  540,  534,
-
-      538,  529,  546,  543,  556,  538,  554,  532,  547,  538,
-      535,  546,  538,  540,  547,  549,  549,  537,  536,  538,
-      543,  548,  538,  550,  550,  548,  551,  554,  555,  556,
-      591,  553,  551,  552,  552,  552,  553,  552,  557,  591,
-      552,  557,  558,  558,  561,  552,  555,  559,  560,  560,
-      568,  552,  552,  563,  559,  562,  562,  564,  563,  561,
-      564,  565,  566,  567,  566,  569,  565,  570,  571,  568,
-      572,  572,  573,  575,  574,  567,  571,  576,  577,  578,
-      578,  582,   62,  577,  582,  569,  570,  573,  574,  576,
-      579,  575,  580,  581,  583,  579,  584,  585,  580,  581,
-
-      583,  586,  587,  588,  584,  585,  589,  587,  590,  590,
-      588,  593,  592,  594,  596,  597,  600,  593,  598,  586,
-      592,  598,  599,  596,  597,  589,  602,  599,  601,  601,
-      600,  603,  594,  604,  605,  609,  607,  605,  607,  610,
-      603,  602,  608,  608,  610,  605,  611,  613,  612,  615,
-      614,  616,  619,  617,  618,  616,  609,  604,  615,  622,
-      620,  619,  621,  623,  623,  622,  624,  611,  612,  613,
-      614,  617,  620,  618,  625,  626,  621,  627,  628,  629,
-      630,  626,  628,  627,  631,  632,  624,  634,  625,  631,
-      633,  633,  630,  634,  635,  636,  637,  635,  629,  638,
-
-      630,  639,  640,  640,  641,  638,  632,  642,  642,  637,
-      643,  644,  645,  636,  646,  644,  647,  648,  649,  651,
-      651,  639,  641,  652,   57,  643,  653,  652,  654,  655,
-      647,  645,  656,  655,  658,  693,  668,  648,  646,  649,
-      650,  653,  668,  650,  693,  650,  660,  656,  658,  650,
-      657,  650,  659,  654,  662,  657,  650,  659,  659,  661,
-      660,  650,  663,  661,  665,  664,  666,  663,  667,  662,
-      664,  670,  670,  669,  673,  671,  674,  663,  665,  669,
-      671,  674,  667,  672,  672,  675,  673,  666,  676,  672,
-      678,  672,  677,  677,  680,  678,  679,  681,  682,  675,
-
-      676,  688,  672,  684,  679,  683,  683,  684,  680,  672,
-      687,  689,  686,  687,  691,  690,  681,  682,  686,  691,
-      688,  690,  692,  694,  689,  696,  695,  697,  698,  699,
-      700,  701,  694,  698,  696,  707,  702,  704,  703,  706,
-      708,  692,  695,  704,  700,  702,  697,  703,  709,  699,
-      710,  701,  711,  706,  707,  710,  712,  711,  708,  713,
-      715,  712,  716,  709,  714,  714,  715,  718,  713,  720,
-      720,  719,  722,  720,  723,  716,  719,  719,  721,  725,
-      724,  721,  726,  718,  727,  725,  722,  727,  728,  730,
-       52,  729,  731,  732,  723,  724,  729,  731,  732,  733,
-
-      735,  736,  726,  739,  737,  730,  735,  738,  738,  728,
-      737,  733,  739,  740,  742,  741,  743,  736,  741,  744,
-      745,  746,  750,  747,  748,  752,  753,  746,  747,  748,
-      756,  740,  742,  745,  751,  743,  752,  751,  753,  744,
-      750,  754,  755,  759,  757,  756,  760,  754,  755,  757,
-      758,  758,  761,  762,  763,  765,  764,  762,  766,  768,
-      760,  770,  759,  773,  761,  764,  771,  772,  775,  773,
-      774,  782,  763,  775,  765,  770,  774,  776,  768,  776,
-      777,  771,  778,  766,  779,  777,  780,  772,  781,  784,
-      782,  780,  783,  785,  786,  786,  778,  787,  779,  783,
-
-      788,  789,  790,  781,  784,  791,  795,  789,  793,  793,
-      791,  787,  785,  795,  794,  796,  798,  797,  788,  794,
-      797,  791,  790,  799,  791,  800,  801,  803,  802,  796,
-      800,  807,  799,  802,  798,  805,  805,  806,  808,  809,
-      807,  806,  810,  811,  812,  801,  803,  813,  814,  815,
-      811,  818,  819,  808,  816,  817,  812,  810,  809,  820,
-      816,  823,  853,  825,  853,  827,  813,  815,  820,  814,
-      817,  818,  819,  822,  824,  823,  826,  827,  829,  822,
-      828,  826,  824,  825,  830,  828,  828,  831,  832,  832,
-      833,  837,  834,  835,  836,  836,  837,  829,  830,  835,
-
-      831,  834,  838,  833,  839,  840,  841,  841,  842,  839,
-      840,  838,  843,  844,  846,  845,  847,  848,  844,  849,
-      854,  843,  847,  848,  849,  851,  850,  857,  842,  845,
-      850,  854,  846,  856,  851,  852,  852,  856,  858,  851,
-      859,  851,  857,  851,  861,  851,  860,  863,  862,  859,
-      865,  860,  860,  864,  866,  868,  858,  862,  861,  869,
-      867,  864,  870,  872,  865,  879,  863,  870,  866,  867,
-      871,  871,  876,  868,  873,  873,  875,  876,  872,  875,
-      877,  878,  878,  881,  869,  879,  880,  880,  881,  882,
-      883,  883,  884,  885,  886,  887,  888,  888,  885,  877,
-
-      887,  889,  886,  890,  891,  892,  899,  894,  895,  890,
-      882,  891,  884,  894,  895,  896,  897,  898,  892,  889,
-      896,  900,  897,  901,  901,  899,  898,  902,  903,  904,
-      905,  906,  900,  907,  908,  909,  905,  910,  911,  911,
-      912,  913,  917,  914,   51,  906,  908,  902,  903,  909,
-      920,  906,  904,  907,  915,  910,  916,  916,  918,  915,
-      912,  914,  921,  918,  922,  917,  913,  921,  921,  920,
-      923,  924,  925,  922,  926,  927,  929,  927,  923,  926,
-      928,  931,  929,  932,  930,  924,  933,  925,  930,  934,
-      925,  935,  931,  936,  928,  937,  935,  939,  940,  941,
-
-      943,  939,  932,  946,  944,  942,  945,  934,  947,  952,
-      952,  936,  933,  947,  943,  937,  940,  942,  941,  944,
-      948,  945,  946,  949,  950,  951,  953,  948,  949,  954,
-      955,  956,  957,  958,  951,  954,  956,  965,  957,  958,
-      967,  953,  950,  959,  959,  960,  960,  962,  962,  963,
-      964,  955,  966,  963,  967,  965,  968,  966,  969,  964,
-      970,  971,   46,  969,  969,  970,  970,  972,  973,  974,
-      975,  976,  977,  978,  979,  968,  975,  980,  984,  978,
-      979,  971,  981,  982,  983,  985,  972,  973,  974,  986,
-       41,  977,  984,  987,  987,  988,  980,  976,  988,  989,
-
-      991,  981,  982,  983,  986,  991,  985,  990,  990,  992,
-      993,  989,  994,  992,  995,  999,  996,  998,  996, 1000,
-     1000,  994,  996,  993, 1001, 1003, 1002,  995, 1004, 1001,
-     1002,  999, 1005, 1006,   14,  996, 1009,  998, 1011, 1006,
-     1007, 1007, 1023, 1011, 1013, 1003, 1004, 1012, 1012, 1018,
-     1013, 1022, 1005, 1026, 1009, 1015, 1015, 1017, 1017, 1020,
-     1021, 1021, 1020, 1024, 1025, 1018, 1022, 1023, 1026, 1025,
-     1027, 1027, 1028, 1029, 1030, 1030, 1028, 1024, 1031, 1032,
-     1033, 1035, 1034, 1039, 1033, 1038, 1035, 1037, 1037, 1041,
-     1032, 1040, 1040, 1029, 1041, 1042, 1043, 1039, 1044, 1045,
-
-     1031, 1034, 1046, 1038, 1045, 1048, 1047, 1044, 1047, 1050,
-     1048, 1049, 1051, 1053, 1055, 1042, 1043, 1049, 1051, 1054,
-     1054, 1058, 1046, 1061, 1056, 1059, 1059, 1053, 1062, 1050,
-     1056, 1060, 1060, 1055, 1063, 1064, 1065, 1063, 1067,   13,
-     1071, 1061, 1069, 1062, 1067, 1058, 1066, 1064, 1068, 1066,
-     1070, 1069, 1066, 1068, 1072, 1070, 1065, 1072, 1074, 1074,
-     1073, 1075, 1076, 1077, 1066, 1071, 1073, 1078, 1081, 1079,
-     1080, 1085, 1082, 1078, 1079, 1084, 1080, 1082, 1086, 1075,
-     1084, 1076, 1087, 1077, 1083, 1083, 1088, 1089, 1092, 1085,
-     1091, 1081, 1090, 1093, 1092, 1094, 1095, 1096, 1086, 1099,
-
-     1088, 1089, 1087, 1091, 1090, 1098, 1098, 1100, 1101, 1102,
-     1095, 1104, 1100, 1093, 1108, 1094, 1102, 1103, 1096, 1099,
-     1106, 1109, 1109, 1101, 1110, 1110, 1103, 1104, 1111, 1103,
-     1112, 1111, 1113, 1115, 1114, 1106, 1116, 1113, 1118, 1108,
-     1106, 1121, 1115,    0, 1117, 1119, 1122, 1118, 1123, 1112,
-     1114, 1119, 1126, 1117, 1124, 1116, 1117, 1120, 1120, 1122,
-     1125, 1121, 1128, 1129, 1126, 1132, 1123, 1131, 1124, 1130,
-     1130, 1136, 1133, 1135, 1132,    0, 1125, 1133, 1134, 1134,
-     1140, 1129, 1135, 1131, 1139, 1135, 1137, 1128, 1141, 1136,
-     1139, 1137, 1137, 1134, 1141, 1142, 1143, 1144, 1140, 1146,
-
-     1142, 1147, 1143, 1144, 1148, 1149, 1152, 1147, 1149, 1154,
-     1153, 1155, 1156, 1162, 1149, 1157, 1158, 1148, 1153, 1146,
-     1159, 1157, 1154, 1161, 1161, 1152, 1163, 1168, 1167, 1155,
-     1163, 1156, 1158, 1162, 1164, 1165, 1166, 1167, 1159, 1164,
-     1165, 1166, 1170, 1171, 1171, 1172, 1173, 1176, 1174, 1175,
-     1168, 1177, 1178, 1173, 1180, 1179, 1181, 1170, 1178, 1172,
-     1174, 1175, 1181, 1182, 1182, 1183, 1176, 1179, 1183, 1184,
-     1184, 1177, 1180, 1186, 1187, 1188, 1188, 1189, 1186, 1190,
-     1191, 1190, 1192, 1187, 1193, 1194, 1195, 1196, 1197, 1189,
-     1194, 1198, 1199, 1200, 1201, 1195, 1198, 1202, 1202, 1196,
-
-     1191, 1199, 1193, 1197, 1192, 1203, 1204, 1205, 1206, 1201,
-     1208, 1203, 1210, 1200, 1199, 1207, 1207, 1209, 1209, 1211,
-     1211, 1212, 1217, 1213, 1219, 1212, 1205, 1204, 1206, 1213,
-     1208, 1214, 1216, 1210, 1214, 1218, 1220, 1225, 1216, 1220,
-     1217, 1218, 1221, 1221, 1222, 1222, 1223, 1224, 1226, 1219,
-     1227, 1228, 1223, 1231, 1232, 1234, 1227, 1225, 1230, 1224,
-     1224, 1224, 1236, 1230, 1230, 1237, 1224, 1231, 1226, 1233,
-     1233, 1228, 1235, 1235, 1242, 1232, 1238, 1238, 1239, 1239,
-     1243, 1234, 1236, 1242, 1244, 1244, 1246, 1237, 1245, 1247,
-     1248, 1249, 1249, 1246, 1250, 1251,    0, 1253, 1247, 1254,
-
-     1256, 1243, 1253, 1245, 1255, 1254, 1257, 1256, 1258, 1259,
-     1259, 1251, 1257, 1260, 1258, 1262, 1248, 1261, 1260, 1263,
-     1250, 1264, 1265, 1266, 1255, 1265, 1261, 1267, 1268, 1268,
-     1269, 1272, 1270, 1264, 1273, 1262, 1270, 1274, 1263, 1275,
-     1276, 1266, 1277, 1275, 1279, 1269, 1276, 1278, 1278, 1273,
-     1272, 1277, 1270, 1267, 1281, 1279, 1274, 1280, 1280, 1282,
-     1279, 1283, 1284, 1285, 1285, 1286, 1287, 1288, 1284, 1295,
-     1286, 1286, 1287, 1282, 1289, 1281, 1290, 1292, 1294, 1293,
-     1297, 1283, 1290, 1293, 1299, 1296, 1289, 1302, 1302, 1292,
-     1294, 1296, 1298, 1288, 1295, 1305, 1299, 1301, 1298,    0,
-
-     1301, 1306, 1297, 1303, 1303, 1304, 1304, 1306, 1307, 1315,
-     1310, 1308, 1309, 1317, 1307, 1305, 1308, 1312, 1309, 1310,
-     1314, 1315, 1312, 1314, 1318, 1317, 1319, 1319, 1320, 1321,
-     1322, 1322, 1323, 1324, 1321, 1325, 1318, 1320, 1326, 1327,
-     1328, 1329, 1324, 1327, 1330, 1328, 1333, 1329, 1332, 1332,
-     1334, 1339, 1323, 1325, 1335, 1337, 1337, 1326, 1330, 1334,
-     1332, 1341, 1343, 1335, 1333, 1342, 1344, 1339, 1343, 1345,
-     1345, 1346, 1348, 1346, 1347, 1347, 1341, 1350, 1351, 1342,
-     1348, 1352, 1352, 1344, 1350, 1353, 1354, 1355, 1356, 1357,
-     1358, 1359, 1362, 1363, 1353, 1366, 1360, 1366, 1351, 1355,
-
-     1356, 1357, 1360, 1365, 1367, 1368, 1359, 1354, 1365, 1376,
-     1368, 1369, 1362, 1363, 1371, 1360, 1358, 1372, 1369, 1372,
-     1374, 1377, 1367, 1371, 1375, 1375, 1377, 1378, 1379, 1378,
-     1381, 1380, 1382, 1379, 1374, 1376, 1380, 1383, 1385, 1384,
-     1388, 1386, 1389, 1383, 1384, 1390, 1390, 1392, 1381, 1386,
-     1393, 1385, 1382, 1391, 1391, 1394, 1389, 1397, 1395, 1388,
-     1402, 1394, 1392, 1395, 1396, 1400, 1396, 1398, 1398, 1397,
-     1393, 1399, 1399, 1401, 1400, 1401, 1404, 1400, 1403, 1403,
-     1405, 1402, 1407, 1408, 1410, 1404, 1411, 1407, 1408, 1412,
-     1417, 1419, 1405, 1413, 1415, 1418, 1417, 1410, 1424, 1420,
-
-     1415, 1421, 1421, 1422, 1423, 1423, 1411, 1412, 1420, 1413,
-     1418, 1425, 1422, 1415, 1426, 1425, 1419, 1424, 1427, 1426,
-     1428, 1429, 1430, 1433, 1433, 1428, 1428, 1435, 1438, 1429,
-     1439, 1427, 1434, 1434, 1436, 1436, 1435, 1437, 1437, 1440,
-     1438, 1441, 1430, 1442, 1442, 1440, 1441, 1434, 1439, 1443,
-     1446, 1445, 1448, 1449, 1443, 1445, 1450, 1451, 1449, 1452,
-     1453, 1455, 1455, 1456, 1452, 1454, 1458, 1456, 1457, 1459,
-     1446, 1458, 1451, 1460, 1462, 1463, 1464, 1448, 1453, 1450,
-     1465, 1454, 1466, 1457, 1467, 1468, 1470, 1471, 1471, 1473,
-     1474, 1472, 1460, 1462, 1472, 1459, 1467, 1475, 1463, 1465,
-
-     1464, 1470, 1473, 1466, 1474, 1479, 1468, 1476, 1476, 1480,
-     1475, 1477, 1477, 1478, 1478, 1481, 1481, 1482, 1483, 1483,
-     1479, 1486, 1480, 1484, 1484, 1488, 1482, 1485, 1485, 1482,
-     1487, 1487, 1489, 1489, 1490, 1490, 1491, 1492, 1496, 1494,
-     1486, 1495, 1495, 1488, 1494, 1497, 1497, 1498, 1499, 1500,
-     1491, 1503, 1500, 1504, 1499, 1508, 1492, 1496, 1501, 1501,
-     1502, 1502, 1505, 1506, 1506, 1498, 1509, 1510, 1504, 1511,
-     1503, 1512, 1512, 1511, 1501, 1508, 1513, 1514, 1514, 1515,
-     1516, 1505, 1510, 1517, 1518, 1518, 1522, 1516, 1519, 1509,
-     1520, 1523, 1520, 1524, 1525, 1513, 1523, 1519, 1522, 1515,
-
-     1526, 1527, 1529, 1528, 1530, 1531, 1527, 1525, 1528, 1517,
-     1532, 1533, 1537, 1530, 1531,    0, 1534, 1529, 1524, 1532,
-     1535, 1526, 1534, 1541, 1535, 1533, 1539, 1540, 1540, 1541,
-     1542, 1542, 1537, 1543, 1545, 1539, 1546, 1554, 1548, 1542,
-     1549, 1552, 1550, 1553, 1552, 1546, 1555,    0, 1553, 1545,
-     1548, 1556, 1556, 1543, 1550, 1543, 1549, 1554, 1555, 1558,
-     1558, 1559, 1560, 1561, 1561, 1562, 1559, 1565, 1560, 1563,
-     1563, 1564, 1566, 1567, 1567, 1570, 1569, 1572, 1570, 1562,
-     1569, 1565, 1572, 1564, 1571, 1571, 1573, 1574, 1575, 1576,
-     1577, 1566, 1578, 1576, 1579, 1580, 1581, 1578, 1584, 1583,
-
-     1579, 1580, 1575, 1584, 1586, 1585, 1573, 1574, 1590, 1593,
-     1577, 1585, 1586, 1600, 1581, 1583, 1587, 1609, 1587, 1591,
-     1591, 1592, 1590, 1609, 1592, 1594, 1594, 1598, 1598, 1603,
-     1611, 1600, 1604, 1612, 1603, 1593, 1616, 1604, 1605, 1605,
-     1607, 1607, 1610, 1610, 1613, 1615, 1611, 1619, 1616, 1613,
-     1617, 1617, 1620, 1621, 1622, 1612, 1619,    0, 1620, 1624,
-     1624, 1626, 1626, 1628, 1615, 1627, 1627, 1630, 1628, 1622,
-     1629, 1621, 1629, 1631, 1632, 1633, 1633, 1634, 1634, 1632,
-     1636, 1630, 1635, 1635, 1637, 1638, 1638, 1631, 1639, 1640,
-     1641, 1642, 1636, 1643, 1644, 1645, 1645, 1641, 1643, 1646,
-
-     1639, 1640, 1637, 1642, 1647, 1648, 1649, 1650, 1646, 1651,
-     1652, 1652, 1653, 1655, 1644, 1654, 1656, 1657, 1668, 1649,
-     1657, 1653, 1658, 1651, 1659, 1648, 1665, 1658, 1669, 1659,
-     1647, 1650, 1670, 1654, 1666, 1655, 1660, 1660, 1668, 1656,
-     1661, 1661, 1662, 1662, 1665, 1666, 1669, 1671, 1672, 1673,
-     1674, 1675, 1675, 1678, 1670, 1677, 1677, 1672, 1679, 1680,
-     1681, 1682, 1678, 1683, 1684, 1685, 1680, 1671, 1674, 1673,
-     1686, 1686, 1687, 1687, 1689, 1681, 1679, 1688, 1690, 1682,
-     1684, 1683, 1691, 1688, 1685, 1692, 1693, 1694, 1699, 1695,
-     1692, 1698, 1689, 1690, 1695, 1696, 1700, 1696, 1703, 1704,
-
-     1698, 1691, 1704, 1705, 1705, 1706, 1693, 1694, 1699, 1707,
-     1708, 1708, 1709, 1711, 1719, 1700, 1709, 1712, 1703, 1714,
-     1706, 1712, 1713, 1713, 1716, 1716, 1721, 1707, 1711, 1718,
-     1718, 1721, 1714, 1719, 1720, 1720, 1722, 1722, 1726, 1726,
-     1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1730, 1736,
-     1732, 1729, 1737, 1739, 1728, 1734, 1738, 1737, 1731, 1740,
-     1740, 1738, 1727, 1742, 1736, 1733, 1741, 1741, 1739, 1743,
-     1742, 1744, 1747, 1745, 1743, 1746, 1746, 1744, 1745, 1748,
-     1748, 1749, 1749, 1752, 1753,    0, 1754, 1747, 1755, 1753,
-     1753, 1754, 1758, 1756, 1755, 1757, 1752, 1756, 1759, 1760,
-
-     1757, 1758, 1762, 1761, 1766, 1765, 1764, 1760, 1761, 1764,
-     1765, 1767, 1768, 1759, 1762, 1774, 1769, 1770, 1770, 1771,
-     1775, 1768, 1766, 1776, 1767, 1769, 1777, 1777, 1771, 1778,
-     1779, 1780, 1781, 1781, 1774, 1782, 1789, 1783, 1784, 1779,
-     1775, 1783, 1776, 1786, 1784, 1789, 1780, 1787, 1778, 1785,
-     1785, 1786, 1787, 1790, 1782, 1792, 1793, 1794, 1801, 1792,
-     1796, 1796, 1799, 1799, 1803,    0, 1790, 1804, 1804, 1813,
-     1793, 1811, 1794, 1805, 1805, 1813, 1806, 1812, 1801, 1806,
-     1807, 1807, 1808, 1808, 1803, 1809, 1809, 1810, 1810, 1811,
-     1815, 1812, 1814, 1814, 1815, 1818, 1819, 1820, 1821, 1822,
-
-     1818, 1818, 1823, 1820, 1821, 1826, 1823, 1829, 1827, 1830,
-     1826, 1827, 1831, 1832, 1833, 1834, 1836, 1831, 1838, 1819,
-     1835, 1835, 1837, 1845, 1822,    0, 1830, 1830, 1842, 1834,
-     1837, 1832, 1829, 1844, 1833, 1836, 1847, 1838, 1839, 1839,
-     1840, 1840, 1841, 1841, 1842, 1843, 1846, 1848, 1852, 1845,
-     1843, 1850, 1850, 1844, 1851, 1846, 1847, 1851, 1854, 1854,
-     1855, 1856, 1858, 1859, 1859, 1855, 1852, 1848, 1860, 1861,
-     1856, 1862, 1860, 1869, 1864, 1865, 1863, 1871, 1861, 1873,
-     1858, 1863, 1863, 1868, 1865, 1869, 1862, 1864, 1867, 1867,
-     1876, 1873, 1868, 1877, 1877, 1876, 1878, 1885, 1880, 1884,
-
-     1881, 1881, 1871, 1880, 1881, 1878, 1883, 1883, 1884, 1886,
-     1887, 1889, 1888, 1890, 1890, 1887, 1889, 1885, 1888, 1891,
-     1892, 1893, 1895, 1894, 1898, 1892, 1896, 1896, 1886, 1894,
-     1899, 1900, 1900, 1901, 1902, 1903, 1904, 1905, 1902, 1893,
-     1891, 1906, 1908, 1898, 1903, 1899, 1901, 1895, 1907, 1906,
-     1909, 1909, 1904, 1907, 1910, 1916, 1905, 1912, 1912, 1913,
-     1913, 1915, 1915, 1920, 1917, 1919, 1919, 1921, 1908, 1917,
-     1922, 1916, 1925, 1910, 1924, 1924, 1927, 1928, 1928, 1929,
-     1929, 1931, 1930, 1920, 1932, 1933, 1925, 1934, 1934, 1922,
-     1921, 1930, 1935, 1936, 1936, 1935, 1932, 1938, 1927, 1939,
-
-     1931, 1940, 1941, 1941, 1943, 1933, 1946, 1940, 1942, 1938,
-     1945, 1942, 1947, 1948, 1952, 1945, 1949, 1949, 1947, 1939,
-     1951, 1951, 1943, 1954, 1954, 1946, 1956, 1955, 1967, 1957,
-     1948, 1948, 1955, 1952, 1957, 1958, 1958, 1959, 1959, 1961,
-     1956, 1960, 1960, 1971, 1961, 1963, 1963, 1968, 1968, 1972,
-     1967, 1970, 1970, 1973, 1974, 1974, 1975, 1971, 1978, 1979,
-     1981, 1975, 1973, 1980, 1980, 1981, 1983, 1979, 1984, 1972,
-     1985, 1986, 1978, 1987, 1989, 1985, 1990, 1991, 1992, 1987,
-     1993, 1994, 1989, 1986, 1995, 1998, 1983,    0, 1984, 1995,
-     2000, 2000, 2001, 2001, 1992, 1991, 1990, 1993, 1993, 2002,
-
-     2006, 2006, 1994, 2002, 2009, 1998, 2008, 2008, 2009, 2008,
-     2011, 2011, 2012, 2013, 2015, 2015, 2016, 2017, 2019, 2020,
-     2021, 2021, 2024, 2016, 2022, 2022, 2025, 2013, 2020, 2027,
-     2012, 2025, 2017, 2023, 2023, 2028, 2019, 2024, 2026, 2026,
-     2029, 2030, 2031, 2032, 2033, 2033, 2030, 2031, 2036, 2036,
-     2028, 2038, 2038, 2052, 2027, 2039, 2039, 2040, 2040, 2042,
-     2046, 2029, 2032, 2043, 2043, 2045, 2045, 2048, 2042, 2047,
-     2047, 2052, 2046, 2049, 2049, 2053, 2056, 2055, 2053, 2057,
-     2058, 2060, 2048, 2055, 2057, 2059, 2066, 2069, 2070, 2066,
-     2056, 2069, 2071, 2073, 2074, 2076, 2075, 2060, 2079, 2058,
-
-     2077, 2078, 2081, 2059, 2080, 2074, 2071, 2089, 2070, 2075,
-     2082, 2082, 2083,    0, 2076, 2087, 2073, 2078, 2077, 2080,
-     2087, 2083, 2081, 2079, 2084, 2084, 2085, 2085, 2086, 2086,
-     2088, 2090, 2089, 2091, 2092, 2088, 2093, 2093, 2095, 2091,
-     2097, 2099, 2102, 2100, 2101, 2106, 2090, 2104, 2092, 2100,
-     2101, 2103, 2108, 2095, 2109, 2110, 2102, 2107, 2097, 2106,
-     2099, 2107, 2111, 2114, 2103, 2112, 2104, 2109, 2110, 2113,
-     2112, 2108, 2115, 2115, 2113, 2116, 2116, 2120, 2117, 2118,
-     2119, 2111, 2114, 2117, 2118, 2119, 2121, 2122, 2122, 2125,
-     2124, 2126, 2121, 2127, 2128, 2131, 2120, 2124, 2129, 2127,
-
-     2131, 2132, 2133, 2134, 2135, 2135, 2137, 2136, 2125, 2142,
-     2126, 2129, 2136, 2128, 2138, 2138, 2134, 2139, 2139, 2140,
-     2132, 2133, 2141, 2144, 2140, 2137, 2143, 2143, 2142, 2141,
-     2144, 2145, 2146, 2148, 2147, 2150, 2151, 2152, 2145, 2147,
-     2150, 2151, 2153, 2154, 2154, 2155, 2156, 2157, 2157, 2158,
-     2158, 2146, 2148, 2159, 2160, 2160, 2152, 2161, 2161, 2162,
-     2159, 2153, 2164, 2167, 2155, 2156, 2162, 2164, 2167, 2168,
-     2169, 2170, 2170, 2171, 2171,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0, 2168, 2169,
-     2175, 2175, 2175, 2175, 2175, 2175, 2175, 2176, 2176, 2176,
-
-     2176, 2176, 2176, 2176, 2177, 2177, 2177, 2177, 2177, 2177,
-     2177, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2179, 2179,
-     2179, 2179, 2179, 2179, 2179, 2181, 2181,    0, 2181, 2181,
-     2181, 2181, 2182, 2182,    0,    0,    0, 2182, 2182, 2183,
-     2183,    0,    0, 2183,    0, 2183, 2184,    0,    0,    0,
-        0,    0, 2184, 2185, 2185,    0,    0,    0, 2185, 2185,
-     2186,    0,    0,    0,    0,    0, 2186, 2187, 2187,    0,
-     2187, 2187, 2187, 2187, 2188, 2188,    0, 2188, 2188, 2188,
-     2188, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
-     2174, 2174
+       86,  138,   93,   90,   91,   94,   95,   96,   97,   95,
+       98,   99,   95,   96,   99,   98,  100,  101,   99,  102,
+      103,  104,  105,  102,  106,   95,   95,  103,  107,  105,
+      137,  101,   96,  108,  104,   98,  110,  106,  109,  112,
+
+      100,  111,  109,  113,  113,  114,  111,  115,  107,  116,
+      111,  108,  117,  125,  110,  118,  121,  119,  123,  112,
+      115,  122,  122,  124,  116,  114,  115,  127,  121,  118,
+      119,  117,  127,  118,  125,  126,  123,  126,  128,  124,
+      130,  129,  122,  132,  132,  130,  134,  139,  139,  134,
+      128,  136,  144,  136,  136,  144,  136,  147,  126,  129,
+      141,  149,  141,  141,  142,  141,  142,  142,  145,  142,
+      148,  146,  147,  145,  150,  152,  142,  146,  148,  151,
+      149,  153,  155,  228,  151,  154,  228,  155,  161,  150,
+      153,  154,  154,  156,  156,  152,  157,  159,  158,  164,
+
+      158,  159,  157,  158,  160,  160,  159,  161,  162,  163,
+      166,  159,  165,  162,  163,  166,  165,  159,  159,  167,
+      158,  168,  164,  169,  170,  171,  172,  174,  173,  173,
+      171,  172,  174,  167,  173,  169,  168,  175,  169,  176,
+      181,  177,  170,  178,  178,  180,  173,  177,  173,  181,
+      179,  180,  182,  183,  185,  176,  179,  175,  184,  183,
+      185,  186,  179,  184,  187,  188,  189,  186,  190,  191,
+      192,  187,  189,  182,  193,  191,  194,  197,  188,  195,
+      196,  198,  193,  200,  195,  199,  201,  200,  190,  194,
+      199,  202,  192,  197,  203,  196,  204,  202,  205,  207,
+
+      209,  198,  204,  206,  208,  206,  207,  215,  201,  210,
+      208,  212,  203,  203,  211,  211,  213,  212,  205,  209,
+      216,  210,  213,  214,  217,  214,  218,  219,  224,  232,
+      215,  220,  216,  219,  218,  212,  220,  222,  221,  223,
+      225,  226,  214,  217,  221,  227,  224,  232,  229,  226,
+      229,  235,  222,  223,  225,  230,  230,  231,  233,  233,
+      231,  234,  234,  236,  135,  237,  239,  235,  237,  238,
+      227,  240,  241,  238,  242,  239,  246,  240,  236,  244,
+      242,  243,  243,  245,  244,  247,  241,  248,  249,  245,
+      250,  250,  251,  252,  253,  251,  246,  254,  253,  255,
+
+      255,  249,  256,  247,  257,  258,  259,  257,  248,  261,
+      260,  252,  259,  260,  262,  254,  263,  258,  266,  264,
+      256,  261,  264,  262,  265,  263,  267,  270,  267,  267,
+      266,  262,  262,  271,  262,  268,  268,  265,  269,  280,
+      264,  269,  272,  273,  270,  274,  274,  270,  271,  275,
+      277,  272,  273,  278,  275,  276,  276,  279,  278,  280,
+      281,  282,  283,  285,  284,  277,  286,  282,  285,  279,
+      284,  286,  288,  287,  289,  281,  287,  286,  287,  290,
+      292,  291,  283,  293,  295,  292,  288,  291,  290,  294,
+      289,  296,  298,  289,  297,  289,  293,  297,  301,  295,
+
+      300,  303,  304,  312,  293,  296,  298,  301,  312,  294,
+      305,  306,  308,  297,  299,  300,  299,  299,  302,  309,
+      310,  304,  303,  302,  302,  305,  299,  311,  299,  299,
+      299,  306,  307,  299,  313,  308,  315,  314,  307,  309,
+      310,  316,  311,  314,  317,  318,  319,  320,  323,  313,
+      321,  318,  326,  316,  324,  321,  315,  325,  317,  322,
+      322,  330,  322,  320,  133,  327,  326,  327,  323,  331,
+      324,  319,  328,  325,  329,  332,  328,  333,  329,  330,
+      334,  336,  337,  331,  332,  334,  333,  335,  337,  338,
+      336,  335,  339,  329,  341,  332,  340,  332,  339,  341,
+
+      340,  342,  343,  343,  344,  346,  345,  347,  347,  348,
+      338,  345,  349,  350,  351,  348,  349,  344,  346,  351,
+      352,  342,  355,  353,  354,  357,  355,  356,  356,  352,
+      357,  358,  359,  359,  350,  353,  354,  361,  361,  362,
+      363,  364,  365,  366,  369,  368,  131,  370,  363,  372,
+      364,  371,  358,  374,  373,  366,   68,  371,  372,  373,
+      362,  370,  365,  368,  369,  368,  375,  374,  377,  376,
+      378,  377,  379,  380,  375,  376,  378,  381,  380,  382,
+      383,  384,  385,  387,  383,  386,  379,  385,  389,  391,
+      393,  390,   62,  393,  378,  394,  384,  395,  395,  381,
+
+      382,  386,  387,  388,  388,  391,  392,  396,  389,  388,
+      390,  388,  392,  397,  397,  394,  398,  392,  399,  388,
+      400,  401,  388,  402,  405,  404,  406,  411,  403,  388,
+      399,  398,  396,  403,  404,  400,  407,  412,  413,  411,
+      401,  406,  407,  405,  409,  402,  410,  417,  409,  414,
+      416,  413,  410,  415,  415,  412,  416,  414,  418,  417,
+      419,  421,  420,  422,  418,  420,  423,  424,  422,  423,
+       57,  425,  419,  426,  437,  427,  421,  434,  426,  426,
+      428,  428,  437,  424,  429,  429,  424,  425,  427,  430,
+      431,  431,  432,  432,  433,  430,  435,  436,  434,  438,
+
+      433,  435,  439,  438,  441,  440,  442,  443,  439,  440,
+      445,  442,  444,  448,  446,  445,  436,  447,  444,  450,
+      447,  451,  441,  449,  449,  447,  451,  443,  446,  447,
+      452,  448,  453,  454,  455,  452,  456,  450,  457,  458,
+      455,  457,  459,  458,  460,  456,  453,  459,  454,  460,
+      461,  462,  463,  464,  465,  466,  469,  463,  470,  469,
+      472,  470,  464,  467,  462,  458,  461,  466,  468,  467,
+      465,  471,  473,  474,  468,  475,  471,  476,  472,  474,
+      475,  477,  478,  476,  477,  479,  473,  478,  480,  481,
+      479,  479,  482,  483,  484,  486,  485,  490,  482,  485,
+
+      487,  480,  481,  484,  488,  487,  491,  486,  491,  488,
+      488,  492,  483,  494,  485,  489,  489,  493,  495,  493,
+      496,  497,  490,  498,  499,  500,  501,  498,  502,  504,
+      492,  494,  505,  499,  503,  504,  495,  506,  511,  496,
+      500,  497,  507,  507,  501,  512,  508,  502,  509,  503,
+      508,  505,  510,  513,  511,  514,  506,  510,  515,  509,
+      516,  519,  514,  515,  512,  517,  513,  516,  518,  520,
+      517,  521,  522,  518,  523,  525,  520,  524,  525,  519,
+      521,  526,  524,  523,  527,  526,  522,  528,  528,  529,
+      531,  532,  533,  536,  535,  534,  528,  532,  529,  534,
+
+      538,  537,  539,  540,  541,  527,  535,  537,  538,  531,
+      542,  536,  533,  547,  550,  542,  544,  553,  553,  542,
+      539,  551,  542,  550,  541,  554,  554,  551,  540,  542,
+      547,  544,  542,  552,  555,  558,  559,  552,  560,  557,
+      555,  556,  556,  556,  557,  556,  561,   52,  556,  561,
+      562,  562,  565,  556,  559,  563,  558,  564,  564,  556,
+      556,  567,  563,  560,  566,  566,  567,  565,  568,  569,
+      570,  568,  570,  571,  569,  572,  573,  574,  576,  575,
+      573,  577,  577,  581,  578,  571,  576,  579,  580,  583,
+      583,  582,  595,  595,  572,  581,  582,  574,  575,  578,
+
+      584,  579,  585,  586,  587,  584,  580,  587,  585,  586,
+      588,  589,  590,  591,  593,  594,  588,  592,  596,  589,
+      590,  593,  592,  598,  597,  599,  601,  596,  602,  598,
+      603,  591,  597,  603,  594,  601,  604,  602,  605,  606,
+      606,  604,  607,  609,  599,  608,  612,  610,  612,  614,
+      610,  616,  605,  617,  608,  613,  613,  607,  610,  615,
+      618,  619,  620,  625,  615,  621,  622,  609,  623,  621,
+      614,  620,  616,  617,  624,  625,  626,  628,  628,  627,
+      629,  619,  618,  624,  622,  627,  631,  623,  630,  632,
+      626,  634,  631,  633,  635,  632,  636,  633,  637,  639,
+
+      629,  636,  630,  638,  638,  639,  635,  641,  640,  642,
+      634,  640,  643,  644,  635,  645,  645,  646,  643,  637,
+      647,  647,  642,  648,  649,  641,  650,  651,  649,  652,
+      653,  654,  658,  644,  659,  646,  656,  656,  648,  661,
+      657,  789,  660,  652,  657,  650,  660,  658,  789,  663,
+      653,  651,  654,  655,  661,  662,  655,  665,  655,  659,
+      662,  664,  655,  663,  655,  667,  664,  664,  666,  655,
+      668,  665,  666,  669,  655,  668,  670,  671,  669,  672,
+      667,  673,  674,  675,  675,  668,  676,  673,  674,  678,
+      670,  676,  679,  672,  677,  677,  680,  679,  671,  681,
+
+      677,  678,  677,  682,  682,  685,  684,  683,  686,  687,
+      680,  681,  683,  677,  684,  688,  688,  689,  691,  685,
+      677,  689,  692,  693,  691,  692,  694,  686,  687,  695,
+      697,  696,  698,  703,  699,  695,  696,  700,  701,  694,
+      705,  698,  693,  699,  701,  702,  704,  706,  707,  697,
+      708,  704,  703,  700,  702,  709,  710,  712,  713,  708,
+      705,  706,  710,  714,  709,  715,   51,  716,  707,  717,
+      718,  712,  716,  719,  717,  718,  724,  713,  720,  720,
+      715,  714,  719,  721,  722,  725,  728,  729,  730,  721,
+      725,  725,  724,  727,  726,  726,  727,  722,  726,  731,
+
+      728,  732,  734,  730,  736,  731,  733,  729,  735,  733,
+      737,  738,  739,  735,  742,  737,  738,  744,  744,  741,
+      736,  732,  743,  734,  739,  741,  745,  746,  743,  747,
+      742,  748,  747,  749,  750,  745,  752,  751,  753,  754,
+      756,  759,  752,  753,  754,  746,  758,  765,  757,  748,
+      751,  757,  749,  759,  750,  760,  761,  758,  756,  762,
+      763,  760,  761,  764,  764,  763,  765,  766,  767,  768,
+      769,  771,  772,  768,  762,  770,  774,  776,  777,  778,
+      767,  766,  781,  779,  770,   46,  780,  781,  769,  779,
+      771,  776,  780,  777,  782,  774,  782,  772,  783,  778,
+
+      784,  785,  786,  783,  787,  788,  790,  786,  791,  792,
+      792,  793,  794,  796,  784,  785,  795,  803,  797,  787,
+      803,  790,  795,  797,  788,  793,  800,  791,  799,  799,
+      794,  800,  801,  796,  797,  802,  804,  797,  805,  801,
+      806,  807,  809,  808,  813,  806,  815,  805,  808,  802,
+      811,  811,  812,  813,  804,  814,  812,  816,  819,  817,
+      807,  809,  818,  820,  821,  815,  817,  822,  823,  824,
+      814,  825,  816,  822,  818,  828,  826,  819,  829,  830,
+      831,  828,  821,  823,  820,  826,  833,  830,  832,  824,
+      834,  825,  829,  832,  835,  834,  834,  836,  833,  837,
+
+      831,  838,  838,  840,  842,  915,  841,  843,  843,  845,
+      842,  836,  837,  835,  839,  841,  840,  915,  845,  839,
+      844,  846,  839,  839,  847,  844,  846,  839,  849,  847,
+      848,  848,  850,  839,  851,  852,  853,  839,  854,  851,
+      855,  850,  856,  858,  854,  877,  855,  856,  849,  852,
+      877,  857,  858,  864,  853,  857,  860,  858,  860,  858,
+      861,  858,  863,  858,  859,  859,  863,  865,  864,  866,
+      867,  861,  868,  869,  870,  867,  867,  872,  866,  871,
+      873,  874,  869,  875,  876,  865,  868,  871,  878,  878,
+      874,  872,  879,  870,  873,  880,  880,  882,  883,  884,
+
+      882,  875,  886,  883,  885,  885,  889,  879,  888,  876,
+      887,  887,  891,  888,  890,  890,  892,  893,  884,  894,
+      896,  892,  886,   41,  894,  893,  898,  889,  895,  895,
+      897,  899,  891,  898,  901,  902,  897,  903,  896,  904,
+      901,  902,  903,  905,  899,  904,  906,  907,  908,  908,
+      909,  910,  905,  911,  912,  913,  917,  914,  907,  916,
+      912,  918,  918,  919,  920,  906,  921,  922,  924,  913,
+      909,  910,  922,  916,  917,  913,  911,  914,  923,  923,
+      925,  927,  928,  919,  921,  925,  929,  928,  928,  920,
+      930,  924,  931,  932,  933,  929,  935,  939,  930,  933,
+
+      927,  934,  940,  934,  938,  937,  931,  936,  932,  937,
+      935,  932,  941,  936,  942,  938,  939,  943,  944,  942,
+      946,  947,  948,  958,  946,  949,  950,  951,  940,  952,
+      941,  953,  958,  959,  959,  943,  957,  949,  944,  947,
+      950,  948,  951,  954,  952,  955,  956,  960,  954,  961,
+      953,  956,  955,  962,  957,  961,  963,  964,  965,  966,
+      966,  963,  960,  964,  965,  967,  967,  969,  969,  970,
+      971,  972,  973,  970,  962,  974,  975,  976,  976,  971,
+      977,  980,  979,  975,  978,  981,  973,  979,  982,  972,
+      974,  983,  978,  982,  982,  980,  983,  983,  984,  988,
+
+      977,  985,  986,  987,  981,  988,  989,  990,  991,  992,
+      993,  994,  995,  997,  991,  992,  996,  998,  984,  999,
+      985,  986,  987, 1000, 1000, 1001,  990,  997, 1001,  993,
+      994,  995,  989, 1002,  999,  996, 1003, 1003,  998, 1004,
+     1006, 1007, 1005, 1008, 1004, 1002, 1005, 1011, 1012, 1009,
+     1007, 1009, 1016, 1006, 1014, 1009, 1008, 1013, 1013, 1014,
+     1017, 1015, 1018, 1019, 1012, 1015, 1022, 1011, 1009, 1019,
+     1020, 1020, 1016, 1031, 1024, 1025, 1025, 1026, 1017, 1024,
+     1028, 1028, 1018, 1026, 1022, 1030, 1030, 1033, 1035, 1031,
+     1033, 1034, 1034, 1036, 1037, 1038, 1039, 1040, 1040, 1042,
+
+     1038, 1041, 1044, 1035, 1045, 1041, 1043, 1043, 1037, 1046,
+     1047, 1039, 1048, 1046, 1051, 1045, 1052, 1048, 1036, 1042,
+     1050, 1050, 1053, 1053, 1044, 1055, 1054, 1056, 1057, 1047,
+     1052, 1054, 1051, 1058, 1059, 1061, 1062, 1057, 1058, 1060,
+     1061, 1060, 1062, 1063, 1064, 1055, 1066, 1056, 1067, 1067,
+     1064, 1068, 1069, 1071, 1059, 1072, 1072, 1074, 1069, 1075,
+     1066, 1073, 1073, 1063, 1076, 1078, 1077, 1076, 1084, 1209,
+     1068, 1209, 1082, 1079, 1075, 1074, 1079, 1071, 1077, 1079,
+     1080, 1082, 1081, 1083, 1086, 1078, 1080, 1081, 1083, 1085,
+     1086, 1079, 1085, 1084, 1087, 1087, 1088, 1089, 1090, 1091,
+
+     1094, 1092, 1093, 1098, 1095, 1091, 1092, 1097, 1093, 1095,
+     1096, 1096, 1097, 1099, 1088, 1100, 1089, 1101, 1090, 1104,
+     1102, 1098, 1105, 1094, 1103, 1106, 1107, 1108, 1105, 1109,
+     1117, 1101, 1104, 1099, 1102, 1100, 1103, 1111, 1111, 1112,
+     1115, 1108, 1113, 1114, 1114, 1106, 1107, 1113, 1116, 1118,
+     1109, 1119, 1122, 1120, 1117, 1115, 1121, 1123, 1127, 1112,
+     1119, 1122, 1116, 1121, 1122, 1125, 1133, 1118, 1120, 1128,
+     1128, 1129, 1129, 1123, 1130, 1131, 1132, 1130, 1134, 1135,
+     1125, 1132, 1133, 1127, 1136, 1125, 1137, 1134, 1139, 1139,
+     1140, 1138, 1141, 1136, 1131, 1137, 1136, 1138, 1135, 1142,
+
+     1143, 1145, 1144, 1147, 1148, 1141, 1149, 1149, 1150, 1155,
+     1140, 1151, 1159, 1145, 1143, 1182, 1152, 1142, 1144, 1182,
+     1151, 1152, 1148, 1154, 1150, 1153, 1153, 1155, 1147, 1161,
+     1159, 1156, 1154, 1158, 1161, 1154, 1156, 1156, 1160, 1158,
+     1153, 1162, 1163, 1165, 1160, 1166, 1167, 1162, 1163, 1168,
+     1171, 1166, 1168, 1172, 1173, 1174, 1175, 1181, 1168, 1167,
+     1176, 1172, 1177, 1165, 1178, 1187, 1176, 1173,   14, 1171,
+     1180, 1180, 1189, 1174, 1183, 1175, 1184, 1181, 1177, 1183,
+     1185, 1184, 1178, 1186, 1191, 1185, 1192, 1189, 1187, 1190,
+     1190, 1193, 1186, 1192, 1194, 1195, 1196, 1198, 1191, 1197,
+
+     1199, 1200,   13, 1193, 1210, 1197, 1194, 1200, 1205, 1198,
+     1201, 1201, 1202, 1205, 1195, 1202, 1196, 1206, 1199, 1203,
+     1203, 1207, 1207, 1208, 1210, 1211, 1206, 1212, 1213, 1214,
+     1215, 1216, 1217, 1213, 1218, 1208, 1220, 1217, 1214, 1219,
+     1221, 1221, 1215, 1218, 1222, 1212, 1216, 1211, 1223, 1224,
+     1222, 1220, 1225, 1226, 1226, 1227, 1218, 1228, 1228, 1219,
+     1229, 1230, 1230, 1231, 1232, 1236, 1238, 1231, 1224, 1223,
+     1232, 1233, 1225, 1235, 1233, 1227, 1237, 1239, 1244, 1235,
+     1239, 1229, 1237, 1236, 1240, 1240, 1241, 1241, 1242, 1243,
+     1245, 1238, 1247, 1246, 1242, 1250, 1252, 1256, 1244, 1246,
+
+     1249, 1243, 1243, 1243, 1253, 1249, 1249, 1252, 1243, 1250,
+     1245, 1251, 1247, 1251, 1254, 1255, 1257, 1256, 1259, 1253,
+     1254, 1258, 1258, 1261, 1255, 1260, 1260, 1262, 1263, 1263,
+     1264, 1264, 1267, 1268, 1269, 1269, 1270, 1257, 1271, 1272,
+     1273, 1267, 1275, 1261, 1259, 1271, 1274, 1274, 1272, 1262,
+     1278, 1270, 1279, 1276, 1268, 1278, 1280, 1281, 1279, 1282,
+     1288, 1283, 1284, 1284, 1281, 1282, 1273, 1283, 1275, 1276,
+     1285, 1286, 1287, 1289, 1290, 1285, 1280, 1290, 1291, 1288,
+     1286, 1292, 1293, 1293, 1294, 1289, 1295, 1298, 1301, 1297,
+     1295, 1299, 1287, 1300, 1301, 1302, 1291, 1300, 1304, 1294,
+
+     1303, 1303, 1298, 1306, 1302, 1307, 1295, 1292, 1297, 1304,
+     1299, 1305, 1305, 1308, 1304, 1309, 1310, 1310, 1313, 1307,
+     1311, 1309, 1312, 1314, 1306, 1311, 1311, 1317, 1312, 1319,
+     1315, 1320, 1322, 1308, 1318, 1314, 1315, 1321, 1318, 1317,
+     1323, 1319, 1330, 1321, 1313, 1324, 1323, 1326, 1327, 1327,
+     1326, 1328, 1328,    0, 1322, 1331, 1320, 1324, 1329, 1329,
+     1332, 1331, 1330, 1333, 1334, 1335, 1332, 1337, 1333, 1340,
+     1334, 1342, 1337, 1339, 1335, 1343, 1339, 1344, 1344, 1345,
+     1346, 1340, 1348, 1342, 1349, 1346, 1350, 1343, 1345, 1347,
+     1347, 1351, 1352, 1349, 1353, 1354, 1352, 1355, 1358, 1353,
+
+     1359, 1354, 1348, 1360, 1350, 1357, 1357, 1362, 1362, 1359,
+     1351, 1355, 1360, 1364, 1367, 1366, 1358, 1357, 1368, 1369,
+     1370, 1370, 1376, 1371, 1368, 1371, 1372, 1372, 1367, 1364,
+     1366, 1373, 1378, 1375, 1377, 1377, 1369, 1379, 1380, 1373,
+     1375, 1378, 1376, 1381, 1382, 1383, 1384, 1385, 1387, 1390,
+     1380, 1388, 1391, 1385, 1392, 1381, 1382, 1392, 1379, 1389,
+     1389, 1384, 1394, 1388, 1393, 1396, 1385, 1390, 1387, 1393,
+     1396, 1383, 1391, 1397, 1398, 1397, 1399, 1400, 1402, 1405,
+     1407, 1399, 1394, 1403, 1400, 1403, 1408, 1402, 1406, 1406,
+     1410, 1408, 1398, 1405, 1409, 1410, 1409, 1411, 1412, 1413,
+
+     1415, 1414, 1411, 1417, 1416, 1415, 1407, 1414, 1419, 1420,
+     1423, 1417, 1421, 1421, 1422, 1422, 1412, 1416, 1424, 1413,
+     1425, 1428, 1433, 1420, 1426, 1423, 1425, 1419, 1427, 1426,
+     1427, 1429, 1429, 1428, 1430, 1430, 1431, 1432, 1424, 1432,
+     1434, 1434, 1435, 1433, 1436, 1431, 1441, 1438, 1431, 1439,
+     1442, 1435, 1438, 1443, 1439, 1446, 1436, 1444, 1448, 1441,
+     1449, 1446, 1450, 1451, 1448, 1452, 1452, 1453, 1454, 1454,
+     1442, 1443, 1451, 1444, 1446, 1449, 1453, 1455, 1456, 1457,
+     1458, 1461, 1456, 1459, 1457,    0, 1460, 1450, 1459, 1459,
+     1464, 1464, 1470, 1458, 1460, 1466, 1455, 1465, 1465, 1467,
+
+     1467, 1461, 1468, 1468, 1466, 1469, 1472, 1471, 1473, 1473,
+     1470, 1472, 1465, 1471, 1474, 1477, 1476, 1469, 1479, 1474,
+     1476, 1480, 1481, 1482, 1483, 1485, 1480, 1488, 1484, 1483,
+     1486, 1486, 1487, 1490, 1489, 1477, 1487, 1491, 1482, 1489,
+     1495, 1485, 1488, 1479, 1493, 1481, 1484, 1494, 1496, 1498,
+     1497, 1499, 1504, 1501, 1502, 1502, 1491, 1503,    0, 1490,
+     1503, 1498, 1505, 1493, 1495, 1504, 1506, 1496, 1501, 1510,
+     1494, 1497, 1499, 1507, 1507, 1511, 1505, 1508, 1508, 1506,
+     1509, 1509, 1512, 1512, 1510, 1513, 1514, 1514, 1511, 1518,
+     1515, 1517, 1519, 1520, 1513, 1515, 1517, 1513, 1521, 1521,
+
+     1522, 1522, 1523, 1524, 1524, 1520, 1525, 1526, 1526, 1518,
+     1527, 1527, 1519, 1528, 1529, 1531, 1532, 1532, 1533, 1540,
+     1531, 1523, 1534, 1534, 1525, 1535, 1536, 1528, 1537, 1538,
+     1538, 1537, 1536, 1529, 1539, 1539, 1541, 1533, 1540, 1542,
+     1543, 1543, 1545, 1535, 1546, 1538, 1547, 1550, 1548, 1549,
+     1549, 1541, 1548, 1551, 1551, 1552, 1553, 1554, 1542, 1555,
+     1555, 1547, 1545, 1553, 1556, 1559, 1550, 1546, 1557, 1560,
+     1557, 1561, 1562, 1556, 1560, 1552, 1563, 1559, 1566, 1564,
+     1567, 1565, 1568, 1554, 1564, 1562, 1565, 1570, 1571, 1567,
+     1569, 1568, 1574, 1566, 1571, 1576, 1561, 1563, 1572, 1569,
+
+     1580, 1570, 1572, 1578, 1576, 1577, 1577, 1579, 1579, 1578,
+     1582, 1623, 1574, 1586, 1583, 1585, 1579, 1591, 1587, 1623,
+     1580, 1589, 1580, 1583, 1589, 1582, 1590, 1585, 1592, 1586,
+     1587, 1590, 1593, 1593, 1595, 1595, 1596, 1591, 1597, 1599,
+     1592, 1596, 1598, 1598, 1597, 1600, 1600, 1601, 1602, 1603,
+     1604, 1604, 1606, 1599, 1607, 1610, 1606, 1607, 1609, 1601,
+     1608, 1608, 1602, 1609, 1611, 1612, 1613, 1614, 1603, 1615,
+     1613, 1616, 1617, 1618, 1615, 1610, 1620, 1616, 1617, 1612,
+     1621, 1624, 1622, 1624, 1611, 1621, 1627, 1614, 1622, 1628,
+     1628, 1618, 1620, 1629, 1630, 1633, 1629, 1631, 1631, 1633,
+
+     1627, 1634, 1635, 1636, 1636, 1642, 1637, 1634, 1640, 1640,
+     1654, 1645, 1646, 1653, 1635, 1637, 1645, 1646, 1647, 1647,
+     1630, 1649, 1649, 1642, 1651, 1652, 1652, 1657, 1655, 1653,
+     1651, 1658, 1654, 1655, 1659, 1659, 1661, 1663, 1662, 1664,
+     1666, 1666,    0, 1658, 1662, 1661, 1657, 1668, 1668, 1669,
+     1669, 1670, 1672, 1673, 1664, 1663, 1670, 1671, 1674, 1671,
+     1675, 1675, 1678, 1674, 1676, 1676, 1672, 1673, 1677, 1677,
+     1679, 1680, 1680, 1681, 1678, 1682, 1683, 1684, 1686, 1685,
+     1687, 1687, 1688, 1683, 1685, 1681, 1689, 1682, 1679, 1684,
+     1690, 1688, 1691, 1692, 1693, 1694, 1694, 1695, 1686, 1697,
+
+     1696, 1698, 1702, 1702, 1699, 1691, 1695, 1699, 1693, 1700,
+     1690, 1701, 1689, 1707, 1700, 1708, 1701, 1692, 1696, 1703,
+     1703, 1697, 1704, 1704, 1698, 1710, 1708, 1712, 1711, 1714,
+     1713, 1707, 1715, 1716, 1717, 1717, 1719, 1719, 1714, 1720,
+     1721, 1723, 1724, 1725, 1727, 1710, 1711, 1722, 1720, 1712,
+     1713, 1716, 1715, 1726, 1722, 1731, 1723, 1732, 1721, 1733,
+     1724, 1725, 1730, 1727, 1728, 1728, 1729, 1729, 1730, 1726,
+     1734, 1735, 1732, 1731, 1736, 1734, 1737, 1738, 1733, 1738,
+     1743, 1737, 1739, 1739, 1740, 1746, 1740, 1741, 1741, 1745,
+     1747, 1735, 1750, 1751, 1736, 1753, 1751, 1754, 1745, 1743,
+
+     1752, 1752, 1755, 1755, 1756, 1746, 1758, 1759, 1756, 1747,
+     1753, 1759, 1750, 1760, 1760, 1754, 1761, 1763, 1763, 1765,
+     1765, 1758, 1766, 1767, 1767, 1768, 1769, 1769, 1774, 1761,
+     1768, 1773, 1773, 1775, 1776, 1777, 1780, 1778, 1896, 1779,
+     1777, 1766, 1783, 1776, 1779, 1781, 1775, 1784, 1786, 1785,
+     1774, 1778, 1784, 1781, 1785, 1780, 1794, 1783, 1787, 1787,
+     1788, 1788, 1789, 1786, 1896, 1790, 1791, 1799, 1792, 1789,
+     1790, 1794, 1791, 1792, 1793, 1793, 1795, 1795, 1796, 1796,
+     1799, 1800, 1806, 1801, 1802, 1803, 1800, 1800, 1801, 1803,
+     1802, 1804, 1805, 1808, 1807, 1809, 1804, 1806, 1808, 1812,
+
+     1811, 1805, 1807, 1811, 1812, 1813, 1814, 1809, 1815, 1816,
+     1817, 1817, 1818, 1821, 1822, 1827, 1823, 1815, 1816, 1814,
+     1825, 1818, 1826, 1813, 1824, 1824, 1828, 1828, 1829, 1831,
+     1827, 1826, 1821, 1833, 1822, 1823, 1834, 1835, 1837, 1825,
+     1834, 1836, 1836, 1835, 1831, 1838, 1837, 1829, 1840, 1841,
+     1838, 1843, 1844, 1833, 1845, 1843, 1852, 1840, 1847, 1847,
+     1850, 1850, 1841, 1854, 1855, 1855, 1844, 1856, 1856, 1845,
+     1857, 1858, 1858, 1857, 1859, 1859, 1852, 1860, 1860, 1861,
+     1861, 1862, 1863, 1854, 1864, 1865, 1865, 1866, 1869, 1870,
+     1864, 1866, 1871, 1869, 1869, 1872, 1863, 1873, 1871, 1862,
+
+     1874, 1872, 1877, 1878, 1874, 1880, 1878, 1877, 1881, 1882,
+     1883, 1884, 1870, 1885, 1882, 1886, 1886, 1887, 1889, 1890,
+     1890, 1888, 1873, 1891, 1891, 1881, 1881, 1885, 1883, 1888,
+     1880, 1884, 1892, 1892, 1893, 1894, 1887, 1889, 1895, 1897,
+     1894, 1898, 1899, 1901, 1901, 1903, 1902, 1906, 1897, 1902,
+     1893, 1905, 1905, 1911, 1906, 1907, 1907, 1909, 1895, 1908,
+     1915, 1898, 1899, 1903, 1908, 1913, 1909, 1912, 1912, 1913,
+     1914, 1911, 1916, 1917, 1918, 1915, 1921, 1916, 1916, 1914,
+     1920, 1920, 1922, 1918, 1924, 1921, 1917, 1926, 1929, 1930,
+     1930, 1931, 1933, 1929, 1922, 1936, 1936, 1933, 1937, 1926,
+
+     1931, 1934, 1934, 1938, 1941, 1934, 1939, 1937, 1940, 1924,
+     1941, 1942, 1944, 1940, 1943, 1943, 1942, 1945, 1946, 1948,
+     1947, 1951, 1945, 1938, 1952, 1939, 1947, 1949, 1949, 1953,
+     1953, 1955, 1954, 1944, 1956, 1955, 1946, 1957, 1958, 1952,
+     1951, 1959, 1960, 1956, 1948, 1954, 1961, 1960, 1963, 1959,
+     1962, 1962, 1968, 1957, 1965, 1965, 1975, 1958, 1966, 1966,
+     1970, 1970, 1971, 1972, 1974, 1974, 1976, 1963, 1972, 1977,
+     1979, 1979, 1961, 1968, 1982, 1985, 1975, 1980, 1971, 1983,
+     1983, 1984, 1984, 1986, 1985, 1987, 1988, 1990, 1977, 1976,
+     1990, 1980, 1989, 1989, 1991, 1991, 1982, 1987, 1993, 1994,
+
+     1998, 1995, 1986, 1996, 1996, 1997, 1988, 1995, 1997, 2000,
+     1993, 2001, 2004, 2004, 2000, 2002, 2003, 2007, 1998, 1994,
+        0, 2002, 2006, 2006, 2009, 2009, 2010, 2011, 2013, 2013,
+     2001, 2010, 2012, 2003, 2003, 2016, 2007, 2012, 2014, 2014,
+     2016, 2011, 2015, 2015, 2018, 2018, 2021, 2023, 2024, 2024,
+     2026, 2026, 2027, 2028, 2029, 2030, 2030, 2031, 2034, 2035,
+     2036, 2036, 2031, 2029, 2039, 2021, 2027, 2035, 2040, 2023,
+     2037, 2041, 2034, 2028, 2042, 2037, 2041, 2043, 2046, 2045,
+     2048, 2047, 2074, 2043, 2039, 2049, 2042, 2045, 2040, 2050,
+     2051, 2054, 2056, 2056,    0, 2051, 2048, 2074, 2046, 2047,
+
+     2057, 2057, 2049, 2049, 2058, 2062, 2062, 2069, 2058, 2070,
+     2050, 2054, 2064, 2064, 2065, 2065, 2066, 2065, 2068, 2068,
+     2066, 2072, 2072, 2070, 2073, 2069, 2076, 2077, 2078, 2078,
+     2081, 2073, 2079, 2079, 2080, 2080, 2077, 2082, 2083, 2083,
+     2084, 2085, 2082, 2086, 2076, 2081, 2087, 2088, 2089, 2090,
+     2090, 2087, 2088, 2093, 2093,    0, 2085, 2096, 2096, 2097,
+     2097, 2098, 2098, 2100, 2086, 2084, 2104, 2089, 2101, 2101,
+     2103, 2103, 2100, 2105, 2105, 2106, 2107, 2107, 2104, 2110,
+     2111, 2113, 2114, 2111, 2115, 2116, 2118, 2113, 2117, 2115,
+     2106, 2124, 2128, 2129, 2124, 2127, 2114, 2110, 2131, 2127,
+
+     2132, 2133, 2118, 2134, 2116, 2135, 2117, 2129, 2136, 2137,
+     2138, 2132, 2128, 2139, 2133, 2140, 2140, 2141, 2142, 2142,
+     2147, 2131, 2134, 2135, 2136, 2138, 2141, 2143, 2143, 2144,
+     2144, 2145, 2146, 2139, 2137, 2148, 2145, 2146, 2149, 2150,
+     2151, 2151, 2153, 2155, 2149, 2147, 2157, 2161, 2158, 2159,
+     2148, 2162, 2160, 2150, 2158, 2159, 2166, 2153, 2164, 2165,
+     2161, 2155, 2169, 2165, 2167, 2157, 2160, 2168, 2170, 2171,
+     2162, 2172, 2164, 2170, 2171, 2166, 2178, 2167, 2173, 2173,
+     2168, 2169, 2174, 2174, 2175, 2183, 2176, 2177, 2179, 2175,
+     2172, 2176, 2177, 2182, 2179, 2178, 2180, 2180, 2184, 2185,
+
+     2182, 2186, 2187, 2189, 2183, 2185, 2190, 2191, 2189, 2192,
+     2193, 2193, 2195, 2194, 2198, 2187, 2200, 2184, 2194, 2198,
+     2186, 2204, 2192, 2196, 2196, 2190, 2191, 2197, 2197, 2199,
+     2202, 2195, 2201, 2201, 2203, 2200, 2199, 2202, 2205, 2206,
+     2204, 2203, 2208, 2205, 2209, 2210, 2211, 2208, 2213, 2209,
+     2212, 2212, 2214, 2215, 2215, 2216, 2216, 2226, 2206, 2217,
+     2218, 2218, 2219, 2219, 2210, 2211, 2217, 2213, 2220, 2222,
+     2227, 2214, 2225,    0, 2222, 2220, 2226, 2225, 2228, 2228,
+     2229, 2229,    0,    0,    0,    0,    0,    0,    0, 2227,
+     2233, 2233, 2233, 2233, 2233, 2233, 2233, 2234, 2234, 2234,
+
+     2234, 2234, 2234, 2234, 2235, 2235, 2235, 2235, 2235, 2235,
+     2235, 2236, 2236, 2236, 2236, 2236, 2236, 2236, 2237, 2237,
+     2237, 2237, 2237, 2237, 2237, 2239, 2239,    0, 2239, 2239,
+     2239, 2239, 2240, 2240,    0,    0,    0, 2240, 2240, 2241,
+     2241,    0,    0, 2241,    0, 2241, 2242,    0,    0,    0,
+        0,    0, 2242, 2243, 2243,    0,    0,    0, 2243, 2243,
+     2244,    0,    0,    0,    0,    0, 2244, 2245, 2245,    0,
+     2245, 2245, 2245, 2245, 2246, 2246,    0, 2246, 2246, 2246,
+     2246, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+
+     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232,
+     2232, 2232
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2311,7 +2369,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2313 "<stdout>"
+#line 2371 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2355,7 +2413,7 @@ FILE *yyget_out (void );
 
 void yyset_out  (FILE * _out_str  );
 
-                       int yyget_leng (void );
+yy_size_t yyget_leng (void );
 
 char *yyget_text (void );
 
@@ -2412,7 +2470,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -2436,7 +2494,7 @@ static int input (void );
        else \
                { \
                errno=0; \
-               while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -2534,7 +2592,7 @@ YY_DECL
        {
 #line 207 "./util/configlexer.lex"
 
-#line 2536 "<stdout>"
+#line 2594 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2567,13 +2625,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 >= 2175 )
+                               if ( yy_current_state >= 2233 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 4282 );
+               while ( yy_base[yy_current_state] != 4382 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3613,40 +3671,70 @@ YY_RULE_SETUP
 { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
        YY_BREAK
 case 202:
-/* rule 202 can match eol */
 YY_RULE_SETUP
 #line 419 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
        YY_BREAK
-/* Quoted strings. Strip leading and ending quotes */
 case 203:
 YY_RULE_SETUP
+#line 420 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+       YY_BREAK
+case 204:
+YY_RULE_SETUP
+#line 421 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+       YY_BREAK
+case 205:
+YY_RULE_SETUP
 #line 422 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+       YY_BREAK
+case 206:
+YY_RULE_SETUP
+#line 423 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+       YY_BREAK
+case 207:
+YY_RULE_SETUP
+#line 424 "./util/configlexer.lex"
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+       YY_BREAK
+case 208:
+/* rule 208 can match eol */
+YY_RULE_SETUP
+#line 425 "./util/configlexer.lex"
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
+       YY_BREAK
+/* Quoted strings. Strip leading and ending quotes */
+case 209:
+YY_RULE_SETUP
+#line 428 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 423 "./util/configlexer.lex"
+#line 429 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 204:
+case 210:
 YY_RULE_SETUP
-#line 428 "./util/configlexer.lex"
+#line 434 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 205:
-/* rule 205 can match eol */
+case 211:
+/* rule 211 can match eol */
 YY_RULE_SETUP
-#line 429 "./util/configlexer.lex"
+#line 435 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 206:
+case 212:
 YY_RULE_SETUP
-#line 431 "./util/configlexer.lex"
+#line 437 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3659,34 +3747,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 207:
+case 213:
 YY_RULE_SETUP
-#line 443 "./util/configlexer.lex"
+#line 449 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 444 "./util/configlexer.lex"
+#line 450 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 208:
+case 214:
 YY_RULE_SETUP
-#line 449 "./util/configlexer.lex"
+#line 455 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 209:
-/* rule 209 can match eol */
+case 215:
+/* rule 215 can match eol */
 YY_RULE_SETUP
-#line 450 "./util/configlexer.lex"
+#line 456 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 210:
+case 216:
 YY_RULE_SETUP
-#line 452 "./util/configlexer.lex"
+#line 458 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3699,38 +3787,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 211:
+case 217:
 YY_RULE_SETUP
-#line 464 "./util/configlexer.lex"
+#line 470 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 466 "./util/configlexer.lex"
+#line 472 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 212:
+case 218:
 YY_RULE_SETUP
-#line 470 "./util/configlexer.lex"
+#line 476 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 213:
-/* rule 213 can match eol */
+case 219:
+/* rule 219 can match eol */
 YY_RULE_SETUP
-#line 471 "./util/configlexer.lex"
+#line 477 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 214:
+case 220:
 YY_RULE_SETUP
-#line 472 "./util/configlexer.lex"
+#line 478 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 215:
+case 221:
 YY_RULE_SETUP
-#line 473 "./util/configlexer.lex"
+#line 479 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3738,27 +3826,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 478 "./util/configlexer.lex"
+#line 484 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 216:
+case 222:
 YY_RULE_SETUP
-#line 482 "./util/configlexer.lex"
+#line 488 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 217:
-/* rule 217 can match eol */
+case 223:
+/* rule 223 can match eol */
 YY_RULE_SETUP
-#line 483 "./util/configlexer.lex"
+#line 489 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 218:
+case 224:
 YY_RULE_SETUP
-#line 485 "./util/configlexer.lex"
+#line 491 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3768,7 +3856,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 491 "./util/configlexer.lex"
+#line 497 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3780,33 +3868,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 219:
+case 225:
 YY_RULE_SETUP
-#line 502 "./util/configlexer.lex"
+#line 508 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 220:
+case 226:
 YY_RULE_SETUP
-#line 506 "./util/configlexer.lex"
+#line 512 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 221:
+case 227:
 YY_RULE_SETUP
-#line 510 "./util/configlexer.lex"
+#line 516 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 222:
+case 228:
 YY_RULE_SETUP
-#line 514 "./util/configlexer.lex"
+#line 520 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3808 "<stdout>"
+#line 3896 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -4005,7 +4093,7 @@ static int yy_get_next_buffer (void)
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -4018,7 +4106,7 @@ static int yy_get_next_buffer (void)
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = NULL;
+                               b->yy_ch_buf = 0;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -4060,9 +4148,9 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
-       if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
-               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
@@ -4097,10 +4185,10 @@ 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 >= 2175 )
+                       if ( yy_current_state >= 2233 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                }
 
        return yy_current_state;
@@ -4125,11 +4213,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 >= 2175 )
+               if ( yy_current_state >= 2233 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
-       yy_is_jam = (yy_current_state == 2174);
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_is_jam = (yy_current_state == 2232);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4162,7 +4250,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -4186,7 +4274,7 @@ static int yy_get_next_buffer (void)
                                case EOB_ACT_END_OF_FILE:
                                        {
                                        if ( yywrap( ) )
-                                               return 0;
+                                               return EOF;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
                                                YY_NEW_FILE;
@@ -4434,7 +4522,7 @@ void yypop_buffer_state (void)
  */
 static void yyensure_buffer_stack (void)
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -4448,9 +4536,9 @@ static void yyensure_buffer_stack (void)
                                                                );
                if ( ! (yy_buffer_stack) )
                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
+                                                                 
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+                               
                (yy_buffer_stack_max) = num_to_alloc;
                (yy_buffer_stack_top) = 0;
                return;
@@ -4479,7 +4567,7 @@ static void yyensure_buffer_stack (void)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object. 
  */
 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 {
@@ -4489,7 +4577,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
             base[size-1] != YY_END_OF_BUFFER_CHAR )
                /* They forgot to leave room for the EOB's. */
-               return NULL;
+               return 0;
 
        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
@@ -4498,7 +4586,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
-       b->yy_input_file = NULL;
+       b->yy_input_file = 0;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
@@ -4521,7 +4609,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 {
     
-       return yy_scan_bytes(yystr,(int) strlen(yystr) );
+       return yy_scan_bytes(yystr,strlen(yystr) );
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@@ -4531,7 +4619,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -4539,7 +4627,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
        yy_size_t i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = (yy_size_t) _yybytes_len + 2;
+       n = _yybytes_len + 2;
        buf = (char *) yyalloc(n  );
        if ( ! buf )
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -4565,7 +4653,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yynoreturn yy_fatal_error (yyconst char* msg )
+static void yy_fatal_error (yyconst char* msg )
 {
                        (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
@@ -4578,7 +4666,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg )
        do \
                { \
                /* Undo effects of setting up yytext. */ \
-        int yyless_macro_arg = (n); \
+        yy_size_t yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                yytext[yyleng] = (yy_hold_char); \
                (yy_c_buf_p) = yytext + yyless_macro_arg; \
@@ -4595,7 +4683,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg )
  */
 int yyget_lineno  (void)
 {
-    
+        
     return yylineno;
 }
 
@@ -4618,7 +4706,7 @@ FILE *yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+yy_size_t yyget_leng  (void)
 {
         return yyleng;
 }
@@ -4674,10 +4762,10 @@ static int yy_init_globals (void)
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = NULL;
+    (yy_buffer_stack) = 0;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = NULL;
+    (yy_c_buf_p) = (char *) 0;
     (yy_init) = 0;
     (yy_start) = 0;
 
@@ -4686,8 +4774,8 @@ static int yy_init_globals (void)
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = NULL;
-    yyout = NULL;
+    yyin = (FILE *) 0;
+    yyout = (FILE *) 0;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -4745,7 +4833,7 @@ static int yy_flex_strlen (yyconst char * s )
 
 void *yyalloc (yy_size_t  size )
 {
-                       return malloc(size);
+                       return (void *) malloc( size );
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size )
@@ -4758,7 +4846,7 @@ void *yyrealloc  (void * ptr, yy_size_t  size )
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
-       return realloc(ptr, size);
+       return (void *) realloc( (char *) ptr, size );
 }
 
 void yyfree (void * ptr )
@@ -4768,7 +4856,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 514 "./util/configlexer.lex"
+#line 520 "./util/configlexer.lex"
 
 
 
index faba4768f3d4d77eaa2e568769258212a25429fb..b782bada8af8dc8ce003261707170d7798081212 100644 (file)
@@ -331,7 +331,13 @@ extern int yydebug;
     VAR_DNSCRYPT_PORT = 460,
     VAR_DNSCRYPT_PROVIDER = 461,
     VAR_DNSCRYPT_SECRET_KEY = 462,
-    VAR_DNSCRYPT_PROVIDER_CERT = 463
+    VAR_DNSCRYPT_PROVIDER_CERT = 463,
+    VAR_IPSECMOD_ENABLED = 464,
+    VAR_IPSECMOD_HOOK = 465,
+    VAR_IPSECMOD_IGNORE_BOGUS = 466,
+    VAR_IPSECMOD_MAX_TTL = 467,
+    VAR_IPSECMOD_WHITELIST = 468,
+    VAR_IPSECMOD_STRICT = 469
   };
 #endif
 /* Tokens.  */
@@ -541,6 +547,12 @@ extern int yydebug;
 #define VAR_DNSCRYPT_PROVIDER 461
 #define VAR_DNSCRYPT_SECRET_KEY 462
 #define VAR_DNSCRYPT_PROVIDER_CERT 463
+#define VAR_IPSECMOD_ENABLED 464
+#define VAR_IPSECMOD_HOOK 465
+#define VAR_IPSECMOD_IGNORE_BOGUS 466
+#define VAR_IPSECMOD_MAX_TTL 467
+#define VAR_IPSECMOD_WHITELIST 468
+#define VAR_IPSECMOD_STRICT 469
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -551,7 +563,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 555 "util/configparser.c" /* yacc.c:355  */
+#line 567 "util/configparser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -568,7 +580,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 572 "util/configparser.c" /* yacc.c:358  */
+#line 584 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -810,21 +822,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   422
+#define YYLAST   434
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  209
+#define YYNTOKENS  215
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  224
+#define YYNNTS  230
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  429
+#define YYNRULES  441
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  646
+#define YYNSTATES  664
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   463
+#define YYMAXUTOK   469
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -879,56 +891,58 @@ static const yytype_uint8 yytranslate[] =
      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
+     205,   206,   207,   208,   209,   210,   211,   212,   213,   214
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   149,   149,   149,   150,   150,   151,   151,   152,   152,
-     152,   154,   158,   163,   164,   165,   165,   165,   166,   166,
-     167,   167,   168,   168,   169,   169,   170,   170,   170,   171,
-     171,   171,   172,   172,   173,   173,   174,   174,   175,   175,
-     176,   176,   177,   177,   178,   178,   179,   179,   180,   180,
-     180,   181,   181,   181,   182,   182,   182,   183,   183,   184,
-     184,   185,   185,   186,   186,   187,   187,   187,   188,   188,
-     189,   189,   190,   190,   190,   191,   191,   192,   192,   193,
-     193,   194,   194,   194,   195,   195,   196,   196,   197,   197,
-     198,   198,   199,   199,   200,   200,   200,   201,   201,   202,
-     202,   202,   203,   203,   203,   204,   204,   204,   205,   205,
-     205,   205,   206,   206,   206,   207,   207,   207,   208,   208,
-     209,   209,   210,   210,   211,   211,   212,   212,   212,   213,
-     213,   214,   214,   215,   216,   216,   217,   217,   218,   219,
-     220,   220,   221,   221,   222,   222,   223,   223,   223,   224,
-     224,   225,   225,   226,   226,   227,   227,   228,   228,   228,
-     229,   229,   229,   230,   230,   230,   231,   231,   233,   245,
-     246,   247,   247,   247,   247,   247,   248,   250,   262,   263,
-     264,   264,   264,   264,   265,   267,   281,   282,   283,   283,
-     283,   283,   284,   284,   284,   286,   295,   304,   315,   324,
-     333,   342,   353,   362,   374,   389,   400,   417,   434,   447,
-     462,   471,   480,   489,   498,   507,   516,   525,   534,   543,
-     552,   561,   570,   579,   588,   597,   604,   611,   620,   629,
-     638,   652,   661,   670,   679,   686,   693,   719,   727,   734,
-     741,   748,   755,   763,   771,   779,   786,   797,   804,   813,
-     822,   831,   838,   845,   853,   861,   871,   881,   891,   904,
-     915,   923,   936,   945,   954,   963,   973,   983,   991,  1004,
-    1013,  1021,  1030,  1038,  1051,  1060,  1067,  1077,  1087,  1097,
-    1107,  1117,  1127,  1137,  1147,  1154,  1161,  1168,  1177,  1186,
-    1195,  1202,  1212,  1229,  1236,  1254,  1267,  1280,  1289,  1298,
-    1307,  1316,  1326,  1336,  1345,  1354,  1367,  1380,  1389,  1396,
-    1405,  1414,  1423,  1432,  1440,  1453,  1461,  1489,  1496,  1511,
-    1521,  1531,  1538,  1545,  1554,  1568,  1587,  1606,  1618,  1630,
-    1642,  1653,  1672,  1682,  1691,  1699,  1707,  1720,  1733,  1746,
-    1759,  1768,  1777,  1787,  1797,  1807,  1814,  1821,  1830,  1840,
-    1850,  1860,  1867,  1874,  1883,  1893,  1903,  1932,  1942,  1950,
-    1959,  1974,  1983,  1988,  1989,  1990,  1990,  1990,  1991,  1991,
-    1991,  1992,  1992,  1994,  2004,  2013,  2020,  2030,  2037,  2044,
-    2051,  2058,  2063,  2064,  2065,  2065,  2066,  2066,  2067,  2067,
-    2068,  2069,  2070,  2071,  2072,  2073,  2075,  2083,  2090,  2098,
-    2106,  2113,  2120,  2129,  2138,  2147,  2156,  2165,  2174,  2179,
-    2180,  2181,  2183,  2189,  2199,  2206,  2215,  2223,  2229,  2230,
-    2232,  2232,  2232,  2233,  2233,  2235,  2244,  2254,  2261,  2268
+       0,   151,   151,   151,   152,   152,   153,   153,   154,   154,
+     154,   156,   160,   165,   166,   167,   167,   167,   168,   168,
+     169,   169,   170,   170,   171,   171,   172,   172,   172,   173,
+     173,   173,   174,   174,   175,   175,   176,   176,   177,   177,
+     178,   178,   179,   179,   180,   180,   181,   181,   182,   182,
+     182,   183,   183,   183,   184,   184,   184,   185,   185,   186,
+     186,   187,   187,   188,   188,   189,   189,   189,   190,   190,
+     191,   191,   192,   192,   192,   193,   193,   194,   194,   195,
+     195,   196,   196,   196,   197,   197,   198,   198,   199,   199,
+     200,   200,   201,   201,   202,   202,   202,   203,   203,   204,
+     204,   204,   205,   205,   205,   206,   206,   206,   207,   207,
+     207,   207,   208,   208,   208,   209,   209,   209,   210,   210,
+     211,   211,   212,   212,   213,   213,   214,   214,   214,   215,
+     215,   216,   216,   217,   218,   218,   219,   219,   220,   221,
+     222,   222,   223,   223,   224,   224,   225,   225,   225,   226,
+     226,   227,   227,   228,   228,   229,   229,   230,   230,   230,
+     231,   231,   231,   232,   232,   232,   233,   233,   234,   234,
+     235,   235,   236,   236,   238,   250,   251,   252,   252,   252,
+     252,   252,   253,   255,   267,   268,   269,   269,   269,   269,
+     270,   272,   286,   287,   288,   288,   288,   288,   289,   289,
+     289,   291,   300,   309,   320,   329,   338,   347,   358,   367,
+     379,   394,   405,   422,   439,   452,   467,   476,   485,   494,
+     503,   512,   521,   530,   539,   548,   557,   566,   575,   584,
+     593,   602,   609,   616,   625,   634,   643,   657,   666,   675,
+     684,   691,   698,   724,   732,   739,   746,   753,   760,   768,
+     776,   784,   791,   802,   809,   818,   827,   836,   843,   850,
+     858,   866,   876,   886,   896,   909,   920,   928,   941,   950,
+     959,   968,   978,   988,   996,  1009,  1018,  1026,  1035,  1043,
+    1056,  1065,  1072,  1082,  1092,  1102,  1112,  1122,  1132,  1142,
+    1152,  1159,  1166,  1173,  1182,  1191,  1200,  1207,  1217,  1234,
+    1241,  1259,  1272,  1285,  1294,  1303,  1312,  1321,  1331,  1341,
+    1350,  1359,  1372,  1385,  1394,  1401,  1410,  1419,  1428,  1437,
+    1445,  1458,  1466,  1494,  1501,  1516,  1526,  1536,  1543,  1550,
+    1559,  1573,  1592,  1611,  1623,  1635,  1647,  1658,  1677,  1687,
+    1696,  1704,  1712,  1725,  1738,  1751,  1764,  1773,  1782,  1792,
+    1802,  1815,  1828,  1839,  1852,  1863,  1876,  1886,  1893,  1900,
+    1909,  1919,  1929,  1939,  1946,  1953,  1962,  1972,  1982,  2011,
+    2021,  2029,  2038,  2053,  2062,  2067,  2068,  2069,  2069,  2069,
+    2070,  2070,  2070,  2071,  2071,  2073,  2083,  2092,  2099,  2109,
+    2116,  2123,  2130,  2137,  2142,  2143,  2144,  2144,  2145,  2145,
+    2146,  2146,  2147,  2148,  2149,  2150,  2151,  2152,  2154,  2162,
+    2169,  2177,  2185,  2192,  2199,  2208,  2217,  2226,  2235,  2244,
+    2253,  2258,  2259,  2260,  2262,  2268,  2278,  2285,  2294,  2302,
+    2308,  2309,  2311,  2311,  2311,  2312,  2312,  2314,  2323,  2333,
+    2340,  2347
 };
 #endif
 
@@ -1010,11 +1024,14 @@ static const char *const yytname[] =
   "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", "VAR_USE_SYSTEMD",
   "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE",
   "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", "VAR_DNSCRYPT_SECRET_KEY",
-  "VAR_DNSCRYPT_PROVIDER_CERT", "$accept", "toplevelvars", "toplevelvar",
-  "serverstart", "contents_server", "content_server", "stubstart",
-  "contents_stub", "content_stub", "forwardstart", "contents_forward",
-  "content_forward", "viewstart", "contents_view", "content_view",
-  "server_num_threads", "server_verbosity", "server_statistics_interval",
+  "VAR_DNSCRYPT_PROVIDER_CERT", "VAR_IPSECMOD_ENABLED",
+  "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL",
+  "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "$accept",
+  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
+  "content_server", "stubstart", "contents_stub", "content_stub",
+  "forwardstart", "contents_forward", "content_forward", "viewstart",
+  "contents_view", "content_view", "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_always_forward",
@@ -1076,18 +1093,21 @@ static const char *const yytname[] =
   "server_ratelimit_slabs", "server_ratelimit_for_domain",
   "server_ratelimit_below_domain", "server_ip_ratelimit_factor",
   "server_ratelimit_factor", "server_qname_minimisation",
-  "server_qname_minimisation_strict", "stub_name", "stub_host",
-  "stub_addr", "stub_first", "stub_ssl_upstream", "stub_prime",
-  "forward_name", "forward_host", "forward_addr", "forward_first",
-  "forward_ssl_upstream", "view_name", "view_local_zone",
-  "view_response_ip", "view_response_ip_data", "view_local_data",
-  "view_local_data_ptr", "view_first", "rcstart", "contents_rc",
-  "content_rc", "rc_control_enable", "rc_control_port",
-  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
-  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
-  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
-  "dt_dnstap_socket_path", "dt_dnstap_send_identity",
-  "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
+  "server_qname_minimisation_strict", "server_ipsecmod_enabled",
+  "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook",
+  "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist",
+  "server_ipsecmod_strict", "stub_name", "stub_host", "stub_addr",
+  "stub_first", "stub_ssl_upstream", "stub_prime", "forward_name",
+  "forward_host", "forward_addr", "forward_first", "forward_ssl_upstream",
+  "view_name", "view_local_zone", "view_response_ip",
+  "view_response_ip_data", "view_local_data", "view_local_data_ptr",
+  "view_first", "rcstart", "contents_rc", "content_rc",
+  "rc_control_enable", "rc_control_port", "rc_control_interface",
+  "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file",
+  "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
+  "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path",
+  "dt_dnstap_send_identity", "dt_dnstap_send_version",
+  "dt_dnstap_identity", "dt_dnstap_version",
   "dt_dnstap_log_resolver_query_messages",
   "dt_dnstap_log_resolver_response_messages",
   "dt_dnstap_log_client_query_messages",
@@ -1128,7 +1148,8 @@ static const yytype_uint16 yytoknum[] =
      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
+     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
+     465,   466,   467,   468,   469
 };
 # endif
 
@@ -1158,13 +1179,15 @@ static const yytype_int16 yypact[] =
       94,    95,   126,   127,   128,   129,   133,   134,   177,   178,
      179,   180,   183,   184,   185,   189,   194,   220,   221,   231,
      232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-     242,   277,   279,   289,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   300,   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,   336,   337,   338,
-     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
-     349,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+     242,   277,   279,   289,   290,   291,   292,   293,   294,   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,   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,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
@@ -1178,39 +1201,39 @@ static const yytype_int16 yypact[] =
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,   362,   363,   364,
+     365,   366,   367,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+     368,   369,   370,   371,   372,  -199,  -199,  -199,  -199,  -199,
+    -199,   373,   374,   375,   376,   377,   378,   379,  -199,  -199,
+    -199,  -199,  -199,  -199,  -199,  -199,   380,   381,   382,   383,
+     384,   385,   386,   387,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,   388,   389,   390,   391,   392,   393,   394,
+     395,   396,   397,   398,   399,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   400,  -199,
+    -199,   401,   402,   403,   404,   405,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,   350,   351,   352,   353,   354,
-     355,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   356,   357,
-     358,   359,   360,  -199,  -199,  -199,  -199,  -199,  -199,   361,
-     362,   363,   364,   365,   366,   367,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,   368,   369,   370,   371,   372,   373,
-     374,   375,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,   388,  -199,  -199,   389,
-     390,   391,   392,   393,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   406,   407,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,   394,   395,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,   408,   409,   410,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,   411,   412,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-     396,   397,   398,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,   399,   400,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   401,   402,
-     403,   404,   405,   406,  -199,  -199,  -199,  -199,  -199,  -199,
+     413,   414,   415,   416,   417,   418,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,   407,  -199,  -199,   408,   409,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,   419,  -199,  -199,   420,   421,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199,   410,   411,   412,  -199,
-    -199,  -199,  -199,  -199,  -199,  -199
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199,   422,   423,   424,  -199,  -199,  -199,
+    -199,  -199,  -199,  -199
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1218,8 +1241,8 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    12,   168,   177,   362,   408,   381,   185,
-     417,     3,    14,   170,   179,   187,   364,   383,   410,   419,
+       2,     0,     1,    12,   174,   183,   374,   420,   393,   191,
+     429,     3,    14,   176,   185,   193,   376,   395,   422,   431,
        4,     5,     6,    10,     8,     9,     7,    11,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1236,53 +1259,55 @@ 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,    13,    15,    16,    75,    78,    87,   163,   164,    17,
-     137,   138,   139,   140,   141,    26,    66,    18,    79,    80,
-      37,    59,    74,    19,    20,    22,    23,    21,    24,    25,
-     110,   111,   112,   113,   114,   159,    76,    65,    91,   108,
-     109,    27,    28,    29,    30,    31,    67,    81,    82,    97,
-      53,    63,    54,   167,    92,    47,    48,   166,    49,    50,
-     101,   105,   118,   126,   146,   102,    60,    32,    33,    34,
-      89,   119,   120,   121,    35,    36,    38,    39,    41,    42,
-      40,   124,    43,    44,    45,    51,    70,   106,    84,   125,
-      77,   142,    85,    86,   103,   104,    90,    46,    68,    71,
-      52,    55,    93,    94,    69,   143,    95,    56,    57,    58,
-     107,   156,   157,   165,    96,    64,    98,    99,   100,   144,
-      61,    62,    83,    72,    73,    88,   115,   116,   117,   122,
-     123,   147,   148,   150,   152,   153,   151,   154,   160,   127,
-     128,   131,   132,   129,   130,   133,   134,   136,   135,   145,
-     155,   149,   158,   161,   162,     0,     0,     0,     0,     0,
-       0,   169,   171,   172,   173,   175,   176,   174,     0,     0,
-       0,     0,     0,   178,   180,   181,   182,   183,   184,     0,
-       0,     0,     0,     0,     0,     0,   186,   188,   189,   192,
-     193,   190,   194,   191,     0,     0,     0,     0,     0,     0,
-       0,     0,   363,   365,   367,   366,   372,   368,   369,   370,
-     371,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   382,   384,   385,   386,   387,   388,   389,
-     390,   391,   392,   393,   394,   395,     0,   409,   411,     0,
-       0,     0,     0,     0,   418,   420,   421,   422,   424,   423,
-     196,   195,   202,   210,   208,   216,   217,   220,   218,   219,
-     221,   222,   234,   235,   236,   237,   238,   260,   261,   262,
-     267,   268,   213,   269,   270,   273,   271,   272,   275,   276,
-     277,   290,   248,   249,   251,   252,   278,   293,   243,   245,
-     294,   300,   301,   302,   214,   259,   313,   314,   244,   308,
-     230,   209,   239,   291,   297,   279,     0,     0,   317,   215,
-     197,   229,   283,   198,   211,   212,   240,   241,   315,   281,
-     285,   286,   199,   318,   263,   289,   231,   247,   295,   296,
-     299,   307,   242,   311,   309,   310,   253,   258,   287,   288,
-     254,   255,   280,   303,   232,   233,   223,   224,   225,   226,
-     227,   319,   320,   321,   264,   265,   266,   274,   322,   323,
-       0,     0,     0,   282,   256,   413,   332,   336,   334,   333,
-     337,   335,     0,     0,   340,   341,   203,   204,   205,   206,
-     207,   284,   298,   312,   342,   343,   257,   324,     0,     0,
-       0,     0,     0,     0,   304,   305,   306,   414,   250,   246,
-     228,   200,   201,   344,   345,   346,   349,   348,   347,   350,
-     351,   352,   353,   354,   355,     0,   359,   360,     0,     0,
-     361,   373,   375,   374,   377,   378,   379,   380,   376,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   412,   425,   426,   427,   429,   428,   292,   316,   331,
-     415,   416,   338,   339,   325,   326,     0,     0,     0,   330,
-     356,   357,   358,   329,   327,   328
+       0,     0,     0,     0,     0,     0,     0,    13,    15,    16,
+      75,    78,    87,   163,   164,    17,   137,   138,   139,   140,
+     141,    26,    66,    18,    79,    80,    37,    59,    74,    19,
+      20,    22,    23,    21,    24,    25,   110,   111,   112,   113,
+     114,   159,    76,    65,    91,   108,   109,    27,    28,    29,
+      30,    31,    67,    81,    82,    97,    53,    63,    54,   167,
+      92,    47,    48,   166,    49,    50,   101,   105,   118,   126,
+     146,   102,    60,    32,    33,    34,    89,   119,   120,   121,
+      35,    36,    38,    39,    41,    42,    40,   124,    43,    44,
+      45,    51,    70,   106,    84,   125,    77,   142,    85,    86,
+     103,   104,    90,    46,    68,    71,    52,    55,    93,    94,
+      69,   143,    95,    56,    57,    58,   107,   156,   157,   165,
+      96,    64,    98,    99,   100,   144,    61,    62,    83,    72,
+      73,    88,   115,   116,   117,   122,   123,   147,   148,   150,
+     152,   153,   151,   154,   160,   127,   128,   131,   132,   129,
+     130,   133,   134,   136,   135,   145,   155,   168,   170,   169,
+     171,   172,   173,   149,   158,   161,   162,     0,     0,     0,
+       0,     0,     0,   175,   177,   178,   179,   181,   182,   180,
+       0,     0,     0,     0,     0,   184,   186,   187,   188,   189,
+     190,     0,     0,     0,     0,     0,     0,     0,   192,   194,
+     195,   198,   199,   196,   200,   197,     0,     0,     0,     0,
+       0,     0,     0,     0,   375,   377,   379,   378,   384,   380,
+     381,   382,   383,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   394,   396,   397,   398,   399,
+     400,   401,   402,   403,   404,   405,   406,   407,     0,   421,
+     423,     0,     0,     0,     0,     0,   430,   432,   433,   434,
+     436,   435,   202,   201,   208,   216,   214,   222,   223,   226,
+     224,   225,   227,   228,   240,   241,   242,   243,   244,   266,
+     267,   268,   273,   274,   219,   275,   276,   279,   277,   278,
+     281,   282,   283,   296,   254,   255,   257,   258,   284,   299,
+     249,   251,   300,   306,   307,   308,   220,   265,   319,   320,
+     250,   314,   236,   215,   245,   297,   303,   285,     0,     0,
+     323,   221,   203,   235,   289,   204,   217,   218,   246,   247,
+     321,   287,   291,   292,   205,   324,   269,   295,   237,   253,
+     301,   302,   305,   313,   248,   317,   315,   316,   259,   264,
+     293,   294,   260,   261,   286,   309,   238,   239,   229,   230,
+     231,   232,   233,   325,   326,   327,   270,   271,   272,   280,
+     328,   329,     0,     0,     0,   288,   262,   425,   338,   342,
+     340,   339,   343,   341,     0,     0,   346,   347,   209,   210,
+     211,   212,   213,   290,   304,   318,   348,   349,   263,   330,
+       0,     0,     0,     0,     0,     0,   310,   311,   312,   426,
+     256,   252,   234,   206,   207,   350,   352,   351,   353,   354,
+     355,   356,   357,   358,   361,   360,   359,   362,   363,   364,
+     365,   366,   367,     0,   371,   372,     0,     0,   373,   385,
+     387,   386,   389,   390,   391,   392,   388,   408,   409,   410,
+     411,   412,   413,   414,   415,   416,   417,   418,   419,   424,
+     437,   438,   439,   441,   440,   298,   322,   337,   427,   428,
+     344,   345,   331,   332,     0,     0,     0,   336,   368,   369,
+     370,   335,   333,   334
 };
 
   /* YYPGOTO[NTERM-NUM].  */
@@ -1310,35 +1335,35 @@ static const yytype_int16 yypgoto[] =
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
     -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,
-    -199,  -199,  -199,  -199
+    -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199,  -199
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    11,    12,    20,   181,    13,    21,   341,    14,
-      22,   353,    15,    23,   366,   182,   183,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   240,   241,   242,   243,   244,   245,   246,
-     247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
-     257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-     277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
-     307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
-     327,   328,   329,   330,   342,   343,   344,   345,   346,   347,
-     354,   355,   356,   357,   358,   367,   368,   369,   370,   371,
-     372,   373,    16,    24,   382,   383,   384,   385,   386,   387,
-     388,   389,   390,    17,    25,   403,   404,   405,   406,   407,
-     408,   409,   410,   411,   412,   413,   414,   415,    18,    26,
-     417,   418,   331,   332,   333,   334,    19,    27,   424,   425,
-     426,   427,   428,   429
+      -1,     1,    11,    12,    20,   187,    13,    21,   353,    14,
+      22,   365,    15,    23,   378,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
+     213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
+     223,   224,   225,   226,   227,   228,   229,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285,   286,   287,   288,   289,   290,   291,   292,
+     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
+     333,   334,   335,   336,   337,   338,   339,   340,   341,   342,
+     354,   355,   356,   357,   358,   359,   366,   367,   368,   369,
+     370,   379,   380,   381,   382,   383,   384,   385,    16,    24,
+     394,   395,   396,   397,   398,   399,   400,   401,   402,    17,
+      25,   415,   416,   417,   418,   419,   420,   421,   422,   423,
+     424,   425,   426,   427,    18,    26,   429,   430,   343,   344,
+     345,   346,    19,    27,   436,   437,   438,   439,   440,   441
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1346,49 +1371,50 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-       2,   335,   416,   336,   337,   348,   419,   420,   421,   422,
-     423,     3,   430,   349,   350,   391,   392,   393,   394,   395,
-     396,   397,   398,   399,   400,   401,   402,   374,   375,   376,
-     377,   378,   379,   380,   381,   431,   432,   433,   434,   435,
-     436,     4,   437,   438,   439,   440,   441,     5,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   457,   338,   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,     6,   484,   485,   339,   486,   340,   351,   487,   352,
-     488,   489,   490,   491,   492,   493,     0,     7,    28,    29,
+       2,   347,   428,   348,   349,   360,   431,   432,   433,   434,
+     435,     3,   442,   361,   362,   403,   404,   405,   406,   407,
+     408,   409,   410,   411,   412,   413,   414,   386,   387,   388,
+     389,   390,   391,   392,   393,   443,   444,   445,   446,   447,
+     448,     4,   449,   450,   451,   452,   453,     5,   454,   455,
+     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+     466,   467,   468,   469,   350,   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,     6,   496,   497,   351,   498,   352,   363,   499,   364,
+     500,   501,   502,   503,   504,   505,     0,     7,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,   494,   495,   496,   497,
-      56,    57,    58,   498,   499,     8,    59,    60,    61,    62,
+      50,    51,    52,    53,    54,    55,   506,   507,   508,   509,
+      56,    57,    58,   510,   511,     8,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
       83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   500,   501,   502,
-     503,     9,   359,   504,   505,   506,   100,   101,   102,   507,
-     103,   104,   105,    10,   508,   106,   107,   108,   109,   110,
+      93,    94,    95,    96,    97,    98,    99,   512,   513,   514,
+     515,     9,   371,   516,   517,   518,   100,   101,   102,   519,
+     103,   104,   105,    10,   520,   106,   107,   108,   109,   110,
      111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   360,   361,
-     509,   510,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   511,   512,   513,   514,   515,   516,   517,   518,   519,
-     520,   521,   522,   362,   138,   139,   140,   141,   142,   143,
+     121,   122,   123,   124,   125,   126,   127,   128,   372,   373,
+     521,   522,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   523,   524,   525,   526,   527,   528,   529,   530,   531,
+     532,   533,   534,   374,   138,   139,   140,   141,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,   523,   171,   524,
-     172,   173,   174,   175,   176,   177,   178,   179,   180,   525,
-     526,   527,   528,   529,   530,   531,   532,   533,   534,   535,
-     536,   363,   364,   537,   538,   539,   540,   541,   542,   543,
-     544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
-     564,   565,   566,   567,   568,   365,   569,   570,   571,   572,
-     573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
-     583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
-     593,   594,   595,   596,   597,   598,   599,   600,   601,   602,
-     603,   604,   605,   606,   607,   608,   609,   610,   611,   612,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
-     623,   624,   625,   626,   627,   628,   629,   630,   631,   632,
-     633,   634,   635,   636,   637,   638,   639,   640,   641,   642,
-     643,   644,   645
+     164,   165,   166,   167,   168,   169,   170,   535,   171,   536,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   537,
+     538,   539,   540,   541,   542,   181,   182,   183,   184,   185,
+     186,   375,   376,   543,   544,   545,   546,   547,   548,   549,
+     550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
+     560,   561,   562,   563,   564,   565,   566,   567,   568,   569,
+     570,   571,   572,   573,   574,   377,   575,   576,   577,   578,
+     579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
+     589,   590,   591,   592,   593,   594,   595,   596,   597,   598,
+     599,   600,   601,   602,   603,   604,   605,   606,   607,   608,
+     609,   610,   611,   612,   613,   614,   615,   616,   617,   618,
+     619,   620,   621,   622,   623,   624,   625,   626,   627,   628,
+     629,   630,   631,   632,   633,   634,   635,   636,   637,   638,
+     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
+     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
+     659,   660,   661,   662,   663
 };
 
 static const yytype_int16 yycheck[] =
@@ -1423,8 +1449,8 @@ static const yytype_int16 yycheck[] =
      174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
      184,   185,   186,   187,   188,   189,   190,    10,   192,    10,
      194,   195,   196,   197,   198,   199,   200,   201,   202,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   159,   160,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,   209,   210,   211,   212,   213,
+     214,   159,   160,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,   193,    10,    10,    10,    10,
@@ -1435,16 +1461,17 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   210,     0,    11,    41,    47,    91,   107,   145,   191,
-     203,   211,   212,   215,   218,   221,   391,   402,   417,   425,
-     213,   216,   219,   222,   392,   403,   418,   426,    12,    13,
+       0,   216,     0,    11,    41,    47,    91,   107,   145,   191,
+     203,   217,   218,   221,   224,   227,   403,   414,   429,   437,
+     219,   222,   225,   228,   404,   415,   430,   438,    12,    13,
       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       34,    35,    36,    37,    38,    39,    44,    45,    46,    50,
@@ -1460,7 +1487,7 @@ static const yytype_uint16 yystos[] =
      170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
      190,   192,   194,   195,   196,   197,   198,   199,   200,   201,
-     202,   214,   224,   225,   226,   227,   228,   229,   230,   231,
+     202,   209,   210,   211,   212,   213,   214,   220,   230,   231,
      232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
      242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
@@ -1475,16 +1502,18 @@ static const yytype_uint16 yystos[] =
      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,   421,   422,   423,   424,    40,    42,    43,   103,   133,
-     135,   217,   373,   374,   375,   376,   377,   378,    40,    48,
-      49,   132,   134,   220,   379,   380,   381,   382,   383,    40,
-      76,    77,   101,   159,   160,   193,   223,   384,   385,   386,
-     387,   388,   389,   390,    92,    93,    94,    95,    96,    97,
-      98,    99,   393,   394,   395,   396,   397,   398,   399,   400,
-     401,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   404,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,   414,   415,   416,   108,   419,   420,   204,
-     205,   206,   207,   208,   427,   428,   429,   430,   431,   432,
+     372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
+     382,   383,   384,   433,   434,   435,   436,    40,    42,    43,
+     103,   133,   135,   223,   385,   386,   387,   388,   389,   390,
+      40,    48,    49,   132,   134,   226,   391,   392,   393,   394,
+     395,    40,    76,    77,   101,   159,   160,   193,   229,   396,
+     397,   398,   399,   400,   401,   402,    92,    93,    94,    95,
+      96,    97,    98,    99,   405,   406,   407,   408,   409,   410,
+     411,   412,   413,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   416,   417,   418,   419,   420,
+     421,   422,   423,   424,   425,   426,   427,   428,   108,   431,
+     432,   204,   205,   206,   207,   208,   439,   440,   441,   442,
+     443,   444,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1506,32 +1535,32 @@ 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
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   209,   210,   210,   211,   211,   211,   211,   211,   211,
-     211,   211,   212,   213,   213,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
-     214,   214,   214,   214,   214,   214,   214,   214,   215,   216,
-     216,   217,   217,   217,   217,   217,   217,   218,   219,   219,
-     220,   220,   220,   220,   220,   221,   222,   222,   223,   223,
-     223,   223,   223,   223,   223,   224,   225,   226,   227,   228,
+       0,   215,   216,   216,   217,   217,   217,   217,   217,   217,
+     217,   217,   218,   219,   219,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+     220,   220,   220,   220,   221,   222,   222,   223,   223,   223,
+     223,   223,   223,   224,   225,   225,   226,   226,   226,   226,
+     226,   227,   228,   228,   229,   229,   229,   229,   229,   229,
      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
      239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
      249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
@@ -1548,13 +1577,15 @@ static const yytype_uint16 yyr1[] =
      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,   392,   393,   393,   393,   393,   393,
-     393,   393,   393,   394,   395,   396,   397,   398,   399,   400,
-     401,   402,   403,   403,   404,   404,   404,   404,   404,   404,
-     404,   404,   404,   404,   404,   404,   405,   406,   407,   408,
-     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-     418,   419,   420,   421,   422,   423,   424,   425,   426,   426,
-     427,   427,   427,   427,   427,   428,   429,   430,   431,   432
+     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
+     399,   400,   401,   402,   403,   404,   404,   405,   405,   405,
+     405,   405,   405,   405,   405,   406,   407,   408,   409,   410,
+     411,   412,   413,   414,   415,   415,   416,   416,   416,   416,
+     416,   416,   416,   416,   416,   416,   416,   416,   417,   418,
+     419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
+     429,   430,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   438,   439,   439,   439,   439,   439,   440,   441,   442,
+     443,   444
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1576,10 +1607,11 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     2,     0,
-       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
-       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
+       1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
+       1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1588,21 +1620,22 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
+       2,     3,     3,     4,     4,     4,     3,     3,     2,     2,
+       2,     2,     2,     2,     3,     3,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     3,     4,     4,     4,
-       3,     3,     2,     2,     2,     2,     2,     2,     3,     3,
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     3,
+       3,     2,     2,     2,     1,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     2,     2,     2,
+       2,     2,     2,     1,     2,     0,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     3,     3,     3,     2,
-       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     1,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     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,     2,     2,     2,     2,     2
+       1,     2,     0,     1,     2,     2,     2,     3,     3,     1,
+       2,     0,     1,     1,     1,     1,     1,     2,     2,     2,
+       2,     2
 };
 
 
@@ -2279,15 +2312,15 @@ yyreduce:
   switch (yyn)
     {
         case 12:
-#line 159 "./util/configparser.y" /* yacc.c:1646  */
+#line 161 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2287 "util/configparser.c" /* yacc.c:1646  */
+#line 2320 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 234 "./util/configparser.y" /* yacc.c:1646  */
+  case 174:
+#line 239 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2298,11 +2331,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2302 "util/configparser.c" /* yacc.c:1646  */
+#line 2335 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 251 "./util/configparser.y" /* yacc.c:1646  */
+  case 183:
+#line 256 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2313,11 +2346,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2317 "util/configparser.c" /* yacc.c:1646  */
+#line 2350 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 268 "./util/configparser.y" /* yacc.c:1646  */
+  case 191:
+#line 273 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2330,11 +2363,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2334 "util/configparser.c" /* yacc.c:1646  */
+#line 2367 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 287 "./util/configparser.y" /* yacc.c:1646  */
+  case 201:
+#line 292 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2342,11 +2375,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2346 "util/configparser.c" /* yacc.c:1646  */
+#line 2379 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 296 "./util/configparser.y" /* yacc.c:1646  */
+  case 202:
+#line 301 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2354,11 +2387,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2358 "util/configparser.c" /* yacc.c:1646  */
+#line 2391 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 305 "./util/configparser.y" /* yacc.c:1646  */
+  case 203:
+#line 310 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2368,11 +2401,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2372 "util/configparser.c" /* yacc.c:1646  */
+#line 2405 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 316 "./util/configparser.y" /* yacc.c:1646  */
+  case 204:
+#line 321 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2380,11 +2413,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2384 "util/configparser.c" /* yacc.c:1646  */
+#line 2417 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 325 "./util/configparser.y" /* yacc.c:1646  */
+  case 205:
+#line 330 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2392,11 +2425,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2396 "util/configparser.c" /* yacc.c:1646  */
+#line 2429 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 334 "./util/configparser.y" /* yacc.c:1646  */
+  case 206:
+#line 339 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2404,11 +2437,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2408 "util/configparser.c" /* yacc.c:1646  */
+#line 2441 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 343 "./util/configparser.y" /* yacc.c:1646  */
+  case 207:
+#line 348 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2418,11 +2451,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2422 "util/configparser.c" /* yacc.c:1646  */
+#line 2455 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 354 "./util/configparser.y" /* yacc.c:1646  */
+  case 208:
+#line 359 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2430,11 +2463,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2434 "util/configparser.c" /* yacc.c:1646  */
+#line 2467 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 363 "./util/configparser.y" /* yacc.c:1646  */
+  case 209:
+#line 368 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str)));
@@ -2444,11 +2477,11 @@ yyreduce:
                OUTYY(("P(Compiled without edns subnet option, ignoring)\n"));
        #endif
        }
-#line 2448 "util/configparser.c" /* yacc.c:1646  */
+#line 2481 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 375 "./util/configparser.y" /* yacc.c:1646  */
+  case 210:
+#line 380 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str)));
@@ -2462,11 +2495,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2466 "util/configparser.c" /* yacc.c:1646  */
+#line 2499 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 390 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 395 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str)));
@@ -2476,11 +2509,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2480 "util/configparser.c" /* yacc.c:1646  */
+#line 2513 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 401 "./util/configparser.y" /* yacc.c:1646  */
+  case 212:
+#line 406 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str)));
@@ -2496,11 +2529,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2500 "util/configparser.c" /* yacc.c:1646  */
+#line 2533 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 418 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 423 "./util/configparser.y" /* yacc.c:1646  */
     {
        #ifdef CLIENT_SUBNET
                OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str)));
@@ -2516,11 +2549,11 @@ yyreduce:
        #endif
                free((yyvsp[0].str));
        }
-#line 2520 "util/configparser.c" /* yacc.c:1646  */
+#line 2553 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 435 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 440 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2532,11 +2565,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2536 "util/configparser.c" /* yacc.c:1646  */
+#line 2569 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 448 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 453 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2550,11 +2583,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2554 "util/configparser.c" /* yacc.c:1646  */
+#line 2587 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 463 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 468 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2562,11 +2595,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2566 "util/configparser.c" /* yacc.c:1646  */
+#line 2599 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 472 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 477 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2574,11 +2607,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2578 "util/configparser.c" /* yacc.c:1646  */
+#line 2611 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 481 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 486 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2586,11 +2619,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2590 "util/configparser.c" /* yacc.c:1646  */
+#line 2623 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 490 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 495 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2598,11 +2631,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2602 "util/configparser.c" /* yacc.c:1646  */
+#line 2635 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 499 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 504 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2610,11 +2643,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2614 "util/configparser.c" /* yacc.c:1646  */
+#line 2647 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 508 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 513 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2622,11 +2655,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2626 "util/configparser.c" /* yacc.c:1646  */
+#line 2659 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 517 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 522 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2634,11 +2667,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2638 "util/configparser.c" /* yacc.c:1646  */
+#line 2671 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 526 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 531 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2646,11 +2679,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2650 "util/configparser.c" /* yacc.c:1646  */
+#line 2683 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 535 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 540 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2658,11 +2691,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2662 "util/configparser.c" /* yacc.c:1646  */
+#line 2695 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 544 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 549 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2670,11 +2703,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2674 "util/configparser.c" /* yacc.c:1646  */
+#line 2707 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 553 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 558 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2682,11 +2715,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2686 "util/configparser.c" /* yacc.c:1646  */
+#line 2719 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 562 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 567 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2694,11 +2727,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2698 "util/configparser.c" /* yacc.c:1646  */
+#line 2731 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 571 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 576 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2706,11 +2739,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2710 "util/configparser.c" /* yacc.c:1646  */
+#line 2743 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 580 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 585 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2718,11 +2751,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2722 "util/configparser.c" /* yacc.c:1646  */
+#line 2755 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 589 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 594 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2730,31 +2763,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2734 "util/configparser.c" /* yacc.c:1646  */
+#line 2767 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 598 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 603 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2744 "util/configparser.c" /* yacc.c:1646  */
+#line 2777 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 605 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 610 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2754 "util/configparser.c" /* yacc.c:1646  */
+#line 2787 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 612 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 617 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2762,11 +2795,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2766 "util/configparser.c" /* yacc.c:1646  */
+#line 2799 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 621 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 626 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2774,11 +2807,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2778 "util/configparser.c" /* yacc.c:1646  */
+#line 2811 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 630 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 635 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2786,11 +2819,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2790 "util/configparser.c" /* yacc.c:1646  */
+#line 2823 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 639 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 644 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2803,11 +2836,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2807 "util/configparser.c" /* yacc.c:1646  */
+#line 2840 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 653 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 658 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2815,11 +2848,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2819 "util/configparser.c" /* yacc.c:1646  */
+#line 2852 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 662 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 667 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2827,11 +2860,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2831 "util/configparser.c" /* yacc.c:1646  */
+#line 2864 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 671 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 676 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2839,31 +2872,31 @@ yyreduce:
        else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 2843 "util/configparser.c" /* yacc.c:1646  */
+#line 2876 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 680 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 685 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2853 "util/configparser.c" /* yacc.c:1646  */
+#line 2886 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 687 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 692 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2863 "util/configparser.c" /* yacc.c:1646  */
+#line 2896 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 694 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 699 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -2888,105 +2921,105 @@ yyreduce:
                        }
                }
        }
-#line 2892 "util/configparser.c" /* yacc.c:1646  */
+#line 2925 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 720 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 725 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2903 "util/configparser.c" /* yacc.c:1646  */
+#line 2936 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 728 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 733 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2913 "util/configparser.c" /* yacc.c:1646  */
+#line 2946 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 735 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 740 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2923 "util/configparser.c" /* yacc.c:1646  */
+#line 2956 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 742 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 747 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2933 "util/configparser.c" /* yacc.c:1646  */
+#line 2966 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 749 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 754 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2943 "util/configparser.c" /* yacc.c:1646  */
+#line 2976 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 756 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 761 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2954 "util/configparser.c" /* yacc.c:1646  */
+#line 2987 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 764 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 769 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2965 "util/configparser.c" /* yacc.c:1646  */
+#line 2998 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 772 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 777 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2976 "util/configparser.c" /* yacc.c:1646  */
+#line 3009 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 780 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 785 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 2986 "util/configparser.c" /* yacc.c:1646  */
+#line 3019 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 787 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 792 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2996,21 +3029,21 @@ yyreduce:
                                (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3000 "util/configparser.c" /* yacc.c:1646  */
+#line 3033 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 798 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 803 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3010 "util/configparser.c" /* yacc.c:1646  */
+#line 3043 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 805 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 810 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3018,11 +3051,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3022 "util/configparser.c" /* yacc.c:1646  */
+#line 3055 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 814 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 819 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3030,11 +3063,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3034 "util/configparser.c" /* yacc.c:1646  */
+#line 3067 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 823 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 828 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3042,53 +3075,53 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3046 "util/configparser.c" /* yacc.c:1646  */
+#line 3079 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 832 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 837 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 3056 "util/configparser.c" /* yacc.c:1646  */
+#line 3089 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 839 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 844 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 3066 "util/configparser.c" /* yacc.c:1646  */
+#line 3099 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 846 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 851 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3077 "util/configparser.c" /* yacc.c:1646  */
+#line 3110 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 854 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 859 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3088 "util/configparser.c" /* yacc.c:1646  */
+#line 3121 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 862 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 867 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3097,11 +3130,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3101 "util/configparser.c" /* yacc.c:1646  */
+#line 3134 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 872 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 877 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3110,11 +3143,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3114 "util/configparser.c" /* yacc.c:1646  */
+#line 3147 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 882 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 887 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3123,11 +3156,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 3127 "util/configparser.c" /* yacc.c:1646  */
+#line 3160 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 892 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 897 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3139,11 +3172,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3143 "util/configparser.c" /* yacc.c:1646  */
+#line 3176 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 905 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 910 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3153,22 +3186,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3157 "util/configparser.c" /* yacc.c:1646  */
+#line 3190 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 916 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 921 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3168 "util/configparser.c" /* yacc.c:1646  */
+#line 3201 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 924 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 929 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3180,11 +3213,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3184 "util/configparser.c" /* yacc.c:1646  */
+#line 3217 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 937 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 942 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3192,11 +3225,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3196 "util/configparser.c" /* yacc.c:1646  */
+#line 3229 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 946 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 951 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3204,11 +3237,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3208 "util/configparser.c" /* yacc.c:1646  */
+#line 3241 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 955 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 960 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3216,11 +3249,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3220 "util/configparser.c" /* yacc.c:1646  */
+#line 3253 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 964 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 969 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3229,11 +3262,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3233 "util/configparser.c" /* yacc.c:1646  */
+#line 3266 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 974 "./util/configparser.y" /* yacc.c:1646  */
+  case 272:
+#line 979 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3242,22 +3275,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3246 "util/configparser.c" /* yacc.c:1646  */
+#line 3279 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 984 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 989 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3257 "util/configparser.c" /* yacc.c:1646  */
+#line 3290 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 992 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 997 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3269,11 +3302,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3273 "util/configparser.c" /* yacc.c:1646  */
+#line 3306 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1005 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1010 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3281,22 +3314,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3285 "util/configparser.c" /* yacc.c:1646  */
+#line 3318 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1014 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1019 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3296 "util/configparser.c" /* yacc.c:1646  */
+#line 3329 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1022 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1027 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3304,22 +3337,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3308 "util/configparser.c" /* yacc.c:1646  */
+#line 3341 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1031 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1036 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3319 "util/configparser.c" /* yacc.c:1646  */
+#line 3352 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1039 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1044 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3331,11 +3364,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3335 "util/configparser.c" /* yacc.c:1646  */
+#line 3368 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1052 "./util/configparser.y" /* yacc.c:1646  */
+  case 280:
+#line 1057 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3343,21 +3376,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3347 "util/configparser.c" /* yacc.c:1646  */
+#line 3380 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1061 "./util/configparser.y" /* yacc.c:1646  */
+  case 281:
+#line 1066 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3357 "util/configparser.c" /* yacc.c:1646  */
+#line 3390 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1068 "./util/configparser.y" /* yacc.c:1646  */
+  case 282:
+#line 1073 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3366,11 +3399,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3370 "util/configparser.c" /* yacc.c:1646  */
+#line 3403 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1078 "./util/configparser.y" /* yacc.c:1646  */
+  case 283:
+#line 1083 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3379,11 +3412,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3383 "util/configparser.c" /* yacc.c:1646  */
+#line 3416 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1088 "./util/configparser.y" /* yacc.c:1646  */
+  case 284:
+#line 1093 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3392,11 +3425,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3396 "util/configparser.c" /* yacc.c:1646  */
+#line 3429 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1098 "./util/configparser.y" /* yacc.c:1646  */
+  case 285:
+#line 1103 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3405,11 +3438,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3409 "util/configparser.c" /* yacc.c:1646  */
+#line 3442 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1108 "./util/configparser.y" /* yacc.c:1646  */
+  case 286:
+#line 1113 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3418,11 +3451,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3422 "util/configparser.c" /* yacc.c:1646  */
+#line 3455 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1118 "./util/configparser.y" /* yacc.c:1646  */
+  case 287:
+#line 1123 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3431,11 +3464,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3435 "util/configparser.c" /* yacc.c:1646  */
+#line 3468 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1128 "./util/configparser.y" /* yacc.c:1646  */
+  case 288:
+#line 1133 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3444,11 +3477,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3448 "util/configparser.c" /* yacc.c:1646  */
+#line 3481 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1138 "./util/configparser.y" /* yacc.c:1646  */
+  case 289:
+#line 1143 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -3457,41 +3490,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3461 "util/configparser.c" /* yacc.c:1646  */
+#line 3494 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1148 "./util/configparser.y" /* yacc.c:1646  */
+  case 290:
+#line 1153 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3471 "util/configparser.c" /* yacc.c:1646  */
+#line 3504 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1155 "./util/configparser.y" /* yacc.c:1646  */
+  case 291:
+#line 1160 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3481 "util/configparser.c" /* yacc.c:1646  */
+#line 3514 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1162 "./util/configparser.y" /* yacc.c:1646  */
+  case 292:
+#line 1167 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3491 "util/configparser.c" /* yacc.c:1646  */
+#line 3524 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 1169 "./util/configparser.y" /* yacc.c:1646  */
+  case 293:
+#line 1174 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3499,11 +3532,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3503 "util/configparser.c" /* yacc.c:1646  */
+#line 3536 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1178 "./util/configparser.y" /* yacc.c:1646  */
+  case 294:
+#line 1183 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3511,11 +3544,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3515 "util/configparser.c" /* yacc.c:1646  */
+#line 3548 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1187 "./util/configparser.y" /* yacc.c:1646  */
+  case 295:
+#line 1192 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3523,21 +3556,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3527 "util/configparser.c" /* yacc.c:1646  */
+#line 3560 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1196 "./util/configparser.y" /* yacc.c:1646  */
+  case 296:
+#line 1201 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3537 "util/configparser.c" /* yacc.c:1646  */
+#line 3570 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1203 "./util/configparser.y" /* yacc.c:1646  */
+  case 297:
+#line 1208 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -3546,11 +3579,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3550 "util/configparser.c" /* yacc.c:1646  */
+#line 3583 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1213 "./util/configparser.y" /* yacc.c:1646  */
+  case 298:
+#line 1218 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 &&
@@ -3566,21 +3599,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3570 "util/configparser.c" /* yacc.c:1646  */
+#line 3603 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1230 "./util/configparser.y" /* yacc.c:1646  */
+  case 299:
+#line 1235 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3580 "util/configparser.c" /* yacc.c:1646  */
+#line 3613 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 1237 "./util/configparser.y" /* yacc.c:1646  */
+  case 300:
+#line 1242 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3597,11 +3630,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3601 "util/configparser.c" /* yacc.c:1646  */
+#line 3634 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1255 "./util/configparser.y" /* yacc.c:1646  */
+  case 301:
+#line 1260 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3613,11 +3646,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3617 "util/configparser.c" /* yacc.c:1646  */
+#line 3650 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1268 "./util/configparser.y" /* yacc.c:1646  */
+  case 302:
+#line 1273 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3629,11 +3662,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3633 "util/configparser.c" /* yacc.c:1646  */
+#line 3666 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1281 "./util/configparser.y" /* yacc.c:1646  */
+  case 303:
+#line 1286 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3641,11 +3674,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3645 "util/configparser.c" /* yacc.c:1646  */
+#line 3678 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1290 "./util/configparser.y" /* yacc.c:1646  */
+  case 304:
+#line 1295 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3653,11 +3686,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3657 "util/configparser.c" /* yacc.c:1646  */
+#line 3690 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1299 "./util/configparser.y" /* yacc.c:1646  */
+  case 305:
+#line 1304 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3665,11 +3698,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3669 "util/configparser.c" /* yacc.c:1646  */
+#line 3702 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 1308 "./util/configparser.y" /* yacc.c:1646  */
+  case 306:
+#line 1313 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3677,11 +3710,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3681 "util/configparser.c" /* yacc.c:1646  */
+#line 3714 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 1317 "./util/configparser.y" /* yacc.c:1646  */
+  case 307:
+#line 1322 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3690,11 +3723,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3694 "util/configparser.c" /* yacc.c:1646  */
+#line 3727 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1327 "./util/configparser.y" /* yacc.c:1646  */
+  case 308:
+#line 1332 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3703,11 +3736,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3707 "util/configparser.c" /* yacc.c:1646  */
+#line 3740 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1337 "./util/configparser.y" /* yacc.c:1646  */
+  case 309:
+#line 1342 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3715,11 +3748,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3719 "util/configparser.c" /* yacc.c:1646  */
+#line 3752 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1346 "./util/configparser.y" /* yacc.c:1646  */
+  case 310:
+#line 1351 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3727,11 +3760,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3731 "util/configparser.c" /* yacc.c:1646  */
+#line 3764 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1355 "./util/configparser.y" /* yacc.c:1646  */
+  case 311:
+#line 1360 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3743,11 +3776,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3747 "util/configparser.c" /* yacc.c:1646  */
+#line 3780 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 1368 "./util/configparser.y" /* yacc.c:1646  */
+  case 312:
+#line 1373 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3759,11 +3792,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3763 "util/configparser.c" /* yacc.c:1646  */
+#line 3796 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 1381 "./util/configparser.y" /* yacc.c:1646  */
+  case 313:
+#line 1386 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3771,21 +3804,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3775 "util/configparser.c" /* yacc.c:1646  */
+#line 3808 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 1390 "./util/configparser.y" /* yacc.c:1646  */
+  case 314:
+#line 1395 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3785 "util/configparser.c" /* yacc.c:1646  */
+#line 3818 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 1397 "./util/configparser.y" /* yacc.c:1646  */
+  case 315:
+#line 1402 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3793,11 +3826,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3797 "util/configparser.c" /* yacc.c:1646  */
+#line 3830 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 310:
-#line 1406 "./util/configparser.y" /* yacc.c:1646  */
+  case 316:
+#line 1411 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3805,11 +3838,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3809 "util/configparser.c" /* yacc.c:1646  */
+#line 3842 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 1415 "./util/configparser.y" /* yacc.c:1646  */
+  case 317:
+#line 1420 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3817,11 +3850,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3821 "util/configparser.c" /* yacc.c:1646  */
+#line 3854 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 1424 "./util/configparser.y" /* yacc.c:1646  */
+  case 318:
+#line 1429 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3830,22 +3863,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3834 "util/configparser.c" /* yacc.c:1646  */
+#line 3867 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 313:
-#line 1433 "./util/configparser.y" /* yacc.c:1646  */
+  case 319:
+#line 1438 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3845 "util/configparser.c" /* yacc.c:1646  */
+#line 3878 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 314:
-#line 1441 "./util/configparser.y" /* yacc.c:1646  */
+  case 320:
+#line 1446 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3857,22 +3890,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3861 "util/configparser.c" /* yacc.c:1646  */
+#line 3894 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 315:
-#line 1454 "./util/configparser.y" /* yacc.c:1646  */
+  case 321:
+#line 1459 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3872 "util/configparser.c" /* yacc.c:1646  */
+#line 3905 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 316:
-#line 1462 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1467 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 &&
@@ -3899,21 +3932,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3903 "util/configparser.c" /* yacc.c:1646  */
+#line 3936 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 317:
-#line 1490 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1495 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3913 "util/configparser.c" /* yacc.c:1646  */
+#line 3946 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 318:
-#line 1497 "./util/configparser.y" /* yacc.c:1646  */
+  case 324:
+#line 1502 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3927,11 +3960,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3931 "util/configparser.c" /* yacc.c:1646  */
+#line 3964 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 1512 "./util/configparser.y" /* yacc.c:1646  */
+  case 325:
+#line 1517 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3940,11 +3973,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3944 "util/configparser.c" /* yacc.c:1646  */
+#line 3977 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1522 "./util/configparser.y" /* yacc.c:1646  */
+  case 326:
+#line 1527 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3953,31 +3986,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3957 "util/configparser.c" /* yacc.c:1646  */
+#line 3990 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1532 "./util/configparser.y" /* yacc.c:1646  */
+  case 327:
+#line 1537 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 3967 "util/configparser.c" /* yacc.c:1646  */
+#line 4000 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 1539 "./util/configparser.y" /* yacc.c:1646  */
+  case 328:
+#line 1544 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 3977 "util/configparser.c" /* yacc.c:1646  */
+#line 4010 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 1546 "./util/configparser.y" /* yacc.c:1646  */
+  case 329:
+#line 1551 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3985,11 +4018,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3989 "util/configparser.c" /* yacc.c:1646  */
+#line 4022 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 324:
-#line 1555 "./util/configparser.y" /* yacc.c:1646  */
+  case 330:
+#line 1560 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -4002,11 +4035,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4006 "util/configparser.c" /* yacc.c:1646  */
+#line 4039 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 1569 "./util/configparser.y" /* yacc.c:1646  */
+  case 331:
+#line 1574 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4024,11 +4057,11 @@ yyreduce:
                        }
                }
        }
-#line 4028 "util/configparser.c" /* yacc.c:1646  */
+#line 4061 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 326:
-#line 1588 "./util/configparser.y" /* yacc.c:1646  */
+  case 332:
+#line 1593 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4046,11 +4079,11 @@ yyreduce:
                        }
                }
        }
-#line 4050 "util/configparser.c" /* yacc.c:1646  */
+#line 4083 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 1607 "./util/configparser.y" /* yacc.c:1646  */
+  case 333:
+#line 1612 "./util/configparser.y" /* yacc.c:1646  */
     {
                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,
@@ -4061,11 +4094,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4065 "util/configparser.c" /* yacc.c:1646  */
+#line 4098 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 328:
-#line 1619 "./util/configparser.y" /* yacc.c:1646  */
+  case 334:
+#line 1624 "./util/configparser.y" /* yacc.c:1646  */
     {
                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,
@@ -4076,11 +4109,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4080 "util/configparser.c" /* yacc.c:1646  */
+#line 4113 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 329:
-#line 1631 "./util/configparser.y" /* yacc.c:1646  */
+  case 335:
+#line 1636 "./util/configparser.y" /* yacc.c:1646  */
     {
                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,
@@ -4091,11 +4124,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4095 "util/configparser.c" /* yacc.c:1646  */
+#line 4128 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 330:
-#line 1643 "./util/configparser.y" /* yacc.c:1646  */
+  case 336:
+#line 1648 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -4105,11 +4138,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4109 "util/configparser.c" /* yacc.c:1646  */
+#line 4142 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 331:
-#line 1654 "./util/configparser.y" /* yacc.c:1646  */
+  case 337:
+#line 1659 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -4127,11 +4160,11 @@ yyreduce:
                        }
                }
        }
-#line 4131 "util/configparser.c" /* yacc.c:1646  */
+#line 4164 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 1673 "./util/configparser.y" /* yacc.c:1646  */
+  case 338:
+#line 1678 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4139,11 +4172,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4143 "util/configparser.c" /* yacc.c:1646  */
+#line 4176 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 333:
-#line 1683 "./util/configparser.y" /* yacc.c:1646  */
+  case 339:
+#line 1688 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4151,33 +4184,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4155 "util/configparser.c" /* yacc.c:1646  */
+#line 4188 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 334:
-#line 1692 "./util/configparser.y" /* yacc.c:1646  */
+  case 340:
+#line 1697 "./util/configparser.y" /* yacc.c:1646  */
     {
        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 4166 "util/configparser.c" /* yacc.c:1646  */
+#line 4199 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 335:
-#line 1700 "./util/configparser.y" /* yacc.c:1646  */
+  case 341:
+#line 1705 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4177 "util/configparser.c" /* yacc.c:1646  */
+#line 4210 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 1708 "./util/configparser.y" /* yacc.c:1646  */
+  case 342:
+#line 1713 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -4189,11 +4222,11 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 4193 "util/configparser.c" /* yacc.c:1646  */
+#line 4226 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 337:
-#line 1721 "./util/configparser.y" /* yacc.c:1646  */
+  case 343:
+#line 1726 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4205,11 +4238,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4209 "util/configparser.c" /* yacc.c:1646  */
+#line 4242 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 338:
-#line 1734 "./util/configparser.y" /* yacc.c:1646  */
+  case 344:
+#line 1739 "./util/configparser.y" /* yacc.c:1646  */
     {
                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) {
@@ -4221,11 +4254,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 4225 "util/configparser.c" /* yacc.c:1646  */
+#line 4258 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 339:
-#line 1747 "./util/configparser.y" /* yacc.c:1646  */
+  case 345:
+#line 1752 "./util/configparser.y" /* yacc.c:1646  */
     {
                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) {
@@ -4237,11 +4270,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 4241 "util/configparser.c" /* yacc.c:1646  */
+#line 4274 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 340:
-#line 1760 "./util/configparser.y" /* yacc.c:1646  */
+  case 346:
+#line 1765 "./util/configparser.y" /* yacc.c:1646  */
     { 
        OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
        if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4249,11 +4282,11 @@ yyreduce:
        else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
        free((yyvsp[0].str));
        }
-#line 4253 "util/configparser.c" /* yacc.c:1646  */
+#line 4286 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 341:
-#line 1769 "./util/configparser.y" /* yacc.c:1646  */
+  case 347:
+#line 1774 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4261,11 +4294,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4265 "util/configparser.c" /* yacc.c:1646  */
+#line 4298 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 342:
-#line 1778 "./util/configparser.y" /* yacc.c:1646  */
+  case 348:
+#line 1783 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4274,11 +4307,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4278 "util/configparser.c" /* yacc.c:1646  */
+#line 4311 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 343:
-#line 1788 "./util/configparser.y" /* yacc.c:1646  */
+  case 349:
+#line 1793 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4287,11 +4320,103 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4291 "util/configparser.c" /* yacc.c:1646  */
+#line 4324 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 344:
-#line 1798 "./util/configparser.y" /* yacc.c:1646  */
+  case 350:
+#line 1803 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef USE_IPSECMOD
+               OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str)));
+               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0);
+               free((yyvsp[0].str));
+       #else
+               OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
+       #endif
+       }
+#line 4340 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 351:
+#line 1816 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef USE_IPSECMOD
+               OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str)));
+               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0);
+               free((yyvsp[0].str));
+       #else
+               OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
+       #endif
+       }
+#line 4356 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 352:
+#line 1829 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef USE_IPSECMOD
+               OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str)));
+               free(cfg_parser->cfg->ipsecmod_hook);
+               cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str);
+       #else
+               OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
+       #endif
+       }
+#line 4370 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 353:
+#line 1840 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef USE_IPSECMOD
+               OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str)));
+               if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
+                       yyerror("number expected");
+               else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str));
+               free((yyvsp[0].str));
+       #else
+               OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
+       #endif
+       }
+#line 4386 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 354:
+#line 1853 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef USE_IPSECMOD
+               OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str)))
+                       yyerror("out of memory");
+       #else
+               OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
+       #endif
+       }
+#line 4400 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 355:
+#line 1864 "./util/configparser.y" /* yacc.c:1646  */
+    {
+       #ifdef USE_IPSECMOD
+               OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str)));
+               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0);
+               free((yyvsp[0].str));
+       #else
+               OUTYY(("P(Compiled without IPsec module, ignoring)\n"));
+       #endif
+       }
+#line 4416 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 356:
+#line 1877 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -4300,31 +4425,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 4304 "util/configparser.c" /* yacc.c:1646  */
+#line 4429 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 345:
-#line 1808 "./util/configparser.y" /* yacc.c:1646  */
+  case 357:
+#line 1887 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4314 "util/configparser.c" /* yacc.c:1646  */
+#line 4439 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 346:
-#line 1815 "./util/configparser.y" /* yacc.c:1646  */
+  case 358:
+#line 1894 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4324 "util/configparser.c" /* yacc.c:1646  */
+#line 4449 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 347:
-#line 1822 "./util/configparser.y" /* yacc.c:1646  */
+  case 359:
+#line 1901 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4332,11 +4457,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4336 "util/configparser.c" /* yacc.c:1646  */
+#line 4461 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 348:
-#line 1831 "./util/configparser.y" /* yacc.c:1646  */
+  case 360:
+#line 1910 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4345,11 +4470,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4349 "util/configparser.c" /* yacc.c:1646  */
+#line 4474 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 349:
-#line 1841 "./util/configparser.y" /* yacc.c:1646  */
+  case 361:
+#line 1920 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4358,11 +4483,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4362 "util/configparser.c" /* yacc.c:1646  */
+#line 4487 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 350:
-#line 1851 "./util/configparser.y" /* yacc.c:1646  */
+  case 362:
+#line 1930 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -4371,31 +4496,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 4375 "util/configparser.c" /* yacc.c:1646  */
+#line 4500 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 351:
-#line 1861 "./util/configparser.y" /* yacc.c:1646  */
+  case 363:
+#line 1940 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4385 "util/configparser.c" /* yacc.c:1646  */
+#line 4510 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 352:
-#line 1868 "./util/configparser.y" /* yacc.c:1646  */
+  case 364:
+#line 1947 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4395 "util/configparser.c" /* yacc.c:1646  */
+#line 4520 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 353:
-#line 1875 "./util/configparser.y" /* yacc.c:1646  */
+  case 365:
+#line 1954 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4403,11 +4528,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4407 "util/configparser.c" /* yacc.c:1646  */
+#line 4532 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 354:
-#line 1884 "./util/configparser.y" /* yacc.c:1646  */
+  case 366:
+#line 1963 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4416,11 +4541,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4420 "util/configparser.c" /* yacc.c:1646  */
+#line 4545 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 355:
-#line 1894 "./util/configparser.y" /* yacc.c:1646  */
+  case 367:
+#line 1973 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -4429,11 +4554,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 4433 "util/configparser.c" /* yacc.c:1646  */
+#line 4558 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 356:
-#line 1904 "./util/configparser.y" /* yacc.c:1646  */
+  case 368:
+#line 1983 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 &&
@@ -4461,11 +4586,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 4465 "util/configparser.c" /* yacc.c:1646  */
+#line 4590 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 357:
-#line 1933 "./util/configparser.y" /* yacc.c:1646  */
+  case 369:
+#line 2012 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -4474,22 +4599,22 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 4478 "util/configparser.c" /* yacc.c:1646  */
+#line 4603 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 358:
-#line 1943 "./util/configparser.y" /* yacc.c:1646  */
+  case 370:
+#line 2022 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4489 "util/configparser.c" /* yacc.c:1646  */
+#line 4614 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 359:
-#line 1951 "./util/configparser.y" /* yacc.c:1646  */
+  case 371:
+#line 2030 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
@@ -4497,11 +4622,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4501 "util/configparser.c" /* yacc.c:1646  */
+#line 4626 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 360:
-#line 1960 "./util/configparser.y" /* yacc.c:1646  */
+  case 372:
+#line 2039 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -4515,11 +4640,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 4519 "util/configparser.c" /* yacc.c:1646  */
+#line 4644 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 361:
-#line 1975 "./util/configparser.y" /* yacc.c:1646  */
+  case 373:
+#line 2054 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4527,19 +4652,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4531 "util/configparser.c" /* yacc.c:1646  */
+#line 4656 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 362:
-#line 1984 "./util/configparser.y" /* yacc.c:1646  */
+  case 374:
+#line 2063 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 4539 "util/configparser.c" /* yacc.c:1646  */
+#line 4664 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 373:
-#line 1995 "./util/configparser.y" /* yacc.c:1646  */
+  case 385:
+#line 2074 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4548,11 +4673,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4552 "util/configparser.c" /* yacc.c:1646  */
+#line 4677 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 374:
-#line 2005 "./util/configparser.y" /* yacc.c:1646  */
+  case 386:
+#line 2084 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4560,21 +4685,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4564 "util/configparser.c" /* yacc.c:1646  */
+#line 4689 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 375:
-#line 2014 "./util/configparser.y" /* yacc.c:1646  */
+  case 387:
+#line 2093 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4574 "util/configparser.c" /* yacc.c:1646  */
+#line 4699 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 376:
-#line 2021 "./util/configparser.y" /* yacc.c:1646  */
+  case 388:
+#line 2100 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4583,122 +4708,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4587 "util/configparser.c" /* yacc.c:1646  */
+#line 4712 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 377:
-#line 2031 "./util/configparser.y" /* yacc.c:1646  */
+  case 389:
+#line 2110 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4597 "util/configparser.c" /* yacc.c:1646  */
+#line 4722 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 378:
-#line 2038 "./util/configparser.y" /* yacc.c:1646  */
+  case 390:
+#line 2117 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4607 "util/configparser.c" /* yacc.c:1646  */
+#line 4732 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 379:
-#line 2045 "./util/configparser.y" /* yacc.c:1646  */
+  case 391:
+#line 2124 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4617 "util/configparser.c" /* yacc.c:1646  */
+#line 4742 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 380:
-#line 2052 "./util/configparser.y" /* yacc.c:1646  */
+  case 392:
+#line 2131 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4627 "util/configparser.c" /* yacc.c:1646  */
+#line 4752 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 381:
-#line 2059 "./util/configparser.y" /* yacc.c:1646  */
+  case 393:
+#line 2138 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 4635 "util/configparser.c" /* yacc.c:1646  */
+#line 4760 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 396:
-#line 2076 "./util/configparser.y" /* yacc.c:1646  */
+  case 408:
+#line 2155 "./util/configparser.y" /* yacc.c:1646  */
     {
                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);
        }
-#line 4646 "util/configparser.c" /* yacc.c:1646  */
+#line 4771 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 397:
-#line 2084 "./util/configparser.y" /* yacc.c:1646  */
+  case 409:
+#line 2163 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4656 "util/configparser.c" /* yacc.c:1646  */
+#line 4781 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 398:
-#line 2091 "./util/configparser.y" /* yacc.c:1646  */
+  case 410:
+#line 2170 "./util/configparser.y" /* yacc.c:1646  */
     {
                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);
        }
-#line 4667 "util/configparser.c" /* yacc.c:1646  */
+#line 4792 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 399:
-#line 2099 "./util/configparser.y" /* yacc.c:1646  */
+  case 411:
+#line 2178 "./util/configparser.y" /* yacc.c:1646  */
     {
                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);
        }
-#line 4678 "util/configparser.c" /* yacc.c:1646  */
+#line 4803 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 400:
-#line 2107 "./util/configparser.y" /* yacc.c:1646  */
+  case 412:
+#line 2186 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4688 "util/configparser.c" /* yacc.c:1646  */
+#line 4813 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 401:
-#line 2114 "./util/configparser.y" /* yacc.c:1646  */
+  case 413:
+#line 2193 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4698 "util/configparser.c" /* yacc.c:1646  */
+#line 4823 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 402:
-#line 2121 "./util/configparser.y" /* yacc.c:1646  */
+  case 414:
+#line 2200 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4706,11 +4831,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4710 "util/configparser.c" /* yacc.c:1646  */
+#line 4835 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 403:
-#line 2130 "./util/configparser.y" /* yacc.c:1646  */
+  case 415:
+#line 2209 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4718,11 +4843,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4722 "util/configparser.c" /* yacc.c:1646  */
+#line 4847 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 404:
-#line 2139 "./util/configparser.y" /* yacc.c:1646  */
+  case 416:
+#line 2218 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4730,11 +4855,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4734 "util/configparser.c" /* yacc.c:1646  */
+#line 4859 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 405:
-#line 2148 "./util/configparser.y" /* yacc.c:1646  */
+  case 417:
+#line 2227 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4742,11 +4867,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4746 "util/configparser.c" /* yacc.c:1646  */
+#line 4871 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 406:
-#line 2157 "./util/configparser.y" /* yacc.c:1646  */
+  case 418:
+#line 2236 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4754,11 +4879,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4758 "util/configparser.c" /* yacc.c:1646  */
+#line 4883 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 407:
-#line 2166 "./util/configparser.y" /* yacc.c:1646  */
+  case 419:
+#line 2245 "./util/configparser.y" /* yacc.c:1646  */
     {
                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)
@@ -4766,29 +4891,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4770 "util/configparser.c" /* yacc.c:1646  */
+#line 4895 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 408:
-#line 2175 "./util/configparser.y" /* yacc.c:1646  */
+  case 420:
+#line 2254 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 4778 "util/configparser.c" /* yacc.c:1646  */
+#line 4903 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 412:
-#line 2184 "./util/configparser.y" /* yacc.c:1646  */
+  case 424:
+#line 2263 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 4788 "util/configparser.c" /* yacc.c:1646  */
+#line 4913 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 413:
-#line 2190 "./util/configparser.y" /* yacc.c:1646  */
+  case 425:
+#line 2269 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4797,21 +4922,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4801 "util/configparser.c" /* yacc.c:1646  */
+#line 4926 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 414:
-#line 2200 "./util/configparser.y" /* yacc.c:1646  */
+  case 426:
+#line 2279 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4811 "util/configparser.c" /* yacc.c:1646  */
+#line 4936 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 415:
-#line 2207 "./util/configparser.y" /* yacc.c:1646  */
+  case 427:
+#line 2286 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -4819,42 +4944,42 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 4823 "util/configparser.c" /* yacc.c:1646  */
+#line 4948 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 416:
-#line 2216 "./util/configparser.y" /* yacc.c:1646  */
+  case 428:
+#line 2295 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4834 "util/configparser.c" /* yacc.c:1646  */
+#line 4959 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 417:
-#line 2224 "./util/configparser.y" /* yacc.c:1646  */
+  case 429:
+#line 2303 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnscrypt:)\n"));
                OUTYY(("\nP(dnscrypt:)\n"));
        }
-#line 4843 "util/configparser.c" /* yacc.c:1646  */
+#line 4968 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 425:
-#line 2236 "./util/configparser.y" /* yacc.c:1646  */
+  case 437:
+#line 2315 "./util/configparser.y" /* yacc.c:1646  */
     {
                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);
        }
-#line 4854 "util/configparser.c" /* yacc.c:1646  */
+#line 4979 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 426:
-#line 2245 "./util/configparser.y" /* yacc.c:1646  */
+  case 438:
+#line 2324 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
 
@@ -4863,41 +4988,41 @@ yyreduce:
                else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4867 "util/configparser.c" /* yacc.c:1646  */
+#line 4992 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 427:
-#line 2255 "./util/configparser.y" /* yacc.c:1646  */
+  case 439:
+#line 2334 "./util/configparser.y" /* yacc.c:1646  */
     {
                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 4877 "util/configparser.c" /* yacc.c:1646  */
+#line 5002 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 428:
-#line 2262 "./util/configparser.y" /* yacc.c:1646  */
+  case 440:
+#line 2341 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (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 4887 "util/configparser.c" /* yacc.c:1646  */
+#line 5012 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 429:
-#line 2269 "./util/configparser.y" /* yacc.c:1646  */
+  case 441:
+#line 2348 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (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 4897 "util/configparser.c" /* yacc.c:1646  */
+#line 5022 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 4901 "util/configparser.c" /* yacc.c:1646  */
+#line 5026 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5125,7 +5250,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2275 "./util/configparser.y" /* yacc.c:1906  */
+#line 2354 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index 394abfce1382d0d30e980f6faf33ff29112d06a3..00fe05892bfbd532f256ff040247fef115eef166 100644 (file)
@@ -250,7 +250,13 @@ extern int yydebug;
     VAR_DNSCRYPT_PORT = 460,
     VAR_DNSCRYPT_PROVIDER = 461,
     VAR_DNSCRYPT_SECRET_KEY = 462,
-    VAR_DNSCRYPT_PROVIDER_CERT = 463
+    VAR_DNSCRYPT_PROVIDER_CERT = 463,
+    VAR_IPSECMOD_ENABLED = 464,
+    VAR_IPSECMOD_HOOK = 465,
+    VAR_IPSECMOD_IGNORE_BOGUS = 466,
+    VAR_IPSECMOD_MAX_TTL = 467,
+    VAR_IPSECMOD_WHITELIST = 468,
+    VAR_IPSECMOD_STRICT = 469
   };
 #endif
 /* Tokens.  */
@@ -460,6 +466,12 @@ extern int yydebug;
 #define VAR_DNSCRYPT_PROVIDER 461
 #define VAR_DNSCRYPT_SECRET_KEY 462
 #define VAR_DNSCRYPT_PROVIDER_CERT 463
+#define VAR_IPSECMOD_ENABLED 464
+#define VAR_IPSECMOD_HOOK 465
+#define VAR_IPSECMOD_IGNORE_BOGUS 466
+#define VAR_IPSECMOD_MAX_TTL 467
+#define VAR_IPSECMOD_WHITELIST 468
+#define VAR_IPSECMOD_STRICT 469
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -470,7 +482,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 474 "util/configparser.h" /* yacc.c:1909  */
+#line 486 "util/configparser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;