From: Wouter Wijngaards Date: Thu, 7 Jan 2010 14:38:18 +0000 (+0000) Subject: Doc fix and work on prefetch feature. X-Git-Tag: release-1.4.2~60 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=43d228c5bcec3642116b698f4de0d2d11b7949d6;p=thirdparty%2Funbound.git Doc fix and work on prefetch feature. git-svn-id: file:///svn/unbound/trunk@1951 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/daemon/cachedump.c b/daemon/cachedump.c index 0cdb2ef60..32ae5236c 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -738,6 +738,7 @@ load_msg(SSL* ssl, ldns_buffer* buf, struct worker* worker) rep.flags = (uint16_t)flags; rep.qdcount = (uint16_t)qdcount; rep.ttl = (uint32_t)ttl; + rep.prefetch_ttl = PREFETCH_TTL_CALC(rep.ttl); rep.security = (enum sec_status)security; rep.an_numrrsets = (size_t)an; rep.ns_numrrsets = (size_t)ns; diff --git a/daemon/worker.c b/daemon/worker.c index 89d81528e..58515dff8 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -589,6 +589,24 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, return 1; } +/** Reply to client and perform prefetch to keep cache up to date */ +static void +reply_and_prefetch(struct worker* worker, struct query_info* qinfo, + uint16_t flags, struct comm_reply* repinfo) +{ + /* first send answer to client to keep its latency + * as small as a cachereply */ + comm_point_send_reply(repinfo); + /* account the prefetch (used to be part of the cache-reply count) */ + /* TODO */ + + /* create the prefetch in the mesh as a normal lookup without + * client addrs waiting, which has the cache blacklisted (to bypass + * the cache and go to the network for the data). */ + /* this (potentially) runs the mesh for the new query */ + mesh_new_prefetch(worker->env.mesh, qinfo, flags); +} + /** * Fill CH class answer into buffer. Keeps query. * @param pkt: buffer @@ -836,6 +854,15 @@ worker_handle_request(struct comm_point* c, void* arg, int error, *(uint16_t*)ldns_buffer_begin(c->buffer), ldns_buffer_read_u16_at(c->buffer, 2), repinfo, &edns)) { + /* prefetch it if the prefetch TTL expired */ + if(worker->env.cfg->prefetch && *worker->env.now >= + ((struct reply_info*)e->data)->prefetch_ttl) { + lock_rw_unlock(&e->lock); + reply_and_prefetch(worker, &qinfo, + ldns_buffer_read_u16_at(c->buffer, 2), + repinfo); + return 0; + } lock_rw_unlock(&e->lock); return 1; } diff --git a/doc/Changelog b/doc/Changelog index 370cde88b..a2f373da2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +7 January 2010: Wouter + - Fixup python documentation (thanks Leo Vandewoestijne). + - Work on cache prefetch feature. + 6 January 2010: Wouter - iana portlist updated. - bug#291: DNS wireformat max is 255. dname_valid allowed 256 length. diff --git a/doc/example.conf.in b/doc/example.conf.in index 401ad3f2f..05846dbaf 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -294,6 +294,9 @@ server: # if no, localhost can be queried (for testing and debugging). # do-not-query-localhost: yes + # if yes, perform prefetching of almost expired message cache entries. + # prefetch: no + # module configuration of the server. A string with identifiers # separated by spaces. "iterator" or "validator iterator" # module-config: "validator iterator" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index dc5a07513..4cb807390 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -503,6 +503,12 @@ If yes, localhost is added to the do\-not\-query\-address entries, both IP6 ::1 and IP4 127.0.0.1/8. If no, then localhost can be used to send queries to. Default is yes. .TP +.B prefetch: \fI +If yes, message cache elements are prefetched before they expire to +keep the cache up to date. Default is no. Turning it on gives about +10 percent more traffic and load on the machine, but popular items do +not expire from the cache. +.TP .B module\-config: \fI<"module names"> Module configuration, a list of module names separated by spaces, surround the string with quotes (""). The modules can be validator, iterator. @@ -922,7 +928,7 @@ The clause gives the settings for the \fIpython\fR(1) script module. This module acts like the iterator and validator modules do, on queries and answers. To enable the script module it has to be compiled into the daemon, -and the word "python" has to be put in the \fBmodule\-conf:\fR option +and the word "python" has to be put in the \fBmodule\-config:\fR option (usually first, or between the validator and iterator). .TP .B python\-script: \fI\fR diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 5b747a102..62c92cbeb 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -672,6 +672,7 @@ reply_equal(struct reply_info* p, struct reply_info* q) if(p->flags != q->flags || p->qdcount != q->qdcount || p->ttl != q->ttl || + p->prefetch_ttl != q->prefetch_ttl || p->security != q->security || p->an_numrrsets != q->an_numrrsets || p->ns_numrrsets != q->ns_numrrsets || diff --git a/iterator/iterator.c b/iterator/iterator.c index e549800e6..fa6baf956 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -247,6 +247,7 @@ error_response_cache(struct module_qstate* qstate, int id, int rcode) FLAGS_SET_RCODE(err.flags, rcode); err.qdcount = 1; err.ttl = NORR_TTL; + err.prefetch_ttl = PREFETCH_TTL_CALC(err.ttl); /* do not waste time trying to validate this servfail */ err.security = sec_status_indeterminate; verbose(VERB_ALGO, "store error response in message cache"); @@ -889,7 +890,9 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, if(verbosity >= VERB_ALGO) { log_dns_msg("msg from cache lookup", &msg->qinfo, msg->rep); - verbose(VERB_ALGO, "msg ttl is %d", (int)msg->rep->ttl); + verbose(VERB_ALGO, "msg ttl is %d, prefetch ttl %d", + (int)msg->rep->ttl, + (int)msg->rep->prefetch_ttl); } if(type == RESPONSE_TYPE_CNAME) { @@ -1996,6 +1999,8 @@ processClassResponse(struct module_qstate* qstate, int id, to->rep->qdcount = from->rep->qdcount; if(from->rep->ttl < to->rep->ttl) /* use smallest TTL */ to->rep->ttl = from->rep->ttl; + if(from->rep->prefetch_ttl < to->rep->prefetch_ttl) + to->rep->prefetch_ttl = from->rep->prefetch_ttl; } /* are we done? */ foriq->num_current_queries --; diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 2cc7bc9ae..ca2ae1671 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -345,6 +345,7 @@ struct reply_info { uint16_t flags; uint16_t qdcount; uint32_t ttl; + uint32_t prefetch_ttl; uint16_t authoritative; enum sec_status security; diff --git a/services/cache/dns.c b/services/cache/dns.c index c0c83ec7f..70458cccf 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -474,6 +474,9 @@ tomsg(struct module_env* env, struct msgreply_entry* e, struct reply_info* r, msg->rep->flags = r->flags; msg->rep->qdcount = r->qdcount; msg->rep->ttl = r->ttl - now; + if(r->prefetch_ttl - now > 0) + msg->rep->prefetch_ttl = r->prefetch_ttl - now; + else msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(r->prefetch_ttl); msg->rep->security = r->security; msg->rep->an_numrrsets = r->an_numrrsets; msg->rep->ns_numrrsets = r->ns_numrrsets; @@ -524,6 +527,7 @@ rrset_msg(struct ub_packed_rrset_key* rrset, struct regional* region, msg->rep->authoritative = 0; /* reply stored in cache can't be authoritative */ msg->rep->qdcount = 1; msg->rep->ttl = d->ttl - now; + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); msg->rep->security = sec_status_unchecked; msg->rep->an_numrrsets = 1; msg->rep->ns_numrrsets = 0; @@ -559,6 +563,7 @@ synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region, msg->rep->authoritative = 0; /* reply stored in cache can't be authoritative */ msg->rep->qdcount = 1; msg->rep->ttl = d->ttl - now; + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); msg->rep->security = sec_status_unchecked; msg->rep->an_numrrsets = 1; msg->rep->ns_numrrsets = 0; @@ -616,6 +621,7 @@ synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region, packed_rrset_ptr_fixup(newd); newd->rr_ttl[0] = newd->ttl; msg->rep->ttl = newd->ttl; + msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(newd->ttl); ldns_write_uint16(newd->rr_data[0], newlen); memmove(newd->rr_data[0] + sizeof(uint16_t), newname, newlen); msg->rep->an_numrrsets ++; diff --git a/services/mesh.c b/services/mesh.c index 2169b4236..5f6f449f1 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -286,7 +286,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, /* see if it already exists, if not, create one */ if(!s) { struct rbnode_t* n; - s = mesh_state_create(mesh->env,qinfo, qflags, 0); + s = mesh_state_create(mesh->env, qinfo, qflags, 0); if(!s) { log_err("mesh_state_create: out of memory; SERVFAIL"); error_encode(rep->c->buffer, LDNS_RCODE_SERVFAIL, @@ -354,7 +354,7 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, /* see if it already exists, if not, create one */ if(!s) { struct rbnode_t* n; - s = mesh_state_create(mesh->env,qinfo, qflags, 0); + s = mesh_state_create(mesh->env, qinfo, qflags, 0); if(!s) { return 0; } @@ -388,6 +388,52 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, return 1; } +void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, + uint16_t qflags) +{ + struct mesh_state* s = mesh_area_find(mesh, qinfo, qflags, 0); + struct rbnode_t* n; + /* already exists, and for a different purpose perhaps. + * if mesh_no_list, keep it that way. */ + if(s) { + /* make it ignore the cache from now on */ + if(!s->s.blacklist) + sock_list_insert(&s->s.blacklist, NULL, 0, s->s.region); + return; + } + if(!mesh_make_new_space(mesh)) { + verbose(VERB_ALGO, "Too many queries. dropped prefetch."); + mesh->stats_dropped ++; + return; + } + s = mesh_state_create(mesh->env, qinfo, qflags, 0); + if(!s) { + log_err("prefetch mesh_state_create: out of memory"); + return; + } + n = rbtree_insert(&mesh->all, &s->node); + log_assert(n != NULL); + /* set detached (it is now) */ + mesh->num_detached_states++; + /* make it ignore the cache */ + sock_list_insert(&s->s.blacklist, NULL, 0, s->s.region); + + if(s->list_select == mesh_no_list) { + /* move to either the forever or the jostle_list */ + if(mesh->num_forever_states < mesh->max_forever_states) { + mesh->num_forever_states ++; + mesh_list_insert(s, &mesh->forever_first, + &mesh->forever_last); + s->list_select = mesh_forever_list; + } else { + mesh_list_insert(s, &mesh->jostle_first, + &mesh->jostle_last); + s->list_select = mesh_jostle_list; + } + } + mesh_run(mesh, s, module_event_new, NULL); +} + void mesh_report_reply(struct mesh_area* mesh, struct outbound_entry* e, struct comm_reply* reply, int what) { diff --git a/services/mesh.h b/services/mesh.h index 5628f4c29..2e79ab2f0 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -286,6 +286,17 @@ int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, struct edns_data* edns, ldns_buffer* buf, uint16_t qid, mesh_cb_func_t cb, void* cb_arg); +/** + * New prefetch message. Create new query state if needed. + * Will run the mesh area queries to process if a new query state is created. + * + * @param mesh: the mesh. + * @param qinfo: query from client. + * @param qflags: flags from client query. + */ +void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, + uint16_t qflags); + /** * Handle new event from the wire. A serviced query has returned. * The query state will be made runnable, and the mesh_area will process diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 0e57966bd..4da769cec 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -144,6 +144,7 @@ print_option(struct config_file* cfg, const char* opt) else O_MEM(opt, "so-rcvbuf", socket_rcvbuf) else O_MEM(opt, "rrset-cache-size", rrset_cache_size) else O_DEC(opt, "rrset-cache-slabs", rrset_cache_slabs) + else O_YNO(opt, "prefetch", prefetch) else O_DEC(opt, "cache-max-ttl", max_ttl) else O_DEC(opt, "infra-host-ttl", host_ttl) else O_DEC(opt, "infra-lame-ttl", lame_ttl) diff --git a/util/config_file.c b/util/config_file.c index 3b01f815e..dafd03249 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -108,6 +108,7 @@ config_create() cfg->bogus_ttl = 60; cfg->min_ttl = 0; cfg->max_ttl = 3600 * 24; + cfg->prefetch = 0; cfg->infra_cache_slabs = 4; cfg->infra_cache_numhosts = 10000; cfg->infra_cache_lame_size = 10240; /* easily 40 or more entries */ @@ -302,6 +303,9 @@ int config_set_option(struct config_file* cfg, const char* opt, } else if(strcmp(opt, "rrset-cache-slabs:") == 0) { IS_POW2_NUMBER; cfg->rrset_cache_slabs = (size_t)atoi(val); + } else if(strcmp(opt, "prefetch:") == 0) { + IS_YES_OR_NO; + cfg->prefetch = (strcmp(val, "yes") == 0); } else if(strcmp(opt, "cache-max-ttl:") == 0) { IS_NUMBER_OR_ZERO; cfg->max_ttl = atoi(val); diff --git a/util/config_file.h b/util/config_file.h index fe71bfdac..9b62dc011 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -164,6 +164,12 @@ struct config_file { struct config_strlist* private_domain; /** what threshold for unwanted action. */ size_t unwanted_threshold; + /** the number of seconds maximal TTL used for RRsets and messages */ + int max_ttl; + /** the number of seconds minimum TTL used for RRsets and messages */ + int min_ttl; + /** if prefetching of messages should be performed. */ + int prefetch; /** chrootdir, if not "" or chroot will be done */ char* chrootdir; @@ -208,10 +214,6 @@ struct config_file { /** insecure domain list */ struct config_strlist* domain_insecure; - /** the number of seconds maximal TTL used for RRsets and messages */ - int max_ttl; - /** the number of seconds minimum TTL used for RRsets and messages */ - int min_ttl; /** if not 0, this value is the validation date for RRSIGs */ int32_t val_date_override; /** the minimum for signature clock skew */ diff --git a/util/configlexer.c b/util/configlexer.c index fe1b2fce9..74115fa9f 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 127 -#define YY_END_OF_BUFFER 128 +#define YY_NUM_RULES 128 +#define YY_END_OF_BUFFER 129 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -371,141 +371,141 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[1202] = +static yyconst flex_int16_t yy_accept[1209] = { 0, - 1, 1, 109, 109, 113, 113, 117, 117, 121, 121, - 1, 1, 128, 125, 1, 107, 107, 126, 2, 126, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 109, - 110, 110, 111, 126, 113, 114, 114, 115, 126, 120, - 117, 118, 118, 119, 126, 121, 122, 122, 123, 126, - 124, 108, 2, 112, 126, 124, 125, 0, 1, 2, - 2, 2, 2, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 109, 0, 113, 0, 120, - 0, 117, 121, 0, 124, 0, 2, 2, 124, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 124, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 124, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 53, - 125, 125, 125, 125, 125, 6, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 124, 125, 125, 125, 125, 21, 125, 125, 125, 125, - 125, 12, 13, 125, 15, 14, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 105, 125, 125, - 125, 125, 3, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 124, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 116, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 24, 125, 125, 125, 125, 125, 125, 125, 25, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 66, 116, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 65, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 22, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 23, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 17, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 20, 125, 54, 55, 125, 52, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 5, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 68, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 91, 90, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 26, 125, - 125, 125, 125, 56, 125, 125, 125, 125, 125, 88, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 45, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 4, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 85, 125, - 125, 125, 125, 125, 125, 125, 99, 86, 125, 16, - 125, 125, 125, 125, 58, 59, 57, 125, 125, 125, - 125, 125, 64, 125, 125, 125, 125, 125, 125, 125, - 125, 87, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 73, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 33, 34, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 63, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 67, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 104, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 77, 125, 80, 125, 125, 125, - 125, 62, 125, 125, 97, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 35, 36, 125, 41, 81, 125, 92, 89, 125, - 29, 125, 83, 125, 125, 125, 125, 125, 7, 125, - 51, 96, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 69, 125, 125, 106, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 82, 28, - 30, 125, 125, 125, 125, 125, 50, 125, 125, 125, - 100, 125, 125, 125, 125, 125, 125, 48, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 102, 125, 125, - 27, 125, 125, 125, 125, 125, 11, 125, 125, 125, - 125, 125, 125, 10, 125, 125, 31, 125, 101, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 76, - 75, 125, 103, 98, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 37, 125, 125, 125, 125, 125, 32, - 125, 125, 125, 70, 72, 125, 125, 125, 74, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 18, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 95, 125, 125, 125, 125, - 125, 125, 19, 125, 9, 125, 125, 93, 42, 125, - 125, 125, 79, 125, 60, 125, 125, 44, 47, 43, - 125, 38, 125, 8, 125, 125, 78, 125, 125, 125, - 125, 39, 125, 94, 125, 125, 71, 61, 46, 40, - 125, 125, 125, 125, 49, 125, 125, 125, 125, 84, - - 0 + 1, 1, 110, 110, 114, 114, 118, 118, 122, 122, + 1, 1, 129, 126, 1, 108, 108, 127, 2, 127, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 110, + 111, 111, 112, 127, 114, 115, 115, 116, 127, 121, + 118, 119, 119, 120, 127, 122, 123, 123, 124, 127, + 125, 109, 2, 113, 127, 125, 126, 0, 1, 2, + 2, 2, 2, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 110, 0, 114, 0, 121, + 0, 118, 122, 0, 125, 0, 2, 2, 125, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 125, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 125, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 54, 126, 126, 126, 126, 126, 6, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + + 126, 126, 126, 125, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 125, 126, 126, 126, 126, 21, + 126, 126, 126, 126, 126, 12, 13, 126, 15, 14, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 106, 126, 126, 126, 126, 3, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 117, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 24, 126, 126, 126, + 126, 126, 126, 126, 25, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 67, 117, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 66, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 52, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 22, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 23, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 17, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 20, 126, 55, 56, 126, 53, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 5, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 69, 126, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 92, 91, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 26, 126, 126, 126, 126, + 57, 126, 126, 126, 126, 126, 89, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 45, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 4, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 86, 126, 126, 126, 126, + 126, 126, 126, 100, 87, 126, 16, 126, 126, 126, + 126, 59, 60, 58, 126, 126, 126, 126, 126, 65, + 126, 126, 126, 126, 126, 126, 126, 126, 88, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 74, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 33, 34, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 64, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 68, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 105, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 78, 126, 81, 126, 126, 126, 126, 63, 126, + 126, 98, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 35, 36, + 126, 41, 82, 126, 93, 90, 126, 29, 126, 84, + 126, 126, 126, 126, 126, 7, 126, 51, 97, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 70, 126, 126, 107, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 83, 28, 30, 126, 126, + 126, 126, 126, 50, 126, 126, 126, 101, 126, 126, + 126, 126, 126, 126, 48, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 103, 126, 126, 27, 126, 126, + 126, 126, 126, 11, 126, 126, 126, 126, 126, 126, + 10, 126, 126, 31, 126, 102, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 77, 76, 126, 104, + + 99, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 37, 126, 126, 126, 126, 126, 32, 126, 126, 126, + 71, 73, 126, 126, 126, 75, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 18, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 96, 126, 126, 126, 126, 126, 126, 19, + 126, 9, 126, 126, 94, 42, 126, 126, 126, 80, + 126, 61, 126, 126, 44, 47, 43, 126, 38, 126, + 8, 126, 126, 79, 126, 126, 126, 126, 39, 126, + 95, 126, 126, 72, 62, 46, 40, 126, 126, 126, + + 126, 49, 126, 126, 126, 126, 85, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -548,283 +548,285 @@ static yyconst flex_int32_t yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[1216] = +static yyconst flex_int16_t yy_base[1223] = { 0, 0, 0, 37, 40, 44, 51, 63, 75, 56, 68, - 87, 108, 2310, 2296, 50, 2414, 2414, 2414, 129, 94, + 87, 108, 2184, 2126, 50, 2431, 2431, 2431, 129, 94, 70, 104, 122, 90, 92, 115, 126, 95, 84, 132, - 133, 138, 50, 135, 136, 156, 145, 155, 157, 2294, - 2414, 2414, 2414, 70, 2293, 2414, 2414, 2414, 42, 2229, - 2013, 2414, 2414, 2414, 176, 1943, 2414, 2414, 2414, 181, - 1731, 2414, 186, 2414, 190, 111, 1455, 196, 120, 0, + 133, 138, 50, 135, 136, 156, 145, 155, 157, 2087, + 2431, 2431, 2431, 70, 2063, 2431, 2431, 2431, 42, 1805, + 1596, 2431, 2431, 2431, 176, 1471, 2431, 2431, 2431, 181, + 1367, 2431, 186, 2431, 190, 111, 1221, 196, 120, 0, 207, 0, 0, 103, 189, 183, 191, 192, 197, 200, 202, 142, 209, 205, 208, 213, 214, 217, 218, 224, 215, 233, 236, 225, 235, 237, 240, 241, 226, 245, - 248, 251, 252, 255, 256, 257, 259, 267, 263, 261, - 253, 49, 265, 269, 273, 1028, 291, 972, 284, 725, - 296, 690, 571, 301, 356, 305, 309, 0, 286, 302, - 310, 280, 304, 306, 308, 316, 313, 319, 329, 322, - 315, 320, 317, 326, 327, 331, 324, 335, 337, 341, - 344, 351, 347, 357, 354, 364, 362, 370, 371, 369, - 368, 358, 355, 372, 373, 379, 381, 382, 383, 385, - 387, 384, 390, 392, 400, 402, 394, 398, 403, 406, - 412, 411, 408, 415, 417, 421, 419, 426, 428, 430, - 429, 431, 434, 441, 437, 438, 442, 453, 440, 446, - - 449, 454, 450, 452, 461, 463, 457, 458, 465, 459, - 470, 476, 477, 479, 482, 481, 484, 485, 487, 488, - 494, 491, 493, 492, 500, 506, 505, 503, 504, 512, - 507, 532, 513, 516, 517, 514, 522, 519, 529, 520, - 526, 527, 530, 543, 549, 555, 536, 545, 558, 559, - 560, 563, 564, 565, 566, 568, 572, 569, 585, 581, - 584, 570, 590, 597, 586, 593, 594, 596, 600, 2414, - 602, 598, 604, 606, 608, 2414, 607, 609, 611, 610, - 626, 613, 614, 622, 624, 628, 634, 633, 637, 630, - 642, 644, 635, 645, 646, 649, 651, 652, 654, 657, - - 658, 668, 664, 666, 667, 670, 674, 675, 677, 678, - 682, 689, 691, 698, 697, 700, 706, 683, 702, 705, - 708, 710, 711, 712, 713, 715, 719, 720, 728, 685, - 730, 734, 724, 735, 741, 739, 743, 744, 748, 749, - 742, 750, 752, 759, 766, 717, 762, 769, 770, 751, - 773, 763, 774, 775, 781, 779, 782, 783, 784, 785, - 789, 787, 791, 798, 801, 803, 793, 807, 809, 799, - 810, 816, 817, 812, 822, 2414, 825, 824, 826, 827, - 830, 2414, 2414, 149, 2414, 2414, 829, 834, 832, 842, - 846, 843, 839, 841, 852, 847, 855, 859, 860, 867, - - 849, 862, 863, 872, 868, 875, 877, 879, 878, 885, - 886, 887, 890, 889, 892, 902, 888, 2414, 898, 899, - 903, 906, 2414, 900, 910, 908, 911, 914, 915, 916, - 918, 925, 924, 926, 927, 931, 933, 934, 942, 938, - 940, 943, 949, 946, 948, 951, 952, 953, 955, 959, - 961, 984, 960, 963, 962, 965, 969, 968, 970, 978, - 991, 971, 986, 980, 996, 994, 997, 1003, 1005, 2414, - 1012, 1006, 1008, 1010, 1013, 1015, 1014, 1016, 1019, 1020, - 1030, 2414, 1026, 1031, 1032, 1035, 1029, 1042, 1049, 2414, - 1046, 1045, 1051, 1052, 1053, 1054, 1055, 1057, 1058, 1062, - - 1064, 1065, 1068, 1069, 1067, 1071, 1081, 1088, 1075, 1086, - 1077, 1079, 1087, 1095, 1089, 1092, 1094, 1097, 2414, 216, - 1098, 1100, 1103, 1109, 1110, 1106, 1102, 1114, 1119, 1117, - 1118, 1121, 1108, 1125, 1130, 1127, 1131, 1129, 1137, 1138, - 1139, 1140, 1142, 1143, 1144, 1145, 1147, 1149, 2414, 1151, - 1156, 1152, 1157, 1171, 1155, 1169, 1179, 1175, 1177, 1180, - 1173, 1183, 1189, 1190, 1186, 1188, 1193, 1194, 1195, 1196, - 1199, 1197, 1200, 1203, 1204, 1206, 1212, 1218, 1220, 1222, - 1224, 1215, 1225, 1232, 1226, 1228, 1236, 2414, 1245, 1246, - 1242, 1253, 1230, 1238, 1249, 1251, 1252, 1254, 1261, 1255, - - 1258, 1262, 1263, 1259, 1265, 1266, 1268, 2414, 1274, 1267, - 1270, 1271, 1281, 1282, 1283, 1285, 1286, 1289, 1292, 1294, - 1298, 1295, 1296, 1306, 1307, 1309, 1315, 1316, 1317, 2414, - 1319, 1312, 1320, 1330, 1323, 1327, 1331, 1338, 1332, 1334, - 1335, 1336, 1342, 1340, 1343, 1344, 1348, 1347, 1341, 1349, - 1363, 1359, 1357, 1370, 2414, 1371, 2414, 2414, 1368, 2414, - 1372, 1373, 1374, 1376, 1378, 1380, 1382, 1383, 1385, 1386, - 1387, 1389, 1390, 2414, 1392, 1398, 1400, 1394, 1396, 1403, - 795, 1404, 1411, 1405, 1413, 1415, 2414, 1417, 1418, 1426, - 1424, 1430, 1420, 1428, 1432, 1434, 1436, 1440, 1433, 1441, - - 1442, 1444, 1446, 1452, 1449, 1450, 1453, 1456, 1457, 1454, - 1460, 2414, 2414, 1465, 1472, 1467, 1473, 1475, 1483, 1480, - 1477, 1487, 1488, 1489, 1490, 1491, 1493, 1494, 2414, 1501, - 1504, 1505, 1507, 2414, 1513, 1502, 1495, 1515, 1517, 2414, - 1498, 1519, 1522, 1524, 1525, 1528, 1526, 1532, 1534, 1536, - 1539, 1540, 1543, 1541, 1542, 1548, 1545, 1556, 1557, 1559, - 1567, 1561, 1546, 1563, 1569, 1571, 1573, 1574, 2414, 1580, - 1576, 1584, 1564, 1586, 1592, 1581, 1578, 1588, 1590, 1591, - 1597, 1599, 1601, 1603, 1604, 1607, 1606, 1605, 1616, 1609, - 1611, 2414, 1619, 1626, 1618, 1622, 1628, 1630, 1620, 1632, - - 1634, 1636, 1637, 1641, 1643, 1649, 1655, 1656, 1648, 1663, - 1652, 1661, 1659, 1645, 1672, 1666, 1673, 1669, 2414, 1674, - 1676, 1679, 1680, 1682, 1683, 1684, 2414, 2414, 1685, 2414, - 1690, 1692, 1694, 1695, 2414, 2414, 2414, 1701, 1698, 1699, - 1705, 1709, 2414, 1706, 1711, 1713, 1716, 1717, 1718, 1720, - 1719, 2414, 1722, 1721, 1714, 1724, 1737, 1725, 1738, 1740, - 1741, 1744, 1745, 1747, 1753, 1750, 1752, 1754, 1757, 1758, - 1760, 1764, 1762, 1765, 1759, 1761, 1775, 2414, 1776, 1766, - 1780, 1784, 1785, 1787, 1788, 1792, 1790, 1793, 1798, 1800, - 2414, 2414, 1801, 1803, 1804, 1799, 1809, 1812, 1813, 1815, - - 1817, 1818, 1819, 1821, 1822, 1823, 2414, 1824, 1826, 1832, - 1829, 1836, 1841, 1833, 1848, 1850, 1851, 1853, 1855, 2414, - 1856, 1858, 1859, 1863, 1864, 1825, 1865, 1871, 1867, 1860, - 1874, 2414, 1876, 1869, 1880, 1877, 1883, 1884, 1885, 1886, - 1891, 1893, 1897, 1894, 2414, 1896, 2414, 1899, 1903, 1911, - 1909, 2414, 1907, 1912, 2414, 1914, 1915, 1926, 1919, 1927, - 1929, 1931, 1913, 1921, 1932, 1939, 1938, 1935, 1940, 1942, - 1946, 2414, 2414, 1952, 2414, 2414, 1955, 2414, 2414, 1957, - 2414, 1959, 2414, 1965, 1961, 1947, 1949, 1964, 2414, 1967, - 2414, 2414, 1968, 1970, 1974, 1976, 1977, 1978, 1980, 1981, - - 1982, 1983, 1985, 1986, 1987, 1988, 1991, 1990, 1997, 1998, - 2000, 2001, 2010, 2414, 1999, 2018, 2414, 2021, 2015, 2007, - 2012, 2022, 2023, 2027, 2033, 2029, 2031, 2032, 2414, 2414, - 2414, 2034, 2036, 2041, 2043, 2035, 2414, 2046, 2037, 2048, - 2414, 2059, 2049, 2055, 2057, 2061, 2065, 2414, 2063, 2067, - 2069, 2068, 2076, 2080, 2082, 2085, 2087, 2414, 2088, 2089, - 2414, 2091, 2081, 2095, 2096, 2098, 2414, 2051, 2092, 2100, - 2103, 2102, 2108, 2414, 2105, 2106, 2414, 2116, 2414, 2109, - 2117, 2120, 2122, 2125, 2126, 2127, 2133, 2131, 2132, 2414, - 2414, 2134, 2414, 2414, 2135, 2137, 2138, 2139, 2142, 2143, - - 2146, 2149, 2148, 2414, 2150, 2151, 2160, 2152, 2161, 2414, - 2162, 2164, 2165, 2414, 2414, 2173, 2166, 2174, 2414, 2175, - 2177, 2179, 2181, 2185, 2187, 2182, 2189, 2188, 2191, 2192, - 2195, 2199, 2414, 2206, 2200, 2202, 2208, 2210, 2212, 2213, - 2214, 2216, 2218, 2222, 2219, 2414, 2223, 2227, 2233, 2236, - 2237, 2240, 2414, 2243, 2414, 2246, 2247, 2414, 2414, 2241, - 2251, 2248, 2414, 2254, 2414, 2255, 2256, 2414, 2414, 2414, - 2258, 2414, 2261, 2414, 2263, 2264, 2414, 2266, 2268, 2270, - 2272, 2414, 2274, 2414, 2276, 2277, 2414, 2414, 2414, 2414, - 2281, 2280, 2283, 2286, 2414, 2287, 2289, 2290, 2292, 2414, - - 2414, 2322, 2329, 2336, 2343, 2350, 94, 2357, 2364, 2371, - 2378, 2385, 2392, 2399, 2406 + 248, 251, 252, 255, 259, 257, 253, 267, 263, 261, + 265, 49, 270, 269, 273, 1170, 286, 663, 289, 576, + 296, 540, 401, 301, 282, 305, 309, 0, 302, 306, + 312, 289, 308, 295, 313, 319, 315, 322, 334, 323, + 318, 321, 327, 325, 330, 328, 332, 331, 336, 339, + 340, 351, 352, 362, 345, 363, 360, 369, 372, 370, + 373, 361, 374, 371, 375, 376, 378, 382, 384, 385, + 388, 390, 389, 386, 394, 402, 404, 407, 400, 410, + 411, 418, 416, 415, 414, 417, 424, 422, 433, 428, + 431, 435, 436, 439, 442, 441, 449, 447, 456, 443, + + 445, 454, 457, 453, 460, 464, 462, 461, 468, 469, + 470, 474, 480, 481, 475, 483, 485, 487, 491, 489, + 493, 497, 504, 500, 501, 502, 503, 514, 510, 507, + 511, 513, 519, 534, 523, 521, 518, 522, 528, 524, + 531, 535, 542, 545, 547, 540, 551, 561, 552, 562, + 563, 566, 568, 565, 564, 571, 574, 575, 573, 581, + 591, 587, 589, 588, 597, 600, 599, 592, 602, 603, + 605, 2431, 609, 611, 612, 613, 614, 2431, 615, 616, + 617, 618, 619, 630, 621, 628, 629, 633, 637, 647, + 638, 643, 640, 645, 651, 655, 653, 654, 656, 664, + + 661, 660, 662, 671, 681, 672, 674, 680, 683, 685, + 686, 687, 688, 690, 695, 700, 701, 705, 707, 713, + 689, 709, 711, 717, 716, 718, 719, 721, 722, 725, + 729, 732, 731, 735, 741, 734, 743, 749, 746, 750, + 751, 755, 724, 756, 757, 758, 759, 773, 771, 765, + 775, 781, 777, 763, 782, 769, 785, 787, 793, 789, + 791, 792, 794, 796, 798, 799, 800, 801, 804, 807, + 813, 814, 816, 818, 817, 820, 824, 819, 826, 2431, + 834, 833, 830, 836, 838, 2431, 2431, 149, 2431, 2431, + 841, 839, 842, 852, 854, 851, 849, 843, 860, 855, + + 863, 865, 869, 871, 857, 875, 876, 878, 881, 882, + 886, 888, 883, 890, 892, 893, 897, 899, 904, 901, + 910, 895, 2431, 912, 907, 916, 919, 2431, 908, 918, + 920, 913, 925, 923, 933, 926, 936, 938, 928, 941, + 943, 935, 944, 951, 949, 950, 954, 960, 957, 959, + 962, 963, 965, 964, 966, 970, 991, 971, 972, 973, + 979, 974, 985, 976, 986, 1003, 987, 980, 1005, 1008, + 1009, 998, 1014, 1016, 2431, 1023, 1019, 1020, 1021, 1025, + 1026, 1024, 1027, 1028, 1031, 1041, 2431, 1037, 1042, 1044, + 1046, 1050, 1053, 1060, 2431, 1057, 1061, 1063, 1058, 1064, + + 1067, 1069, 1071, 1072, 1077, 1068, 1075, 1079, 1082, 1083, + 1090, 1085, 1094, 1102, 1091, 1099, 1081, 1101, 1104, 1107, + 1105, 1108, 1109, 1110, 2431, 216, 1111, 1112, 1113, 1119, + 1126, 1124, 1118, 1120, 1131, 1122, 1130, 1139, 1140, 1141, + 1142, 1143, 1144, 1146, 1148, 1151, 1153, 1154, 989, 1156, + 1155, 1157, 1159, 1160, 2431, 1163, 1167, 1164, 1171, 1183, + 1180, 1181, 1191, 1187, 1189, 1195, 1185, 1192, 1202, 1203, + 1200, 1204, 1206, 2431, 1207, 1201, 1209, 1212, 1213, 1217, + 1218, 1214, 1229, 1219, 1231, 1234, 1235, 1242, 1223, 1237, + 1244, 1246, 1247, 1248, 2431, 1256, 1257, 1254, 1263, 1260, + + 1261, 1262, 1266, 1250, 1267, 1276, 1268, 1272, 1275, 1277, + 1274, 1279, 1281, 1282, 2431, 1296, 1283, 1284, 1298, 1289, + 1286, 1297, 1300, 1308, 1310, 1311, 1313, 1312, 1314, 1315, + 1318, 1321, 1323, 1330, 1331, 1334, 2431, 1336, 1337, 1327, + 1344, 1348, 1338, 1349, 1345, 1350, 1352, 1353, 1354, 1356, + 1358, 1359, 1360, 1362, 1363, 1368, 1364, 1381, 1378, 1365, + 1387, 2431, 1391, 2431, 2431, 1389, 2431, 1390, 1392, 1375, + 1394, 1395, 1397, 1398, 1401, 1403, 1404, 1405, 1408, 1406, + 2431, 1412, 1414, 1416, 1413, 1419, 1420, 1038, 1421, 1429, + 1422, 1423, 1432, 2431, 1431, 1434, 1441, 1448, 1445, 1435, + + 1447, 1449, 1450, 1452, 1456, 1457, 1458, 1460, 1462, 1464, + 1468, 1465, 1466, 1469, 1472, 1474, 1470, 1473, 2431, 2431, + 1488, 1483, 1484, 1493, 1495, 1499, 1497, 1498, 1500, 1501, + 1506, 1507, 1508, 1510, 1511, 2431, 1517, 1521, 1522, 1524, + 2431, 1515, 1514, 1530, 1531, 1534, 2431, 1535, 1536, 1537, + 1538, 1539, 1541, 1545, 1546, 1554, 1548, 1551, 1557, 1564, + 1558, 1556, 1560, 1572, 1576, 1573, 1578, 1584, 1565, 1580, + 1567, 1589, 1591, 1593, 1594, 2431, 1600, 1583, 1603, 1581, + 1605, 1607, 1596, 1609, 1611, 1612, 1613, 1617, 1614, 1618, + 1621, 1624, 1620, 1626, 1622, 1636, 1623, 1628, 2431, 1625, + + 1643, 1639, 1645, 1642, 1646, 1650, 1651, 1653, 1654, 1656, + 1657, 1661, 1663, 1669, 1667, 1671, 1679, 1673, 1676, 1677, + 1681, 1687, 1686, 1693, 1684, 2431, 1691, 1698, 1700, 1695, + 1702, 1703, 1704, 2431, 2431, 1705, 2431, 1710, 1712, 1714, + 1715, 2431, 2431, 2431, 1721, 1718, 1719, 1285, 1726, 2431, + 1727, 1728, 1731, 1732, 1733, 1734, 1736, 1737, 2431, 1738, + 1690, 1740, 1739, 1742, 1749, 1750, 1754, 1759, 1760, 1753, + 1761, 1767, 1763, 1766, 1769, 1773, 1770, 1777, 1778, 1776, + 1779, 1774, 1780, 1784, 2431, 1791, 1793, 1795, 1799, 1800, + 1802, 1803, 1806, 1807, 1808, 1814, 1811, 2431, 2431, 1815, + + 1817, 1825, 1820, 1823, 1827, 1829, 1830, 1833, 1834, 1836, + 1837, 1838, 1839, 2431, 1840, 1841, 1848, 1845, 1852, 1857, + 1849, 1864, 1866, 1867, 1869, 1871, 2431, 1842, 1873, 1874, + 1876, 1877, 1878, 1879, 1880, 1888, 1883, 1890, 2431, 1892, + 1885, 1897, 1894, 1899, 1900, 1903, 1901, 1905, 1909, 1912, + 1913, 2431, 1910, 2431, 1915, 1919, 1927, 1925, 2431, 1923, + 1928, 2431, 1929, 1931, 1942, 1933, 1943, 1945, 1947, 1935, + 1939, 1948, 1954, 1950, 1951, 1957, 1958, 1961, 2431, 2431, + 1964, 2431, 2431, 1969, 2431, 2431, 1971, 2431, 1973, 2431, + 1979, 1975, 1977, 1960, 1978, 2431, 1981, 2431, 2431, 1984, + + 1985, 1986, 1995, 1988, 1990, 1992, 1997, 1998, 1996, 2002, + 2003, 1999, 2006, 2005, 2007, 2013, 2011, 2014, 2015, 2022, + 2431, 2017, 2023, 2431, 2033, 2028, 2030, 2034, 2038, 2036, + 2040, 2046, 2042, 2043, 2044, 2431, 2431, 2431, 2045, 2047, + 2059, 2051, 2049, 2431, 2061, 2053, 2069, 2431, 2070, 2056, + 2073, 2074, 2075, 2076, 2431, 2077, 2081, 2083, 2085, 2090, + 2094, 2096, 2098, 2102, 2431, 2099, 2095, 2431, 2103, 2105, + 2108, 2109, 2111, 2431, 2112, 2113, 2116, 2118, 2121, 2119, + 2431, 2125, 2122, 2431, 2137, 2431, 2123, 2138, 2130, 2141, + 2145, 2128, 2142, 2152, 2149, 2150, 2431, 2431, 2151, 2431, + + 2431, 2153, 2155, 2158, 2159, 2160, 2161, 2162, 2164, 2166, + 2431, 2167, 2169, 2179, 2176, 2174, 2431, 2182, 2184, 2168, + 2431, 2431, 2185, 2194, 2189, 2431, 2192, 2199, 2200, 2201, + 2203, 2204, 2205, 2206, 2207, 2209, 2210, 2218, 2221, 2431, + 2223, 2211, 2215, 2228, 2233, 2225, 2230, 2234, 2239, 2236, + 2241, 2243, 2431, 2245, 2247, 2252, 2256, 2253, 2260, 2431, + 2263, 2431, 2266, 2267, 2431, 2431, 2249, 2269, 2270, 2431, + 2271, 2431, 2261, 2273, 2431, 2431, 2431, 2279, 2431, 2280, + 2431, 2283, 2274, 2431, 2285, 2287, 2291, 2293, 2431, 2295, + 2431, 2288, 2296, 2431, 2431, 2431, 2431, 2298, 2299, 2305, + + 2301, 2431, 2306, 2308, 2307, 2312, 2431, 2431, 2339, 2346, + 2353, 2360, 2367, 94, 2374, 2381, 2388, 2395, 2402, 2409, + 2416, 2423 } ; -static yyconst flex_int16_t yy_def[1216] = +static yyconst flex_int16_t yy_def[1223] = { 0, - 1201, 1, 1202, 1202, 1203, 1203, 1204, 1204, 1205, 1205, - 1206, 1206, 1201, 1207, 1201, 1201, 1201, 1201, 1208, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1209, - 1201, 1201, 1201, 1209, 1210, 1201, 1201, 1201, 1210, 1211, - 1201, 1201, 1201, 1201, 1211, 1212, 1201, 1201, 1201, 1212, - 1213, 1201, 1214, 1201, 1213, 1213, 1207, 1207, 1201, 1215, - 1208, 1215, 1208, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1209, 1209, 1210, 1210, 1211, - 1211, 1201, 1212, 1212, 1213, 1213, 1214, 1214, 1213, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1213, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1213, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1213, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1213, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, - 1207, 1201, 1201, 1207, 1201, 1201, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, - 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1213, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1213, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1201, 1207, 1201, 1201, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1201, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, - 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1201, 1207, 1201, - 1207, 1207, 1207, 1207, 1201, 1201, 1201, 1207, 1207, 1207, - 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1201, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1201, 1207, 1201, 1207, 1207, 1207, - 1207, 1201, 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1201, 1201, 1207, 1201, 1201, 1207, 1201, 1201, 1207, - 1201, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1201, 1207, - 1201, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1201, 1207, 1207, 1201, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1201, - 1201, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, - 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, - 1201, 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, - 1207, 1207, 1207, 1201, 1207, 1207, 1201, 1207, 1201, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1201, - 1201, 1207, 1201, 1201, 1207, 1207, 1207, 1207, 1207, 1207, - - 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1201, - 1207, 1207, 1207, 1201, 1201, 1207, 1207, 1207, 1201, 1207, - 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, - 1207, 1207, 1201, 1207, 1201, 1207, 1207, 1201, 1201, 1207, - 1207, 1207, 1201, 1207, 1201, 1207, 1207, 1201, 1201, 1201, - 1207, 1201, 1207, 1201, 1207, 1207, 1201, 1207, 1207, 1207, - 1207, 1201, 1207, 1201, 1207, 1207, 1201, 1201, 1201, 1201, - 1207, 1207, 1207, 1207, 1201, 1207, 1207, 1207, 1207, 1201, - - 0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201 + 1208, 1, 1209, 1209, 1210, 1210, 1211, 1211, 1212, 1212, + 1213, 1213, 1208, 1214, 1208, 1208, 1208, 1208, 1215, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1216, + 1208, 1208, 1208, 1216, 1217, 1208, 1208, 1208, 1217, 1218, + 1208, 1208, 1208, 1208, 1218, 1219, 1208, 1208, 1208, 1219, + 1220, 1208, 1221, 1208, 1220, 1220, 1214, 1214, 1208, 1222, + 1215, 1222, 1215, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1216, 1216, 1217, 1217, 1218, + 1218, 1208, 1219, 1219, 1220, 1220, 1221, 1221, 1220, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1220, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1220, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1220, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1220, 1214, 1214, 1214, 1214, 1208, + 1214, 1214, 1214, 1214, 1214, 1208, 1208, 1214, 1208, 1208, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1208, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1220, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1220, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1208, 1214, 1208, 1208, 1214, 1208, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1208, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, + 1208, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1208, 1208, 1214, 1208, 1214, 1214, 1214, + 1214, 1208, 1208, 1208, 1214, 1214, 1214, 1214, 1214, 1208, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1208, 1214, 1208, 1214, 1214, 1214, 1214, 1208, 1214, + 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208, + 1214, 1208, 1208, 1214, 1208, 1208, 1214, 1208, 1214, 1208, + 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1208, 1208, 1214, + + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1208, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1208, 1208, 1208, 1214, 1214, + 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1208, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1208, 1214, 1214, + 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, + 1208, 1214, 1214, 1208, 1214, 1208, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1208, 1208, 1214, 1208, + + 1208, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1208, 1214, 1214, 1214, 1214, 1214, 1208, 1214, 1214, 1214, + 1208, 1208, 1214, 1214, 1214, 1208, 1214, 1214, 1214, 1214, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1208, + 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, + 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1214, 1214, 1208, + 1214, 1208, 1214, 1214, 1208, 1208, 1214, 1214, 1214, 1208, + 1214, 1208, 1214, 1214, 1208, 1208, 1208, 1214, 1208, 1214, + 1208, 1214, 1214, 1208, 1214, 1214, 1214, 1214, 1208, 1214, + 1208, 1214, 1214, 1208, 1208, 1208, 1208, 1214, 1214, 1214, + + 1214, 1208, 1214, 1214, 1214, 1214, 1208, 0, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208 } ; -static yyconst flex_int16_t yy_nxt[2454] = +static yyconst flex_int16_t yy_nxt[2471] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 18, 20, 21, 14, 22, 23, 24, 25, 14, @@ -834,7 +836,7 @@ static yyconst flex_int16_t yy_nxt[2454] = 48, 69, 44, 46, 47, 70, 49, 48, 57, 58, 59, 68, 68, 49, 51, 52, 53, 54, 60, 18, 57, 58, 59, 116, 116, 55, 51, 52, 53, 54, - 60, 18, 68, 99, 174, 74, 75, 55, 15, 16, + 60, 18, 68, 99, 175, 74, 75, 55, 15, 16, 17, 62, 63, 64, 67, 67, 68, 67, 67, 65, 67, 92, 68, 76, 68, 67, 84, 68, 66, 15, @@ -844,7 +846,7 @@ static yyconst flex_int16_t yy_nxt[2454] = 72, 73, 89, 81, 68, 68, 82, 68, 68, 83, 68, 96, 90, 104, 68, 97, 100, 68, 110, 93, 94, 68, 101, 105, 95, 102, 106, 68, 68, 68, - 114, 98, 103, 107, 115, 111, 138, 120, 457, 120, + 114, 98, 103, 107, 115, 111, 138, 120, 462, 120, 120, 112, 120, 108, 123, 123, 113, 72, 109, 72, 72, 125, 72, 125, 125, 68, 125, 67, 128, 67, @@ -854,251 +856,252 @@ static yyconst flex_int16_t yy_nxt[2454] = 68, 141, 137, 145, 140, 146, 68, 68, 68, 147, 142, 155, 148, 143, 144, 68, 150, 68, 68, 68, 151, 153, 68, 68, 156, 154, 149, 68, 160, 158, - 68, 161, 157, 68, 68, 68, 159, 68, 68, 68, - 152, 68, 163, 68, 169, 68, 170, 68, 162, 68, - 165, 68, 175, 166, 164, 68, 173, 118, 167, 168, - 118, 172, 68, 176, 116, 116, 171, 120, 126, 120, - - 120, 178, 120, 177, 123, 123, 125, 181, 125, 125, - 72, 125, 72, 72, 68, 72, 68, 180, 68, 179, - 68, 128, 68, 185, 182, 68, 187, 68, 68, 68, - 186, 68, 68, 183, 68, 193, 68, 195, 68, 68, - 184, 68, 197, 68, 198, 188, 194, 68, 200, 68, - 189, 201, 196, 68, 203, 190, 68, 199, 206, 68, - 207, 191, 192, 68, 208, 202, 68, 68, 126, 68, - 68, 211, 205, 204, 68, 209, 68, 213, 214, 212, - 68, 68, 68, 68, 68, 68, 216, 210, 215, 218, - 217, 68, 219, 68, 68, 68, 68, 68, 222, 68, - - 220, 226, 68, 227, 68, 229, 68, 230, 233, 232, - 126, 221, 68, 224, 68, 68, 223, 225, 68, 238, - 68, 228, 235, 68, 68, 234, 237, 68, 239, 68, - 231, 68, 244, 68, 236, 240, 243, 242, 68, 245, - 68, 68, 68, 68, 248, 241, 68, 249, 251, 68, - 68, 253, 68, 68, 68, 250, 246, 247, 68, 254, - 255, 68, 68, 252, 68, 68, 68, 259, 262, 68, - 68, 68, 256, 68, 258, 68, 261, 68, 263, 257, - 260, 264, 68, 267, 268, 269, 266, 270, 68, 68, - 265, 68, 271, 68, 68, 276, 68, 68, 277, 68, - - 68, 280, 275, 68, 68, 68, 68, 283, 272, 274, - 282, 273, 68, 285, 278, 68, 68, 68, 68, 68, - 279, 284, 286, 281, 68, 68, 68, 289, 68, 126, - 288, 68, 68, 291, 68, 287, 305, 300, 68, 68, - 299, 68, 68, 290, 68, 302, 292, 293, 68, 303, - 301, 304, 306, 307, 308, 68, 294, 68, 295, 296, - 297, 68, 309, 298, 312, 313, 311, 68, 314, 310, - 68, 68, 68, 315, 318, 68, 68, 68, 68, 319, - 68, 68, 68, 124, 68, 317, 316, 322, 325, 324, - 326, 321, 327, 68, 320, 330, 68, 68, 68, 328, - - 323, 329, 68, 331, 332, 68, 68, 333, 68, 68, - 68, 335, 68, 337, 68, 338, 68, 334, 68, 68, - 68, 68, 68, 68, 340, 68, 68, 341, 345, 336, - 346, 339, 342, 347, 68, 344, 68, 351, 68, 343, - 68, 356, 68, 348, 352, 68, 68, 68, 349, 68, - 359, 357, 353, 350, 68, 361, 68, 68, 68, 363, - 355, 68, 354, 68, 68, 358, 68, 360, 367, 68, - 126, 362, 364, 368, 371, 372, 68, 365, 68, 68, - 68, 376, 68, 366, 370, 369, 68, 68, 373, 68, - 68, 122, 375, 380, 68, 68, 374, 68, 377, 378, - - 382, 68, 383, 68, 379, 384, 402, 381, 385, 68, - 68, 386, 68, 387, 68, 391, 388, 68, 68, 389, - 68, 390, 68, 68, 68, 68, 392, 68, 393, 68, - 395, 68, 68, 400, 397, 401, 68, 121, 420, 398, - 68, 396, 68, 399, 394, 403, 68, 68, 408, 406, - 404, 68, 407, 68, 68, 68, 68, 409, 410, 411, - 68, 68, 68, 68, 68, 412, 417, 415, 414, 416, - 418, 68, 405, 419, 68, 68, 422, 421, 68, 413, - 423, 68, 68, 425, 424, 68, 68, 68, 430, 426, - 427, 68, 431, 68, 68, 68, 68, 68, 432, 68, - - 433, 68, 429, 68, 428, 68, 437, 68, 438, 754, - 68, 68, 434, 68, 436, 68, 435, 439, 440, 68, - 441, 68, 126, 442, 68, 445, 443, 446, 68, 68, - 444, 447, 452, 448, 68, 450, 68, 68, 68, 68, - 453, 68, 68, 451, 68, 449, 68, 455, 460, 461, - 458, 68, 459, 68, 68, 68, 454, 456, 68, 68, - 467, 68, 462, 470, 68, 463, 471, 68, 472, 468, - 464, 68, 68, 474, 68, 68, 465, 466, 469, 68, - 68, 476, 475, 478, 68, 479, 473, 68, 482, 68, - 68, 68, 481, 477, 483, 480, 484, 68, 68, 68, - - 68, 68, 68, 490, 68, 485, 486, 488, 489, 491, - 68, 68, 68, 493, 68, 68, 495, 487, 68, 492, - 68, 496, 68, 68, 500, 494, 68, 68, 68, 497, - 68, 499, 506, 498, 504, 502, 68, 68, 68, 68, - 507, 503, 501, 68, 505, 68, 68, 512, 510, 513, - 68, 509, 68, 514, 68, 68, 517, 508, 68, 519, - 68, 68, 520, 126, 68, 68, 511, 68, 516, 522, - 515, 68, 68, 68, 68, 68, 531, 68, 518, 521, - 68, 68, 68, 68, 119, 538, 523, 525, 537, 533, - 68, 534, 68, 544, 536, 524, 68, 542, 68, 526, - - 532, 527, 535, 68, 539, 528, 68, 529, 68, 68, - 543, 540, 530, 545, 546, 68, 549, 68, 68, 550, - 68, 551, 68, 547, 68, 68, 68, 68, 68, 541, - 554, 68, 68, 557, 548, 553, 555, 560, 68, 552, - 117, 68, 68, 68, 68, 556, 559, 68, 562, 563, - 565, 558, 564, 561, 68, 566, 567, 68, 68, 568, - 570, 68, 569, 68, 68, 68, 68, 68, 573, 68, - 68, 574, 575, 577, 68, 576, 68, 68, 571, 68, - 68, 68, 583, 68, 572, 581, 582, 68, 585, 68, - 580, 68, 578, 68, 584, 586, 579, 588, 68, 68, - - 68, 68, 587, 592, 68, 590, 68, 68, 589, 68, - 68, 591, 68, 594, 68, 68, 600, 601, 68, 593, - 68, 68, 68, 602, 597, 595, 68, 598, 603, 68, - 68, 68, 608, 68, 596, 599, 605, 68, 609, 68, - 604, 68, 68, 68, 606, 607, 610, 611, 613, 68, - 68, 68, 68, 615, 68, 68, 68, 68, 612, 68, - 614, 68, 621, 68, 68, 616, 617, 68, 68, 68, - 624, 618, 622, 620, 628, 619, 626, 625, 629, 623, - 631, 68, 630, 68, 627, 68, 633, 68, 634, 68, - 632, 68, 68, 636, 635, 68, 639, 640, 68, 637, - - 68, 68, 68, 641, 642, 68, 68, 68, 68, 68, - 647, 68, 68, 638, 643, 68, 68, 655, 68, 644, - 652, 645, 648, 646, 68, 650, 649, 68, 651, 657, - 68, 658, 68, 653, 68, 660, 68, 68, 68, 659, - 68, 654, 68, 656, 68, 662, 665, 661, 68, 663, - 68, 671, 667, 668, 68, 666, 664, 68, 68, 669, - 670, 68, 674, 68, 68, 68, 68, 68, 677, 672, - 68, 68, 673, 68, 68, 68, 681, 68, 68, 68, - 68, 686, 68, 68, 675, 687, 68, 678, 690, 676, - 679, 682, 680, 68, 68, 68, 684, 68, 68, 693, - - 689, 68, 683, 685, 68, 688, 68, 68, 68, 697, - 68, 691, 695, 698, 692, 699, 694, 701, 68, 68, - 696, 68, 705, 706, 68, 700, 704, 68, 68, 68, - 707, 68, 68, 702, 713, 68, 708, 711, 709, 68, - 703, 712, 68, 68, 68, 716, 68, 68, 68, 715, - 68, 710, 68, 68, 68, 68, 68, 724, 714, 68, - 68, 68, 727, 717, 725, 718, 719, 720, 721, 68, - 723, 68, 726, 722, 729, 68, 730, 732, 733, 734, - 68, 728, 68, 68, 68, 68, 68, 735, 68, 731, - 68, 740, 68, 738, 68, 68, 742, 68, 68, 68, - - 736, 68, 68, 745, 68, 739, 68, 747, 68, 744, - 68, 737, 68, 750, 741, 68, 68, 68, 756, 743, - 746, 755, 748, 68, 749, 68, 751, 68, 752, 68, - 68, 763, 68, 759, 760, 753, 68, 757, 68, 758, - 68, 762, 68, 764, 68, 68, 68, 769, 68, 767, - 765, 768, 68, 68, 68, 761, 68, 770, 68, 776, - 766, 68, 68, 771, 68, 68, 68, 68, 68, 68, - 774, 775, 68, 772, 773, 782, 781, 68, 783, 68, - 785, 777, 778, 780, 68, 68, 779, 68, 784, 68, - 791, 792, 68, 786, 788, 68, 790, 789, 787, 68, - - 68, 68, 68, 68, 798, 68, 68, 68, 801, 793, - 68, 802, 794, 68, 68, 796, 68, 68, 795, 68, - 797, 799, 804, 803, 800, 68, 808, 68, 805, 68, - 811, 68, 807, 806, 68, 812, 68, 68, 68, 813, - 68, 814, 815, 809, 68, 819, 68, 810, 68, 816, - 823, 68, 68, 68, 68, 68, 827, 68, 68, 818, - 68, 817, 820, 821, 822, 824, 826, 828, 68, 68, - 830, 68, 825, 68, 831, 68, 68, 833, 829, 68, - 835, 68, 836, 68, 837, 68, 68, 839, 68, 838, - 68, 841, 68, 68, 832, 834, 68, 843, 68, 844, - - 68, 842, 68, 68, 68, 845, 840, 846, 852, 68, - 848, 68, 847, 68, 854, 68, 68, 68, 68, 68, - 849, 68, 850, 68, 851, 856, 857, 858, 68, 860, - 68, 68, 68, 864, 68, 855, 863, 853, 68, 862, - 68, 866, 68, 859, 68, 867, 68, 861, 68, 68, - 865, 868, 869, 68, 872, 68, 876, 68, 873, 870, - 68, 68, 877, 879, 68, 871, 878, 68, 68, 875, - 881, 68, 880, 68, 874, 68, 882, 883, 68, 886, - 888, 68, 885, 884, 68, 68, 68, 891, 68, 890, - 892, 68, 68, 889, 68, 68, 68, 68, 893, 894, - - 887, 895, 68, 898, 68, 896, 68, 68, 903, 897, - 68, 68, 905, 68, 899, 901, 902, 68, 68, 906, - 907, 68, 900, 68, 909, 68, 68, 904, 68, 68, - 68, 68, 68, 68, 68, 917, 68, 68, 908, 916, - 911, 912, 913, 126, 918, 919, 910, 914, 920, 68, - 68, 915, 68, 68, 923, 922, 68, 68, 924, 68, - 928, 925, 68, 921, 68, 68, 68, 929, 932, 68, - 68, 68, 68, 68, 68, 926, 68, 68, 68, 927, - 931, 934, 933, 930, 935, 936, 937, 68, 68, 940, - 938, 939, 68, 941, 942, 945, 68, 68, 947, 68, - - 68, 944, 68, 943, 68, 68, 946, 950, 949, 952, - 68, 68, 68, 68, 955, 68, 68, 956, 951, 948, - 953, 68, 954, 957, 68, 68, 958, 68, 959, 68, - 68, 68, 961, 68, 68, 68, 68, 68, 68, 968, - 960, 68, 971, 985, 68, 68, 966, 972, 68, 963, - 964, 969, 973, 68, 965, 962, 967, 970, 974, 975, - 68, 976, 68, 68, 978, 68, 979, 68, 68, 981, - 68, 68, 68, 980, 983, 68, 68, 68, 989, 68, - 986, 68, 977, 68, 987, 991, 68, 992, 68, 68, - 982, 990, 68, 994, 984, 68, 68, 68, 68, 988, - - 996, 995, 998, 68, 1002, 68, 68, 993, 68, 68, - 1003, 68, 1000, 999, 1001, 68, 1006, 997, 1007, 68, - 1005, 68, 1008, 68, 68, 68, 68, 68, 1004, 1012, - 1009, 68, 1013, 68, 1010, 1015, 1011, 1014, 68, 68, - 1017, 68, 1016, 68, 68, 1019, 1022, 68, 1018, 1021, - 68, 68, 68, 1020, 68, 124, 1023, 1025, 68, 68, - 1027, 68, 1026, 1024, 68, 1028, 1029, 68, 1030, 68, - 1031, 68, 1032, 68, 1033, 1034, 68, 68, 1037, 68, - 68, 1036, 68, 1035, 1039, 1038, 68, 1041, 68, 68, - 68, 1040, 68, 68, 68, 68, 1048, 68, 68, 68, - - 68, 1042, 68, 68, 1044, 1045, 1046, 1049, 1043, 68, - 68, 68, 68, 68, 122, 1047, 1052, 1056, 1057, 68, - 1051, 1058, 68, 1054, 68, 1050, 1053, 68, 1055, 1059, - 68, 1060, 1061, 68, 68, 68, 1062, 1063, 1067, 68, - 1068, 68, 1064, 68, 68, 68, 68, 68, 68, 68, - 1065, 1073, 1074, 68, 1066, 68, 1069, 1077, 68, 1079, - 68, 68, 1070, 68, 1071, 1076, 1072, 68, 1078, 68, - 1075, 68, 1080, 68, 1083, 68, 1082, 68, 1084, 68, - 68, 68, 1102, 1081, 1087, 1085, 1088, 1090, 68, 1092, - 1086, 1091, 68, 68, 68, 1089, 1093, 68, 1094, 68, - - 68, 68, 1098, 68, 68, 1095, 1097, 68, 68, 1100, - 68, 1104, 68, 1096, 68, 68, 1099, 68, 68, 1101, - 68, 68, 1106, 1103, 1105, 1107, 1108, 1110, 68, 68, - 1112, 1109, 68, 1114, 68, 1113, 1115, 68, 68, 68, - 1118, 1111, 1119, 68, 68, 68, 68, 68, 1120, 68, - 68, 68, 1121, 1117, 68, 68, 1116, 1123, 68, 1126, - 68, 68, 68, 68, 68, 1131, 1122, 1125, 1134, 1124, - 1129, 1133, 68, 68, 68, 1127, 68, 68, 68, 1140, - 1130, 1132, 1135, 1136, 1128, 68, 68, 68, 1137, 68, - 1139, 68, 1142, 68, 68, 1141, 1146, 68, 1143, 68, - - 68, 68, 1138, 68, 68, 1150, 1153, 68, 1145, 1149, - 1144, 68, 68, 1148, 68, 1147, 1154, 1155, 68, 1158, - 68, 1159, 68, 1152, 68, 68, 68, 1163, 68, 1151, - 68, 68, 1156, 1165, 68, 68, 1157, 1161, 1168, 68, - 1167, 121, 1164, 1160, 1169, 68, 1162, 1170, 68, 68, - 1166, 1172, 68, 68, 1171, 68, 1173, 1174, 68, 68, - 68, 1176, 1177, 68, 1175, 1178, 68, 68, 68, 1182, - 68, 1179, 1181, 68, 1184, 68, 68, 1183, 68, 1187, - 68, 1188, 68, 1189, 68, 1190, 68, 1180, 68, 68, - 1192, 1185, 68, 68, 1195, 68, 1186, 1193, 68, 68, - - 1191, 68, 68, 1200, 68, 119, 117, 1196, 68, 1201, - 1201, 1201, 1194, 1201, 1197, 1198, 1201, 1201, 1201, 1201, - 1201, 1199, 40, 40, 40, 40, 40, 40, 40, 45, - 45, 45, 45, 45, 45, 45, 50, 50, 50, 50, - 50, 50, 50, 56, 56, 56, 56, 56, 56, 56, - 61, 61, 61, 61, 61, 61, 61, 71, 71, 1201, - 71, 71, 71, 71, 116, 116, 1201, 1201, 1201, 116, - 116, 118, 118, 1201, 1201, 118, 1201, 118, 120, 1201, - 1201, 1201, 1201, 1201, 120, 123, 123, 1201, 1201, 1201, - 123, 123, 125, 1201, 1201, 1201, 1201, 1201, 125, 127, - - 127, 1201, 127, 127, 127, 127, 72, 72, 1201, 72, - 72, 72, 72, 13, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201 + 68, 161, 157, 68, 68, 68, 159, 68, 163, 68, + 152, 68, 164, 68, 170, 68, 171, 68, 162, 68, + 166, 68, 68, 169, 165, 68, 167, 176, 168, 116, + 116, 173, 118, 177, 126, 118, 172, 120, 174, 120, + + 120, 68, 120, 178, 123, 123, 125, 68, 125, 125, + 72, 125, 72, 72, 126, 72, 182, 179, 68, 181, + 68, 128, 184, 180, 68, 68, 186, 68, 183, 188, + 68, 68, 187, 68, 68, 68, 194, 68, 196, 68, + 68, 198, 68, 68, 68, 185, 68, 199, 68, 195, + 189, 68, 68, 204, 200, 190, 201, 68, 207, 202, + 191, 203, 197, 68, 68, 208, 192, 193, 206, 209, + 212, 205, 68, 68, 68, 68, 214, 213, 211, 215, + 210, 68, 68, 68, 68, 68, 68, 68, 68, 216, + 68, 217, 219, 218, 68, 221, 68, 68, 68, 224, + + 68, 68, 68, 222, 228, 220, 68, 231, 229, 232, + 223, 234, 126, 124, 68, 226, 68, 230, 225, 68, + 227, 235, 68, 68, 237, 240, 68, 68, 68, 68, + 68, 239, 233, 241, 68, 246, 68, 244, 236, 245, + 68, 238, 242, 68, 243, 68, 247, 68, 68, 253, + 250, 68, 251, 68, 68, 68, 248, 68, 249, 68, + 252, 68, 255, 257, 256, 68, 68, 254, 68, 68, + 261, 264, 68, 68, 68, 258, 68, 265, 259, 260, + 68, 68, 68, 262, 263, 266, 68, 68, 270, 271, + 268, 272, 68, 68, 269, 68, 273, 68, 278, 68, + + 267, 68, 280, 68, 274, 68, 277, 275, 279, 68, + 276, 283, 68, 68, 68, 68, 68, 286, 285, 68, + 281, 288, 68, 68, 287, 68, 68, 289, 292, 282, + 126, 68, 284, 68, 68, 68, 68, 291, 308, 290, + 68, 122, 303, 68, 293, 294, 68, 68, 295, 296, + 302, 304, 68, 305, 68, 306, 307, 68, 297, 68, + 298, 299, 300, 68, 68, 301, 313, 309, 314, 310, + 315, 316, 311, 68, 68, 68, 68, 68, 68, 312, + 68, 322, 321, 68, 317, 68, 68, 68, 121, 328, + 318, 319, 320, 68, 323, 325, 327, 324, 330, 68, + + 68, 68, 329, 68, 68, 331, 332, 335, 326, 68, + 334, 68, 68, 333, 68, 68, 337, 68, 340, 338, + 336, 68, 341, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 343, 68, 344, 349, 339, 351, 345, 350, + 68, 68, 68, 348, 342, 68, 355, 346, 347, 68, + 68, 352, 68, 356, 360, 68, 363, 68, 365, 68, + 354, 357, 353, 68, 361, 68, 68, 68, 68, 359, + 362, 358, 68, 68, 68, 119, 68, 364, 366, 367, + 368, 371, 372, 126, 68, 369, 68, 375, 376, 374, + 370, 373, 68, 68, 380, 68, 377, 68, 68, 68, + + 68, 68, 68, 384, 378, 379, 386, 68, 388, 381, + 382, 387, 68, 68, 383, 385, 389, 68, 390, 68, + 391, 68, 392, 68, 395, 68, 393, 394, 68, 68, + 68, 68, 396, 68, 68, 397, 68, 68, 399, 405, + 401, 68, 404, 68, 68, 402, 68, 68, 400, 403, + 407, 398, 406, 68, 417, 68, 412, 408, 68, 410, + 411, 68, 68, 68, 413, 414, 415, 68, 68, 68, + 68, 68, 416, 420, 419, 68, 421, 68, 424, 409, + 422, 68, 418, 68, 423, 68, 425, 68, 427, 68, + 426, 429, 428, 68, 68, 430, 432, 68, 431, 68, + + 435, 68, 436, 68, 68, 68, 68, 437, 68, 438, + 68, 68, 68, 68, 434, 433, 68, 443, 442, 68, + 444, 445, 439, 441, 446, 68, 68, 440, 68, 126, + 68, 68, 68, 448, 451, 452, 68, 449, 68, 455, + 453, 457, 68, 447, 450, 68, 68, 456, 68, 458, + 68, 68, 454, 68, 68, 68, 460, 464, 465, 466, + 459, 68, 463, 68, 68, 461, 68, 68, 472, 68, + 467, 475, 68, 468, 476, 68, 477, 68, 469, 473, + 474, 68, 479, 68, 470, 471, 480, 68, 68, 481, + 68, 484, 478, 68, 68, 68, 483, 487, 68, 486, + + 68, 489, 68, 488, 68, 68, 482, 68, 485, 68, + 490, 68, 491, 68, 493, 495, 68, 497, 494, 68, + 68, 496, 68, 492, 68, 68, 498, 499, 68, 501, + 68, 68, 68, 500, 502, 68, 506, 68, 68, 505, + 68, 504, 503, 512, 507, 68, 508, 68, 68, 509, + 68, 510, 511, 68, 513, 68, 68, 518, 519, 514, + 516, 68, 68, 68, 520, 515, 68, 523, 517, 68, + 525, 68, 68, 526, 126, 68, 68, 68, 68, 522, + 521, 528, 68, 68, 68, 68, 68, 537, 68, 524, + 527, 68, 68, 544, 543, 529, 531, 68, 68, 68, + + 539, 68, 530, 68, 549, 540, 532, 541, 533, 538, + 68, 542, 534, 548, 535, 68, 545, 68, 550, 536, + 68, 68, 626, 546, 553, 551, 68, 555, 68, 552, + 556, 68, 68, 68, 557, 68, 68, 68, 68, 68, + 68, 547, 560, 68, 563, 554, 559, 561, 566, 68, + 68, 558, 761, 68, 68, 562, 68, 565, 68, 568, + 564, 569, 68, 570, 567, 68, 572, 573, 574, 68, + 68, 571, 68, 68, 575, 68, 68, 576, 577, 68, + 68, 68, 580, 68, 68, 578, 581, 68, 582, 68, + 583, 68, 584, 68, 68, 68, 579, 68, 585, 588, + + 589, 592, 68, 68, 587, 590, 68, 586, 591, 593, + 595, 68, 596, 68, 68, 599, 68, 68, 594, 68, + 68, 68, 68, 68, 68, 68, 607, 597, 598, 601, + 68, 68, 68, 608, 68, 600, 68, 604, 68, 605, + 602, 609, 68, 68, 610, 606, 611, 603, 612, 613, + 615, 68, 68, 68, 68, 68, 68, 614, 68, 618, + 68, 620, 617, 68, 622, 68, 68, 68, 68, 68, + 616, 68, 68, 628, 619, 68, 68, 621, 623, 68, + 624, 631, 117, 68, 629, 625, 627, 633, 635, 632, + 636, 630, 68, 68, 637, 68, 634, 68, 640, 68, + + 641, 68, 639, 68, 68, 638, 642, 68, 643, 646, + 647, 644, 68, 68, 68, 68, 68, 648, 68, 68, + 649, 68, 645, 654, 68, 68, 68, 650, 655, 68, + 68, 68, 651, 68, 652, 68, 653, 659, 657, 656, + 662, 68, 664, 68, 658, 665, 68, 68, 660, 68, + 663, 661, 666, 667, 68, 668, 68, 669, 68, 68, + 68, 670, 68, 674, 675, 672, 68, 673, 68, 68, + 677, 676, 68, 68, 68, 68, 671, 681, 68, 68, + 68, 678, 682, 684, 68, 680, 68, 68, 68, 68, + 688, 68, 679, 68, 68, 68, 68, 68, 68, 913, + + 685, 68, 683, 693, 686, 687, 689, 694, 68, 68, + 68, 691, 68, 700, 696, 697, 690, 692, 699, 698, + 68, 695, 68, 68, 68, 68, 68, 68, 704, 706, + 68, 701, 705, 68, 702, 68, 708, 712, 713, 68, + 711, 703, 68, 68, 707, 709, 68, 714, 68, 68, + 68, 718, 723, 715, 710, 719, 68, 68, 717, 720, + 68, 68, 68, 716, 68, 68, 68, 722, 68, 721, + 68, 68, 68, 731, 68, 68, 68, 68, 732, 126, + 68, 724, 728, 725, 726, 727, 730, 68, 733, 734, + 68, 729, 736, 68, 739, 737, 735, 738, 740, 68, + + 741, 68, 68, 68, 68, 742, 68, 68, 747, 68, + 68, 745, 744, 68, 749, 68, 68, 68, 68, 743, + 68, 752, 746, 754, 68, 68, 68, 751, 68, 757, + 748, 68, 68, 68, 68, 68, 763, 750, 762, 753, + 756, 68, 755, 68, 68, 758, 68, 68, 767, 765, + 766, 759, 760, 68, 764, 770, 769, 68, 771, 68, + 68, 68, 68, 776, 68, 772, 774, 775, 68, 68, + 68, 768, 68, 777, 68, 783, 68, 68, 68, 773, + 68, 68, 68, 124, 68, 68, 68, 778, 781, 782, + 779, 789, 780, 788, 790, 68, 68, 784, 785, 787, + + 68, 791, 786, 792, 793, 68, 798, 68, 799, 68, + 68, 68, 68, 68, 795, 794, 797, 796, 68, 68, + 68, 805, 68, 68, 808, 801, 68, 68, 809, 68, + 800, 802, 803, 68, 68, 813, 68, 804, 806, 811, + 810, 807, 68, 68, 814, 812, 68, 68, 68, 68, + 68, 68, 819, 68, 820, 821, 822, 68, 68, 816, + 68, 815, 823, 68, 817, 826, 68, 818, 68, 68, + 68, 830, 68, 825, 827, 828, 68, 68, 833, 68, + 824, 829, 831, 834, 68, 68, 832, 835, 68, 837, + 68, 838, 68, 68, 836, 68, 68, 122, 839, 841, + + 842, 68, 843, 68, 844, 68, 68, 846, 68, 845, + 848, 840, 68, 847, 851, 68, 850, 68, 849, 68, + 852, 68, 853, 68, 68, 68, 68, 854, 859, 68, + 68, 861, 68, 68, 68, 68, 68, 68, 68, 864, + 68, 855, 870, 856, 857, 863, 858, 865, 68, 867, + 871, 68, 860, 862, 68, 68, 869, 68, 68, 874, + 866, 868, 68, 68, 873, 68, 68, 875, 68, 68, + 883, 872, 879, 68, 886, 68, 884, 880, 877, 68, + 885, 68, 876, 68, 878, 68, 888, 882, 68, 68, + 881, 68, 890, 68, 893, 887, 68, 889, 68, 68, + + 895, 891, 68, 68, 924, 68, 897, 68, 896, 898, + 68, 899, 68, 900, 68, 68, 68, 68, 892, 901, + 894, 902, 68, 905, 68, 903, 68, 68, 910, 904, + 68, 68, 912, 68, 906, 908, 909, 914, 68, 68, + 68, 916, 907, 68, 68, 68, 68, 911, 68, 68, + 68, 68, 68, 927, 68, 923, 918, 919, 920, 915, + 926, 68, 68, 921, 917, 68, 68, 929, 930, 922, + 925, 68, 68, 68, 935, 68, 931, 932, 68, 68, + 936, 68, 68, 933, 939, 68, 68, 928, 68, 68, + 68, 68, 68, 934, 940, 938, 68, 937, 941, 943, + + 944, 942, 948, 68, 945, 68, 946, 68, 947, 949, + 952, 68, 68, 954, 68, 68, 951, 121, 68, 68, + 68, 953, 956, 68, 957, 959, 68, 68, 962, 68, + 950, 960, 68, 958, 955, 68, 961, 68, 963, 68, + 965, 68, 68, 966, 964, 68, 68, 968, 68, 68, + 68, 68, 68, 68, 68, 975, 967, 68, 978, 987, + 68, 68, 973, 979, 68, 970, 976, 971, 980, 68, + 972, 969, 974, 977, 981, 982, 68, 983, 68, 68, + 985, 68, 986, 68, 988, 68, 68, 990, 68, 68, + 68, 68, 68, 994, 993, 68, 992, 68, 984, 996, + + 68, 998, 68, 999, 68, 989, 68, 991, 995, 68, + 1001, 68, 68, 68, 997, 68, 1003, 68, 1002, 1009, + 1005, 68, 68, 1000, 68, 68, 1007, 68, 1006, 1010, + 1008, 68, 1013, 1004, 1014, 68, 1012, 68, 1015, 68, + 68, 68, 1011, 68, 1019, 68, 1016, 68, 1020, 1022, + 1017, 68, 1018, 1021, 68, 68, 1024, 68, 1023, 68, + 68, 1029, 68, 68, 1025, 1028, 68, 1026, 1030, 68, + 68, 1027, 68, 68, 1032, 1034, 68, 1035, 1033, 1031, + 1036, 68, 1037, 68, 1038, 68, 1039, 68, 1040, 68, + 68, 68, 1044, 68, 1042, 1043, 68, 68, 68, 1046, + + 68, 1045, 68, 1047, 68, 1041, 1048, 68, 68, 68, + 68, 68, 1049, 1055, 68, 68, 1051, 68, 68, 68, + 1050, 1052, 1053, 68, 1056, 68, 68, 68, 1054, 68, + 1059, 1063, 1064, 1065, 68, 68, 1067, 1057, 1058, 1061, + 68, 1062, 68, 1060, 1068, 68, 68, 1066, 68, 1069, + 68, 1074, 68, 1075, 68, 68, 68, 68, 68, 68, + 1070, 68, 1080, 68, 1071, 68, 1072, 1073, 68, 1076, + 1081, 68, 1084, 68, 1077, 119, 1078, 1079, 1082, 1083, + 1086, 68, 68, 1087, 1085, 68, 68, 68, 68, 68, + 1088, 1090, 1091, 68, 1089, 68, 1092, 68, 1094, 117, + + 1095, 1097, 68, 1099, 1093, 1098, 68, 68, 68, 1100, + 68, 68, 1096, 1101, 68, 68, 1102, 68, 1104, 1103, + 68, 68, 1107, 68, 68, 68, 1105, 1111, 68, 1106, + 68, 68, 1108, 68, 68, 68, 1114, 68, 68, 1112, + 68, 1113, 68, 1109, 1110, 1120, 1115, 1116, 1117, 68, + 68, 1119, 1121, 68, 68, 1118, 1122, 68, 1123, 1125, + 1126, 68, 68, 68, 68, 68, 1127, 68, 1124, 1128, + 68, 68, 68, 68, 68, 1130, 68, 1133, 68, 68, + 68, 68, 1138, 1208, 1129, 1136, 68, 1132, 68, 1131, + 1140, 68, 1141, 1134, 68, 1142, 68, 68, 1137, 1139, + + 1135, 68, 1146, 1143, 68, 1145, 68, 1147, 1144, 1149, + 1148, 68, 68, 68, 1153, 68, 68, 68, 68, 68, + 1150, 68, 68, 68, 1157, 1208, 1156, 68, 1152, 1160, + 68, 1151, 1154, 68, 1162, 68, 1155, 68, 1161, 1165, + 68, 1159, 68, 1163, 1166, 68, 68, 1158, 68, 1164, + 1170, 68, 1172, 68, 1168, 68, 1167, 68, 1175, 68, + 1171, 68, 1174, 1176, 68, 68, 1169, 1177, 68, 1183, + 1178, 1179, 68, 68, 1173, 68, 1180, 1181, 68, 68, + 1184, 68, 68, 68, 1182, 68, 68, 1185, 1186, 1188, + 1189, 68, 68, 1187, 1191, 68, 1190, 68, 1194, 68, + + 68, 1192, 1195, 68, 1196, 68, 1197, 68, 68, 1199, + 68, 68, 1198, 68, 1200, 1193, 1202, 68, 68, 68, + 68, 1208, 1203, 1207, 68, 1208, 1208, 1208, 1208, 1208, + 1208, 1201, 1208, 1204, 1205, 1208, 1208, 1208, 1206, 40, + 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, + 45, 45, 45, 50, 50, 50, 50, 50, 50, 50, + 56, 56, 56, 56, 56, 56, 56, 61, 61, 61, + 61, 61, 61, 61, 71, 71, 1208, 71, 71, 71, + 71, 116, 116, 1208, 1208, 1208, 116, 116, 118, 118, + 1208, 1208, 118, 1208, 118, 120, 1208, 1208, 1208, 1208, + + 1208, 120, 123, 123, 1208, 1208, 1208, 123, 123, 125, + 1208, 1208, 1208, 1208, 1208, 125, 127, 127, 1208, 127, + 127, 127, 127, 72, 72, 1208, 72, 72, 72, 72, + 13, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208 } ; -static yyconst flex_int16_t yy_chk[2454] = +static yyconst flex_int16_t yy_chk[2471] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1109,7 +1112,7 @@ static yyconst flex_int16_t yy_chk[2454] = 9, 112, 33, 6, 7, 7, 7, 7, 9, 7, 10, 10, 10, 44, 44, 7, 8, 8, 8, 8, 10, 8, 21, 33, 112, 21, 21, 8, 11, 11, - 11, 11, 11, 11, 1207, 20, 29, 20, 20, 11, + 11, 11, 11, 11, 1214, 20, 29, 20, 20, 11, 20, 29, 24, 21, 25, 20, 24, 28, 11, 12, 12, 12, 12, 12, 12, 74, 22, 22, 74, 25, @@ -1117,259 +1120,260 @@ static yyconst flex_int16_t yy_chk[2454] = 19, 22, 19, 19, 23, 19, 26, 66, 27, 23, 19, 19, 27, 23, 30, 31, 23, 34, 35, 23, 32, 32, 27, 35, 82, 32, 34, 37, 37, 30, - 31, 384, 34, 35, 31, 34, 35, 38, 36, 39, - 39, 32, 34, 36, 39, 37, 82, 55, 384, 55, + 31, 388, 34, 35, 31, 34, 35, 38, 36, 39, + 39, 32, 34, 36, 39, 37, 82, 55, 388, 55, 55, 38, 55, 36, 60, 60, 38, 63, 36, 63, 63, 65, 63, 65, 65, 76, 65, 68, 63, 68, 68, 75, 68, 77, 78, 75, 77, 68, 71, 79, 71, 71, 80, 71, 81, 76, 83, 84, 71, 71, - 85, 83, 78, 79, 80, 86, 87, 91, 520, 88, + 85, 83, 78, 79, 80, 86, 87, 91, 526, 88, 89, 84, 81, 88, 83, 89, 90, 94, 99, 90, 85, 94, 90, 86, 87, 92, 91, 95, 93, 96, 92, 93, 97, 98, 95, 93, 90, 100, 99, 97, - 101, 100, 96, 102, 103, 111, 98, 104, 105, 106, - 92, 107, 102, 110, 108, 109, 109, 113, 101, 108, - 104, 114, 113, 105, 103, 115, 111, 119, 106, 107, - 119, 110, 132, 114, 117, 117, 109, 121, 129, 121, - - 121, 129, 121, 115, 124, 124, 126, 132, 126, 126, - 127, 126, 127, 127, 130, 127, 133, 131, 134, 130, - 135, 127, 131, 136, 133, 137, 138, 141, 136, 143, - 137, 138, 142, 134, 140, 140, 147, 142, 144, 145, - 135, 139, 144, 146, 145, 139, 141, 148, 147, 149, - 139, 147, 143, 150, 149, 139, 151, 146, 152, 153, - 153, 139, 139, 152, 154, 148, 155, 163, 125, 154, - 162, 156, 151, 150, 157, 154, 156, 158, 159, 157, - 161, 160, 158, 159, 164, 165, 161, 155, 160, 163, - 162, 166, 164, 167, 168, 169, 172, 170, 167, 171, - - 165, 171, 173, 172, 174, 174, 177, 175, 177, 176, - 178, 166, 175, 169, 176, 179, 168, 170, 180, 181, - 183, 173, 178, 182, 181, 177, 180, 184, 182, 185, - 175, 187, 187, 186, 179, 183, 186, 185, 188, 188, - 189, 191, 190, 192, 191, 184, 193, 192, 194, 195, - 196, 196, 199, 194, 197, 193, 189, 190, 200, 197, - 198, 201, 203, 195, 204, 198, 202, 202, 205, 207, - 208, 210, 199, 205, 201, 206, 204, 209, 206, 200, - 203, 207, 211, 210, 211, 211, 209, 212, 212, 213, - 208, 214, 213, 216, 215, 217, 217, 218, 218, 219, - - 220, 221, 216, 222, 224, 223, 221, 224, 214, 215, - 223, 214, 225, 226, 219, 228, 229, 227, 226, 231, - 220, 225, 227, 222, 230, 233, 236, 230, 234, 235, - 229, 238, 240, 231, 237, 228, 239, 234, 241, 242, - 233, 239, 243, 230, 232, 236, 232, 232, 247, 237, - 235, 238, 240, 241, 242, 244, 232, 248, 232, 232, - 232, 245, 243, 232, 246, 246, 245, 246, 247, 244, - 249, 250, 251, 248, 251, 252, 253, 254, 255, 252, - 256, 258, 262, 123, 257, 250, 249, 255, 257, 256, - 258, 254, 259, 260, 253, 262, 261, 259, 265, 260, - - 255, 261, 263, 263, 264, 266, 267, 265, 268, 264, - 272, 267, 269, 269, 271, 271, 273, 266, 274, 277, - 275, 278, 280, 279, 273, 282, 283, 274, 279, 268, - 280, 272, 275, 281, 284, 278, 285, 285, 281, 277, - 286, 287, 290, 282, 285, 288, 287, 293, 283, 289, - 289, 287, 285, 284, 291, 291, 292, 294, 295, 293, - 286, 296, 285, 297, 298, 288, 299, 290, 297, 300, - 301, 292, 294, 298, 301, 302, 303, 295, 304, 305, - 302, 306, 306, 296, 300, 299, 307, 308, 303, 309, - 310, 122, 305, 310, 311, 318, 304, 330, 307, 308, - - 312, 312, 313, 313, 309, 314, 330, 311, 315, 315, - 314, 316, 316, 317, 319, 321, 318, 320, 317, 319, - 321, 320, 322, 323, 324, 325, 322, 326, 323, 346, - 325, 327, 328, 328, 327, 329, 333, 120, 346, 327, - 329, 326, 331, 327, 324, 331, 332, 334, 335, 333, - 332, 336, 334, 335, 341, 337, 338, 336, 337, 338, - 339, 340, 342, 350, 343, 339, 344, 342, 341, 343, - 344, 344, 332, 345, 347, 352, 348, 347, 345, 340, - 348, 348, 349, 350, 349, 351, 353, 354, 355, 351, - 352, 356, 356, 355, 357, 358, 359, 360, 357, 362, - - 358, 361, 354, 363, 353, 367, 362, 681, 363, 681, - 364, 370, 359, 365, 361, 366, 360, 364, 365, 368, - 366, 369, 371, 367, 374, 370, 368, 371, 372, 373, - 369, 372, 377, 373, 375, 375, 378, 377, 379, 380, - 378, 387, 381, 375, 389, 374, 388, 380, 389, 390, - 387, 393, 388, 394, 390, 392, 379, 381, 391, 396, - 392, 401, 391, 395, 395, 391, 396, 397, 397, 393, - 391, 398, 399, 399, 402, 403, 391, 391, 394, 400, - 405, 401, 400, 403, 404, 404, 398, 406, 407, 407, - 409, 408, 406, 402, 408, 405, 409, 410, 411, 412, - - 417, 414, 413, 415, 415, 410, 411, 413, 414, 416, - 419, 420, 424, 419, 416, 421, 421, 412, 422, 417, - 426, 422, 425, 427, 426, 420, 428, 429, 430, 422, - 431, 425, 432, 424, 430, 428, 433, 432, 434, 435, - 433, 429, 427, 436, 431, 437, 438, 438, 436, 439, - 440, 435, 441, 440, 439, 442, 443, 434, 444, 445, - 445, 443, 446, 446, 447, 448, 437, 449, 442, 448, - 441, 450, 453, 451, 455, 454, 453, 456, 444, 447, - 458, 457, 459, 462, 118, 460, 449, 451, 459, 455, - 460, 456, 464, 464, 458, 450, 452, 462, 463, 452, - - 454, 452, 457, 461, 461, 452, 466, 452, 465, 467, - 463, 461, 452, 465, 466, 468, 469, 469, 472, 471, - 473, 472, 474, 467, 471, 475, 477, 476, 478, 461, - 475, 479, 480, 478, 468, 474, 476, 481, 483, 473, - 116, 487, 481, 484, 485, 477, 480, 486, 484, 485, - 487, 479, 486, 483, 488, 488, 489, 492, 491, 491, - 492, 489, 491, 493, 494, 495, 496, 497, 495, 498, - 499, 496, 497, 499, 500, 498, 501, 502, 493, 505, - 503, 504, 505, 506, 494, 503, 504, 509, 507, 511, - 502, 512, 500, 507, 506, 508, 501, 510, 510, 513, - - 508, 515, 509, 514, 516, 512, 517, 514, 511, 518, - 521, 513, 522, 516, 527, 523, 524, 525, 526, 515, - 533, 524, 525, 526, 521, 517, 528, 522, 527, 530, - 531, 529, 532, 532, 518, 523, 529, 534, 533, 536, - 528, 538, 535, 537, 530, 531, 534, 535, 537, 539, - 540, 541, 542, 539, 543, 544, 545, 546, 536, 547, - 538, 548, 545, 550, 552, 540, 541, 555, 551, 553, - 548, 542, 546, 544, 553, 543, 551, 550, 554, 547, - 555, 556, 554, 554, 552, 561, 557, 558, 558, 559, - 556, 557, 560, 560, 559, 562, 563, 564, 565, 561, - - 566, 563, 564, 565, 566, 567, 568, 569, 570, 572, - 568, 571, 573, 562, 567, 574, 575, 576, 576, 567, - 573, 567, 569, 567, 577, 571, 570, 582, 572, 578, - 578, 579, 579, 574, 580, 581, 581, 583, 585, 580, - 586, 575, 593, 577, 584, 583, 586, 582, 587, 584, - 594, 593, 589, 590, 591, 587, 585, 589, 590, 591, - 592, 595, 596, 596, 597, 592, 598, 600, 599, 594, - 601, 604, 595, 599, 602, 603, 603, 605, 606, 610, - 607, 609, 611, 612, 597, 609, 609, 600, 612, 598, - 601, 604, 602, 613, 614, 615, 606, 616, 617, 615, - - 611, 618, 605, 607, 619, 610, 620, 622, 623, 619, - 621, 613, 617, 620, 614, 621, 616, 623, 624, 625, - 618, 626, 627, 628, 632, 622, 626, 627, 628, 629, - 629, 631, 633, 624, 635, 635, 631, 634, 632, 636, - 625, 634, 634, 637, 639, 638, 640, 641, 642, 637, - 638, 633, 644, 649, 643, 645, 646, 646, 636, 648, - 647, 650, 649, 639, 647, 640, 641, 642, 643, 653, - 645, 652, 648, 644, 651, 651, 652, 654, 656, 659, - 659, 650, 654, 656, 661, 662, 663, 661, 664, 653, - 665, 666, 666, 664, 667, 668, 668, 669, 670, 671, - - 662, 672, 673, 671, 675, 665, 678, 673, 679, 670, - 676, 663, 677, 677, 667, 680, 682, 684, 683, 669, - 672, 682, 675, 683, 676, 685, 678, 686, 679, 688, - 689, 691, 693, 686, 688, 680, 691, 684, 690, 685, - 694, 690, 692, 692, 695, 699, 696, 697, 697, 695, - 693, 696, 698, 700, 701, 689, 702, 698, 703, 704, - 694, 705, 706, 699, 704, 707, 710, 67, 708, 709, - 702, 703, 711, 700, 701, 710, 709, 714, 710, 716, - 714, 705, 706, 708, 715, 717, 707, 718, 711, 721, - 719, 720, 720, 715, 717, 719, 718, 717, 716, 722, - - 723, 724, 725, 726, 726, 727, 728, 737, 730, 721, - 741, 731, 722, 730, 736, 724, 731, 732, 723, 733, - 725, 727, 733, 732, 728, 735, 737, 738, 733, 739, - 741, 742, 736, 735, 743, 742, 744, 745, 747, 743, - 746, 744, 745, 738, 748, 749, 749, 739, 750, 746, - 753, 751, 752, 754, 755, 753, 757, 757, 763, 748, - 756, 747, 750, 751, 752, 754, 756, 758, 758, 759, - 760, 760, 755, 762, 761, 764, 773, 763, 759, 761, - 765, 765, 766, 766, 767, 767, 768, 770, 771, 768, - 777, 772, 770, 776, 762, 764, 772, 774, 774, 775, - - 778, 773, 779, 780, 775, 776, 771, 776, 781, 781, - 777, 782, 776, 783, 783, 784, 785, 788, 787, 786, - 778, 790, 779, 791, 780, 785, 786, 787, 789, 789, - 795, 793, 799, 794, 796, 784, 793, 782, 794, 791, - 797, 796, 798, 788, 800, 797, 801, 790, 802, 803, - 795, 798, 799, 804, 802, 805, 806, 814, 803, 800, - 809, 806, 807, 808, 811, 801, 807, 807, 808, 805, - 810, 813, 809, 812, 804, 810, 811, 812, 816, 815, - 817, 818, 814, 813, 815, 817, 820, 821, 821, 820, - 822, 822, 823, 818, 824, 825, 826, 829, 823, 824, - - 816, 825, 831, 831, 832, 826, 833, 834, 838, 829, - 839, 840, 840, 838, 831, 833, 834, 841, 844, 841, - 842, 842, 832, 845, 845, 846, 855, 839, 847, 848, - 849, 851, 850, 854, 853, 854, 856, 858, 844, 853, - 847, 848, 849, 61, 855, 856, 846, 850, 857, 857, - 859, 851, 860, 861, 860, 859, 862, 863, 861, 864, - 865, 862, 866, 858, 867, 865, 868, 866, 869, 869, - 870, 875, 871, 876, 873, 863, 872, 874, 880, 864, - 868, 871, 870, 867, 871, 872, 873, 877, 879, 876, - 874, 875, 881, 877, 879, 882, 882, 883, 884, 884, - - 885, 881, 887, 880, 886, 888, 883, 887, 886, 889, - 889, 896, 890, 893, 894, 894, 895, 895, 888, 885, - 890, 897, 893, 896, 898, 899, 897, 900, 898, 901, - 902, 903, 900, 904, 905, 906, 908, 926, 909, 908, - 899, 911, 911, 926, 910, 914, 905, 912, 912, 902, - 903, 909, 913, 913, 904, 901, 906, 910, 914, 915, - 915, 916, 916, 917, 918, 918, 919, 919, 921, 922, - 922, 923, 930, 921, 924, 924, 925, 927, 929, 929, - 927, 934, 917, 928, 928, 931, 931, 933, 933, 936, - 923, 930, 935, 935, 925, 937, 938, 939, 940, 928, - - 937, 936, 939, 941, 943, 942, 944, 934, 946, 943, - 944, 948, 941, 940, 942, 949, 949, 938, 950, 953, - 948, 951, 951, 950, 954, 963, 956, 957, 946, 956, - 951, 959, 957, 964, 953, 959, 954, 958, 958, 960, - 961, 961, 960, 962, 965, 963, 966, 968, 962, 965, - 967, 966, 969, 964, 970, 56, 967, 969, 971, 986, - 971, 987, 970, 968, 974, 974, 977, 977, 980, 980, - 982, 982, 984, 985, 985, 986, 988, 984, 990, 990, - 993, 988, 994, 987, 994, 993, 995, 996, 996, 997, - 998, 995, 999, 1000, 1001, 1002, 1003, 1003, 1004, 1005, - - 1006, 997, 1008, 1007, 999, 1000, 1001, 1004, 998, 1009, - 1010, 1015, 1011, 1012, 51, 1002, 1007, 1011, 1012, 1020, - 1006, 1013, 1013, 1009, 1021, 1005, 1008, 1019, 1010, 1015, - 1016, 1016, 1018, 1018, 1022, 1023, 1019, 1020, 1024, 1024, - 1025, 1026, 1021, 1027, 1028, 1025, 1032, 1036, 1033, 1039, - 1022, 1033, 1034, 1034, 1023, 1035, 1026, 1038, 1038, 1040, - 1040, 1043, 1027, 1068, 1028, 1036, 1032, 1044, 1039, 1045, - 1035, 1042, 1042, 1046, 1045, 1049, 1044, 1047, 1046, 1050, - 1052, 1051, 1068, 1043, 1050, 1047, 1051, 1053, 1053, 1055, - 1049, 1054, 1054, 1063, 1055, 1052, 1056, 1056, 1057, 1057, - - 1059, 1060, 1063, 1062, 1069, 1059, 1062, 1064, 1065, 1065, - 1066, 1070, 1070, 1060, 1072, 1071, 1064, 1075, 1076, 1066, - 1073, 1080, 1072, 1069, 1071, 1073, 1075, 1078, 1078, 1081, - 1081, 1076, 1082, 1083, 1083, 1082, 1084, 1084, 1085, 1086, - 1087, 1080, 1088, 1088, 1089, 1087, 1092, 1095, 1089, 1096, - 1097, 1098, 1092, 1086, 1099, 1100, 1085, 1096, 1101, 1099, - 1103, 1102, 1105, 1106, 1108, 1105, 1095, 1098, 1108, 1097, - 1102, 1107, 1107, 1109, 1111, 1100, 1112, 1113, 1117, 1117, - 1103, 1106, 1109, 1111, 1101, 1116, 1118, 1120, 1112, 1121, - 1116, 1122, 1120, 1123, 1126, 1118, 1124, 1124, 1121, 1125, - - 1128, 1127, 1113, 1129, 1130, 1128, 1131, 1131, 1123, 1127, - 1122, 1132, 1135, 1126, 1136, 1125, 1132, 1134, 1134, 1137, - 1137, 1138, 1138, 1130, 1139, 1140, 1141, 1142, 1142, 1129, - 1143, 1145, 1135, 1144, 1144, 1147, 1136, 1140, 1148, 1148, - 1147, 50, 1143, 1139, 1149, 1149, 1141, 1150, 1150, 1151, - 1145, 1152, 1152, 1160, 1151, 1154, 1154, 1156, 1156, 1157, - 1162, 1160, 1161, 1161, 1157, 1162, 1164, 1166, 1167, 1171, - 1171, 1164, 1167, 1173, 1175, 1175, 1176, 1173, 1178, 1179, - 1179, 1180, 1180, 1181, 1181, 1183, 1183, 1166, 1185, 1186, - 1186, 1176, 1192, 1191, 1193, 1193, 1178, 1191, 1194, 1196, - - 1185, 1197, 1198, 1199, 1199, 45, 40, 1194, 14, 13, - 0, 0, 1192, 0, 1196, 1197, 0, 0, 0, 0, - 0, 1198, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1204, 1204, 1204, 1204, - 1204, 1204, 1204, 1205, 1205, 1205, 1205, 1205, 1205, 1205, - 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1208, 1208, 0, - 1208, 1208, 1208, 1208, 1209, 1209, 0, 0, 0, 1209, - 1209, 1210, 1210, 0, 0, 1210, 0, 1210, 1211, 0, - 0, 0, 0, 0, 1211, 1212, 1212, 0, 0, 0, - 1212, 1212, 1213, 0, 0, 0, 0, 0, 1213, 1214, - - 1214, 0, 1214, 1214, 1214, 1214, 1215, 1215, 0, 1215, - 1215, 1215, 1215, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, - 1201, 1201, 1201 + 101, 100, 96, 102, 103, 107, 98, 104, 102, 106, + 92, 105, 102, 110, 108, 109, 109, 111, 101, 108, + 104, 114, 113, 107, 103, 115, 105, 113, 106, 117, + 117, 110, 119, 114, 125, 119, 109, 121, 111, 121, + + 121, 132, 121, 115, 124, 124, 126, 134, 126, 126, + 127, 126, 127, 127, 129, 127, 132, 129, 130, 131, + 133, 127, 134, 130, 131, 135, 136, 137, 133, 138, + 141, 136, 137, 142, 138, 140, 140, 144, 142, 143, + 146, 144, 145, 148, 147, 135, 139, 145, 149, 141, + 139, 150, 151, 149, 146, 139, 147, 155, 152, 147, + 139, 148, 143, 152, 153, 153, 139, 139, 151, 154, + 156, 150, 157, 162, 154, 156, 158, 157, 155, 159, + 154, 158, 160, 164, 159, 161, 163, 165, 166, 160, + 167, 161, 163, 162, 168, 165, 169, 170, 174, 168, + + 171, 173, 172, 166, 172, 164, 175, 175, 173, 176, + 167, 177, 179, 123, 176, 170, 177, 174, 169, 178, + 171, 178, 180, 181, 179, 182, 185, 184, 183, 186, + 182, 181, 176, 183, 188, 188, 187, 186, 178, 187, + 190, 180, 184, 191, 185, 189, 189, 192, 193, 195, + 192, 194, 193, 196, 195, 200, 190, 201, 191, 198, + 194, 197, 197, 199, 198, 204, 202, 196, 199, 203, + 203, 206, 205, 208, 207, 200, 206, 207, 201, 202, + 209, 210, 211, 204, 205, 208, 212, 215, 212, 212, + 210, 213, 213, 214, 211, 216, 214, 217, 218, 218, + + 209, 220, 220, 219, 215, 221, 217, 215, 219, 222, + 216, 223, 224, 225, 226, 227, 223, 226, 225, 230, + 221, 228, 229, 231, 227, 232, 228, 229, 232, 222, + 237, 233, 224, 236, 238, 235, 240, 231, 241, 230, + 239, 122, 236, 241, 232, 233, 234, 242, 234, 234, + 235, 237, 246, 238, 243, 239, 240, 244, 234, 245, + 234, 234, 234, 247, 249, 234, 246, 242, 247, 243, + 248, 248, 244, 248, 250, 251, 255, 254, 252, 245, + 253, 254, 253, 256, 249, 259, 257, 258, 120, 259, + 250, 251, 252, 260, 255, 257, 258, 256, 261, 262, + + 264, 263, 260, 261, 268, 262, 263, 266, 257, 265, + 265, 267, 266, 264, 269, 270, 268, 271, 271, 269, + 267, 273, 273, 274, 275, 276, 277, 279, 280, 281, + 282, 283, 275, 285, 276, 282, 270, 284, 277, 283, + 286, 287, 284, 281, 274, 288, 288, 279, 280, 289, + 291, 285, 293, 288, 290, 292, 292, 294, 294, 290, + 287, 288, 286, 295, 290, 297, 298, 296, 299, 289, + 291, 288, 302, 301, 303, 118, 300, 293, 295, 296, + 297, 300, 301, 304, 306, 298, 307, 304, 305, 303, + 299, 302, 308, 305, 309, 309, 306, 310, 311, 312, + + 313, 321, 314, 313, 307, 308, 315, 315, 317, 310, + 311, 316, 316, 317, 312, 314, 318, 318, 319, 319, + 320, 322, 321, 323, 324, 320, 322, 323, 325, 324, + 326, 327, 325, 328, 329, 326, 343, 330, 328, 332, + 330, 331, 331, 333, 332, 330, 336, 334, 329, 330, + 334, 327, 333, 335, 343, 337, 338, 335, 339, 336, + 337, 338, 340, 341, 339, 340, 341, 342, 344, 345, + 346, 347, 342, 346, 345, 354, 347, 350, 349, 335, + 348, 356, 344, 349, 348, 348, 350, 351, 352, 353, + 351, 353, 352, 352, 355, 354, 356, 357, 355, 358, + + 359, 360, 360, 361, 362, 359, 363, 361, 364, 362, + 365, 366, 367, 368, 358, 357, 369, 367, 366, 370, + 368, 369, 363, 365, 370, 371, 372, 364, 373, 375, + 374, 378, 376, 372, 375, 376, 377, 373, 379, 379, + 377, 381, 383, 371, 374, 382, 381, 379, 384, 382, + 385, 392, 378, 391, 393, 398, 384, 392, 393, 394, + 383, 397, 391, 396, 394, 385, 395, 400, 396, 405, + 395, 399, 399, 395, 400, 401, 401, 402, 395, 397, + 398, 403, 403, 404, 395, 395, 404, 406, 407, 405, + 408, 408, 402, 409, 410, 413, 407, 411, 411, 410, + + 412, 413, 414, 412, 415, 416, 406, 422, 409, 417, + 414, 418, 415, 420, 417, 419, 419, 421, 418, 425, + 429, 420, 421, 416, 424, 432, 422, 424, 426, 426, + 430, 427, 431, 425, 427, 434, 431, 433, 436, 430, + 439, 429, 427, 437, 432, 435, 433, 442, 437, 434, + 438, 435, 436, 440, 438, 441, 443, 443, 444, 439, + 441, 445, 446, 444, 445, 440, 447, 448, 442, 449, + 450, 450, 448, 451, 451, 452, 454, 453, 455, 447, + 446, 453, 456, 458, 459, 460, 462, 458, 464, 449, + 452, 461, 468, 465, 464, 454, 456, 463, 465, 467, + + 460, 549, 455, 457, 468, 461, 457, 462, 457, 459, + 472, 463, 457, 467, 457, 466, 466, 469, 469, 457, + 470, 471, 549, 466, 472, 470, 473, 474, 474, 471, + 476, 477, 478, 479, 477, 476, 482, 480, 481, 483, + 484, 466, 480, 485, 483, 473, 479, 481, 486, 488, + 688, 478, 688, 486, 489, 482, 490, 485, 491, 489, + 484, 490, 492, 491, 488, 493, 493, 494, 496, 496, + 499, 492, 494, 497, 497, 498, 500, 497, 498, 501, + 506, 502, 501, 503, 504, 499, 502, 507, 503, 505, + 504, 508, 505, 517, 509, 510, 500, 512, 506, 509, + + 510, 513, 511, 515, 508, 511, 513, 507, 512, 514, + 516, 516, 517, 518, 514, 520, 519, 521, 515, 520, + 522, 523, 524, 527, 528, 529, 530, 518, 519, 522, + 533, 530, 534, 531, 536, 521, 532, 527, 531, 528, + 523, 532, 537, 535, 533, 529, 534, 524, 535, 536, + 538, 538, 539, 540, 541, 542, 543, 537, 544, 541, + 545, 543, 540, 546, 545, 547, 548, 551, 550, 552, + 539, 553, 554, 551, 542, 556, 558, 544, 546, 557, + 547, 554, 116, 559, 552, 548, 550, 557, 559, 556, + 560, 553, 561, 562, 560, 560, 558, 567, 563, 564, + + 564, 565, 562, 563, 568, 561, 565, 566, 566, 569, + 570, 567, 571, 576, 569, 570, 572, 571, 573, 575, + 572, 577, 568, 575, 578, 579, 582, 573, 576, 580, + 581, 584, 573, 67, 573, 589, 573, 580, 578, 577, + 583, 583, 585, 585, 579, 586, 586, 587, 581, 590, + 584, 582, 587, 588, 588, 589, 591, 590, 592, 593, + 594, 591, 604, 596, 597, 593, 598, 594, 596, 597, + 599, 598, 600, 601, 602, 599, 592, 603, 603, 605, + 607, 600, 604, 606, 608, 602, 611, 609, 606, 610, + 610, 612, 601, 613, 614, 617, 618, 848, 621, 848, + + 607, 620, 605, 616, 608, 609, 611, 616, 616, 622, + 619, 613, 623, 622, 618, 619, 612, 614, 621, 620, + 624, 617, 625, 626, 628, 627, 629, 630, 626, 628, + 631, 623, 627, 632, 624, 633, 630, 634, 635, 640, + 633, 625, 634, 635, 629, 631, 636, 636, 638, 639, + 643, 641, 645, 638, 632, 641, 641, 645, 640, 642, + 642, 644, 646, 639, 647, 648, 649, 644, 650, 643, + 651, 652, 653, 653, 654, 655, 657, 660, 654, 61, + 656, 646, 650, 647, 648, 649, 652, 670, 655, 656, + 659, 651, 658, 658, 661, 659, 657, 660, 663, 661, + + 666, 666, 668, 663, 669, 668, 671, 672, 673, 673, + 674, 671, 670, 675, 675, 676, 677, 678, 680, 669, + 679, 678, 672, 680, 682, 685, 683, 677, 684, 684, + 674, 686, 687, 689, 691, 692, 690, 676, 689, 679, + 683, 690, 682, 695, 693, 685, 696, 700, 695, 692, + 693, 686, 687, 697, 691, 698, 697, 699, 699, 701, + 698, 702, 703, 704, 704, 700, 702, 703, 705, 706, + 707, 696, 708, 705, 709, 711, 710, 712, 713, 701, + 711, 714, 717, 56, 715, 718, 716, 706, 709, 710, + 707, 717, 708, 716, 717, 722, 723, 712, 713, 715, + + 721, 718, 714, 721, 722, 724, 726, 725, 727, 727, + 728, 726, 729, 730, 724, 723, 725, 724, 731, 732, + 733, 733, 734, 735, 737, 729, 743, 742, 738, 737, + 728, 730, 731, 738, 739, 742, 740, 732, 734, 740, + 739, 735, 744, 745, 743, 740, 746, 748, 749, 750, + 751, 752, 749, 753, 750, 751, 752, 754, 755, 745, + 757, 744, 753, 758, 746, 756, 756, 748, 762, 759, + 761, 760, 763, 755, 757, 758, 760, 769, 763, 771, + 754, 759, 761, 764, 764, 766, 762, 765, 765, 767, + 767, 768, 770, 780, 766, 778, 768, 51, 769, 771, + + 772, 772, 773, 773, 774, 774, 775, 777, 783, 775, + 779, 770, 777, 778, 782, 779, 781, 781, 780, 782, + 783, 784, 783, 785, 786, 787, 789, 783, 788, 788, + 790, 790, 793, 791, 795, 797, 792, 800, 794, 793, + 798, 784, 800, 785, 786, 792, 787, 794, 796, 796, + 801, 802, 789, 791, 804, 801, 798, 803, 805, 804, + 795, 797, 806, 807, 803, 808, 809, 805, 810, 811, + 813, 802, 809, 812, 815, 813, 814, 810, 807, 815, + 814, 814, 806, 816, 808, 818, 817, 812, 819, 820, + 811, 817, 819, 821, 822, 816, 825, 818, 823, 822, + + 824, 820, 861, 827, 861, 824, 827, 830, 825, 828, + 828, 829, 829, 830, 831, 832, 833, 836, 821, 831, + 823, 832, 838, 838, 839, 833, 840, 841, 845, 836, + 846, 847, 847, 845, 838, 840, 841, 849, 849, 851, + 852, 852, 839, 853, 854, 855, 856, 846, 857, 858, + 860, 863, 862, 864, 864, 860, 854, 855, 856, 851, + 863, 865, 866, 857, 853, 870, 867, 866, 867, 858, + 862, 868, 869, 871, 872, 873, 868, 869, 874, 872, + 873, 875, 877, 870, 876, 876, 882, 865, 880, 878, + 879, 881, 883, 871, 877, 875, 884, 874, 878, 879, + + 880, 878, 884, 886, 881, 887, 882, 888, 883, 886, + 889, 889, 890, 891, 891, 892, 888, 50, 893, 894, + 895, 890, 893, 897, 894, 896, 896, 900, 901, 901, + 887, 897, 903, 895, 892, 904, 900, 902, 902, 905, + 904, 906, 907, 905, 903, 908, 909, 907, 910, 911, + 912, 913, 915, 916, 928, 915, 906, 918, 918, 928, + 917, 921, 912, 919, 919, 909, 916, 910, 920, 920, + 911, 908, 913, 917, 921, 922, 922, 923, 923, 924, + 925, 925, 926, 926, 929, 929, 930, 931, 931, 932, + 933, 934, 935, 935, 934, 937, 933, 941, 924, 936, + + 936, 938, 938, 940, 940, 930, 943, 932, 935, 942, + 942, 944, 945, 947, 937, 946, 944, 948, 943, 950, + 946, 949, 953, 941, 950, 951, 948, 955, 947, 951, + 949, 956, 956, 945, 957, 960, 955, 958, 958, 957, + 961, 963, 953, 964, 963, 966, 958, 970, 964, 966, + 960, 971, 961, 965, 965, 967, 968, 968, 967, 969, + 972, 973, 974, 975, 969, 972, 973, 970, 974, 976, + 977, 971, 994, 978, 976, 978, 981, 981, 977, 975, + 984, 984, 987, 987, 989, 989, 991, 992, 992, 993, + 995, 991, 997, 997, 994, 995, 1000, 1001, 1002, 1001, + + 1004, 1000, 1005, 1002, 1006, 993, 1003, 1003, 1009, 1007, + 1008, 1012, 1004, 1010, 1010, 1011, 1006, 1014, 1013, 1015, + 1005, 1007, 1008, 1017, 1011, 1016, 1018, 1019, 1009, 1022, + 1014, 1018, 1019, 1020, 1020, 1023, 1023, 1012, 1013, 1016, + 1026, 1017, 1027, 1015, 1025, 1025, 1028, 1022, 1030, 1026, + 1029, 1031, 1031, 1032, 1033, 1034, 1035, 1039, 1032, 1040, + 1027, 1043, 1040, 1042, 1028, 1046, 1029, 1030, 1050, 1033, + 1041, 1041, 1045, 1045, 1034, 45, 1035, 1039, 1042, 1043, + 1047, 1047, 1049, 1049, 1046, 1051, 1052, 1053, 1054, 1056, + 1050, 1052, 1053, 1057, 1051, 1058, 1054, 1059, 1057, 40, + + 1058, 1060, 1060, 1062, 1056, 1061, 1061, 1067, 1062, 1063, + 1063, 1066, 1059, 1064, 1064, 1069, 1066, 1070, 1069, 1067, + 1071, 1072, 1072, 1073, 1075, 1076, 1070, 1077, 1077, 1071, + 1078, 1080, 1073, 1079, 1083, 1087, 1080, 1082, 14, 1078, + 1092, 1079, 1089, 1075, 1076, 1089, 1082, 1083, 1085, 1085, + 1088, 1088, 1090, 1090, 1093, 1087, 1091, 1091, 1092, 1094, + 1095, 1095, 1096, 1099, 1094, 1102, 1096, 1103, 1093, 1099, + 1104, 1105, 1106, 1107, 1108, 1103, 1109, 1106, 1110, 1112, + 1120, 1113, 1112, 13, 1102, 1109, 1116, 1105, 1115, 1104, + 1114, 1114, 1115, 1107, 1118, 1116, 1119, 1123, 1110, 1113, + + 1108, 1125, 1123, 1118, 1127, 1120, 1124, 1124, 1119, 1127, + 1125, 1128, 1129, 1130, 1131, 1131, 1132, 1133, 1134, 1135, + 1128, 1136, 1137, 1142, 1135, 0, 1134, 1143, 1130, 1138, + 1138, 1129, 1132, 1139, 1141, 1141, 1133, 1146, 1139, 1144, + 1144, 1137, 1147, 1142, 1145, 1145, 1148, 1136, 1150, 1143, + 1149, 1149, 1151, 1151, 1147, 1152, 1146, 1154, 1155, 1155, + 1150, 1167, 1154, 1156, 1156, 1158, 1148, 1157, 1157, 1167, + 1158, 1159, 1159, 1173, 1152, 1161, 1161, 1163, 1163, 1164, + 1168, 1168, 1169, 1171, 1164, 1174, 1183, 1169, 1171, 1174, + 1178, 1178, 1180, 1173, 1182, 1182, 1180, 1185, 1186, 1186, + + 1192, 1183, 1187, 1187, 1188, 1188, 1190, 1190, 1193, 1193, + 1198, 1199, 1192, 1201, 1198, 1185, 1200, 1200, 1203, 1205, + 1204, 0, 1201, 1206, 1206, 0, 0, 0, 0, 0, + 0, 1199, 0, 1203, 1204, 0, 0, 0, 1205, 1209, + 1209, 1209, 1209, 1209, 1209, 1209, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, + 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1213, 1213, 1213, + 1213, 1213, 1213, 1213, 1215, 1215, 0, 1215, 1215, 1215, + 1215, 1216, 1216, 0, 0, 0, 1216, 1216, 1217, 1217, + 0, 0, 1217, 0, 1217, 1218, 0, 0, 0, 0, + + 0, 1218, 1219, 1219, 0, 0, 0, 1219, 1219, 1220, + 0, 0, 0, 0, 0, 1220, 1221, 1221, 0, 1221, + 1221, 1221, 1221, 1222, 1222, 0, 1222, 1222, 1222, 1222, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, + 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208 } ; static yy_state_type yy_last_accepting_state; @@ -1496,7 +1500,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 1498 "" +#line 1502 "" #define INITIAL 0 #define quotedstring 1 @@ -1683,7 +1687,7 @@ YY_DECL #line 123 "util/configlexer.lex" -#line 1685 "" +#line 1689 "" if ( !(yy_init) ) { @@ -1742,13 +1746,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 >= 1202 ) + if ( yy_current_state >= 1209 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2414 ); + while ( yy_base[yy_current_state] != 2431 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2033,314 +2037,319 @@ YY_RULE_SETUP case 52: YY_RULE_SETUP #line 178 "util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 53: YY_RULE_SETUP #line 179 "util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 54: YY_RULE_SETUP #line 180 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 55: YY_RULE_SETUP #line 181 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 56: YY_RULE_SETUP #line 182 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 57: YY_RULE_SETUP #line 183 "util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 58: YY_RULE_SETUP #line 184 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 59: YY_RULE_SETUP #line 185 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 60: YY_RULE_SETUP #line 186 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 61: YY_RULE_SETUP #line 187 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 62: YY_RULE_SETUP #line 188 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 63: YY_RULE_SETUP #line 189 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 64: YY_RULE_SETUP #line 190 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 65: YY_RULE_SETUP #line 191 "util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 66: YY_RULE_SETUP #line 192 "util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 67: YY_RULE_SETUP #line 193 "util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 68: YY_RULE_SETUP #line 194 "util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 69: YY_RULE_SETUP #line 195 "util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 70: YY_RULE_SETUP #line 196 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 71: YY_RULE_SETUP #line 197 "util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 72: YY_RULE_SETUP #line 198 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 73: YY_RULE_SETUP #line 199 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 74: YY_RULE_SETUP #line 200 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 75: YY_RULE_SETUP #line 201 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 76: YY_RULE_SETUP #line 202 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 77: YY_RULE_SETUP #line 203 "util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 78: YY_RULE_SETUP #line 204 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 79: YY_RULE_SETUP #line 205 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 80: YY_RULE_SETUP #line 206 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 81: YY_RULE_SETUP #line 207 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 82: YY_RULE_SETUP #line 208 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 83: YY_RULE_SETUP #line 209 "util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 84: YY_RULE_SETUP #line 210 "util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 85: YY_RULE_SETUP -#line 212 "util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 211 "util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 86: YY_RULE_SETUP #line 213 "util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 87: YY_RULE_SETUP #line 214 "util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 88: YY_RULE_SETUP #line 215 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 89: YY_RULE_SETUP #line 216 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 90: YY_RULE_SETUP #line 217 "util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 91: YY_RULE_SETUP #line 218 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 92: YY_RULE_SETUP #line 219 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 93: YY_RULE_SETUP #line 220 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 94: YY_RULE_SETUP #line 221 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 95: YY_RULE_SETUP #line 222 "util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 96: YY_RULE_SETUP #line 223 "util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 97: YY_RULE_SETUP #line 224 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 98: YY_RULE_SETUP #line 225 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 99: YY_RULE_SETUP #line 226 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 100: YY_RULE_SETUP #line 227 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 101: YY_RULE_SETUP #line 228 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 102: YY_RULE_SETUP #line 229 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 103: YY_RULE_SETUP #line 230 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 104: YY_RULE_SETUP #line 231 "util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 105: YY_RULE_SETUP #line 232 "util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 106: YY_RULE_SETUP #line 233 "util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 107: -/* rule 107 can match eol */ YY_RULE_SETUP #line 234 "util/configlexer.lex" +{ YDVAR(1, VAR_DOMAIN_INSECURE) } + YY_BREAK +case 108: +/* rule 108 can match eol */ +YY_RULE_SETUP +#line 235 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 108: +case 109: YY_RULE_SETUP -#line 237 "util/configlexer.lex" +#line 238 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 238 "util/configlexer.lex" +#line 239 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 109: +case 110: YY_RULE_SETUP -#line 243 "util/configlexer.lex" +#line 244 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 110: -/* rule 110 can match eol */ +case 111: +/* rule 111 can match eol */ YY_RULE_SETUP -#line 244 "util/configlexer.lex" +#line 245 "util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 111: +case 112: YY_RULE_SETUP -#line 246 "util/configlexer.lex" +#line 247 "util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2353,34 +2362,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 112: +case 113: YY_RULE_SETUP -#line 258 "util/configlexer.lex" +#line 259 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 259 "util/configlexer.lex" +#line 260 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 113: +case 114: YY_RULE_SETUP -#line 264 "util/configlexer.lex" +#line 265 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 114: -/* rule 114 can match eol */ +case 115: +/* rule 115 can match eol */ YY_RULE_SETUP -#line 265 "util/configlexer.lex" +#line 266 "util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 115: +case 116: YY_RULE_SETUP -#line 267 "util/configlexer.lex" +#line 268 "util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -2393,38 +2402,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 116: +case 117: YY_RULE_SETUP -#line 279 "util/configlexer.lex" +#line 280 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 281 "util/configlexer.lex" +#line 282 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 117: -YY_RULE_SETUP -#line 285 "util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 118: -/* rule 118 can match eol */ YY_RULE_SETUP #line 286 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 119: +/* rule 119 can match eol */ YY_RULE_SETUP #line 287 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 120: YY_RULE_SETUP #line 288 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 289 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -2432,27 +2441,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 293 "util/configlexer.lex" +#line 294 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 121: +case 122: YY_RULE_SETUP -#line 297 "util/configlexer.lex" +#line 298 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 122: -/* rule 122 can match eol */ +case 123: +/* rule 123 can match eol */ YY_RULE_SETUP -#line 298 "util/configlexer.lex" +#line 299 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 123: +case 124: YY_RULE_SETUP -#line 300 "util/configlexer.lex" +#line 301 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -2462,7 +2471,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 306 "util/configlexer.lex" +#line 307 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -2473,33 +2482,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 124: +case 125: YY_RULE_SETUP -#line 316 "util/configlexer.lex" +#line 317 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 125: +case 126: YY_RULE_SETUP -#line 320 "util/configlexer.lex" +#line 321 "util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 126: +case 127: YY_RULE_SETUP -#line 324 "util/configlexer.lex" +#line 325 "util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 127: +case 128: YY_RULE_SETUP -#line 328 "util/configlexer.lex" +#line 329 "util/configlexer.lex" ECHO; YY_BREAK -#line 2501 "" +#line 2510 "" case YY_END_OF_BUFFER: { @@ -2789,7 +2798,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1202 ) + if ( yy_current_state >= 1209 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2817,11 +2826,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 >= 1202 ) + if ( yy_current_state >= 1209 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 1201); + yy_is_jam = (yy_current_state == 1208); return yy_is_jam ? 0 : yy_current_state; } @@ -3458,7 +3467,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 328 "util/configlexer.lex" +#line 329 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index f3e72d3ae..f3616ff84 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -175,6 +175,7 @@ use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } unwanted-reply-threshold{COLON} { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } private-address{COLON} { YDVAR(1, VAR_PRIVATE_ADDRESS) } private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } +prefetch{COLON} { YDVAR(1, VAR_PREFETCH) } stub-zone{COLON} { YDVAR(0, VAR_STUB_ZONE) } name{COLON} { YDVAR(1, VAR_NAME) } stub-addr{COLON} { YDVAR(1, VAR_STUB_ADDR) } diff --git a/util/configparser.c b/util/configparser.c index af9ed8ec3..9436b3df2 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -235,7 +235,8 @@ extern struct config_parser_state* cfg_parser; VAR_ADD_HOLDDOWN = 366, VAR_DEL_HOLDDOWN = 367, VAR_SO_RCVBUF = 368, - VAR_EDNS_BUFFER_SIZE = 369 + VAR_EDNS_BUFFER_SIZE = 369, + VAR_PREFETCH = 370 }; #endif /* Tokens. */ @@ -351,6 +352,7 @@ extern struct config_parser_state* cfg_parser; #define VAR_DEL_HOLDDOWN 367 #define VAR_SO_RCVBUF 368 #define VAR_EDNS_BUFFER_SIZE 369 +#define VAR_PREFETCH 370 @@ -367,7 +369,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 371 "util/configparser.c" +#line 373 "util/configparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -379,7 +381,7 @@ typedef union YYSTYPE /* Line 264 of yacc.c */ -#line 383 "util/configparser.c" +#line 385 "util/configparser.c" #ifdef short # undef short @@ -597,17 +599,17 @@ union yyalloc #define YYLAST 209 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 115 +#define YYNTOKENS 116 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 118 +#define YYNNTS 119 /* YYNRULES -- Number of rules. */ -#define YYNRULES 223 +#define YYNRULES 225 /* YYNRULES -- Number of states. */ -#define YYNSTATES 326 +#define YYNSTATES 329 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 369 +#define YYMAXUTOK 370 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -651,7 +653,8 @@ static const yytype_uint8 yytranslate[] = 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114 + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115 }; #if YYDEBUG @@ -668,81 +671,81 @@ static const yytype_uint16 yyprhs[] = 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, - 184, 186, 188, 190, 192, 194, 196, 198, 200, 203, - 204, 206, 208, 210, 212, 214, 217, 218, 220, 222, - 224, 227, 230, 233, 236, 239, 242, 245, 248, 251, - 254, 257, 260, 263, 266, 269, 272, 275, 278, 281, - 284, 287, 290, 293, 296, 299, 302, 305, 308, 311, - 314, 317, 320, 323, 326, 329, 332, 335, 338, 341, - 344, 347, 350, 353, 356, 359, 362, 365, 368, 371, - 374, 377, 380, 383, 386, 389, 392, 395, 398, 401, - 404, 407, 410, 413, 416, 420, 423, 426, 429, 432, - 435, 438, 441, 444, 447, 450, 453, 456, 459, 462, - 465, 468, 471, 475, 478, 481, 484, 487, 490, 493, - 496, 499, 502, 504, 507, 508, 510, 512, 514, 516, - 518, 520, 522, 525, 528, 531, 534, 537, 540, 543, - 545, 548, 549, 551 + 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, + 205, 206, 208, 210, 212, 214, 216, 219, 220, 222, + 224, 226, 229, 232, 235, 238, 241, 244, 247, 250, + 253, 256, 259, 262, 265, 268, 271, 274, 277, 280, + 283, 286, 289, 292, 295, 298, 301, 304, 307, 310, + 313, 316, 319, 322, 325, 328, 331, 334, 337, 340, + 343, 346, 349, 352, 355, 358, 361, 364, 367, 370, + 373, 376, 379, 382, 385, 388, 391, 394, 397, 400, + 403, 406, 409, 412, 415, 418, 421, 425, 428, 431, + 434, 437, 440, 443, 446, 449, 452, 455, 458, 461, + 464, 467, 470, 473, 476, 480, 483, 486, 489, 492, + 495, 498, 501, 504, 507, 509, 512, 513, 515, 517, + 519, 521, 523, 525, 527, 530, 533, 536, 539, 542, + 545, 548, 550, 553, 554, 556 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 116, 0, -1, -1, 116, 117, -1, 118, 119, -1, - 121, 122, -1, 124, 125, -1, 229, 230, -1, 219, - 220, -1, 11, -1, 119, 120, -1, -1, 127, -1, - 128, -1, 132, -1, 135, -1, 141, -1, 142, -1, - 143, -1, 144, -1, 133, -1, 148, -1, 149, -1, - 150, -1, 151, -1, 152, -1, 168, -1, 169, -1, - 170, -1, 172, -1, 173, -1, 138, -1, 174, -1, - 175, -1, 178, -1, 176, -1, 177, -1, 179, -1, - 180, -1, 181, -1, 189, -1, 161, -1, 162, -1, - 163, -1, 164, -1, 182, -1, 192, -1, 157, -1, - 159, -1, 193, -1, 198, -1, 199, -1, 200, -1, - 139, -1, 167, -1, 206, -1, 207, -1, 158, -1, - 202, -1, 146, -1, 134, -1, 153, -1, 190, -1, - 196, -1, 183, -1, 191, -1, 209, -1, 210, -1, - 140, -1, 129, -1, 145, -1, 185, -1, 130, -1, - 136, -1, 137, -1, 154, -1, 155, -1, 208, -1, - 184, -1, 186, -1, 187, -1, 131, -1, 211, -1, - 171, -1, 188, -1, 147, -1, 160, -1, 194, -1, - 195, -1, 197, -1, 201, -1, 156, -1, 203, -1, - 204, -1, 205, -1, 165, -1, 166, -1, 38, -1, - 122, 123, -1, -1, 212, -1, 213, -1, 214, -1, - 215, -1, 44, -1, 125, 126, -1, -1, 216, -1, - 217, -1, 218, -1, 13, 10, -1, 12, 10, -1, - 76, 10, -1, 79, 10, -1, 96, 10, -1, 14, - 10, -1, 16, 10, -1, 67, 10, -1, 15, 10, - -1, 80, 10, -1, 81, 10, -1, 31, 10, -1, - 60, 10, -1, 75, 10, -1, 17, 10, -1, 18, - 10, -1, 19, 10, -1, 20, 10, -1, 77, 10, - -1, 66, 10, -1, 101, 10, -1, 21, 10, -1, - 22, 10, -1, 23, 10, -1, 24, 10, -1, 25, - 10, -1, 68, 10, -1, 82, 10, -1, 83, 10, - -1, 109, 10, -1, 54, 10, -1, 64, 10, -1, - 55, 10, -1, 102, 10, -1, 48, 10, -1, 49, - 10, -1, 50, 10, -1, 51, 10, -1, 113, 10, - -1, 114, 10, -1, 61, 10, -1, 26, 10, -1, - 27, 10, -1, 28, 10, -1, 98, 10, -1, 29, - 10, -1, 30, 10, -1, 32, 10, -1, 33, 10, - -1, 35, 10, -1, 36, 10, -1, 34, 10, -1, - 41, 10, -1, 42, 10, -1, 43, 10, -1, 52, - 10, -1, 71, 10, -1, 85, 10, -1, 78, 10, - -1, 86, 10, -1, 87, 10, -1, 100, 10, -1, - 47, 10, -1, 69, 10, -1, 72, 10, 10, -1, - 53, 10, -1, 56, 10, -1, 105, 10, -1, 106, - 10, -1, 70, 10, -1, 107, 10, -1, 57, 10, - -1, 58, 10, -1, 59, 10, -1, 108, 10, -1, - 65, 10, -1, 111, 10, -1, 112, 10, -1, 110, - 10, -1, 62, 10, -1, 63, 10, -1, 84, 10, - -1, 73, 10, 10, -1, 74, 10, -1, 97, 10, - -1, 37, 10, -1, 39, 10, -1, 40, 10, -1, - 99, 10, -1, 37, 10, -1, 45, 10, -1, 46, - 10, -1, 88, -1, 220, 221, -1, -1, 222, -1, - 224, -1, 223, -1, 225, -1, 226, -1, 227, -1, - 228, -1, 89, 10, -1, 91, 10, -1, 90, 10, - -1, 92, 10, -1, 93, 10, -1, 94, 10, -1, - 95, 10, -1, 103, -1, 230, 231, -1, -1, 232, - -1, 104, 10, -1 + 117, 0, -1, -1, 117, 118, -1, 119, 120, -1, + 122, 123, -1, 125, 126, -1, 231, 232, -1, 221, + 222, -1, 11, -1, 120, 121, -1, -1, 128, -1, + 129, -1, 133, -1, 136, -1, 142, -1, 143, -1, + 144, -1, 145, -1, 134, -1, 149, -1, 150, -1, + 151, -1, 152, -1, 153, -1, 169, -1, 170, -1, + 171, -1, 173, -1, 174, -1, 139, -1, 175, -1, + 176, -1, 179, -1, 177, -1, 178, -1, 180, -1, + 181, -1, 182, -1, 191, -1, 162, -1, 163, -1, + 164, -1, 165, -1, 183, -1, 194, -1, 158, -1, + 160, -1, 195, -1, 200, -1, 201, -1, 202, -1, + 140, -1, 168, -1, 208, -1, 209, -1, 159, -1, + 204, -1, 147, -1, 135, -1, 154, -1, 192, -1, + 198, -1, 184, -1, 193, -1, 211, -1, 212, -1, + 141, -1, 130, -1, 146, -1, 186, -1, 131, -1, + 137, -1, 138, -1, 155, -1, 156, -1, 210, -1, + 185, -1, 187, -1, 188, -1, 132, -1, 213, -1, + 172, -1, 190, -1, 148, -1, 161, -1, 196, -1, + 197, -1, 199, -1, 203, -1, 157, -1, 205, -1, + 206, -1, 207, -1, 166, -1, 167, -1, 189, -1, + 38, -1, 123, 124, -1, -1, 214, -1, 215, -1, + 216, -1, 217, -1, 44, -1, 126, 127, -1, -1, + 218, -1, 219, -1, 220, -1, 13, 10, -1, 12, + 10, -1, 76, 10, -1, 79, 10, -1, 96, 10, + -1, 14, 10, -1, 16, 10, -1, 67, 10, -1, + 15, 10, -1, 80, 10, -1, 81, 10, -1, 31, + 10, -1, 60, 10, -1, 75, 10, -1, 17, 10, + -1, 18, 10, -1, 19, 10, -1, 20, 10, -1, + 77, 10, -1, 66, 10, -1, 101, 10, -1, 21, + 10, -1, 22, 10, -1, 23, 10, -1, 24, 10, + -1, 25, 10, -1, 68, 10, -1, 82, 10, -1, + 83, 10, -1, 109, 10, -1, 54, 10, -1, 64, + 10, -1, 55, 10, -1, 102, 10, -1, 48, 10, + -1, 49, 10, -1, 50, 10, -1, 51, 10, -1, + 113, 10, -1, 114, 10, -1, 61, 10, -1, 26, + 10, -1, 27, 10, -1, 28, 10, -1, 98, 10, + -1, 29, 10, -1, 30, 10, -1, 32, 10, -1, + 33, 10, -1, 35, 10, -1, 36, 10, -1, 34, + 10, -1, 41, 10, -1, 42, 10, -1, 43, 10, + -1, 52, 10, -1, 71, 10, -1, 85, 10, -1, + 78, 10, -1, 86, 10, -1, 87, 10, -1, 115, + 10, -1, 100, 10, -1, 47, 10, -1, 69, 10, + -1, 72, 10, 10, -1, 53, 10, -1, 56, 10, + -1, 105, 10, -1, 106, 10, -1, 70, 10, -1, + 107, 10, -1, 57, 10, -1, 58, 10, -1, 59, + 10, -1, 108, 10, -1, 65, 10, -1, 111, 10, + -1, 112, 10, -1, 110, 10, -1, 62, 10, -1, + 63, 10, -1, 84, 10, -1, 73, 10, 10, -1, + 74, 10, -1, 97, 10, -1, 37, 10, -1, 39, + 10, -1, 40, 10, -1, 99, 10, -1, 37, 10, + -1, 45, 10, -1, 46, 10, -1, 88, -1, 222, + 223, -1, -1, 224, -1, 226, -1, 225, -1, 227, + -1, 228, -1, 229, -1, 230, -1, 89, 10, -1, + 91, 10, -1, 90, 10, -1, 92, 10, -1, 93, + 10, -1, 94, 10, -1, 95, 10, -1, 103, -1, + 232, 233, -1, -1, 234, -1, 104, 10, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -757,20 +760,20 @@ static const yytype_uint16 yyrline[] = 140, 140, 141, 141, 142, 142, 143, 143, 143, 144, 144, 145, 145, 146, 146, 147, 147, 147, 148, 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 153, - 153, 154, 154, 155, 155, 155, 156, 158, 170, 171, - 172, 172, 172, 172, 174, 186, 187, 188, 188, 188, - 190, 199, 208, 219, 228, 237, 246, 259, 274, 283, - 292, 301, 310, 319, 328, 337, 346, 355, 364, 373, - 387, 396, 403, 410, 417, 425, 432, 439, 446, 453, - 461, 469, 477, 484, 491, 500, 509, 516, 523, 531, - 544, 555, 563, 576, 585, 594, 602, 615, 624, 633, - 642, 651, 664, 671, 681, 691, 701, 711, 721, 731, - 738, 745, 754, 761, 771, 785, 792, 810, 823, 836, - 845, 854, 863, 873, 883, 892, 899, 908, 917, 926, - 934, 947, 955, 975, 982, 997, 1004, 1011, 1018, 1028, - 1035, 1042, 1049, 1054, 1055, 1056, 1056, 1056, 1057, 1057, - 1057, 1058, 1060, 1070, 1079, 1086, 1093, 1100, 1107, 1114, - 1119, 1120, 1121, 1123 + 153, 154, 154, 155, 155, 155, 156, 156, 158, 170, + 171, 172, 172, 172, 172, 174, 186, 187, 188, 188, + 188, 190, 199, 208, 219, 228, 237, 246, 259, 274, + 283, 292, 301, 310, 319, 328, 337, 346, 355, 364, + 373, 387, 396, 403, 410, 417, 425, 432, 439, 446, + 453, 461, 469, 477, 484, 491, 500, 509, 516, 523, + 531, 544, 555, 563, 576, 585, 594, 602, 615, 624, + 633, 642, 651, 664, 671, 681, 691, 701, 711, 721, + 731, 738, 745, 754, 763, 770, 780, 794, 801, 819, + 832, 845, 854, 863, 872, 882, 892, 901, 908, 917, + 926, 935, 943, 956, 964, 984, 991, 1006, 1013, 1020, + 1027, 1037, 1044, 1051, 1058, 1063, 1064, 1065, 1065, 1065, + 1066, 1066, 1066, 1067, 1069, 1079, 1088, 1095, 1102, 1109, + 1116, 1123, 1128, 1129, 1130, 1132 }; #endif @@ -815,17 +818,17 @@ static const char *const yytname[] = "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", "VAR_SO_RCVBUF", - "VAR_EDNS_BUFFER_SIZE", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_extended_statistics", "server_port", "server_interface", - "server_outgoing_interface", "server_outgoing_range", - "server_outgoing_port_permit", "server_outgoing_port_avoid", - "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_do_daemonize", + "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", "$accept", "toplevelvars", + "toplevelvar", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "server_num_threads", + "server_verbosity", "server_statistics_interval", + "server_statistics_cumulative", "server_extended_statistics", + "server_port", "server_interface", "server_outgoing_interface", + "server_outgoing_range", "server_outgoing_port_permit", + "server_outgoing_port_avoid", "server_outgoing_num_tcp", + "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", + "server_do_ip6", "server_do_udp", "server_do_tcp", "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", "server_chroot", "server_username", "server_directory", "server_logfile", "server_pidfile", "server_root_hints", "server_dlv_anchor_file", @@ -843,7 +846,7 @@ static const char *const yytname[] = "server_harden_short_bufsize", "server_harden_large_queries", "server_harden_glue", "server_harden_dnssec_stripped", "server_harden_referral_path", "server_use_caps_for_id", - "server_private_address", "server_private_domain", + "server_private_address", "server_private_domain", "server_prefetch", "server_unwanted_reply_threshold", "server_do_not_query_address", "server_do_not_query_localhost", "server_access_control", "server_module_conf", "server_val_override_date", @@ -879,24 +882,24 @@ static const yytype_uint16 yytoknum[] = 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369 + 365, 366, 367, 368, 369, 370 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 115, 116, 116, 117, 117, 117, 117, 117, 118, - 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 121, 122, 122, - 123, 123, 123, 123, 124, 125, 125, 126, 126, 126, + 0, 116, 117, 117, 118, 118, 118, 118, 118, 119, + 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 122, 123, + 123, 124, 124, 124, 124, 125, 126, 126, 127, 127, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, @@ -906,9 +909,9 @@ static const yytype_uint8 yyr1[] = 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, 220, 221, 221, 221, 221, 221, - 221, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 230, 231, 232 + 217, 218, 219, 220, 221, 222, 222, 223, 223, 223, + 223, 223, 223, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 232, 233, 234 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -923,20 +926,20 @@ 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, 2, 0, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 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, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 2 + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 0, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -944,8 +947,8 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 2, 0, 1, 9, 97, 104, 202, 219, 3, 11, - 99, 106, 204, 221, 4, 5, 6, 8, 7, 0, + 2, 0, 1, 9, 98, 105, 204, 221, 3, 11, + 100, 107, 206, 223, 4, 5, 6, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -954,103 +957,103 @@ static const yytype_uint8 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 12, 13, 69, 72, 81, - 14, 20, 60, 15, 73, 74, 31, 53, 68, 16, - 17, 18, 19, 70, 59, 85, 21, 22, 23, 24, - 25, 61, 75, 76, 91, 47, 57, 48, 86, 41, - 42, 43, 44, 95, 96, 54, 26, 27, 28, 83, - 29, 30, 32, 33, 35, 36, 34, 37, 38, 39, - 45, 64, 78, 71, 79, 80, 84, 40, 62, 65, - 46, 49, 87, 88, 63, 89, 50, 51, 52, 90, - 58, 92, 93, 94, 55, 56, 77, 66, 67, 82, - 0, 0, 0, 0, 98, 100, 101, 102, 103, 0, - 0, 0, 105, 107, 108, 109, 0, 0, 0, 0, - 0, 0, 0, 203, 205, 207, 206, 208, 209, 210, - 211, 0, 220, 222, 111, 110, 115, 118, 116, 124, - 125, 126, 127, 131, 132, 133, 134, 135, 151, 152, - 153, 155, 156, 121, 157, 158, 161, 159, 160, 162, - 163, 164, 172, 144, 145, 146, 147, 165, 175, 140, - 142, 176, 181, 182, 183, 122, 150, 189, 190, 141, - 185, 129, 117, 136, 173, 179, 166, 0, 0, 193, - 123, 112, 128, 168, 113, 119, 120, 137, 138, 191, - 167, 169, 170, 114, 194, 154, 171, 130, 143, 177, - 178, 180, 184, 139, 188, 186, 187, 148, 149, 195, - 196, 197, 198, 199, 200, 201, 212, 214, 213, 215, - 216, 217, 218, 223, 174, 192 + 0, 0, 0, 0, 0, 10, 12, 13, 69, 72, + 81, 14, 20, 60, 15, 73, 74, 31, 53, 68, + 16, 17, 18, 19, 70, 59, 85, 21, 22, 23, + 24, 25, 61, 75, 76, 91, 47, 57, 48, 86, + 41, 42, 43, 44, 95, 96, 54, 26, 27, 28, + 83, 29, 30, 32, 33, 35, 36, 34, 37, 38, + 39, 45, 64, 78, 71, 79, 80, 97, 84, 40, + 62, 65, 46, 49, 87, 88, 63, 89, 50, 51, + 52, 90, 58, 92, 93, 94, 55, 56, 77, 66, + 67, 82, 0, 0, 0, 0, 99, 101, 102, 103, + 104, 0, 0, 0, 106, 108, 109, 110, 0, 0, + 0, 0, 0, 0, 0, 205, 207, 209, 208, 210, + 211, 212, 213, 0, 222, 224, 112, 111, 116, 119, + 117, 125, 126, 127, 128, 132, 133, 134, 135, 136, + 152, 153, 154, 156, 157, 122, 158, 159, 162, 160, + 161, 163, 164, 165, 174, 145, 146, 147, 148, 166, + 177, 141, 143, 178, 183, 184, 185, 123, 151, 191, + 192, 142, 187, 130, 118, 137, 175, 181, 167, 0, + 0, 195, 124, 113, 129, 169, 114, 120, 121, 138, + 139, 193, 168, 170, 171, 115, 196, 155, 173, 131, + 144, 179, 180, 182, 186, 140, 190, 188, 189, 149, + 150, 172, 197, 198, 199, 200, 201, 202, 203, 214, + 216, 215, 217, 218, 219, 220, 225, 176, 194 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 8, 9, 14, 104, 10, 15, 194, 11, - 16, 202, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 195, 196, 197, - 198, 203, 204, 205, 12, 17, 213, 214, 215, 216, - 217, 218, 219, 220, 13, 18, 222, 223 + -1, 1, 8, 9, 14, 105, 10, 15, 196, 11, + 16, 204, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 197, 198, + 199, 200, 205, 206, 207, 12, 17, 215, 216, 217, + 218, 219, 220, 221, 222, 13, 18, 224, 225 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -103 +#define YYPACT_NINF -80 static const yytype_int16 yypact[] = { - -103, 0, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, 92, -36, -32, -74, -102, -4, - -3, -2, -1, 2, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 119, 120, 121, 122, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - 126, 127, 128, 170, -103, -103, -103, -103, -103, 171, - 172, 173, -103, -103, -103, -103, 174, 175, 176, 177, - 181, 185, 186, -103, -103, -103, -103, -103, -103, -103, - -103, 197, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, 198, 199, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103 + -80, 76, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -12, 40, 46, 15, -79, 16, + 17, 18, 22, 23, 24, 68, 71, 72, 101, 102, + 103, 105, 106, 107, 108, 109, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, 183, 184, 185, 186, -80, -80, -80, -80, + -80, 187, 188, 189, -80, -80, -80, -80, 190, 191, + 192, 193, 194, 195, 196, -80, -80, -80, -80, -80, + -80, -80, -80, 197, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, 198, + 199, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103 + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1060,60 +1063,60 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { - 2, 190, 221, 191, 192, 199, 224, 225, 226, 227, - 0, 3, 228, 200, 201, 206, 207, 208, 209, 210, - 211, 212, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 4, 245, - 246, 247, 248, 249, 5, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 193, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 6, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 0, 7, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 305, - 306, 307, 308, 44, 45, 46, 309, 310, 311, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 312, 313, 314, 315, 316, 317, 318, 319, 88, 89, - 90, 320, 91, 92, 93, 321, 322, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 323, 324, 325 + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 223, 226, 227, 228, 44, + 45, 46, 229, 230, 231, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 2, 192, 232, 193, + 194, 233, 234, 201, 88, 89, 90, 3, 91, 92, + 93, 202, 203, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 208, 209, 210, 211, 212, 213, + 214, 235, 236, 237, 4, 238, 239, 240, 241, 242, + 5, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 195, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 6, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 7, + 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 }; -static const yytype_int8 yycheck[] = +static const yytype_uint8 yycheck[] = { - 0, 37, 104, 39, 40, 37, 10, 10, 10, 10, - -1, 11, 10, 45, 46, 89, 90, 91, 92, 93, - 94, 95, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 38, 10, - 10, 10, 10, 10, 44, 10, 10, 10, 10, 10, + 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, 104, 10, 10, 10, 41, + 42, 43, 10, 10, 10, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 0, 37, 10, 39, + 40, 10, 10, 37, 96, 97, 98, 11, 100, 101, + 102, 45, 46, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 89, 90, 91, 92, 93, 94, + 95, 10, 10, 10, 38, 10, 10, 10, 10, 10, + 44, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 99, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 99, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 88, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 103, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 88, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, -1, 103, 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, 10, - 10, 10, 10, 41, 42, 43, 10, 10, 10, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 10, 10, 10, 10, 10, 10, 10, 10, 96, 97, - 98, 10, 100, 101, 102, 10, 10, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 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_uint8 yystos[] = { - 0, 116, 0, 11, 38, 44, 88, 103, 117, 118, - 121, 124, 219, 229, 119, 122, 125, 220, 230, 12, + 0, 117, 0, 11, 38, 44, 88, 103, 118, 119, + 122, 125, 221, 231, 120, 123, 126, 222, 232, 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, 41, 42, 43, 47, 48, 49, @@ -1122,7 +1125,7 @@ static const yytype_uint8 yystos[] = 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 96, 97, 98, 100, 101, 102, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 120, 127, 128, 129, 130, 131, + 111, 112, 113, 114, 115, 121, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, @@ -1131,10 +1134,10 @@ static const yytype_uint8 yystos[] = 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, - 37, 39, 40, 99, 123, 212, 213, 214, 215, 37, - 45, 46, 126, 216, 217, 218, 89, 90, 91, 92, - 93, 94, 95, 221, 222, 223, 224, 225, 226, 227, - 228, 104, 231, 232, 10, 10, 10, 10, 10, 10, + 212, 213, 37, 39, 40, 99, 124, 214, 215, 216, + 217, 37, 45, 46, 127, 218, 219, 220, 89, 90, + 91, 92, 93, 94, 95, 223, 224, 225, 226, 227, + 228, 229, 230, 104, 233, 234, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1144,7 +1147,7 @@ static const yytype_uint8 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10 }; #define yyerrok (yyerrstatus = 0) @@ -1964,7 +1967,7 @@ yyreduce: } break; - case 97: + case 98: /* Line 1455 of yacc.c */ #line 159 "util/configparser.y" @@ -1980,7 +1983,7 @@ yyreduce: } break; - case 104: + case 105: /* Line 1455 of yacc.c */ #line 175 "util/configparser.y" @@ -1996,7 +1999,7 @@ yyreduce: } break; - case 110: + case 111: /* Line 1455 of yacc.c */ #line 191 "util/configparser.y" @@ -2009,7 +2012,7 @@ yyreduce: } break; - case 111: + case 112: /* Line 1455 of yacc.c */ #line 200 "util/configparser.y" @@ -2022,7 +2025,7 @@ yyreduce: } break; - case 112: + case 113: /* Line 1455 of yacc.c */ #line 209 "util/configparser.y" @@ -2037,7 +2040,7 @@ yyreduce: } break; - case 113: + case 114: /* Line 1455 of yacc.c */ #line 220 "util/configparser.y" @@ -2050,7 +2053,7 @@ yyreduce: } break; - case 114: + case 115: /* Line 1455 of yacc.c */ #line 229 "util/configparser.y" @@ -2063,7 +2066,7 @@ yyreduce: } break; - case 115: + case 116: /* Line 1455 of yacc.c */ #line 238 "util/configparser.y" @@ -2076,7 +2079,7 @@ yyreduce: } break; - case 116: + case 117: /* Line 1455 of yacc.c */ #line 247 "util/configparser.y" @@ -2093,7 +2096,7 @@ yyreduce: } break; - case 117: + case 118: /* Line 1455 of yacc.c */ #line 260 "util/configparser.y" @@ -2112,7 +2115,7 @@ yyreduce: } break; - case 118: + case 119: /* Line 1455 of yacc.c */ #line 275 "util/configparser.y" @@ -2125,7 +2128,7 @@ yyreduce: } break; - case 119: + case 120: /* Line 1455 of yacc.c */ #line 284 "util/configparser.y" @@ -2138,7 +2141,7 @@ yyreduce: } break; - case 120: + case 121: /* Line 1455 of yacc.c */ #line 293 "util/configparser.y" @@ -2151,7 +2154,7 @@ yyreduce: } break; - case 121: + case 122: /* Line 1455 of yacc.c */ #line 302 "util/configparser.y" @@ -2164,7 +2167,7 @@ yyreduce: } break; - case 122: + case 123: /* Line 1455 of yacc.c */ #line 311 "util/configparser.y" @@ -2177,7 +2180,7 @@ yyreduce: } break; - case 123: + case 124: /* Line 1455 of yacc.c */ #line 320 "util/configparser.y" @@ -2190,7 +2193,7 @@ yyreduce: } break; - case 124: + case 125: /* Line 1455 of yacc.c */ #line 329 "util/configparser.y" @@ -2203,7 +2206,7 @@ yyreduce: } break; - case 125: + case 126: /* Line 1455 of yacc.c */ #line 338 "util/configparser.y" @@ -2216,7 +2219,7 @@ yyreduce: } break; - case 126: + case 127: /* Line 1455 of yacc.c */ #line 347 "util/configparser.y" @@ -2229,7 +2232,7 @@ yyreduce: } break; - case 127: + case 128: /* Line 1455 of yacc.c */ #line 356 "util/configparser.y" @@ -2242,7 +2245,7 @@ yyreduce: } break; - case 128: + case 129: /* Line 1455 of yacc.c */ #line 365 "util/configparser.y" @@ -2255,7 +2258,7 @@ yyreduce: } break; - case 129: + case 130: /* Line 1455 of yacc.c */ #line 374 "util/configparser.y" @@ -2273,7 +2276,7 @@ yyreduce: } break; - case 130: + case 131: /* Line 1455 of yacc.c */ #line 388 "util/configparser.y" @@ -2286,7 +2289,7 @@ yyreduce: } break; - case 131: + case 132: /* Line 1455 of yacc.c */ #line 397 "util/configparser.y" @@ -2297,7 +2300,7 @@ yyreduce: } break; - case 132: + case 133: /* Line 1455 of yacc.c */ #line 404 "util/configparser.y" @@ -2308,7 +2311,7 @@ yyreduce: } break; - case 133: + case 134: /* Line 1455 of yacc.c */ #line 411 "util/configparser.y" @@ -2319,7 +2322,7 @@ yyreduce: } break; - case 134: + case 135: /* Line 1455 of yacc.c */ #line 418 "util/configparser.y" @@ -2331,7 +2334,7 @@ yyreduce: } break; - case 135: + case 136: /* Line 1455 of yacc.c */ #line 426 "util/configparser.y" @@ -2342,7 +2345,7 @@ yyreduce: } break; - case 136: + case 137: /* Line 1455 of yacc.c */ #line 433 "util/configparser.y" @@ -2353,7 +2356,7 @@ yyreduce: } break; - case 137: + case 138: /* Line 1455 of yacc.c */ #line 440 "util/configparser.y" @@ -2364,7 +2367,7 @@ yyreduce: } break; - case 138: + case 139: /* Line 1455 of yacc.c */ #line 447 "util/configparser.y" @@ -2375,7 +2378,7 @@ yyreduce: } break; - case 139: + case 140: /* Line 1455 of yacc.c */ #line 454 "util/configparser.y" @@ -2387,7 +2390,7 @@ yyreduce: } break; - case 140: + case 141: /* Line 1455 of yacc.c */ #line 462 "util/configparser.y" @@ -2399,7 +2402,7 @@ yyreduce: } break; - case 141: + case 142: /* Line 1455 of yacc.c */ #line 470 "util/configparser.y" @@ -2411,7 +2414,7 @@ yyreduce: } break; - case 142: + case 143: /* Line 1455 of yacc.c */ #line 478 "util/configparser.y" @@ -2422,7 +2425,7 @@ yyreduce: } break; - case 143: + case 144: /* Line 1455 of yacc.c */ #line 485 "util/configparser.y" @@ -2433,7 +2436,7 @@ yyreduce: } break; - case 144: + case 145: /* Line 1455 of yacc.c */ #line 492 "util/configparser.y" @@ -2446,7 +2449,7 @@ yyreduce: } break; - case 145: + case 146: /* Line 1455 of yacc.c */ #line 501 "util/configparser.y" @@ -2459,7 +2462,7 @@ yyreduce: } break; - case 146: + case 147: /* Line 1455 of yacc.c */ #line 510 "util/configparser.y" @@ -2470,7 +2473,7 @@ yyreduce: } break; - case 147: + case 148: /* Line 1455 of yacc.c */ #line 517 "util/configparser.y" @@ -2481,7 +2484,7 @@ yyreduce: } break; - case 148: + case 149: /* Line 1455 of yacc.c */ #line 524 "util/configparser.y" @@ -2493,7 +2496,7 @@ yyreduce: } break; - case 149: + case 150: /* Line 1455 of yacc.c */ #line 532 "util/configparser.y" @@ -2510,7 +2513,7 @@ yyreduce: } break; - case 150: + case 151: /* Line 1455 of yacc.c */ #line 545 "util/configparser.y" @@ -2525,7 +2528,7 @@ yyreduce: } break; - case 151: + case 152: /* Line 1455 of yacc.c */ #line 556 "util/configparser.y" @@ -2537,7 +2540,7 @@ yyreduce: } break; - case 152: + case 153: /* Line 1455 of yacc.c */ #line 564 "util/configparser.y" @@ -2554,7 +2557,7 @@ yyreduce: } break; - case 153: + case 154: /* Line 1455 of yacc.c */ #line 577 "util/configparser.y" @@ -2567,7 +2570,7 @@ yyreduce: } break; - case 154: + case 155: /* Line 1455 of yacc.c */ #line 586 "util/configparser.y" @@ -2580,7 +2583,7 @@ yyreduce: } break; - case 155: + case 156: /* Line 1455 of yacc.c */ #line 595 "util/configparser.y" @@ -2592,7 +2595,7 @@ yyreduce: } break; - case 156: + case 157: /* Line 1455 of yacc.c */ #line 603 "util/configparser.y" @@ -2609,7 +2612,7 @@ yyreduce: } break; - case 157: + case 158: /* Line 1455 of yacc.c */ #line 616 "util/configparser.y" @@ -2622,7 +2625,7 @@ yyreduce: } break; - case 158: + case 159: /* Line 1455 of yacc.c */ #line 625 "util/configparser.y" @@ -2635,7 +2638,7 @@ yyreduce: } break; - case 159: + case 160: /* Line 1455 of yacc.c */ #line 634 "util/configparser.y" @@ -2648,7 +2651,7 @@ yyreduce: } break; - case 160: + case 161: /* Line 1455 of yacc.c */ #line 643 "util/configparser.y" @@ -2661,7 +2664,7 @@ yyreduce: } break; - case 161: + case 162: /* Line 1455 of yacc.c */ #line 652 "util/configparser.y" @@ -2678,7 +2681,7 @@ yyreduce: } break; - case 162: + case 163: /* Line 1455 of yacc.c */ #line 665 "util/configparser.y" @@ -2689,7 +2692,7 @@ yyreduce: } break; - case 163: + case 164: /* Line 1455 of yacc.c */ #line 672 "util/configparser.y" @@ -2703,7 +2706,7 @@ yyreduce: } break; - case 164: + case 165: /* Line 1455 of yacc.c */ #line 682 "util/configparser.y" @@ -2717,7 +2720,7 @@ yyreduce: } break; - case 165: + case 166: /* Line 1455 of yacc.c */ #line 692 "util/configparser.y" @@ -2731,7 +2734,7 @@ yyreduce: } break; - case 166: + case 167: /* Line 1455 of yacc.c */ #line 702 "util/configparser.y" @@ -2745,7 +2748,7 @@ yyreduce: } break; - case 167: + case 168: /* Line 1455 of yacc.c */ #line 712 "util/configparser.y" @@ -2759,7 +2762,7 @@ yyreduce: } break; - case 168: + case 169: /* Line 1455 of yacc.c */ #line 722 "util/configparser.y" @@ -2773,7 +2776,7 @@ yyreduce: } break; - case 169: + case 170: /* Line 1455 of yacc.c */ #line 732 "util/configparser.y" @@ -2784,7 +2787,7 @@ yyreduce: } break; - case 170: + case 171: /* Line 1455 of yacc.c */ #line 739 "util/configparser.y" @@ -2795,10 +2798,23 @@ yyreduce: } break; - case 171: + case 172: /* Line 1455 of yacc.c */ #line 746 "util/configparser.y" + { + OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 173: + +/* Line 1455 of yacc.c */ +#line 755 "util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2808,10 +2824,10 @@ yyreduce: } break; - case 172: + case 174: /* Line 1455 of yacc.c */ -#line 755 "util/configparser.y" +#line 764 "util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) @@ -2819,10 +2835,10 @@ yyreduce: } break; - case 173: + case 175: /* Line 1455 of yacc.c */ -#line 762 "util/configparser.y" +#line 771 "util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2833,10 +2849,10 @@ yyreduce: } break; - case 174: + case 176: /* Line 1455 of yacc.c */ -#line 772 "util/configparser.y" +#line 781 "util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && @@ -2851,10 +2867,10 @@ yyreduce: } break; - case 175: + case 177: /* Line 1455 of yacc.c */ -#line 786 "util/configparser.y" +#line 795 "util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->module_conf); @@ -2862,10 +2878,10 @@ yyreduce: } break; - case 176: + case 178: /* Line 1455 of yacc.c */ -#line 793 "util/configparser.y" +#line 802 "util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2884,10 +2900,10 @@ yyreduce: } break; - case 177: + case 179: /* Line 1455 of yacc.c */ -#line 811 "util/configparser.y" +#line 820 "util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2901,10 +2917,10 @@ yyreduce: } break; - case 178: + case 180: /* Line 1455 of yacc.c */ -#line 824 "util/configparser.y" +#line 833 "util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { @@ -2918,10 +2934,10 @@ yyreduce: } break; - case 179: + case 181: /* Line 1455 of yacc.c */ -#line 837 "util/configparser.y" +#line 846 "util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2931,10 +2947,10 @@ yyreduce: } break; - case 180: + case 182: /* Line 1455 of yacc.c */ -#line 846 "util/configparser.y" +#line 855 "util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2944,10 +2960,10 @@ yyreduce: } break; - case 181: + case 183: /* Line 1455 of yacc.c */ -#line 855 "util/configparser.y" +#line 864 "util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2957,10 +2973,10 @@ yyreduce: } break; - case 182: + case 184: /* Line 1455 of yacc.c */ -#line 864 "util/configparser.y" +#line 873 "util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2971,10 +2987,10 @@ yyreduce: } break; - case 183: + case 185: /* Line 1455 of yacc.c */ -#line 874 "util/configparser.y" +#line 883 "util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -2985,10 +3001,10 @@ yyreduce: } break; - case 184: + case 186: /* Line 1455 of yacc.c */ -#line 884 "util/configparser.y" +#line 893 "util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -2998,10 +3014,10 @@ yyreduce: } break; - case 185: + case 187: /* Line 1455 of yacc.c */ -#line 893 "util/configparser.y" +#line 902 "util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); @@ -3009,10 +3025,10 @@ yyreduce: } break; - case 186: + case 188: /* Line 1455 of yacc.c */ -#line 900 "util/configparser.y" +#line 909 "util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3022,10 +3038,10 @@ yyreduce: } break; - case 187: + case 189: /* Line 1455 of yacc.c */ -#line 909 "util/configparser.y" +#line 918 "util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3035,10 +3051,10 @@ yyreduce: } break; - case 188: + case 190: /* Line 1455 of yacc.c */ -#line 918 "util/configparser.y" +#line 927 "util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) @@ -3048,10 +3064,10 @@ yyreduce: } break; - case 189: + case 191: /* Line 1455 of yacc.c */ -#line 927 "util/configparser.y" +#line 936 "util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) @@ -3060,10 +3076,10 @@ yyreduce: } break; - case 190: + case 192: /* Line 1455 of yacc.c */ -#line 935 "util/configparser.y" +#line 944 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3077,10 +3093,10 @@ yyreduce: } break; - case 191: + case 193: /* Line 1455 of yacc.c */ -#line 948 "util/configparser.y" +#line 957 "util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) @@ -3089,10 +3105,10 @@ yyreduce: } break; - case 192: + case 194: /* Line 1455 of yacc.c */ -#line 956 "util/configparser.y" +#line 965 "util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && @@ -3113,10 +3129,10 @@ yyreduce: } break; - case 193: + case 195: /* Line 1455 of yacc.c */ -#line 976 "util/configparser.y" +#line 985 "util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) @@ -3124,10 +3140,10 @@ yyreduce: } break; - case 194: + case 196: /* Line 1455 of yacc.c */ -#line 983 "util/configparser.y" +#line 992 "util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); @@ -3143,10 +3159,10 @@ yyreduce: } break; - case 195: + case 197: /* Line 1455 of yacc.c */ -#line 998 "util/configparser.y" +#line 1007 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->stubs->name); @@ -3154,10 +3170,10 @@ yyreduce: } break; - case 196: + case 198: /* Line 1455 of yacc.c */ -#line 1005 "util/configparser.y" +#line 1014 "util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) @@ -3165,10 +3181,10 @@ yyreduce: } break; - case 197: + case 199: /* Line 1455 of yacc.c */ -#line 1012 "util/configparser.y" +#line 1021 "util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) @@ -3176,10 +3192,10 @@ yyreduce: } break; - case 198: + case 200: /* Line 1455 of yacc.c */ -#line 1019 "util/configparser.y" +#line 1028 "util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3190,10 +3206,10 @@ yyreduce: } break; - case 199: + case 201: /* Line 1455 of yacc.c */ -#line 1029 "util/configparser.y" +#line 1038 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->forwards->name); @@ -3201,10 +3217,10 @@ yyreduce: } break; - case 200: + case 202: /* Line 1455 of yacc.c */ -#line 1036 "util/configparser.y" +#line 1045 "util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) @@ -3212,10 +3228,10 @@ yyreduce: } break; - case 201: + case 203: /* Line 1455 of yacc.c */ -#line 1043 "util/configparser.y" +#line 1052 "util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) @@ -3223,19 +3239,19 @@ yyreduce: } break; - case 202: + case 204: /* Line 1455 of yacc.c */ -#line 1050 "util/configparser.y" +#line 1059 "util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } break; - case 212: + case 214: /* Line 1455 of yacc.c */ -#line 1061 "util/configparser.y" +#line 1070 "util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) @@ -3246,10 +3262,10 @@ yyreduce: } break; - case 213: + case 215: /* Line 1455 of yacc.c */ -#line 1071 "util/configparser.y" +#line 1080 "util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); if(atoi((yyvsp[(2) - (2)].str)) == 0) @@ -3259,10 +3275,10 @@ yyreduce: } break; - case 214: + case 216: /* Line 1455 of yacc.c */ -#line 1080 "util/configparser.y" +#line 1089 "util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) @@ -3270,10 +3286,10 @@ yyreduce: } break; - case 215: + case 217: /* Line 1455 of yacc.c */ -#line 1087 "util/configparser.y" +#line 1096 "util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_key_file); @@ -3281,10 +3297,10 @@ yyreduce: } break; - case 216: + case 218: /* Line 1455 of yacc.c */ -#line 1094 "util/configparser.y" +#line 1103 "util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->server_cert_file); @@ -3292,10 +3308,10 @@ yyreduce: } break; - case 217: + case 219: /* Line 1455 of yacc.c */ -#line 1101 "util/configparser.y" +#line 1110 "util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_key_file); @@ -3303,10 +3319,10 @@ yyreduce: } break; - case 218: + case 220: /* Line 1455 of yacc.c */ -#line 1108 "util/configparser.y" +#line 1117 "util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->control_cert_file); @@ -3314,19 +3330,19 @@ yyreduce: } break; - case 219: + case 221: /* Line 1455 of yacc.c */ -#line 1115 "util/configparser.y" +#line 1124 "util/configparser.y" { OUTYY(("\nP(python:)\n")); } break; - case 223: + case 225: /* Line 1455 of yacc.c */ -#line 1124 "util/configparser.y" +#line 1133 "util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->python_script); @@ -3337,7 +3353,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 3341 "util/configparser.c" +#line 3357 "util/configparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3549,7 +3565,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1129 "util/configparser.y" +#line 1138 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 2f2fddbae..b89b7225d 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -150,7 +150,8 @@ VAR_ADD_HOLDDOWN = 366, VAR_DEL_HOLDDOWN = 367, VAR_SO_RCVBUF = 368, - VAR_EDNS_BUFFER_SIZE = 369 + VAR_EDNS_BUFFER_SIZE = 369, + VAR_PREFETCH = 370 }; #endif /* Tokens. */ @@ -266,6 +267,7 @@ #define VAR_DEL_HOLDDOWN 367 #define VAR_SO_RCVBUF 368 #define VAR_EDNS_BUFFER_SIZE 369 +#define VAR_PREFETCH 370 @@ -282,7 +284,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 286 "util/configparser.h" +#line 288 "util/configparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/util/configparser.y b/util/configparser.y index 481907eec..b21dd340a 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -100,7 +100,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN %token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL %token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN -%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE +%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -153,7 +153,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level | server_auto_trust_anchor_file | server_add_holddown | server_del_holddown | server_keep_missing | server_so_rcvbuf | - server_edns_buffer_size + server_edns_buffer_size | server_prefetch ; stubstart: VAR_STUB_ZONE { @@ -742,6 +742,15 @@ server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG yyerror("out of memory"); } ; +server_prefetch: VAR_PREFETCH STRING_ARG + { + OUTYY(("P(server_prefetch:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch = (strcmp($2, "yes")==0); + free($2); + } + ; server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", $2)); diff --git a/util/data/msgreply.c b/util/data/msgreply.c index c1fc407fb..65f344fbe 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -78,8 +78,8 @@ parse_create_qinfo(ldns_buffer* pkt, struct msg_parse* msg, /** constructor for replyinfo */ static struct reply_info* construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd, - uint32_t ttl, size_t an, size_t ns, size_t ar, size_t total, - enum sec_status sec) + uint32_t ttl, uint32_t prettl, size_t an, size_t ns, size_t ar, + size_t total, enum sec_status sec) { struct reply_info* rep; /* rrset_count-1 because the first ref is part of the struct. */ @@ -94,6 +94,7 @@ construct_reply_info_base(struct regional* region, uint16_t flags, size_t qd, rep->flags = flags; rep->qdcount = qd; rep->ttl = ttl; + rep->prefetch_ttl = prettl; rep->an_numrrsets = an; rep->ns_numrrsets = ns; rep->ar_numrrsets = ar; @@ -116,8 +117,8 @@ static int parse_create_repinfo(struct msg_parse* msg, struct reply_info** rep, struct regional* region) { - *rep = construct_reply_info_base(region, msg->flags, msg->qdcount, 0, - msg->an_rrsets, msg->ns_rrsets, msg->ar_rrsets, + *rep = construct_reply_info_base(region, msg->flags, msg->qdcount, 0, + 0, msg->an_rrsets, msg->ns_rrsets, msg->ar_rrsets, msg->rrset_count, sec_status_unchecked); if(!*rep) return 0; @@ -390,6 +391,7 @@ parse_copy_decompress(ldns_buffer* pkt, struct msg_parse* msg, pset = pset->rrset_all_next; } + rep->prefetch_ttl = PREFETCH_TTL_CALC(rep->ttl); return 1; } @@ -466,6 +468,7 @@ reply_info_set_ttls(struct reply_info* rep, uint32_t timenow) { size_t i, j; rep->ttl += timenow; + rep->prefetch_ttl += timenow; for(i=0; irrset_count; i++) { struct packed_rrset_data* data = (struct packed_rrset_data*) rep->ref[i].key->entry.data; @@ -654,8 +657,9 @@ reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, { struct reply_info* cp; cp = construct_reply_info_base(region, rep->flags, rep->qdcount, - rep->ttl, rep->an_numrrsets, rep->ns_numrrsets, - rep->ar_numrrsets, rep->rrset_count, rep->security); + rep->ttl, rep->prefetch_ttl, rep->an_numrrsets, + rep->ns_numrrsets, rep->ar_numrrsets, rep->rrset_count, + rep->security); if(!cp) return NULL; /* allocate ub_key structures special or not */ diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 855554be8..6210f079c 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -51,6 +51,10 @@ struct edns_data; struct msg_parse; struct rrset_parse; +/** calculate the prefetch TTL as 90% of original. Calculation + * without numerical overflow (uin32_t) */ +#define PREFETCH_TTL_CALC(ttl) ((ttl) - (ttl)/10) + /** * Structure to store query information that makes answers to queries * different. @@ -119,6 +123,12 @@ struct reply_info { */ uint32_t ttl; + /** + * TTL for prefetch. After it has expired, a prefetch is suitable. + * Smaller than the TTL, otherwise the prefetch would not happen. + */ + uint32_t prefetch_ttl; + /** * The security status from DNSSEC validation of this message. */ diff --git a/validator/validator.c b/validator/validator.c index 54b5f7136..27dc9a7b7 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -1916,6 +1916,8 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, } vq->orig_msg->rep->ttl = ve->bogus_ttl; + vq->orig_msg->rep->prefetch_ttl = + PREFETCH_TTL_CALC(vq->orig_msg->rep->ttl); if(qstate->env->cfg->val_log_level >= 1 && !qstate->env->cfg->val_log_squelch) { if(qstate->env->cfg->val_log_level < 2)