ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
(Generate patch)

Comparing ircd-hybrid/trunk/src/conf_parser.c (file contents):
Revision 1632 by michael, Sun Nov 4 15:37:10 2012 UTC vs.
Revision 4114 by michael, Tue Jul 1 16:47:15 2014 UTC

# Line 1 | Line 1
1 < /* A Bison parser, made by GNU Bison 2.6.2.33-cc5a9.  */
1 > /* A Bison parser, made by GNU Bison 3.0.2.  */
2  
3   /* Bison implementation for Yacc-like parsers in C
4 <  
5 <      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
6 <  
4 >
5 >   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 >
7     This program is free software: you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11 <  
11 >
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16 <  
16 >
17     You should have received a copy of the GNU General Public License
18     along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19  
# Line 26 | Line 26
26     special exception, which will cause the skeleton and the resulting
27     Bison output files to be licensed under the GNU General Public
28     License without this special exception.
29 <  
29 >
30     This special exception was added by the Free Software Foundation in
31     version 2.2 of Bison.  */
32  
# Line 44 | Line 44
44   #define YYBISON 1
45  
46   /* Bison version.  */
47 < #define YYBISON_VERSION "2.6.2.33-cc5a9"
47 > #define YYBISON_VERSION "3.0.2"
48  
49   /* Skeleton name.  */
50   #define YYSKELETON_NAME "yacc.c"
# Line 62 | Line 62
62  
63  
64   /* Copy the first part of user declarations.  */
65 < /* Line 358 of yacc.c  */
66 < #line 25 "conf_parser.y"
65 > #line 28 "conf_parser.y" /* yacc.c:339  */
66  
67  
68   #define YY_NO_UNPUT
# Line 80 | Line 79
79   #include "log.h"
80   #include "client.h"     /* for UMODE_ALL only */
81   #include "irc_string.h"
83 #include "sprintf_irc.h"
82   #include "memory.h"
83   #include "modules.h"
84 < #include "s_serv.h"
84 > #include "server.h"
85   #include "hostmask.h"
86   #include "send.h"
87   #include "listener.h"
88   #include "resv.h"
89   #include "numeric.h"
90 < #include "s_user.h"
90 > #include "user.h"
91 > #include "motd.h"
92  
93   #ifdef HAVE_LIBCRYPTO
94   #include <openssl/rsa.h>
# Line 98 | Line 97
97   #include <openssl/dh.h>
98   #endif
99  
100 < int yylex(void);
100 > #include "rsa.h"
101  
102 < static char *class_name = NULL;
104 < static struct MaskItem *yy_conf = NULL;
105 < static struct ClassItem *yy_class = NULL;
106 < static char *yy_class_name = NULL;
107 <
108 < static dlink_list col_conf_list  = { NULL, NULL, 0 };
109 < static unsigned int listener_flags = 0;
110 < static unsigned int regex_ban = 0;
111 < static char userbuf[IRCD_BUFSIZE];
112 < static char hostbuf[IRCD_BUFSIZE];
113 < static char reasonbuf[REASONLEN + 1];
114 < static char gecos_name[REALLEN * 4];
115 < static char lfile[IRCD_BUFSIZE];
116 < static unsigned int ltype = 0;
117 < static unsigned int lsize = 0;
118 < static char *resv_reason = NULL;
119 < static char *listener_address = NULL;
102 > int yylex(void);
103  
104 < struct CollectItem
104 > static struct
105   {
106 <  dlink_node node;
107 <  char *name;
108 <  char *user;
109 <  char *host;
110 <  char *passwd;
111 <  int  port;
112 <  int  flags;
113 < #ifdef HAVE_LIBCRYPTO
114 <  char *rsa_public_key_file;
115 <  RSA *rsa_public_key;
116 < #endif
117 < };
106 >  struct
107 >  {
108 >    dlink_list list;
109 >  } mask,
110 >    leaf,
111 >    hub;
112 >
113 >  struct
114 >  {
115 >    char buf[IRCD_BUFSIZE];
116 >  } name,
117 >    user,
118 >    host,
119 >    addr,
120 >    bind,
121 >    file,
122 >    ciph,
123 >    cert,
124 >    rpass,
125 >    spass,
126 >    class;
127 >
128 >  struct
129 >  {
130 >    unsigned int value;
131 >  } flags,
132 >    modes,
133 >    size,
134 >    type,
135 >    port,
136 >    aftype,
137 >    ping_freq,
138 >    max_perip,
139 >    con_freq,
140 >    min_idle,
141 >    max_idle,
142 >    max_total,
143 >    max_global,
144 >    max_local,
145 >    max_ident,
146 >    max_sendq,
147 >    max_recvq,
148 >    max_channels,
149 >    cidr_bitlen_ipv4,
150 >    cidr_bitlen_ipv6,
151 >    number_per_cidr;
152 > } block_state;
153  
154   static void
155 < free_collect_item(struct CollectItem *item)
155 > reset_block_state(void)
156   {
157 <  MyFree(item->name);
158 <  MyFree(item->user);
159 <  MyFree(item->host);
160 <  MyFree(item->passwd);
161 < #ifdef HAVE_LIBCRYPTO
162 <  MyFree(item->rsa_public_key_file);
163 < #endif
164 <  MyFree(item);
157 >  dlink_node *ptr = NULL, *ptr_next = NULL;
158 >
159 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.mask.list.head)
160 >  {
161 >    MyFree(ptr->data);
162 >    dlinkDelete(ptr, &block_state.mask.list);
163 >    free_dlink_node(ptr);
164 >  }
165 >
166 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.leaf.list.head)
167 >  {
168 >    MyFree(ptr->data);
169 >    dlinkDelete(ptr, &block_state.leaf.list);
170 >    free_dlink_node(ptr);
171 >  }
172 >
173 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.hub.list.head)
174 >  {
175 >    MyFree(ptr->data);
176 >    dlinkDelete(ptr, &block_state.hub.list);
177 >    free_dlink_node(ptr);
178 >  }
179 >
180 >  memset(&block_state, 0, sizeof(block_state));
181   }
182  
183  
184 < /* Line 358 of yacc.c  */
151 < #line 152 "conf_parser.c"
184 > #line 185 "conf_parser.c" /* yacc.c:339  */
185  
186 < # ifndef YY_NULL
186 > # ifndef YY_NULLPTR
187   #  if defined __cplusplus && 201103L <= __cplusplus
188 < #   define YY_NULL nullptr
188 > #   define YY_NULLPTR nullptr
189   #  else
190 < #   define YY_NULL 0
190 > #   define YY_NULLPTR 0
191   #  endif
192   # endif
193  
# Line 168 | Line 201 | free_collect_item(struct CollectItem *it
201  
202   /* In a future release of Bison, this section will be replaced
203     by #include "y.tab.h".  */
204 < #ifndef YY_YY_Y_TAB_H_INCLUDED
205 < # define YY_YY_Y_TAB_H_INCLUDED
206 < /* Enabling traces.  */
204 > #ifndef YY_YY_CONF_PARSER_H_INCLUDED
205 > # define YY_YY_CONF_PARSER_H_INCLUDED
206 > /* Debug traces.  */
207   #ifndef YYDEBUG
208   # define YYDEBUG 0
209   #endif
# Line 178 | Line 211 | free_collect_item(struct CollectItem *it
211   extern int yydebug;
212   #endif
213  
214 < /* Tokens.  */
214 > /* Token type.  */
215   #ifndef YYTOKENTYPE
216   # define YYTOKENTYPE
217 <   /* Put the tokens into the symbol table, so that GDB and other debuggers
218 <      know about them.  */
219 <   enum yytokentype {
220 <     ACCEPT_PASSWORD = 258,
221 <     ADMIN = 259,
222 <     AFTYPE = 260,
223 <     ANTI_NICK_FLOOD = 261,
224 <     ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
225 <     AUTOCONN = 263,
226 <     BYTES = 264,
227 <     KBYTES = 265,
228 <     MBYTES = 266,
229 <     CALLER_ID_WAIT = 267,
230 <     CAN_FLOOD = 268,
231 <     CHANNEL = 269,
232 <     CIDR_BITLEN_IPV4 = 270,
233 <     CIDR_BITLEN_IPV6 = 271,
234 <     CLASS = 272,
235 <     CONNECT = 273,
236 <     CONNECTFREQ = 274,
237 <     DEFAULT_FLOODCOUNT = 275,
238 <     DEFAULT_SPLIT_SERVER_COUNT = 276,
239 <     DEFAULT_SPLIT_USER_COUNT = 277,
240 <     DENY = 278,
241 <     DESCRIPTION = 279,
242 <     DIE = 280,
243 <     DISABLE_AUTH = 281,
244 <     DISABLE_FAKE_CHANNELS = 282,
245 <     DISABLE_REMOTE_COMMANDS = 283,
246 <     DOTS_IN_IDENT = 284,
247 <     EGDPOOL_PATH = 285,
248 <     EMAIL = 286,
249 <     ENCRYPTED = 287,
250 <     EXCEED_LIMIT = 288,
251 <     EXEMPT = 289,
252 <     FAILED_OPER_NOTICE = 290,
253 <     IRCD_FLAGS = 291,
254 <     FLATTEN_LINKS = 292,
255 <     GECOS = 293,
256 <     GENERAL = 294,
257 <     GLINE = 295,
258 <     GLINE_DURATION = 296,
259 <     GLINE_ENABLE = 297,
260 <     GLINE_EXEMPT = 298,
261 <     GLINE_REQUEST_DURATION = 299,
262 <     GLINE_MIN_CIDR = 300,
263 <     GLINE_MIN_CIDR6 = 301,
264 <     GLOBAL_KILL = 302,
265 <     IRCD_AUTH = 303,
266 <     NEED_IDENT = 304,
267 <     HAVENT_READ_CONF = 305,
268 <     HIDDEN = 306,
269 <     HIDDEN_NAME = 307,
270 <     HIDE_SERVER_IPS = 308,
271 <     HIDE_SERVERS = 309,
272 <     HIDE_SPOOF_IPS = 310,
273 <     HOST = 311,
274 <     HUB = 312,
275 <     HUB_MASK = 313,
276 <     IGNORE_BOGUS_TS = 314,
277 <     INVISIBLE_ON_CONNECT = 315,
278 <     IP = 316,
279 <     KILL = 317,
280 <     KILL_CHASE_TIME_LIMIT = 318,
281 <     KLINE = 319,
282 <     KLINE_EXEMPT = 320,
283 <     KNOCK_DELAY = 321,
284 <     KNOCK_DELAY_CHANNEL = 322,
285 <     LEAF_MASK = 323,
286 <     LINKS_DELAY = 324,
287 <     LISTEN = 325,
288 <     T_LOG = 326,
289 <     MAX_ACCEPT = 327,
290 <     MAX_BANS = 328,
291 <     MAX_CHANS_PER_OPER = 329,
292 <     MAX_CHANS_PER_USER = 330,
293 <     MAX_GLOBAL = 331,
294 <     MAX_IDENT = 332,
295 <     MAX_LOCAL = 333,
296 <     MAX_NICK_CHANGES = 334,
297 <     MAX_NICK_TIME = 335,
298 <     MAX_NUMBER = 336,
299 <     MAX_TARGETS = 337,
300 <     MAX_WATCH = 338,
301 <     MESSAGE_LOCALE = 339,
302 <     MIN_NONWILDCARD = 340,
303 <     MIN_NONWILDCARD_SIMPLE = 341,
304 <     MODULE = 342,
305 <     MODULES = 343,
306 <     NAME = 344,
307 <     NEED_PASSWORD = 345,
308 <     NETWORK_DESC = 346,
309 <     NETWORK_NAME = 347,
310 <     NICK = 348,
311 <     NICK_CHANGES = 349,
312 <     NO_CREATE_ON_SPLIT = 350,
313 <     NO_JOIN_ON_SPLIT = 351,
314 <     NO_OPER_FLOOD = 352,
315 <     NO_TILDE = 353,
316 <     NUMBER = 354,
317 <     NUMBER_PER_CIDR = 355,
318 <     NUMBER_PER_IP = 356,
319 <     OPERATOR = 357,
320 <     OPERS_BYPASS_CALLERID = 358,
321 <     OPER_ONLY_UMODES = 359,
322 <     OPER_PASS_RESV = 360,
323 <     OPER_SPY_T = 361,
324 <     OPER_UMODES = 362,
325 <     JOIN_FLOOD_COUNT = 363,
326 <     JOIN_FLOOD_TIME = 364,
327 <     PACE_WAIT = 365,
328 <     PACE_WAIT_SIMPLE = 366,
329 <     PASSWORD = 367,
330 <     PATH = 368,
331 <     PING_COOKIE = 369,
332 <     PING_TIME = 370,
333 <     PING_WARNING = 371,
334 <     PORT = 372,
335 <     QSTRING = 373,
336 <     QUIET_ON_BAN = 374,
337 <     REASON = 375,
338 <     REDIRPORT = 376,
339 <     REDIRSERV = 377,
340 <     REGEX_T = 378,
341 <     REHASH = 379,
342 <     REMOTE = 380,
343 <     REMOTEBAN = 381,
344 <     RESTRICT_CHANNELS = 382,
345 <     RSA_PRIVATE_KEY_FILE = 383,
346 <     RSA_PUBLIC_KEY_FILE = 384,
347 <     SSL_CERTIFICATE_FILE = 385,
348 <     SSL_DH_PARAM_FILE = 386,
349 <     T_SSL_CLIENT_METHOD = 387,
350 <     T_SSL_SERVER_METHOD = 388,
351 <     T_SSLV3 = 389,
352 <     T_TLSV1 = 390,
353 <     RESV = 391,
354 <     RESV_EXEMPT = 392,
355 <     SECONDS = 393,
356 <     MINUTES = 394,
357 <     HOURS = 395,
358 <     DAYS = 396,
359 <     WEEKS = 397,
360 <     SENDQ = 398,
361 <     SEND_PASSWORD = 399,
362 <     SERVERHIDE = 400,
363 <     SERVERINFO = 401,
364 <     IRCD_SID = 402,
365 <     TKLINE_EXPIRE_NOTICES = 403,
366 <     T_SHARED = 404,
367 <     T_CLUSTER = 405,
368 <     TYPE = 406,
369 <     SHORT_MOTD = 407,
370 <     SPOOF = 408,
371 <     SPOOF_NOTICE = 409,
372 <     STATS_E_DISABLED = 410,
373 <     STATS_I_OPER_ONLY = 411,
374 <     STATS_K_OPER_ONLY = 412,
375 <     STATS_O_OPER_ONLY = 413,
376 <     STATS_P_OPER_ONLY = 414,
377 <     TBOOL = 415,
378 <     TMASKED = 416,
379 <     TS_MAX_DELTA = 417,
380 <     TS_WARN_DELTA = 418,
381 <     TWODOTS = 419,
382 <     T_ALL = 420,
383 <     T_BOTS = 421,
384 <     T_SOFTCALLERID = 422,
385 <     T_CALLERID = 423,
386 <     T_CCONN = 424,
387 <     T_CCONN_FULL = 425,
388 <     T_SSL_CIPHER_LIST = 426,
389 <     T_DEAF = 427,
390 <     T_DEBUG = 428,
391 <     T_DLINE = 429,
392 <     T_EXTERNAL = 430,
393 <     T_FULL = 431,
394 <     T_INVISIBLE = 432,
395 <     T_IPV4 = 433,
396 <     T_IPV6 = 434,
397 <     T_LOCOPS = 435,
398 <     T_MAX_CLIENTS = 436,
399 <     T_NCHANGE = 437,
400 <     T_OPERWALL = 438,
401 <     T_RECVQ = 439,
402 <     T_REJ = 440,
403 <     T_SERVER = 441,
404 <     T_SERVNOTICE = 442,
405 <     T_SET = 443,
406 <     T_SKILL = 444,
407 <     T_SPY = 445,
408 <     T_SSL = 446,
409 <     T_UMODES = 447,
410 <     T_UNAUTH = 448,
411 <     T_UNDLINE = 449,
412 <     T_UNLIMITED = 450,
413 <     T_UNRESV = 451,
414 <     T_UNXLINE = 452,
415 <     T_GLOBOPS = 453,
416 <     T_WALLOP = 454,
417 <     T_RESTART = 455,
418 <     T_SERVICE = 456,
419 <     T_SERVICES_NAME = 457,
420 <     THROTTLE_TIME = 458,
421 <     TRUE_NO_OPER_FLOOD = 459,
422 <     UNKLINE = 460,
423 <     USER = 461,
424 <     USE_EGD = 462,
425 <     USE_LOGGING = 463,
426 <     VHOST = 464,
427 <     VHOST6 = 465,
428 <     XLINE = 466,
429 <     WARN_NO_NLINE = 467,
430 <     T_SIZE = 468,
431 <     T_FILE = 469
432 <   };
217 >  enum yytokentype
218 >  {
219 >    ACCEPT_PASSWORD = 258,
220 >    ADMIN = 259,
221 >    AFTYPE = 260,
222 >    ANTI_NICK_FLOOD = 261,
223 >    ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
224 >    AUTOCONN = 263,
225 >    BYTES = 264,
226 >    KBYTES = 265,
227 >    MBYTES = 266,
228 >    CALLER_ID_WAIT = 267,
229 >    CAN_FLOOD = 268,
230 >    CHANNEL = 269,
231 >    CIDR_BITLEN_IPV4 = 270,
232 >    CIDR_BITLEN_IPV6 = 271,
233 >    CLASS = 272,
234 >    CONNECT = 273,
235 >    CONNECTFREQ = 274,
236 >    CYCLE_ON_HOST_CHANGE = 275,
237 >    DEFAULT_FLOODCOUNT = 276,
238 >    DEFAULT_SPLIT_SERVER_COUNT = 277,
239 >    DEFAULT_SPLIT_USER_COUNT = 278,
240 >    DENY = 279,
241 >    DESCRIPTION = 280,
242 >    DIE = 281,
243 >    DISABLE_AUTH = 282,
244 >    DISABLE_FAKE_CHANNELS = 283,
245 >    DISABLE_REMOTE_COMMANDS = 284,
246 >    DOTS_IN_IDENT = 285,
247 >    EGDPOOL_PATH = 286,
248 >    EMAIL = 287,
249 >    ENCRYPTED = 288,
250 >    EXCEED_LIMIT = 289,
251 >    EXEMPT = 290,
252 >    FAILED_OPER_NOTICE = 291,
253 >    FLATTEN_LINKS = 292,
254 >    GECOS = 293,
255 >    GENERAL = 294,
256 >    GLINE = 295,
257 >    GLINE_DURATION = 296,
258 >    GLINE_ENABLE = 297,
259 >    GLINE_EXEMPT = 298,
260 >    GLINE_MIN_CIDR = 299,
261 >    GLINE_MIN_CIDR6 = 300,
262 >    GLINE_REQUEST_DURATION = 301,
263 >    GLOBAL_KILL = 302,
264 >    HAVENT_READ_CONF = 303,
265 >    HIDDEN = 304,
266 >    HIDDEN_NAME = 305,
267 >    HIDE_CHANS = 306,
268 >    HIDE_IDLE = 307,
269 >    HIDE_IDLE_FROM_OPERS = 308,
270 >    HIDE_SERVER_IPS = 309,
271 >    HIDE_SERVERS = 310,
272 >    HIDE_SERVICES = 311,
273 >    HIDE_SPOOF_IPS = 312,
274 >    HOST = 313,
275 >    HUB = 314,
276 >    HUB_MASK = 315,
277 >    IGNORE_BOGUS_TS = 316,
278 >    INVISIBLE_ON_CONNECT = 317,
279 >    INVITE_CLIENT_COUNT = 318,
280 >    INVITE_CLIENT_TIME = 319,
281 >    IP = 320,
282 >    IRCD_AUTH = 321,
283 >    IRCD_FLAGS = 322,
284 >    IRCD_SID = 323,
285 >    JOIN_FLOOD_COUNT = 324,
286 >    JOIN_FLOOD_TIME = 325,
287 >    KILL = 326,
288 >    KILL_CHASE_TIME_LIMIT = 327,
289 >    KLINE = 328,
290 >    KLINE_EXEMPT = 329,
291 >    KNOCK_CLIENT_COUNT = 330,
292 >    KNOCK_CLIENT_TIME = 331,
293 >    KNOCK_DELAY_CHANNEL = 332,
294 >    LEAF_MASK = 333,
295 >    LINKS_DELAY = 334,
296 >    LISTEN = 335,
297 >    MASK = 336,
298 >    MAX_ACCEPT = 337,
299 >    MAX_BANS = 338,
300 >    MAX_CHANNELS = 339,
301 >    MAX_GLOBAL = 340,
302 >    MAX_IDENT = 341,
303 >    MAX_IDLE = 342,
304 >    MAX_LOCAL = 343,
305 >    MAX_NICK_CHANGES = 344,
306 >    MAX_NICK_LENGTH = 345,
307 >    MAX_NICK_TIME = 346,
308 >    MAX_NUMBER = 347,
309 >    MAX_TARGETS = 348,
310 >    MAX_TOPIC_LENGTH = 349,
311 >    MAX_WATCH = 350,
312 >    MIN_IDLE = 351,
313 >    MIN_NONWILDCARD = 352,
314 >    MIN_NONWILDCARD_SIMPLE = 353,
315 >    MODULE = 354,
316 >    MODULES = 355,
317 >    MOTD = 356,
318 >    NAME = 357,
319 >    NEED_IDENT = 358,
320 >    NEED_PASSWORD = 359,
321 >    NETWORK_DESC = 360,
322 >    NETWORK_NAME = 361,
323 >    NICK = 362,
324 >    NO_CREATE_ON_SPLIT = 363,
325 >    NO_JOIN_ON_SPLIT = 364,
326 >    NO_OPER_FLOOD = 365,
327 >    NO_TILDE = 366,
328 >    NUMBER = 367,
329 >    NUMBER_PER_CIDR = 368,
330 >    NUMBER_PER_IP = 369,
331 >    OPER_ONLY_UMODES = 370,
332 >    OPER_PASS_RESV = 371,
333 >    OPER_UMODES = 372,
334 >    OPERATOR = 373,
335 >    OPERS_BYPASS_CALLERID = 374,
336 >    PACE_WAIT = 375,
337 >    PACE_WAIT_SIMPLE = 376,
338 >    PASSWORD = 377,
339 >    PATH = 378,
340 >    PING_COOKIE = 379,
341 >    PING_TIME = 380,
342 >    PORT = 381,
343 >    QSTRING = 382,
344 >    RANDOM_IDLE = 383,
345 >    REASON = 384,
346 >    REDIRPORT = 385,
347 >    REDIRSERV = 386,
348 >    REHASH = 387,
349 >    REMOTE = 388,
350 >    REMOTEBAN = 389,
351 >    RESV = 390,
352 >    RESV_EXEMPT = 391,
353 >    RSA_PRIVATE_KEY_FILE = 392,
354 >    RSA_PUBLIC_KEY_FILE = 393,
355 >    SECONDS = 394,
356 >    MINUTES = 395,
357 >    HOURS = 396,
358 >    DAYS = 397,
359 >    WEEKS = 398,
360 >    MONTHS = 399,
361 >    YEARS = 400,
362 >    SEND_PASSWORD = 401,
363 >    SENDQ = 402,
364 >    SERVERHIDE = 403,
365 >    SERVERINFO = 404,
366 >    SHORT_MOTD = 405,
367 >    SPOOF = 406,
368 >    SPOOF_NOTICE = 407,
369 >    SQUIT = 408,
370 >    SSL_CERTIFICATE_FILE = 409,
371 >    SSL_CERTIFICATE_FINGERPRINT = 410,
372 >    SSL_CONNECTION_REQUIRED = 411,
373 >    SSL_DH_ELLIPTIC_CURVE = 412,
374 >    SSL_DH_PARAM_FILE = 413,
375 >    SSL_MESSAGE_DIGEST_ALGORITHM = 414,
376 >    STATS_E_DISABLED = 415,
377 >    STATS_I_OPER_ONLY = 416,
378 >    STATS_K_OPER_ONLY = 417,
379 >    STATS_O_OPER_ONLY = 418,
380 >    STATS_P_OPER_ONLY = 419,
381 >    STATS_U_OPER_ONLY = 420,
382 >    T_ALL = 421,
383 >    T_BOTS = 422,
384 >    T_CALLERID = 423,
385 >    T_CCONN = 424,
386 >    T_CLUSTER = 425,
387 >    T_DEAF = 426,
388 >    T_DEBUG = 427,
389 >    T_DLINE = 428,
390 >    T_EXTERNAL = 429,
391 >    T_FARCONNECT = 430,
392 >    T_FILE = 431,
393 >    T_FULL = 432,
394 >    T_GLOBOPS = 433,
395 >    T_INVISIBLE = 434,
396 >    T_IPV4 = 435,
397 >    T_IPV6 = 436,
398 >    T_LOCOPS = 437,
399 >    T_LOG = 438,
400 >    T_MAX_CLIENTS = 439,
401 >    T_NCHANGE = 440,
402 >    T_NONONREG = 441,
403 >    T_RECVQ = 442,
404 >    T_REJ = 443,
405 >    T_RESTART = 444,
406 >    T_SERVER = 445,
407 >    T_SERVICE = 446,
408 >    T_SERVICES_NAME = 447,
409 >    T_SERVNOTICE = 448,
410 >    T_SET = 449,
411 >    T_SHARED = 450,
412 >    T_SIZE = 451,
413 >    T_SKILL = 452,
414 >    T_SOFTCALLERID = 453,
415 >    T_SPY = 454,
416 >    T_SSL = 455,
417 >    T_SSL_CIPHER_LIST = 456,
418 >    T_SSL_CLIENT_METHOD = 457,
419 >    T_SSL_SERVER_METHOD = 458,
420 >    T_SSLV3 = 459,
421 >    T_TLSV1 = 460,
422 >    T_UMODES = 461,
423 >    T_UNAUTH = 462,
424 >    T_UNDLINE = 463,
425 >    T_UNLIMITED = 464,
426 >    T_UNRESV = 465,
427 >    T_UNXLINE = 466,
428 >    T_WALLOP = 467,
429 >    T_WALLOPS = 468,
430 >    T_WEBIRC = 469,
431 >    TBOOL = 470,
432 >    THROTTLE_COUNT = 471,
433 >    THROTTLE_TIME = 472,
434 >    TKLINE_EXPIRE_NOTICES = 473,
435 >    TMASKED = 474,
436 >    TRUE_NO_OPER_FLOOD = 475,
437 >    TS_MAX_DELTA = 476,
438 >    TS_WARN_DELTA = 477,
439 >    TWODOTS = 478,
440 >    TYPE = 479,
441 >    UNKLINE = 480,
442 >    USE_EGD = 481,
443 >    USE_LOGGING = 482,
444 >    USER = 483,
445 >    VHOST = 484,
446 >    VHOST6 = 485,
447 >    WARN_NO_CONNECT_BLOCK = 486,
448 >    XLINE = 487
449 >  };
450   #endif
451   /* Tokens.  */
452   #define ACCEPT_PASSWORD 258
# Line 416 | Line 466 | extern int yydebug;
466   #define CLASS 272
467   #define CONNECT 273
468   #define CONNECTFREQ 274
469 < #define DEFAULT_FLOODCOUNT 275
470 < #define DEFAULT_SPLIT_SERVER_COUNT 276
471 < #define DEFAULT_SPLIT_USER_COUNT 277
472 < #define DENY 278
473 < #define DESCRIPTION 279
474 < #define DIE 280
475 < #define DISABLE_AUTH 281
476 < #define DISABLE_FAKE_CHANNELS 282
477 < #define DISABLE_REMOTE_COMMANDS 283
478 < #define DOTS_IN_IDENT 284
479 < #define EGDPOOL_PATH 285
480 < #define EMAIL 286
481 < #define ENCRYPTED 287
482 < #define EXCEED_LIMIT 288
483 < #define EXEMPT 289
484 < #define FAILED_OPER_NOTICE 290
485 < #define IRCD_FLAGS 291
469 > #define CYCLE_ON_HOST_CHANGE 275
470 > #define DEFAULT_FLOODCOUNT 276
471 > #define DEFAULT_SPLIT_SERVER_COUNT 277
472 > #define DEFAULT_SPLIT_USER_COUNT 278
473 > #define DENY 279
474 > #define DESCRIPTION 280
475 > #define DIE 281
476 > #define DISABLE_AUTH 282
477 > #define DISABLE_FAKE_CHANNELS 283
478 > #define DISABLE_REMOTE_COMMANDS 284
479 > #define DOTS_IN_IDENT 285
480 > #define EGDPOOL_PATH 286
481 > #define EMAIL 287
482 > #define ENCRYPTED 288
483 > #define EXCEED_LIMIT 289
484 > #define EXEMPT 290
485 > #define FAILED_OPER_NOTICE 291
486   #define FLATTEN_LINKS 292
487   #define GECOS 293
488   #define GENERAL 294
# Line 440 | Line 490 | extern int yydebug;
490   #define GLINE_DURATION 296
491   #define GLINE_ENABLE 297
492   #define GLINE_EXEMPT 298
493 < #define GLINE_REQUEST_DURATION 299
494 < #define GLINE_MIN_CIDR 300
495 < #define GLINE_MIN_CIDR6 301
493 > #define GLINE_MIN_CIDR 299
494 > #define GLINE_MIN_CIDR6 300
495 > #define GLINE_REQUEST_DURATION 301
496   #define GLOBAL_KILL 302
497 < #define IRCD_AUTH 303
498 < #define NEED_IDENT 304
499 < #define HAVENT_READ_CONF 305
500 < #define HIDDEN 306
501 < #define HIDDEN_NAME 307
502 < #define HIDE_SERVER_IPS 308
503 < #define HIDE_SERVERS 309
504 < #define HIDE_SPOOF_IPS 310
505 < #define HOST 311
506 < #define HUB 312
507 < #define HUB_MASK 313
508 < #define IGNORE_BOGUS_TS 314
509 < #define INVISIBLE_ON_CONNECT 315
510 < #define IP 316
511 < #define KILL 317
512 < #define KILL_CHASE_TIME_LIMIT 318
513 < #define KLINE 319
514 < #define KLINE_EXEMPT 320
515 < #define KNOCK_DELAY 321
516 < #define KNOCK_DELAY_CHANNEL 322
517 < #define LEAF_MASK 323
518 < #define LINKS_DELAY 324
519 < #define LISTEN 325
520 < #define T_LOG 326
521 < #define MAX_ACCEPT 327
522 < #define MAX_BANS 328
523 < #define MAX_CHANS_PER_OPER 329
524 < #define MAX_CHANS_PER_USER 330
525 < #define MAX_GLOBAL 331
526 < #define MAX_IDENT 332
527 < #define MAX_LOCAL 333
528 < #define MAX_NICK_CHANGES 334
529 < #define MAX_NICK_TIME 335
530 < #define MAX_NUMBER 336
531 < #define MAX_TARGETS 337
532 < #define MAX_WATCH 338
533 < #define MESSAGE_LOCALE 339
534 < #define MIN_NONWILDCARD 340
535 < #define MIN_NONWILDCARD_SIMPLE 341
536 < #define MODULE 342
537 < #define MODULES 343
538 < #define NAME 344
539 < #define NEED_PASSWORD 345
540 < #define NETWORK_DESC 346
541 < #define NETWORK_NAME 347
542 < #define NICK 348
543 < #define NICK_CHANGES 349
544 < #define NO_CREATE_ON_SPLIT 350
545 < #define NO_JOIN_ON_SPLIT 351
546 < #define NO_OPER_FLOOD 352
547 < #define NO_TILDE 353
548 < #define NUMBER 354
549 < #define NUMBER_PER_CIDR 355
550 < #define NUMBER_PER_IP 356
551 < #define OPERATOR 357
552 < #define OPERS_BYPASS_CALLERID 358
553 < #define OPER_ONLY_UMODES 359
554 < #define OPER_PASS_RESV 360
555 < #define OPER_SPY_T 361
556 < #define OPER_UMODES 362
557 < #define JOIN_FLOOD_COUNT 363
558 < #define JOIN_FLOOD_TIME 364
559 < #define PACE_WAIT 365
560 < #define PACE_WAIT_SIMPLE 366
561 < #define PASSWORD 367
562 < #define PATH 368
563 < #define PING_COOKIE 369
564 < #define PING_TIME 370
565 < #define PING_WARNING 371
566 < #define PORT 372
567 < #define QSTRING 373
568 < #define QUIET_ON_BAN 374
569 < #define REASON 375
570 < #define REDIRPORT 376
571 < #define REDIRSERV 377
572 < #define REGEX_T 378
573 < #define REHASH 379
574 < #define REMOTE 380
575 < #define REMOTEBAN 381
576 < #define RESTRICT_CHANNELS 382
577 < #define RSA_PRIVATE_KEY_FILE 383
578 < #define RSA_PUBLIC_KEY_FILE 384
579 < #define SSL_CERTIFICATE_FILE 385
580 < #define SSL_DH_PARAM_FILE 386
581 < #define T_SSL_CLIENT_METHOD 387
582 < #define T_SSL_SERVER_METHOD 388
583 < #define T_SSLV3 389
584 < #define T_TLSV1 390
585 < #define RESV 391
586 < #define RESV_EXEMPT 392
587 < #define SECONDS 393
588 < #define MINUTES 394
589 < #define HOURS 395
590 < #define DAYS 396
591 < #define WEEKS 397
592 < #define SENDQ 398
593 < #define SEND_PASSWORD 399
594 < #define SERVERHIDE 400
595 < #define SERVERINFO 401
596 < #define IRCD_SID 402
597 < #define TKLINE_EXPIRE_NOTICES 403
598 < #define T_SHARED 404
599 < #define T_CLUSTER 405
600 < #define TYPE 406
601 < #define SHORT_MOTD 407
602 < #define SPOOF 408
603 < #define SPOOF_NOTICE 409
604 < #define STATS_E_DISABLED 410
605 < #define STATS_I_OPER_ONLY 411
606 < #define STATS_K_OPER_ONLY 412
607 < #define STATS_O_OPER_ONLY 413
608 < #define STATS_P_OPER_ONLY 414
609 < #define TBOOL 415
610 < #define TMASKED 416
611 < #define TS_MAX_DELTA 417
612 < #define TS_WARN_DELTA 418
613 < #define TWODOTS 419
614 < #define T_ALL 420
615 < #define T_BOTS 421
616 < #define T_SOFTCALLERID 422
497 > #define HAVENT_READ_CONF 303
498 > #define HIDDEN 304
499 > #define HIDDEN_NAME 305
500 > #define HIDE_CHANS 306
501 > #define HIDE_IDLE 307
502 > #define HIDE_IDLE_FROM_OPERS 308
503 > #define HIDE_SERVER_IPS 309
504 > #define HIDE_SERVERS 310
505 > #define HIDE_SERVICES 311
506 > #define HIDE_SPOOF_IPS 312
507 > #define HOST 313
508 > #define HUB 314
509 > #define HUB_MASK 315
510 > #define IGNORE_BOGUS_TS 316
511 > #define INVISIBLE_ON_CONNECT 317
512 > #define INVITE_CLIENT_COUNT 318
513 > #define INVITE_CLIENT_TIME 319
514 > #define IP 320
515 > #define IRCD_AUTH 321
516 > #define IRCD_FLAGS 322
517 > #define IRCD_SID 323
518 > #define JOIN_FLOOD_COUNT 324
519 > #define JOIN_FLOOD_TIME 325
520 > #define KILL 326
521 > #define KILL_CHASE_TIME_LIMIT 327
522 > #define KLINE 328
523 > #define KLINE_EXEMPT 329
524 > #define KNOCK_CLIENT_COUNT 330
525 > #define KNOCK_CLIENT_TIME 331
526 > #define KNOCK_DELAY_CHANNEL 332
527 > #define LEAF_MASK 333
528 > #define LINKS_DELAY 334
529 > #define LISTEN 335
530 > #define MASK 336
531 > #define MAX_ACCEPT 337
532 > #define MAX_BANS 338
533 > #define MAX_CHANNELS 339
534 > #define MAX_GLOBAL 340
535 > #define MAX_IDENT 341
536 > #define MAX_IDLE 342
537 > #define MAX_LOCAL 343
538 > #define MAX_NICK_CHANGES 344
539 > #define MAX_NICK_LENGTH 345
540 > #define MAX_NICK_TIME 346
541 > #define MAX_NUMBER 347
542 > #define MAX_TARGETS 348
543 > #define MAX_TOPIC_LENGTH 349
544 > #define MAX_WATCH 350
545 > #define MIN_IDLE 351
546 > #define MIN_NONWILDCARD 352
547 > #define MIN_NONWILDCARD_SIMPLE 353
548 > #define MODULE 354
549 > #define MODULES 355
550 > #define MOTD 356
551 > #define NAME 357
552 > #define NEED_IDENT 358
553 > #define NEED_PASSWORD 359
554 > #define NETWORK_DESC 360
555 > #define NETWORK_NAME 361
556 > #define NICK 362
557 > #define NO_CREATE_ON_SPLIT 363
558 > #define NO_JOIN_ON_SPLIT 364
559 > #define NO_OPER_FLOOD 365
560 > #define NO_TILDE 366
561 > #define NUMBER 367
562 > #define NUMBER_PER_CIDR 368
563 > #define NUMBER_PER_IP 369
564 > #define OPER_ONLY_UMODES 370
565 > #define OPER_PASS_RESV 371
566 > #define OPER_UMODES 372
567 > #define OPERATOR 373
568 > #define OPERS_BYPASS_CALLERID 374
569 > #define PACE_WAIT 375
570 > #define PACE_WAIT_SIMPLE 376
571 > #define PASSWORD 377
572 > #define PATH 378
573 > #define PING_COOKIE 379
574 > #define PING_TIME 380
575 > #define PORT 381
576 > #define QSTRING 382
577 > #define RANDOM_IDLE 383
578 > #define REASON 384
579 > #define REDIRPORT 385
580 > #define REDIRSERV 386
581 > #define REHASH 387
582 > #define REMOTE 388
583 > #define REMOTEBAN 389
584 > #define RESV 390
585 > #define RESV_EXEMPT 391
586 > #define RSA_PRIVATE_KEY_FILE 392
587 > #define RSA_PUBLIC_KEY_FILE 393
588 > #define SECONDS 394
589 > #define MINUTES 395
590 > #define HOURS 396
591 > #define DAYS 397
592 > #define WEEKS 398
593 > #define MONTHS 399
594 > #define YEARS 400
595 > #define SEND_PASSWORD 401
596 > #define SENDQ 402
597 > #define SERVERHIDE 403
598 > #define SERVERINFO 404
599 > #define SHORT_MOTD 405
600 > #define SPOOF 406
601 > #define SPOOF_NOTICE 407
602 > #define SQUIT 408
603 > #define SSL_CERTIFICATE_FILE 409
604 > #define SSL_CERTIFICATE_FINGERPRINT 410
605 > #define SSL_CONNECTION_REQUIRED 411
606 > #define SSL_DH_ELLIPTIC_CURVE 412
607 > #define SSL_DH_PARAM_FILE 413
608 > #define SSL_MESSAGE_DIGEST_ALGORITHM 414
609 > #define STATS_E_DISABLED 415
610 > #define STATS_I_OPER_ONLY 416
611 > #define STATS_K_OPER_ONLY 417
612 > #define STATS_O_OPER_ONLY 418
613 > #define STATS_P_OPER_ONLY 419
614 > #define STATS_U_OPER_ONLY 420
615 > #define T_ALL 421
616 > #define T_BOTS 422
617   #define T_CALLERID 423
618   #define T_CCONN 424
619 < #define T_CCONN_FULL 425
620 < #define T_SSL_CIPHER_LIST 426
621 < #define T_DEAF 427
622 < #define T_DEBUG 428
623 < #define T_DLINE 429
624 < #define T_EXTERNAL 430
625 < #define T_FULL 431
626 < #define T_INVISIBLE 432
627 < #define T_IPV4 433
628 < #define T_IPV6 434
629 < #define T_LOCOPS 435
630 < #define T_MAX_CLIENTS 436
631 < #define T_NCHANGE 437
632 < #define T_OPERWALL 438
633 < #define T_RECVQ 439
634 < #define T_REJ 440
635 < #define T_SERVER 441
636 < #define T_SERVNOTICE 442
637 < #define T_SET 443
638 < #define T_SKILL 444
639 < #define T_SPY 445
640 < #define T_SSL 446
641 < #define T_UMODES 447
642 < #define T_UNAUTH 448
643 < #define T_UNDLINE 449
644 < #define T_UNLIMITED 450
645 < #define T_UNRESV 451
646 < #define T_UNXLINE 452
647 < #define T_GLOBOPS 453
648 < #define T_WALLOP 454
649 < #define T_RESTART 455
650 < #define T_SERVICE 456
651 < #define T_SERVICES_NAME 457
652 < #define THROTTLE_TIME 458
653 < #define TRUE_NO_OPER_FLOOD 459
654 < #define UNKLINE 460
655 < #define USER 461
656 < #define USE_EGD 462
657 < #define USE_LOGGING 463
658 < #define VHOST 464
659 < #define VHOST6 465
660 < #define XLINE 466
661 < #define WARN_NO_NLINE 467
662 < #define T_SIZE 468
663 < #define T_FILE 469
664 <
665 <
619 > #define T_CLUSTER 425
620 > #define T_DEAF 426
621 > #define T_DEBUG 427
622 > #define T_DLINE 428
623 > #define T_EXTERNAL 429
624 > #define T_FARCONNECT 430
625 > #define T_FILE 431
626 > #define T_FULL 432
627 > #define T_GLOBOPS 433
628 > #define T_INVISIBLE 434
629 > #define T_IPV4 435
630 > #define T_IPV6 436
631 > #define T_LOCOPS 437
632 > #define T_LOG 438
633 > #define T_MAX_CLIENTS 439
634 > #define T_NCHANGE 440
635 > #define T_NONONREG 441
636 > #define T_RECVQ 442
637 > #define T_REJ 443
638 > #define T_RESTART 444
639 > #define T_SERVER 445
640 > #define T_SERVICE 446
641 > #define T_SERVICES_NAME 447
642 > #define T_SERVNOTICE 448
643 > #define T_SET 449
644 > #define T_SHARED 450
645 > #define T_SIZE 451
646 > #define T_SKILL 452
647 > #define T_SOFTCALLERID 453
648 > #define T_SPY 454
649 > #define T_SSL 455
650 > #define T_SSL_CIPHER_LIST 456
651 > #define T_SSL_CLIENT_METHOD 457
652 > #define T_SSL_SERVER_METHOD 458
653 > #define T_SSLV3 459
654 > #define T_TLSV1 460
655 > #define T_UMODES 461
656 > #define T_UNAUTH 462
657 > #define T_UNDLINE 463
658 > #define T_UNLIMITED 464
659 > #define T_UNRESV 465
660 > #define T_UNXLINE 466
661 > #define T_WALLOP 467
662 > #define T_WALLOPS 468
663 > #define T_WEBIRC 469
664 > #define TBOOL 470
665 > #define THROTTLE_COUNT 471
666 > #define THROTTLE_TIME 472
667 > #define TKLINE_EXPIRE_NOTICES 473
668 > #define TMASKED 474
669 > #define TRUE_NO_OPER_FLOOD 475
670 > #define TS_MAX_DELTA 476
671 > #define TS_WARN_DELTA 477
672 > #define TWODOTS 478
673 > #define TYPE 479
674 > #define UNKLINE 480
675 > #define USE_EGD 481
676 > #define USE_LOGGING 482
677 > #define USER 483
678 > #define VHOST 484
679 > #define VHOST6 485
680 > #define WARN_NO_CONNECT_BLOCK 486
681 > #define XLINE 487
682  
683 + /* Value type.  */
684   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
685 < typedef union YYSTYPE
685 > typedef union YYSTYPE YYSTYPE;
686 > union YYSTYPE
687   {
688 < /* Line 374 of yacc.c  */
621 < #line 109 "conf_parser.y"
688 > #line 147 "conf_parser.y" /* yacc.c:355  */
689  
690    int number;
691    char *string;
692  
693 <
694 < /* Line 374 of yacc.c  */
628 < #line 629 "conf_parser.c"
629 < } YYSTYPE;
693 > #line 694 "conf_parser.c" /* yacc.c:355  */
694 > };
695   # define YYSTYPE_IS_TRIVIAL 1
631 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
696   # define YYSTYPE_IS_DECLARED 1
697   #endif
698  
699 +
700   extern YYSTYPE yylval;
701  
637 #ifdef YYPARSE_PARAM
638 #if defined __STDC__ || defined __cplusplus
639 int yyparse (void *YYPARSE_PARAM);
640 #else
641 int yyparse ();
642 #endif
643 #else /* ! YYPARSE_PARAM */
644 #if defined __STDC__ || defined __cplusplus
702   int yyparse (void);
646 #else
647 int yyparse ();
648 #endif
649 #endif /* ! YYPARSE_PARAM */
703  
704 < #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
704 > #endif /* !YY_YY_CONF_PARSER_H_INCLUDED  */
705  
706   /* Copy the second part of user declarations.  */
707  
708 < /* Line 377 of yacc.c  */
656 < #line 657 "conf_parser.c"
708 > #line 709 "conf_parser.c" /* yacc.c:358  */
709  
710   #ifdef short
711   # undef short
# Line 667 | Line 719 | typedef unsigned char yytype_uint8;
719  
720   #ifdef YYTYPE_INT8
721   typedef YYTYPE_INT8 yytype_int8;
670 #elif (defined __STDC__ || defined __C99__FUNC__ \
671     || defined __cplusplus || defined _MSC_VER)
672 typedef signed char yytype_int8;
722   #else
723 < typedef short int yytype_int8;
723 > typedef signed char yytype_int8;
724   #endif
725  
726   #ifdef YYTYPE_UINT16
# Line 691 | Line 740 | typedef short int yytype_int16;
740   #  define YYSIZE_T __SIZE_TYPE__
741   # elif defined size_t
742   #  define YYSIZE_T size_t
743 < # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
695 <     || defined __cplusplus || defined _MSC_VER)
743 > # elif ! defined YYSIZE_T
744   #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
745   #  define YYSIZE_T size_t
746   # else
# Line 714 | Line 762 | typedef short int yytype_int16;
762   # endif
763   #endif
764  
765 + #ifndef YY_ATTRIBUTE
766 + # if (defined __GNUC__                                               \
767 +      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
768 +     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
769 + #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
770 + # else
771 + #  define YY_ATTRIBUTE(Spec) /* empty */
772 + # endif
773 + #endif
774 +
775 + #ifndef YY_ATTRIBUTE_PURE
776 + # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
777 + #endif
778 +
779 + #ifndef YY_ATTRIBUTE_UNUSED
780 + # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
781 + #endif
782 +
783 + #if !defined _Noreturn \
784 +     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
785 + # if defined _MSC_VER && 1200 <= _MSC_VER
786 + #  define _Noreturn __declspec (noreturn)
787 + # else
788 + #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
789 + # endif
790 + #endif
791 +
792   /* Suppress unused-variable warnings by "using" E.  */
793   #if ! defined lint || defined __GNUC__
794   # define YYUSE(E) ((void) (E))
# Line 721 | Line 796 | typedef short int yytype_int16;
796   # define YYUSE(E) /* empty */
797   #endif
798  
799 < /* Identity function, used to suppress warnings about constant conditions.  */
800 < #ifndef lint
801 < # define YYID(N) (N)
802 < #else
803 < #if (defined __STDC__ || defined __C99__FUNC__ \
804 <     || defined __cplusplus || defined _MSC_VER)
805 < static int
806 < YYID (int yyi)
799 > #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
800 > /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
801 > # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
802 >    _Pragma ("GCC diagnostic push") \
803 >    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
804 >    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
805 > # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
806 >    _Pragma ("GCC diagnostic pop")
807   #else
808 < static int
734 < YYID (yyi)
735 <    int yyi;
808 > # define YY_INITIAL_VALUE(Value) Value
809   #endif
810 < {
811 <  return yyi;
812 < }
810 > #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
811 > # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
812 > # define YY_IGNORE_MAYBE_UNINITIALIZED_END
813 > #endif
814 > #ifndef YY_INITIAL_VALUE
815 > # define YY_INITIAL_VALUE(Value) /* Nothing. */
816   #endif
817  
818 +
819   #if ! defined yyoverflow || YYERROR_VERBOSE
820  
821   /* The parser invokes alloca or malloc; define the necessary symbols.  */
# Line 756 | Line 833 | YYID (yyi)
833   #    define alloca _alloca
834   #   else
835   #    define YYSTACK_ALLOC alloca
836 < #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
760 <     || defined __cplusplus || defined _MSC_VER)
836 > #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
837   #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
838        /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
839   #     ifndef EXIT_SUCCESS
# Line 769 | Line 845 | YYID (yyi)
845   # endif
846  
847   # ifdef YYSTACK_ALLOC
848 <   /* Pacify GCC's `empty if-body' warning.  */
849 < #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
848 >   /* Pacify GCC's 'empty if-body' warning.  */
849 > #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
850   #  ifndef YYSTACK_ALLOC_MAXIMUM
851      /* The OS might guarantee only one guard page at the bottom of the stack,
852         and a page size can be as small as 4096 bytes.  So we cannot safely
# Line 786 | Line 862 | YYID (yyi)
862   #  endif
863   #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
864         && ! ((defined YYMALLOC || defined malloc) \
865 <             && (defined YYFREE || defined free)))
865 >             && (defined YYFREE || defined free)))
866   #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
867   #   ifndef EXIT_SUCCESS
868   #    define EXIT_SUCCESS 0
# Line 794 | Line 870 | YYID (yyi)
870   #  endif
871   #  ifndef YYMALLOC
872   #   define YYMALLOC malloc
873 < #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
798 <     || defined __cplusplus || defined _MSC_VER)
873 > #   if ! defined malloc && ! defined EXIT_SUCCESS
874   void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
875   #   endif
876   #  endif
877   #  ifndef YYFREE
878   #   define YYFREE free
879 < #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
805 <     || defined __cplusplus || defined _MSC_VER)
879 > #   if ! defined free && ! defined EXIT_SUCCESS
880   void free (void *); /* INFRINGES ON USER NAME SPACE */
881   #   endif
882   #  endif
# Line 812 | Line 886 | void free (void *); /* INFRINGES ON USER
886  
887   #if (! defined yyoverflow \
888       && (! defined __cplusplus \
889 <         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
889 >         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
890  
891   /* A type that is properly aligned for any stack member.  */
892   union yyalloc
# Line 837 | Line 911 | union yyalloc
911     elements in the stack, and YYPTR gives the new location of the
912     stack.  Advance YYPTR to a properly aligned location for the next
913     stack.  */
914 < # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
915 <    do                                                                  \
916 <      {                                                                 \
917 <        YYSIZE_T yynewbytes;                                            \
918 <        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
919 <        Stack = &yyptr->Stack_alloc;                                    \
920 <        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
921 <        yyptr += yynewbytes / sizeof (*yyptr);                          \
922 <      }                                                                 \
923 <    while (YYID (0))
914 > # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
915 >    do                                                                  \
916 >      {                                                                 \
917 >        YYSIZE_T yynewbytes;                                            \
918 >        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
919 >        Stack = &yyptr->Stack_alloc;                                    \
920 >        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
921 >        yyptr += yynewbytes / sizeof (*yyptr);                          \
922 >      }                                                                 \
923 >    while (0)
924  
925   #endif
926  
# Line 865 | Line 939 | union yyalloc
939            for (yyi = 0; yyi < (Count); yyi++)   \
940              (Dst)[yyi] = (Src)[yyi];            \
941          }                                       \
942 <      while (YYID (0))
942 >      while (0)
943   #  endif
944   # endif
945   #endif /* !YYCOPY_NEEDED */
# Line 873 | Line 947 | union yyalloc
947   /* YYFINAL -- State number of the termination state.  */
948   #define YYFINAL  2
949   /* YYLAST -- Last index in YYTABLE.  */
950 < #define YYLAST   1206
950 > #define YYLAST   1377
951  
952   /* YYNTOKENS -- Number of terminals.  */
953 < #define YYNTOKENS  220
953 > #define YYNTOKENS  239
954   /* YYNNTS -- Number of nonterminals.  */
955 < #define YYNNTS  283
955 > #define YYNNTS  297
956   /* YYNRULES -- Number of rules.  */
957 < #define YYNRULES  627
958 < /* YYNRULES -- Number of states.  */
959 < #define YYNSTATES  1228
957 > #define YYNRULES  669
958 > /* YYNSTATES -- Number of states.  */
959 > #define YYNSTATES  1318
960  
961 < /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
961 > /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
962 >   by yylex, with out-of-bounds checking.  */
963   #define YYUNDEFTOK  2
964 < #define YYMAXUTOK   469
964 > #define YYMAXUTOK   487
965  
966 < #define YYTRANSLATE(YYX)                                                \
966 > #define YYTRANSLATE(YYX)                                                \
967    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
968  
969 < /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
969 > /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
970 >   as returned by yylex, without out-of-bounds checking.  */
971   static const yytype_uint8 yytranslate[] =
972   {
973         0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
974         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
975         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
976         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
977 <       2,     2,     2,     2,   219,     2,     2,     2,     2,     2,
978 <       2,     2,     2,     2,     2,     2,     2,     2,     2,   215,
979 <       2,   218,     2,     2,     2,     2,     2,     2,     2,     2,
977 >       2,     2,     2,     2,   237,     2,     2,     2,     2,     2,
978 >       2,     2,     2,     2,     2,     2,     2,     2,   238,   233,
979 >       2,   236,     2,     2,     2,     2,     2,     2,     2,     2,
980         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
981         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
982         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
983         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
984         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
985 <       2,     2,     2,   217,     2,   216,     2,     2,     2,     2,
985 >       2,     2,     2,   235,     2,   234,     2,     2,     2,     2,
986         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
987         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
988         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
# Line 940 | Line 1016 | static const yytype_uint8 yytranslate[]
1016       175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1017       185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1018       195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1019 <     205,   206,   207,   208,   209,   210,   211,   212,   213,   214
1019 >     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1020 >     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1021 >     225,   226,   227,   228,   229,   230,   231,   232
1022   };
1023  
1024   #if YYDEBUG
1025 < /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
948 <   YYRHS.  */
949 < static const yytype_uint16 yyprhs[] =
950 < {
951 <       0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
952 <      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
953 <      39,    41,    43,    45,    47,    50,    53,    54,    56,    59,
954 <      63,    67,    71,    75,    79,    80,    82,    85,    89,    93,
955 <      97,   103,   106,   108,   110,   112,   115,   120,   125,   131,
956 <     134,   136,   138,   140,   142,   144,   146,   148,   150,   152,
957 <     154,   156,   158,   160,   162,   164,   166,   169,   174,   179,
958 <     183,   185,   187,   189,   193,   195,   197,   199,   204,   209,
959 <     214,   219,   224,   229,   234,   239,   244,   249,   254,   259,
960 <     264,   270,   273,   275,   277,   279,   281,   284,   289,   294,
961 <     299,   305,   308,   310,   312,   314,   317,   322,   323,   330,
962 <     333,   335,   337,   339,   341,   344,   349,   354,   359,   360,
963 <     366,   370,   372,   374,   376,   378,   380,   382,   384,   386,
964 <     387,   394,   397,   399,   401,   403,   405,   407,   409,   411,
965 <     413,   415,   418,   423,   428,   433,   438,   443,   448,   449,
966 <     455,   459,   461,   463,   465,   467,   469,   471,   473,   475,
967 <     477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
968 <     497,   499,   501,   502,   508,   512,   514,   516,   518,   520,
969 <     522,   524,   526,   528,   530,   532,   534,   536,   538,   540,
970 <     542,   544,   546,   548,   550,   552,   553,   560,   563,   565,
971 <     567,   569,   571,   573,   575,   577,   579,   581,   583,   585,
972 <     587,   589,   591,   593,   596,   601,   606,   611,   616,   621,
973 <     626,   631,   636,   641,   646,   651,   656,   661,   666,   667,
974 <     674,   675,   681,   685,   687,   689,   691,   693,   696,   698,
975 <     700,   702,   704,   706,   709,   710,   716,   720,   722,   724,
976 <     728,   733,   738,   739,   746,   749,   751,   753,   755,   757,
977 <     759,   761,   763,   765,   767,   770,   775,   780,   785,   790,
978 <     791,   797,   801,   803,   805,   807,   809,   811,   813,   815,
979 <     817,   819,   821,   826,   831,   836,   837,   844,   847,   849,
980 <     851,   853,   855,   858,   863,   868,   873,   879,   882,   884,
981 <     886,   888,   893,   894,   901,   904,   906,   908,   910,   912,
982 <     915,   920,   925,   926,   932,   936,   938,   940,   942,   944,
983 <     946,   948,   950,   952,   954,   956,   958,   959,   966,   969,
984 <     971,   973,   975,   978,   983,   984,   990,   994,   996,   998,
985 <    1000,  1002,  1004,  1006,  1008,  1010,  1012,  1014,  1016,  1017,
986 <    1024,  1027,  1029,  1031,  1033,  1035,  1037,  1039,  1041,  1043,
987 <    1045,  1047,  1049,  1051,  1053,  1055,  1058,  1063,  1068,  1073,
988 <    1078,  1083,  1088,  1093,  1098,  1099,  1105,  1109,  1111,  1113,
989 <    1115,  1120,  1125,  1130,  1135,  1140,  1141,  1148,  1149,  1155,
990 <    1159,  1161,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1181,
991 <    1186,  1187,  1194,  1197,  1199,  1201,  1203,  1205,  1210,  1215,
992 <    1221,  1224,  1226,  1228,  1230,  1235,  1236,  1243,  1244,  1250,
993 <    1254,  1256,  1258,  1261,  1263,  1265,  1267,  1269,  1271,  1276,
994 <    1281,  1287,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
995 <    1306,  1308,  1310,  1312,  1314,  1316,  1318,  1320,  1322,  1324,
996 <    1326,  1328,  1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,
997 <    1346,  1348,  1350,  1352,  1354,  1356,  1358,  1360,  1362,  1364,
998 <    1366,  1368,  1370,  1372,  1374,  1376,  1378,  1380,  1382,  1384,
999 <    1386,  1388,  1390,  1392,  1397,  1402,  1407,  1412,  1417,  1422,
1000 <    1427,  1432,  1437,  1442,  1447,  1452,  1457,  1462,  1467,  1472,
1001 <    1477,  1482,  1487,  1492,  1497,  1502,  1507,  1512,  1517,  1522,
1002 <    1527,  1532,  1537,  1542,  1547,  1552,  1557,  1562,  1567,  1572,
1003 <    1577,  1582,  1587,  1592,  1597,  1602,  1607,  1612,  1617,  1622,
1004 <    1623,  1629,  1633,  1635,  1637,  1639,  1641,  1643,  1645,  1647,
1005 <    1649,  1651,  1653,  1655,  1657,  1659,  1661,  1663,  1665,  1667,
1006 <    1669,  1671,  1673,  1675,  1676,  1682,  1686,  1688,  1690,  1692,
1007 <    1694,  1696,  1698,  1700,  1702,  1704,  1706,  1708,  1710,  1712,
1008 <    1714,  1716,  1718,  1720,  1722,  1724,  1726,  1728,  1733,  1738,
1009 <    1743,  1749,  1752,  1754,  1756,  1758,  1760,  1762,  1764,  1766,
1010 <    1768,  1770,  1772,  1774,  1776,  1778,  1780,  1782,  1784,  1789,
1011 <    1794,  1799,  1804,  1809,  1814,  1819,  1824,  1829,  1834,  1839,
1012 <    1844,  1849,  1854,  1860,  1863,  1865,  1867,  1869,  1871,  1873,
1013 <    1875,  1877,  1879,  1884,  1889,  1894,  1899,  1904
1014 < };
1015 <
1016 < /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1017 < static const yytype_int16 yyrhs[] =
1018 < {
1019 <     221,     0,    -1,    -1,   221,   222,    -1,   254,    -1,   260,
1020 <      -1,   274,    -1,   477,    -1,   292,    -1,   310,    -1,   324,
1021 <      -1,   232,    -1,   494,    -1,   339,    -1,   346,    -1,   350,
1022 <      -1,   360,    -1,   369,    -1,   389,    -1,   399,    -1,   405,
1023 <      -1,   419,    -1,   409,    -1,   227,    -1,     1,   215,    -1,
1024 <       1,   216,    -1,    -1,   224,    -1,    99,   223,    -1,    99,
1025 <     138,   223,    -1,    99,   139,   223,    -1,    99,   140,   223,
1026 <      -1,    99,   141,   223,    -1,    99,   142,   223,    -1,    -1,
1027 <     226,    -1,    99,   225,    -1,    99,     9,   225,    -1,    99,
1028 <      10,   225,    -1,    99,    11,   225,    -1,    88,   217,   228,
1029 <     216,   215,    -1,   228,   229,    -1,   229,    -1,   230,    -1,
1030 <     231,    -1,     1,   215,    -1,    87,   218,   118,   215,    -1,
1031 <     113,   218,   118,   215,    -1,   146,   217,   233,   216,   215,
1032 <      -1,   233,   234,    -1,   234,    -1,   245,    -1,   250,    -1,
1033 <     253,    -1,   247,    -1,   248,    -1,   249,    -1,   252,    -1,
1034 <     243,    -1,   242,    -1,   251,    -1,   246,    -1,   241,    -1,
1035 <     235,    -1,   236,    -1,   244,    -1,     1,   215,    -1,   132,
1036 <     218,   237,   215,    -1,   133,   218,   239,   215,    -1,   237,
1037 <     219,   238,    -1,   238,    -1,   134,    -1,   135,    -1,   239,
1038 <     219,   240,    -1,   240,    -1,   134,    -1,   135,    -1,   130,
1039 <     218,   118,   215,    -1,   128,   218,   118,   215,    -1,   131,
1040 <     218,   118,   215,    -1,   171,   218,   118,   215,    -1,    89,
1041 <     218,   118,   215,    -1,   147,   218,   118,   215,    -1,    24,
1042 <     218,   118,   215,    -1,    92,   218,   118,   215,    -1,    91,
1043 <     218,   118,   215,    -1,   209,   218,   118,   215,    -1,   210,
1044 <     218,   118,   215,    -1,   181,   218,    99,   215,    -1,    57,
1045 <     218,   160,   215,    -1,     4,   217,   255,   216,   215,    -1,
1046 <     255,   256,    -1,   256,    -1,   257,    -1,   259,    -1,   258,
1047 <      -1,     1,   215,    -1,    89,   218,   118,   215,    -1,    31,
1048 <     218,   118,   215,    -1,    24,   218,   118,   215,    -1,    71,
1049 <     217,   261,   216,   215,    -1,   261,   262,    -1,   262,    -1,
1050 <     263,    -1,   264,    -1,     1,   215,    -1,   208,   218,   160,
1051 <     215,    -1,    -1,   265,   214,   217,   266,   216,   215,    -1,
1052 <     266,   267,    -1,   267,    -1,   268,    -1,   270,    -1,   269,
1053 <      -1,     1,   215,    -1,    89,   218,   118,   215,    -1,   213,
1054 <     218,   226,   215,    -1,   213,   218,   195,   215,    -1,    -1,
1055 <     151,   271,   218,   272,   215,    -1,   272,   219,   273,    -1,
1056 <     273,    -1,   206,    -1,   102,    -1,    40,    -1,   174,    -1,
1057 <      64,    -1,    62,    -1,   173,    -1,    -1,   102,   275,   217,
1058 <     276,   216,   215,    -1,   276,   277,    -1,   277,    -1,   278,
1059 <      -1,   279,    -1,   280,    -1,   284,    -1,   283,    -1,   281,
1060 <      -1,   282,    -1,   288,    -1,     1,   215,    -1,    89,   218,
1061 <     118,   215,    -1,   206,   218,   118,   215,    -1,   112,   218,
1062 <     118,   215,    -1,    32,   218,   160,   215,    -1,   129,   218,
1063 <     118,   215,    -1,    17,   218,   118,   215,    -1,    -1,   192,
1064 <     285,   218,   286,   215,    -1,   286,   219,   287,    -1,   287,
1065 <      -1,   166,    -1,   169,    -1,   170,    -1,   172,    -1,   173,
1066 <      -1,   176,    -1,    51,    -1,   189,    -1,   182,    -1,   185,
1067 <      -1,   193,    -1,   190,    -1,   175,    -1,   183,    -1,   187,
1068 <      -1,   177,    -1,   199,    -1,   167,    -1,   168,    -1,   180,
1069 <      -1,    -1,    36,   289,   218,   290,   215,    -1,   290,   219,
1070 <     291,    -1,   291,    -1,    47,    -1,   125,    -1,    64,    -1,
1071 <     205,    -1,   174,    -1,   194,    -1,   211,    -1,    40,    -1,
1072 <      25,    -1,   200,    -1,   124,    -1,     4,    -1,    94,    -1,
1073 <     183,    -1,   198,    -1,   106,    -1,   126,    -1,   188,    -1,
1074 <      87,    -1,    -1,    17,   293,   217,   294,   216,   215,    -1,
1075 <     294,   295,    -1,   295,    -1,   296,    -1,   307,    -1,   308,
1076 <      -1,   297,    -1,   298,    -1,   309,    -1,   299,    -1,   300,
1077 <      -1,   301,    -1,   302,    -1,   303,    -1,   304,    -1,   305,
1078 <      -1,   306,    -1,     1,   215,    -1,    89,   218,   118,   215,
1079 <      -1,   115,   218,   224,   215,    -1,   116,   218,   224,   215,
1080 <      -1,   101,   218,    99,   215,    -1,    19,   218,   224,   215,
1081 <      -1,    81,   218,    99,   215,    -1,    76,   218,    99,   215,
1082 <      -1,    78,   218,    99,   215,    -1,    77,   218,    99,   215,
1083 <      -1,   143,   218,   226,   215,    -1,   184,   218,   226,   215,
1084 <      -1,    15,   218,    99,   215,    -1,    16,   218,    99,   215,
1085 <      -1,   100,   218,    99,   215,    -1,    -1,    70,   311,   217,
1086 <     316,   216,   215,    -1,    -1,    36,   313,   218,   314,   215,
1087 <      -1,   314,   219,   315,    -1,   315,    -1,   191,    -1,    51,
1088 <      -1,   186,    -1,   316,   317,    -1,   317,    -1,   318,    -1,
1089 <     312,    -1,   322,    -1,   323,    -1,     1,   215,    -1,    -1,
1090 <     117,   218,   320,   319,   215,    -1,   320,   219,   321,    -1,
1091 <     321,    -1,    99,    -1,    99,   164,    99,    -1,    61,   218,
1092 <     118,   215,    -1,    56,   218,   118,   215,    -1,    -1,    48,
1093 <     325,   217,   326,   216,   215,    -1,   326,   327,    -1,   327,
1094 <      -1,   328,    -1,   329,    -1,   330,    -1,   332,    -1,   336,
1095 <      -1,   337,    -1,   338,    -1,   331,    -1,     1,   215,    -1,
1096 <     206,   218,   118,   215,    -1,   112,   218,   118,   215,    -1,
1097 <      17,   218,   118,   215,    -1,    32,   218,   160,   215,    -1,
1098 <      -1,    36,   333,   218,   334,   215,    -1,   334,   219,   335,
1099 <      -1,   335,    -1,   154,    -1,    33,    -1,    65,    -1,    49,
1100 <      -1,    13,    -1,    98,    -1,    43,    -1,   137,    -1,    90,
1101 <      -1,   153,   218,   118,   215,    -1,   122,   218,   118,   215,
1102 <      -1,   121,   218,    99,   215,    -1,    -1,   136,   340,   217,
1103 <     341,   216,   215,    -1,   341,   342,    -1,   342,    -1,   343,
1104 <      -1,   344,    -1,   345,    -1,     1,   215,    -1,   120,   218,
1105 <     118,   215,    -1,    14,   218,   118,   215,    -1,    93,   218,
1106 <     118,   215,    -1,   201,   217,   347,   216,   215,    -1,   347,
1107 <     348,    -1,   348,    -1,   349,    -1,     1,    -1,    89,   218,
1108 <     118,   215,    -1,    -1,   149,   351,   217,   352,   216,   215,
1109 <      -1,   352,   353,    -1,   353,    -1,   354,    -1,   355,    -1,
1110 <     356,    -1,     1,   215,    -1,    89,   218,   118,   215,    -1,
1111 <     206,   218,   118,   215,    -1,    -1,   151,   357,   218,   358,
1112 <     215,    -1,   358,   219,   359,    -1,   359,    -1,    64,    -1,
1113 <     205,    -1,   174,    -1,   194,    -1,   211,    -1,   197,    -1,
1114 <     136,    -1,   196,    -1,   180,    -1,   165,    -1,    -1,   150,
1115 <     361,   217,   362,   216,   215,    -1,   362,   363,    -1,   363,
1116 <      -1,   364,    -1,   365,    -1,     1,   215,    -1,    89,   218,
1117 <     118,   215,    -1,    -1,   151,   366,   218,   367,   215,    -1,
1118 <     367,   219,   368,    -1,   368,    -1,    64,    -1,   205,    -1,
1119 <     174,    -1,   194,    -1,   211,    -1,   197,    -1,   136,    -1,
1120 <     196,    -1,   180,    -1,   165,    -1,    -1,    18,   370,   217,
1121 <     371,   216,   215,    -1,   371,   372,    -1,   372,    -1,   373,
1122 <      -1,   374,    -1,   375,    -1,   376,    -1,   377,    -1,   379,
1123 <      -1,   378,    -1,   388,    -1,   380,    -1,   385,    -1,   386,
1124 <      -1,   387,    -1,   384,    -1,     1,   215,    -1,    89,   218,
1125 <     118,   215,    -1,    56,   218,   118,   215,    -1,   209,   218,
1126 <     118,   215,    -1,   144,   218,   118,   215,    -1,     3,   218,
1127 <     118,   215,    -1,   117,   218,    99,   215,    -1,     5,   218,
1128 <     178,   215,    -1,     5,   218,   179,   215,    -1,    -1,    36,
1129 <     381,   218,   382,   215,    -1,   382,   219,   383,    -1,   383,
1130 <      -1,     8,    -1,   191,    -1,    32,   218,   160,   215,    -1,
1131 <      58,   218,   118,   215,    -1,    68,   218,   118,   215,    -1,
1132 <      17,   218,   118,   215,    -1,   171,   218,   118,   215,    -1,
1133 <      -1,    62,   390,   217,   395,   216,   215,    -1,    -1,   151,
1134 <     392,   218,   393,   215,    -1,   393,   219,   394,    -1,   394,
1135 <      -1,   123,    -1,   395,   396,    -1,   396,    -1,   397,    -1,
1136 <     398,    -1,   391,    -1,     1,    -1,   206,   218,   118,   215,
1137 <      -1,   120,   218,   118,   215,    -1,    -1,    23,   400,   217,
1138 <     401,   216,   215,    -1,   401,   402,    -1,   402,    -1,   403,
1139 <      -1,   404,    -1,     1,    -1,    61,   218,   118,   215,    -1,
1140 <     120,   218,   118,   215,    -1,    34,   217,   406,   216,   215,
1141 <      -1,   406,   407,    -1,   407,    -1,   408,    -1,     1,    -1,
1142 <      61,   218,   118,   215,    -1,    -1,    38,   410,   217,   415,
1143 <     216,   215,    -1,    -1,   151,   412,   218,   413,   215,    -1,
1144 <     413,   219,   414,    -1,   414,    -1,   123,    -1,   415,   416,
1145 <      -1,   416,    -1,   417,    -1,   418,    -1,   411,    -1,     1,
1146 <      -1,    89,   218,   118,   215,    -1,   120,   218,   118,   215,
1147 <      -1,    39,   217,   420,   216,   215,    -1,   420,   421,    -1,
1148 <     421,    -1,   430,    -1,   431,    -1,   433,    -1,   434,    -1,
1149 <     435,    -1,   436,    -1,   437,    -1,   438,    -1,   439,    -1,
1150 <     440,    -1,   429,    -1,   442,    -1,   443,    -1,   458,    -1,
1151 <     445,    -1,   447,    -1,   449,    -1,   448,    -1,   452,    -1,
1152 <     446,    -1,   453,    -1,   454,    -1,   455,    -1,   456,    -1,
1153 <     457,    -1,   470,    -1,   459,    -1,   460,    -1,   461,    -1,
1154 <     466,    -1,   450,    -1,   451,    -1,   476,    -1,   474,    -1,
1155 <     475,    -1,   432,    -1,   465,    -1,   441,    -1,   463,    -1,
1156 <     464,    -1,   428,    -1,   423,    -1,   424,    -1,   425,    -1,
1157 <     426,    -1,   427,    -1,   444,    -1,   422,    -1,   462,    -1,
1158 <       1,    -1,    83,   218,    99,   215,    -1,    42,   218,   160,
1159 <     215,    -1,    41,   218,   224,   215,    -1,    44,   218,   224,
1160 <     215,    -1,    45,   218,    99,   215,    -1,    46,   218,    99,
1161 <     215,    -1,   148,   218,   160,   215,    -1,    63,   218,   224,
1162 <     215,    -1,    55,   218,   160,   215,    -1,    59,   218,   160,
1163 <     215,    -1,    28,   218,   160,   215,    -1,    35,   218,   160,
1164 <     215,    -1,     6,   218,   160,   215,    -1,    80,   218,   224,
1165 <     215,    -1,    79,   218,    99,   215,    -1,    72,   218,    99,
1166 <     215,    -1,     7,   218,   224,   215,    -1,   163,   218,   224,
1167 <     215,    -1,   162,   218,   224,   215,    -1,    50,   218,    99,
1168 <     215,    -1,    60,   218,   160,   215,    -1,   212,   218,   160,
1169 <     215,    -1,   155,   218,   160,   215,    -1,   158,   218,   160,
1170 <     215,    -1,   159,   218,   160,   215,    -1,   157,   218,   160,
1171 <     215,    -1,   157,   218,   161,   215,    -1,   156,   218,   160,
1172 <     215,    -1,   156,   218,   161,   215,    -1,   110,   218,   224,
1173 <     215,    -1,    12,   218,   224,   215,    -1,   103,   218,   160,
1174 <     215,    -1,   111,   218,   224,   215,    -1,   152,   218,   160,
1175 <     215,    -1,    97,   218,   160,   215,    -1,   204,   218,   160,
1176 <     215,    -1,   105,   218,   160,   215,    -1,    84,   218,   118,
1177 <     215,    -1,    29,   218,    99,   215,    -1,    82,   218,    99,
1178 <     215,    -1,   207,   218,   160,   215,    -1,    30,   218,   118,
1179 <     215,    -1,   202,   218,   118,   215,    -1,   114,   218,   160,
1180 <     215,    -1,    26,   218,   160,   215,    -1,   203,   218,   224,
1181 <     215,    -1,    -1,   107,   467,   218,   468,   215,    -1,   468,
1182 <     219,   469,    -1,   469,    -1,   166,    -1,   169,    -1,   170,
1183 <      -1,   172,    -1,   173,    -1,   176,    -1,    51,    -1,   189,
1184 <      -1,   182,    -1,   185,    -1,   193,    -1,   190,    -1,   175,
1185 <      -1,   183,    -1,   187,    -1,   177,    -1,   199,    -1,   167,
1186 <      -1,   168,    -1,   180,    -1,    -1,   104,   471,   218,   472,
1187 <     215,    -1,   472,   219,   473,    -1,   473,    -1,   166,    -1,
1188 <     169,    -1,   170,    -1,   172,    -1,   173,    -1,   176,    -1,
1189 <     189,    -1,    51,    -1,   182,    -1,   185,    -1,   193,    -1,
1190 <     190,    -1,   175,    -1,   183,    -1,   187,    -1,   177,    -1,
1191 <     199,    -1,   167,    -1,   168,    -1,   180,    -1,    85,   218,
1192 <      99,   215,    -1,    86,   218,    99,   215,    -1,    20,   218,
1193 <      99,   215,    -1,    14,   217,   478,   216,   215,    -1,   478,
1194 <     479,    -1,   479,    -1,   487,    -1,   482,    -1,   483,    -1,
1195 <     484,    -1,   485,    -1,   486,    -1,   488,    -1,   489,    -1,
1196 <     490,    -1,   481,    -1,   491,    -1,   492,    -1,   493,    -1,
1197 <     480,    -1,     1,    -1,    27,   218,   160,   215,    -1,   127,
1198 <     218,   160,   215,    -1,    66,   218,   224,   215,    -1,    67,
1199 <     218,   224,   215,    -1,    75,   218,    99,   215,    -1,    74,
1200 <     218,    99,   215,    -1,   119,   218,   160,   215,    -1,    73,
1201 <     218,    99,   215,    -1,    22,   218,    99,   215,    -1,    21,
1202 <     218,    99,   215,    -1,    95,   218,   160,   215,    -1,    96,
1203 <     218,   160,   215,    -1,   108,   218,    99,   215,    -1,   109,
1204 <     218,   224,   215,    -1,   145,   217,   495,   216,   215,    -1,
1205 <     495,   496,    -1,   496,    -1,   497,    -1,   498,    -1,   500,
1206 <      -1,   501,    -1,   499,    -1,   502,    -1,     1,    -1,    37,
1207 <     218,   160,   215,    -1,    54,   218,   160,   215,    -1,    52,
1208 <     218,   118,   215,    -1,    69,   218,   224,   215,    -1,    51,
1209 <     218,   160,   215,    -1,    53,   218,   160,   215,    -1
1210 < };
1211 <
1212 < /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1025 >  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1026   static const yytype_uint16 yyrline[] =
1027   {
1028 <       0,   329,   329,   330,   333,   334,   335,   336,   337,   338,
1029 <     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
1030 <     349,   350,   351,   352,   353,   354,   358,   358,   359,   363,
1031 <     367,   371,   375,   379,   385,   385,   386,   387,   388,   389,
1032 <     396,   399,   399,   400,   400,   400,   402,   408,   415,   417,
1033 <     417,   418,   418,   419,   419,   420,   420,   421,   421,   422,
1034 <     422,   423,   423,   424,   424,   425,   426,   429,   430,   432,
1035 <     432,   433,   439,   447,   447,   448,   454,   462,   501,   560,
1036 <     588,   596,   611,   626,   635,   649,   658,   686,   716,   739,
1037 <     748,   750,   750,   751,   751,   752,   752,   754,   763,   772,
1038 <     784,   785,   785,   787,   787,   788,   790,   797,   797,   807,
1039 <     808,   810,   810,   811,   811,   813,   818,   821,   827,   826,
1040 <     832,   832,   833,   837,   841,   845,   849,   853,   857,   868,
1041 <     867,   959,   959,   960,   960,   960,   961,   961,   961,   962,
1042 <     962,   962,   964,   973,  1010,  1022,  1033,  1075,  1085,  1084,
1043 <    1090,  1090,  1091,  1095,  1099,  1103,  1107,  1111,  1115,  1119,
1044 <    1123,  1127,  1131,  1135,  1139,  1143,  1147,  1151,  1155,  1159,
1045 <    1163,  1167,  1174,  1173,  1179,  1179,  1180,  1184,  1188,  1192,
1046 <    1196,  1200,  1204,  1208,  1212,  1216,  1220,  1224,  1228,  1232,
1047 <    1236,  1240,  1244,  1248,  1252,  1263,  1262,  1308,  1308,  1309,
1048 <    1310,  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,  1318,
1049 <    1319,  1320,  1320,  1321,  1323,  1332,  1338,  1344,  1350,  1356,
1050 <    1362,  1368,  1374,  1380,  1386,  1393,  1399,  1405,  1415,  1414,
1051 <    1431,  1430,  1435,  1435,  1436,  1440,  1444,  1452,  1452,  1453,
1052 <    1453,  1453,  1453,  1453,  1455,  1455,  1457,  1457,  1459,  1473,
1053 <    1493,  1502,  1515,  1514,  1577,  1577,  1578,  1578,  1578,  1578,
1054 <    1579,  1579,  1579,  1580,  1580,  1582,  1617,  1630,  1639,  1651,
1055 <    1650,  1654,  1654,  1655,  1659,  1663,  1667,  1671,  1675,  1679,
1056 <    1683,  1687,  1693,  1712,  1722,  1736,  1735,  1751,  1751,  1752,
1057 <    1752,  1752,  1752,  1754,  1763,  1778,  1791,  1793,  1793,  1794,
1058 <    1794,  1796,  1812,  1811,  1826,  1826,  1827,  1827,  1827,  1827,
1059 <    1829,  1838,  1861,  1860,  1866,  1866,  1867,  1871,  1875,  1879,
1060 <    1883,  1887,  1891,  1895,  1899,  1903,  1913,  1912,  1928,  1928,
1061 <    1929,  1929,  1929,  1931,  1938,  1937,  1943,  1943,  1944,  1948,
1062 <    1952,  1956,  1960,  1964,  1968,  1972,  1976,  1980,  1990,  1989,
1063 <    2038,  2038,  2039,  2039,  2039,  2040,  2040,  2041,  2041,  2041,
1064 <    2042,  2042,  2042,  2043,  2043,  2044,  2046,  2055,  2064,  2090,
1065 <    2108,  2126,  2132,  2136,  2145,  2144,  2148,  2148,  2149,  2153,
1066 <    2159,  2170,  2181,  2192,  2201,  2220,  2219,  2283,  2282,  2286,
1067 <    2286,  2287,  2293,  2293,  2294,  2294,  2294,  2294,  2296,  2315,
1068 <    2325,  2324,  2347,  2347,  2348,  2348,  2348,  2350,  2356,  2365,
1069 <    2367,  2367,  2368,  2368,  2370,  2389,  2388,  2435,  2434,  2438,
1070 <    2438,  2439,  2445,  2445,  2446,  2446,  2446,  2446,  2448,  2454,
1071 <    2463,  2466,  2466,  2467,  2467,  2468,  2468,  2469,  2469,  2470,
1072 <    2470,  2471,  2471,  2472,  2473,  2474,  2474,  2475,  2475,  2476,
1073 <    2476,  2477,  2477,  2478,  2478,  2479,  2479,  2480,  2481,  2481,
1074 <    2482,  2482,  2483,  2483,  2484,  2484,  2485,  2485,  2486,  2487,
1075 <    2487,  2488,  2489,  2490,  2490,  2491,  2491,  2492,  2493,  2494,
1076 <    2495,  2495,  2496,  2499,  2504,  2510,  2516,  2522,  2527,  2532,
1077 <    2537,  2542,  2547,  2552,  2557,  2562,  2567,  2572,  2577,  2582,
1078 <    2587,  2592,  2598,  2609,  2614,  2619,  2624,  2629,  2634,  2637,
1079 <    2642,  2645,  2650,  2655,  2660,  2665,  2670,  2675,  2680,  2685,
1080 <    2690,  2701,  2706,  2711,  2716,  2725,  2734,  2739,  2744,  2750,
1081 <    2749,  2754,  2754,  2755,  2758,  2761,  2764,  2767,  2770,  2773,
1082 <    2776,  2779,  2782,  2785,  2788,  2791,  2794,  2797,  2800,  2803,
1083 <    2806,  2809,  2812,  2818,  2817,  2822,  2822,  2823,  2826,  2829,
1084 <    2832,  2835,  2838,  2841,  2844,  2847,  2850,  2853,  2856,  2859,
1085 <    2862,  2865,  2868,  2871,  2874,  2877,  2880,  2885,  2890,  2895,
1086 <    2904,  2907,  2907,  2908,  2909,  2909,  2910,  2910,  2911,  2911,
1087 <    2912,  2913,  2913,  2914,  2915,  2915,  2916,  2916,  2918,  2923,
1088 <    2928,  2933,  2938,  2943,  2948,  2953,  2958,  2963,  2968,  2973,
1089 <    2978,  2983,  2991,  2994,  2994,  2995,  2995,  2996,  2997,  2997,
1090 <    2998,  2999,  3001,  3007,  3013,  3022,  3036,  3042
1028 >       0,   383,   383,   384,   387,   388,   389,   390,   391,   392,
1029 >     393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
1030 >     403,   404,   405,   406,   407,   408,   409,   413,   413,   414,
1031 >     415,   416,   417,   418,   419,   420,   421,   424,   424,   425,
1032 >     426,   427,   428,   435,   438,   438,   439,   439,   439,   441,
1033 >     447,   454,   456,   456,   457,   458,   459,   460,   461,   462,
1034 >     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
1035 >     473,   474,   475,   476,   479,   480,   482,   482,   483,   489,
1036 >     497,   497,   498,   504,   512,   554,   612,   640,   648,   661,
1037 >     689,   704,   719,   728,   742,   751,   779,   809,   834,   856,
1038 >     878,   887,   889,   889,   890,   891,   892,   893,   895,   904,
1039 >     913,   926,   925,   943,   943,   944,   944,   944,   946,   952,
1040 >     961,   962,   962,   964,   964,   965,   967,   974,   974,   987,
1041 >     988,   990,   990,   991,   991,   993,  1001,  1004,  1010,  1009,
1042 >    1015,  1015,  1016,  1020,  1024,  1028,  1032,  1036,  1040,  1044,
1043 >    1048,  1059,  1058,  1138,  1138,  1139,  1140,  1141,  1142,  1143,
1044 >    1144,  1145,  1146,  1147,  1148,  1149,  1151,  1157,  1163,  1169,
1045 >    1180,  1186,  1192,  1203,  1210,  1209,  1215,  1215,  1216,  1220,
1046 >    1224,  1228,  1232,  1236,  1240,  1244,  1248,  1252,  1256,  1260,
1047 >    1264,  1268,  1272,  1276,  1280,  1284,  1288,  1292,  1296,  1300,
1048 >    1307,  1306,  1312,  1312,  1313,  1317,  1321,  1325,  1329,  1333,
1049 >    1337,  1341,  1345,  1349,  1353,  1357,  1361,  1365,  1369,  1373,
1050 >    1377,  1381,  1385,  1389,  1393,  1397,  1401,  1412,  1411,  1473,
1051 >    1473,  1474,  1475,  1476,  1477,  1478,  1479,  1480,  1481,  1482,
1052 >    1483,  1484,  1485,  1486,  1486,  1487,  1488,  1489,  1490,  1492,
1053 >    1498,  1504,  1510,  1516,  1522,  1528,  1534,  1540,  1546,  1552,
1054 >    1559,  1565,  1571,  1577,  1586,  1596,  1595,  1601,  1601,  1602,
1055 >    1606,  1617,  1616,  1623,  1622,  1627,  1627,  1628,  1632,  1636,
1056 >    1642,  1642,  1643,  1643,  1643,  1643,  1643,  1645,  1645,  1647,
1057 >    1647,  1649,  1663,  1681,  1687,  1697,  1696,  1738,  1738,  1739,
1058 >    1740,  1741,  1742,  1743,  1744,  1745,  1746,  1747,  1749,  1755,
1059 >    1761,  1767,  1779,  1778,  1784,  1784,  1785,  1789,  1793,  1797,
1060 >    1801,  1805,  1809,  1813,  1817,  1821,  1827,  1841,  1850,  1864,
1061 >    1863,  1878,  1878,  1879,  1879,  1879,  1879,  1881,  1887,  1893,
1062 >    1903,  1905,  1905,  1906,  1906,  1908,  1924,  1923,  1948,  1948,
1063 >    1949,  1949,  1949,  1949,  1951,  1957,  1977,  1976,  1982,  1982,
1064 >    1983,  1987,  1991,  1995,  1999,  2003,  2007,  2011,  2015,  2019,
1065 >    2029,  2028,  2049,  2049,  2050,  2050,  2050,  2052,  2059,  2058,
1066 >    2064,  2064,  2065,  2069,  2073,  2077,  2081,  2085,  2089,  2093,
1067 >    2097,  2101,  2111,  2110,  2182,  2182,  2183,  2184,  2185,  2186,
1068 >    2187,  2188,  2189,  2190,  2191,  2192,  2193,  2194,  2195,  2196,
1069 >    2197,  2199,  2205,  2211,  2217,  2230,  2243,  2249,  2255,  2259,
1070 >    2268,  2267,  2272,  2272,  2273,  2277,  2283,  2294,  2300,  2306,
1071 >    2312,  2328,  2327,  2353,  2353,  2354,  2354,  2354,  2356,  2376,
1072 >    2386,  2385,  2412,  2412,  2413,  2413,  2413,  2415,  2421,  2430,
1073 >    2432,  2432,  2433,  2433,  2435,  2453,  2452,  2475,  2475,  2476,
1074 >    2476,  2476,  2478,  2484,  2493,  2496,  2496,  2497,  2498,  2499,
1075 >    2500,  2501,  2502,  2503,  2504,  2505,  2506,  2507,  2508,  2509,
1076 >    2510,  2511,  2512,  2513,  2514,  2515,  2516,  2517,  2518,  2519,
1077 >    2520,  2521,  2522,  2523,  2524,  2525,  2526,  2527,  2528,  2529,
1078 >    2530,  2531,  2532,  2533,  2534,  2535,  2536,  2537,  2538,  2539,
1079 >    2540,  2541,  2542,  2543,  2544,  2545,  2546,  2547,  2550,  2555,
1080 >    2561,  2567,  2573,  2579,  2584,  2589,  2594,  2599,  2604,  2609,
1081 >    2614,  2619,  2624,  2629,  2634,  2639,  2644,  2650,  2661,  2666,
1082 >    2671,  2676,  2681,  2686,  2691,  2694,  2699,  2702,  2707,  2712,
1083 >    2717,  2722,  2727,  2732,  2737,  2742,  2747,  2752,  2757,  2762,
1084 >    2771,  2780,  2785,  2790,  2795,  2801,  2800,  2805,  2805,  2806,
1085 >    2809,  2812,  2815,  2818,  2821,  2824,  2827,  2830,  2833,  2836,
1086 >    2839,  2842,  2845,  2848,  2851,  2854,  2857,  2860,  2863,  2866,
1087 >    2869,  2875,  2874,  2879,  2879,  2880,  2883,  2886,  2889,  2892,
1088 >    2895,  2898,  2901,  2904,  2907,  2910,  2913,  2916,  2919,  2922,
1089 >    2925,  2928,  2931,  2934,  2937,  2942,  2947,  2952,  2961,  2964,
1090 >    2964,  2965,  2966,  2967,  2968,  2969,  2970,  2971,  2972,  2973,
1091 >    2974,  2975,  2976,  2977,  2978,  2979,  2981,  2986,  2991,  2996,
1092 >    3001,  3006,  3011,  3016,  3021,  3026,  3031,  3036,  3041,  3046,
1093 >    3054,  3057,  3057,  3058,  3059,  3060,  3061,  3062,  3063,  3064,
1094 >    3065,  3066,  3068,  3074,  3080,  3086,  3092,  3101,  3116,  3122
1095   };
1096   #endif
1097  
# Line 1287 | Line 1104 | static const char *const yytname[] =
1104    "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN", "BYTES",
1105    "KBYTES", "MBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CHANNEL",
1106    "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS", "CONNECT",
1107 <  "CONNECTFREQ", "DEFAULT_FLOODCOUNT", "DEFAULT_SPLIT_SERVER_COUNT",
1108 <  "DEFAULT_SPLIT_USER_COUNT", "DENY", "DESCRIPTION", "DIE", "DISABLE_AUTH",
1109 <  "DISABLE_FAKE_CHANNELS", "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT",
1110 <  "EGDPOOL_PATH", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1111 <  "FAILED_OPER_NOTICE", "IRCD_FLAGS", "FLATTEN_LINKS", "GECOS", "GENERAL",
1112 <  "GLINE", "GLINE_DURATION", "GLINE_ENABLE", "GLINE_EXEMPT",
1113 <  "GLINE_REQUEST_DURATION", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1114 <  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1115 <  "HIDDEN_NAME", "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SPOOF_IPS",
1107 >  "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE", "DEFAULT_FLOODCOUNT",
1108 >  "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1109 >  "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1110 >  "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT", "EGDPOOL_PATH", "EMAIL",
1111 >  "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1112 >  "FLATTEN_LINKS", "GECOS", "GENERAL", "GLINE", "GLINE_DURATION",
1113 >  "GLINE_ENABLE", "GLINE_EXEMPT", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1114 >  "GLINE_REQUEST_DURATION", "GLOBAL_KILL", "HAVENT_READ_CONF", "HIDDEN",
1115 >  "HIDDEN_NAME", "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS",
1116 >  "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SERVICES", "HIDE_SPOOF_IPS",
1117    "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
1118 <  "IP", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT",
1119 <  "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY",
1120 <  "LISTEN", "T_LOG", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANS_PER_OPER",
1121 <  "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1122 <  "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1123 <  "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1124 <  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1125 <  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1118 >  "INVITE_CLIENT_COUNT", "INVITE_CLIENT_TIME", "IP", "IRCD_AUTH",
1119 >  "IRCD_FLAGS", "IRCD_SID", "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "KILL",
1120 >  "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KNOCK_CLIENT_COUNT",
1121 >  "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY",
1122 >  "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANNELS", "MAX_GLOBAL",
1123 >  "MAX_IDENT", "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES",
1124 >  "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1125 >  "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD",
1126 >  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD", "NAME",
1127 >  "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME", "NICK",
1128    "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1129 <  "NUMBER", "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPERATOR",
1130 <  "OPERS_BYPASS_CALLERID", "OPER_ONLY_UMODES", "OPER_PASS_RESV",
1311 <  "OPER_SPY_T", "OPER_UMODES", "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME",
1129 >  "NUMBER", "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPER_ONLY_UMODES",
1130 >  "OPER_PASS_RESV", "OPER_UMODES", "OPERATOR", "OPERS_BYPASS_CALLERID",
1131    "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE",
1132 <  "PING_TIME", "PING_WARNING", "PORT", "QSTRING", "QUIET_ON_BAN", "REASON",
1133 <  "REDIRPORT", "REDIRSERV", "REGEX_T", "REHASH", "REMOTE", "REMOTEBAN",
1134 <  "RESTRICT_CHANNELS", "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE",
1135 <  "SSL_CERTIFICATE_FILE", "SSL_DH_PARAM_FILE", "T_SSL_CLIENT_METHOD",
1136 <  "T_SSL_SERVER_METHOD", "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT",
1137 <  "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD",
1138 <  "SERVERHIDE", "SERVERINFO", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1139 <  "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1140 <  "STATS_E_DISABLED", "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY",
1141 <  "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL", "TMASKED",
1142 <  "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "T_ALL", "T_BOTS",
1143 <  "T_SOFTCALLERID", "T_CALLERID", "T_CCONN", "T_CCONN_FULL",
1144 <  "T_SSL_CIPHER_LIST", "T_DEAF", "T_DEBUG", "T_DLINE", "T_EXTERNAL",
1145 <  "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_MAX_CLIENTS",
1146 <  "T_NCHANGE", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_SERVER",
1147 <  "T_SERVNOTICE", "T_SET", "T_SKILL", "T_SPY", "T_SSL", "T_UMODES",
1148 <  "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV", "T_UNXLINE",
1149 <  "T_GLOBOPS", "T_WALLOP", "T_RESTART", "T_SERVICE", "T_SERVICES_NAME",
1150 <  "THROTTLE_TIME", "TRUE_NO_OPER_FLOOD", "UNKLINE", "USER", "USE_EGD",
1151 <  "USE_LOGGING", "VHOST", "VHOST6", "XLINE", "WARN_NO_NLINE", "T_SIZE",
1152 <  "T_FILE", "';'", "'}'", "'{'", "'='", "','", "$accept", "conf",
1153 <  "conf_item", "timespec_", "timespec", "sizespec_", "sizespec",
1154 <  "modules_entry", "modules_items", "modules_item", "modules_module",
1155 <  "modules_path", "serverinfo_entry", "serverinfo_items",
1156 <  "serverinfo_item", "serverinfo_ssl_client_method",
1132 >  "PING_TIME", "PORT", "QSTRING", "RANDOM_IDLE", "REASON", "REDIRPORT",
1133 >  "REDIRSERV", "REHASH", "REMOTE", "REMOTEBAN", "RESV", "RESV_EXEMPT",
1134 >  "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE", "SECONDS", "MINUTES",
1135 >  "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1136 >  "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1137 >  "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1138 >  "SSL_CONNECTION_REQUIRED", "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1139 >  "SSL_MESSAGE_DIGEST_ALGORITHM", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1140 >  "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY",
1141 >  "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS", "T_CALLERID", "T_CCONN",
1142 >  "T_CLUSTER", "T_DEAF", "T_DEBUG", "T_DLINE", "T_EXTERNAL",
1143 >  "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS", "T_INVISIBLE", "T_IPV4",
1144 >  "T_IPV6", "T_LOCOPS", "T_LOG", "T_MAX_CLIENTS", "T_NCHANGE",
1145 >  "T_NONONREG", "T_RECVQ", "T_REJ", "T_RESTART", "T_SERVER", "T_SERVICE",
1146 >  "T_SERVICES_NAME", "T_SERVNOTICE", "T_SET", "T_SHARED", "T_SIZE",
1147 >  "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL", "T_SSL_CIPHER_LIST",
1148 >  "T_SSL_CLIENT_METHOD", "T_SSL_SERVER_METHOD", "T_SSLV3", "T_TLSV1",
1149 >  "T_UMODES", "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV",
1150 >  "T_UNXLINE", "T_WALLOP", "T_WALLOPS", "T_WEBIRC", "TBOOL",
1151 >  "THROTTLE_COUNT", "THROTTLE_TIME", "TKLINE_EXPIRE_NOTICES", "TMASKED",
1152 >  "TRUE_NO_OPER_FLOOD", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "TYPE",
1153 >  "UNKLINE", "USE_EGD", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1154 >  "WARN_NO_CONNECT_BLOCK", "XLINE", "';'", "'}'", "'{'", "'='", "','",
1155 >  "':'", "$accept", "conf", "conf_item", "timespec_", "timespec",
1156 >  "sizespec_", "sizespec", "modules_entry", "modules_items",
1157 >  "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1158 >  "serverinfo_items", "serverinfo_item", "serverinfo_ssl_client_method",
1159    "serverinfo_ssl_server_method", "client_method_types",
1160    "client_method_type_item", "server_method_types",
1161    "server_method_type_item", "serverinfo_ssl_certificate_file",
1162    "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1163 <  "serverinfo_ssl_cipher_list", "serverinfo_name", "serverinfo_sid",
1163 >  "serverinfo_ssl_cipher_list", "serverinfo_ssl_message_digest_algorithm",
1164 >  "serverinfo_ssl_dh_elliptic_curve", "serverinfo_name", "serverinfo_sid",
1165    "serverinfo_description", "serverinfo_network_name",
1166    "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1167 <  "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1168 <  "admin_item", "admin_name", "admin_email", "admin_description",
1169 <  "logging_entry", "logging_items", "logging_item", "logging_use_logging",
1170 <  "logging_file_entry", "$@1", "logging_file_items", "logging_file_item",
1171 <  "logging_file_name", "logging_file_size", "logging_file_type", "$@2",
1172 <  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@3",
1167 >  "serverinfo_max_clients", "serverinfo_max_nick_length",
1168 >  "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1169 >  "admin_items", "admin_item", "admin_name", "admin_email",
1170 >  "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1171 >  "motd_mask", "motd_file", "logging_entry", "logging_items",
1172 >  "logging_item", "logging_use_logging", "logging_file_entry", "$@2",
1173 >  "logging_file_items", "logging_file_item", "logging_file_name",
1174 >  "logging_file_size", "logging_file_type", "$@3",
1175 >  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@4",
1176    "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
1177 <  "oper_encrypted", "oper_rsa_public_key_file", "oper_class",
1178 <  "oper_umodes", "$@4", "oper_umodes_items", "oper_umodes_item",
1179 <  "oper_flags", "$@5", "oper_flags_items", "oper_flags_item",
1180 <  "class_entry", "$@6", "class_items", "class_item", "class_name",
1181 <  "class_ping_time", "class_ping_warning", "class_number_per_ip",
1182 <  "class_connectfreq", "class_max_number", "class_max_global",
1183 <  "class_max_local", "class_max_ident", "class_sendq", "class_recvq",
1184 <  "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1185 <  "class_number_per_cidr", "listen_entry", "$@7", "listen_flags", "$@8",
1186 <  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1187 <  "listen_port", "$@9", "port_items", "port_item", "listen_address",
1188 <  "listen_host", "auth_entry", "$@10", "auth_items", "auth_item",
1189 <  "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1190 <  "$@11", "auth_flags_items", "auth_flags_item", "auth_spoof",
1191 <  "auth_redir_serv", "auth_redir_port", "resv_entry", "$@12", "resv_items",
1192 <  "resv_item", "resv_creason", "resv_channel", "resv_nick",
1193 <  "service_entry", "service_items", "service_item", "service_name",
1194 <  "shared_entry", "$@13", "shared_items", "shared_item", "shared_name",
1195 <  "shared_user", "shared_type", "$@14", "shared_types", "shared_type_item",
1196 <  "cluster_entry", "$@15", "cluster_items", "cluster_item", "cluster_name",
1197 <  "cluster_type", "$@16", "cluster_types", "cluster_type_item",
1198 <  "connect_entry", "$@17", "connect_items", "connect_item", "connect_name",
1177 >  "oper_encrypted", "oper_rsa_public_key_file",
1178 >  "oper_ssl_certificate_fingerprint", "oper_ssl_connection_required",
1179 >  "oper_class", "oper_umodes", "$@5", "oper_umodes_items",
1180 >  "oper_umodes_item", "oper_flags", "$@6", "oper_flags_items",
1181 >  "oper_flags_item", "class_entry", "$@7", "class_items", "class_item",
1182 >  "class_name", "class_ping_time", "class_number_per_ip",
1183 >  "class_connectfreq", "class_max_channels", "class_max_number",
1184 >  "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
1185 >  "class_recvq", "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1186 >  "class_number_per_cidr", "class_min_idle", "class_max_idle",
1187 >  "class_flags", "$@8", "class_flags_items", "class_flags_item",
1188 >  "listen_entry", "$@9", "listen_flags", "$@10", "listen_flags_items",
1189 >  "listen_flags_item", "listen_items", "listen_item", "listen_port",
1190 >  "$@11", "port_items", "port_item", "listen_address", "listen_host",
1191 >  "auth_entry", "$@12", "auth_items", "auth_item", "auth_user",
1192 >  "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@13",
1193 >  "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1194 >  "auth_redir_port", "resv_entry", "$@14", "resv_items", "resv_item",
1195 >  "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1196 >  "service_items", "service_item", "service_name", "shared_entry", "$@15",
1197 >  "shared_items", "shared_item", "shared_name", "shared_user",
1198 >  "shared_type", "$@16", "shared_types", "shared_type_item",
1199 >  "cluster_entry", "$@17", "cluster_items", "cluster_item", "cluster_name",
1200 >  "cluster_type", "$@18", "cluster_types", "cluster_type_item",
1201 >  "connect_entry", "$@19", "connect_items", "connect_item", "connect_name",
1202    "connect_host", "connect_vhost", "connect_send_password",
1203 <  "connect_accept_password", "connect_port", "connect_aftype",
1204 <  "connect_flags", "$@18", "connect_flags_items", "connect_flags_item",
1205 <  "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1206 <  "connect_class", "connect_ssl_cipher_list", "kill_entry", "$@19",
1207 <  "kill_type", "$@20", "kill_type_items", "kill_type_item", "kill_items",
1208 <  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@21",
1203 >  "connect_accept_password", "connect_ssl_certificate_fingerprint",
1204 >  "connect_port", "connect_aftype", "connect_flags", "$@20",
1205 >  "connect_flags_items", "connect_flags_item", "connect_encrypted",
1206 >  "connect_hub_mask", "connect_leaf_mask", "connect_class",
1207 >  "connect_ssl_cipher_list", "kill_entry", "$@21", "kill_items",
1208 >  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@22",
1209    "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1210 <  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@22",
1383 <  "gecos_flags", "$@23", "gecos_flags_items", "gecos_flags_item",
1210 >  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@23",
1211    "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1212    "general_entry", "general_items", "general_item", "general_max_watch",
1213 <  "general_gline_enable", "general_gline_duration",
1214 <  "general_gline_request_duration", "general_gline_min_cidr",
1215 <  "general_gline_min_cidr6", "general_tkline_expire_notices",
1216 <  "general_kill_chase_time_limit", "general_hide_spoof_ips",
1217 <  "general_ignore_bogus_ts", "general_disable_remote_commands",
1213 >  "general_cycle_on_host_change", "general_gline_enable",
1214 >  "general_gline_duration", "general_gline_request_duration",
1215 >  "general_gline_min_cidr", "general_gline_min_cidr6",
1216 >  "general_tkline_expire_notices", "general_kill_chase_time_limit",
1217 >  "general_hide_spoof_ips", "general_ignore_bogus_ts",
1218    "general_failed_oper_notice", "general_anti_nick_flood",
1219    "general_max_nick_time", "general_max_nick_changes",
1220    "general_max_accept", "general_anti_spam_exit_message_time",
1221    "general_ts_warn_delta", "general_ts_max_delta",
1222    "general_havent_read_conf", "general_invisible_on_connect",
1223 <  "general_warn_no_nline", "general_stats_e_disabled",
1223 >  "general_warn_no_connect_block", "general_stats_e_disabled",
1224    "general_stats_o_oper_only", "general_stats_P_oper_only",
1225 <  "general_stats_k_oper_only", "general_stats_i_oper_only",
1226 <  "general_pace_wait", "general_caller_id_wait",
1227 <  "general_opers_bypass_callerid", "general_pace_wait_simple",
1228 <  "general_short_motd", "general_no_oper_flood",
1229 <  "general_true_no_oper_flood", "general_oper_pass_resv",
1230 <  "general_message_locale", "general_dots_in_ident", "general_max_targets",
1225 >  "general_stats_u_oper_only", "general_stats_k_oper_only",
1226 >  "general_stats_i_oper_only", "general_pace_wait",
1227 >  "general_caller_id_wait", "general_opers_bypass_callerid",
1228 >  "general_pace_wait_simple", "general_short_motd",
1229 >  "general_no_oper_flood", "general_true_no_oper_flood",
1230 >  "general_oper_pass_resv", "general_dots_in_ident", "general_max_targets",
1231    "general_use_egd", "general_egdpool_path", "general_services_name",
1232 <  "general_ping_cookie", "general_disable_auth", "general_throttle_time",
1233 <  "general_oper_umodes", "$@24", "umode_oitems", "umode_oitem",
1234 <  "general_oper_only_umodes", "$@25", "umode_items", "umode_item",
1235 <  "general_min_nonwildcard", "general_min_nonwildcard_simple",
1236 <  "general_default_floodcount", "channel_entry", "channel_items",
1237 <  "channel_item", "channel_disable_fake_channels",
1238 <  "channel_restrict_channels", "channel_knock_delay",
1239 <  "channel_knock_delay_channel", "channel_max_chans_per_user",
1240 <  "channel_max_chans_per_oper", "channel_quiet_on_ban", "channel_max_bans",
1232 >  "general_ping_cookie", "general_disable_auth", "general_throttle_count",
1233 >  "general_throttle_time", "general_oper_umodes", "$@24", "umode_oitems",
1234 >  "umode_oitem", "general_oper_only_umodes", "$@25", "umode_items",
1235 >  "umode_item", "general_min_nonwildcard",
1236 >  "general_min_nonwildcard_simple", "general_default_floodcount",
1237 >  "channel_entry", "channel_items", "channel_item",
1238 >  "channel_disable_fake_channels", "channel_invite_client_count",
1239 >  "channel_invite_client_time", "channel_knock_client_count",
1240 >  "channel_knock_client_time", "channel_knock_delay_channel",
1241 >  "channel_max_channels", "channel_max_bans",
1242    "channel_default_split_user_count", "channel_default_split_server_count",
1243    "channel_no_create_on_split", "channel_no_join_on_split",
1244    "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
1245    "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1246 <  "serverhide_hide_servers", "serverhide_hidden_name",
1246 >  "serverhide_disable_remote_commands", "serverhide_hide_servers",
1247 >  "serverhide_hide_services", "serverhide_hidden_name",
1248    "serverhide_links_delay", "serverhide_hidden",
1249 <  "serverhide_hide_server_ips", YY_NULL
1249 >  "serverhide_hide_server_ips", YY_NULLPTR
1250   };
1251   #endif
1252  
1253   # ifdef YYPRINT
1254 < /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1255 <   token YYLEX-NUM.  */
1254 > /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1255 >   (internal) symbol number NUM (which must be that of a token).  */
1256   static const yytype_uint16 yytoknum[] =
1257   {
1258         0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
# Line 1447 | Line 1276 | static const yytype_uint16 yytoknum[] =
1276       435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1277       445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1278       455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1279 <     465,   466,   467,   468,   469,    59,   125,   123,    61,    44
1279 >     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1280 >     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1281 >     485,   486,   487,    59,   125,   123,    61,    44,    58
1282   };
1283   # endif
1284  
1285 < /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1455 < static const yytype_uint16 yyr1[] =
1456 < {
1457 <       0,   220,   221,   221,   222,   222,   222,   222,   222,   222,
1458 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
1459 <     222,   222,   222,   222,   222,   222,   223,   223,   224,   224,
1460 <     224,   224,   224,   224,   225,   225,   226,   226,   226,   226,
1461 <     227,   228,   228,   229,   229,   229,   230,   231,   232,   233,
1462 <     233,   234,   234,   234,   234,   234,   234,   234,   234,   234,
1463 <     234,   234,   234,   234,   234,   234,   234,   235,   236,   237,
1464 <     237,   238,   238,   239,   239,   240,   240,   241,   242,   243,
1465 <     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
1466 <     254,   255,   255,   256,   256,   256,   256,   257,   258,   259,
1467 <     260,   261,   261,   262,   262,   262,   263,   265,   264,   266,
1468 <     266,   267,   267,   267,   267,   268,   269,   269,   271,   270,
1469 <     272,   272,   273,   273,   273,   273,   273,   273,   273,   275,
1470 <     274,   276,   276,   277,   277,   277,   277,   277,   277,   277,
1471 <     277,   277,   278,   279,   280,   281,   282,   283,   285,   284,
1472 <     286,   286,   287,   287,   287,   287,   287,   287,   287,   287,
1473 <     287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
1474 <     287,   287,   289,   288,   290,   290,   291,   291,   291,   291,
1475 <     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
1476 <     291,   291,   291,   291,   291,   293,   292,   294,   294,   295,
1477 <     295,   295,   295,   295,   295,   295,   295,   295,   295,   295,
1478 <     295,   295,   295,   295,   296,   297,   298,   299,   300,   301,
1479 <     302,   303,   304,   305,   306,   307,   308,   309,   311,   310,
1480 <     313,   312,   314,   314,   315,   315,   315,   316,   316,   317,
1481 <     317,   317,   317,   317,   319,   318,   320,   320,   321,   321,
1482 <     322,   323,   325,   324,   326,   326,   327,   327,   327,   327,
1483 <     327,   327,   327,   327,   327,   328,   329,   330,   331,   333,
1484 <     332,   334,   334,   335,   335,   335,   335,   335,   335,   335,
1485 <     335,   335,   336,   337,   338,   340,   339,   341,   341,   342,
1486 <     342,   342,   342,   343,   344,   345,   346,   347,   347,   348,
1487 <     348,   349,   351,   350,   352,   352,   353,   353,   353,   353,
1488 <     354,   355,   357,   356,   358,   358,   359,   359,   359,   359,
1489 <     359,   359,   359,   359,   359,   359,   361,   360,   362,   362,
1490 <     363,   363,   363,   364,   366,   365,   367,   367,   368,   368,
1491 <     368,   368,   368,   368,   368,   368,   368,   368,   370,   369,
1492 <     371,   371,   372,   372,   372,   372,   372,   372,   372,   372,
1493 <     372,   372,   372,   372,   372,   372,   373,   374,   375,   376,
1494 <     377,   378,   379,   379,   381,   380,   382,   382,   383,   383,
1495 <     384,   385,   386,   387,   388,   390,   389,   392,   391,   393,
1496 <     393,   394,   395,   395,   396,   396,   396,   396,   397,   398,
1497 <     400,   399,   401,   401,   402,   402,   402,   403,   404,   405,
1498 <     406,   406,   407,   407,   408,   410,   409,   412,   411,   413,
1499 <     413,   414,   415,   415,   416,   416,   416,   416,   417,   418,
1500 <     419,   420,   420,   421,   421,   421,   421,   421,   421,   421,
1501 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1502 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1503 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1504 <     421,   421,   421,   421,   421,   421,   421,   421,   421,   421,
1505 <     421,   421,   421,   422,   423,   424,   425,   426,   427,   428,
1506 <     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
1507 <     439,   440,   441,   442,   443,   444,   445,   446,   447,   447,
1508 <     448,   448,   449,   450,   451,   452,   453,   454,   455,   456,
1509 <     457,   458,   459,   460,   461,   462,   463,   464,   465,   467,
1510 <     466,   468,   468,   469,   469,   469,   469,   469,   469,   469,
1511 <     469,   469,   469,   469,   469,   469,   469,   469,   469,   469,
1512 <     469,   469,   469,   471,   470,   472,   472,   473,   473,   473,
1513 <     473,   473,   473,   473,   473,   473,   473,   473,   473,   473,
1514 <     473,   473,   473,   473,   473,   473,   473,   474,   475,   476,
1515 <     477,   478,   478,   479,   479,   479,   479,   479,   479,   479,
1516 <     479,   479,   479,   479,   479,   479,   479,   479,   480,   481,
1517 <     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
1518 <     492,   493,   494,   495,   495,   496,   496,   496,   496,   496,
1519 <     496,   496,   497,   498,   499,   500,   501,   502
1520 < };
1285 > #define YYPACT_NINF -789
1286  
1287 < /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1288 < static const yytype_uint8 yyr2[] =
1287 > #define yypact_value_is_default(Yystate) \
1288 >  (!!((Yystate) == (-789)))
1289 >
1290 > #define YYTABLE_NINF -128
1291 >
1292 > #define yytable_value_is_error(Yytable_value) \
1293 >  0
1294 >
1295 >  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1296 >     STATE-NUM.  */
1297 > static const yytype_int16 yypact[] =
1298   {
1299 <       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
1300 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1301 <       1,     1,     1,     1,     2,     2,     0,     1,     2,     3,
1302 <       3,     3,     3,     3,     0,     1,     2,     3,     3,     3,
1303 <       5,     2,     1,     1,     1,     2,     4,     4,     5,     2,
1304 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1305 <       1,     1,     1,     1,     1,     1,     2,     4,     4,     3,
1306 <       1,     1,     1,     3,     1,     1,     1,     4,     4,     4,
1307 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1308 <       5,     2,     1,     1,     1,     1,     2,     4,     4,     4,
1309 <       5,     2,     1,     1,     1,     2,     4,     0,     6,     2,
1310 <       1,     1,     1,     1,     2,     4,     4,     4,     0,     5,
1311 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1312 <       6,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1313 <       1,     2,     4,     4,     4,     4,     4,     4,     0,     5,
1314 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1315 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1316 <       1,     1,     0,     5,     3,     1,     1,     1,     1,     1,
1317 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1318 <       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
1319 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1320 <       1,     1,     1,     2,     4,     4,     4,     4,     4,     4,
1321 <       4,     4,     4,     4,     4,     4,     4,     4,     0,     6,
1322 <       0,     5,     3,     1,     1,     1,     1,     2,     1,     1,
1323 <       1,     1,     1,     2,     0,     5,     3,     1,     1,     3,
1324 <       4,     4,     0,     6,     2,     1,     1,     1,     1,     1,
1325 <       1,     1,     1,     1,     2,     4,     4,     4,     4,     0,
1326 <       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1327 <       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
1328 <       1,     1,     2,     4,     4,     4,     5,     2,     1,     1,
1329 <       1,     4,     0,     6,     2,     1,     1,     1,     1,     2,
1330 <       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
1331 <       1,     1,     1,     1,     1,     1,     0,     6,     2,     1,
1332 <       1,     1,     2,     4,     0,     5,     3,     1,     1,     1,
1333 <       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
1334 <       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1335 <       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
1336 <       4,     4,     4,     4,     0,     5,     3,     1,     1,     1,
1337 <       4,     4,     4,     4,     4,     0,     6,     0,     5,     3,
1338 <       1,     1,     2,     1,     1,     1,     1,     1,     4,     4,
1339 <       0,     6,     2,     1,     1,     1,     1,     4,     4,     5,
1340 <       2,     1,     1,     1,     4,     0,     6,     0,     5,     3,
1341 <       1,     1,     2,     1,     1,     1,     1,     1,     4,     4,
1342 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1343 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1344 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1345 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1346 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1347 <       1,     1,     1,     4,     4,     4,     4,     4,     4,     4,
1348 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1349 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1350 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1351 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     0,
1352 <       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1353 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1354 <       1,     1,     1,     0,     5,     3,     1,     1,     1,     1,
1355 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1356 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1357 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1358 <       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
1359 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1360 <       4,     4,     5,     2,     1,     1,     1,     1,     1,     1,
1361 <       1,     1,     4,     4,     4,     4,     4,     4
1299 >    -789,   656,  -789,   -59,  -226,  -220,  -789,  -789,  -789,  -217,
1300 >    -789,  -198,  -789,  -789,  -789,  -195,  -789,  -789,  -789,  -192,
1301 >    -189,  -789,  -181,  -171,  -789,  -789,  -789,  -789,  -789,  -789,
1302 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1303 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   307,
1304 >     925,  -169,  -160,  -158,    22,  -155,   387,  -136,  -121,  -119,
1305 >      50,  -116,  -114,   -97,   761,   433,   -84,    34,     2,   -82,
1306 >     -73,   -47,   -34,   -27,     9,  -789,  -789,  -789,  -789,  -789,
1307 >     -22,    -7,    -1,    44,    68,    79,    82,    84,    88,    92,
1308 >      98,   102,   104,   112,   266,  -789,  -789,  -789,  -789,  -789,
1309 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1310 >     681,   563,    19,  -789,   115,    21,  -789,  -789,    26,  -789,
1311 >     119,   129,   131,   141,   143,   145,   147,   148,   150,   154,
1312 >     155,   156,   159,   160,   164,   167,   175,   176,   177,   179,
1313 >     180,   183,   184,   186,   188,   189,   190,  -789,   194,  -789,
1314 >     207,   209,   210,   211,   215,   216,   217,   218,   220,   221,
1315 >     224,   225,   226,   227,   228,   230,   231,   232,   234,   235,
1316 >      61,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1317 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1318 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1319 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1320 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1321 >    -789,  -789,   343,    69,   301,   -70,   236,   239,    16,  -789,
1322 >    -789,  -789,   125,   388,   275,  -789,   241,   243,   251,   252,
1323 >     253,   255,   257,   259,   308,  -789,  -789,  -789,  -789,  -789,
1324 >    -789,  -789,  -789,  -789,   -29,   260,   263,   269,   273,   285,
1325 >     286,   288,   293,   294,   295,   296,   297,   300,   304,   305,
1326 >     310,   317,   319,   320,   168,  -789,  -789,  -789,  -789,  -789,
1327 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1328 >    -789,  -789,  -789,  -789,  -789,    25,    53,   321,    10,  -789,
1329 >    -789,  -789,    89,  -789,   322,    97,  -789,  -789,    93,  -789,
1330 >     258,   398,   432,    73,  -789,   249,   270,   345,   449,   450,
1331 >     451,   450,   457,   450,   450,   460,   461,   359,   361,   344,
1332 >    -789,   348,   342,   349,   350,  -789,   352,   353,   362,   364,
1333 >     365,   366,   370,   375,   376,   378,   383,   384,   386,   146,
1334 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1335 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   377,   389,
1336 >     391,   393,   395,   396,   397,  -789,   401,   403,   404,   407,
1337 >     412,   414,   415,    11,  -789,  -789,  -789,  -789,  -789,  -789,
1338 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1339 >     417,   418,     7,  -789,  -789,  -789,   468,   413,  -789,  -789,
1340 >     419,   422,    38,  -789,  -789,  -789,   382,   450,   450,   409,
1341 >     547,   446,   552,   539,   453,   450,   454,   559,   566,   450,
1342 >     567,   466,   469,   470,   450,   574,   575,   450,   578,   580,
1343 >     586,   587,   486,   439,   488,   472,   489,   450,   450,   491,
1344 >     495,   497,  -190,  -183,   498,   499,   500,   589,   605,   450,
1345 >     505,   506,   450,   450,   508,   509,   492,  -789,   496,   502,
1346 >     507,  -789,   510,   511,   514,   515,   516,    57,  -789,  -789,
1347 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   517,   518,
1348 >      41,  -789,  -789,  -789,   501,   523,   524,  -789,   525,  -789,
1349 >      18,  -789,  -789,  -789,  -789,  -789,   601,   603,   512,  -789,
1350 >     530,   534,   535,    29,  -789,  -789,  -789,   542,   536,   540,
1351 >    -789,   544,   549,   553,   557,   560,  -789,   561,    62,  -789,
1352 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1353 >     545,   564,   571,   573,    12,  -789,  -789,  -789,  -789,   520,
1354 >     526,   529,   604,   584,   588,   597,   450,   555,  -789,  -789,
1355 >     606,   599,   675,   620,   706,   692,   693,   695,   696,   697,
1356 >     698,   700,   702,   718,   704,   142,   149,   705,   707,   600,
1357 >    -789,   602,   607,  -789,    30,  -789,  -789,  -789,  -789,   621,
1358 >     608,  -789,   609,   710,   612,  -789,   613,   614,  -789,   616,
1359 >      23,  -789,  -789,  -789,  -789,   615,   625,   628,  -789,   631,
1360 >     633,   636,   638,   374,   639,   642,   644,   645,   646,   647,
1361 >     649,   651,   655,   657,  -789,  -789,   726,   737,   450,   617,
1362 >     742,   777,   779,   450,   780,   781,   450,   715,   782,   784,
1363 >     450,   791,   791,   673,  -789,  -789,   783,   192,   786,   709,
1364 >     790,   792,   672,   793,   795,   799,   798,   807,   813,   817,
1365 >     712,  -789,   824,   827,   722,  -789,   727,  -789,   837,   838,
1366 >     733,  -789,   734,   735,   736,   739,   741,   744,   745,   746,
1367 >     749,   750,   751,   752,   753,   754,   757,   758,   759,   760,
1368 >     763,   765,   766,   770,   771,   772,   773,   774,   778,   764,
1369 >     785,   688,   787,   788,   789,   794,   796,   797,   802,   803,
1370 >     804,   805,   806,   808,   809,   810,   811,   812,   814,   815,
1371 >     816,   818,   819,   820,  -789,  -789,   843,   800,   776,   848,
1372 >     869,   870,   883,   886,   821,  -789,   887,   889,   822,  -789,
1373 >    -789,   890,   892,   823,   911,   825,  -789,   828,   829,  -789,
1374 >    -789,   897,   898,   830,  -789,  -789,   899,   831,   832,   901,
1375 >     904,   905,   913,   835,   833,   929,   834,  -789,  -789,   930,
1376 >     933,   937,   839,  -789,   840,   841,   842,   844,   845,   846,
1377 >     847,   849,  -789,   850,   851,   852,   853,   854,   855,   856,
1378 >     857,   858,   859,   860,   861,   862,   863,   864,  -789,  -789,
1379 >    -188,  -789,  -789,  -789,  -185,  -789,   865,   866,  -789,  -789,
1380 >     938,   867,   868,  -789,   871,  -789,   182,   872,  -789,  -789,
1381 >     939,   873,   943,   874,  -789,  -789,  -789,  -789,  -789,  -789,
1382 >    -789,  -789,   450,   450,   450,   450,   450,   450,   450,  -789,
1383 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1384 >    -789,   875,   877,   878,   -32,   879,   880,   881,   882,   884,
1385 >     885,   888,   891,   893,   894,   895,   289,   896,   900,  -789,
1386 >     902,   903,   906,   907,   908,   909,   910,    -3,   912,   914,
1387 >     915,   916,   917,   918,   919,  -789,   920,   921,  -789,  -789,
1388 >     922,   923,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1389 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1390 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1391 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1392 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1393 >    -180,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1394 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1395 >    -789,  -789,  -789,  -789,  -789,  -178,  -789,  -789,  -789,  -789,
1396 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1397 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   924,
1398 >     926,   541,   927,   928,   931,   932,   934,  -789,   935,   936,
1399 >    -789,   940,   941,     1,   947,   942,  -789,  -789,  -789,  -789,
1400 >     944,   945,  -789,   948,   949,   494,   950,   951,   952,   953,
1401 >     954,   730,   955,  -789,   956,   957,   958,  -789,  -789,  -789,
1402 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1403 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1404 >    -789,  -789,   142,  -789,   149,  -789,  -789,   959,   576,  -789,
1405 >    -789,   960,   961,   962,  -789,    32,  -789,  -789,  -789,  -789,
1406 >    -789,   963,   748,   966,  -789,  -789,  -789,  -789,  -789,  -789,
1407 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -177,  -789,  -789,
1408 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1409 >     791,   791,   791,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1410 >    -789,  -789,  -789,  -789,  -789,  -789,  -172,  -789,  -789,  -789,
1411 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1412 >     764,  -789,   688,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1413 >    -789,  -789,  -789,  -789,  -789,   -65,  -789,  -789,  -789,  -789,
1414 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   -43,
1415 >    -789,   964,   911,   967,  -789,  -789,  -789,  -789,  -789,   965,
1416 >    -789,  -789,   968,  -789,  -789,  -789,  -789,   969,  -789,  -789,
1417 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   -41,  -789,
1418 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1419 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1420 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,   -30,  -789,  -789,
1421 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1422 >    -789,  -789,  -789,  -789,  -789,  -789,   -18,  -789,  -789,   973,
1423 >     -74,   972,   971,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1424 >    -789,  -789,  -789,  -789,  -789,   -17,  -789,  -789,  -789,   -32,
1425 >    -789,  -789,  -789,  -789,    -3,  -789,  -789,  -789,   541,  -789,
1426 >       1,  -789,  -789,  -789,   983,   986,   987,  -789,   494,  -789,
1427 >     730,  -789,   576,   976,   977,   978,   410,  -789,  -789,   748,
1428 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1429 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1430 >    -789,  -789,    70,  -789,  -789,  -789,   410,  -789
1431   };
1432  
1433 < /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
1434 <   Performed when YYTABLE doesn't specify something else to do.  Zero
1435 <   means the default is an error.  */
1433 >  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1434 >     Performed when YYTABLE does not specify something else to do.  Zero
1435 >     means the default is an error.  */
1436   static const yytype_uint16 yydefact[] =
1437   {
1438 <       2,     0,     1,     0,     0,     0,   195,   348,   400,     0,
1439 <     415,     0,   252,   385,   228,     0,     0,   129,   285,     0,
1440 <       0,   302,   326,     0,     3,    23,    11,     4,     5,     6,
1441 <       8,     9,    10,    13,    14,    15,    16,    17,    18,    19,
1442 <      20,    22,    21,     7,    12,    24,    25,     0,     0,     0,
1438 >       2,     0,     1,     0,     0,     0,   227,   392,   440,     0,
1439 >     455,     0,   295,   431,   271,     0,   111,   151,   329,     0,
1440 >       0,   370,     0,     0,   346,     3,    23,    11,     4,    24,
1441 >       5,     6,     8,     9,    10,    13,    14,    15,    16,    17,
1442 >      18,    19,    20,    22,    21,     7,    12,    25,    26,     0,
1443         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1444         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1445 <       0,     0,    92,    93,    95,    94,   597,     0,     0,     0,
1445 >       0,     0,     0,     0,     0,   103,   104,   106,   105,   635,
1446         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1447 <       0,     0,   582,   596,   592,   584,   585,   586,   587,   588,
1448 <     583,   589,   590,   591,   593,   594,   595,     0,     0,     0,
1449 <     413,     0,     0,   411,   412,     0,   482,     0,     0,     0,
1447 >       0,     0,     0,     0,     0,   620,   634,   622,   623,   624,
1448 >     625,   626,   627,   621,   628,   629,   630,   631,   632,   633,
1449 >       0,     0,     0,   453,     0,     0,   451,   452,     0,   517,
1450         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1451         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1452 <       0,     0,     0,     0,     0,     0,   553,     0,   529,     0,
1452 >       0,     0,     0,     0,     0,     0,     0,   591,     0,   565,
1453         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1611       0,     0,     0,     0,     0,     0,     0,   432,   480,   474,
1612     475,   476,   477,   478,   473,   443,   433,   434,   468,   435,
1613     436,   437,   438,   439,   440,   441,   442,   470,   444,   445,
1614     479,   447,   452,   448,   450,   449,   463,   464,   451,   453,
1615     454,   455,   456,   457,   446,   459,   460,   461,   481,   471,
1616     472,   469,   462,   458,   466,   467,   465,     0,     0,     0,
1617       0,     0,     0,   102,   103,   104,     0,     0,     0,     0,
1618       0,    42,    43,    44,     0,     0,   621,     0,     0,     0,
1619       0,     0,     0,     0,   614,   615,   616,   619,   617,   618,
1620     620,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1621       0,     0,     0,     0,     0,     0,     0,     0,    50,    63,
1622      64,    62,    59,    58,    65,    51,    61,    54,    55,    56,
1623      52,    60,    57,    53,     0,     0,   300,     0,     0,   298,
1624     299,    96,     0,     0,     0,     0,    91,     0,     0,     0,
1454         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1455 <       0,     0,   581,     0,     0,     0,     0,     0,     0,     0,
1456 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   198,
1457 <     199,   202,   203,   205,   206,   207,   208,   209,   210,   211,
1458 <     212,   200,   201,   204,     0,     0,     0,     0,     0,   374,
1459 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   351,
1460 <     352,   353,   354,   355,   356,   358,   357,   360,   364,   361,
1461 <     362,   363,   359,   406,     0,     0,     0,   403,   404,   405,
1462 <       0,     0,   410,   427,     0,     0,   417,   426,     0,   423,
1463 <     424,   425,     0,     0,     0,     0,     0,     0,     0,     0,
1455 >       0,   466,   514,   516,   508,   509,   510,   511,   512,   507,
1456 >     477,   467,   468,   469,   470,   471,   472,   473,   474,   475,
1457 >     476,   504,   478,   479,   513,   481,   486,   487,   482,   484,
1458 >     483,   497,   498,   485,   488,   489,   490,   491,   480,   493,
1459 >     494,   495,   515,   505,   506,   502,   503,   496,   492,   500,
1460 >     501,   499,     0,     0,     0,     0,     0,     0,     0,    45,
1461 >      46,    47,     0,     0,     0,   661,     0,     0,     0,     0,
1462 >       0,     0,     0,     0,     0,   652,   653,   654,   655,   656,
1463 >     659,   657,   658,   660,     0,     0,     0,     0,     0,     0,
1464         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1465 +       0,     0,     0,     0,     0,    53,    69,    70,    68,    65,
1466 +      63,    71,    72,    64,    54,    67,    57,    58,    59,    55,
1467 +      66,    60,    61,    62,    56,     0,     0,     0,     0,   122,
1468 +     123,   124,     0,   344,     0,     0,   342,   343,     0,   107,
1469 +       0,     0,     0,     0,   102,     0,     0,     0,     0,     0,
1470         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1471 +     619,     0,     0,     0,     0,   265,     0,     0,     0,     0,
1472         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1473 +     230,   231,   234,   236,   237,   238,   239,   240,   241,   242,
1474 +     243,   244,   232,   233,   235,   245,   246,   247,     0,     0,
1475 +       0,     0,     0,     0,     0,   420,     0,     0,     0,     0,
1476 +       0,     0,     0,     0,   395,   396,   397,   398,   399,   400,
1477 +     401,   403,   402,   405,   409,   406,   407,   408,   404,   446,
1478 +       0,     0,     0,   443,   444,   445,     0,     0,   450,   461,
1479 +       0,     0,     0,   458,   459,   460,     0,     0,     0,     0,
1480         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1639       0,     0,   431,     0,     0,     0,   269,     0,     0,     0,
1640       0,     0,     0,   255,   256,   257,   258,   263,   259,   260,
1641     261,   262,   397,     0,   387,     0,   396,     0,   393,   394,
1642     395,     0,   230,     0,     0,     0,   240,     0,   238,   239,
1643     241,   242,   105,     0,     0,   101,     0,    45,     0,     0,
1644       0,    41,     0,     0,     0,   172,     0,     0,     0,   148,
1645       0,     0,   132,   133,   134,   135,   138,   139,   137,   136,
1646     140,     0,     0,     0,     0,     0,   288,   289,   290,   291,
1647       0,     0,     0,     0,     0,     0,     0,   613,    66,     0,
1481         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1649       0,     0,     0,     0,     0,    49,     0,     0,   312,     0,
1650       0,   305,   306,   307,   308,     0,     0,   334,     0,   329,
1651     330,   331,     0,     0,   297,     0,     0,     0,    90,     0,
1652       0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
1653       0,     0,     0,     0,   580,   213,     0,     0,     0,     0,
1482         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1655       0,   197,   365,     0,     0,     0,     0,     0,     0,     0,
1656       0,     0,     0,     0,     0,     0,     0,   350,     0,     0,
1657       0,   402,     0,   409,     0,     0,     0,     0,   422,     0,
1483         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1484 +       0,     0,     0,     0,     0,     0,     0,   465,     0,     0,
1485 +       0,   312,     0,     0,     0,     0,     0,     0,   298,   299,
1486 +     300,   301,   306,   302,   303,   304,   305,   437,     0,     0,
1487 +       0,   434,   435,   436,     0,     0,     0,   273,     0,   283,
1488 +       0,   281,   282,   284,   285,    48,     0,     0,     0,    44,
1489 +       0,     0,     0,     0,   114,   115,   116,     0,     0,     0,
1490 +     200,     0,     0,     0,     0,     0,   174,     0,     0,   154,
1491 +     155,   156,   157,   160,   161,   162,   163,   159,   158,   164,
1492 +       0,     0,     0,     0,     0,   332,   333,   334,   335,     0,
1493 +       0,     0,     0,     0,     0,     0,     0,     0,   651,    73,
1494         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1495         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1496 +      52,     0,     0,   378,     0,   373,   374,   375,   125,     0,
1497 +       0,   121,     0,     0,     0,   341,     0,     0,   356,     0,
1498 +       0,   349,   350,   351,   352,     0,     0,     0,   101,     0,
1499 +       0,     0,     0,    27,     0,     0,     0,     0,     0,     0,
1500 +       0,     0,     0,     0,   618,   248,     0,     0,     0,     0,
1501         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1502 +       0,     0,     0,     0,   229,   410,     0,     0,     0,     0,
1503         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1504 <     430,   264,     0,     0,     0,     0,     0,     0,     0,     0,
1505 <       0,   254,     0,     0,     0,     0,   392,   243,     0,     0,
1665 <       0,     0,     0,   237,     0,   100,     0,     0,     0,    40,
1666 <     141,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1667 <     131,   292,     0,     0,     0,     0,   287,     0,     0,     0,
1668 <       0,     0,     0,   612,     0,     0,     0,     0,     0,     0,
1669 <       0,     0,    71,    72,     0,    70,    75,    76,     0,    74,
1670 <       0,     0,     0,     0,     0,    48,   309,     0,     0,     0,
1671 <       0,   304,   332,     0,     0,     0,   328,     0,   296,    99,
1672 <      98,    97,   607,   606,   598,    26,    26,    26,    26,    26,
1673 <      28,    27,   600,   601,   605,   603,   602,   608,   609,   610,
1674 <     611,   604,   599,     0,     0,     0,     0,     0,     0,     0,
1675 <       0,     0,     0,     0,     0,    34,     0,     0,   196,     0,
1504 >       0,   394,     0,     0,     0,   442,     0,   449,     0,     0,
1505 >       0,   457,     0,     0,     0,     0,     0,     0,     0,     0,
1506         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1507 <       0,     0,     0,   349,     0,     0,   401,   414,     0,     0,
1508 <       0,   416,   495,   499,   513,   579,   527,   493,   521,   524,
1509 <     494,   485,   484,   486,   487,   488,   502,   491,   492,   503,
1510 <     490,   498,   497,   496,   522,   483,   520,   577,   578,   517,
1511 <     514,   564,   557,   574,   575,   558,   559,   560,   561,   569,
1512 <     562,   572,   576,   565,   570,   566,   571,   563,   568,   567,
1513 <     573,     0,   556,   519,   539,   533,   550,   551,   534,   535,
1514 <     536,   537,   545,   538,   548,   552,   541,   546,   542,   547,
1515 <     540,   544,   543,   549,     0,   532,   512,   515,   526,   489,
1516 <     516,   505,   510,   511,   508,   509,   506,   507,   501,   500,
1517 <     525,   528,   518,   523,   504,     0,     0,     0,     0,     0,
1518 <       0,     0,     0,   253,     0,     0,     0,   386,     0,     0,
1519 <       0,   248,   244,   247,   229,   106,     0,     0,   118,     0,
1520 <       0,   110,   111,   113,   112,    46,    47,     0,     0,     0,
1521 <       0,     0,     0,     0,     0,   130,     0,     0,     0,   286,
1522 <     622,   626,   624,   627,   623,   625,    83,    89,    81,    85,
1523 <      84,    78,    77,    79,    67,     0,    68,     0,    82,    80,
1524 <      88,    86,    87,     0,     0,     0,   303,     0,     0,   327,
1525 <     301,    29,    30,    31,    32,    33,   225,   226,   218,   220,
1526 <     222,   221,   219,   214,   227,   217,   215,   216,    34,    34,
1527 <      34,    36,    35,   223,   224,   370,   372,   373,   383,   380,
1528 <     378,   379,     0,   377,   367,   381,   382,   366,   371,   369,
1529 <     384,   368,   407,   408,   428,   429,   421,     0,   420,   554,
1530 <       0,   530,     0,   267,   268,   277,   274,   279,   276,   275,
1531 <     281,   278,   280,   273,     0,   272,   266,   284,   283,   282,
1532 <     265,   399,   391,     0,   390,   398,   235,   236,   234,     0,
1533 <     233,   251,   250,     0,     0,     0,   114,     0,     0,     0,
1534 <       0,   109,   147,   145,   187,   184,   183,   176,   178,   194,
1535 <     188,   191,   186,   177,   192,   180,   189,   193,   181,   190,
1536 <     185,   179,   182,     0,   175,   142,   144,   146,   158,   152,
1537 <     169,   170,   153,   154,   155,   156,   164,   157,   167,   171,
1538 <     160,   165,   161,   166,   159,   163,   162,   168,     0,   151,
1539 <     143,   294,   295,   293,    69,    73,   310,   316,   322,   325,
1540 <     318,   324,   319,   323,   321,   317,   320,     0,   315,   311,
1541 <     333,   338,   344,   347,   340,   346,   341,   345,   343,   339,
1542 <     342,     0,   337,    37,    38,    39,   375,     0,   418,     0,
1543 <     555,   531,   270,     0,   388,     0,   231,     0,   249,   246,
1544 <     245,     0,     0,     0,     0,   108,   173,     0,   149,     0,
1545 <     313,     0,   335,     0,   376,   419,   271,   389,   232,   115,
1546 <     124,   127,   126,   123,   128,   125,   122,     0,   121,   117,
1547 <     116,   174,   150,   314,   336,   119,     0,   120
1548 < };
1549 <
1550 < /* YYDEFGOTO[NTERM-NUM].  */
1551 < static const yytype_int16 yydefgoto[] =
1552 < {
1553 <      -1,     1,    24,   780,   781,  1021,  1022,    25,   230,   231,
1554 <     232,   233,    26,   267,   268,   269,   270,   744,   745,   748,
1555 <     749,   271,   272,   273,   274,   275,   276,   277,   278,   279,
1556 <     280,   281,   282,   283,    27,    71,    72,    73,    74,    75,
1557 <      28,   222,   223,   224,   225,   226,   950,   951,   952,   953,
1558 <     954,  1088,  1217,  1218,    29,    60,   501,   502,   503,   504,
1559 <     505,   506,   507,   508,   509,   717,  1138,  1139,   510,   713,
1560 <    1113,  1114,    30,    49,   328,   329,   330,   331,   332,   333,
1561 <     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
1562 <      31,    57,   476,   698,  1079,  1080,   477,   478,   479,  1085,
1563 <     942,   943,   480,   481,    32,    55,   452,   453,   454,   455,
1564 <     456,   457,   458,   684,  1064,  1065,   459,   460,   461,    33,
1565 <      61,   515,   516,   517,   518,   519,    34,   288,   289,   290,
1566 <      35,    64,   550,   551,   552,   553,   554,   758,  1157,  1158,
1567 <      36,    65,   558,   559,   560,   561,   764,  1171,  1172,    37,
1568 <      50,   358,   359,   360,   361,   362,   363,   364,   365,   366,
1569 <     367,   607,  1032,  1033,   368,   369,   370,   371,   372,    38,
1740 <      56,   466,   693,  1073,  1074,   467,   468,   469,   470,    39,
1741 <      51,   376,   377,   378,   379,    40,   112,   113,   114,    41,
1742 <      53,   387,   626,  1047,  1048,   388,   389,   390,   391,    42,
1743 <     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
1744 <     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
1745 <     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
1746 <     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1747 <     206,   207,   208,   209,   210,   211,   212,   423,   904,   905,
1748 <     213,   421,   881,   882,   214,   215,   216,    43,    91,    92,
1749 <      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1750 <     103,   104,   105,   106,    44,   243,   244,   245,   246,   247,
1751 <     248,   249,   250
1507 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1508 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1509 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1510 >       0,     0,     0,     0,   464,   307,     0,     0,     0,     0,
1511 >       0,     0,     0,     0,     0,   297,     0,     0,     0,   433,
1512 >     286,     0,     0,     0,     0,     0,   280,     0,     0,    43,
1513 >     117,     0,     0,     0,   113,   165,     0,     0,     0,     0,
1514 >       0,     0,     0,     0,     0,     0,     0,   153,   336,     0,
1515 >       0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
1516 >       0,     0,   650,     0,     0,     0,     0,     0,     0,     0,
1517 >       0,     0,     0,     0,     0,     0,     0,     0,    78,    79,
1518 >       0,    77,    82,    83,     0,    81,     0,     0,    51,   376,
1519 >       0,     0,     0,   372,     0,   120,     0,     0,   340,   353,
1520 >       0,     0,     0,     0,   348,   110,   109,   108,   645,   644,
1521 >     636,   637,    27,    27,    27,    27,    27,    27,    27,    29,
1522 >      28,   638,   648,   649,   639,   640,   641,   643,   642,   646,
1523 >     647,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1524 >       0,     0,     0,     0,     0,     0,    37,     0,     0,   228,
1525 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1526 >       0,     0,     0,     0,     0,   393,     0,     0,   441,   454,
1527 >       0,     0,   456,   530,   534,   549,   519,   617,   562,   556,
1528 >     559,   529,   521,   520,   523,   524,   522,   537,   527,   528,
1529 >     538,   526,   533,   532,   531,   557,   518,   615,   616,   553,
1530 >     601,   595,   611,   596,   597,   598,   606,   614,   599,   608,
1531 >     612,   602,   613,   603,   607,   600,   610,   605,   604,   609,
1532 >       0,   594,   555,   574,   575,   576,   569,   587,   570,   571,
1533 >     572,   582,   590,   573,   584,   588,   578,   589,   579,   583,
1534 >     577,   586,   581,   580,   585,     0,   568,   550,   548,   551,
1535 >     561,   552,   540,   546,   547,   544,   545,   541,   542,   543,
1536 >     560,   563,   564,   525,   554,   536,   535,   558,   539,     0,
1537 >       0,     0,     0,     0,     0,     0,     0,   296,     0,     0,
1538 >     432,     0,     0,     0,   291,   287,   290,   272,    49,    50,
1539 >       0,     0,   112,     0,     0,     0,     0,     0,     0,     0,
1540 >       0,     0,     0,   152,     0,     0,     0,   330,   663,   662,
1541 >     668,   666,   669,   664,   665,   667,    92,   100,    91,    98,
1542 >      99,    90,    94,    93,    85,    84,    89,    86,    88,    97,
1543 >      87,    74,     0,    75,     0,    95,    96,     0,     0,   371,
1544 >     126,     0,     0,     0,   138,     0,   130,   131,   133,   132,
1545 >     345,     0,     0,     0,   347,    30,    31,    32,    33,    34,
1546 >      35,    36,   260,   261,   252,   270,   269,     0,   268,   253,
1547 >     255,   257,   264,   256,   254,   263,   249,   262,   251,   250,
1548 >      37,    37,    37,    39,    38,   258,   259,   415,   418,   419,
1549 >     429,   426,   412,   427,   424,   425,     0,   423,   428,   411,
1550 >     417,   414,   416,   430,   413,   447,   448,   462,   463,   592,
1551 >       0,   566,     0,   310,   311,   320,   317,   322,   318,   319,
1552 >     325,   321,   323,   316,   324,     0,   315,   309,   328,   327,
1553 >     326,   308,   439,   438,   294,   293,   278,   279,   277,     0,
1554 >     276,     0,     0,     0,   118,   119,   173,   169,   220,   207,
1555 >     217,   216,   205,   210,   226,   219,   224,   209,   212,   221,
1556 >     223,   218,   225,   213,   215,   222,   211,   214,     0,   203,
1557 >     166,   168,   170,   171,   172,   183,   184,   185,   178,   196,
1558 >     179,   180,   181,   191,   199,   182,   193,   197,   187,   198,
1559 >     188,   192,   186,   195,   190,   189,   194,     0,   177,   167,
1560 >     339,   337,   338,    76,    80,   377,   382,   388,   391,   384,
1561 >     390,   385,   389,   387,   383,   386,     0,   381,   134,     0,
1562 >       0,     0,     0,   129,   354,   360,   366,   369,   362,   368,
1563 >     363,   367,   365,   361,   364,     0,   359,   355,   266,     0,
1564 >      40,    41,    42,   421,     0,   593,   567,   313,     0,   274,
1565 >       0,   292,   289,   288,     0,     0,     0,   201,     0,   175,
1566 >       0,   379,     0,     0,     0,     0,     0,   128,   357,     0,
1567 >     267,   422,   314,   275,   206,   204,   208,   202,   176,   380,
1568 >     135,   137,   136,   144,   149,   148,   143,   146,   150,   147,
1569 >     142,   145,     0,   141,   358,   139,     0,   140
1570   };
1571  
1572 < /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1573 <   STATE-NUM.  */
1756 < #define YYPACT_NINF -744
1757 < static const yytype_int16 yypact[] =
1572 >  /* YYPGOTO[NTERM-NUM].  */
1573 > static const yytype_int16 yypgoto[] =
1574   {
1575 <    -744,   610,  -744,  -209,  -187,  -179,  -744,  -744,  -744,  -176,
1576 <    -744,  -171,  -744,  -744,  -744,  -166,  -164,  -744,  -744,  -139,
1577 <    -136,  -744,  -744,  -131,  -744,  -744,  -744,  -744,  -744,  -744,
1578 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1579 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,    61,   807,  -126,
1580 <    -104,   -84,    16,   -79,   382,   -77,   -63,   -60,     7,    21,
1581 <     -49,   -40,   638,   381,   -26,    52,    25,  -152,    62,    85,
1582 <      86,    18,  -744,  -744,  -744,  -744,  -744,    88,    89,    93,
1583 <      94,    96,   101,   108,   112,   118,   119,   125,   127,   132,
1584 <     133,   162,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1585 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,   531,   499,   266,
1586 <    -744,   135,    28,  -744,  -744,    11,  -744,   142,   143,   145,
1587 <     147,   148,   150,   153,   163,   166,   167,   169,   173,   174,
1588 <     175,   177,   178,   180,   182,   183,   185,   191,   197,   200,
1589 <     201,   202,   204,   211,   212,   215,  -744,   216,  -744,   217,
1590 <     218,   221,   222,   225,   226,   229,   234,   235,   237,   238,
1591 <     239,   242,   253,   256,   257,   262,    38,  -744,  -744,  -744,
1592 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1593 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1594 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1595 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1596 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,   337,    24,   259,
1597 <      73,   263,     4,  -744,  -744,  -744,   126,   131,   264,   270,
1598 <      59,  -744,  -744,  -744,   389,   209,  -744,   276,   279,   280,
1599 <     281,   285,   287,     3,  -744,  -744,  -744,  -744,  -744,  -744,
1600 <    -744,   149,   288,   289,   290,   292,   299,   301,   302,   303,
1601 <     304,   305,   307,   308,   315,   324,   330,    75,  -744,  -744,
1602 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1603 <    -744,  -744,  -744,  -744,   208,    30,  -744,   331,    15,  -744,
1604 <    -744,  -744,   107,   254,   359,   165,  -744,   385,   396,   367,
1789 <     454,   454,   455,   457,   461,   399,   401,   464,   454,   404,
1790 <     405,   351,  -744,   358,   356,   360,   361,   362,   364,   365,
1791 <     369,   374,   375,   379,   383,   386,   388,   395,   232,  -744,
1792 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1793 <    -744,  -744,  -744,  -744,   384,   397,   400,   403,   408,  -744,
1794 <     411,   412,   420,   423,   424,   427,   433,   434,   260,  -744,
1795 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1796 <    -744,  -744,  -744,  -744,   435,   437,     8,  -744,  -744,  -744,
1797 <     458,   407,  -744,  -744,   441,   442,  -744,  -744,    36,  -744,
1798 <    -744,  -744,   417,   454,   454,   501,   443,   459,   524,   543,
1799 <     502,   454,   503,   454,   565,   567,   568,   508,   509,   513,
1800 <     454,   577,   578,   454,   580,   583,   566,   584,   587,   527,
1801 <     528,   475,   535,   478,   454,   454,   537,   540,   541,   542,
1802 <    -146,  -133,   544,   546,   454,   454,   585,   454,   550,   553,
1803 <     554,   510,  -744,   515,   514,   517,  -744,   519,   521,   525,
1804 <     529,   530,    58,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1805 <    -744,  -744,  -744,   533,  -744,   534,  -744,    10,  -744,  -744,
1806 <    -744,   538,  -744,   536,   539,   545,  -744,   115,  -744,  -744,
1807 <    -744,  -744,  -744,   582,   547,  -744,   532,  -744,   640,   643,
1808 <     549,  -744,   555,   559,   560,  -744,   562,   569,   572,  -744,
1809 <     573,    70,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1810 <    -744,   558,   588,   595,   597,   146,  -744,  -744,  -744,  -744,
1811 <     623,   625,   687,   658,   659,   454,   606,  -744,  -744,   704,
1812 <     663,   706,   707,   709,   713,   714,   715,    79,   159,   717,
1813 <     718,   646,   719,   720,   626,  -744,   628,   622,  -744,   624,
1814 <     128,  -744,  -744,  -744,  -744,   629,   630,  -744,    22,  -744,
1815 <    -744,  -744,   728,   632,  -744,   634,   635,   636,  -744,   637,
1816 <     639,   641,   430,   642,   645,   648,   649,   650,   651,   652,
1817 <     653,   654,   656,   657,  -744,  -744,   754,   756,   454,   759,
1818 <     776,   778,   779,   761,   784,   785,   454,   454,   786,   786,
1819 <     671,  -744,  -744,   769,   122,   770,   729,   672,   773,   774,
1820 <     775,   777,   795,   780,   781,   782,   681,  -744,   783,   787,
1821 <     682,  -744,   689,  -744,   788,   789,   690,   694,  -744,   695,
1822 <     696,   697,   698,   699,   702,   703,   705,   708,   710,   712,
1823 <     716,   721,   722,   723,   724,   725,   726,   727,   730,   731,
1824 <     732,   733,   734,   735,   736,   737,   738,   739,   551,   740,
1825 <     599,   741,   742,   743,   744,   745,   746,   747,   748,   749,
1826 <     750,   751,   752,   753,   755,   757,   758,   760,   762,   763,
1827 <    -744,  -744,   801,   764,   711,   803,   823,   810,   812,   814,
1828 <     765,  -744,   815,   766,   817,   767,  -744,  -744,   768,   825,
1829 <     826,   870,   772,  -744,   790,  -744,   184,   791,   792,  -744,
1830 <    -744,   853,   816,   771,   856,   861,   863,   793,   865,   794,
1831 <    -744,  -744,   867,   872,   873,   797,  -744,   798,   799,   800,
1832 <     802,   804,   805,  -744,   806,   808,   809,   811,   813,   818,
1833 <     819,   820,  -744,  -744,  -195,  -744,  -744,  -744,  -172,  -744,
1834 <     821,   822,   824,   827,   828,  -744,  -744,   874,   829,   875,
1835 <     830,  -744,  -744,   876,   831,   833,  -744,   835,  -744,  -744,
1836 <    -744,  -744,  -744,  -744,  -744,   454,   454,   454,   454,   454,
1837 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1838 <    -744,  -744,  -744,   836,   837,   838,   839,   840,   841,   842,
1839 <     843,   844,   845,   846,   847,   314,   848,   849,  -744,   850,
1840 <     851,   852,   854,   855,    13,   857,   858,   859,   860,   862,
1841 <     864,   866,   868,  -744,   869,   871,  -744,  -744,   877,   878,
1842 <     879,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1843 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1844 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1845 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1846 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1847 <    -744,  -167,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1848 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1849 <    -744,  -744,  -744,  -744,  -154,  -744,  -744,  -744,  -744,  -744,
1850 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1851 <    -744,  -744,  -744,  -744,  -744,   880,   881,   309,   882,   883,
1852 <     884,   885,   886,  -744,   887,   893,   888,  -744,   -33,   889,
1853 <     890,   832,   891,  -744,  -744,  -744,   892,   894,  -744,   895,
1854 <     154,  -744,  -744,  -744,  -744,  -744,  -744,   896,   899,   511,
1855 <     900,   901,   902,   627,   903,  -744,   904,   905,   906,  -744,
1856 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1857 <    -744,  -744,  -744,  -744,  -744,    79,  -744,   159,  -744,  -744,
1858 <    -744,  -744,  -744,   907,   460,   908,  -744,   909,   665,  -744,
1859 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1860 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,   786,   786,
1861 <     786,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1862 <    -744,  -744,  -145,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1863 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,   -50,  -744,  -744,
1864 <     551,  -744,   599,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1865 <    -744,  -744,  -744,  -744,   -41,  -744,  -744,  -744,  -744,  -744,
1866 <    -744,  -744,  -744,   -27,  -744,  -744,  -744,  -744,  -744,   -17,
1867 <    -744,  -744,  -744,   898,   870,   910,  -744,   911,   912,   -86,
1868 <     913,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1869 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1870 <    -744,  -744,  -744,    34,  -744,  -744,  -744,  -744,  -744,  -744,
1871 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1872 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,    40,  -744,
1873 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1874 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,    53,  -744,  -744,
1875 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1876 <    -744,    63,  -744,  -744,  -744,  -744,  -744,    13,  -744,   879,
1877 <    -744,  -744,  -744,   309,  -744,   893,  -744,   -33,  -744,  -744,
1878 <    -744,   914,   277,   916,   917,  -744,  -744,   511,  -744,   627,
1879 <    -744,   460,  -744,   665,  -744,  -744,  -744,  -744,  -744,  -744,
1880 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,    68,  -744,  -744,
1881 <    -744,  -744,  -744,  -744,  -744,  -744,   277,  -744
1575 >    -789,  -789,  -789,  -396,  -317,  -788,  -641,  -789,  -789,   974,
1576 >    -789,  -789,  -789,  -789,   946,  -789,  -789,  -789,    54,  -789,
1577 >      17,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1578 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1579 >    1007,  -789,  -789,  -789,  -789,  -789,  -789,   610,  -789,  -789,
1580 >    -789,  -789,   836,  -789,  -789,  -789,  -789,    37,  -789,  -789,
1581 >    -789,  -789,  -789,  -194,  -789,  -789,  -789,   618,  -789,  -789,
1582 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -150,
1583 >    -789,  -789,  -789,  -153,  -789,  -789,  -789,   826,  -789,  -789,
1584 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1585 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -128,  -789,  -789,
1586 >    -789,  -789,  -789,  -138,  -789,   637,  -789,  -789,  -789,   -24,
1587 >    -789,  -789,  -789,  -789,  -789,   667,  -789,  -789,  -789,  -789,
1588 >    -789,  -789,  -789,  -110,  -789,  -789,  -789,  -789,  -789,  -789,
1589 >     619,  -789,  -789,  -789,  -789,  -789,   970,  -789,  -789,  -789,
1590 >    -789,   562,  -789,  -789,  -789,  -789,  -789,  -123,  -789,  -789,
1591 >    -789,   592,  -789,  -789,  -789,  -789,  -111,  -789,  -789,  -789,
1592 >     876,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1593 >    -789,  -789,   -92,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1594 >    -789,   690,  -789,  -789,  -789,  -789,  -789,   975,  -789,  -789,
1595 >    -789,  -789,  1079,  -789,  -789,  -789,  -789,   801,  -789,  -789,
1596 >    -789,  -789,  1025,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1597 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1598 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1599 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1600 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1601 >    -789,    80,  -789,  -789,  -789,    71,  -789,  -789,  -789,  -789,
1602 >    -789,  1111,  -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,
1603 >    -789,  -789,  -789,  -789,  -789,  -789,  -789,  -789,   979,  -789,
1604 >    -789,  -789,  -789,  -789,  -789,  -789,  -789
1605   };
1606  
1607 < /* YYPGOTO[NTERM-NUM].  */
1608 < static const yytype_int16 yypgoto[] =
1607 >  /* YYDEFGOTO[NTERM-NUM].  */
1608 > static const yytype_int16 yydefgoto[] =
1609   {
1610 <    -744,  -744,  -744,  -743,  -298,  -663,  -598,  -744,  -744,   897,
1611 <    -744,  -744,  -744,  -744,   915,  -744,  -744,  -744,    14,  -744,
1612 <       1,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1613 <    -744,  -744,  -744,  -744,  -744,  -744,   924,  -744,  -744,  -744,
1614 <    -744,  -744,   796,  -744,  -744,  -744,  -744,    48,  -744,  -744,
1615 <    -744,  -744,  -744,  -226,  -744,  -744,  -744,   500,  -744,  -744,
1616 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -196,  -744,  -744,
1617 <    -744,  -193,  -744,  -744,  -744,   680,  -744,  -744,  -744,  -744,
1618 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1619 <    -744,  -744,  -744,  -744,  -744,  -177,  -744,   548,  -744,  -744,
1620 <    -744,   -62,  -744,  -744,  -744,  -744,  -744,   575,  -744,  -744,
1621 <    -744,  -744,  -744,  -744,  -744,  -153,  -744,  -744,  -744,  -744,
1622 <    -744,  -744,   516,  -744,  -744,  -744,  -744,  -744,   918,  -744,
1623 <    -744,  -744,  -744,   482,  -744,  -744,  -744,  -744,  -744,  -163,
1624 <    -744,  -744,  -744,   483,  -744,  -744,  -744,  -744,  -159,  -744,
1625 <    -744,  -744,   688,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1626 <    -744,  -744,  -744,  -137,  -744,  -744,  -744,  -744,  -744,  -744,
1627 <    -744,  -744,  -744,  -744,  -117,  -744,   604,  -744,  -744,  -744,
1628 <    -744,  -744,   700,  -744,  -744,  -744,  -744,   966,  -744,  -744,
1629 <    -744,  -744,  -744,  -744,   -99,  -744,   701,  -744,  -744,  -744,
1630 <    -744,   919,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1631 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1632 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1633 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1634 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,    35,
1635 <    -744,  -744,  -744,    32,  -744,  -744,  -744,  -744,  -744,   997,
1636 <    -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,  -744,
1637 <    -744,  -744,  -744,  -744,  -744,  -744,   920,  -744,  -744,  -744,
1638 <    -744,  -744,  -744
1610 >      -1,     1,    25,   839,   840,  1103,  1104,    26,   228,   229,
1611 >     230,   231,    27,   274,   275,   276,   277,   800,   801,   804,
1612 >     805,   278,   279,   280,   281,   282,   283,   284,   285,   286,
1613 >     287,   288,   289,   290,   291,   292,   293,   294,    28,    74,
1614 >      75,    76,    77,    78,    29,    61,   513,   514,   515,   516,
1615 >      30,   298,   299,   300,   301,   302,  1065,  1066,  1067,  1068,
1616 >    1069,  1241,  1312,  1313,    31,    62,   528,   529,   530,   531,
1617 >     532,   533,   534,   535,   536,   537,   538,   764,  1217,  1218,
1618 >     539,   758,  1188,  1189,    32,    51,   349,   350,   351,   352,
1619 >     353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
1620 >     363,   364,   365,   366,   367,   629,  1087,  1088,    33,    59,
1621 >     499,   743,  1159,  1160,   500,   501,   502,  1163,  1005,  1006,
1622 >     503,   504,    34,    57,   477,   478,   479,   480,   481,   482,
1623 >     483,   728,  1145,  1146,   484,   485,   486,    35,    63,   544,
1624 >     545,   546,   547,   548,    36,   305,   306,   307,    37,    69,
1625 >     600,   601,   602,   603,   604,   821,  1255,  1256,    38,    66,
1626 >     584,   585,   586,   587,   811,  1236,  1237,    39,    52,   383,
1627 >     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
1628 >     652,  1116,  1117,   394,   395,   396,   397,   398,    40,    58,
1629 >     490,   491,   492,   493,    41,    53,   402,   403,   404,   405,
1630 >      42,   115,   116,   117,    43,    55,   412,   413,   414,   415,
1631 >      44,   170,   171,   172,   173,   174,   175,   176,   177,   178,
1632 >     179,   180,   181,   182,   183,   184,   185,   186,   187,   188,
1633 >     189,   190,   191,   192,   193,   194,   195,   196,   197,   198,
1634 >     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
1635 >     209,   210,   211,   212,   213,   214,   215,   216,   217,   445,
1636 >     965,   966,   218,   443,   940,   941,   219,   220,   221,    45,
1637 >      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
1638 >     104,   105,   106,   107,   108,   109,    46,   244,   245,   246,
1639 >     247,   248,   249,   250,   251,   252,   253
1640   };
1641  
1642 < /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1643 <   positive, shift that token.  If negative, reduce the rule which
1644 <   number is the opposite.  If YYTABLE_NINF, syntax error.  */
1921 < #define YYTABLE_NINF -108
1642 >  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1643 >     positive, shift that token.  If negative, reduce the rule whose
1644 >     number is the opposite.  If YYTABLE_NINF, syntax error.  */
1645   static const yytype_int16 yytable[] =
1646   {
1647 <     806,   807,   573,   574,   236,   220,    45,    46,   220,   373,
1648 <     581,   462,   383,   805,   667,   668,   286,   110,  1076,    67,
1649 <     984,  1030,   227,   555,   985,   462,   286,   669,   670,   110,
1650 <      47,   555,  1001,  1002,  1003,  1004,  1005,   383,    48,   116,
1651 <     237,    52,    68,   986,   117,   118,    54,   987,  1049,    69,
1652 <     119,    58,  1050,    59,   238,   239,   240,   241,   120,   443,
1653 <     227,  1051,    67,   291,   121,  1052,   122,   123,   124,   374,
1654 <    1176,   492,   242,   125,  1177,   444,   251,   111,    62,   126,
1655 <     127,    63,   128,   129,   130,    68,    66,   493,   131,   111,
1656 <     445,   107,    69,   132,   446,   630,   631,   133,   134,   252,
1657 <     384,   135,   494,   638,   287,   640,   495,    70,   228,  1193,
1658 <     136,   556,   647,   108,   287,   650,   471,   137,   138,   556,
1659 <     139,   140,   141,   142,   143,   384,   661,   662,   375,   546,
1660 <     463,   385,   253,   109,   229,   144,   673,   674,   115,   676,
1661 <     217,   145,   146,   147,   463,   148,   228,   511,   149,   150,
1662 <      70,   472,   151,  1077,   218,   946,   385,   219,  1078,   496,
1663 <     512,   464,   386,    76,   254,  1178,   255,   256,   234,  1179,
1664 <     447,   473,   229,   557,  1182,   464,   474,   235,  1183,   448,
1665 <     449,   557,   497,    77,    78,   946,   152,   386,  1184,    79,
1666 <     153,   284,  1185,   154,   155,   156,   157,   158,  1186,   498,
1667 <     159,   160,  1187,   257,  1031,   258,   259,   260,   261,   546,
1668 <     511,   450,   221,   742,   743,   221,   465,   547,  -107,   526,
1669 <     484,  -107,   262,   512,   620,   565,   695,   732,    80,    81,
1670 <     465,   563,   475,   313,   295,    82,    83,    84,   765,   513,
1671 <     161,   162,   163,   947,   381,   164,   263,   314,   315,  1196,
1672 <     165,   316,   627,  1197,   441,  1198,   264,    85,    86,  1199,
1673 <     471,   344,   499,   345,   451,   346,   514,   373,  1200,   285,
1674 <      87,    88,  1201,   947,   690,   490,   500,   347,  1202,   548,
1675 <     292,    89,  1203,  1225,   265,   266,   719,  1226,   482,    90,
1676 <     795,   544,   348,   746,   747,   472,   349,   547,   803,   804,
1677 <     810,   811,   513,   293,   294,   948,   297,   298,   317,   318,
1678 <     319,   299,   300,   320,   301,   473,   350,  1210,   351,   302,
1679 <     474,   321,  1055,  1018,  1019,  1020,   303,   374,   352,   514,
1680 <     304,   702,   322,   323,   549,   948,   305,   306,   443,  1211,
1681 <     486,  1212,  1056,   307,   760,   308,   487,   324,   325,   353,
1682 <     309,   310,  1057,   380,   444,  1173,  1174,  1175,  1058,   548,
1683 <     392,   393,   725,   394,   528,   395,   396,   949,   397,   445,
1684 <    1090,   398,   566,   446,  1059,   326,   475,   354,   311,  1213,
1685 <     568,   399,   251,   116,   400,   401,   375,   402,   117,   118,
1686 <     492,   403,   404,   405,   119,   406,   407,   949,   408,  1060,
1687 <     409,   410,   120,   411,   355,   252,   493,  1061,   121,   412,
1688 <     122,   123,   124,   805,   549,   413,   327,   125,   414,   415,
1689 <     416,   494,   417,   126,   127,   495,   128,   129,   130,   418,
1690 <     419,   356,   131,   420,   422,   424,   425,   132,   253,   426,
1691 <     427,   133,   134,   428,   429,   135,  1062,   430,   600,   447,
1692 <    1214,  1215,   431,   432,   136,   433,   434,   435,   448,   449,
1693 <     436,   137,   138,  1063,   139,   140,   141,   142,   143,   357,
1694 <     254,   437,   255,   256,   438,   439,   616,   567,   496,   144,
1695 <     440,   483,   488,  1216,   569,   145,   146,   147,   489,   148,
1696 <     450,  1194,   149,   150,   520,   570,   151,   521,   522,   523,
1697 <     344,   497,   345,   524,   346,   525,   529,   530,   531,   257,
1698 <     532,   258,   259,   260,   261,  1094,   347,   533,   498,   534,
1699 <     535,   536,   537,   538,  1147,   539,   540,   571,   262,   572,
1700 <     152,   348,   313,   541,   153,   349,  1095,   154,   155,   156,
1701 <     157,   158,   542,   451,   159,   160,   314,   315,   543,   562,
1702 <     316,  1096,   263,   572,   575,   350,   576,   351,  1097,   578,
1703 <     577,   579,   264,   580,   582,   583,   584,   352,   775,   776,
1704 <     777,   778,   779,   585,   586,  1098,   622,   629,   587,   588,
1705 <     589,   499,   590,   591,   161,   162,   163,   592,   353,   164,
1706 <     265,   266,   593,   594,   165,   500,  1148,   595,  1099,   602,
1707 <     632,   596,   861,   633,   597,  1100,   598,   317,   318,   319,
1708 <       2,     3,   320,   599,     4,   603,   354,  1101,   604,   634,
1709 <     321,   605,   623,   635,     5,  1149,   606,     6,     7,   608,
1710 <     609,   322,   323,     8,  1150,  1102,  1103,  1104,   610,   236,
1711 <    1151,   611,   612,   355,     9,   613,   324,   325,    10,    11,
1712 <     884,   614,   615,   618,  1152,   619,  1153,  1154,    12,   624,
1713 <     625,   636,   637,   639,   641,  1155,   642,   643,   644,   645,
1714 <     356,  1156,    13,   646,   326,   237,   648,   649,  1118,   651,
1715 <      14,    15,   652,   654,   653,  1105,   655,   656,   657,   238,
1716 <     239,   240,   241,   658,  1106,   659,   660,   663,    16,  1107,
1717 <     664,   665,   666,   675,   671,  1108,   672,   242,   357,  1109,
1718 <     677,  1110,    17,   678,   679,   327,  1111,   862,   863,   864,
1719 <     865,   866,  1112,   867,   868,   680,   869,   870,   871,  1161,
1720 <     681,   872,   682,   873,   874,   683,   875,   685,   876,   686,
1721 <     877,   878,   704,   687,   879,   752,    18,   688,   689,   706,
1722 <     880,   692,   694,   697,   699,    19,    20,   700,   707,    21,
1723 <      22,   708,   705,   701,   709,   885,   886,   887,   888,   889,
1724 <     710,   890,   891,   721,   892,   893,   894,   711,   712,   895,
1725 <     714,   896,   897,   727,   898,   728,   899,   715,   900,   901,
1726 <     716,   718,   902,  1119,  1120,  1121,  1122,  1123,   903,  1124,
1727 <    1125,  1162,  1126,  1127,  1128,   729,   722,  1129,    76,  1130,
1728 <    1131,    23,  1132,   723,  1133,   724,  1134,  1135,   730,   731,
1729 <    1136,   733,   734,   735,   736,   737,  1137,   738,    77,    78,
1730 <    1163,   739,   740,   741,    79,   750,   751,   753,   754,  1164,
1731 <     757,   755,   759,   756,   762,  1165,   767,   768,   763,   769,
1732 <     770,   771,   772,   793,   773,   794,   774,   782,   796,  1166,
1733 <     783,  1167,  1168,   784,   785,   786,   787,   788,   789,   790,
1734 <    1169,   791,   792,    80,    81,   797,  1170,   798,   799,   800,
1735 <      82,    83,    84,   801,   802,   805,   808,   809,   812,   813,
1736 <     814,   815,   816,   817,   819,   818,   823,   826,   820,   821,
1737 <     822,   824,    85,    86,   827,   825,   828,   829,   830,   831,
1738 <     832,   833,   834,   835,   836,    87,    88,   837,   838,   925,
1739 <     839,   928,   929,   840,   926,   841,    89,   842,   930,   927,
1740 <     931,   843,   932,   934,    90,   936,   844,   845,   846,   847,
1741 <     848,   849,   850,   939,   940,   851,   852,   853,   854,   855,
1742 <     856,   857,   858,   859,   860,   883,   906,   907,   908,   909,
1743 <     910,   911,   912,   913,   914,   915,   916,   917,   918,   941,
1744 <     919,   957,   920,   921,   960,   922,   958,   923,   924,   961,
1745 <     933,   962,   937,   964,   935,   966,   938,   944,  1145,   959,
1746 <     967,   968,   993,   995,   997,   296,  1083,  1188,  1091,  1144,
1747 <    1227,   720,  1046,  1222,  1221,   945,   955,   956,   601,   965,
1748 <    1208,   963,   969,   970,   971,   972,  1072,   973,   485,   974,
1749 <     975,   976,  1189,   977,   978,   703,   979,   691,   980,  1191,
1750 <    1206,   726,   761,   981,   982,   983,   988,   989,  1223,   990,
1751 <    1204,   766,   991,   992,  1224,   996,   617,   994,   999,   998,
1752 <    1000,  1006,  1007,  1008,  1009,  1010,  1011,  1012,  1013,  1014,
1753 <    1015,  1016,  1017,  1023,  1024,  1025,  1026,  1027,  1207,  1028,
1754 <    1029,   696,  1034,  1035,  1036,  1037,   621,  1038,   382,  1039,
1755 <    1205,  1040,  1180,  1041,  1042,   442,  1043,  1181,   312,   628,
1756 <       0,     0,  1044,  1045,     0,  1053,  1054,  1066,  1067,  1068,
1757 <    1069,  1070,  1071,  1075,  1081,  1082,     0,  1086,     0,     0,
1758 <    1084,  1092,  1087,  1089,  1093,  1115,  1116,  1117,  1140,  1141,
1759 <    1142,  1143,  1146,  1159,  1160,  1190,     0,   491,  1195,  1209,
1760 <    1192,  1219,  1220,     0,     0,     0,     0,     0,     0,     0,
1647 >     867,   868,   614,   303,   616,  1114,   618,   619,   399,    49,
1648 >      70,   296,   368,   540,   369,    50,   370,   225,    54,   494,
1649 >     399,  1085,   113,   113,   596,   708,   581,   409,   371,   709,
1650 >     510,   581,   710,  1061,    71,   296,   711,    56,   866,   409,
1651 >      60,    72,   487,    64,   372,  1051,    65,   541,  1053,  1052,
1652 >    1156,   225,  1054,  1129,    67,  1131,  1258,  1130,   468,  1132,
1653 >    1259,  1263,   119,   517,    68,  1264,   110,   120,   121,   373,
1654 >     487,   374,   400,   122,   469,   111,   495,   112,   375,   518,
1655 >     118,   123,   124,   496,   400,   497,   114,   114,   125,   376,
1656 >     470,   126,   127,   542,   596,   519,  1086,   128,   303,   222,
1657 >     673,   674,   129,   130,   304,   131,   132,   133,   681,   134,
1658 >     511,    73,   685,   377,   223,   226,   224,   690,   135,   232,
1659 >     693,   233,   136,   137,   471,   597,   510,   582,   410,   520,
1660 >     703,   704,   582,   138,  1062,  1284,   401,   378,   234,   227,
1661 >     410,   543,   717,   139,   498,   720,   721,   331,   401,   226,
1662 >     140,   295,   141,   308,   142,   411,   143,   379,   144,   145,
1663 >     309,   332,   333,   505,   521,   334,   380,   411,  1267,   254,
1664 >     488,   146,  1268,   227,    47,    48,   147,   148,   149,   472,
1665 >     150,   151,   152,  1061,   522,   153,  -127,   473,   474,   310,
1666 >    1269,  1157,  1277,   255,  1270,   597,  1278,  1115,   488,   304,
1667 >     523,  1158,   311,  1279,   559,   512,   511,  1280,   475,   312,
1668 >    -127,   154,   381,   335,   315,  1281,  1288,   524,   525,  1282,
1669 >    1289,   155,   156,   157,   158,   159,   160,   256,  1063,   316,
1670 >     336,   337,   338,   339,   340,   317,   257,   297,   341,   781,
1671 >     382,   664,   342,   313,   590,   660,   772,   598,   343,   583,
1672 >     508,   599,   745,   161,   583,   407,  1064,   823,   258,   344,
1673 >     345,   297,   259,   753,   812,   592,  1242,    79,   526,   489,
1674 >     260,   346,   670,   261,   262,   738,   540,   162,   163,   164,
1675 >     318,   165,   166,   167,  1062,   476,   588,   168,    80,    81,
1676 >     527,   734,   169,   347,    82,   466,   766,   489,  1100,  1101,
1677 >    1102,   512,   494,  1315,   319,   263,   608,  1316,    70,   235,
1678 >     541,   853,  1260,  1261,  1262,   320,   858,   598,   321,   861,
1679 >     322,   599,   264,   865,   323,   265,   266,   267,   324,    83,
1680 >      84,   594,    71,   348,   325,    85,    86,   236,   326,    72,
1681 >     327,    87,    88,    89,   468,   237,   798,   799,   328,    90,
1682 >      91,   406,   268,   802,   803,   416,   542,   238,   239,   495,
1683 >     469,   609,   240,   241,   242,   417,   496,   418,   497,   269,
1684 >     270,   271,   871,   872,    92,    93,   470,   419,  1063,   420,
1685 >     643,   421,   610,   422,   423,   605,   424,   243,   119,   517,
1686 >     425,   426,   427,   120,   121,   428,   429,   272,   273,   122,
1687 >     430,   866,   579,   431,   543,   518,  1064,   123,   124,    73,
1688 >     471,   432,   433,   434,   125,   435,   436,   126,   127,   437,
1689 >     438,   519,   439,   128,   440,   441,   442,   498,   129,   130,
1690 >     444,   131,   132,   133,   254,   134,  1075,  1076,  1077,  1078,
1691 >    1079,  1080,  1081,   446,   135,   447,   448,   449,   136,   137,
1692 >    1303,   450,   451,   452,   453,   520,   454,   455,   255,   138,
1693 >     456,   457,   458,   459,   460,   472,   461,   462,   463,   139,
1694 >     464,   465,   506,   473,   474,   507,   140,   549,   141,   550,
1695 >     142,  1304,   143,  1305,   144,   145,   613,   551,   552,   553,
1696 >     521,   554,   256,   555,   475,   556,   560,   146,  1168,   561,
1697 >     329,   257,   147,   148,   149,   562,   150,   151,   152,   563,
1698 >     522,   153,  1169,   832,   833,   834,   835,   836,   837,   838,
1699 >    1170,   564,   565,   258,   566,   606,   523,   259,  1306,   567,
1700 >     568,   569,   570,   571,  1171,   260,   572,   154,   261,   262,
1701 >     573,   574,   557,   524,   525,  1307,   575,   155,   156,   157,
1702 >     158,   159,   160,   576,  1135,   577,   578,   589,   593,   607,
1703 >     611,   612,   613,   615,   368,  1172,   369,  1173,   370,   617,
1704 >     263,   476,   620,   621,   622,  1136,   623,   624,   626,   161,
1705 >     371,   625,  1308,  1309,  1137,   627,   628,   264,   630,   631,
1706 >     265,   266,   267,  1174,   526,   666,   372,   672,   632,  1285,
1707 >     633,   634,   635,   162,   163,   164,   636,   165,   166,   167,
1708 >     645,   637,   638,   168,   639,  1138,   527,   268,   169,   640,
1709 >     641,   373,   642,   374,   675,   646,  1175,   647,  1176,   648,
1710 >     375,   649,   650,   651,   269,   270,   271,   653,  1310,   654,
1711 >     655,   376,  1311,   656,  1139,  1140,   667,  1177,   657,  1226,
1712 >     658,   659,  1141,   662,   663,   668,     2,     3,   669,   676,
1713 >       4,   677,   272,   273,   678,   377,   679,  1178,   680,   682,
1714 >       5,   683,  1179,     6,     7,   699,  1180,  1142,   684,   686,
1715 >       8,   687,   331,  1181,   688,   689,   691,   692,  1182,   378,
1716 >     694,     9,   695,  1143,    10,    11,   332,   333,   696,   697,
1717 >     334,   698,  1183,   700,   702,  1184,   705,  1185,   701,   379,
1718 >     706,  1227,   707,   712,   713,   714,   715,   716,   380,  1186,
1719 >     718,   719,    12,   722,   723,   724,  1187,    13,   747,   725,
1720 >     748,   777,   786,   783,   740,   774,    14,   943,   726,   944,
1721 >     945,   775,  1228,   727,   776,   749,   729,   730,   335,  1229,
1722 >     731,   732,   733,   736,   737,  1144,    15,    16,  1230,   741,
1723 >     742,   744,   235,   750,   381,   336,   337,   338,   339,   340,
1724 >     751,   752,   756,   341,    17,   755,   757,   342,   768,  1195,
1725 >     759,  1196,  1197,   343,  1231,   760,  1232,  1233,   782,   761,
1726 >     236,    18,   382,   762,   344,   345,   763,   765,   237,   778,
1727 >     769,  1234,   785,   779,    19,    20,   346,   770,  1235,   771,
1728 >     238,   239,   780,   920,   784,   240,   241,   242,   787,   788,
1729 >     789,  1245,   790,   791,   792,   793,    21,   794,   347,   795,
1730 >     796,   797,   806,   808,   807,   809,   814,   817,   851,    22,
1731 >     243,   815,   862,   810,   816,   818,   819,    23,   825,   852,
1732 >     820,    24,   822,   854,   855,   946,   947,   948,   826,   949,
1733 >     950,   827,   951,   952,   828,   953,   829,   954,   348,   830,
1734 >     955,   831,   841,   956,   957,   842,   958,   843,   844,   845,
1735 >     846,   959,   847,  1246,   848,   960,   961,   962,   849,   856,
1736 >     850,   857,   859,   860,   863,   963,   864,  1198,  1199,  1200,
1737 >     964,  1201,  1202,   866,  1203,  1204,   869,  1205,   877,  1206,
1738 >     870,   880,  1207,   873,  1247,  1208,  1209,   875,  1210,   876,
1739 >     878,  1248,   879,  1211,   874,   881,    79,  1212,  1213,  1214,
1740 >    1249,   921,   922,   923,   882,   924,   925,  1215,   926,   927,
1741 >     883,   928,  1216,   929,   884,   885,   930,    80,    81,   931,
1742 >     932,   886,   933,    82,   887,   888,  1250,   934,  1251,  1252,
1743 >     889,   935,   936,   937,   890,   891,   892,   893,   894,   895,
1744 >     989,   938,   896,  1253,   897,   992,   939,   898,   899,   900,
1745 >    1254,   993,   901,   902,   903,   904,   905,   906,    83,    84,
1746 >     907,   908,   909,   910,    85,    86,   911,   994,   912,   913,
1747 >      87,    88,    89,   914,   915,   916,   917,   918,    90,    91,
1748 >     995,   919,   991,   996,   998,   990,   999,  1001,   942,  1002,
1749 >     967,   968,   969,  1004,  1010,  1011,  1013,   970,  1016,   971,
1750 >     972,  1017,  1018,    92,    93,   973,   974,   975,   976,   977,
1751 >    1019,   978,   979,   980,   981,   982,  1014,   983,   984,   985,
1752 >    1020,   986,   987,   988,   997,  1000,  1022,  1024,  1007,  1003,
1753 >    1025,  1008,  1009,  1012,  1026,  1057,  1071,  1023,  1015,  1021,
1754 >    1073,  1224,  1027,  1028,  1029,  1030,  1271,  1031,  1032,  1033,
1755 >    1034,   314,  1035,  1036,  1037,  1038,  1039,  1040,  1041,  1042,
1756 >    1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,  1055,  1056,
1757 >    1283,  1059,  1243,  1058,  1060,  1070,  1223,  1074,  1082,  1072,
1758 >    1083,  1084,  1089,  1090,  1091,  1092,  1294,  1093,  1094,  1295,
1759 >    1296,  1095,  1317,   754,  1096,  1297,  1097,  1098,  1099,  1105,
1760 >    1298,  1290,  1293,  1106,   591,  1107,  1108,   746,  1272,  1109,
1761 >    1110,  1111,  1112,  1113,   735,  1118,   767,  1119,  1120,  1121,
1762 >    1122,  1123,  1124,  1125,  1126,  1127,  1128,  1133,  1292,  1134,
1763 >    1147,  1148,   824,   773,  1149,  1150,  1314,  1151,  1152,  1153,
1764 >    1161,  1299,  1291,  1154,  1155,   644,   813,  1164,  1165,  1162,
1765 >     739,  1166,  1167,  1190,  1191,  1192,  1193,  1194,  1219,  1220,
1766 >    1221,  1222,  1225,  1238,   408,   467,  1244,  1239,  1240,  1257,
1767 >    1273,  1265,   509,  1274,  1287,   330,  1275,  1276,  1286,  1300,
1768 >    1301,  1302,  1266,   671,     0,     0,     0,     0,     0,     0,
1769 >     580,     0,     0,   558,     0,     0,     0,     0,     0,     0,
1770 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1771 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1772 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   661,
1773 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1774 >       0,     0,     0,     0,     0,   595,     0,     0,     0,     0,
1775 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1776 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1777 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1778 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1779 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1780         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1781         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2040       0,     0,     0,   527,     0,     0,     0,     0,     0,     0,
1782         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2042       0,     0,   545,     0,     0,     0,     0,     0,     0,     0,
1783         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1784 <       0,     0,     0,     0,     0,     0,   564
1784 >       0,     0,     0,     0,     0,     0,     0,   665
1785   };
1786  
2047 #define yypact_value_is_default(Yystate) \
2048  (!!((Yystate) == (-744)))
2049
2050 #define yytable_value_is_error(Yytable_value) \
2051  YYID (0)
2052
1787   static const yytype_int16 yycheck[] =
1788   {
1789 <     598,   599,   300,   301,     1,     1,   215,   216,     1,     1,
1790 <     308,     1,     1,    99,   160,   161,     1,     1,    51,     1,
1791 <     215,     8,     1,     1,   219,     1,     1,   160,   161,     1,
1792 <     217,     1,   775,   776,   777,   778,   779,     1,   217,     1,
1793 <      37,   217,    24,   215,     6,     7,   217,   219,   215,    31,
1794 <      12,   217,   219,   217,    51,    52,    53,    54,    20,     1,
1795 <       1,   215,     1,   215,    26,   219,    28,    29,    30,    61,
1796 <     215,     1,    69,    35,   219,    17,     1,    61,   217,    41,
1797 <      42,   217,    44,    45,    46,    24,   217,    17,    50,    61,
1798 <      32,   217,    31,    55,    36,   393,   394,    59,    60,    24,
1799 <      89,    63,    32,   401,    89,   403,    36,    89,    87,   195,
1800 <      72,    89,   410,   217,    89,   413,     1,    79,    80,    89,
1801 <      82,    83,    84,    85,    86,    89,   424,   425,   120,     1,
1802 <     120,   120,    57,   217,   113,    97,   434,   435,   217,   437,
1803 <     217,   103,   104,   105,   120,   107,    87,     1,   110,   111,
1804 <      89,    36,   114,   186,   217,     1,   120,   217,   191,    89,
1805 <      14,   151,   151,     1,    89,   215,    91,    92,   217,   219,
1806 <     112,    56,   113,   151,   215,   151,    61,   217,   219,   121,
1807 <     122,   151,   112,    21,    22,     1,   148,   151,   215,    27,
1808 <     152,   217,   219,   155,   156,   157,   158,   159,   215,   129,
1809 <     162,   163,   219,   128,   191,   130,   131,   132,   133,     1,
1810 <       1,   153,   208,   134,   135,   208,   206,    89,   214,   216,
1811 <     216,   214,   147,    14,   216,   118,   216,   525,    66,    67,
1812 <     206,   216,   117,     1,   216,    73,    74,    75,   216,    93,
1813 <     202,   203,   204,    89,   216,   207,   171,    15,    16,   215,
1814 <     212,    19,   216,   219,   216,   215,   181,    95,    96,   219,
1815 <       1,     1,   192,     3,   206,     5,   120,     1,   215,   217,
1816 <     108,   109,   219,    89,   216,   216,   206,    17,   215,   151,
1817 <     218,   119,   219,   215,   209,   210,   216,   219,   215,   127,
1818 <     588,   216,    32,   134,   135,    36,    36,    89,   596,   597,
1819 <     178,   179,    93,   218,   218,   151,   218,   218,    76,    77,
1820 <      78,   218,   218,    81,   218,    56,    56,    40,    58,   218,
1821 <      61,    89,    13,     9,    10,    11,   218,    61,    68,   120,
1822 <     218,   216,   100,   101,   206,   151,   218,   218,     1,    62,
1823 <     214,    64,    33,   218,   216,   218,   215,   115,   116,    89,
1824 <     218,   218,    43,   218,    17,  1018,  1019,  1020,    49,   151,
1825 <     218,   218,   216,   218,   215,   218,   218,   213,   218,    32,
1826 <     216,   218,   118,    36,    65,   143,   117,   117,   216,   102,
1827 <     215,   218,     1,     1,   218,   218,   120,   218,     6,     7,
1828 <       1,   218,   218,   218,    12,   218,   218,   213,   218,    90,
1829 <     218,   218,    20,   218,   144,    24,    17,    98,    26,   218,
1830 <      28,    29,    30,    99,   206,   218,   184,    35,   218,   218,
1831 <     218,    32,   218,    41,    42,    36,    44,    45,    46,   218,
1832 <     218,   171,    50,   218,   218,   218,   218,    55,    57,   218,
1833 <     218,    59,    60,   218,   218,    63,   137,   218,   216,   112,
1834 <     173,   174,   218,   218,    72,   218,   218,   218,   121,   122,
1835 <     218,    79,    80,   154,    82,    83,    84,    85,    86,   209,
1836 <      89,   218,    91,    92,   218,   218,   216,   118,    89,    97,
1837 <     218,   218,   218,   206,    99,   103,   104,   105,   218,   107,
1838 <     153,  1089,   110,   111,   218,    99,   114,   218,   218,   218,
1839 <       1,   112,     3,   218,     5,   218,   218,   218,   218,   128,
1840 <     218,   130,   131,   132,   133,     4,    17,   218,   129,   218,
1841 <     218,   218,   218,   218,    64,   218,   218,   160,   147,    99,
1842 <     148,    32,     1,   218,   152,    36,    25,   155,   156,   157,
1843 <     158,   159,   218,   206,   162,   163,    15,    16,   218,   218,
1844 <      19,    40,   171,    99,    99,    56,    99,    58,    47,   160,
1845 <      99,   160,   181,    99,   160,   160,   215,    68,   138,   139,
1846 <     140,   141,   142,   215,   218,    64,   118,   160,   218,   218,
1847 <     218,   192,   218,   218,   202,   203,   204,   218,    89,   207,
1848 <     209,   210,   218,   218,   212,   206,   136,   218,    87,   215,
1849 <      99,   218,    51,   160,   218,    94,   218,    76,    77,    78,
1850 <       0,     1,    81,   218,     4,   218,   117,   106,   218,   160,
1851 <      89,   218,   215,    99,    14,   165,   218,    17,    18,   218,
1852 <     218,   100,   101,    23,   174,   124,   125,   126,   218,     1,
1853 <     180,   218,   218,   144,    34,   218,   115,   116,    38,    39,
1854 <      51,   218,   218,   218,   194,   218,   196,   197,    48,   218,
1855 <     218,   118,   160,   160,    99,   205,    99,    99,   160,   160,
1856 <     171,   211,    62,   160,   143,    37,    99,    99,    51,    99,
1857 <      70,    71,    99,    99,   118,   174,    99,   160,   160,    51,
1858 <      52,    53,    54,   218,   183,   160,   218,   160,    88,   188,
1859 <     160,   160,   160,   118,   160,   194,   160,    69,   209,   198,
1860 <     160,   200,   102,   160,   160,   184,   205,   166,   167,   168,
1861 <     169,   170,   211,   172,   173,   215,   175,   176,   177,    64,
1862 <     215,   180,   218,   182,   183,   218,   185,   218,   187,   218,
1863 <     189,   190,   160,   218,   193,    99,   136,   218,   218,   217,
1864 <     199,   218,   218,   215,   218,   145,   146,   218,   118,   149,
1865 <     150,   118,   215,   218,   215,   166,   167,   168,   169,   170,
1866 <     215,   172,   173,   215,   175,   176,   177,   218,   218,   180,
1867 <     218,   182,   183,   160,   185,   160,   187,   218,   189,   190,
1868 <     218,   218,   193,   166,   167,   168,   169,   170,   199,   172,
1869 <     173,   136,   175,   176,   177,   118,   218,   180,     1,   182,
1870 <     183,   201,   185,   218,   187,   218,   189,   190,   160,   160,
1871 <     193,   215,   118,   160,   118,   118,   199,   118,    21,    22,
1872 <     165,   118,   118,   118,    27,   118,   118,   118,   118,   174,
1873 <     218,   215,   218,   215,   215,   180,   118,   215,   218,   215,
1874 <     215,   215,   215,    99,   215,    99,   215,   215,    99,   194,
1875 <     215,   196,   197,   215,   215,   215,   215,   215,   215,   215,
1876 <     205,   215,   215,    66,    67,    99,   211,    99,    99,   118,
1877 <      73,    74,    75,    99,    99,    99,   215,   118,   118,   160,
1878 <     218,   118,   118,   118,    99,   118,   215,   215,   118,   118,
1879 <     118,   118,    95,    96,   215,   118,   118,   118,   218,   215,
1880 <     215,   215,   215,   215,   215,   108,   109,   215,   215,   118,
1881 <     215,   118,    99,   215,   160,   215,   119,   215,   118,   218,
1882 <     118,   215,   118,   118,   127,   118,   215,   215,   215,   215,
1883 <     215,   215,   215,   118,   118,   215,   215,   215,   215,   215,
1884 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
1885 <     215,   215,   215,   215,   215,   215,   215,   215,   215,    99,
1886 <     215,   118,   215,   215,   118,   215,   160,   215,   215,   118,
1887 <     215,   118,   215,   118,   218,   118,   218,   215,   987,   218,
1888 <     118,   118,   118,   118,   118,    71,   164,    99,   950,   985,
1889 <    1226,   501,   123,  1199,  1197,   215,   215,   215,   328,   215,
1890 <    1187,   218,   215,   215,   215,   215,   123,   215,   222,   215,
1891 <     215,   215,  1084,   215,   215,   477,   215,   452,   215,   118,
1892 <    1183,   515,   550,   215,   215,   215,   215,   215,  1201,   215,
1893 <    1177,   558,   215,   215,  1203,   215,   358,   218,   215,   218,
1894 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
1895 <     215,   215,   215,   215,   215,   215,   215,   215,  1185,   215,
1896 <     215,   467,   215,   215,   215,   215,   376,   215,   112,   215,
1897 <    1179,   215,  1050,   215,   215,   166,   215,  1052,    91,   388,
1898 <      -1,    -1,   215,   215,    -1,   215,   215,   215,   215,   215,
1899 <     215,   215,   215,   215,   215,   215,    -1,   215,    -1,    -1,
1900 <     219,   215,   218,   218,   215,   215,   215,   215,   215,   215,
1901 <     215,   215,   215,   215,   215,   215,    -1,   230,   215,   215,
1902 <     218,   215,   215,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1789 >     641,   642,   319,     1,   321,     8,   323,   324,     1,   235,
1790 >       1,     1,     1,     1,     3,   235,     5,     1,   235,     1,
1791 >       1,    53,     1,     1,     1,   215,     1,     1,    17,   219,
1792 >       1,     1,   215,     1,    25,     1,   219,   235,   112,     1,
1793 >     235,    32,     1,   235,    33,   233,   235,    35,   233,   237,
1794 >      49,     1,   237,   233,   235,   233,   233,   237,     1,   237,
1795 >     237,   233,     1,     1,   235,   237,   235,     6,     7,    58,
1796 >       1,    60,    65,    12,    17,   235,    58,   235,    67,    17,
1797 >     235,    20,    21,    65,    65,    67,    65,    65,    27,    78,
1798 >      33,    30,    31,    81,     1,    33,   128,    36,     1,   235,
1799 >     417,   418,    41,    42,   102,    44,    45,    46,   425,    48,
1800 >      81,   102,   429,   102,   235,    99,   235,   434,    57,   235,
1801 >     437,   235,    61,    62,    67,   102,     1,   102,   102,    67,
1802 >     447,   448,   102,    72,   102,   209,   129,   126,   235,   123,
1803 >     102,   129,   459,    82,   126,   462,   463,     1,   129,    99,
1804 >      89,   235,    91,   235,    93,   129,    95,   146,    97,    98,
1805 >     233,    15,    16,   233,   102,    19,   155,   129,   233,     1,
1806 >     129,   110,   237,   123,   233,   234,   115,   116,   117,   122,
1807 >     119,   120,   121,     1,   122,   124,   176,   130,   131,   236,
1808 >     233,   190,   233,    25,   237,   102,   237,   200,   129,   102,
1809 >     138,   200,   236,   233,   233,   176,    81,   237,   151,   236,
1810 >     176,   150,   201,    67,   236,   233,   233,   155,   156,   237,
1811 >     237,   160,   161,   162,   163,   164,   165,    59,   196,   236,
1812 >      84,    85,    86,    87,    88,   236,    68,   227,    92,   556,
1813 >     229,   234,    96,   234,   234,   234,   234,   224,   102,   224,
1814 >     234,   228,   234,   192,   224,   234,   224,   234,    90,   113,
1815 >     114,   227,    94,   234,   234,   176,   234,     1,   206,   228,
1816 >     102,   125,   234,   105,   106,   234,     1,   216,   217,   218,
1817 >     236,   220,   221,   222,   102,   228,   233,   226,    22,    23,
1818 >     228,   234,   231,   147,    28,   234,   234,   228,     9,    10,
1819 >      11,   176,     1,   233,   236,   137,   233,   237,     1,     1,
1820 >      35,   628,  1100,  1101,  1102,   236,   633,   224,   236,   636,
1821 >     236,   228,   154,   640,   236,   157,   158,   159,   236,    63,
1822 >      64,   234,    25,   187,   236,    69,    70,    29,   236,    32,
1823 >     236,    75,    76,    77,     1,    37,   204,   205,   236,    83,
1824 >      84,   236,   184,   204,   205,   236,    81,    49,    50,    58,
1825 >      17,   112,    54,    55,    56,   236,    65,   236,    67,   201,
1826 >     202,   203,   180,   181,   108,   109,    33,   236,   196,   236,
1827 >     234,   236,   112,   236,   236,   127,   236,    79,     1,     1,
1828 >     236,   236,   236,     6,     7,   236,   236,   229,   230,    12,
1829 >     236,   112,   234,   236,   129,    17,   224,    20,    21,   102,
1830 >      67,   236,   236,   236,    27,   236,   236,    30,    31,   236,
1831 >     236,    33,   236,    36,   236,   236,   236,   126,    41,    42,
1832 >     236,    44,    45,    46,     1,    48,   832,   833,   834,   835,
1833 >     836,   837,   838,   236,    57,   236,   236,   236,    61,    62,
1834 >      40,   236,   236,   236,   236,    67,   236,   236,    25,    72,
1835 >     236,   236,   236,   236,   236,   122,   236,   236,   236,    82,
1836 >     236,   236,   236,   130,   131,   236,    89,   236,    91,   236,
1837 >      93,    71,    95,    73,    97,    98,   112,   236,   236,   236,
1838 >     102,   236,    59,   236,   151,   236,   236,   110,     4,   236,
1839 >     234,    68,   115,   116,   117,   236,   119,   120,   121,   236,
1840 >     122,   124,    18,   139,   140,   141,   142,   143,   144,   145,
1841 >      26,   236,   236,    90,   236,   127,   138,    94,   118,   236,
1842 >     236,   236,   236,   236,    40,   102,   236,   150,   105,   106,
1843 >     236,   236,   234,   155,   156,   135,   236,   160,   161,   162,
1844 >     163,   164,   165,   236,    13,   236,   236,   236,   236,   127,
1845 >     215,   112,   112,   112,     1,    71,     3,    73,     5,   112,
1846 >     137,   228,   112,   112,   215,    34,   215,   233,   236,   192,
1847 >      17,   233,   172,   173,    43,   236,   236,   154,   236,   236,
1848 >     157,   158,   159,    99,   206,   127,    33,   215,   236,  1240,
1849 >     236,   236,   236,   216,   217,   218,   236,   220,   221,   222,
1850 >     233,   236,   236,   226,   236,    74,   228,   184,   231,   236,
1851 >     236,    58,   236,    60,   215,   236,   132,   236,   134,   236,
1852 >      67,   236,   236,   236,   201,   202,   203,   236,   228,   236,
1853 >     236,    78,   232,   236,   103,   104,   233,   153,   236,    73,
1854 >     236,   236,   111,   236,   236,   236,     0,     1,   236,   112,
1855 >       4,   215,   229,   230,   112,   102,   127,   173,   215,   215,
1856 >      14,   112,   178,    17,    18,   236,   182,   136,   112,   112,
1857 >      24,   215,     1,   189,   215,   215,   112,   112,   194,   126,
1858 >     112,    35,   112,   152,    38,    39,    15,    16,   112,   112,
1859 >      19,   215,   208,   215,   215,   211,   215,   213,   236,   146,
1860 >     215,   135,   215,   215,   215,   215,   127,   112,   155,   225,
1861 >     215,   215,    66,   215,   215,   233,   232,    71,   127,   233,
1862 >     127,   127,   112,   127,   233,   215,    80,    49,   236,    51,
1863 >      52,   215,   166,   236,   215,   233,   236,   236,    67,   173,
1864 >     236,   236,   236,   236,   236,   214,   100,   101,   182,   236,
1865 >     236,   236,     1,   233,   201,    84,    85,    86,    87,    88,
1866 >     236,   236,   236,    92,   118,   233,   236,    96,   233,    49,
1867 >     236,    51,    52,   102,   208,   236,   210,   211,   233,   236,
1868 >      29,   135,   229,   236,   113,   114,   236,   236,    37,   215,
1869 >     236,   225,   127,   215,   148,   149,   125,   236,   232,   236,
1870 >      49,    50,   215,    49,   215,    54,    55,    56,   112,   127,
1871 >     127,    73,   127,   127,   127,   127,   170,   127,   147,   127,
1872 >     112,   127,   127,   233,   127,   233,   215,   127,   112,   183,
1873 >      79,   233,   127,   236,   235,   233,   233,   191,   233,   112,
1874 >     236,   195,   236,   236,   112,   167,   168,   169,   233,   171,
1875 >     172,   233,   174,   175,   233,   177,   233,   179,   187,   233,
1876 >     182,   233,   233,   185,   186,   233,   188,   233,   233,   233,
1877 >     233,   193,   233,   135,   233,   197,   198,   199,   233,   112,
1878 >     233,   112,   112,   112,   112,   207,   112,   167,   168,   169,
1879 >     212,   171,   172,   112,   174,   175,   233,   177,   236,   179,
1880 >     127,   112,   182,   127,   166,   185,   186,   127,   188,   127,
1881 >     127,   173,   127,   193,   215,   127,     1,   197,   198,   199,
1882 >     182,   167,   168,   169,   127,   171,   172,   207,   174,   175,
1883 >     127,   177,   212,   179,   127,   233,   182,    22,    23,   185,
1884 >     186,   127,   188,    28,   127,   233,   208,   193,   210,   211,
1885 >     233,   197,   198,   199,   127,   127,   233,   233,   233,   233,
1886 >     127,   207,   233,   225,   233,   127,   212,   233,   233,   233,
1887 >     232,   112,   233,   233,   233,   233,   233,   233,    63,    64,
1888 >     233,   233,   233,   233,    69,    70,   233,   127,   233,   233,
1889 >      75,    76,    77,   233,   233,   233,   233,   233,    83,    84,
1890 >     127,   233,   236,   127,   127,   215,   127,   127,   233,   127,
1891 >     233,   233,   233,   112,   127,   127,   127,   233,   127,   233,
1892 >     233,   127,   127,   108,   109,   233,   233,   233,   233,   233,
1893 >     127,   233,   233,   233,   233,   233,   215,   233,   233,   233,
1894 >     215,   233,   233,   233,   233,   233,   127,   127,   233,   236,
1895 >     127,   233,   233,   233,   127,   127,   127,   233,   236,   236,
1896 >     127,  1054,   233,   233,   233,   233,   112,   233,   233,   233,
1897 >     233,    74,   233,   233,   233,   233,   233,   233,   233,   233,
1898 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
1899 >     127,   233,  1065,   236,   233,   233,  1052,   233,   233,   236,
1900 >     233,   233,   233,   233,   233,   233,   133,   233,   233,   133,
1901 >     133,   233,  1316,   513,   233,  1278,   233,   233,   233,   233,
1902 >    1280,  1259,  1270,   233,   298,   233,   233,   500,  1162,   233,
1903 >     233,   233,   233,   233,   477,   233,   528,   233,   233,   233,
1904 >     233,   233,   233,   233,   233,   233,   233,   233,  1268,   233,
1905 >     233,   233,   600,   544,   233,   233,  1289,   233,   233,   233,
1906 >     223,  1282,  1264,   233,   233,   349,   584,   233,   233,   237,
1907 >     490,   233,   233,   233,   233,   233,   233,   233,   233,   233,
1908 >     233,   233,   233,   233,   115,   170,   233,   236,   236,   233,
1909 >     233,  1130,   228,   238,   233,    94,   238,   238,   236,   233,
1910 >     233,   233,  1132,   412,    -1,    -1,    -1,    -1,    -1,    -1,
1911 >     274,    -1,    -1,   244,    -1,    -1,    -1,    -1,    -1,    -1,
1912 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1913 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1914 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   383,
1915 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1916 >      -1,    -1,    -1,    -1,    -1,   305,    -1,    -1,    -1,    -1,
1917 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1918 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1919 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1920        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1921        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2171      -1,    -1,    -1,   243,    -1,    -1,    -1,    -1,    -1,    -1,
1922        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2173      -1,    -1,   267,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1923        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1924 <      -1,    -1,    -1,    -1,    -1,    -1,   288
1924 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1925 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1926 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,   402
1927   };
1928  
1929 < /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1930 <   symbol of state STATE-NUM.  */
1929 >  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1930 >     symbol of state STATE-NUM.  */
1931   static const yytype_uint16 yystos[] =
1932   {
1933 <       0,   221,     0,     1,     4,    14,    17,    18,    23,    34,
1934 <      38,    39,    48,    62,    70,    71,    88,   102,   136,   145,
1935 <     146,   149,   150,   201,   222,   227,   232,   254,   260,   274,
1936 <     292,   310,   324,   339,   346,   350,   360,   369,   389,   399,
1937 <     405,   409,   419,   477,   494,   215,   216,   217,   217,   293,
1938 <     370,   400,   217,   410,   217,   325,   390,   311,   217,   217,
1939 <     275,   340,   217,   217,   351,   361,   217,     1,    24,    31,
1940 <      89,   255,   256,   257,   258,   259,     1,    21,    22,    27,
1941 <      66,    67,    73,    74,    75,    95,    96,   108,   109,   119,
1942 <     127,   478,   479,   480,   481,   482,   483,   484,   485,   486,
1943 <     487,   488,   489,   490,   491,   492,   493,   217,   217,   217,
1944 <       1,    61,   406,   407,   408,   217,     1,     6,     7,    12,
1945 <      20,    26,    28,    29,    30,    35,    41,    42,    44,    45,
1946 <      46,    50,    55,    59,    60,    63,    72,    79,    80,    82,
1947 <      83,    84,    85,    86,    97,   103,   104,   105,   107,   110,
1948 <     111,   114,   148,   152,   155,   156,   157,   158,   159,   162,
1949 <     163,   202,   203,   204,   207,   212,   420,   421,   422,   423,
1950 <     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
1951 <     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
1952 <     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
1933 >       0,   240,     0,     1,     4,    14,    17,    18,    24,    35,
1934 >      38,    39,    66,    71,    80,   100,   101,   118,   135,   148,
1935 >     149,   170,   183,   191,   195,   241,   246,   251,   277,   283,
1936 >     289,   303,   323,   347,   361,   376,   383,   387,   397,   406,
1937 >     427,   433,   439,   443,   449,   508,   525,   233,   234,   235,
1938 >     235,   324,   407,   434,   235,   444,   235,   362,   428,   348,
1939 >     235,   284,   304,   377,   235,   235,   398,   235,   235,   388,
1940 >       1,    25,    32,   102,   278,   279,   280,   281,   282,     1,
1941 >      22,    23,    28,    63,    64,    69,    70,    75,    76,    77,
1942 >      83,    84,   108,   109,   509,   510,   511,   512,   513,   514,
1943 >     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
1944 >     235,   235,   235,     1,    65,   440,   441,   442,   235,     1,
1945 >       6,     7,    12,    20,    21,    27,    30,    31,    36,    41,
1946 >      42,    44,    45,    46,    48,    57,    61,    62,    72,    82,
1947 >      89,    91,    93,    95,    97,    98,   110,   115,   116,   117,
1948 >     119,   120,   121,   124,   150,   160,   161,   162,   163,   164,
1949 >     165,   192,   216,   217,   218,   220,   221,   222,   226,   231,
1950 >     450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
1951 >     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
1952 >     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
1953 >     480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
1954 >     490,   491,   492,   493,   494,   495,   496,   497,   501,   505,
1955 >     506,   507,   235,   235,   235,     1,    99,   123,   247,   248,
1956 >     249,   250,   235,   235,   235,     1,    29,    37,    49,    50,
1957 >      54,    55,    56,    79,   526,   527,   528,   529,   530,   531,
1958 >     532,   533,   534,   535,     1,    25,    59,    68,    90,    94,
1959 >     102,   105,   106,   137,   154,   157,   158,   159,   184,   201,
1960 >     202,   203,   229,   230,   252,   253,   254,   255,   260,   261,
1961 >     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
1962 >     272,   273,   274,   275,   276,   235,     1,   227,   290,   291,
1963 >     292,   293,   294,     1,   102,   384,   385,   386,   235,   233,
1964 >     236,   236,   236,   234,   279,   236,   236,   236,   236,   236,
1965 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   234,
1966 >     510,     1,    15,    16,    19,    67,    84,    85,    86,    87,
1967 >      88,    92,    96,   102,   113,   114,   125,   147,   187,   325,
1968 >     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
1969 >     336,   337,   338,   339,   340,   341,   342,   343,     1,     3,
1970 >       5,    17,    33,    58,    60,    67,    78,   102,   126,   146,
1971 >     155,   201,   229,   408,   409,   410,   411,   412,   413,   414,
1972 >     415,   416,   417,   418,   422,   423,   424,   425,   426,     1,
1973 >      65,   129,   435,   436,   437,   438,   236,   234,   441,     1,
1974 >     102,   129,   445,   446,   447,   448,   236,   236,   236,   236,
1975 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
1976 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
1977 >     236,   236,   236,   502,   236,   498,   236,   236,   236,   236,
1978 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
1979 >     236,   236,   236,   236,   236,   236,   234,   451,     1,    17,
1980 >      33,    67,   122,   130,   131,   151,   228,   363,   364,   365,
1981 >     366,   367,   368,   369,   373,   374,   375,     1,   129,   228,
1982 >     429,   430,   431,   432,     1,    58,    65,    67,   126,   349,
1983 >     353,   354,   355,   359,   360,   233,   236,   236,   234,   248,
1984 >       1,    81,   176,   285,   286,   287,   288,     1,    17,    33,
1985 >      67,   102,   122,   138,   155,   156,   206,   228,   305,   306,
1986 >     307,   308,   309,   310,   311,   312,   313,   314,   315,   319,
1987 >       1,    35,    81,   129,   378,   379,   380,   381,   382,   236,
1988 >     236,   236,   236,   236,   236,   236,   236,   234,   527,   233,
1989 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
1990 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   234,
1991 >     253,     1,   102,   224,   399,   400,   401,   402,   233,   236,
1992 >     234,   291,   176,   236,   234,   385,     1,   102,   224,   228,
1993 >     389,   390,   391,   392,   393,   127,   127,   127,   233,   112,
1994 >     112,   215,   112,   112,   243,   112,   243,   112,   243,   243,
1995 >     112,   112,   215,   215,   233,   233,   236,   236,   236,   344,
1996 >     236,   236,   236,   236,   236,   236,   236,   236,   236,   236,
1997 >     236,   236,   236,   234,   326,   233,   236,   236,   236,   236,
1998 >     236,   236,   419,   236,   236,   236,   236,   236,   236,   236,
1999 >     234,   409,   236,   236,   234,   436,   127,   233,   236,   236,
2000 >     234,   446,   215,   243,   243,   215,   112,   215,   112,   127,
2001 >     215,   243,   215,   112,   112,   243,   112,   215,   215,   215,
2002 >     243,   112,   112,   243,   112,   112,   112,   112,   215,   236,
2003 >     215,   236,   215,   243,   243,   215,   215,   215,   215,   219,
2004 >     215,   219,   215,   215,   215,   127,   112,   243,   215,   215,
2005 >     243,   243,   215,   215,   233,   233,   236,   236,   370,   236,
2006 >     236,   236,   236,   236,   234,   364,   236,   236,   234,   430,
2007 >     233,   236,   236,   350,   236,   234,   354,   127,   127,   233,
2008 >     233,   236,   236,   234,   286,   233,   236,   236,   320,   236,
2009 >     236,   236,   236,   236,   316,   236,   234,   306,   233,   236,
2010 >     236,   236,   234,   379,   215,   215,   215,   127,   215,   215,
2011 >     215,   243,   233,   127,   215,   127,   112,   112,   127,   127,
2012 >     127,   127,   127,   127,   127,   127,   112,   127,   204,   205,
2013 >     256,   257,   204,   205,   258,   259,   127,   127,   233,   233,
2014 >     236,   403,   234,   400,   215,   233,   235,   127,   233,   233,
2015 >     236,   394,   236,   234,   390,   233,   233,   233,   233,   233,
2016 >     233,   233,   139,   140,   141,   142,   143,   144,   145,   242,
2017 >     243,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2018 >     233,   112,   112,   243,   236,   112,   112,   112,   243,   112,
2019 >     112,   243,   127,   112,   112,   243,   112,   245,   245,   233,
2020 >     127,   180,   181,   127,   215,   127,   127,   236,   127,   127,
2021 >     112,   127,   127,   127,   127,   233,   127,   127,   233,   233,
2022 >     127,   127,   233,   233,   233,   233,   233,   233,   233,   233,
2023 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2024 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2025 >      49,   167,   168,   169,   171,   172,   174,   175,   177,   179,
2026 >     182,   185,   186,   188,   193,   197,   198,   199,   207,   212,
2027 >     503,   504,   233,    49,    51,    52,   167,   168,   169,   171,
2028 >     172,   174,   175,   177,   179,   182,   185,   186,   188,   193,
2029 >     197,   198,   199,   207,   212,   499,   500,   233,   233,   233,
2030 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2031 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   127,
2032 >     215,   236,   127,   112,   127,   127,   127,   233,   127,   127,
2033 >     233,   127,   127,   236,   112,   357,   358,   233,   233,   233,
2034 >     127,   127,   233,   127,   215,   236,   127,   127,   127,   127,
2035 >     215,   236,   127,   233,   127,   127,   127,   233,   233,   233,
2036 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2037 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2038 >     233,   233,   237,   233,   237,   233,   233,   127,   236,   233,
2039 >     233,     1,   102,   196,   224,   295,   296,   297,   298,   299,
2040 >     233,   127,   236,   127,   233,   242,   242,   242,   242,   242,
2041 >     242,   242,   233,   233,   233,    53,   128,   345,   346,   233,
2042 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2043 >       9,    10,    11,   244,   245,   233,   233,   233,   233,   233,
2044 >     233,   233,   233,   233,     8,   200,   420,   421,   233,   233,
2045 >     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
2046 >     237,   233,   237,   233,   233,    13,    34,    43,    74,   103,
2047 >     104,   111,   136,   152,   214,   371,   372,   233,   233,   233,
2048 >     233,   233,   233,   233,   233,   233,    49,   190,   200,   351,
2049 >     352,   223,   237,   356,   233,   233,   233,   233,     4,    18,
2050 >      26,    40,    71,    73,    99,   132,   134,   153,   173,   178,
2051 >     182,   189,   194,   208,   211,   213,   225,   232,   321,   322,
2052 >     233,   233,   233,   233,   233,    49,    51,    52,   167,   168,
2053 >     169,   171,   172,   174,   175,   177,   179,   182,   185,   186,
2054 >     188,   193,   197,   198,   199,   207,   212,   317,   318,   233,
2055 >     233,   233,   233,   257,   259,   233,    73,   135,   166,   173,
2056 >     182,   208,   210,   211,   225,   232,   404,   405,   233,   236,
2057 >     236,   300,   234,   296,   233,    73,   135,   166,   173,   182,
2058 >     208,   210,   211,   225,   232,   395,   396,   233,   233,   237,
2059 >     244,   244,   244,   233,   237,   504,   500,   233,   237,   233,
2060 >     237,   112,   358,   233,   238,   238,   238,   233,   237,   233,
2061 >     237,   233,   237,   127,   209,   245,   236,   233,   233,   237,
2062 >     346,   421,   372,   352,   133,   133,   133,   322,   318,   405,
2063 >     233,   233,   233,    40,    71,    73,   118,   135,   172,   173,
2064 >     228,   232,   301,   302,   396,   233,   237,   302
2065 > };
2066 >
2067 >  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2068 > static const yytype_uint16 yyr1[] =
2069 > {
2070 >       0,   239,   240,   240,   241,   241,   241,   241,   241,   241,
2071 >     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
2072 >     241,   241,   241,   241,   241,   241,   241,   242,   242,   243,
2073 >     243,   243,   243,   243,   243,   243,   243,   244,   244,   245,
2074 >     245,   245,   245,   246,   247,   247,   248,   248,   248,   249,
2075 >     250,   251,   252,   252,   253,   253,   253,   253,   253,   253,
2076 >     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
2077 >     253,   253,   253,   253,   254,   255,   256,   256,   257,   257,
2078 >     258,   258,   259,   259,   260,   261,   262,   263,   264,   265,
2079 >     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
2080 >     276,   277,   278,   278,   279,   279,   279,   279,   280,   281,
2081 >     282,   284,   283,   285,   285,   286,   286,   286,   287,   288,
2082 >     289,   290,   290,   291,   291,   291,   292,   294,   293,   295,
2083 >     295,   296,   296,   296,   296,   297,   298,   298,   300,   299,
2084 >     301,   301,   302,   302,   302,   302,   302,   302,   302,   302,
2085 >     302,   304,   303,   305,   305,   306,   306,   306,   306,   306,
2086 >     306,   306,   306,   306,   306,   306,   307,   308,   309,   310,
2087 >     311,   312,   313,   314,   316,   315,   317,   317,   318,   318,
2088 >     318,   318,   318,   318,   318,   318,   318,   318,   318,   318,
2089 >     318,   318,   318,   318,   318,   318,   318,   318,   318,   318,
2090 >     320,   319,   321,   321,   322,   322,   322,   322,   322,   322,
2091 >     322,   322,   322,   322,   322,   322,   322,   322,   322,   322,
2092 >     322,   322,   322,   322,   322,   322,   322,   324,   323,   325,
2093 >     325,   326,   326,   326,   326,   326,   326,   326,   326,   326,
2094 >     326,   326,   326,   326,   326,   326,   326,   326,   326,   327,
2095 >     328,   329,   330,   331,   332,   333,   334,   335,   336,   337,
2096 >     338,   339,   340,   341,   342,   344,   343,   345,   345,   346,
2097 >     346,   348,   347,   350,   349,   351,   351,   352,   352,   352,
2098 >     353,   353,   354,   354,   354,   354,   354,   356,   355,   357,
2099 >     357,   358,   358,   359,   360,   362,   361,   363,   363,   364,
2100 >     364,   364,   364,   364,   364,   364,   364,   364,   365,   366,
2101 >     367,   368,   370,   369,   371,   371,   372,   372,   372,   372,
2102 >     372,   372,   372,   372,   372,   372,   373,   374,   375,   377,
2103 >     376,   378,   378,   379,   379,   379,   379,   380,   381,   382,
2104 >     383,   384,   384,   385,   385,   386,   388,   387,   389,   389,
2105 >     390,   390,   390,   390,   391,   392,   394,   393,   395,   395,
2106 >     396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
2107 >     398,   397,   399,   399,   400,   400,   400,   401,   403,   402,
2108 >     404,   404,   405,   405,   405,   405,   405,   405,   405,   405,
2109 >     405,   405,   407,   406,   408,   408,   409,   409,   409,   409,
2110 >     409,   409,   409,   409,   409,   409,   409,   409,   409,   409,
2111 >     409,   410,   411,   412,   413,   414,   415,   416,   417,   417,
2112 >     419,   418,   420,   420,   421,   421,   422,   423,   424,   425,
2113 >     426,   428,   427,   429,   429,   430,   430,   430,   431,   432,
2114 >     434,   433,   435,   435,   436,   436,   436,   437,   438,   439,
2115 >     440,   440,   441,   441,   442,   444,   443,   445,   445,   446,
2116 >     446,   446,   447,   448,   449,   450,   450,   451,   451,   451,
2117 >     451,   451,   451,   451,   451,   451,   451,   451,   451,   451,
2118 >     451,   451,   451,   451,   451,   451,   451,   451,   451,   451,
2119 >     451,   451,   451,   451,   451,   451,   451,   451,   451,   451,
2120 >     451,   451,   451,   451,   451,   451,   451,   451,   451,   451,
2121 >     451,   451,   451,   451,   451,   451,   451,   451,   452,   453,
2122       454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
2123 <     464,   465,   466,   470,   474,   475,   476,   217,   217,   217,
2124 <       1,   208,   261,   262,   263,   264,   265,     1,    87,   113,
2125 <     228,   229,   230,   231,   217,   217,     1,    37,    51,    52,
2126 <      53,    54,    69,   495,   496,   497,   498,   499,   500,   501,
2127 <     502,     1,    24,    57,    89,    91,    92,   128,   130,   131,
2128 <     132,   133,   147,   171,   181,   209,   210,   233,   234,   235,
2129 <     236,   241,   242,   243,   244,   245,   246,   247,   248,   249,
2130 <     250,   251,   252,   253,   217,   217,     1,    89,   347,   348,
2131 <     349,   215,   218,   218,   218,   216,   256,   218,   218,   218,
2132 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2133 <     218,   216,   479,     1,    15,    16,    19,    76,    77,    78,
2134 <      81,    89,   100,   101,   115,   116,   143,   184,   294,   295,
2135 <     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
2136 <     306,   307,   308,   309,     1,     3,     5,    17,    32,    36,
2137 <      56,    58,    68,    89,   117,   144,   171,   209,   371,   372,
2138 <     373,   374,   375,   376,   377,   378,   379,   380,   384,   385,
2139 <     386,   387,   388,     1,    61,   120,   401,   402,   403,   404,
2140 <     218,   216,   407,     1,    89,   120,   151,   411,   415,   416,
2141 <     417,   418,   218,   218,   218,   218,   218,   218,   218,   218,
2142 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2143 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2144 <     218,   471,   218,   467,   218,   218,   218,   218,   218,   218,
2145 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2146 <     218,   216,   421,     1,    17,    32,    36,   112,   121,   122,
2147 <     153,   206,   326,   327,   328,   329,   330,   331,   332,   336,
2148 <     337,   338,     1,   120,   151,   206,   391,   395,   396,   397,
2149 <     398,     1,    36,    56,    61,   117,   312,   316,   317,   318,
2150 <     322,   323,   215,   218,   216,   262,   214,   215,   218,   218,
2151 <     216,   229,     1,    17,    32,    36,    89,   112,   129,   192,
2152 <     206,   276,   277,   278,   279,   280,   281,   282,   283,   284,
2153 <     288,     1,    14,    93,   120,   341,   342,   343,   344,   345,
2154 <     218,   218,   218,   218,   218,   218,   216,   496,   215,   218,
2155 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2156 <     218,   218,   218,   218,   216,   234,     1,    89,   151,   206,
2157 <     352,   353,   354,   355,   356,     1,    89,   151,   362,   363,
2158 <     364,   365,   218,   216,   348,   118,   118,   118,   215,    99,
2159 <      99,   160,    99,   224,   224,    99,    99,    99,   160,   160,
2160 <      99,   224,   160,   160,   215,   215,   218,   218,   218,   218,
2161 <     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
2162 <     216,   295,   215,   218,   218,   218,   218,   381,   218,   218,
2163 <     218,   218,   218,   218,   218,   218,   216,   372,   218,   218,
2164 <     216,   402,   118,   215,   218,   218,   412,   216,   416,   160,
2165 <     224,   224,    99,   160,   160,    99,   118,   160,   224,   160,
2166 <     224,    99,    99,    99,   160,   160,   160,   224,    99,    99,
2167 <     224,    99,    99,   118,    99,    99,   160,   160,   218,   160,
2168 <     218,   224,   224,   160,   160,   160,   160,   160,   161,   160,
2169 <     161,   160,   160,   224,   224,   118,   224,   160,   160,   160,
2170 <     215,   215,   218,   218,   333,   218,   218,   218,   218,   218,
2171 <     216,   327,   218,   392,   218,   216,   396,   215,   313,   218,
2172 <     218,   218,   216,   317,   160,   215,   217,   118,   118,   215,
2173 <     215,   218,   218,   289,   218,   218,   218,   285,   218,   216,
2174 <     277,   215,   218,   218,   218,   216,   342,   160,   160,   118,
2175 <     160,   160,   224,   215,   118,   160,   118,   118,   118,   118,
2176 <     118,   118,   134,   135,   237,   238,   134,   135,   239,   240,
2177 <     118,   118,    99,   118,   118,   215,   215,   218,   357,   218,
2178 <     216,   353,   215,   218,   366,   216,   363,   118,   215,   215,
2179 <     215,   215,   215,   215,   215,   138,   139,   140,   141,   142,
2180 <     223,   224,   215,   215,   215,   215,   215,   215,   215,   215,
2181 <     215,   215,   215,    99,    99,   224,    99,    99,    99,    99,
2182 <     118,    99,    99,   224,   224,    99,   226,   226,   215,   118,
2183 <     178,   179,   118,   160,   218,   118,   118,   118,   118,    99,
2184 <     118,   118,   118,   215,   118,   118,   215,   215,   118,   118,
2185 <     218,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2186 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2187 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2188 <     215,    51,   166,   167,   168,   169,   170,   172,   173,   175,
2189 <     176,   177,   180,   182,   183,   185,   187,   189,   190,   193,
2190 <     199,   472,   473,   215,    51,   166,   167,   168,   169,   170,
2191 <     172,   173,   175,   176,   177,   180,   182,   183,   185,   187,
2192 <     189,   190,   193,   199,   468,   469,   215,   215,   215,   215,
2193 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2194 <     215,   215,   215,   215,   215,   118,   160,   218,   118,    99,
2195 <     118,   118,   118,   215,   118,   218,   118,   215,   218,   118,
2196 <     118,    99,   320,   321,   215,   215,     1,    89,   151,   213,
2197 <     266,   267,   268,   269,   270,   215,   215,   118,   160,   218,
2198 <     118,   118,   118,   218,   118,   215,   118,   118,   118,   215,
2199 <     215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
2200 <     215,   215,   215,   215,   215,   219,   215,   219,   215,   215,
2201 <     215,   215,   215,   118,   218,   118,   215,   118,   218,   215,
2202 <     215,   223,   223,   223,   223,   223,   215,   215,   215,   215,
2203 <     215,   215,   215,   215,   215,   215,   215,   215,     9,    10,
2204 <      11,   225,   226,   215,   215,   215,   215,   215,   215,   215,
2205 <       8,   191,   382,   383,   215,   215,   215,   215,   215,   215,
2206 <     215,   215,   215,   215,   215,   215,   123,   413,   414,   215,
2207 <     219,   215,   219,   215,   215,    13,    33,    43,    49,    65,
2208 <      90,    98,   137,   154,   334,   335,   215,   215,   215,   215,
2289 <     215,   215,   123,   393,   394,   215,    51,   186,   191,   314,
2290 <     315,   215,   215,   164,   219,   319,   215,   218,   271,   218,
2291 <     216,   267,   215,   215,     4,    25,    40,    47,    64,    87,
2292 <      94,   106,   124,   125,   126,   174,   183,   188,   194,   198,
2293 <     200,   205,   211,   290,   291,   215,   215,   215,    51,   166,
2294 <     167,   168,   169,   170,   172,   173,   175,   176,   177,   180,
2295 <     182,   183,   185,   187,   189,   190,   193,   199,   286,   287,
2296 <     215,   215,   215,   215,   238,   240,   215,    64,   136,   165,
2297 <     174,   180,   194,   196,   197,   205,   211,   358,   359,   215,
2298 <     215,    64,   136,   165,   174,   180,   194,   196,   197,   205,
2299 <     211,   367,   368,   225,   225,   225,   215,   219,   215,   219,
2300 <     473,   469,   215,   219,   215,   219,   215,   219,    99,   321,
2301 <     215,   118,   218,   195,   226,   215,   215,   219,   215,   219,
2302 <     215,   219,   215,   219,   383,   414,   335,   394,   315,   215,
2303 <      40,    62,    64,   102,   173,   174,   206,   272,   273,   215,
2304 <     215,   291,   287,   359,   368,   215,   219,   273
2123 >     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
2124 >     474,   475,   476,   477,   478,   478,   479,   479,   480,   481,
2125 >     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
2126 >     492,   493,   494,   495,   496,   498,   497,   499,   499,   500,
2127 >     500,   500,   500,   500,   500,   500,   500,   500,   500,   500,
2128 >     500,   500,   500,   500,   500,   500,   500,   500,   500,   500,
2129 >     500,   502,   501,   503,   503,   504,   504,   504,   504,   504,
2130 >     504,   504,   504,   504,   504,   504,   504,   504,   504,   504,
2131 >     504,   504,   504,   504,   504,   505,   506,   507,   508,   509,
2132 >     509,   510,   510,   510,   510,   510,   510,   510,   510,   510,
2133 >     510,   510,   510,   510,   510,   510,   511,   512,   513,   514,
2134 >     515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
2135 >     525,   526,   526,   527,   527,   527,   527,   527,   527,   527,
2136 >     527,   527,   528,   529,   530,   531,   532,   533,   534,   535
2137 > };
2138 >
2139 >  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2140 > static const yytype_uint8 yyr2[] =
2141 > {
2142 >       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
2143 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2144 >       1,     1,     1,     1,     1,     2,     2,     0,     1,     2,
2145 >       3,     3,     3,     3,     3,     3,     3,     0,     1,     2,
2146 >       3,     3,     3,     5,     2,     1,     1,     1,     2,     4,
2147 >       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
2148 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2149 >       1,     1,     1,     2,     4,     4,     3,     1,     1,     1,
2150 >       3,     1,     1,     1,     4,     4,     4,     4,     4,     4,
2151 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2152 >       4,     5,     2,     1,     1,     1,     1,     2,     4,     4,
2153 >       4,     0,     6,     2,     1,     1,     1,     2,     4,     4,
2154 >       5,     2,     1,     1,     1,     2,     4,     0,     6,     2,
2155 >       1,     1,     1,     1,     2,     4,     4,     4,     0,     5,
2156 >       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2157 >       1,     0,     6,     2,     1,     1,     1,     1,     1,     1,
2158 >       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
2159 >       4,     4,     4,     4,     0,     5,     3,     1,     1,     1,
2160 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2161 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2162 >       0,     5,     3,     1,     3,     1,     3,     1,     3,     1,
2163 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2164 >       1,     1,     1,     1,     1,     1,     1,     0,     6,     2,
2165 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2166 >       1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
2167 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2168 >       4,     4,     4,     4,     4,     0,     5,     3,     1,     1,
2169 >       1,     0,     6,     0,     5,     3,     1,     1,     1,     1,
2170 >       2,     1,     1,     1,     1,     1,     2,     0,     5,     3,
2171 >       1,     1,     3,     4,     4,     0,     6,     2,     1,     1,
2172 >       1,     1,     1,     1,     1,     1,     1,     2,     4,     4,
2173 >       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
2174 >       1,     1,     1,     1,     1,     1,     4,     4,     4,     0,
2175 >       6,     2,     1,     1,     1,     1,     2,     4,     4,     4,
2176 >       5,     2,     1,     1,     1,     4,     0,     6,     2,     1,
2177 >       1,     1,     1,     2,     4,     4,     0,     5,     3,     1,
2178 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2179 >       0,     6,     2,     1,     1,     1,     2,     4,     0,     5,
2180 >       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2181 >       1,     1,     0,     6,     2,     1,     1,     1,     1,     1,
2182 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2183 >       2,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2184 >       0,     5,     3,     1,     1,     1,     4,     4,     4,     4,
2185 >       4,     0,     6,     2,     1,     1,     1,     1,     4,     4,
2186 >       0,     6,     2,     1,     1,     1,     1,     4,     4,     5,
2187 >       2,     1,     1,     1,     4,     0,     6,     2,     1,     1,
2188 >       1,     1,     4,     4,     5,     2,     1,     1,     1,     1,
2189 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2190 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2191 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2192 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2193 >       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
2194 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2195 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2196 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2197 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2198 >       4,     4,     4,     4,     4,     0,     5,     3,     1,     1,
2199 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2200 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2201 >       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
2202 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2203 >       1,     1,     1,     1,     1,     4,     4,     4,     5,     2,
2204 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2205 >       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
2206 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2207 >       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
2208 >       1,     1,     4,     4,     4,     4,     4,     4,     4,     4
2209   };
2210  
2211 < #define yyerrok         (yyerrstatus = 0)
2212 < #define yyclearin       (yychar = YYEMPTY)
2213 < #define YYEMPTY         (-2)
2214 < #define YYEOF           0
2215 <
2216 < #define YYACCEPT        goto yyacceptlab
2217 < #define YYABORT         goto yyabortlab
2218 < #define YYERROR         goto yyerrorlab
2219 <
2220 <
2317 < /* Like YYERROR except do call yyerror.  This remains here temporarily
2318 <   to ease the transition to the new meaning of YYERROR, for GCC.
2319 <   Once GCC version 2 has supplanted version 1, this can go.  However,
2320 <   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
2321 <   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
2322 <   discussed.  */
2323 <
2324 < #define YYFAIL          goto yyerrlab
2325 < #if defined YYFAIL
2326 <  /* This is here to suppress warnings from the GCC cpp's
2327 <     -Wunused-macros.  Normally we don't worry about that warning, but
2328 <     some users do, and we want to make it easy for users to remove
2329 <     YYFAIL uses, which will produce warnings from Bison 2.5.  */
2330 < #endif
2211 >
2212 > #define yyerrok         (yyerrstatus = 0)
2213 > #define yyclearin       (yychar = YYEMPTY)
2214 > #define YYEMPTY         (-2)
2215 > #define YYEOF           0
2216 >
2217 > #define YYACCEPT        goto yyacceptlab
2218 > #define YYABORT         goto yyabortlab
2219 > #define YYERROR         goto yyerrorlab
2220 >
2221  
2222   #define YYRECOVERING()  (!!yyerrstatus)
2223  
# Line 2344 | Line 2234 | do
2234    else                                                          \
2235      {                                                           \
2236        yyerror (YY_("syntax error: cannot back up")); \
2237 <      YYERROR;                                                  \
2238 <    }                                                           \
2239 < while (YYID (0))
2237 >      YYERROR;                                                  \
2238 >    }                                                           \
2239 > while (0)
2240  
2241 + /* Error token number */
2242 + #define YYTERROR        1
2243 + #define YYERRCODE       256
2244  
2352 #define YYTERROR        1
2353 #define YYERRCODE       256
2245  
2355 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2356   If N is 0, then set CURRENT to the empty location which ends
2357   the previous symbol: RHS[0] (always defined).  */
2246  
2247 < #ifndef YYLLOC_DEFAULT
2248 < # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2361 <    do                                                                  \
2362 <      if (YYID (N))                                                     \
2363 <        {                                                               \
2364 <          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2365 <          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2366 <          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2367 <          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2368 <        }                                                               \
2369 <      else                                                              \
2370 <        {                                                               \
2371 <          (Current).first_line   = (Current).last_line   =              \
2372 <            YYRHSLOC (Rhs, 0).last_line;                                \
2373 <          (Current).first_column = (Current).last_column =              \
2374 <            YYRHSLOC (Rhs, 0).last_column;                              \
2375 <        }                                                               \
2376 <    while (YYID (0))
2377 < #endif
2378 <
2379 < #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2247 > /* Enable debugging if requested.  */
2248 > #if YYDEBUG
2249  
2250 + # ifndef YYFPRINTF
2251 + #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2252 + #  define YYFPRINTF fprintf
2253 + # endif
2254  
2255 + # define YYDPRINTF(Args)                        \
2256 + do {                                            \
2257 +  if (yydebug)                                  \
2258 +    YYFPRINTF Args;                             \
2259 + } while (0)
2260  
2261   /* This macro is provided for backward compatibility. */
2384
2262   #ifndef YY_LOCATION_PRINT
2263   # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2264   #endif
2265  
2266  
2267 < /* YYLEX -- calling `yylex' with the right arguments.  */
2268 <
2269 < #ifdef YYLEX_PARAM
2270 < # define YYLEX yylex (YYLEX_PARAM)
2271 < #else
2272 < # define YYLEX yylex ()
2273 < #endif
2274 <
2275 < /* Enable debugging if requested.  */
2276 < #if YYDEBUG
2400 <
2401 < # ifndef YYFPRINTF
2402 < #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2403 < #  define YYFPRINTF fprintf
2404 < # endif
2267 > # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2268 > do {                                                                      \
2269 >  if (yydebug)                                                            \
2270 >    {                                                                     \
2271 >      YYFPRINTF (stderr, "%s ", Title);                                   \
2272 >      yy_symbol_print (stderr,                                            \
2273 >                  Type, Value); \
2274 >      YYFPRINTF (stderr, "\n");                                           \
2275 >    }                                                                     \
2276 > } while (0)
2277  
2406 # define YYDPRINTF(Args)                        \
2407 do {                                            \
2408  if (yydebug)                                  \
2409    YYFPRINTF Args;                             \
2410 } while (YYID (0))
2411
2412 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2413 do {                                                                      \
2414  if (yydebug)                                                            \
2415    {                                                                     \
2416      YYFPRINTF (stderr, "%s ", Title);                                   \
2417      yy_symbol_print (stderr,                                            \
2418                  Type, Value); \
2419      YYFPRINTF (stderr, "\n");                                           \
2420    }                                                                     \
2421 } while (YYID (0))
2278  
2279 + /*----------------------------------------.
2280 + | Print this symbol's value on YYOUTPUT.  |
2281 + `----------------------------------------*/
2282  
2424 /*--------------------------------.
2425 | Print this symbol on YYOUTPUT.  |
2426 `--------------------------------*/
2427
2428 /*ARGSUSED*/
2429 #if (defined __STDC__ || defined __C99__FUNC__ \
2430     || defined __cplusplus || defined _MSC_VER)
2283   static void
2284   yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2433 #else
2434 static void
2435 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2436    FILE *yyoutput;
2437    int yytype;
2438    YYSTYPE const * const yyvaluep;
2439 #endif
2285   {
2286    FILE *yyo = yyoutput;
2287    YYUSE (yyo);
# Line 2445 | Line 2290 | yy_symbol_value_print (yyoutput, yytype,
2290   # ifdef YYPRINT
2291    if (yytype < YYNTOKENS)
2292      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2448 # else
2449  YYUSE (yyoutput);
2293   # endif
2294 <  switch (yytype)
2452 <    {
2453 <      default:
2454 <        break;
2455 <    }
2294 >  YYUSE (yytype);
2295   }
2296  
2297  
# Line 2460 | Line 2299 | yy_symbol_value_print (yyoutput, yytype,
2299   | Print this symbol on YYOUTPUT.  |
2300   `--------------------------------*/
2301  
2463 #if (defined __STDC__ || defined __C99__FUNC__ \
2464     || defined __cplusplus || defined _MSC_VER)
2302   static void
2303   yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2467 #else
2468 static void
2469 yy_symbol_print (yyoutput, yytype, yyvaluep)
2470    FILE *yyoutput;
2471    int yytype;
2472    YYSTYPE const * const yyvaluep;
2473 #endif
2304   {
2305 <  if (yytype < YYNTOKENS)
2306 <    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2477 <  else
2478 <    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2305 >  YYFPRINTF (yyoutput, "%s %s (",
2306 >             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2307  
2308    yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2309    YYFPRINTF (yyoutput, ")");
# Line 2486 | Line 2314 | yy_symbol_print (yyoutput, yytype, yyval
2314   | TOP (included).                                                   |
2315   `------------------------------------------------------------------*/
2316  
2489 #if (defined __STDC__ || defined __C99__FUNC__ \
2490     || defined __cplusplus || defined _MSC_VER)
2317   static void
2318   yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2493 #else
2494 static void
2495 yy_stack_print (yybottom, yytop)
2496    yytype_int16 *yybottom;
2497    yytype_int16 *yytop;
2498 #endif
2319   {
2320    YYFPRINTF (stderr, "Stack now");
2321    for (; yybottom <= yytop; yybottom++)
# Line 2506 | Line 2326 | yy_stack_print (yybottom, yytop)
2326    YYFPRINTF (stderr, "\n");
2327   }
2328  
2329 < # define YY_STACK_PRINT(Bottom, Top)                            \
2330 < do {                                                            \
2331 <  if (yydebug)                                                  \
2332 <    yy_stack_print ((Bottom), (Top));                           \
2333 < } while (YYID (0))
2329 > # define YY_STACK_PRINT(Bottom, Top)                            \
2330 > do {                                                            \
2331 >  if (yydebug)                                                  \
2332 >    yy_stack_print ((Bottom), (Top));                           \
2333 > } while (0)
2334  
2335  
2336   /*------------------------------------------------.
2337   | Report that the YYRULE is going to be reduced.  |
2338   `------------------------------------------------*/
2339  
2520 #if (defined __STDC__ || defined __C99__FUNC__ \
2521     || defined __cplusplus || defined _MSC_VER)
2340   static void
2341 < yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2524 < #else
2525 < static void
2526 < yy_reduce_print (yyvsp, yyrule)
2527 <    YYSTYPE *yyvsp;
2528 <    int yyrule;
2529 < #endif
2341 > yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2342   {
2343 +  unsigned long int yylno = yyrline[yyrule];
2344    int yynrhs = yyr2[yyrule];
2345    int yyi;
2533  unsigned long int yylno = yyrline[yyrule];
2346    YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2347 <             yyrule - 1, yylno);
2347 >             yyrule - 1, yylno);
2348    /* The symbols being reduced.  */
2349    for (yyi = 0; yyi < yynrhs; yyi++)
2350      {
2351        YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2352 <      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2353 <                       &(yyvsp[(yyi + 1) - (yynrhs)])
2354 <                                       );
2352 >      yy_symbol_print (stderr,
2353 >                       yystos[yyssp[yyi + 1 - yynrhs]],
2354 >                       &(yyvsp[(yyi + 1) - (yynrhs)])
2355 >                                              );
2356        YYFPRINTF (stderr, "\n");
2357      }
2358   }
2359  
2360 < # define YY_REDUCE_PRINT(Rule)          \
2361 < do {                                    \
2362 <  if (yydebug)                          \
2363 <    yy_reduce_print (yyvsp, Rule); \
2364 < } while (YYID (0))
2360 > # define YY_REDUCE_PRINT(Rule)          \
2361 > do {                                    \
2362 >  if (yydebug)                          \
2363 >    yy_reduce_print (yyssp, yyvsp, Rule); \
2364 > } while (0)
2365  
2366   /* Nonzero means print parse trace.  It is left uninitialized so that
2367     multiple parsers can coexist.  */
# Line 2562 | Line 2375 | int yydebug;
2375  
2376  
2377   /* YYINITDEPTH -- initial size of the parser's stacks.  */
2378 < #ifndef YYINITDEPTH
2378 > #ifndef YYINITDEPTH
2379   # define YYINITDEPTH 200
2380   #endif
2381  
# Line 2585 | Line 2398 | int yydebug;
2398   #   define yystrlen strlen
2399   #  else
2400   /* Return the length of YYSTR.  */
2588 #if (defined __STDC__ || defined __C99__FUNC__ \
2589     || defined __cplusplus || defined _MSC_VER)
2401   static YYSIZE_T
2402   yystrlen (const char *yystr)
2592 #else
2593 static YYSIZE_T
2594 yystrlen (yystr)
2595    const char *yystr;
2596 #endif
2403   {
2404    YYSIZE_T yylen;
2405    for (yylen = 0; yystr[yylen]; yylen++)
# Line 2609 | Line 2415 | yystrlen (yystr)
2415   #  else
2416   /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2417     YYDEST.  */
2612 #if (defined __STDC__ || defined __C99__FUNC__ \
2613     || defined __cplusplus || defined _MSC_VER)
2418   static char *
2419   yystpcpy (char *yydest, const char *yysrc)
2616 #else
2617 static char *
2618 yystpcpy (yydest, yysrc)
2619    char *yydest;
2620    const char *yysrc;
2621 #endif
2420   {
2421    char *yyd = yydest;
2422    const char *yys = yysrc;
# Line 2648 | Line 2446 | yytnamerr (char *yyres, const char *yyst
2446        char const *yyp = yystr;
2447  
2448        for (;;)
2449 <        switch (*++yyp)
2450 <          {
2451 <          case '\'':
2452 <          case ',':
2453 <            goto do_not_strip_quotes;
2454 <
2455 <          case '\\':
2456 <            if (*++yyp != '\\')
2457 <              goto do_not_strip_quotes;
2458 <            /* Fall through.  */
2459 <          default:
2460 <            if (yyres)
2461 <              yyres[yyn] = *yyp;
2462 <            yyn++;
2463 <            break;
2464 <
2465 <          case '"':
2466 <            if (yyres)
2467 <              yyres[yyn] = '\0';
2468 <            return yyn;
2469 <          }
2449 >        switch (*++yyp)
2450 >          {
2451 >          case '\'':
2452 >          case ',':
2453 >            goto do_not_strip_quotes;
2454 >
2455 >          case '\\':
2456 >            if (*++yyp != '\\')
2457 >              goto do_not_strip_quotes;
2458 >            /* Fall through.  */
2459 >          default:
2460 >            if (yyres)
2461 >              yyres[yyn] = *yyp;
2462 >            yyn++;
2463 >            break;
2464 >
2465 >          case '"':
2466 >            if (yyres)
2467 >              yyres[yyn] = '\0';
2468 >            return yyn;
2469 >          }
2470      do_not_strip_quotes: ;
2471      }
2472  
# Line 2691 | Line 2489 | static int
2489   yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2490                  yytype_int16 *yyssp, int yytoken)
2491   {
2492 <  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
2492 >  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2493    YYSIZE_T yysize = yysize0;
2696  YYSIZE_T yysize1;
2494    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2495    /* Internationalized format string. */
2496 <  const char *yyformat = YY_NULL;
2496 >  const char *yyformat = YY_NULLPTR;
2497    /* Arguments of yyformat. */
2498    char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2499    /* Number of reported tokens (one for the "unexpected", one per
# Line 2704 | Line 2501 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2501    int yycount = 0;
2502  
2503    /* There are many possibilities here to consider:
2707     - Assume YYFAIL is not used.  It's too flawed to consider.  See
2708       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
2709       for details.  YYERROR is fine as it does not invoke this
2710       function.
2504       - If this state is a consistent state with a default action, then
2505         the only way this function was invoked is if the default action
2506         is an error action.  In that case, don't check for expected
# Line 2756 | Line 2549 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2549                      break;
2550                    }
2551                  yyarg[yycount++] = yytname[yyx];
2552 <                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2553 <                if (! (yysize <= yysize1
2554 <                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2555 <                  return 2;
2556 <                yysize = yysize1;
2552 >                {
2553 >                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2554 >                  if (! (yysize <= yysize1
2555 >                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2556 >                    return 2;
2557 >                  yysize = yysize1;
2558 >                }
2559                }
2560          }
2561      }
# Line 2780 | Line 2575 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2575   # undef YYCASE_
2576      }
2577  
2578 <  yysize1 = yysize + yystrlen (yyformat);
2579 <  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2580 <    return 2;
2581 <  yysize = yysize1;
2578 >  {
2579 >    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2580 >    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2581 >      return 2;
2582 >    yysize = yysize1;
2583 >  }
2584  
2585    if (*yymsg_alloc < yysize)
2586      {
# Line 2820 | Line 2617 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2617   | Release the memory associated to this symbol.  |
2618   `-----------------------------------------------*/
2619  
2823 /*ARGSUSED*/
2824 #if (defined __STDC__ || defined __C99__FUNC__ \
2825     || defined __cplusplus || defined _MSC_VER)
2620   static void
2621   yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2828 #else
2829 static void
2830 yydestruct (yymsg, yytype, yyvaluep)
2831    const char *yymsg;
2832    int yytype;
2833    YYSTYPE *yyvaluep;
2834 #endif
2622   {
2623    YYUSE (yyvaluep);
2837
2624    if (!yymsg)
2625      yymsg = "Deleting";
2626    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2627  
2628 <  switch (yytype)
2629 <    {
2630 <
2845 <      default:
2846 <        break;
2847 <    }
2628 >  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2629 >  YYUSE (yytype);
2630 >  YY_IGNORE_MAYBE_UNINITIALIZED_END
2631   }
2632  
2633  
# Line 2853 | Line 2636 | yydestruct (yymsg, yytype, yyvaluep)
2636   /* The lookahead symbol.  */
2637   int yychar;
2638  
2856
2857 #ifndef YYLVAL_INITIALIZE
2858 # define YYLVAL_INITIALIZE()
2859 #endif
2860 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2861 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2862 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
2863 #endif
2864
2639   /* The semantic value of the lookahead symbol.  */
2640   YYSTYPE yylval;
2867
2641   /* Number of syntax errors so far.  */
2642   int yynerrs;
2643  
# Line 2873 | Line 2646 | int yynerrs;
2646   | yyparse.  |
2647   `----------*/
2648  
2876 #ifdef YYPARSE_PARAM
2877 #if (defined __STDC__ || defined __C99__FUNC__ \
2878     || defined __cplusplus || defined _MSC_VER)
2879 int
2880 yyparse (void *YYPARSE_PARAM)
2881 #else
2882 int
2883 yyparse (YYPARSE_PARAM)
2884    void *YYPARSE_PARAM;
2885 #endif
2886 #else /* ! YYPARSE_PARAM */
2887 #if (defined __STDC__ || defined __C99__FUNC__ \
2888     || defined __cplusplus || defined _MSC_VER)
2649   int
2650   yyparse (void)
2891 #else
2892 int
2893 yyparse ()
2894
2895 #endif
2896 #endif
2651   {
2652      int yystate;
2653      /* Number of tokens to shift before error messages enabled.  */
2654      int yyerrstatus;
2655  
2656      /* The stacks and their tools:
2657 <       `yyss': related to states.
2658 <       `yyvs': related to semantic values.
2657 >       'yyss': related to states.
2658 >       'yyvs': related to semantic values.
2659  
2660         Refer to the stacks through separate pointers, to allow yyoverflow
2661         to reallocate them elsewhere.  */
# Line 2939 | Line 2693 | yyparse ()
2693       Keep to zero when no symbol should be popped.  */
2694    int yylen = 0;
2695  
2696 <  yyss = yyssa;
2697 <  yyvs = yyvsa;
2696 >  yyssp = yyss = yyssa;
2697 >  yyvsp = yyvs = yyvsa;
2698    yystacksize = YYINITDEPTH;
2699  
2700    YYDPRINTF ((stderr, "Starting parse\n"));
# Line 2949 | Line 2703 | yyparse ()
2703    yyerrstatus = 0;
2704    yynerrs = 0;
2705    yychar = YYEMPTY; /* Cause a token to be read.  */
2952
2953  /* Initialize stack pointers.
2954     Waste one element of value and location stack
2955     so that they stay on the same level as the state stack.
2956     The wasted elements are never initialized.  */
2957  yyssp = yyss;
2958  yyvsp = yyvs;
2959
2960  YYLVAL_INITIALIZE ();
2706    goto yysetstate;
2707  
2708   /*------------------------------------------------------------.
# Line 2978 | Line 2723 | yyparse ()
2723  
2724   #ifdef yyoverflow
2725        {
2726 <        /* Give user a chance to reallocate the stack.  Use copies of
2727 <           these so that the &'s don't force the real ones into
2728 <           memory.  */
2729 <        YYSTYPE *yyvs1 = yyvs;
2730 <        yytype_int16 *yyss1 = yyss;
2731 <
2732 <        /* Each stack pointer address is followed by the size of the
2733 <           data in use in that stack, in bytes.  This used to be a
2734 <           conditional around just the two extra args, but that might
2735 <           be undefined if yyoverflow is a macro.  */
2736 <        yyoverflow (YY_("memory exhausted"),
2737 <                    &yyss1, yysize * sizeof (*yyssp),
2738 <                    &yyvs1, yysize * sizeof (*yyvsp),
2739 <                    &yystacksize);
2726 >        /* Give user a chance to reallocate the stack.  Use copies of
2727 >           these so that the &'s don't force the real ones into
2728 >           memory.  */
2729 >        YYSTYPE *yyvs1 = yyvs;
2730 >        yytype_int16 *yyss1 = yyss;
2731 >
2732 >        /* Each stack pointer address is followed by the size of the
2733 >           data in use in that stack, in bytes.  This used to be a
2734 >           conditional around just the two extra args, but that might
2735 >           be undefined if yyoverflow is a macro.  */
2736 >        yyoverflow (YY_("memory exhausted"),
2737 >                    &yyss1, yysize * sizeof (*yyssp),
2738 >                    &yyvs1, yysize * sizeof (*yyvsp),
2739 >                    &yystacksize);
2740  
2741 <        yyss = yyss1;
2742 <        yyvs = yyvs1;
2741 >        yyss = yyss1;
2742 >        yyvs = yyvs1;
2743        }
2744   #else /* no yyoverflow */
2745   # ifndef YYSTACK_RELOCATE
# Line 3002 | Line 2747 | yyparse ()
2747   # else
2748        /* Extend the stack our own way.  */
2749        if (YYMAXDEPTH <= yystacksize)
2750 <        goto yyexhaustedlab;
2750 >        goto yyexhaustedlab;
2751        yystacksize *= 2;
2752        if (YYMAXDEPTH < yystacksize)
2753 <        yystacksize = YYMAXDEPTH;
2753 >        yystacksize = YYMAXDEPTH;
2754  
2755        {
2756 <        yytype_int16 *yyss1 = yyss;
2757 <        union yyalloc *yyptr =
2758 <          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2759 <        if (! yyptr)
2760 <          goto yyexhaustedlab;
2761 <        YYSTACK_RELOCATE (yyss_alloc, yyss);
2762 <        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2756 >        yytype_int16 *yyss1 = yyss;
2757 >        union yyalloc *yyptr =
2758 >          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2759 >        if (! yyptr)
2760 >          goto yyexhaustedlab;
2761 >        YYSTACK_RELOCATE (yyss_alloc, yyss);
2762 >        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2763   #  undef YYSTACK_RELOCATE
2764 <        if (yyss1 != yyssa)
2765 <          YYSTACK_FREE (yyss1);
2764 >        if (yyss1 != yyssa)
2765 >          YYSTACK_FREE (yyss1);
2766        }
2767   # endif
2768   #endif /* no yyoverflow */
# Line 3026 | Line 2771 | yyparse ()
2771        yyvsp = yyvs + yysize - 1;
2772  
2773        YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2774 <                  (unsigned long int) yystacksize));
2774 >                  (unsigned long int) yystacksize));
2775  
2776        if (yyss + yystacksize - 1 <= yyssp)
2777 <        YYABORT;
2777 >        YYABORT;
2778      }
2779  
2780    YYDPRINTF ((stderr, "Entering state %d\n", yystate));
# Line 3058 | Line 2803 | yybackup:
2803    if (yychar == YYEMPTY)
2804      {
2805        YYDPRINTF ((stderr, "Reading a token: "));
2806 <      yychar = YYLEX;
2806 >      yychar = yylex ();
2807      }
2808  
2809    if (yychar <= YYEOF)
# Line 3123 | Line 2868 | yyreduce:
2868    yylen = yyr2[yyn];
2869  
2870    /* If YYLEN is nonzero, implement the default value of the action:
2871 <     `$$ = $1'.
2871 >     '$$ = $1'.
2872  
2873       Otherwise, the following line sets YYVAL to garbage.
2874       This behavior is undocumented and Bison
# Line 3136 | Line 2881 | yyreduce:
2881    YY_REDUCE_PRINT (yyn);
2882    switch (yyn)
2883      {
2884 <        case 26:
2885 < /* Line 1813 of yacc.c  */
3141 < #line 358 "conf_parser.y"
2884 >        case 27:
2885 > #line 413 "conf_parser.y" /* yacc.c:1646  */
2886      { (yyval.number) = 0; }
2887 <    break;
3144 <
3145 <  case 28:
3146 < /* Line 1813 of yacc.c  */
3147 < #line 360 "conf_parser.y"
3148 <    {
3149 <                        (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3150 <                }
2887 > #line 2888 "conf_parser.c" /* yacc.c:1646  */
2888      break;
2889  
2890    case 29:
2891 < /* Line 1813 of yacc.c  */
2892 < #line 364 "conf_parser.y"
2893 <    {
3157 <                        (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3158 <                }
2891 > #line 414 "conf_parser.y" /* yacc.c:1646  */
2892 >    { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2893 > #line 2894 "conf_parser.c" /* yacc.c:1646  */
2894      break;
2895  
2896    case 30:
2897 < /* Line 1813 of yacc.c  */
2898 < #line 368 "conf_parser.y"
2899 <    {
3165 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3166 <                }
2897 > #line 415 "conf_parser.y" /* yacc.c:1646  */
2898 >    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2899 > #line 2900 "conf_parser.c" /* yacc.c:1646  */
2900      break;
2901  
2902    case 31:
2903 < /* Line 1813 of yacc.c  */
2904 < #line 372 "conf_parser.y"
2905 <    {
3173 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3174 <                }
2903 > #line 416 "conf_parser.y" /* yacc.c:1646  */
2904 >    { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2905 > #line 2906 "conf_parser.c" /* yacc.c:1646  */
2906      break;
2907  
2908    case 32:
2909 < /* Line 1813 of yacc.c  */
2910 < #line 376 "conf_parser.y"
2911 <    {
3181 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3182 <                }
2909 > #line 417 "conf_parser.y" /* yacc.c:1646  */
2910 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2911 > #line 2912 "conf_parser.c" /* yacc.c:1646  */
2912      break;
2913  
2914    case 33:
2915 < /* Line 1813 of yacc.c  */
2916 < #line 380 "conf_parser.y"
2917 <    {
3189 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3190 <                }
2915 > #line 418 "conf_parser.y" /* yacc.c:1646  */
2916 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2917 > #line 2918 "conf_parser.c" /* yacc.c:1646  */
2918      break;
2919  
2920    case 34:
2921 < /* Line 1813 of yacc.c  */
2922 < #line 385 "conf_parser.y"
2923 <    { (yyval.number) = 0; }
2921 > #line 419 "conf_parser.y" /* yacc.c:1646  */
2922 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2923 > #line 2924 "conf_parser.c" /* yacc.c:1646  */
2924 >    break;
2925 >
2926 >  case 35:
2927 > #line 420 "conf_parser.y" /* yacc.c:1646  */
2928 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2929 > #line 2930 "conf_parser.c" /* yacc.c:1646  */
2930      break;
2931  
2932    case 36:
2933 < /* Line 1813 of yacc.c  */
2934 < #line 386 "conf_parser.y"
2935 <    { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
2933 > #line 421 "conf_parser.y" /* yacc.c:1646  */
2934 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2935 > #line 2936 "conf_parser.c" /* yacc.c:1646  */
2936      break;
2937  
2938    case 37:
2939 < /* Line 1813 of yacc.c  */
2940 < #line 387 "conf_parser.y"
2941 <    { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
2939 > #line 424 "conf_parser.y" /* yacc.c:1646  */
2940 >    { (yyval.number) = 0; }
2941 > #line 2942 "conf_parser.c" /* yacc.c:1646  */
2942      break;
2943  
2944 <  case 38:
2945 < /* Line 1813 of yacc.c  */
2946 < #line 388 "conf_parser.y"
2947 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
2944 >  case 39:
2945 > #line 425 "conf_parser.y" /* yacc.c:1646  */
2946 >    { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2947 > #line 2948 "conf_parser.c" /* yacc.c:1646  */
2948      break;
2949  
2950 <  case 39:
2951 < /* Line 1813 of yacc.c  */
2952 < #line 389 "conf_parser.y"
2953 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
2950 >  case 40:
2951 > #line 426 "conf_parser.y" /* yacc.c:1646  */
2952 >    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2953 > #line 2954 "conf_parser.c" /* yacc.c:1646  */
2954      break;
2955  
2956 <  case 46:
2957 < /* Line 1813 of yacc.c  */
2958 < #line 403 "conf_parser.y"
2956 >  case 41:
2957 > #line 427 "conf_parser.y" /* yacc.c:1646  */
2958 >    { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2959 > #line 2960 "conf_parser.c" /* yacc.c:1646  */
2960 >    break;
2961 >
2962 >  case 42:
2963 > #line 428 "conf_parser.y" /* yacc.c:1646  */
2964 >    { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2965 > #line 2966 "conf_parser.c" /* yacc.c:1646  */
2966 >    break;
2967 >
2968 >  case 49:
2969 > #line 442 "conf_parser.y" /* yacc.c:1646  */
2970      {
2971    if (conf_parser_ctx.pass == 2)
2972      add_conf_module(libio_basename(yylval.string));
2973   }
2974 + #line 2975 "conf_parser.c" /* yacc.c:1646  */
2975      break;
2976  
2977 <  case 47:
2978 < /* Line 1813 of yacc.c  */
3234 < #line 409 "conf_parser.y"
2977 >  case 50:
2978 > #line 448 "conf_parser.y" /* yacc.c:1646  */
2979      {
2980    if (conf_parser_ctx.pass == 2)
2981      mod_add_path(yylval.string);
2982   }
2983 + #line 2984 "conf_parser.c" /* yacc.c:1646  */
2984      break;
2985  
2986 <  case 71:
2987 < /* Line 1813 of yacc.c  */
3243 < #line 434 "conf_parser.y"
2986 >  case 78:
2987 > #line 484 "conf_parser.y" /* yacc.c:1646  */
2988      {
2989   #ifdef HAVE_LIBCRYPTO
2990    if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
2991      SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
2992   #endif
2993   }
2994 + #line 2995 "conf_parser.c" /* yacc.c:1646  */
2995      break;
2996  
2997 <  case 72:
2998 < /* Line 1813 of yacc.c  */
3254 < #line 440 "conf_parser.y"
2997 >  case 79:
2998 > #line 490 "conf_parser.y" /* yacc.c:1646  */
2999      {
3000   #ifdef HAVE_LIBCRYPTO
3001    if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3002      SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
3003   #endif
3004   }
3005 + #line 3006 "conf_parser.c" /* yacc.c:1646  */
3006      break;
3007  
3008 <  case 75:
3009 < /* Line 1813 of yacc.c  */
3265 < #line 449 "conf_parser.y"
3008 >  case 82:
3009 > #line 499 "conf_parser.y" /* yacc.c:1646  */
3010      {
3011   #ifdef HAVE_LIBCRYPTO
3012    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3013      SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3014   #endif
3015   }
3016 + #line 3017 "conf_parser.c" /* yacc.c:1646  */
3017      break;
3018  
3019 <  case 76:
3020 < /* Line 1813 of yacc.c  */
3276 < #line 455 "conf_parser.y"
3019 >  case 83:
3020 > #line 505 "conf_parser.y" /* yacc.c:1646  */
3021      {
3022   #ifdef HAVE_LIBCRYPTO
3023    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3024      SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3025   #endif
3026   }
3027 + #line 3028 "conf_parser.c" /* yacc.c:1646  */
3028      break;
3029  
3030 <  case 77:
3031 < /* Line 1813 of yacc.c  */
3287 < #line 463 "conf_parser.y"
3030 >  case 84:
3031 > #line 513 "conf_parser.y" /* yacc.c:1646  */
3032      {
3033   #ifdef HAVE_LIBCRYPTO
3034 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3034 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3035    {
3036      if (!ServerInfo.rsa_private_key_file)
3037      {
3038 <      yyerror("No rsa_private_key_file specified, SSL disabled");
3038 >      conf_error_report("No rsa_private_key_file specified, SSL disabled");
3039        break;
3040      }
3041  
# Line 3300 | Line 3044 | yyreduce:
3044          SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
3045                                       SSL_FILETYPE_PEM) <= 0)
3046      {
3047 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3047 >      report_crypto_errors();
3048 >      conf_error_report("Could not open/read certificate file");
3049        break;
3050      }
3051  
# Line 3309 | Line 3054 | yyreduce:
3054          SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3055                                      SSL_FILETYPE_PEM) <= 0)
3056      {
3057 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3057 >      report_crypto_errors();
3058 >      conf_error_report("Could not read RSA private key");
3059        break;
3060      }
3061  
3062      if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3063          !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3064      {
3065 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3065 >      report_crypto_errors();
3066 >      conf_error_report("Could not read RSA private key");
3067        break;
3068      }
3069    }
3070   #endif
3071   }
3072 + #line 3073 "conf_parser.c" /* yacc.c:1646  */
3073      break;
3074  
3075 <  case 78:
3076 < /* Line 1813 of yacc.c  */
3329 < #line 502 "conf_parser.y"
3075 >  case 85:
3076 > #line 555 "conf_parser.y" /* yacc.c:1646  */
3077      {
3078   #ifdef HAVE_LIBCRYPTO
3079 <  if (conf_parser_ctx.pass == 1)
3333 <  {
3334 <    BIO *file;
3079 >  BIO *file = NULL;
3080  
3081 <    if (ServerInfo.rsa_private_key)
3082 <    {
3338 <      RSA_free(ServerInfo.rsa_private_key);
3339 <      ServerInfo.rsa_private_key = NULL;
3340 <    }
3081 >  if (conf_parser_ctx.pass != 1)
3082 >    break;
3083  
3084 <    if (ServerInfo.rsa_private_key_file)
3085 <    {
3086 <      MyFree(ServerInfo.rsa_private_key_file);
3087 <      ServerInfo.rsa_private_key_file = NULL;
3088 <    }
3084 >  if (ServerInfo.rsa_private_key)
3085 >  {
3086 >    RSA_free(ServerInfo.rsa_private_key);
3087 >    ServerInfo.rsa_private_key = NULL;
3088 >  }
3089  
3090 <    DupString(ServerInfo.rsa_private_key_file, yylval.string);
3090 >  if (ServerInfo.rsa_private_key_file)
3091 >  {
3092 >    MyFree(ServerInfo.rsa_private_key_file);
3093 >    ServerInfo.rsa_private_key_file = NULL;
3094 >  }
3095  
3096 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3351 <    {
3352 <      yyerror("File open failed, ignoring");
3353 <      break;
3354 <    }
3096 >  ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3097  
3098 <    ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3098 >  if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3099 >  {
3100 >    conf_error_report("File open failed, ignoring");
3101 >    break;
3102 >  }
3103  
3104 <    BIO_set_close(file, BIO_CLOSE);
3359 <    BIO_free(file);
3104 >  ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3105  
3106 <    if (ServerInfo.rsa_private_key == NULL)
3107 <    {
3363 <      yyerror("Couldn't extract key, ignoring");
3364 <      break;
3365 <    }
3106 >  BIO_set_close(file, BIO_CLOSE);
3107 >  BIO_free(file);
3108  
3109 <    if (!RSA_check_key(ServerInfo.rsa_private_key))
3110 <    {
3111 <      RSA_free(ServerInfo.rsa_private_key);
3112 <      ServerInfo.rsa_private_key = NULL;
3109 >  if (ServerInfo.rsa_private_key == NULL)
3110 >  {
3111 >    conf_error_report("Couldn't extract key, ignoring");
3112 >    break;
3113 >  }
3114  
3115 <      yyerror("Invalid key, ignoring");
3116 <      break;
3117 <    }
3115 >  if (!RSA_check_key(ServerInfo.rsa_private_key))
3116 >  {
3117 >    RSA_free(ServerInfo.rsa_private_key);
3118 >    ServerInfo.rsa_private_key = NULL;
3119  
3120 <    /* require 2048 bit (256 byte) key */
3121 <    if (RSA_size(ServerInfo.rsa_private_key) != 256)
3122 <    {
3379 <      RSA_free(ServerInfo.rsa_private_key);
3380 <      ServerInfo.rsa_private_key = NULL;
3120 >    conf_error_report("Invalid key, ignoring");
3121 >    break;
3122 >  }
3123  
3124 <      yyerror("Not a 2048 bit key, ignoring");
3125 <    }
3124 >  if (RSA_size(ServerInfo.rsa_private_key) < 128)
3125 >  {
3126 >    RSA_free(ServerInfo.rsa_private_key);
3127 >    ServerInfo.rsa_private_key = NULL;
3128 >
3129 >    conf_error_report("Ignoring serverinfo::rsa_private_key_file -- need at least a 1024 bit key size");
3130    }
3131   #endif
3132   }
3133 + #line 3134 "conf_parser.c" /* yacc.c:1646  */
3134      break;
3135  
3136 <  case 79:
3137 < /* Line 1813 of yacc.c  */
3391 < #line 561 "conf_parser.y"
3136 >  case 86:
3137 > #line 613 "conf_parser.y" /* yacc.c:1646  */
3138      {
3139   /* TBD - XXX: error reporting */
3140   #ifdef HAVE_LIBCRYPTO
# Line 3405 | Line 3151 | yyreduce:
3151        if (dh)
3152        {
3153          if (DH_size(dh) < 128)
3154 <          ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3154 >          conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3155          else
3156            SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3157  
# Line 3415 | Line 3161 | yyreduce:
3161    }
3162   #endif
3163   }
3164 + #line 3165 "conf_parser.c" /* yacc.c:1646  */
3165      break;
3166  
3167 <  case 80:
3168 < /* Line 1813 of yacc.c  */
3422 < #line 589 "conf_parser.y"
3167 >  case 87:
3168 > #line 641 "conf_parser.y" /* yacc.c:1646  */
3169      {
3170   #ifdef HAVE_LIBCRYPTO
3171    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3172      SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3173   #endif
3174   }
3175 + #line 3176 "conf_parser.c" /* yacc.c:1646  */
3176      break;
3177  
3178 <  case 81:
3179 < /* Line 1813 of yacc.c  */
3180 < #line 597 "conf_parser.y"
3178 >  case 88:
3179 > #line 649 "conf_parser.y" /* yacc.c:1646  */
3180 >    {
3181 > #ifdef HAVE_LIBCRYPTO
3182 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3183 >  {
3184 >    if ((ServerInfo.message_digest_algorithm = EVP_get_digestbyname(yylval.string)) == NULL)
3185 >      conf_error_report("Ignoring serverinfo::ssl_message_digest_algorithm -- unknown message digest algorithm");
3186 >    else
3187 >      ServerInfo.message_digest_algorithm = EVP_sha256();
3188 >  }
3189 > #endif
3190 > }
3191 > #line 3192 "conf_parser.c" /* yacc.c:1646  */
3192 >    break;
3193 >
3194 >  case 89:
3195 > #line 662 "conf_parser.y" /* yacc.c:1646  */
3196 >    {
3197 > #ifdef HAVE_LIBCRYPTO
3198 > #if OPENSSL_VERSION_NUMBER >= 0x1000005FL && !defined(OPENSSL_NO_ECDH)
3199 >  int nid = 0;
3200 >  EC_KEY *key = NULL;
3201 >
3202 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3203 >  {
3204 >    if ((nid = OBJ_sn2nid(yylval.string)) == 0)
3205 >    {
3206 >        conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- unknown curve name");
3207 >        break;
3208 >    }
3209 >
3210 >    if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
3211 >    {
3212 >      conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- could not create curve");
3213 >      break;
3214 >    }
3215 >
3216 >    SSL_CTX_set_tmp_ecdh(ServerInfo.server_ctx, key);
3217 >    EC_KEY_free(key);
3218 > }
3219 > #endif
3220 > #endif
3221 > }
3222 > #line 3223 "conf_parser.c" /* yacc.c:1646  */
3223 >    break;
3224 >
3225 >  case 90:
3226 > #line 690 "conf_parser.y" /* yacc.c:1646  */
3227      {
3228    /* this isn't rehashable */
3229    if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3230    {
3231      if (valid_servname(yylval.string))
3232 <      DupString(ServerInfo.name, yylval.string);
3232 >      ServerInfo.name = xstrdup(yylval.string);
3233      else
3234      {
3235 <      ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3235 >      conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3236        exit(0);
3237      }
3238    }
3239   }
3240 + #line 3241 "conf_parser.c" /* yacc.c:1646  */
3241      break;
3242  
3243 <  case 82:
3244 < /* Line 1813 of yacc.c  */
3451 < #line 612 "conf_parser.y"
3243 >  case 91:
3244 > #line 705 "conf_parser.y" /* yacc.c:1646  */
3245      {
3246    /* this isn't rehashable */
3247    if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3248    {
3249      if (valid_sid(yylval.string))
3250 <      DupString(ServerInfo.sid, yylval.string);
3250 >      ServerInfo.sid = xstrdup(yylval.string);
3251      else
3252      {
3253 <      ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3253 >      conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3254        exit(0);
3255      }
3256    }
3257   }
3258 + #line 3259 "conf_parser.c" /* yacc.c:1646  */
3259      break;
3260  
3261 <  case 83:
3262 < /* Line 1813 of yacc.c  */
3469 < #line 627 "conf_parser.y"
3261 >  case 92:
3262 > #line 720 "conf_parser.y" /* yacc.c:1646  */
3263      {
3264    if (conf_parser_ctx.pass == 2)
3265    {
3266      MyFree(ServerInfo.description);
3267 <    DupString(ServerInfo.description,yylval.string);
3267 >    ServerInfo.description = xstrdup(yylval.string);
3268    }
3269   }
3270 + #line 3271 "conf_parser.c" /* yacc.c:1646  */
3271      break;
3272  
3273 <  case 84:
3274 < /* Line 1813 of yacc.c  */
3481 < #line 636 "conf_parser.y"
3273 >  case 93:
3274 > #line 729 "conf_parser.y" /* yacc.c:1646  */
3275      {
3276    if (conf_parser_ctx.pass == 2)
3277    {
3278      char *p;
3279  
3280 <    if ((p = strchr(yylval.string, ' ')) != NULL)
3281 <      p = '\0';
3280 >    if ((p = strchr(yylval.string, ' ')))
3281 >      *p = '\0';
3282  
3283      MyFree(ServerInfo.network_name);
3284 <    DupString(ServerInfo.network_name, yylval.string);
3284 >    ServerInfo.network_name = xstrdup(yylval.string);
3285    }
3286   }
3287 + #line 3288 "conf_parser.c" /* yacc.c:1646  */
3288      break;
3289  
3290 <  case 85:
3291 < /* Line 1813 of yacc.c  */
3498 < #line 650 "conf_parser.y"
3290 >  case 94:
3291 > #line 743 "conf_parser.y" /* yacc.c:1646  */
3292      {
3293 <  if (conf_parser_ctx.pass == 2)
3294 <  {
3295 <    MyFree(ServerInfo.network_desc);
3296 <    DupString(ServerInfo.network_desc, yylval.string);
3297 <  }
3293 >  if (conf_parser_ctx.pass != 2)
3294 >    break;
3295 >
3296 >  MyFree(ServerInfo.network_desc);
3297 >  ServerInfo.network_desc = xstrdup(yylval.string);
3298   }
3299 + #line 3300 "conf_parser.c" /* yacc.c:1646  */
3300      break;
3301  
3302 <  case 86:
3303 < /* Line 1813 of yacc.c  */
3510 < #line 659 "conf_parser.y"
3302 >  case 95:
3303 > #line 752 "conf_parser.y" /* yacc.c:1646  */
3304      {
3305    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3306    {
# Line 3523 | Line 3316 | yyreduce:
3316        ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3317      else
3318      {
3319 <      assert(res != NULL);
3319 >      assert(res);
3320  
3321        memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3322        ServerInfo.ip.ss.ss_family = res->ai_family;
# Line 3534 | Line 3327 | yyreduce:
3327      }
3328    }
3329   }
3330 + #line 3331 "conf_parser.c" /* yacc.c:1646  */
3331      break;
3332  
3333 <  case 87:
3334 < /* Line 1813 of yacc.c  */
3541 < #line 687 "conf_parser.y"
3333 >  case 96:
3334 > #line 780 "conf_parser.y" /* yacc.c:1646  */
3335      {
3336   #ifdef IPV6
3337    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
# Line 3555 | Line 3348 | yyreduce:
3348        ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3349      else
3350      {
3351 <      assert(res != NULL);
3351 >      assert(res);
3352  
3353        memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3354        ServerInfo.ip6.ss.ss_family = res->ai_family;
# Line 3567 | Line 3360 | yyreduce:
3360    }
3361   #endif
3362   }
3363 + #line 3364 "conf_parser.c" /* yacc.c:1646  */
3364      break;
3365  
3366 <  case 88:
3367 < /* Line 1813 of yacc.c  */
3574 < #line 717 "conf_parser.y"
3366 >  case 97:
3367 > #line 810 "conf_parser.y" /* yacc.c:1646  */
3368      {
3369 <  if (conf_parser_ctx.pass == 2)
3369 >  if (conf_parser_ctx.pass != 2)
3370 >    break;
3371 >
3372 >  if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3373 >  {
3374 >    char buf[IRCD_BUFSIZE] = "";
3375 >
3376 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3377 >    conf_error_report(buf);
3378 >    ServerInfo.max_clients = MAXCLIENTS_MIN;
3379 >  }
3380 >  else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3381    {
3382 <    recalc_fdlimit(NULL);
3382 >    char buf[IRCD_BUFSIZE] = "";
3383 >
3384 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3385 >    conf_error_report(buf);
3386 >    ServerInfo.max_clients = MAXCLIENTS_MAX;
3387 >  }
3388 >  else
3389 >    ServerInfo.max_clients = (yyvsp[-1].number);
3390 > }
3391 > #line 3392 "conf_parser.c" /* yacc.c:1646  */
3392 >    break;
3393  
3394 <    if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3394 >  case 98:
3395 > #line 835 "conf_parser.y" /* yacc.c:1646  */
3396      {
3397 <      char buf[IRCD_BUFSIZE];
3398 <      ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3399 <      yyerror(buf);
3400 <    }
3401 <    else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3397 >  if (conf_parser_ctx.pass != 2)
3398 >    break;
3399 >
3400 >  if ((yyvsp[-1].number) < 9)
3401 >  {
3402 >    conf_error_report("max_nick_length too low, setting to 9");
3403 >    ServerInfo.max_nick_length = 9;
3404 >  }
3405 >  else if ((yyvsp[-1].number) > NICKLEN)
3406 >  {
3407 >    char buf[IRCD_BUFSIZE] = "";
3408 >
3409 >    snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3410 >    conf_error_report(buf);
3411 >    ServerInfo.max_nick_length = NICKLEN;
3412 >  }
3413 >  else
3414 >    ServerInfo.max_nick_length = (yyvsp[-1].number);
3415 > }
3416 > #line 3417 "conf_parser.c" /* yacc.c:1646  */
3417 >    break;
3418 >
3419 >  case 99:
3420 > #line 857 "conf_parser.y" /* yacc.c:1646  */
3421      {
3422 <      char buf[IRCD_BUFSIZE];
3423 <      ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3424 <      yyerror(buf);
3425 <    }
3426 <    else
3427 <      ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3422 >  if (conf_parser_ctx.pass != 2)
3423 >    break;
3424 >
3425 >  if ((yyvsp[-1].number) < 80)
3426 >  {
3427 >    conf_error_report("max_topic_length too low, setting to 80");
3428 >    ServerInfo.max_topic_length = 80;
3429    }
3430 +  else if ((yyvsp[-1].number) > TOPICLEN)
3431 +  {
3432 +    char buf[IRCD_BUFSIZE] = "";
3433 +
3434 +    snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3435 +    conf_error_report(buf);
3436 +    ServerInfo.max_topic_length = TOPICLEN;
3437 +  }
3438 +  else
3439 +    ServerInfo.max_topic_length = (yyvsp[-1].number);
3440   }
3441 + #line 3442 "conf_parser.c" /* yacc.c:1646  */
3442      break;
3443  
3444 <  case 89:
3445 < /* Line 1813 of yacc.c  */
3600 < #line 740 "conf_parser.y"
3444 >  case 100:
3445 > #line 879 "conf_parser.y" /* yacc.c:1646  */
3446      {
3447    if (conf_parser_ctx.pass == 2)
3448      ServerInfo.hub = yylval.number;
3449   }
3450 + #line 3451 "conf_parser.c" /* yacc.c:1646  */
3451      break;
3452  
3453 <  case 97:
3454 < /* Line 1813 of yacc.c  */
3455 < #line 755 "conf_parser.y"
3453 >  case 108:
3454 > #line 896 "conf_parser.y" /* yacc.c:1646  */
3455 >    {
3456 >  if (conf_parser_ctx.pass != 2)
3457 >    break;
3458 >
3459 >  MyFree(AdminInfo.name);
3460 >  AdminInfo.name = xstrdup(yylval.string);
3461 > }
3462 > #line 3463 "conf_parser.c" /* yacc.c:1646  */
3463 >    break;
3464 >
3465 >  case 109:
3466 > #line 905 "conf_parser.y" /* yacc.c:1646  */
3467 >    {
3468 >  if (conf_parser_ctx.pass != 2)
3469 >    break;
3470 >
3471 >  MyFree(AdminInfo.email);
3472 >  AdminInfo.email = xstrdup(yylval.string);
3473 > }
3474 > #line 3475 "conf_parser.c" /* yacc.c:1646  */
3475 >    break;
3476 >
3477 >  case 110:
3478 > #line 914 "conf_parser.y" /* yacc.c:1646  */
3479 >    {
3480 >  if (conf_parser_ctx.pass != 2)
3481 >    break;
3482 >
3483 >  MyFree(AdminInfo.description);
3484 >  AdminInfo.description = xstrdup(yylval.string);
3485 > }
3486 > #line 3487 "conf_parser.c" /* yacc.c:1646  */
3487 >    break;
3488 >
3489 >  case 111:
3490 > #line 926 "conf_parser.y" /* yacc.c:1646  */
3491      {
3492    if (conf_parser_ctx.pass == 2)
3493 <  {
3613 <    MyFree(AdminInfo.name);
3614 <    DupString(AdminInfo.name, yylval.string);
3615 <  }
3493 >    reset_block_state();
3494   }
3495 + #line 3496 "conf_parser.c" /* yacc.c:1646  */
3496      break;
3497  
3498 <  case 98:
3499 < /* Line 1813 of yacc.c  */
3500 < #line 764 "conf_parser.y"
3498 >  case 112:
3499 > #line 930 "conf_parser.y" /* yacc.c:1646  */
3500 >    {
3501 >  dlink_node *ptr = NULL;
3502 >
3503 >  if (conf_parser_ctx.pass != 2)
3504 >    break;
3505 >
3506 >  if (!block_state.file.buf[0])
3507 >    break;
3508 >
3509 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3510 >    motd_add(ptr->data, block_state.file.buf);
3511 > }
3512 > #line 3513 "conf_parser.c" /* yacc.c:1646  */
3513 >    break;
3514 >
3515 >  case 118:
3516 > #line 947 "conf_parser.y" /* yacc.c:1646  */
3517      {
3518    if (conf_parser_ctx.pass == 2)
3519 <  {
3625 <    MyFree(AdminInfo.email);
3626 <    DupString(AdminInfo.email, yylval.string);
3627 <  }
3519 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3520   }
3521 + #line 3522 "conf_parser.c" /* yacc.c:1646  */
3522      break;
3523  
3524 <  case 99:
3525 < /* Line 1813 of yacc.c  */
3633 < #line 773 "conf_parser.y"
3524 >  case 119:
3525 > #line 953 "conf_parser.y" /* yacc.c:1646  */
3526      {
3527    if (conf_parser_ctx.pass == 2)
3528 <  {
3637 <    MyFree(AdminInfo.description);
3638 <    DupString(AdminInfo.description, yylval.string);
3639 <  }
3528 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3529   }
3530 + #line 3531 "conf_parser.c" /* yacc.c:1646  */
3531      break;
3532  
3533 <  case 106:
3534 < /* Line 1813 of yacc.c  */
3645 < #line 791 "conf_parser.y"
3533 >  case 126:
3534 > #line 968 "conf_parser.y" /* yacc.c:1646  */
3535      {
3536    if (conf_parser_ctx.pass == 2)
3537      ConfigLoggingEntry.use_logging = yylval.number;
3538   }
3539 + #line 3540 "conf_parser.c" /* yacc.c:1646  */
3540      break;
3541  
3542 <  case 107:
3543 < /* Line 1813 of yacc.c  */
3544 < #line 797 "conf_parser.y"
3545 <    {
3546 <  lfile[0] = '\0';
3657 <  ltype = 0;
3658 <  lsize = 0;
3542 >  case 127:
3543 > #line 974 "conf_parser.y" /* yacc.c:1646  */
3544 >    {
3545 >  if (conf_parser_ctx.pass == 2)
3546 >    reset_block_state();
3547   }
3548 + #line 3549 "conf_parser.c" /* yacc.c:1646  */
3549      break;
3550  
3551 <  case 108:
3552 < /* Line 1813 of yacc.c  */
3664 < #line 802 "conf_parser.y"
3551 >  case 128:
3552 > #line 978 "conf_parser.y" /* yacc.c:1646  */
3553      {
3554 <  if (conf_parser_ctx.pass == 2 && ltype > 0)
3555 <    log_add_file(ltype, lsize, lfile);
3554 >  if (conf_parser_ctx.pass != 2)
3555 >    break;
3556 >
3557 >  if (block_state.type.value && block_state.file.buf[0])
3558 >    log_set_file(block_state.type.value, block_state.size.value,
3559 >                 block_state.file.buf);
3560   }
3561 + #line 3562 "conf_parser.c" /* yacc.c:1646  */
3562      break;
3563  
3564 <  case 115:
3565 < /* Line 1813 of yacc.c  */
3673 < #line 814 "conf_parser.y"
3564 >  case 135:
3565 > #line 994 "conf_parser.y" /* yacc.c:1646  */
3566      {
3567 <  strlcpy(lfile, yylval.string, sizeof(lfile));
3567 >  if (conf_parser_ctx.pass != 2)
3568 >    break;
3569 >
3570 >  strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3571   }
3572 + #line 3573 "conf_parser.c" /* yacc.c:1646  */
3573      break;
3574  
3575 <  case 116:
3576 < /* Line 1813 of yacc.c  */
3681 < #line 819 "conf_parser.y"
3575 >  case 136:
3576 > #line 1002 "conf_parser.y" /* yacc.c:1646  */
3577      {
3578 <  lsize = (yyvsp[(3) - (4)].number);
3578 >  block_state.size.value = (yyvsp[-1].number);
3579   }
3580 + #line 3581 "conf_parser.c" /* yacc.c:1646  */
3581      break;
3582  
3583 <  case 117:
3584 < /* Line 1813 of yacc.c  */
3689 < #line 822 "conf_parser.y"
3583 >  case 137:
3584 > #line 1005 "conf_parser.y" /* yacc.c:1646  */
3585      {
3586 <  lsize = 0;
3586 >  block_state.size.value = 0;
3587   }
3588 + #line 3589 "conf_parser.c" /* yacc.c:1646  */
3589      break;
3590  
3591 <  case 118:
3592 < /* Line 1813 of yacc.c  */
3697 < #line 827 "conf_parser.y"
3591 >  case 138:
3592 > #line 1010 "conf_parser.y" /* yacc.c:1646  */
3593      {
3594    if (conf_parser_ctx.pass == 2)
3595 <    ltype = 0;
3595 >    block_state.type.value = 0;
3596   }
3597 + #line 3598 "conf_parser.c" /* yacc.c:1646  */
3598      break;
3599  
3600 <  case 122:
3601 < /* Line 1813 of yacc.c  */
3706 < #line 834 "conf_parser.y"
3600 >  case 142:
3601 > #line 1017 "conf_parser.y" /* yacc.c:1646  */
3602      {
3603    if (conf_parser_ctx.pass == 2)
3604 <    ltype = LOG_TYPE_USER;
3604 >    block_state.type.value = LOG_TYPE_USER;
3605   }
3606 + #line 3607 "conf_parser.c" /* yacc.c:1646  */
3607      break;
3608  
3609 <  case 123:
3610 < /* Line 1813 of yacc.c  */
3715 < #line 838 "conf_parser.y"
3609 >  case 143:
3610 > #line 1021 "conf_parser.y" /* yacc.c:1646  */
3611      {
3612    if (conf_parser_ctx.pass == 2)
3613 <    ltype = LOG_TYPE_OPER;
3613 >    block_state.type.value = LOG_TYPE_OPER;
3614   }
3615 + #line 3616 "conf_parser.c" /* yacc.c:1646  */
3616      break;
3617  
3618 <  case 124:
3619 < /* Line 1813 of yacc.c  */
3724 < #line 842 "conf_parser.y"
3618 >  case 144:
3619 > #line 1025 "conf_parser.y" /* yacc.c:1646  */
3620      {
3621    if (conf_parser_ctx.pass == 2)
3622 <    ltype = LOG_TYPE_GLINE;
3622 >    block_state.type.value = LOG_TYPE_GLINE;
3623   }
3624 + #line 3625 "conf_parser.c" /* yacc.c:1646  */
3625      break;
3626  
3627 <  case 125:
3628 < /* Line 1813 of yacc.c  */
3733 < #line 846 "conf_parser.y"
3627 >  case 145:
3628 > #line 1029 "conf_parser.y" /* yacc.c:1646  */
3629      {
3630    if (conf_parser_ctx.pass == 2)
3631 <    ltype = LOG_TYPE_DLINE;
3631 >    block_state.type.value = LOG_TYPE_XLINE;
3632   }
3633 + #line 3634 "conf_parser.c" /* yacc.c:1646  */
3634      break;
3635  
3636 <  case 126:
3637 < /* Line 1813 of yacc.c  */
3742 < #line 850 "conf_parser.y"
3636 >  case 146:
3637 > #line 1033 "conf_parser.y" /* yacc.c:1646  */
3638      {
3639    if (conf_parser_ctx.pass == 2)
3640 <    ltype = LOG_TYPE_KLINE;
3640 >    block_state.type.value = LOG_TYPE_RESV;
3641   }
3642 + #line 3643 "conf_parser.c" /* yacc.c:1646  */
3643      break;
3644  
3645 <  case 127:
3646 < /* Line 1813 of yacc.c  */
3751 < #line 854 "conf_parser.y"
3645 >  case 147:
3646 > #line 1037 "conf_parser.y" /* yacc.c:1646  */
3647      {
3648    if (conf_parser_ctx.pass == 2)
3649 <    ltype = LOG_TYPE_KILL;
3649 >    block_state.type.value = LOG_TYPE_DLINE;
3650   }
3651 + #line 3652 "conf_parser.c" /* yacc.c:1646  */
3652      break;
3653  
3654 <  case 128:
3655 < /* Line 1813 of yacc.c  */
3760 < #line 858 "conf_parser.y"
3654 >  case 148:
3655 > #line 1041 "conf_parser.y" /* yacc.c:1646  */
3656      {
3657    if (conf_parser_ctx.pass == 2)
3658 <    ltype = LOG_TYPE_DEBUG;
3658 >    block_state.type.value = LOG_TYPE_KLINE;
3659   }
3660 + #line 3661 "conf_parser.c" /* yacc.c:1646  */
3661      break;
3662  
3663 <  case 129:
3664 < /* Line 1813 of yacc.c  */
3769 < #line 868 "conf_parser.y"
3663 >  case 149:
3664 > #line 1045 "conf_parser.y" /* yacc.c:1646  */
3665      {
3666    if (conf_parser_ctx.pass == 2)
3667 <  {
3773 <    yy_conf = conf_make(CONF_OPER);
3774 <    SetConfEncrypted(yy_conf); /* Yes, the default is encrypted */
3775 <  }
3776 <  else
3777 <  {
3778 <    MyFree(class_name);
3779 <    class_name = NULL;
3780 <  }
3667 >    block_state.type.value = LOG_TYPE_KILL;
3668   }
3669 + #line 3670 "conf_parser.c" /* yacc.c:1646  */
3670      break;
3671  
3672 <  case 130:
3673 < /* Line 1813 of yacc.c  */
3786 < #line 880 "conf_parser.y"
3672 >  case 150:
3673 > #line 1049 "conf_parser.y" /* yacc.c:1646  */
3674      {
3675    if (conf_parser_ctx.pass == 2)
3676 <  {
3677 <    struct CollectItem *yy_tmp;
3678 <    dlink_node *ptr;
3679 <    dlink_node *next_ptr;
3676 >    block_state.type.value = LOG_TYPE_DEBUG;
3677 > }
3678 > #line 3679 "conf_parser.c" /* yacc.c:1646  */
3679 >    break;
3680  
3681 <    conf_add_class_to_conf(yy_conf, class_name);
3681 >  case 151:
3682 > #line 1059 "conf_parser.y" /* yacc.c:1646  */
3683 >    {
3684 >  if (conf_parser_ctx.pass != 2)
3685 >    break;
3686  
3687 <    /* Now, make sure there is a copy of the "base" given oper
3688 <     * block in each of the collected copies
3689 <     */
3687 >  reset_block_state();
3688 >  block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3689 > }
3690 > #line 3691 "conf_parser.c" /* yacc.c:1646  */
3691 >    break;
3692  
3693 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3693 >  case 152:
3694 > #line 1066 "conf_parser.y" /* yacc.c:1646  */
3695      {
3696 <      struct MaskItem *new_conf;
3803 <      yy_tmp = ptr->data;
3804 <
3805 <      new_conf = conf_make(CONF_OPER);
3806 <      new_conf->flags = yy_conf->flags;
3696 >  dlink_node *ptr = NULL;
3697  
3698 <      if (yy_conf->name != NULL)
3699 <        DupString(new_conf->name, yy_conf->name);
3810 <      if (yy_tmp->user != NULL)
3811 <        DupString(new_conf->user, yy_tmp->user);
3812 <      else
3813 <        DupString(new_conf->user, "*");
3814 <      if (yy_tmp->host != NULL)
3815 <        DupString(new_conf->host, yy_tmp->host);
3816 <      else
3817 <        DupString(new_conf->host, "*");
3698 >  if (conf_parser_ctx.pass != 2)
3699 >    break;
3700  
3701 <      new_conf->htype = parse_netmask(new_conf->host, &new_conf->addr,
3702 <                                     &new_conf->bits);
3701 >  if (!block_state.name.buf[0])
3702 >    break;
3703 > #ifdef HAVE_LIBCRYPTO
3704 >  if (!block_state.file.buf[0] &&
3705 >      !block_state.rpass.buf[0])
3706 >    break;
3707 > #else
3708 >  if (!block_state.rpass.buf[0])
3709 >    break;
3710 > #endif
3711  
3712 <      conf_add_class_to_conf(new_conf, class_name);
3713 <      if (yy_conf->passwd != NULL)
3714 <        DupString(new_conf->passwd, yy_conf->passwd);
3712 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3713 >  {
3714 >    struct MaskItem *conf = NULL;
3715 >    struct split_nuh_item nuh;
3716  
3717 <      new_conf->port = yy_conf->port;
3718 < #ifdef HAVE_LIBCRYPTO
3719 <      if (yy_conf->rsa_public_key_file != NULL)
3720 <      {
3721 <        BIO *file;
3717 >    nuh.nuhmask  = ptr->data;
3718 >    nuh.nickptr  = NULL;
3719 >    nuh.userptr  = block_state.user.buf;
3720 >    nuh.hostptr  = block_state.host.buf;
3721 >    nuh.nicksize = 0;
3722 >    nuh.usersize = sizeof(block_state.user.buf);
3723 >    nuh.hostsize = sizeof(block_state.host.buf);
3724 >    split_nuh(&nuh);
3725  
3726 <        DupString(new_conf->rsa_public_key_file,
3727 <                  yy_conf->rsa_public_key_file);
3726 >    conf         = conf_make(CONF_OPER);
3727 >    conf->name   = xstrdup(block_state.name.buf);
3728 >    conf->user   = xstrdup(block_state.user.buf);
3729 >    conf->host   = xstrdup(block_state.host.buf);
3730 >
3731 >    if (block_state.cert.buf[0])
3732 >      conf->certfp = xstrdup(block_state.cert.buf);
3733 >
3734 >    if (block_state.rpass.buf[0])
3735 >      conf->passwd = xstrdup(block_state.rpass.buf);
3736 >
3737 >    conf->flags = block_state.flags.value;
3738 >    conf->modes = block_state.modes.value;
3739 >    conf->port  = block_state.port.value;
3740 >    conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3741  
3742 <        file = BIO_new_file(yy_conf->rsa_public_key_file, "r");
3836 <        new_conf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
3837 <                                                           NULL, 0, NULL);
3838 <        BIO_set_close(file, BIO_CLOSE);
3839 <        BIO_free(file);
3840 <      }
3841 < #endif
3742 >    conf_add_class_to_conf(conf, block_state.class.buf);
3743  
3744   #ifdef HAVE_LIBCRYPTO
3745 <      if (yy_tmp->name && (yy_tmp->passwd || yy_conf->rsa_public_key)
3746 <          && yy_tmp->host)
3747 < #else
3748 <      if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
3749 < #endif
3745 >    if (block_state.file.buf[0])
3746 >    {
3747 >      BIO *file = NULL;
3748 >      RSA *pkey = NULL;
3749 >
3750 >      if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3751        {
3752 <        conf_add_class_to_conf(new_conf, class_name);
3753 <        if (yy_tmp->name != NULL)
3852 <          DupString(new_conf->name, yy_tmp->name);
3752 >        conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
3753 >        break;
3754        }
3755  
3756 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
3757 <      free_collect_item(yy_tmp);
3857 <    }
3858 <
3859 <    yy_conf = NULL;
3756 >      if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3757 >        conf_error_report("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3758  
3759 <    MyFree(class_name);
3760 <    class_name = NULL;
3759 >      conf->rsa_public_key = pkey;
3760 >      BIO_set_close(file, BIO_CLOSE);
3761 >      BIO_free(file);
3762 >    }
3763 > #endif /* HAVE_LIBCRYPTO */
3764    }
3765   }
3766 + #line 3767 "conf_parser.c" /* yacc.c:1646  */
3767      break;
3768  
3769 <  case 142:
3770 < /* Line 1813 of yacc.c  */
3869 < #line 965 "conf_parser.y"
3769 >  case 166:
3770 > #line 1152 "conf_parser.y" /* yacc.c:1646  */
3771      {
3772    if (conf_parser_ctx.pass == 2)
3773 <  {
3873 <    MyFree(yy_conf->name);
3874 <    DupString(yy_conf->name, yylval.string);
3875 <  }
3773 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3774   }
3775 + #line 3776 "conf_parser.c" /* yacc.c:1646  */
3776      break;
3777  
3778 <  case 143:
3779 < /* Line 1813 of yacc.c  */
3881 < #line 974 "conf_parser.y"
3778 >  case 167:
3779 > #line 1158 "conf_parser.y" /* yacc.c:1646  */
3780      {
3781    if (conf_parser_ctx.pass == 2)
3782 <  {
3783 <    struct split_nuh_item nuh;
3784 <
3785 <    nuh.nuhmask  = yylval.string;
3888 <    nuh.nickptr  = NULL;
3889 <    nuh.userptr  = userbuf;
3890 <    nuh.hostptr  = hostbuf;
3891 <
3892 <    nuh.nicksize = 0;
3893 <    nuh.usersize = sizeof(userbuf);
3894 <    nuh.hostsize = sizeof(hostbuf);
3895 <
3896 <    split_nuh(&nuh);
3782 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3783 > }
3784 > #line 3785 "conf_parser.c" /* yacc.c:1646  */
3785 >    break;
3786  
3787 <    if (yy_conf->user == NULL)
3787 >  case 168:
3788 > #line 1164 "conf_parser.y" /* yacc.c:1646  */
3789      {
3790 <      DupString(yy_conf->user, userbuf);
3791 <      DupString(yy_conf->host, hostbuf);
3790 >  if (conf_parser_ctx.pass == 2)
3791 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3792 > }
3793 > #line 3794 "conf_parser.c" /* yacc.c:1646  */
3794 >    break;
3795  
3796 <      yy_conf->htype = parse_netmask(yy_conf->host, &yy_conf->addr,
3797 <                                    &yy_conf->bits);
3905 <    }
3906 <    else
3796 >  case 169:
3797 > #line 1170 "conf_parser.y" /* yacc.c:1646  */
3798      {
3799 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
3799 >  if (conf_parser_ctx.pass != 2)
3800 >    break;
3801  
3802 <      DupString(yy_tmp->user, userbuf);
3803 <      DupString(yy_tmp->host, hostbuf);
3802 >  if (yylval.number)
3803 >    block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3804 >  else
3805 >    block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3806 > }
3807 > #line 3808 "conf_parser.c" /* yacc.c:1646  */
3808 >    break;
3809  
3810 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3811 <    }
3812 <  }
3810 >  case 170:
3811 > #line 1181 "conf_parser.y" /* yacc.c:1646  */
3812 >    {
3813 >  if (conf_parser_ctx.pass == 2)
3814 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3815   }
3816 + #line 3817 "conf_parser.c" /* yacc.c:1646  */
3817      break;
3818  
3819 <  case 144:
3820 < /* Line 1813 of yacc.c  */
3921 < #line 1011 "conf_parser.y"
3819 >  case 171:
3820 > #line 1187 "conf_parser.y" /* yacc.c:1646  */
3821      {
3822    if (conf_parser_ctx.pass == 2)
3823 <  {
3824 <    if (yy_conf->passwd != NULL)
3825 <      memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
3823 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3824 > }
3825 > #line 3826 "conf_parser.c" /* yacc.c:1646  */
3826 >    break;
3827  
3828 <    MyFree(yy_conf->passwd);
3829 <    DupString(yy_conf->passwd, yylval.string);
3830 <  }
3828 >  case 172:
3829 > #line 1193 "conf_parser.y" /* yacc.c:1646  */
3830 >    {
3831 >  if (conf_parser_ctx.pass != 2)
3832 >    break;
3833 >
3834 >  if (yylval.number)
3835 >    block_state.flags.value |= CONF_FLAGS_SSL;
3836 >  else
3837 >    block_state.flags.value &= ~CONF_FLAGS_SSL;
3838   }
3839 + #line 3840 "conf_parser.c" /* yacc.c:1646  */
3840      break;
3841  
3842 <  case 145:
3843 < /* Line 1813 of yacc.c  */
3936 < #line 1023 "conf_parser.y"
3842 >  case 173:
3843 > #line 1204 "conf_parser.y" /* yacc.c:1646  */
3844      {
3845    if (conf_parser_ctx.pass == 2)
3846 <  {
3940 <    if (yylval.number)
3941 <      SetConfEncrypted(yy_conf);
3942 <    else
3943 <      ClearConfEncrypted(yy_conf);
3944 <  }
3846 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3847   }
3848 + #line 3849 "conf_parser.c" /* yacc.c:1646  */
3849      break;
3850  
3851 <  case 146:
3852 < /* Line 1813 of yacc.c  */
3950 < #line 1034 "conf_parser.y"
3851 >  case 174:
3852 > #line 1210 "conf_parser.y" /* yacc.c:1646  */
3853      {
3952 #ifdef HAVE_LIBCRYPTO
3854    if (conf_parser_ctx.pass == 2)
3855 <  {
3856 <    BIO *file;
3855 >    block_state.modes.value = 0;
3856 > }
3857 > #line 3858 "conf_parser.c" /* yacc.c:1646  */
3858 >    break;
3859  
3860 <    if (yy_conf->rsa_public_key != NULL)
3860 >  case 178:
3861 > #line 1217 "conf_parser.y" /* yacc.c:1646  */
3862      {
3863 <      RSA_free(yy_conf->rsa_public_key);
3864 <      yy_conf->rsa_public_key = NULL;
3865 <    }
3863 >  if (conf_parser_ctx.pass == 2)
3864 >    block_state.modes.value |= UMODE_BOTS;
3865 > }
3866 > #line 3867 "conf_parser.c" /* yacc.c:1646  */
3867 >    break;
3868  
3869 <    if (yy_conf->rsa_public_key_file != NULL)
3869 >  case 179:
3870 > #line 1221 "conf_parser.y" /* yacc.c:1646  */
3871      {
3872 <      MyFree(yy_conf->rsa_public_key_file);
3873 <      yy_conf->rsa_public_key_file = NULL;
3874 <    }
3875 <
3876 <    DupString(yy_conf->rsa_public_key_file, yylval.string);
3970 <    file = BIO_new_file(yylval.string, "r");
3872 >  if (conf_parser_ctx.pass == 2)
3873 >    block_state.modes.value |= UMODE_CCONN;
3874 > }
3875 > #line 3876 "conf_parser.c" /* yacc.c:1646  */
3876 >    break;
3877  
3878 <    if (file == NULL)
3878 >  case 180:
3879 > #line 1225 "conf_parser.y" /* yacc.c:1646  */
3880      {
3881 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3882 <      break;
3883 <    }
3884 <
3885 <    yy_conf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
3881 >  if (conf_parser_ctx.pass == 2)
3882 >    block_state.modes.value |= UMODE_DEAF;
3883 > }
3884 > #line 3885 "conf_parser.c" /* yacc.c:1646  */
3885 >    break;
3886  
3887 <    if (yy_conf->rsa_public_key == NULL)
3887 >  case 181:
3888 > #line 1229 "conf_parser.y" /* yacc.c:1646  */
3889      {
3890 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3891 <      break;
3984 <    }
3985 <
3986 <    BIO_set_close(file, BIO_CLOSE);
3987 <    BIO_free(file);
3988 <  }
3989 < #endif /* HAVE_LIBCRYPTO */
3890 >  if (conf_parser_ctx.pass == 2)
3891 >    block_state.modes.value |= UMODE_DEBUG;
3892   }
3893 + #line 3894 "conf_parser.c" /* yacc.c:1646  */
3894      break;
3895  
3896 <  case 147:
3897 < /* Line 1813 of yacc.c  */
3995 < #line 1076 "conf_parser.y"
3896 >  case 182:
3897 > #line 1233 "conf_parser.y" /* yacc.c:1646  */
3898      {
3899    if (conf_parser_ctx.pass == 2)
3900 <  {
3999 <    MyFree(class_name);
4000 <    DupString(class_name, yylval.string);
4001 <  }
3900 >    block_state.modes.value |= UMODE_FULL;
3901   }
3902 + #line 3903 "conf_parser.c" /* yacc.c:1646  */
3903      break;
3904  
3905 <  case 148:
3906 < /* Line 1813 of yacc.c  */
4007 < #line 1085 "conf_parser.y"
3905 >  case 183:
3906 > #line 1237 "conf_parser.y" /* yacc.c:1646  */
3907      {
3908    if (conf_parser_ctx.pass == 2)
3909 <    yy_conf->modes = 0;
3909 >    block_state.modes.value |= UMODE_HIDDEN;
3910   }
3911 + #line 3912 "conf_parser.c" /* yacc.c:1646  */
3912      break;
3913  
3914 <  case 152:
3915 < /* Line 1813 of yacc.c  */
4016 < #line 1092 "conf_parser.y"
3914 >  case 184:
3915 > #line 1241 "conf_parser.y" /* yacc.c:1646  */
3916      {
3917    if (conf_parser_ctx.pass == 2)
3918 <    yy_conf->modes |= UMODE_BOTS;
3918 >    block_state.modes.value |= UMODE_HIDECHANS;
3919   }
3920 + #line 3921 "conf_parser.c" /* yacc.c:1646  */
3921      break;
3922  
3923 <  case 153:
3924 < /* Line 1813 of yacc.c  */
4025 < #line 1096 "conf_parser.y"
3923 >  case 185:
3924 > #line 1245 "conf_parser.y" /* yacc.c:1646  */
3925      {
3926    if (conf_parser_ctx.pass == 2)
3927 <    yy_conf->modes |= UMODE_CCONN;
3927 >    block_state.modes.value |= UMODE_HIDEIDLE;
3928   }
3929 + #line 3930 "conf_parser.c" /* yacc.c:1646  */
3930      break;
3931  
3932 <  case 154:
3933 < /* Line 1813 of yacc.c  */
4034 < #line 1100 "conf_parser.y"
3932 >  case 186:
3933 > #line 1249 "conf_parser.y" /* yacc.c:1646  */
3934      {
3935    if (conf_parser_ctx.pass == 2)
3936 <    yy_conf->modes |= UMODE_CCONN_FULL;
3936 >    block_state.modes.value |= UMODE_SKILL;
3937   }
3938 + #line 3939 "conf_parser.c" /* yacc.c:1646  */
3939      break;
3940  
3941 <  case 155:
3942 < /* Line 1813 of yacc.c  */
4043 < #line 1104 "conf_parser.y"
3941 >  case 187:
3942 > #line 1253 "conf_parser.y" /* yacc.c:1646  */
3943      {
3944    if (conf_parser_ctx.pass == 2)
3945 <    yy_conf->modes |= UMODE_DEAF;
3945 >    block_state.modes.value |= UMODE_NCHANGE;
3946   }
3947 + #line 3948 "conf_parser.c" /* yacc.c:1646  */
3948      break;
3949  
3950 <  case 156:
3951 < /* Line 1813 of yacc.c  */
4052 < #line 1108 "conf_parser.y"
3950 >  case 188:
3951 > #line 1257 "conf_parser.y" /* yacc.c:1646  */
3952      {
3953    if (conf_parser_ctx.pass == 2)
3954 <    yy_conf->modes |= UMODE_DEBUG;
3954 >    block_state.modes.value |= UMODE_REJ;
3955   }
3956 + #line 3957 "conf_parser.c" /* yacc.c:1646  */
3957      break;
3958  
3959 <  case 157:
3960 < /* Line 1813 of yacc.c  */
4061 < #line 1112 "conf_parser.y"
3959 >  case 189:
3960 > #line 1261 "conf_parser.y" /* yacc.c:1646  */
3961      {
3962    if (conf_parser_ctx.pass == 2)
3963 <    yy_conf->modes |= UMODE_FULL;
3963 >    block_state.modes.value |= UMODE_UNAUTH;
3964   }
3965 + #line 3966 "conf_parser.c" /* yacc.c:1646  */
3966      break;
3967  
3968 <  case 158:
3969 < /* Line 1813 of yacc.c  */
4070 < #line 1116 "conf_parser.y"
3968 >  case 190:
3969 > #line 1265 "conf_parser.y" /* yacc.c:1646  */
3970      {
3971    if (conf_parser_ctx.pass == 2)
3972 <    yy_conf->modes |= UMODE_HIDDEN;
3972 >    block_state.modes.value |= UMODE_SPY;
3973   }
3974 + #line 3975 "conf_parser.c" /* yacc.c:1646  */
3975      break;
3976  
3977 <  case 159:
3978 < /* Line 1813 of yacc.c  */
4079 < #line 1120 "conf_parser.y"
3977 >  case 191:
3978 > #line 1269 "conf_parser.y" /* yacc.c:1646  */
3979      {
3980    if (conf_parser_ctx.pass == 2)
3981 <    yy_conf->modes |= UMODE_SKILL;
3981 >    block_state.modes.value |= UMODE_EXTERNAL;
3982   }
3983 + #line 3984 "conf_parser.c" /* yacc.c:1646  */
3984      break;
3985  
3986 <  case 160:
3987 < /* Line 1813 of yacc.c  */
4088 < #line 1124 "conf_parser.y"
3986 >  case 192:
3987 > #line 1273 "conf_parser.y" /* yacc.c:1646  */
3988      {
3989    if (conf_parser_ctx.pass == 2)
3990 <    yy_conf->modes |= UMODE_NCHANGE;
3990 >    block_state.modes.value |= UMODE_SERVNOTICE;
3991   }
3992 + #line 3993 "conf_parser.c" /* yacc.c:1646  */
3993      break;
3994  
3995 <  case 161:
3996 < /* Line 1813 of yacc.c  */
4097 < #line 1128 "conf_parser.y"
3995 >  case 193:
3996 > #line 1277 "conf_parser.y" /* yacc.c:1646  */
3997      {
3998    if (conf_parser_ctx.pass == 2)
3999 <    yy_conf->modes |= UMODE_REJ;
3999 >    block_state.modes.value |= UMODE_INVISIBLE;
4000   }
4001 + #line 4002 "conf_parser.c" /* yacc.c:1646  */
4002      break;
4003  
4004 <  case 162:
4005 < /* Line 1813 of yacc.c  */
4106 < #line 1132 "conf_parser.y"
4004 >  case 194:
4005 > #line 1281 "conf_parser.y" /* yacc.c:1646  */
4006      {
4007    if (conf_parser_ctx.pass == 2)
4008 <    yy_conf->modes |= UMODE_UNAUTH;
4008 >    block_state.modes.value |= UMODE_WALLOP;
4009   }
4010 + #line 4011 "conf_parser.c" /* yacc.c:1646  */
4011      break;
4012  
4013 <  case 163:
4014 < /* Line 1813 of yacc.c  */
4115 < #line 1136 "conf_parser.y"
4013 >  case 195:
4014 > #line 1285 "conf_parser.y" /* yacc.c:1646  */
4015      {
4016    if (conf_parser_ctx.pass == 2)
4017 <    yy_conf->modes |= UMODE_SPY;
4017 >    block_state.modes.value |= UMODE_SOFTCALLERID;
4018   }
4019 + #line 4020 "conf_parser.c" /* yacc.c:1646  */
4020      break;
4021  
4022 <  case 164:
4023 < /* Line 1813 of yacc.c  */
4124 < #line 1140 "conf_parser.y"
4022 >  case 196:
4023 > #line 1289 "conf_parser.y" /* yacc.c:1646  */
4024      {
4025    if (conf_parser_ctx.pass == 2)
4026 <    yy_conf->modes |= UMODE_EXTERNAL;
4026 >    block_state.modes.value |= UMODE_CALLERID;
4027   }
4028 + #line 4029 "conf_parser.c" /* yacc.c:1646  */
4029      break;
4030  
4031 <  case 165:
4032 < /* Line 1813 of yacc.c  */
4133 < #line 1144 "conf_parser.y"
4031 >  case 197:
4032 > #line 1293 "conf_parser.y" /* yacc.c:1646  */
4033      {
4034    if (conf_parser_ctx.pass == 2)
4035 <    yy_conf->modes |= UMODE_OPERWALL;
4035 >    block_state.modes.value |= UMODE_LOCOPS;
4036   }
4037 + #line 4038 "conf_parser.c" /* yacc.c:1646  */
4038      break;
4039  
4040 <  case 166:
4041 < /* Line 1813 of yacc.c  */
4142 < #line 1148 "conf_parser.y"
4040 >  case 198:
4041 > #line 1297 "conf_parser.y" /* yacc.c:1646  */
4042      {
4043    if (conf_parser_ctx.pass == 2)
4044 <    yy_conf->modes |= UMODE_SERVNOTICE;
4044 >    block_state.modes.value |= UMODE_REGONLY;
4045   }
4046 + #line 4047 "conf_parser.c" /* yacc.c:1646  */
4047      break;
4048  
4049 <  case 167:
4050 < /* Line 1813 of yacc.c  */
4151 < #line 1152 "conf_parser.y"
4049 >  case 199:
4050 > #line 1301 "conf_parser.y" /* yacc.c:1646  */
4051      {
4052    if (conf_parser_ctx.pass == 2)
4053 <    yy_conf->modes |= UMODE_INVISIBLE;
4053 >    block_state.modes.value |= UMODE_FARCONNECT;
4054   }
4055 + #line 4056 "conf_parser.c" /* yacc.c:1646  */
4056      break;
4057  
4058 <  case 168:
4059 < /* Line 1813 of yacc.c  */
4160 < #line 1156 "conf_parser.y"
4058 >  case 200:
4059 > #line 1307 "conf_parser.y" /* yacc.c:1646  */
4060      {
4061    if (conf_parser_ctx.pass == 2)
4062 <    yy_conf->modes |= UMODE_WALLOP;
4062 >    block_state.port.value = 0;
4063   }
4064 + #line 4065 "conf_parser.c" /* yacc.c:1646  */
4065      break;
4066  
4067 <  case 169:
4068 < /* Line 1813 of yacc.c  */
4169 < #line 1160 "conf_parser.y"
4067 >  case 204:
4068 > #line 1314 "conf_parser.y" /* yacc.c:1646  */
4069      {
4070    if (conf_parser_ctx.pass == 2)
4071 <    yy_conf->modes |= UMODE_SOFTCALLERID;
4071 >    block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4072   }
4073 + #line 4074 "conf_parser.c" /* yacc.c:1646  */
4074      break;
4075  
4076 <  case 170:
4077 < /* Line 1813 of yacc.c  */
4178 < #line 1164 "conf_parser.y"
4076 >  case 205:
4077 > #line 1318 "conf_parser.y" /* yacc.c:1646  */
4078      {
4079    if (conf_parser_ctx.pass == 2)
4080 <    yy_conf->modes |= UMODE_CALLERID;
4080 >    block_state.port.value |= OPER_FLAG_KILL;
4081   }
4082 + #line 4083 "conf_parser.c" /* yacc.c:1646  */
4083      break;
4084  
4085 <  case 171:
4086 < /* Line 1813 of yacc.c  */
4187 < #line 1168 "conf_parser.y"
4085 >  case 206:
4086 > #line 1322 "conf_parser.y" /* yacc.c:1646  */
4087      {
4088    if (conf_parser_ctx.pass == 2)
4089 <    yy_conf->modes |= UMODE_LOCOPS;
4089 >    block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4090   }
4091 + #line 4092 "conf_parser.c" /* yacc.c:1646  */
4092      break;
4093  
4094 <  case 172:
4095 < /* Line 1813 of yacc.c  */
4196 < #line 1174 "conf_parser.y"
4094 >  case 207:
4095 > #line 1326 "conf_parser.y" /* yacc.c:1646  */
4096      {
4097    if (conf_parser_ctx.pass == 2)
4098 <    yy_conf->port = 0;
4098 >    block_state.port.value |= OPER_FLAG_CONNECT;
4099   }
4100 + #line 4101 "conf_parser.c" /* yacc.c:1646  */
4101      break;
4102  
4103 <  case 176:
4104 < /* Line 1813 of yacc.c  */
4205 < #line 1181 "conf_parser.y"
4103 >  case 208:
4104 > #line 1330 "conf_parser.y" /* yacc.c:1646  */
4105      {
4106    if (conf_parser_ctx.pass == 2)
4107 <    yy_conf->port |= OPER_FLAG_GLOBAL_KILL;
4107 >    block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4108   }
4109 + #line 4110 "conf_parser.c" /* yacc.c:1646  */
4110      break;
4111  
4112 <  case 177:
4113 < /* Line 1813 of yacc.c  */
4214 < #line 1185 "conf_parser.y"
4112 >  case 209:
4113 > #line 1334 "conf_parser.y" /* yacc.c:1646  */
4114      {
4115    if (conf_parser_ctx.pass == 2)
4116 <    yy_conf->port |= OPER_FLAG_REMOTE;
4116 >    block_state.port.value |= OPER_FLAG_SQUIT;
4117   }
4118 + #line 4119 "conf_parser.c" /* yacc.c:1646  */
4119      break;
4120  
4121 <  case 178:
4122 < /* Line 1813 of yacc.c  */
4223 < #line 1189 "conf_parser.y"
4121 >  case 210:
4122 > #line 1338 "conf_parser.y" /* yacc.c:1646  */
4123      {
4124    if (conf_parser_ctx.pass == 2)
4125 <    yy_conf->port |= OPER_FLAG_K;
4125 >    block_state.port.value |= OPER_FLAG_KLINE;
4126   }
4127 + #line 4128 "conf_parser.c" /* yacc.c:1646  */
4128      break;
4129  
4130 <  case 179:
4131 < /* Line 1813 of yacc.c  */
4232 < #line 1193 "conf_parser.y"
4130 >  case 211:
4131 > #line 1342 "conf_parser.y" /* yacc.c:1646  */
4132      {
4133    if (conf_parser_ctx.pass == 2)
4134 <    yy_conf->port |= OPER_FLAG_UNKLINE;
4134 >    block_state.port.value |= OPER_FLAG_UNKLINE;
4135   }
4136 + #line 4137 "conf_parser.c" /* yacc.c:1646  */
4137      break;
4138  
4139 <  case 180:
4140 < /* Line 1813 of yacc.c  */
4241 < #line 1197 "conf_parser.y"
4139 >  case 212:
4140 > #line 1346 "conf_parser.y" /* yacc.c:1646  */
4141      {
4142    if (conf_parser_ctx.pass == 2)
4143 <    yy_conf->port |= OPER_FLAG_DLINE;
4143 >    block_state.port.value |= OPER_FLAG_DLINE;
4144   }
4145 + #line 4146 "conf_parser.c" /* yacc.c:1646  */
4146      break;
4147  
4148 <  case 181:
4149 < /* Line 1813 of yacc.c  */
4250 < #line 1201 "conf_parser.y"
4148 >  case 213:
4149 > #line 1350 "conf_parser.y" /* yacc.c:1646  */
4150      {
4151    if (conf_parser_ctx.pass == 2)
4152 <    yy_conf->port |= OPER_FLAG_UNDLINE;
4152 >    block_state.port.value |= OPER_FLAG_UNDLINE;
4153   }
4154 + #line 4155 "conf_parser.c" /* yacc.c:1646  */
4155      break;
4156  
4157 <  case 182:
4158 < /* Line 1813 of yacc.c  */
4259 < #line 1205 "conf_parser.y"
4157 >  case 214:
4158 > #line 1354 "conf_parser.y" /* yacc.c:1646  */
4159      {
4160    if (conf_parser_ctx.pass == 2)
4161 <    yy_conf->port |= OPER_FLAG_X;
4161 >    block_state.port.value |= OPER_FLAG_XLINE;
4162   }
4163 + #line 4164 "conf_parser.c" /* yacc.c:1646  */
4164      break;
4165  
4166 <  case 183:
4167 < /* Line 1813 of yacc.c  */
4268 < #line 1209 "conf_parser.y"
4166 >  case 215:
4167 > #line 1358 "conf_parser.y" /* yacc.c:1646  */
4168      {
4169    if (conf_parser_ctx.pass == 2)
4170 <    yy_conf->port |= OPER_FLAG_GLINE;
4170 >    block_state.port.value |= OPER_FLAG_UNXLINE;
4171   }
4172 + #line 4173 "conf_parser.c" /* yacc.c:1646  */
4173      break;
4174  
4175 <  case 184:
4176 < /* Line 1813 of yacc.c  */
4277 < #line 1213 "conf_parser.y"
4175 >  case 216:
4176 > #line 1362 "conf_parser.y" /* yacc.c:1646  */
4177      {
4178    if (conf_parser_ctx.pass == 2)
4179 <    yy_conf->port |= OPER_FLAG_DIE;
4179 >    block_state.port.value |= OPER_FLAG_GLINE;
4180   }
4181 + #line 4182 "conf_parser.c" /* yacc.c:1646  */
4182      break;
4183  
4184 <  case 185:
4185 < /* Line 1813 of yacc.c  */
4286 < #line 1217 "conf_parser.y"
4184 >  case 217:
4185 > #line 1366 "conf_parser.y" /* yacc.c:1646  */
4186      {
4187    if (conf_parser_ctx.pass == 2)
4188 <    yy_conf->port |= OPER_FLAG_RESTART;
4188 >    block_state.port.value |= OPER_FLAG_DIE;
4189   }
4190 + #line 4191 "conf_parser.c" /* yacc.c:1646  */
4191      break;
4192  
4193 <  case 186:
4194 < /* Line 1813 of yacc.c  */
4295 < #line 1221 "conf_parser.y"
4193 >  case 218:
4194 > #line 1370 "conf_parser.y" /* yacc.c:1646  */
4195      {
4196    if (conf_parser_ctx.pass == 2)
4197 <    yy_conf->port |= OPER_FLAG_REHASH;
4197 >    block_state.port.value |= OPER_FLAG_RESTART;
4198   }
4199 + #line 4200 "conf_parser.c" /* yacc.c:1646  */
4200      break;
4201  
4202 <  case 187:
4203 < /* Line 1813 of yacc.c  */
4304 < #line 1225 "conf_parser.y"
4202 >  case 219:
4203 > #line 1374 "conf_parser.y" /* yacc.c:1646  */
4204      {
4205    if (conf_parser_ctx.pass == 2)
4206 <    yy_conf->port |= OPER_FLAG_ADMIN;
4206 >    block_state.port.value |= OPER_FLAG_REHASH;
4207   }
4208 + #line 4209 "conf_parser.c" /* yacc.c:1646  */
4209      break;
4210  
4211 <  case 188:
4212 < /* Line 1813 of yacc.c  */
4313 < #line 1229 "conf_parser.y"
4211 >  case 220:
4212 > #line 1378 "conf_parser.y" /* yacc.c:1646  */
4213      {
4214    if (conf_parser_ctx.pass == 2)
4215 <    yy_conf->port |= OPER_FLAG_N;
4215 >    block_state.port.value |= OPER_FLAG_ADMIN;
4216   }
4217 + #line 4218 "conf_parser.c" /* yacc.c:1646  */
4218      break;
4219  
4220 <  case 189:
4221 < /* Line 1813 of yacc.c  */
4322 < #line 1233 "conf_parser.y"
4220 >  case 221:
4221 > #line 1382 "conf_parser.y" /* yacc.c:1646  */
4222      {
4223    if (conf_parser_ctx.pass == 2)
4224 <    yy_conf->port |= OPER_FLAG_OPERWALL;
4224 >    block_state.port.value |= OPER_FLAG_GLOBOPS;
4225   }
4226 + #line 4227 "conf_parser.c" /* yacc.c:1646  */
4227      break;
4228  
4229 <  case 190:
4230 < /* Line 1813 of yacc.c  */
4331 < #line 1237 "conf_parser.y"
4229 >  case 222:
4230 > #line 1386 "conf_parser.y" /* yacc.c:1646  */
4231      {
4232    if (conf_parser_ctx.pass == 2)
4233 <    yy_conf->port |= OPER_FLAG_GLOBOPS;
4233 >    block_state.port.value |= OPER_FLAG_WALLOPS;
4234   }
4235 + #line 4236 "conf_parser.c" /* yacc.c:1646  */
4236      break;
4237  
4238 <  case 191:
4239 < /* Line 1813 of yacc.c  */
4340 < #line 1241 "conf_parser.y"
4238 >  case 223:
4239 > #line 1390 "conf_parser.y" /* yacc.c:1646  */
4240      {
4241    if (conf_parser_ctx.pass == 2)
4242 <    yy_conf->port |= OPER_FLAG_OPER_SPY;
4242 >    block_state.port.value |= OPER_FLAG_LOCOPS;
4243   }
4244 + #line 4245 "conf_parser.c" /* yacc.c:1646  */
4245      break;
4246  
4247 <  case 192:
4248 < /* Line 1813 of yacc.c  */
4349 < #line 1245 "conf_parser.y"
4247 >  case 224:
4248 > #line 1394 "conf_parser.y" /* yacc.c:1646  */
4249      {
4250    if (conf_parser_ctx.pass == 2)
4251 <    yy_conf->port |= OPER_FLAG_REMOTEBAN;
4251 >    block_state.port.value |= OPER_FLAG_REMOTEBAN;
4252   }
4253 + #line 4254 "conf_parser.c" /* yacc.c:1646  */
4254      break;
4255  
4256 <  case 193:
4257 < /* Line 1813 of yacc.c  */
4358 < #line 1249 "conf_parser.y"
4256 >  case 225:
4257 > #line 1398 "conf_parser.y" /* yacc.c:1646  */
4258      {
4259    if (conf_parser_ctx.pass == 2)
4260 <    yy_conf->port |= OPER_FLAG_SET;
4260 >    block_state.port.value |= OPER_FLAG_SET;
4261   }
4262 + #line 4263 "conf_parser.c" /* yacc.c:1646  */
4263      break;
4264  
4265 <  case 194:
4266 < /* Line 1813 of yacc.c  */
4367 < #line 1253 "conf_parser.y"
4265 >  case 226:
4266 > #line 1402 "conf_parser.y" /* yacc.c:1646  */
4267      {
4268    if (conf_parser_ctx.pass == 2)
4269 <    yy_conf->port |= OPER_FLAG_MODULE;
4269 >    block_state.port.value |= OPER_FLAG_MODULE;
4270   }
4271 + #line 4272 "conf_parser.c" /* yacc.c:1646  */
4272      break;
4273  
4274 <  case 195:
4275 < /* Line 1813 of yacc.c  */
4376 < #line 1263 "conf_parser.y"
4274 >  case 227:
4275 > #line 1412 "conf_parser.y" /* yacc.c:1646  */
4276      {
4277 <  if (conf_parser_ctx.pass == 1)
4278 <  {
4279 <    yy_class = class_make();
4280 <  }
4277 >  if (conf_parser_ctx.pass != 1)
4278 >    break;
4279 >
4280 >  reset_block_state();
4281 >
4282 >  block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4283 >  block_state.con_freq.value  = DEFAULT_CONNECTFREQUENCY;
4284 >  block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4285 >  block_state.max_sendq.value = DEFAULT_SENDQ;
4286 >  block_state.max_recvq.value = DEFAULT_RECVQ;
4287   }
4288 + #line 4289 "conf_parser.c" /* yacc.c:1646  */
4289      break;
4290  
4291 <  case 196:
4292 < /* Line 1813 of yacc.c  */
4387 < #line 1269 "conf_parser.y"
4291 >  case 228:
4292 > #line 1424 "conf_parser.y" /* yacc.c:1646  */
4293      {
4294 <  if (conf_parser_ctx.pass == 1)
4390 <  {
4391 <    struct ClassItem *class = NULL;
4294 >  struct ClassItem *class = NULL;
4295  
4296 <    if (yy_class_name == NULL)
4297 <      class_free(yy_class);
4395 <    else
4396 <    {
4397 <      class = class_find(yy_class_name, 0);
4296 >  if (conf_parser_ctx.pass != 1)
4297 >    break;
4298  
4299 <      if (class != NULL)                /* The class existed already */
4300 <      {
4401 <        int user_count = 0;
4299 >  if (!block_state.class.buf[0])
4300 >    break;
4301  
4302 <        rebuild_cidr_class(class, yy_class);
4302 >  if (!(class = class_find(block_state.class.buf, 0)))
4303 >    class = class_make();
4304  
4305 <        user_count = class->ref_count;
4306 <        memcpy(class, yy_class, sizeof(*class));
4307 <        class->ref_count = user_count;
4308 <        class->active = 1;
4305 >  class->active = 1;
4306 >  MyFree(class->name);
4307 >  class->name = xstrdup(block_state.class.buf);
4308 >  class->ping_freq = block_state.ping_freq.value;
4309 >  class->max_perip = block_state.max_perip.value;
4310 >  class->con_freq = block_state.con_freq.value;
4311 >  class->max_total = block_state.max_total.value;
4312 >  class->max_global = block_state.max_global.value;
4313 >  class->max_local = block_state.max_local.value;
4314 >  class->max_ident = block_state.max_ident.value;
4315 >  class->max_sendq = block_state.max_sendq.value;
4316 >  class->max_recvq = block_state.max_recvq.value;
4317 >  class->max_channels = block_state.max_channels.value;
4318  
4319 <        class_free(yy_class);
4319 >  if (block_state.min_idle.value > block_state.max_idle.value)
4320 >  {
4321 >    block_state.min_idle.value = 0;
4322 >    block_state.max_idle.value = 0;
4323 >    block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4324 >  }
4325  
4326 <        MyFree(class->name);            /* Allows case change of class name */
4327 <        class->name = yy_class_name;
4328 <      }
4415 <      else      /* Brand new class */
4416 <      {
4417 <        MyFree(yy_class->name);          /* just in case it was allocated */
4418 <        yy_class->name = yy_class_name;
4419 <        yy_class->active = 1;
4420 <      }
4421 <    }
4326 >  class->flags = block_state.flags.value;
4327 >  class->min_idle = block_state.min_idle.value;
4328 >  class->max_idle = block_state.max_idle.value;
4329  
4330 <    yy_class_name = NULL;
4331 <  }
4330 >  if (class->number_per_cidr && block_state.number_per_cidr.value)
4331 >    if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4332 >        (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4333 >      if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4334 >          (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4335 >        rebuild_cidr_list(class);
4336 >
4337 >  class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4338 >  class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4339 >  class->number_per_cidr = block_state.number_per_cidr.value;
4340   }
4341 + #line 4342 "conf_parser.c" /* yacc.c:1646  */
4342      break;
4343  
4344 <  case 214:
4345 < /* Line 1813 of yacc.c  */
4430 < #line 1324 "conf_parser.y"
4344 >  case 249:
4345 > #line 1493 "conf_parser.y" /* yacc.c:1646  */
4346      {
4347    if (conf_parser_ctx.pass == 1)
4348 <  {
4434 <    MyFree(yy_class_name);
4435 <    DupString(yy_class_name, yylval.string);
4436 <  }
4348 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4349   }
4350 + #line 4351 "conf_parser.c" /* yacc.c:1646  */
4351      break;
4352  
4353 <  case 215:
4354 < /* Line 1813 of yacc.c  */
4442 < #line 1333 "conf_parser.y"
4353 >  case 250:
4354 > #line 1499 "conf_parser.y" /* yacc.c:1646  */
4355      {
4356    if (conf_parser_ctx.pass == 1)
4357 <    yy_class->ping_freq = (yyvsp[(3) - (4)].number);
4357 >    block_state.ping_freq.value = (yyvsp[-1].number);
4358   }
4359 + #line 4360 "conf_parser.c" /* yacc.c:1646  */
4360      break;
4361  
4362 <  case 216:
4363 < /* Line 1813 of yacc.c  */
4451 < #line 1339 "conf_parser.y"
4362 >  case 251:
4363 > #line 1505 "conf_parser.y" /* yacc.c:1646  */
4364      {
4365    if (conf_parser_ctx.pass == 1)
4366 <    yy_class->ping_warning = (yyvsp[(3) - (4)].number);
4366 >    block_state.max_perip.value = (yyvsp[-1].number);
4367   }
4368 + #line 4369 "conf_parser.c" /* yacc.c:1646  */
4369      break;
4370  
4371 <  case 217:
4372 < /* Line 1813 of yacc.c  */
4460 < #line 1345 "conf_parser.y"
4371 >  case 252:
4372 > #line 1511 "conf_parser.y" /* yacc.c:1646  */
4373      {
4374    if (conf_parser_ctx.pass == 1)
4375 <    yy_class->max_perip = (yyvsp[(3) - (4)].number);
4375 >    block_state.con_freq.value = (yyvsp[-1].number);
4376   }
4377 + #line 4378 "conf_parser.c" /* yacc.c:1646  */
4378      break;
4379  
4380 <  case 218:
4381 < /* Line 1813 of yacc.c  */
4469 < #line 1351 "conf_parser.y"
4380 >  case 253:
4381 > #line 1517 "conf_parser.y" /* yacc.c:1646  */
4382      {
4383    if (conf_parser_ctx.pass == 1)
4384 <    yy_class->con_freq = (yyvsp[(3) - (4)].number);
4384 >    block_state.max_channels.value = (yyvsp[-1].number);
4385   }
4386 + #line 4387 "conf_parser.c" /* yacc.c:1646  */
4387      break;
4388  
4389 <  case 219:
4390 < /* Line 1813 of yacc.c  */
4478 < #line 1357 "conf_parser.y"
4389 >  case 254:
4390 > #line 1523 "conf_parser.y" /* yacc.c:1646  */
4391      {
4392    if (conf_parser_ctx.pass == 1)
4393 <    yy_class->max_total = (yyvsp[(3) - (4)].number);
4393 >    block_state.max_total.value = (yyvsp[-1].number);
4394   }
4395 + #line 4396 "conf_parser.c" /* yacc.c:1646  */
4396      break;
4397  
4398 <  case 220:
4399 < /* Line 1813 of yacc.c  */
4487 < #line 1363 "conf_parser.y"
4398 >  case 255:
4399 > #line 1529 "conf_parser.y" /* yacc.c:1646  */
4400      {
4401    if (conf_parser_ctx.pass == 1)
4402 <    yy_class->max_global = (yyvsp[(3) - (4)].number);
4402 >    block_state.max_global.value = (yyvsp[-1].number);
4403   }
4404 + #line 4405 "conf_parser.c" /* yacc.c:1646  */
4405      break;
4406  
4407 <  case 221:
4408 < /* Line 1813 of yacc.c  */
4496 < #line 1369 "conf_parser.y"
4407 >  case 256:
4408 > #line 1535 "conf_parser.y" /* yacc.c:1646  */
4409      {
4410    if (conf_parser_ctx.pass == 1)
4411 <    yy_class->max_local = (yyvsp[(3) - (4)].number);
4411 >    block_state.max_local.value = (yyvsp[-1].number);
4412   }
4413 + #line 4414 "conf_parser.c" /* yacc.c:1646  */
4414      break;
4415  
4416 <  case 222:
4417 < /* Line 1813 of yacc.c  */
4505 < #line 1375 "conf_parser.y"
4416 >  case 257:
4417 > #line 1541 "conf_parser.y" /* yacc.c:1646  */
4418      {
4419    if (conf_parser_ctx.pass == 1)
4420 <    yy_class->max_ident = (yyvsp[(3) - (4)].number);
4420 >    block_state.max_ident.value = (yyvsp[-1].number);
4421   }
4422 + #line 4423 "conf_parser.c" /* yacc.c:1646  */
4423      break;
4424  
4425 <  case 223:
4426 < /* Line 1813 of yacc.c  */
4514 < #line 1381 "conf_parser.y"
4425 >  case 258:
4426 > #line 1547 "conf_parser.y" /* yacc.c:1646  */
4427      {
4428    if (conf_parser_ctx.pass == 1)
4429 <    yy_class->max_sendq = (yyvsp[(3) - (4)].number);
4429 >    block_state.max_sendq.value = (yyvsp[-1].number);
4430   }
4431 + #line 4432 "conf_parser.c" /* yacc.c:1646  */
4432      break;
4433  
4434 <  case 224:
4435 < /* Line 1813 of yacc.c  */
4523 < #line 1387 "conf_parser.y"
4434 >  case 259:
4435 > #line 1553 "conf_parser.y" /* yacc.c:1646  */
4436      {
4437    if (conf_parser_ctx.pass == 1)
4438 <    if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4439 <      yy_class->max_recvq = (yyvsp[(3) - (4)].number);
4438 >    if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4439 >      block_state.max_recvq.value = (yyvsp[-1].number);
4440   }
4441 + #line 4442 "conf_parser.c" /* yacc.c:1646  */
4442      break;
4443  
4444 <  case 225:
4445 < /* Line 1813 of yacc.c  */
4533 < #line 1394 "conf_parser.y"
4444 >  case 260:
4445 > #line 1560 "conf_parser.y" /* yacc.c:1646  */
4446      {
4447    if (conf_parser_ctx.pass == 1)
4448 <    yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4448 >    block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4449   }
4450 + #line 4451 "conf_parser.c" /* yacc.c:1646  */
4451      break;
4452  
4453 <  case 226:
4454 < /* Line 1813 of yacc.c  */
4542 < #line 1400 "conf_parser.y"
4453 >  case 261:
4454 > #line 1566 "conf_parser.y" /* yacc.c:1646  */
4455      {
4456    if (conf_parser_ctx.pass == 1)
4457 <    yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4457 >    block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4458   }
4459 + #line 4460 "conf_parser.c" /* yacc.c:1646  */
4460      break;
4461  
4462 <  case 227:
4463 < /* Line 1813 of yacc.c  */
4551 < #line 1406 "conf_parser.y"
4462 >  case 262:
4463 > #line 1572 "conf_parser.y" /* yacc.c:1646  */
4464      {
4465    if (conf_parser_ctx.pass == 1)
4466 <    yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
4466 >    block_state.number_per_cidr.value = (yyvsp[-1].number);
4467   }
4468 + #line 4469 "conf_parser.c" /* yacc.c:1646  */
4469      break;
4470  
4471 <  case 228:
4472 < /* Line 1813 of yacc.c  */
4560 < #line 1415 "conf_parser.y"
4471 >  case 263:
4472 > #line 1578 "conf_parser.y" /* yacc.c:1646  */
4473      {
4474 <  if (conf_parser_ctx.pass == 2)
4475 <  {
4476 <    listener_address = NULL;
4477 <    listener_flags = 0;
4478 <  }
4474 >  if (conf_parser_ctx.pass != 1)
4475 >    break;
4476 >
4477 >  block_state.min_idle.value = (yyvsp[-1].number);
4478 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4479   }
4480 + #line 4481 "conf_parser.c" /* yacc.c:1646  */
4481      break;
4482  
4483 <  case 229:
4484 < /* Line 1813 of yacc.c  */
4485 < #line 1422 "conf_parser.y"
4483 >  case 264:
4484 > #line 1587 "conf_parser.y" /* yacc.c:1646  */
4485 >    {
4486 >  if (conf_parser_ctx.pass != 1)
4487 >    break;
4488 >
4489 >  block_state.max_idle.value = (yyvsp[-1].number);
4490 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4491 > }
4492 > #line 4493 "conf_parser.c" /* yacc.c:1646  */
4493 >    break;
4494 >
4495 >  case 265:
4496 > #line 1596 "conf_parser.y" /* yacc.c:1646  */
4497 >    {
4498 >  if (conf_parser_ctx.pass == 1)
4499 >    block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4500 > }
4501 > #line 4502 "conf_parser.c" /* yacc.c:1646  */
4502 >    break;
4503 >
4504 >  case 269:
4505 > #line 1603 "conf_parser.y" /* yacc.c:1646  */
4506 >    {
4507 >  if (conf_parser_ctx.pass == 1)
4508 >    block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4509 > }
4510 > #line 4511 "conf_parser.c" /* yacc.c:1646  */
4511 >    break;
4512 >
4513 >  case 270:
4514 > #line 1607 "conf_parser.y" /* yacc.c:1646  */
4515 >    {
4516 >  if (conf_parser_ctx.pass == 1)
4517 >    block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4518 > }
4519 > #line 4520 "conf_parser.c" /* yacc.c:1646  */
4520 >    break;
4521 >
4522 >  case 271:
4523 > #line 1617 "conf_parser.y" /* yacc.c:1646  */
4524      {
4525    if (conf_parser_ctx.pass == 2)
4526 <  {
4576 <    MyFree(listener_address);
4577 <    listener_address = NULL;
4578 <  }
4526 >    reset_block_state();
4527   }
4528 + #line 4529 "conf_parser.c" /* yacc.c:1646  */
4529      break;
4530  
4531 <  case 230:
4532 < /* Line 1813 of yacc.c  */
4584 < #line 1431 "conf_parser.y"
4531 >  case 273:
4532 > #line 1623 "conf_parser.y" /* yacc.c:1646  */
4533      {
4534 <  listener_flags = 0;
4534 >  block_state.flags.value = 0;
4535   }
4536 + #line 4537 "conf_parser.c" /* yacc.c:1646  */
4537      break;
4538  
4539 <  case 234:
4540 < /* Line 1813 of yacc.c  */
4592 < #line 1437 "conf_parser.y"
4539 >  case 277:
4540 > #line 1629 "conf_parser.y" /* yacc.c:1646  */
4541      {
4542    if (conf_parser_ctx.pass == 2)
4543 <    listener_flags |= LISTENER_SSL;
4543 >    block_state.flags.value |= LISTENER_SSL;
4544   }
4545 + #line 4546 "conf_parser.c" /* yacc.c:1646  */
4546      break;
4547  
4548 <  case 235:
4549 < /* Line 1813 of yacc.c  */
4601 < #line 1441 "conf_parser.y"
4548 >  case 278:
4549 > #line 1633 "conf_parser.y" /* yacc.c:1646  */
4550      {
4551    if (conf_parser_ctx.pass == 2)
4552 <    listener_flags |= LISTENER_HIDDEN;
4552 >    block_state.flags.value |= LISTENER_HIDDEN;
4553   }
4554 + #line 4555 "conf_parser.c" /* yacc.c:1646  */
4555      break;
4556  
4557 <  case 236:
4558 < /* Line 1813 of yacc.c  */
4610 < #line 1445 "conf_parser.y"
4557 >  case 279:
4558 > #line 1637 "conf_parser.y" /* yacc.c:1646  */
4559      {
4560    if (conf_parser_ctx.pass == 2)
4561 <    listener_flags |= LISTENER_SERVER;
4561 >   block_state.flags.value |= LISTENER_SERVER;
4562   }
4563 + #line 4564 "conf_parser.c" /* yacc.c:1646  */
4564      break;
4565  
4566 <  case 244:
4567 < /* Line 1813 of yacc.c  */
4568 < #line 1455 "conf_parser.y"
4569 <    { listener_flags = 0; }
4566 >  case 287:
4567 > #line 1645 "conf_parser.y" /* yacc.c:1646  */
4568 >    { block_state.flags.value = 0; }
4569 > #line 4570 "conf_parser.c" /* yacc.c:1646  */
4570      break;
4571  
4572 <  case 248:
4573 < /* Line 1813 of yacc.c  */
4625 < #line 1460 "conf_parser.y"
4572 >  case 291:
4573 > #line 1650 "conf_parser.y" /* yacc.c:1646  */
4574      {
4575    if (conf_parser_ctx.pass == 2)
4576    {
4577 <    if ((listener_flags & LISTENER_SSL))
4577 >    if (block_state.flags.value & LISTENER_SSL)
4578   #ifdef HAVE_LIBCRYPTO
4579        if (!ServerInfo.server_ctx)
4580   #endif
4581        {
4582 <        yyerror("SSL not available - port closed");
4583 <        break;
4582 >        conf_error_report("SSL not available - port closed");
4583 >        break;
4584        }
4585 <    add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4585 >    add_listener((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4586    }
4587   }
4588 + #line 4589 "conf_parser.c" /* yacc.c:1646  */
4589      break;
4590  
4591 <  case 249:
4592 < /* Line 1813 of yacc.c  */
4644 < #line 1474 "conf_parser.y"
4591 >  case 292:
4592 > #line 1664 "conf_parser.y" /* yacc.c:1646  */
4593      {
4594    if (conf_parser_ctx.pass == 2)
4595    {
4596 <    int i;
4649 <
4650 <    if ((listener_flags & LISTENER_SSL))
4596 >    if (block_state.flags.value & LISTENER_SSL)
4597   #ifdef HAVE_LIBCRYPTO
4598        if (!ServerInfo.server_ctx)
4599   #endif
4600        {
4601 <        yyerror("SSL not available - port closed");
4602 <        break;
4601 >        conf_error_report("SSL not available - port closed");
4602 >        break;
4603        }
4604  
4605 <    for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4606 <      add_listener(i, listener_address, listener_flags);
4605 >    for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4606 >      add_listener(i, block_state.addr.buf, block_state.flags.value);
4607    }
4608   }
4609 + #line 4610 "conf_parser.c" /* yacc.c:1646  */
4610      break;
4611  
4612 <  case 250:
4613 < /* Line 1813 of yacc.c  */
4667 < #line 1494 "conf_parser.y"
4612 >  case 293:
4613 > #line 1682 "conf_parser.y" /* yacc.c:1646  */
4614      {
4615    if (conf_parser_ctx.pass == 2)
4616 <  {
4671 <    MyFree(listener_address);
4672 <    DupString(listener_address, yylval.string);
4673 <  }
4616 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4617   }
4618 + #line 4619 "conf_parser.c" /* yacc.c:1646  */
4619      break;
4620  
4621 <  case 251:
4622 < /* Line 1813 of yacc.c  */
4679 < #line 1503 "conf_parser.y"
4621 >  case 294:
4622 > #line 1688 "conf_parser.y" /* yacc.c:1646  */
4623      {
4624    if (conf_parser_ctx.pass == 2)
4625 <  {
4683 <    MyFree(listener_address);
4684 <    DupString(listener_address, yylval.string);
4685 <  }
4625 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4626   }
4627 + #line 4628 "conf_parser.c" /* yacc.c:1646  */
4628      break;
4629  
4630 <  case 252:
4631 < /* Line 1813 of yacc.c  */
4691 < #line 1515 "conf_parser.y"
4630 >  case 295:
4631 > #line 1697 "conf_parser.y" /* yacc.c:1646  */
4632      {
4633    if (conf_parser_ctx.pass == 2)
4634 <  {
4695 <    yy_conf = conf_make(CONF_CLIENT);
4696 <  }
4697 <  else
4698 <  {
4699 <    MyFree(class_name);
4700 <    class_name = NULL;
4701 <  }
4634 >    reset_block_state();
4635   }
4636 + #line 4637 "conf_parser.c" /* yacc.c:1646  */
4637      break;
4638  
4639 <  case 253:
4640 < /* Line 1813 of yacc.c  */
4707 < #line 1526 "conf_parser.y"
4708 <    {
4709 <  if (conf_parser_ctx.pass == 2)
4710 <  {
4711 <    struct CollectItem *yy_tmp = NULL;
4712 <    dlink_node *ptr = NULL, *next_ptr = NULL;
4713 <
4714 <    if (yy_conf->user && yy_conf->host)
4715 <    {
4716 <      conf_add_class_to_conf(yy_conf, class_name);
4717 <      add_conf_by_address(CONF_CLIENT, yy_conf);
4718 <    }
4719 <    else
4720 <      conf_free(yy_conf);
4721 <
4722 <    /* copy over settings from first struct */
4723 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4639 >  case 296:
4640 > #line 1701 "conf_parser.y" /* yacc.c:1646  */
4641      {
4642 <      struct MaskItem *new_conf = conf_make(CONF_CLIENT);
4642 >  dlink_node *ptr = NULL;
4643  
4644 <      yy_tmp = ptr->data;
4728 <
4729 <      assert(yy_tmp->user && yy_tmp->host);
4730 <
4731 <      if (yy_conf->passwd != NULL)
4732 <        DupString(new_conf->passwd, yy_conf->passwd);
4733 <      if (yy_conf->name != NULL)
4734 <        DupString(new_conf->name, yy_conf->name);
4735 <      if (yy_conf->passwd != NULL)
4736 <        DupString(new_conf->passwd, yy_conf->passwd);
4737 <
4738 <      new_conf->flags = yy_conf->flags;
4739 <      new_conf->port  = yy_conf->port;
4740 <
4741 <      DupString(new_conf->user, yy_tmp->user);
4742 <      collapse(new_conf->user);
4743 <
4744 <      DupString(new_conf->host, yy_tmp->host);
4745 <      collapse(new_conf->host);
4746 <
4747 <      conf_add_class_to_conf(new_conf, class_name);
4748 <      add_conf_by_address(CONF_CLIENT, new_conf);
4749 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
4750 <      free_collect_item(yy_tmp);
4751 <    }
4752 <
4753 <    MyFree(class_name);
4754 <    class_name = NULL;
4755 <    yy_conf = NULL;
4756 <  }
4757 < }
4644 >  if (conf_parser_ctx.pass != 2)
4645      break;
4646  
4647 <  case 265:
4761 < /* Line 1813 of yacc.c  */
4762 < #line 1583 "conf_parser.y"
4763 <    {
4764 <  if (conf_parser_ctx.pass == 2)
4647 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
4648    {
4649 <    struct CollectItem *yy_tmp = NULL;
4649 >    struct MaskItem *conf = NULL;
4650      struct split_nuh_item nuh;
4651  
4652 <    nuh.nuhmask  = yylval.string;
4652 >    nuh.nuhmask  = ptr->data;
4653      nuh.nickptr  = NULL;
4654 <    nuh.userptr  = userbuf;
4655 <    nuh.hostptr  = hostbuf;
4773 <
4654 >    nuh.userptr  = block_state.user.buf;
4655 >    nuh.hostptr  = block_state.host.buf;
4656      nuh.nicksize = 0;
4657 <    nuh.usersize = sizeof(userbuf);
4658 <    nuh.hostsize = sizeof(hostbuf);
4777 <
4657 >    nuh.usersize = sizeof(block_state.user.buf);
4658 >    nuh.hostsize = sizeof(block_state.host.buf);
4659      split_nuh(&nuh);
4660  
4661 <    if (yy_conf->user == NULL)
4662 <    {
4663 <      DupString(yy_conf->user, userbuf);
4783 <      DupString(yy_conf->host, hostbuf);
4784 <    }
4785 <    else
4786 <    {
4787 <      yy_tmp = MyMalloc(sizeof(struct CollectItem));
4661 >    conf        = conf_make(CONF_CLIENT);
4662 >    conf->user  = xstrdup(block_state.user.buf);
4663 >    conf->host  = xstrdup(block_state.host.buf);
4664  
4665 <      DupString(yy_tmp->user, userbuf);
4666 <      DupString(yy_tmp->host, hostbuf);
4665 >    if (block_state.rpass.buf[0])
4666 >      conf->passwd = xstrdup(block_state.rpass.buf);
4667 >    if (block_state.name.buf[0])
4668 >      conf->name = xstrdup(block_state.name.buf);
4669  
4670 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4671 <    }
4670 >    conf->flags = block_state.flags.value;
4671 >    conf->port  = block_state.port.value;
4672 >
4673 >    conf_add_class_to_conf(conf, block_state.class.buf);
4674 >    add_conf_by_address(CONF_CLIENT, conf);
4675    }
4676   }
4677 + #line 4678 "conf_parser.c" /* yacc.c:1646  */
4678      break;
4679  
4680 <  case 266:
4681 < /* Line 1813 of yacc.c  */
4800 < #line 1618 "conf_parser.y"
4680 >  case 308:
4681 > #line 1750 "conf_parser.y" /* yacc.c:1646  */
4682      {
4683    if (conf_parser_ctx.pass == 2)
4684 <  {
4685 <    /* be paranoid */
4686 <    if (yy_conf->passwd != NULL)
4687 <      memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
4684 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4685 > }
4686 > #line 4687 "conf_parser.c" /* yacc.c:1646  */
4687 >    break;
4688  
4689 <    MyFree(yy_conf->passwd);
4690 <    DupString(yy_conf->passwd, yylval.string);
4691 <  }
4689 >  case 309:
4690 > #line 1756 "conf_parser.y" /* yacc.c:1646  */
4691 >    {
4692 >  if (conf_parser_ctx.pass == 2)
4693 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4694   }
4695 + #line 4696 "conf_parser.c" /* yacc.c:1646  */
4696      break;
4697  
4698 <  case 267:
4699 < /* Line 1813 of yacc.c  */
4816 < #line 1631 "conf_parser.y"
4698 >  case 310:
4699 > #line 1762 "conf_parser.y" /* yacc.c:1646  */
4700      {
4701    if (conf_parser_ctx.pass == 2)
4702 <  {
4820 <    MyFree(class_name);
4821 <    DupString(class_name, yylval.string);
4822 <  }
4702 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4703   }
4704 + #line 4705 "conf_parser.c" /* yacc.c:1646  */
4705      break;
4706  
4707 <  case 268:
4708 < /* Line 1813 of yacc.c  */
4828 < #line 1640 "conf_parser.y"
4707 >  case 311:
4708 > #line 1768 "conf_parser.y" /* yacc.c:1646  */
4709      {
4710    if (conf_parser_ctx.pass == 2)
4711    {
4712      if (yylval.number)
4713 <      SetConfEncrypted(yy_conf);
4713 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4714      else
4715 <      ClearConfEncrypted(yy_conf);
4715 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4716    }
4717   }
4718 + #line 4719 "conf_parser.c" /* yacc.c:1646  */
4719      break;
4720  
4721 <  case 269:
4722 < /* Line 1813 of yacc.c  */
4842 < #line 1651 "conf_parser.y"
4721 >  case 312:
4722 > #line 1779 "conf_parser.y" /* yacc.c:1646  */
4723      {
4724 +  if (conf_parser_ctx.pass == 2)
4725 +    block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4726   }
4727 + #line 4728 "conf_parser.c" /* yacc.c:1646  */
4728      break;
4729  
4730 <  case 273:
4731 < /* Line 1813 of yacc.c  */
4849 < #line 1656 "conf_parser.y"
4730 >  case 316:
4731 > #line 1786 "conf_parser.y" /* yacc.c:1646  */
4732      {
4733    if (conf_parser_ctx.pass == 2)
4734 <    yy_conf->flags |= CONF_FLAGS_SPOOF_NOTICE;
4734 >    block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4735   }
4736 + #line 4737 "conf_parser.c" /* yacc.c:1646  */
4737      break;
4738  
4739 <  case 274:
4740 < /* Line 1813 of yacc.c  */
4858 < #line 1660 "conf_parser.y"
4739 >  case 317:
4740 > #line 1790 "conf_parser.y" /* yacc.c:1646  */
4741      {
4742    if (conf_parser_ctx.pass == 2)
4743 <    yy_conf->flags |= CONF_FLAGS_NOLIMIT;
4743 >    block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4744   }
4745 + #line 4746 "conf_parser.c" /* yacc.c:1646  */
4746      break;
4747  
4748 <  case 275:
4749 < /* Line 1813 of yacc.c  */
4867 < #line 1664 "conf_parser.y"
4748 >  case 318:
4749 > #line 1794 "conf_parser.y" /* yacc.c:1646  */
4750      {
4751    if (conf_parser_ctx.pass == 2)
4752 <    yy_conf->flags |= CONF_FLAGS_EXEMPTKLINE;
4752 >    block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4753   }
4754 + #line 4755 "conf_parser.c" /* yacc.c:1646  */
4755      break;
4756  
4757 <  case 276:
4758 < /* Line 1813 of yacc.c  */
4876 < #line 1668 "conf_parser.y"
4757 >  case 319:
4758 > #line 1798 "conf_parser.y" /* yacc.c:1646  */
4759      {
4760    if (conf_parser_ctx.pass == 2)
4761 <    yy_conf->flags |= CONF_FLAGS_NEED_IDENTD;
4761 >    block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4762   }
4763 + #line 4764 "conf_parser.c" /* yacc.c:1646  */
4764      break;
4765  
4766 <  case 277:
4767 < /* Line 1813 of yacc.c  */
4885 < #line 1672 "conf_parser.y"
4766 >  case 320:
4767 > #line 1802 "conf_parser.y" /* yacc.c:1646  */
4768      {
4769    if (conf_parser_ctx.pass == 2)
4770 <    yy_conf->flags |= CONF_FLAGS_CAN_FLOOD;
4770 >    block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4771   }
4772 + #line 4773 "conf_parser.c" /* yacc.c:1646  */
4773      break;
4774  
4775 <  case 278:
4776 < /* Line 1813 of yacc.c  */
4894 < #line 1676 "conf_parser.y"
4775 >  case 321:
4776 > #line 1806 "conf_parser.y" /* yacc.c:1646  */
4777      {
4778    if (conf_parser_ctx.pass == 2)
4779 <    yy_conf->flags |= CONF_FLAGS_NO_TILDE;
4779 >    block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4780   }
4781 + #line 4782 "conf_parser.c" /* yacc.c:1646  */
4782      break;
4783  
4784 <  case 279:
4785 < /* Line 1813 of yacc.c  */
4903 < #line 1680 "conf_parser.y"
4784 >  case 322:
4785 > #line 1810 "conf_parser.y" /* yacc.c:1646  */
4786      {
4787    if (conf_parser_ctx.pass == 2)
4788 <    yy_conf->flags |= CONF_FLAGS_EXEMPTGLINE;
4788 >    block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4789   }
4790 + #line 4791 "conf_parser.c" /* yacc.c:1646  */
4791      break;
4792  
4793 <  case 280:
4794 < /* Line 1813 of yacc.c  */
4912 < #line 1684 "conf_parser.y"
4793 >  case 323:
4794 > #line 1814 "conf_parser.y" /* yacc.c:1646  */
4795      {
4796    if (conf_parser_ctx.pass == 2)
4797 <    yy_conf->flags |= CONF_FLAGS_EXEMPTRESV;
4797 >    block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4798   }
4799 + #line 4800 "conf_parser.c" /* yacc.c:1646  */
4800      break;
4801  
4802 <  case 281:
4803 < /* Line 1813 of yacc.c  */
4921 < #line 1688 "conf_parser.y"
4802 >  case 324:
4803 > #line 1818 "conf_parser.y" /* yacc.c:1646  */
4804      {
4805    if (conf_parser_ctx.pass == 2)
4806 <    yy_conf->flags |= CONF_FLAGS_NEED_PASSWORD;
4806 >    block_state.flags.value |= CONF_FLAGS_WEBIRC;
4807   }
4808 + #line 4809 "conf_parser.c" /* yacc.c:1646  */
4809      break;
4810  
4811 <  case 282:
4812 < /* Line 1813 of yacc.c  */
4930 < #line 1694 "conf_parser.y"
4811 >  case 325:
4812 > #line 1822 "conf_parser.y" /* yacc.c:1646  */
4813      {
4814    if (conf_parser_ctx.pass == 2)
4815 <  {
4816 <    MyFree(yy_conf->name);
4815 >    block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4816 > }
4817 > #line 4818 "conf_parser.c" /* yacc.c:1646  */
4818 >    break;
4819  
4820 <    if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4821 <    {    
4938 <      DupString(yy_conf->name, yylval.string);
4939 <      yy_conf->flags |= CONF_FLAGS_SPOOF_IP;
4940 <    }
4941 <    else
4820 >  case 326:
4821 > #line 1828 "conf_parser.y" /* yacc.c:1646  */
4822      {
4823 <      ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4824 <      yy_conf->name = NULL;
4825 <    }
4823 >  if (conf_parser_ctx.pass != 2)
4824 >    break;
4825 >
4826 >  if (valid_hostname(yylval.string))
4827 >  {
4828 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4829 >    block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4830    }
4831 +  else
4832 +    ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4833   }
4834 + #line 4835 "conf_parser.c" /* yacc.c:1646  */
4835      break;
4836  
4837 <  case 283:
4838 < /* Line 1813 of yacc.c  */
4952 < #line 1713 "conf_parser.y"
4837 >  case 327:
4838 > #line 1842 "conf_parser.y" /* yacc.c:1646  */
4839      {
4840 <  if (conf_parser_ctx.pass == 2)
4841 <  {
4842 <    yy_conf->flags |= CONF_FLAGS_REDIR;
4843 <    MyFree(yy_conf->name);
4844 <    DupString(yy_conf->name, yylval.string);
4959 <  }
4840 >  if (conf_parser_ctx.pass != 2)
4841 >    break;
4842 >
4843 >  strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4844 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4845   }
4846 + #line 4847 "conf_parser.c" /* yacc.c:1646  */
4847      break;
4848  
4849 <  case 284:
4850 < /* Line 1813 of yacc.c  */
4965 < #line 1723 "conf_parser.y"
4849 >  case 328:
4850 > #line 1851 "conf_parser.y" /* yacc.c:1646  */
4851      {
4852 <  if (conf_parser_ctx.pass == 2)
4853 <  {
4854 <    yy_conf->flags |= CONF_FLAGS_REDIR;
4855 <    yy_conf->port = (yyvsp[(3) - (4)].number);
4856 <  }
4852 >  if (conf_parser_ctx.pass != 2)
4853 >    break;
4854 >
4855 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4856 >  block_state.port.value = (yyvsp[-1].number);
4857   }
4858 + #line 4859 "conf_parser.c" /* yacc.c:1646  */
4859      break;
4860  
4861 <  case 285:
4862 < /* Line 1813 of yacc.c  */
4977 < #line 1736 "conf_parser.y"
4861 >  case 329:
4862 > #line 1864 "conf_parser.y" /* yacc.c:1646  */
4863      {
4864 <  if (conf_parser_ctx.pass == 2)
4865 <  {
4866 <    MyFree(resv_reason);
4867 <    resv_reason = NULL;
4868 <  }
4864 >  if (conf_parser_ctx.pass != 2)
4865 >    break;
4866 >
4867 >  reset_block_state();
4868 >  strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4869   }
4870 + #line 4871 "conf_parser.c" /* yacc.c:1646  */
4871      break;
4872  
4873 <  case 286:
4874 < /* Line 1813 of yacc.c  */
4989 < #line 1743 "conf_parser.y"
4873 >  case 330:
4874 > #line 1871 "conf_parser.y" /* yacc.c:1646  */
4875      {
4876 <  if (conf_parser_ctx.pass == 2)
4877 <  {
4878 <    MyFree(resv_reason);
4879 <    resv_reason = NULL;
4995 <  }
4876 >  if (conf_parser_ctx.pass != 2)
4877 >    break;
4878 >
4879 >  create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4880   }
4881 + #line 4882 "conf_parser.c" /* yacc.c:1646  */
4882      break;
4883  
4884 <  case 293:
4885 < /* Line 1813 of yacc.c  */
5001 < #line 1755 "conf_parser.y"
4884 >  case 337:
4885 > #line 1882 "conf_parser.y" /* yacc.c:1646  */
4886      {
4887    if (conf_parser_ctx.pass == 2)
4888 <  {
5005 <    MyFree(resv_reason);
5006 <    DupString(resv_reason, yylval.string);
5007 <  }
4888 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4889   }
4890 + #line 4891 "conf_parser.c" /* yacc.c:1646  */
4891      break;
4892  
4893 <  case 294:
4894 < /* Line 1813 of yacc.c  */
5013 < #line 1764 "conf_parser.y"
4893 >  case 338:
4894 > #line 1888 "conf_parser.y" /* yacc.c:1646  */
4895      {
4896    if (conf_parser_ctx.pass == 2)
4897 <  {
5017 <    if (IsChanPrefix(*yylval.string))
5018 <    {
5019 <      char def_reason[] = "No reason";
5020 <
5021 <      create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5022 <    }
5023 <  }
5024 <  /* ignore it for now.. but we really should make a warning if
5025 <   * its an erroneous name --fl_ */
4897 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4898   }
4899 + #line 4900 "conf_parser.c" /* yacc.c:1646  */
4900      break;
4901  
4902 <  case 295:
4903 < /* Line 1813 of yacc.c  */
5031 < #line 1779 "conf_parser.y"
4902 >  case 339:
4903 > #line 1894 "conf_parser.y" /* yacc.c:1646  */
4904      {
4905    if (conf_parser_ctx.pass == 2)
4906 <  {
5035 <    char def_reason[] = "No reason";
5036 <
5037 <    create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5038 <  }
4906 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4907   }
4908 + #line 4909 "conf_parser.c" /* yacc.c:1646  */
4909      break;
4910  
4911 <  case 301:
4912 < /* Line 1813 of yacc.c  */
5044 < #line 1797 "conf_parser.y"
4911 >  case 345:
4912 > #line 1909 "conf_parser.y" /* yacc.c:1646  */
4913      {
4914 <  if (conf_parser_ctx.pass == 2)
4914 >  if (conf_parser_ctx.pass != 2)
4915 >    break;
4916 >
4917 >  if (valid_servname(yylval.string))
4918    {
4919 <    if (valid_servname(yylval.string))
4920 <    {
5050 <      yy_conf = conf_make(CONF_SERVICE);
5051 <      DupString(yy_conf->name, yylval.string);
5052 <    }
4919 >    struct MaskItem *conf = conf_make(CONF_SERVICE);
4920 >    conf->name = xstrdup(yylval.string);
4921    }
4922   }
4923 + #line 4924 "conf_parser.c" /* yacc.c:1646  */
4924      break;
4925  
4926 <  case 302:
4927 < /* Line 1813 of yacc.c  */
5059 < #line 1812 "conf_parser.y"
4926 >  case 346:
4927 > #line 1924 "conf_parser.y" /* yacc.c:1646  */
4928      {
4929 <  if (conf_parser_ctx.pass == 2)
4930 <  {
4931 <    yy_conf = conf_make(CONF_ULINE);
4932 <    yy_conf->action = SHARED_ALL;
4933 <  }
4929 >  if (conf_parser_ctx.pass != 2)
4930 >    break;
4931 >
4932 >  reset_block_state();
4933 >
4934 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4935 >  strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4936 >  strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4937 >  block_state.flags.value = SHARED_ALL;
4938   }
4939 + #line 4940 "conf_parser.c" /* yacc.c:1646  */
4940      break;
4941  
4942 <  case 303:
4943 < /* Line 1813 of yacc.c  */
5071 < #line 1819 "conf_parser.y"
4942 >  case 347:
4943 > #line 1935 "conf_parser.y" /* yacc.c:1646  */
4944      {
4945 <  if (conf_parser_ctx.pass == 2)
4946 <  {
4947 <    yy_conf = NULL;
4948 <  }
4945 >  struct MaskItem *conf = NULL;
4946 >
4947 >  if (conf_parser_ctx.pass != 2)
4948 >    break;
4949 >
4950 >  conf = conf_make(CONF_ULINE);
4951 >  conf->flags = block_state.flags.value;
4952 >  conf->name = xstrdup(block_state.name.buf);
4953 >  conf->user = xstrdup(block_state.user.buf);
4954 >  conf->host = xstrdup(block_state.host.buf);
4955   }
4956 + #line 4957 "conf_parser.c" /* yacc.c:1646  */
4957      break;
4958  
4959 <  case 310:
4960 < /* Line 1813 of yacc.c  */
5082 < #line 1830 "conf_parser.y"
4959 >  case 354:
4960 > #line 1952 "conf_parser.y" /* yacc.c:1646  */
4961      {
4962    if (conf_parser_ctx.pass == 2)
4963 <  {
5086 <    MyFree(yy_conf->name);
5087 <    DupString(yy_conf->name, yylval.string);
5088 <  }
4963 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4964   }
4965 + #line 4966 "conf_parser.c" /* yacc.c:1646  */
4966      break;
4967  
4968 <  case 311:
4969 < /* Line 1813 of yacc.c  */
5094 < #line 1839 "conf_parser.y"
4968 >  case 355:
4969 > #line 1958 "conf_parser.y" /* yacc.c:1646  */
4970      {
4971    if (conf_parser_ctx.pass == 2)
4972    {
# Line 5099 | Line 4974 | yyreduce:
4974  
4975      nuh.nuhmask  = yylval.string;
4976      nuh.nickptr  = NULL;
4977 <    nuh.userptr  = userbuf;
4978 <    nuh.hostptr  = hostbuf;
4977 >    nuh.userptr  = block_state.user.buf;
4978 >    nuh.hostptr  = block_state.host.buf;
4979  
4980      nuh.nicksize = 0;
4981 <    nuh.usersize = sizeof(userbuf);
4982 <    nuh.hostsize = sizeof(hostbuf);
4981 >    nuh.usersize = sizeof(block_state.user.buf);
4982 >    nuh.hostsize = sizeof(block_state.host.buf);
4983  
4984      split_nuh(&nuh);
5110
5111    DupString(yy_conf->user, userbuf);
5112    DupString(yy_conf->host, hostbuf);
4985    }
4986   }
4987 + #line 4988 "conf_parser.c" /* yacc.c:1646  */
4988      break;
4989  
4990 <  case 312:
4991 < /* Line 1813 of yacc.c  */
5119 < #line 1861 "conf_parser.y"
4990 >  case 356:
4991 > #line 1977 "conf_parser.y" /* yacc.c:1646  */
4992      {
4993    if (conf_parser_ctx.pass == 2)
4994 <    yy_conf->action = 0;
4994 >    block_state.flags.value = 0;
4995   }
4996 + #line 4997 "conf_parser.c" /* yacc.c:1646  */
4997      break;
4998  
4999 <  case 316:
5000 < /* Line 1813 of yacc.c  */
5128 < #line 1868 "conf_parser.y"
4999 >  case 360:
5000 > #line 1984 "conf_parser.y" /* yacc.c:1646  */
5001      {
5002    if (conf_parser_ctx.pass == 2)
5003 <    yy_conf->action |= SHARED_KLINE;
5003 >    block_state.flags.value |= SHARED_KLINE;
5004   }
5005 + #line 5006 "conf_parser.c" /* yacc.c:1646  */
5006      break;
5007  
5008 <  case 317:
5009 < /* Line 1813 of yacc.c  */
5137 < #line 1872 "conf_parser.y"
5008 >  case 361:
5009 > #line 1988 "conf_parser.y" /* yacc.c:1646  */
5010      {
5011    if (conf_parser_ctx.pass == 2)
5012 <    yy_conf->action |= SHARED_UNKLINE;
5012 >    block_state.flags.value |= SHARED_UNKLINE;
5013   }
5014 + #line 5015 "conf_parser.c" /* yacc.c:1646  */
5015      break;
5016  
5017 <  case 318:
5018 < /* Line 1813 of yacc.c  */
5146 < #line 1876 "conf_parser.y"
5017 >  case 362:
5018 > #line 1992 "conf_parser.y" /* yacc.c:1646  */
5019      {
5020    if (conf_parser_ctx.pass == 2)
5021 <    yy_conf->action |= SHARED_DLINE;
5021 >    block_state.flags.value |= SHARED_DLINE;
5022   }
5023 + #line 5024 "conf_parser.c" /* yacc.c:1646  */
5024      break;
5025  
5026 <  case 319:
5027 < /* Line 1813 of yacc.c  */
5155 < #line 1880 "conf_parser.y"
5026 >  case 363:
5027 > #line 1996 "conf_parser.y" /* yacc.c:1646  */
5028      {
5029    if (conf_parser_ctx.pass == 2)
5030 <    yy_conf->action |= SHARED_UNDLINE;
5030 >    block_state.flags.value |= SHARED_UNDLINE;
5031   }
5032 + #line 5033 "conf_parser.c" /* yacc.c:1646  */
5033      break;
5034  
5035 <  case 320:
5036 < /* Line 1813 of yacc.c  */
5164 < #line 1884 "conf_parser.y"
5035 >  case 364:
5036 > #line 2000 "conf_parser.y" /* yacc.c:1646  */
5037      {
5038    if (conf_parser_ctx.pass == 2)
5039 <    yy_conf->action |= SHARED_XLINE;
5039 >    block_state.flags.value |= SHARED_XLINE;
5040   }
5041 + #line 5042 "conf_parser.c" /* yacc.c:1646  */
5042      break;
5043  
5044 <  case 321:
5045 < /* Line 1813 of yacc.c  */
5173 < #line 1888 "conf_parser.y"
5044 >  case 365:
5045 > #line 2004 "conf_parser.y" /* yacc.c:1646  */
5046      {
5047    if (conf_parser_ctx.pass == 2)
5048 <    yy_conf->action |= SHARED_UNXLINE;
5048 >    block_state.flags.value |= SHARED_UNXLINE;
5049   }
5050 + #line 5051 "conf_parser.c" /* yacc.c:1646  */
5051      break;
5052  
5053 <  case 322:
5054 < /* Line 1813 of yacc.c  */
5182 < #line 1892 "conf_parser.y"
5053 >  case 366:
5054 > #line 2008 "conf_parser.y" /* yacc.c:1646  */
5055      {
5056    if (conf_parser_ctx.pass == 2)
5057 <    yy_conf->action |= SHARED_RESV;
5057 >    block_state.flags.value |= SHARED_RESV;
5058   }
5059 + #line 5060 "conf_parser.c" /* yacc.c:1646  */
5060      break;
5061  
5062 <  case 323:
5063 < /* Line 1813 of yacc.c  */
5191 < #line 1896 "conf_parser.y"
5062 >  case 367:
5063 > #line 2012 "conf_parser.y" /* yacc.c:1646  */
5064      {
5065    if (conf_parser_ctx.pass == 2)
5066 <    yy_conf->action |= SHARED_UNRESV;
5066 >    block_state.flags.value |= SHARED_UNRESV;
5067   }
5068 + #line 5069 "conf_parser.c" /* yacc.c:1646  */
5069      break;
5070  
5071 <  case 324:
5072 < /* Line 1813 of yacc.c  */
5200 < #line 1900 "conf_parser.y"
5071 >  case 368:
5072 > #line 2016 "conf_parser.y" /* yacc.c:1646  */
5073      {
5074    if (conf_parser_ctx.pass == 2)
5075 <    yy_conf->action |= SHARED_LOCOPS;
5075 >    block_state.flags.value |= SHARED_LOCOPS;
5076   }
5077 + #line 5078 "conf_parser.c" /* yacc.c:1646  */
5078      break;
5079  
5080 <  case 325:
5081 < /* Line 1813 of yacc.c  */
5209 < #line 1904 "conf_parser.y"
5080 >  case 369:
5081 > #line 2020 "conf_parser.y" /* yacc.c:1646  */
5082      {
5083    if (conf_parser_ctx.pass == 2)
5084 <    yy_conf->action = SHARED_ALL;
5084 >    block_state.flags.value = SHARED_ALL;
5085   }
5086 + #line 5087 "conf_parser.c" /* yacc.c:1646  */
5087      break;
5088  
5089 <  case 326:
5090 < /* Line 1813 of yacc.c  */
5218 < #line 1913 "conf_parser.y"
5089 >  case 370:
5090 > #line 2029 "conf_parser.y" /* yacc.c:1646  */
5091      {
5092 <  if (conf_parser_ctx.pass == 2)
5093 <  {
5094 <    yy_conf = conf_make(CONF_CLUSTER);
5095 <  }
5092 >  if (conf_parser_ctx.pass != 2)
5093 >    break;
5094 >
5095 >  reset_block_state();
5096 >
5097 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5098 >  block_state.flags.value = SHARED_ALL;
5099   }
5100 + #line 5101 "conf_parser.c" /* yacc.c:1646  */
5101      break;
5102  
5103 <  case 327:
5104 < /* Line 1813 of yacc.c  */
5229 < #line 1919 "conf_parser.y"
5103 >  case 371:
5104 > #line 2038 "conf_parser.y" /* yacc.c:1646  */
5105      {
5106 <  if (conf_parser_ctx.pass == 2)
5107 <  {
5108 <    if (yy_conf->name == NULL)
5109 <      DupString(yy_conf->name, "*");
5110 <    yy_conf = NULL;
5111 <  }
5106 >  struct MaskItem *conf = NULL;
5107 >
5108 >  if (conf_parser_ctx.pass != 2)
5109 >    break;
5110 >
5111 >  conf = conf_make(CONF_CLUSTER);
5112 >  conf->flags = block_state.flags.value;
5113 >  conf->name = xstrdup(block_state.name.buf);
5114   }
5115 + #line 5116 "conf_parser.c" /* yacc.c:1646  */
5116      break;
5117  
5118 <  case 333:
5119 < /* Line 1813 of yacc.c  */
5242 < #line 1932 "conf_parser.y"
5118 >  case 377:
5119 > #line 2053 "conf_parser.y" /* yacc.c:1646  */
5120      {
5121    if (conf_parser_ctx.pass == 2)
5122 <    DupString(yy_conf->name, yylval.string);
5122 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5123   }
5124 + #line 5125 "conf_parser.c" /* yacc.c:1646  */
5125      break;
5126  
5127 <  case 334:
5128 < /* Line 1813 of yacc.c  */
5251 < #line 1938 "conf_parser.y"
5127 >  case 378:
5128 > #line 2059 "conf_parser.y" /* yacc.c:1646  */
5129      {
5130    if (conf_parser_ctx.pass == 2)
5131 <    yy_conf->flags = 0;
5131 >    block_state.flags.value = 0;
5132   }
5133 + #line 5134 "conf_parser.c" /* yacc.c:1646  */
5134      break;
5135  
5136 <  case 338:
5137 < /* Line 1813 of yacc.c  */
5260 < #line 1945 "conf_parser.y"
5136 >  case 382:
5137 > #line 2066 "conf_parser.y" /* yacc.c:1646  */
5138      {
5139    if (conf_parser_ctx.pass == 2)
5140 <    yy_conf->flags |= SHARED_KLINE;
5140 >    block_state.flags.value |= SHARED_KLINE;
5141   }
5142 + #line 5143 "conf_parser.c" /* yacc.c:1646  */
5143      break;
5144  
5145 <  case 339:
5146 < /* Line 1813 of yacc.c  */
5269 < #line 1949 "conf_parser.y"
5145 >  case 383:
5146 > #line 2070 "conf_parser.y" /* yacc.c:1646  */
5147      {
5148    if (conf_parser_ctx.pass == 2)
5149 <    yy_conf->flags |= SHARED_UNKLINE;
5149 >    block_state.flags.value |= SHARED_UNKLINE;
5150   }
5151 + #line 5152 "conf_parser.c" /* yacc.c:1646  */
5152      break;
5153  
5154 <  case 340:
5155 < /* Line 1813 of yacc.c  */
5278 < #line 1953 "conf_parser.y"
5154 >  case 384:
5155 > #line 2074 "conf_parser.y" /* yacc.c:1646  */
5156      {
5157    if (conf_parser_ctx.pass == 2)
5158 <    yy_conf->flags |= SHARED_DLINE;
5158 >    block_state.flags.value |= SHARED_DLINE;
5159   }
5160 + #line 5161 "conf_parser.c" /* yacc.c:1646  */
5161      break;
5162  
5163 <  case 341:
5164 < /* Line 1813 of yacc.c  */
5287 < #line 1957 "conf_parser.y"
5163 >  case 385:
5164 > #line 2078 "conf_parser.y" /* yacc.c:1646  */
5165      {
5166    if (conf_parser_ctx.pass == 2)
5167 <    yy_conf->flags |= SHARED_UNDLINE;
5167 >    block_state.flags.value |= SHARED_UNDLINE;
5168   }
5169 + #line 5170 "conf_parser.c" /* yacc.c:1646  */
5170      break;
5171  
5172 <  case 342:
5173 < /* Line 1813 of yacc.c  */
5296 < #line 1961 "conf_parser.y"
5172 >  case 386:
5173 > #line 2082 "conf_parser.y" /* yacc.c:1646  */
5174      {
5175    if (conf_parser_ctx.pass == 2)
5176 <    yy_conf->flags |= SHARED_XLINE;
5176 >    block_state.flags.value |= SHARED_XLINE;
5177   }
5178 + #line 5179 "conf_parser.c" /* yacc.c:1646  */
5179      break;
5180  
5181 <  case 343:
5182 < /* Line 1813 of yacc.c  */
5305 < #line 1965 "conf_parser.y"
5181 >  case 387:
5182 > #line 2086 "conf_parser.y" /* yacc.c:1646  */
5183      {
5184    if (conf_parser_ctx.pass == 2)
5185 <    yy_conf->flags |= SHARED_UNXLINE;
5185 >    block_state.flags.value |= SHARED_UNXLINE;
5186   }
5187 + #line 5188 "conf_parser.c" /* yacc.c:1646  */
5188      break;
5189  
5190 <  case 344:
5191 < /* Line 1813 of yacc.c  */
5314 < #line 1969 "conf_parser.y"
5190 >  case 388:
5191 > #line 2090 "conf_parser.y" /* yacc.c:1646  */
5192      {
5193    if (conf_parser_ctx.pass == 2)
5194 <    yy_conf->flags |= SHARED_RESV;
5194 >    block_state.flags.value |= SHARED_RESV;
5195   }
5196 + #line 5197 "conf_parser.c" /* yacc.c:1646  */
5197      break;
5198  
5199 <  case 345:
5200 < /* Line 1813 of yacc.c  */
5323 < #line 1973 "conf_parser.y"
5199 >  case 389:
5200 > #line 2094 "conf_parser.y" /* yacc.c:1646  */
5201      {
5202    if (conf_parser_ctx.pass == 2)
5203 <    yy_conf->flags |= SHARED_UNRESV;
5203 >    block_state.flags.value |= SHARED_UNRESV;
5204   }
5205 + #line 5206 "conf_parser.c" /* yacc.c:1646  */
5206      break;
5207  
5208 <  case 346:
5209 < /* Line 1813 of yacc.c  */
5332 < #line 1977 "conf_parser.y"
5208 >  case 390:
5209 > #line 2098 "conf_parser.y" /* yacc.c:1646  */
5210      {
5211    if (conf_parser_ctx.pass == 2)
5212 <    yy_conf->flags |= SHARED_LOCOPS;
5212 >    block_state.flags.value |= SHARED_LOCOPS;
5213   }
5214 + #line 5215 "conf_parser.c" /* yacc.c:1646  */
5215      break;
5216  
5217 <  case 347:
5218 < /* Line 1813 of yacc.c  */
5341 < #line 1981 "conf_parser.y"
5217 >  case 391:
5218 > #line 2102 "conf_parser.y" /* yacc.c:1646  */
5219      {
5220    if (conf_parser_ctx.pass == 2)
5221 <    yy_conf->flags = SHARED_ALL;
5221 >    block_state.flags.value = SHARED_ALL;
5222   }
5223 + #line 5224 "conf_parser.c" /* yacc.c:1646  */
5224      break;
5225  
5226 <  case 348:
5227 < /* Line 1813 of yacc.c  */
5350 < #line 1990 "conf_parser.y"
5226 >  case 392:
5227 > #line 2111 "conf_parser.y" /* yacc.c:1646  */
5228      {
5352  if (conf_parser_ctx.pass == 2)
5353  {
5354    yy_conf = conf_make(CONF_SERVER);
5229  
5230 <    /* defaults */
5231 <    yy_conf->port = PORTNUM;
5232 <  }
5233 <  else
5234 <  {
5235 <    MyFree(class_name);
5362 <    class_name = NULL;
5363 <  }
5230 >  if (conf_parser_ctx.pass != 2)
5231 >    break;
5232 >
5233 >  reset_block_state();
5234 >  block_state.aftype.value = AF_INET;
5235 >  block_state.port.value = PORTNUM;
5236   }
5237 + #line 5238 "conf_parser.c" /* yacc.c:1646  */
5238      break;
5239  
5240 <  case 349:
5241 < /* Line 1813 of yacc.c  */
5369 < #line 2004 "conf_parser.y"
5240 >  case 393:
5241 > #line 2120 "conf_parser.y" /* yacc.c:1646  */
5242      {
5243 <  if (conf_parser_ctx.pass == 2)
5243 >  struct MaskItem *conf = NULL;
5244 >  struct addrinfo hints, *res;
5245 >
5246 >  if (conf_parser_ctx.pass != 2)
5247 >    break;
5248 >
5249 >  if (!block_state.name.buf[0] ||
5250 >      !block_state.host.buf[0])
5251 >    break;
5252 >
5253 >  if (!block_state.rpass.buf[0] ||
5254 >      !block_state.spass.buf[0])
5255 >    break;
5256 >
5257 >  if (has_wildcards(block_state.name.buf) ||
5258 >      has_wildcards(block_state.host.buf))
5259 >    break;
5260 >
5261 >  conf = conf_make(CONF_SERVER);
5262 >  conf->port = block_state.port.value;
5263 >  conf->flags = block_state.flags.value;
5264 >  conf->aftype = block_state.aftype.value;
5265 >  conf->host = xstrdup(block_state.host.buf);
5266 >  conf->name = xstrdup(block_state.name.buf);
5267 >  conf->passwd = xstrdup(block_state.rpass.buf);
5268 >  conf->spasswd = xstrdup(block_state.spass.buf);
5269 >
5270 >  if (block_state.cert.buf[0])
5271 >    conf->certfp = xstrdup(block_state.cert.buf);
5272 >
5273 >  if (block_state.ciph.buf[0])
5274 >    conf->cipher_list = xstrdup(block_state.ciph.buf);
5275 >
5276 >  dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5277 >  dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5278 >
5279 >  if (block_state.bind.buf[0])
5280    {
5281 <    if (yy_conf->host && yy_conf->passwd && yy_conf->spasswd)
5282 <    {
5283 <      if (conf_add_server(yy_conf, class_name) == -1)
5284 <        conf_free(yy_conf);
5285 <    }
5281 >    memset(&hints, 0, sizeof(hints));
5282 >
5283 >    hints.ai_family   = AF_UNSPEC;
5284 >    hints.ai_socktype = SOCK_STREAM;
5285 >    hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5286 >
5287 >    if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5288 >      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5289      else
5290      {
5291 <      if (yy_conf->name != NULL)
5381 <      {
5382 <        if (yy_conf->host == NULL)
5383 <          yyerror("Ignoring connect block -- missing host");
5384 <        else if (!yy_conf->passwd || !yy_conf->spasswd)
5385 <          yyerror("Ignoring connect block -- missing password");
5386 <      }
5291 >      assert(res);
5292  
5293 <      /* XXX
5294 <       * This fixes a try_connections() core (caused by invalid class_ptr
5295 <       * pointers) reported by metalrock. That's an ugly fix, but there
5296 <       * is currently no better way. The entire config subsystem needs an
5392 <       * rewrite ASAP. make_conf_item() shouldn't really add things onto
5393 <       * a doubly linked list immediately without any sanity checks!  -Michael
5394 <       */
5395 <      conf_free(yy_conf);
5293 >      memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5294 >      conf->bind.ss.ss_family = res->ai_family;
5295 >      conf->bind.ss_len = res->ai_addrlen;
5296 >      freeaddrinfo(res);
5297      }
5397
5398    MyFree(class_name);
5399    class_name = NULL;
5400    yy_conf = NULL;
5298    }
5299 +
5300 +  conf_add_class_to_conf(conf, block_state.class.buf);
5301 +  lookup_confhost(conf);
5302   }
5303 + #line 5304 "conf_parser.c" /* yacc.c:1646  */
5304      break;
5305  
5306 <  case 366:
5307 < /* Line 1813 of yacc.c  */
5407 < #line 2047 "conf_parser.y"
5306 >  case 411:
5307 > #line 2200 "conf_parser.y" /* yacc.c:1646  */
5308      {
5309    if (conf_parser_ctx.pass == 2)
5310 <  {
5411 <    MyFree(yy_conf->name);
5412 <    DupString(yy_conf->name, yylval.string);
5413 <  }
5310 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5311   }
5312 + #line 5313 "conf_parser.c" /* yacc.c:1646  */
5313      break;
5314  
5315 <  case 367:
5316 < /* Line 1813 of yacc.c  */
5419 < #line 2056 "conf_parser.y"
5315 >  case 412:
5316 > #line 2206 "conf_parser.y" /* yacc.c:1646  */
5317      {
5318    if (conf_parser_ctx.pass == 2)
5319 <  {
5423 <    MyFree(yy_conf->host);
5424 <    DupString(yy_conf->host, yylval.string);
5425 <  }
5319 >    strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5320   }
5321 + #line 5322 "conf_parser.c" /* yacc.c:1646  */
5322      break;
5323  
5324 <  case 368:
5325 < /* Line 1813 of yacc.c  */
5431 < #line 2065 "conf_parser.y"
5324 >  case 413:
5325 > #line 2212 "conf_parser.y" /* yacc.c:1646  */
5326      {
5327    if (conf_parser_ctx.pass == 2)
5328 <  {
5329 <    struct addrinfo hints, *res;
5330 <
5331 <    memset(&hints, 0, sizeof(hints));
5438 <
5439 <    hints.ai_family   = AF_UNSPEC;
5440 <    hints.ai_socktype = SOCK_STREAM;
5441 <    hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5328 >    strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5329 > }
5330 > #line 5331 "conf_parser.c" /* yacc.c:1646  */
5331 >    break;
5332  
5333 <    if (getaddrinfo(yylval.string, NULL, &hints, &res))
5334 <      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5445 <    else
5333 >  case 414:
5334 > #line 2218 "conf_parser.y" /* yacc.c:1646  */
5335      {
5336 <      assert(res != NULL);
5336 >  if (conf_parser_ctx.pass != 2)
5337 >    break;
5338  
5339 <      memcpy(&yy_conf->bind, res->ai_addr, res->ai_addrlen);
5340 <      yy_conf->bind.ss.ss_family = res->ai_family;
5341 <      yy_conf->bind.ss_len = res->ai_addrlen;
5342 <      freeaddrinfo(res);
5343 <    }
5344 <  }
5339 >  if ((yyvsp[-1].string)[0] == ':')
5340 >    conf_error_report("Server passwords cannot begin with a colon");
5341 >  else if (strchr((yyvsp[-1].string), ' '))
5342 >    conf_error_report("Server passwords cannot contain spaces");
5343 >  else
5344 >    strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5345   }
5346 + #line 5347 "conf_parser.c" /* yacc.c:1646  */
5347      break;
5348  
5349 <  case 369:
5350 < /* Line 1813 of yacc.c  */
5460 < #line 2091 "conf_parser.y"
5349 >  case 415:
5350 > #line 2231 "conf_parser.y" /* yacc.c:1646  */
5351      {
5352 <  if (conf_parser_ctx.pass == 2)
5353 <  {
5464 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
5465 <      yyerror("Server passwords cannot begin with a colon");
5466 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5467 <      yyerror("Server passwords cannot contain spaces");
5468 <    else {
5469 <      if (yy_conf->spasswd != NULL)
5470 <        memset(yy_conf->spasswd, 0, strlen(yy_conf->spasswd));
5352 >  if (conf_parser_ctx.pass != 2)
5353 >    break;
5354  
5355 <      MyFree(yy_conf->spasswd);
5356 <      DupString(yy_conf->spasswd, yylval.string);
5357 <    }
5358 <  }
5355 >  if ((yyvsp[-1].string)[0] == ':')
5356 >    conf_error_report("Server passwords cannot begin with a colon");
5357 >  else if (strchr((yyvsp[-1].string), ' '))
5358 >    conf_error_report("Server passwords cannot contain spaces");
5359 >  else
5360 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5361   }
5362 + #line 5363 "conf_parser.c" /* yacc.c:1646  */
5363      break;
5364  
5365 <  case 370:
5366 < /* Line 1813 of yacc.c  */
5481 < #line 2109 "conf_parser.y"
5365 >  case 416:
5366 > #line 2244 "conf_parser.y" /* yacc.c:1646  */
5367      {
5368    if (conf_parser_ctx.pass == 2)
5369 <  {
5485 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
5486 <      yyerror("Server passwords cannot begin with a colon");
5487 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5488 <      yyerror("Server passwords cannot contain spaces");
5489 <    else {
5490 <      if (yy_conf->passwd != NULL)
5491 <        memset(yy_conf->passwd, 0, strlen(yy_conf->passwd));
5492 <
5493 <      MyFree(yy_conf->passwd);
5494 <      DupString(yy_conf->passwd, yylval.string);
5495 <    }
5496 <  }
5369 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5370   }
5371 + #line 5372 "conf_parser.c" /* yacc.c:1646  */
5372      break;
5373  
5374 <  case 371:
5375 < /* Line 1813 of yacc.c  */
5502 < #line 2127 "conf_parser.y"
5374 >  case 417:
5375 > #line 2250 "conf_parser.y" /* yacc.c:1646  */
5376      {
5377    if (conf_parser_ctx.pass == 2)
5378 <    yy_conf->port = (yyvsp[(3) - (4)].number);
5378 >    block_state.port.value = (yyvsp[-1].number);
5379   }
5380 + #line 5381 "conf_parser.c" /* yacc.c:1646  */
5381      break;
5382  
5383 <  case 372:
5384 < /* Line 1813 of yacc.c  */
5511 < #line 2133 "conf_parser.y"
5383 >  case 418:
5384 > #line 2256 "conf_parser.y" /* yacc.c:1646  */
5385      {
5386    if (conf_parser_ctx.pass == 2)
5387 <    yy_conf->aftype = AF_INET;
5387 >    block_state.aftype.value = AF_INET;
5388   }
5389 + #line 5390 "conf_parser.c" /* yacc.c:1646  */
5390      break;
5391  
5392 <  case 373:
5393 < /* Line 1813 of yacc.c  */
5520 < #line 2137 "conf_parser.y"
5392 >  case 419:
5393 > #line 2260 "conf_parser.y" /* yacc.c:1646  */
5394      {
5395   #ifdef IPV6
5396    if (conf_parser_ctx.pass == 2)
5397 <    yy_conf->aftype = AF_INET6;
5397 >    block_state.aftype.value = AF_INET6;
5398   #endif
5399   }
5400 + #line 5401 "conf_parser.c" /* yacc.c:1646  */
5401      break;
5402  
5403 <  case 374:
5404 < /* Line 1813 of yacc.c  */
5531 < #line 2145 "conf_parser.y"
5403 >  case 420:
5404 > #line 2268 "conf_parser.y" /* yacc.c:1646  */
5405      {
5406 +  block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5407   }
5408 + #line 5409 "conf_parser.c" /* yacc.c:1646  */
5409      break;
5410  
5411 <  case 378:
5412 < /* Line 1813 of yacc.c  */
5538 < #line 2150 "conf_parser.y"
5411 >  case 424:
5412 > #line 2274 "conf_parser.y" /* yacc.c:1646  */
5413      {
5414    if (conf_parser_ctx.pass == 2)
5415 <    SetConfAllowAutoConn(yy_conf);
5415 >    block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5416   }
5417 + #line 5418 "conf_parser.c" /* yacc.c:1646  */
5418      break;
5419  
5420 <  case 379:
5421 < /* Line 1813 of yacc.c  */
5547 < #line 2154 "conf_parser.y"
5420 >  case 425:
5421 > #line 2278 "conf_parser.y" /* yacc.c:1646  */
5422      {
5423    if (conf_parser_ctx.pass == 2)
5424 <    SetConfSSL(yy_conf);
5424 >    block_state.flags.value |= CONF_FLAGS_SSL;
5425   }
5426 + #line 5427 "conf_parser.c" /* yacc.c:1646  */
5427      break;
5428  
5429 <  case 380:
5430 < /* Line 1813 of yacc.c  */
5556 < #line 2160 "conf_parser.y"
5429 >  case 426:
5430 > #line 2284 "conf_parser.y" /* yacc.c:1646  */
5431      {
5432    if (conf_parser_ctx.pass == 2)
5433    {
5434      if (yylval.number)
5435 <      yy_conf->flags |= CONF_FLAGS_ENCRYPTED;
5435 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5436      else
5437 <      yy_conf->flags &= ~CONF_FLAGS_ENCRYPTED;
5437 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5438    }
5439   }
5440 + #line 5441 "conf_parser.c" /* yacc.c:1646  */
5441      break;
5442  
5443 <  case 381:
5444 < /* Line 1813 of yacc.c  */
5570 < #line 2171 "conf_parser.y"
5443 >  case 427:
5444 > #line 2295 "conf_parser.y" /* yacc.c:1646  */
5445      {
5446    if (conf_parser_ctx.pass == 2)
5447 <  {
5574 <    char *mask;
5575 <
5576 <    DupString(mask, yylval.string);
5577 <    dlinkAdd(mask, make_dlink_node(), &yy_conf->hub_list);
5578 <  }
5447 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5448   }
5449 + #line 5450 "conf_parser.c" /* yacc.c:1646  */
5450      break;
5451  
5452 <  case 382:
5453 < /* Line 1813 of yacc.c  */
5584 < #line 2182 "conf_parser.y"
5452 >  case 428:
5453 > #line 2301 "conf_parser.y" /* yacc.c:1646  */
5454      {
5455    if (conf_parser_ctx.pass == 2)
5456 <  {
5588 <    char *mask;
5589 <
5590 <    DupString(mask, yylval.string);
5591 <    dlinkAdd(mask, make_dlink_node(), &yy_conf->leaf_list);
5592 <  }
5456 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5457   }
5458 + #line 5459 "conf_parser.c" /* yacc.c:1646  */
5459      break;
5460  
5461 <  case 383:
5462 < /* Line 1813 of yacc.c  */
5598 < #line 2193 "conf_parser.y"
5461 >  case 429:
5462 > #line 2307 "conf_parser.y" /* yacc.c:1646  */
5463      {
5464    if (conf_parser_ctx.pass == 2)
5465 <  {
5602 <    MyFree(class_name);
5603 <    DupString(class_name, yylval.string);
5604 <  }
5465 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5466   }
5467 + #line 5468 "conf_parser.c" /* yacc.c:1646  */
5468      break;
5469  
5470 <  case 384:
5471 < /* Line 1813 of yacc.c  */
5610 < #line 2202 "conf_parser.y"
5470 >  case 430:
5471 > #line 2313 "conf_parser.y" /* yacc.c:1646  */
5472      {
5473   #ifdef HAVE_LIBCRYPTO
5474    if (conf_parser_ctx.pass == 2)
5475 <  {
5615 <    MyFree(yy_conf->cipher_list);
5616 <    DupString(yy_conf->cipher_list, yylval.string);
5617 <  }
5475 >    strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5476   #else
5477    if (conf_parser_ctx.pass == 2)
5478 <    yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5478 >    conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5479   #endif
5480   }
5481 + #line 5482 "conf_parser.c" /* yacc.c:1646  */
5482      break;
5483  
5484 <  case 385:
5485 < /* Line 1813 of yacc.c  */
5627 < #line 2220 "conf_parser.y"
5484 >  case 431:
5485 > #line 2328 "conf_parser.y" /* yacc.c:1646  */
5486      {
5487    if (conf_parser_ctx.pass == 2)
5488 <  {
5631 <    userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
5632 <    regex_ban = 0;
5633 <  }
5488 >    reset_block_state();
5489   }
5490 + #line 5491 "conf_parser.c" /* yacc.c:1646  */
5491      break;
5492  
5493 <  case 386:
5494 < /* Line 1813 of yacc.c  */
5639 < #line 2227 "conf_parser.y"
5493 >  case 432:
5494 > #line 2332 "conf_parser.y" /* yacc.c:1646  */
5495      {
5496 <  if (conf_parser_ctx.pass == 2)
5642 <  {
5643 <    if (userbuf[0] && hostbuf[0])
5644 <    {
5645 <      if (regex_ban)
5646 <      {
5647 < #ifdef HAVE_LIBPCRE
5648 <        void *exp_user = NULL;
5649 <        void *exp_host = NULL;
5650 <        const char *errptr = NULL;
5651 <
5652 <        if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
5653 <            !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
5654 <        {
5655 <          ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5656 <               errptr);
5657 <          break;
5658 <        }
5659 <
5660 <        yy_conf = conf_make(CONF_RKLINE);
5661 <        yy_conf->regexuser = exp_user;
5662 <        yy_conf->regexhost = exp_host;
5663 <
5664 <        DupString(yy_conf->user, userbuf);
5665 <        DupString(yy_conf->host, hostbuf);
5666 <
5667 <        if (reasonbuf[0])
5668 <          DupString(yy_conf->reason, reasonbuf);
5669 <        else
5670 <          DupString(yy_conf->reason, "No reason");
5671 < #else
5672 <        ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5673 <        break;
5674 < #endif
5675 <      }
5676 <      else
5677 <      {
5678 <        yy_conf = conf_make(CONF_KLINE);
5679 <
5680 <        DupString(yy_conf->user, userbuf);
5681 <        DupString(yy_conf->host, hostbuf);
5682 <
5683 <        if (reasonbuf[0])
5684 <          DupString(yy_conf->reason, reasonbuf);
5685 <        else
5686 <          DupString(yy_conf->reason, "No reason");
5687 <        add_conf_by_address(CONF_KLINE, yy_conf);
5688 <      }
5689 <    }
5496 >  struct MaskItem *conf = NULL;
5497  
5498 <    yy_conf = NULL;
5692 <  }
5693 < }
5498 >  if (conf_parser_ctx.pass != 2)
5499      break;
5500  
5501 <  case 387:
5502 < /* Line 1813 of yacc.c  */
5698 < #line 2283 "conf_parser.y"
5699 <    {
5700 < }
5501 >  if (!block_state.user.buf[0] ||
5502 >      !block_state.host.buf[0])
5503      break;
5504  
5505 <  case 391:
5506 < /* Line 1813 of yacc.c  */
5507 < #line 2288 "conf_parser.y"
5508 <    {
5509 <  if (conf_parser_ctx.pass == 2)
5510 <    regex_ban = 1;
5505 >  conf = conf_make(CONF_KLINE);
5506 >  conf->user = xstrdup(block_state.user.buf);
5507 >  conf->host = xstrdup(block_state.host.buf);
5508 >
5509 >  if (block_state.rpass.buf[0])
5510 >    conf->reason = xstrdup(block_state.rpass.buf);
5511 >  else
5512 >    conf->reason = xstrdup(CONF_NOREASON);
5513 >  add_conf_by_address(CONF_KLINE, conf);
5514   }
5515 + #line 5516 "conf_parser.c" /* yacc.c:1646  */
5516      break;
5517  
5518 <  case 398:
5519 < /* Line 1813 of yacc.c  */
5714 < #line 2297 "conf_parser.y"
5518 >  case 438:
5519 > #line 2357 "conf_parser.y" /* yacc.c:1646  */
5520      {
5521 +
5522    if (conf_parser_ctx.pass == 2)
5523    {
5524      struct split_nuh_item nuh;
5525  
5526      nuh.nuhmask  = yylval.string;
5527      nuh.nickptr  = NULL;
5528 <    nuh.userptr  = userbuf;
5529 <    nuh.hostptr  = hostbuf;
5528 >    nuh.userptr  = block_state.user.buf;
5529 >    nuh.hostptr  = block_state.host.buf;
5530  
5531      nuh.nicksize = 0;
5532 <    nuh.usersize = sizeof(userbuf);
5533 <    nuh.hostsize = sizeof(hostbuf);
5532 >    nuh.usersize = sizeof(block_state.user.buf);
5533 >    nuh.hostsize = sizeof(block_state.host.buf);
5534  
5535      split_nuh(&nuh);
5536    }
5537   }
5538 + #line 5539 "conf_parser.c" /* yacc.c:1646  */
5539      break;
5540  
5541 <  case 399:
5542 < /* Line 1813 of yacc.c  */
5736 < #line 2316 "conf_parser.y"
5541 >  case 439:
5542 > #line 2377 "conf_parser.y" /* yacc.c:1646  */
5543      {
5544    if (conf_parser_ctx.pass == 2)
5545 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5545 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5546   }
5547 + #line 5548 "conf_parser.c" /* yacc.c:1646  */
5548      break;
5549  
5550 <  case 400:
5551 < /* Line 1813 of yacc.c  */
5745 < #line 2325 "conf_parser.y"
5550 >  case 440:
5551 > #line 2386 "conf_parser.y" /* yacc.c:1646  */
5552      {
5553    if (conf_parser_ctx.pass == 2)
5554 <    hostbuf[0] = reasonbuf[0] = '\0';
5554 >    reset_block_state();
5555   }
5556 + #line 5557 "conf_parser.c" /* yacc.c:1646  */
5557      break;
5558  
5559 <  case 401:
5560 < /* Line 1813 of yacc.c  */
5754 < #line 2329 "conf_parser.y"
5559 >  case 441:
5560 > #line 2390 "conf_parser.y" /* yacc.c:1646  */
5561      {
5562 <  if (conf_parser_ctx.pass == 2)
5562 >  struct MaskItem *conf = NULL;
5563 >
5564 >  if (conf_parser_ctx.pass != 2)
5565 >    break;
5566 >
5567 >  if (!block_state.addr.buf[0])
5568 >    break;
5569 >
5570 >  if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5571    {
5572 <    if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5573 <    {
5760 <      yy_conf = conf_make(CONF_DLINE);
5761 <      DupString(yy_conf->host, hostbuf);
5572 >    conf = conf_make(CONF_DLINE);
5573 >    conf->host = xstrdup(block_state.addr.buf);
5574  
5575 <      if (reasonbuf[0])
5576 <        DupString(yy_conf->reason, reasonbuf);
5577 <      else
5578 <        DupString(yy_conf->reason, "No reason");
5579 <      add_conf_by_address(CONF_DLINE, yy_conf);
5768 <      yy_conf = NULL;
5769 <    }
5575 >    if (block_state.rpass.buf[0])
5576 >      conf->reason = xstrdup(block_state.rpass.buf);
5577 >    else
5578 >      conf->reason = xstrdup(CONF_NOREASON);
5579 >    add_conf_by_address(CONF_DLINE, conf);
5580    }
5581   }
5582 + #line 5583 "conf_parser.c" /* yacc.c:1646  */
5583      break;
5584  
5585 <  case 407:
5586 < /* Line 1813 of yacc.c  */
5776 < #line 2351 "conf_parser.y"
5585 >  case 447:
5586 > #line 2416 "conf_parser.y" /* yacc.c:1646  */
5587      {
5588    if (conf_parser_ctx.pass == 2)
5589 <    strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
5589 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5590   }
5591 + #line 5592 "conf_parser.c" /* yacc.c:1646  */
5592      break;
5593  
5594 <  case 408:
5595 < /* Line 1813 of yacc.c  */
5785 < #line 2357 "conf_parser.y"
5594 >  case 448:
5595 > #line 2422 "conf_parser.y" /* yacc.c:1646  */
5596      {
5597    if (conf_parser_ctx.pass == 2)
5598 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5598 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5599   }
5600 + #line 5601 "conf_parser.c" /* yacc.c:1646  */
5601      break;
5602  
5603 <  case 414:
5604 < /* Line 1813 of yacc.c  */
5794 < #line 2371 "conf_parser.y"
5603 >  case 454:
5604 > #line 2436 "conf_parser.y" /* yacc.c:1646  */
5605      {
5606    if (conf_parser_ctx.pass == 2)
5607    {
5608      if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5609      {
5610 <      yy_conf = conf_make(CONF_EXEMPT);
5611 <      DupString(yy_conf->host, yylval.string);
5610 >      struct MaskItem *conf = conf_make(CONF_EXEMPT);
5611 >      conf->host = xstrdup(yylval.string);
5612  
5613 <      add_conf_by_address(CONF_EXEMPT, yy_conf);
5804 <      yy_conf = NULL;
5613 >      add_conf_by_address(CONF_EXEMPT, conf);
5614      }
5615    }
5616   }
5617 + #line 5618 "conf_parser.c" /* yacc.c:1646  */
5618      break;
5619  
5620 <  case 415:
5621 < /* Line 1813 of yacc.c  */
5812 < #line 2389 "conf_parser.y"
5620 >  case 455:
5621 > #line 2453 "conf_parser.y" /* yacc.c:1646  */
5622      {
5623    if (conf_parser_ctx.pass == 2)
5624 <  {
5816 <    regex_ban = 0;
5817 <    reasonbuf[0] = gecos_name[0] = '\0';
5818 <  }
5624 >    reset_block_state();
5625   }
5626 + #line 5627 "conf_parser.c" /* yacc.c:1646  */
5627      break;
5628  
5629 <  case 416:
5630 < /* Line 1813 of yacc.c  */
5824 < #line 2396 "conf_parser.y"
5825 <    {
5826 <  if (conf_parser_ctx.pass == 2)
5827 <  {
5828 <    if (gecos_name[0])
5629 >  case 456:
5630 > #line 2457 "conf_parser.y" /* yacc.c:1646  */
5631      {
5632 <      if (regex_ban)
5831 <      {
5832 < #ifdef HAVE_LIBPCRE
5833 <        void *exp_p = NULL;
5834 <        const char *errptr = NULL;
5835 <
5836 <        if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
5837 <        {
5838 <          ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5839 <               errptr);
5840 <          break;
5841 <        }
5842 <
5843 <        yy_conf = conf_make(CONF_RXLINE);
5844 <        yy_conf->regexuser = exp_p;
5845 < #else
5846 <        ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5847 <        break;
5848 < #endif
5849 <      }
5850 <      else
5851 <        yy_conf = conf_make(CONF_XLINE);
5632 >  struct MaskItem *conf = NULL;
5633  
5634 <      DupString(yy_conf->name, gecos_name);
5634 >  if (conf_parser_ctx.pass != 2)
5635 >    break;
5636  
5637 <      if (reasonbuf[0])
5856 <        DupString(yy_conf->reason, reasonbuf);
5857 <      else
5858 <        DupString(yy_conf->reason, "No reason");
5859 <    }
5860 <  }
5861 < }
5637 >  if (!block_state.name.buf[0])
5638      break;
5639  
5640 <  case 417:
5641 < /* Line 1813 of yacc.c  */
5642 < #line 2435 "conf_parser.y"
5643 <    {
5640 >  conf = conf_make(CONF_XLINE);
5641 >  conf->name = xstrdup(block_state.name.buf);
5642 >
5643 >  if (block_state.rpass.buf[0])
5644 >    conf->reason = xstrdup(block_state.rpass.buf);
5645 >  else
5646 >    conf->reason = xstrdup(CONF_NOREASON);
5647   }
5648 + #line 5649 "conf_parser.c" /* yacc.c:1646  */
5649      break;
5650  
5651 <  case 421:
5652 < /* Line 1813 of yacc.c  */
5873 < #line 2440 "conf_parser.y"
5651 >  case 462:
5652 > #line 2479 "conf_parser.y" /* yacc.c:1646  */
5653      {
5654    if (conf_parser_ctx.pass == 2)
5655 <    regex_ban = 1;
5655 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5656   }
5657 + #line 5658 "conf_parser.c" /* yacc.c:1646  */
5658      break;
5659  
5660 <  case 428:
5661 < /* Line 1813 of yacc.c  */
5882 < #line 2449 "conf_parser.y"
5660 >  case 463:
5661 > #line 2485 "conf_parser.y" /* yacc.c:1646  */
5662      {
5663    if (conf_parser_ctx.pass == 2)
5664 <    strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
5664 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5665   }
5666 + #line 5667 "conf_parser.c" /* yacc.c:1646  */
5667      break;
5668  
5669 <  case 429:
5670 < /* Line 1813 of yacc.c  */
5891 < #line 2455 "conf_parser.y"
5669 >  case 518:
5670 > #line 2551 "conf_parser.y" /* yacc.c:1646  */
5671      {
5672 <  if (conf_parser_ctx.pass == 2)
5894 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5672 >  ConfigFileEntry.max_watch = (yyvsp[-1].number);
5673   }
5674 + #line 5675 "conf_parser.c" /* yacc.c:1646  */
5675      break;
5676  
5677 <  case 483:
5678 < /* Line 1813 of yacc.c  */
5900 < #line 2500 "conf_parser.y"
5677 >  case 519:
5678 > #line 2556 "conf_parser.y" /* yacc.c:1646  */
5679      {
5680 <  ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5680 >  if (conf_parser_ctx.pass == 2)
5681 >    ConfigFileEntry.cycle_on_host_change = yylval.number;
5682   }
5683 + #line 5684 "conf_parser.c" /* yacc.c:1646  */
5684      break;
5685  
5686 <  case 484:
5687 < /* Line 1813 of yacc.c  */
5908 < #line 2505 "conf_parser.y"
5686 >  case 520:
5687 > #line 2562 "conf_parser.y" /* yacc.c:1646  */
5688      {
5689    if (conf_parser_ctx.pass == 2)
5690      ConfigFileEntry.glines = yylval.number;
5691   }
5692 + #line 5693 "conf_parser.c" /* yacc.c:1646  */
5693      break;
5694  
5695 <  case 485:
5696 < /* Line 1813 of yacc.c  */
5917 < #line 2511 "conf_parser.y"
5695 >  case 521:
5696 > #line 2568 "conf_parser.y" /* yacc.c:1646  */
5697      {
5698    if (conf_parser_ctx.pass == 2)
5699 <    ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5699 >    ConfigFileEntry.gline_time = (yyvsp[-1].number);
5700   }
5701 + #line 5702 "conf_parser.c" /* yacc.c:1646  */
5702      break;
5703  
5704 <  case 486:
5705 < /* Line 1813 of yacc.c  */
5926 < #line 2517 "conf_parser.y"
5704 >  case 522:
5705 > #line 2574 "conf_parser.y" /* yacc.c:1646  */
5706      {
5707    if (conf_parser_ctx.pass == 2)
5708 <    ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5708 >    ConfigFileEntry.gline_request_time = (yyvsp[-1].number);
5709   }
5710 + #line 5711 "conf_parser.c" /* yacc.c:1646  */
5711      break;
5712  
5713 <  case 487:
5714 < /* Line 1813 of yacc.c  */
5935 < #line 2523 "conf_parser.y"
5713 >  case 523:
5714 > #line 2580 "conf_parser.y" /* yacc.c:1646  */
5715      {
5716 <  ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5716 >  ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5717   }
5718 + #line 5719 "conf_parser.c" /* yacc.c:1646  */
5719      break;
5720  
5721 <  case 488:
5722 < /* Line 1813 of yacc.c  */
5943 < #line 2528 "conf_parser.y"
5721 >  case 524:
5722 > #line 2585 "conf_parser.y" /* yacc.c:1646  */
5723      {
5724 <  ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5724 >  ConfigFileEntry.gline_min_cidr6 = (yyvsp[-1].number);
5725   }
5726 + #line 5727 "conf_parser.c" /* yacc.c:1646  */
5727      break;
5728  
5729 <  case 489:
5730 < /* Line 1813 of yacc.c  */
5951 < #line 2533 "conf_parser.y"
5729 >  case 525:
5730 > #line 2590 "conf_parser.y" /* yacc.c:1646  */
5731      {
5732    ConfigFileEntry.tkline_expire_notices = yylval.number;
5733   }
5734 + #line 5735 "conf_parser.c" /* yacc.c:1646  */
5735      break;
5736  
5737 <  case 490:
5738 < /* Line 1813 of yacc.c  */
5959 < #line 2538 "conf_parser.y"
5737 >  case 526:
5738 > #line 2595 "conf_parser.y" /* yacc.c:1646  */
5739      {
5740 <  ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5740 >  ConfigFileEntry.kill_chase_time_limit = (yyvsp[-1].number);
5741   }
5742 + #line 5743 "conf_parser.c" /* yacc.c:1646  */
5743      break;
5744  
5745 <  case 491:
5746 < /* Line 1813 of yacc.c  */
5967 < #line 2543 "conf_parser.y"
5745 >  case 527:
5746 > #line 2600 "conf_parser.y" /* yacc.c:1646  */
5747      {
5748    ConfigFileEntry.hide_spoof_ips = yylval.number;
5749   }
5750 + #line 5751 "conf_parser.c" /* yacc.c:1646  */
5751      break;
5752  
5753 <  case 492:
5754 < /* Line 1813 of yacc.c  */
5975 < #line 2548 "conf_parser.y"
5753 >  case 528:
5754 > #line 2605 "conf_parser.y" /* yacc.c:1646  */
5755      {
5756    ConfigFileEntry.ignore_bogus_ts = yylval.number;
5757   }
5758 + #line 5759 "conf_parser.c" /* yacc.c:1646  */
5759      break;
5760  
5761 <  case 493:
5762 < /* Line 1813 of yacc.c  */
5983 < #line 2553 "conf_parser.y"
5984 <    {
5985 <  ConfigFileEntry.disable_remote = yylval.number;
5986 < }
5987 <    break;
5988 <
5989 <  case 494:
5990 < /* Line 1813 of yacc.c  */
5991 < #line 2558 "conf_parser.y"
5761 >  case 529:
5762 > #line 2610 "conf_parser.y" /* yacc.c:1646  */
5763      {
5764    ConfigFileEntry.failed_oper_notice = yylval.number;
5765   }
5766 + #line 5767 "conf_parser.c" /* yacc.c:1646  */
5767      break;
5768  
5769 <  case 495:
5770 < /* Line 1813 of yacc.c  */
5999 < #line 2563 "conf_parser.y"
5769 >  case 530:
5770 > #line 2615 "conf_parser.y" /* yacc.c:1646  */
5771      {
5772    ConfigFileEntry.anti_nick_flood = yylval.number;
5773   }
5774 + #line 5775 "conf_parser.c" /* yacc.c:1646  */
5775      break;
5776  
5777 <  case 496:
5778 < /* Line 1813 of yacc.c  */
6007 < #line 2568 "conf_parser.y"
5777 >  case 531:
5778 > #line 2620 "conf_parser.y" /* yacc.c:1646  */
5779      {
5780 <  ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5780 >  ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5781   }
5782 + #line 5783 "conf_parser.c" /* yacc.c:1646  */
5783      break;
5784  
5785 <  case 497:
5786 < /* Line 1813 of yacc.c  */
6015 < #line 2573 "conf_parser.y"
5785 >  case 532:
5786 > #line 2625 "conf_parser.y" /* yacc.c:1646  */
5787      {
5788 <  ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5788 >  ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5789   }
5790 + #line 5791 "conf_parser.c" /* yacc.c:1646  */
5791      break;
5792  
5793 <  case 498:
5794 < /* Line 1813 of yacc.c  */
6023 < #line 2578 "conf_parser.y"
5793 >  case 533:
5794 > #line 2630 "conf_parser.y" /* yacc.c:1646  */
5795      {
5796 <  ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5796 >  ConfigFileEntry.max_accept = (yyvsp[-1].number);
5797   }
5798 + #line 5799 "conf_parser.c" /* yacc.c:1646  */
5799      break;
5800  
5801 <  case 499:
5802 < /* Line 1813 of yacc.c  */
6031 < #line 2583 "conf_parser.y"
5801 >  case 534:
5802 > #line 2635 "conf_parser.y" /* yacc.c:1646  */
5803      {
5804 <  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5804 >  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[-1].number);
5805   }
5806 + #line 5807 "conf_parser.c" /* yacc.c:1646  */
5807      break;
5808  
5809 <  case 500:
5810 < /* Line 1813 of yacc.c  */
6039 < #line 2588 "conf_parser.y"
5809 >  case 535:
5810 > #line 2640 "conf_parser.y" /* yacc.c:1646  */
5811      {
5812 <  ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5812 >  ConfigFileEntry.ts_warn_delta = (yyvsp[-1].number);
5813   }
5814 + #line 5815 "conf_parser.c" /* yacc.c:1646  */
5815      break;
5816  
5817 <  case 501:
5818 < /* Line 1813 of yacc.c  */
6047 < #line 2593 "conf_parser.y"
5817 >  case 536:
5818 > #line 2645 "conf_parser.y" /* yacc.c:1646  */
5819      {
5820    if (conf_parser_ctx.pass == 2)
5821 <    ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5821 >    ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5822   }
5823 + #line 5824 "conf_parser.c" /* yacc.c:1646  */
5824      break;
5825  
5826 <  case 502:
5827 < /* Line 1813 of yacc.c  */
6056 < #line 2599 "conf_parser.y"
5826 >  case 537:
5827 > #line 2651 "conf_parser.y" /* yacc.c:1646  */
5828      {
5829 <  if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5829 >  if (((yyvsp[-1].number) > 0) && conf_parser_ctx.pass == 1)
5830    {
5831      ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5832      ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
# Line 6063 | Line 5834 | yyreduce:
5834      exit(0);
5835    }
5836   }
5837 + #line 5838 "conf_parser.c" /* yacc.c:1646  */
5838      break;
5839  
5840 <  case 503:
5841 < /* Line 1813 of yacc.c  */
6070 < #line 2610 "conf_parser.y"
5840 >  case 538:
5841 > #line 2662 "conf_parser.y" /* yacc.c:1646  */
5842      {
5843    ConfigFileEntry.invisible_on_connect = yylval.number;
5844   }
5845 + #line 5846 "conf_parser.c" /* yacc.c:1646  */
5846      break;
5847  
5848 <  case 504:
5849 < /* Line 1813 of yacc.c  */
6078 < #line 2615 "conf_parser.y"
5848 >  case 539:
5849 > #line 2667 "conf_parser.y" /* yacc.c:1646  */
5850      {
5851 <  ConfigFileEntry.warn_no_nline = yylval.number;
5851 >  ConfigFileEntry.warn_no_connect_block = yylval.number;
5852   }
5853 + #line 5854 "conf_parser.c" /* yacc.c:1646  */
5854      break;
5855  
5856 <  case 505:
5857 < /* Line 1813 of yacc.c  */
6086 < #line 2620 "conf_parser.y"
5856 >  case 540:
5857 > #line 2672 "conf_parser.y" /* yacc.c:1646  */
5858      {
5859    ConfigFileEntry.stats_e_disabled = yylval.number;
5860   }
5861 + #line 5862 "conf_parser.c" /* yacc.c:1646  */
5862      break;
5863  
5864 <  case 506:
5865 < /* Line 1813 of yacc.c  */
6094 < #line 2625 "conf_parser.y"
5864 >  case 541:
5865 > #line 2677 "conf_parser.y" /* yacc.c:1646  */
5866      {
5867    ConfigFileEntry.stats_o_oper_only = yylval.number;
5868   }
5869 + #line 5870 "conf_parser.c" /* yacc.c:1646  */
5870      break;
5871  
5872 <  case 507:
5873 < /* Line 1813 of yacc.c  */
6102 < #line 2630 "conf_parser.y"
5872 >  case 542:
5873 > #line 2682 "conf_parser.y" /* yacc.c:1646  */
5874      {
5875    ConfigFileEntry.stats_P_oper_only = yylval.number;
5876   }
5877 + #line 5878 "conf_parser.c" /* yacc.c:1646  */
5878 +    break;
5879 +
5880 +  case 543:
5881 + #line 2687 "conf_parser.y" /* yacc.c:1646  */
5882 +    {
5883 +  ConfigFileEntry.stats_u_oper_only = yylval.number;
5884 + }
5885 + #line 5886 "conf_parser.c" /* yacc.c:1646  */
5886      break;
5887  
5888 <  case 508:
5889 < /* Line 1813 of yacc.c  */
6110 < #line 2635 "conf_parser.y"
5888 >  case 544:
5889 > #line 2692 "conf_parser.y" /* yacc.c:1646  */
5890      {
5891    ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5892   }
5893 + #line 5894 "conf_parser.c" /* yacc.c:1646  */
5894      break;
5895  
5896 <  case 509:
5897 < /* Line 1813 of yacc.c  */
6118 < #line 2638 "conf_parser.y"
5896 >  case 545:
5897 > #line 2695 "conf_parser.y" /* yacc.c:1646  */
5898      {
5899    ConfigFileEntry.stats_k_oper_only = 1;
5900   }
5901 + #line 5902 "conf_parser.c" /* yacc.c:1646  */
5902      break;
5903  
5904 <  case 510:
5905 < /* Line 1813 of yacc.c  */
6126 < #line 2643 "conf_parser.y"
5904 >  case 546:
5905 > #line 2700 "conf_parser.y" /* yacc.c:1646  */
5906      {
5907    ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5908   }
5909 + #line 5910 "conf_parser.c" /* yacc.c:1646  */
5910      break;
5911  
5912 <  case 511:
5913 < /* Line 1813 of yacc.c  */
6134 < #line 2646 "conf_parser.y"
5912 >  case 547:
5913 > #line 2703 "conf_parser.y" /* yacc.c:1646  */
5914      {
5915    ConfigFileEntry.stats_i_oper_only = 1;
5916   }
5917 + #line 5918 "conf_parser.c" /* yacc.c:1646  */
5918      break;
5919  
5920 <  case 512:
5921 < /* Line 1813 of yacc.c  */
6142 < #line 2651 "conf_parser.y"
5920 >  case 548:
5921 > #line 2708 "conf_parser.y" /* yacc.c:1646  */
5922      {
5923 <  ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5923 >  ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5924   }
5925 + #line 5926 "conf_parser.c" /* yacc.c:1646  */
5926      break;
5927  
5928 <  case 513:
5929 < /* Line 1813 of yacc.c  */
6150 < #line 2656 "conf_parser.y"
5928 >  case 549:
5929 > #line 2713 "conf_parser.y" /* yacc.c:1646  */
5930      {
5931 <  ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5931 >  ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5932   }
5933 + #line 5934 "conf_parser.c" /* yacc.c:1646  */
5934      break;
5935  
5936 <  case 514:
5937 < /* Line 1813 of yacc.c  */
6158 < #line 2661 "conf_parser.y"
5936 >  case 550:
5937 > #line 2718 "conf_parser.y" /* yacc.c:1646  */
5938      {
5939    ConfigFileEntry.opers_bypass_callerid = yylval.number;
5940   }
5941 + #line 5942 "conf_parser.c" /* yacc.c:1646  */
5942      break;
5943  
5944 <  case 515:
5945 < /* Line 1813 of yacc.c  */
6166 < #line 2666 "conf_parser.y"
5944 >  case 551:
5945 > #line 2723 "conf_parser.y" /* yacc.c:1646  */
5946      {
5947 <  ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5947 >  ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5948   }
5949 + #line 5950 "conf_parser.c" /* yacc.c:1646  */
5950      break;
5951  
5952 <  case 516:
5953 < /* Line 1813 of yacc.c  */
6174 < #line 2671 "conf_parser.y"
5952 >  case 552:
5953 > #line 2728 "conf_parser.y" /* yacc.c:1646  */
5954      {
5955    ConfigFileEntry.short_motd = yylval.number;
5956   }
5957 + #line 5958 "conf_parser.c" /* yacc.c:1646  */
5958      break;
5959  
5960 <  case 517:
5961 < /* Line 1813 of yacc.c  */
6182 < #line 2676 "conf_parser.y"
5960 >  case 553:
5961 > #line 2733 "conf_parser.y" /* yacc.c:1646  */
5962      {
5963    ConfigFileEntry.no_oper_flood = yylval.number;
5964   }
5965 + #line 5966 "conf_parser.c" /* yacc.c:1646  */
5966      break;
5967  
5968 <  case 518:
5969 < /* Line 1813 of yacc.c  */
6190 < #line 2681 "conf_parser.y"
5968 >  case 554:
5969 > #line 2738 "conf_parser.y" /* yacc.c:1646  */
5970      {
5971    ConfigFileEntry.true_no_oper_flood = yylval.number;
5972   }
5973 + #line 5974 "conf_parser.c" /* yacc.c:1646  */
5974      break;
5975  
5976 <  case 519:
5977 < /* Line 1813 of yacc.c  */
6198 < #line 2686 "conf_parser.y"
5976 >  case 555:
5977 > #line 2743 "conf_parser.y" /* yacc.c:1646  */
5978      {
5979    ConfigFileEntry.oper_pass_resv = yylval.number;
5980   }
5981 + #line 5982 "conf_parser.c" /* yacc.c:1646  */
5982      break;
5983  
5984 <  case 520:
5985 < /* Line 1813 of yacc.c  */
6206 < #line 2691 "conf_parser.y"
6207 <    {
6208 <  if (conf_parser_ctx.pass == 2)
6209 <  {
6210 <    if (strlen(yylval.string) > LOCALE_LENGTH-2)
6211 <      yylval.string[LOCALE_LENGTH-1] = '\0';
6212 <
6213 <    set_locale(yylval.string);
6214 <  }
6215 < }
6216 <    break;
6217 <
6218 <  case 521:
6219 < /* Line 1813 of yacc.c  */
6220 < #line 2702 "conf_parser.y"
5984 >  case 556:
5985 > #line 2748 "conf_parser.y" /* yacc.c:1646  */
5986      {
5987 <  ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
5987 >  ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5988   }
5989 + #line 5990 "conf_parser.c" /* yacc.c:1646  */
5990      break;
5991  
5992 <  case 522:
5993 < /* Line 1813 of yacc.c  */
6228 < #line 2707 "conf_parser.y"
5992 >  case 557:
5993 > #line 2753 "conf_parser.y" /* yacc.c:1646  */
5994      {
5995 <  ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5995 >  ConfigFileEntry.max_targets = (yyvsp[-1].number);
5996   }
5997 + #line 5998 "conf_parser.c" /* yacc.c:1646  */
5998      break;
5999  
6000 <  case 523:
6001 < /* Line 1813 of yacc.c  */
6236 < #line 2712 "conf_parser.y"
6000 >  case 558:
6001 > #line 2758 "conf_parser.y" /* yacc.c:1646  */
6002      {
6003    ConfigFileEntry.use_egd = yylval.number;
6004   }
6005 + #line 6006 "conf_parser.c" /* yacc.c:1646  */
6006      break;
6007  
6008 <  case 524:
6009 < /* Line 1813 of yacc.c  */
6244 < #line 2717 "conf_parser.y"
6008 >  case 559:
6009 > #line 2763 "conf_parser.y" /* yacc.c:1646  */
6010      {
6011    if (conf_parser_ctx.pass == 2)
6012    {
6013      MyFree(ConfigFileEntry.egdpool_path);
6014 <    DupString(ConfigFileEntry.egdpool_path, yylval.string);
6014 >    ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6015    }
6016   }
6017 + #line 6018 "conf_parser.c" /* yacc.c:1646  */
6018      break;
6019  
6020 <  case 525:
6021 < /* Line 1813 of yacc.c  */
6256 < #line 2726 "conf_parser.y"
6020 >  case 560:
6021 > #line 2772 "conf_parser.y" /* yacc.c:1646  */
6022      {
6023    if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6024    {
6025      MyFree(ConfigFileEntry.service_name);
6026 <    DupString(ConfigFileEntry.service_name, yylval.string);
6026 >    ConfigFileEntry.service_name = xstrdup(yylval.string);
6027    }
6028   }
6029 + #line 6030 "conf_parser.c" /* yacc.c:1646  */
6030      break;
6031  
6032 <  case 526:
6033 < /* Line 1813 of yacc.c  */
6268 < #line 2735 "conf_parser.y"
6032 >  case 561:
6033 > #line 2781 "conf_parser.y" /* yacc.c:1646  */
6034      {
6035    ConfigFileEntry.ping_cookie = yylval.number;
6036   }
6037 + #line 6038 "conf_parser.c" /* yacc.c:1646  */
6038      break;
6039  
6040 <  case 527:
6041 < /* Line 1813 of yacc.c  */
6276 < #line 2740 "conf_parser.y"
6040 >  case 562:
6041 > #line 2786 "conf_parser.y" /* yacc.c:1646  */
6042      {
6043    ConfigFileEntry.disable_auth = yylval.number;
6044   }
6045 + #line 6046 "conf_parser.c" /* yacc.c:1646  */
6046      break;
6047  
6048 <  case 528:
6049 < /* Line 1813 of yacc.c  */
6284 < #line 2745 "conf_parser.y"
6048 >  case 563:
6049 > #line 2791 "conf_parser.y" /* yacc.c:1646  */
6050      {
6051 <  ConfigFileEntry.throttle_time = yylval.number;
6051 >  ConfigFileEntry.throttle_count = (yyvsp[-1].number);
6052   }
6053 + #line 6054 "conf_parser.c" /* yacc.c:1646  */
6054      break;
6055  
6056 <  case 529:
6057 < /* Line 1813 of yacc.c  */
6292 < #line 2750 "conf_parser.y"
6056 >  case 564:
6057 > #line 2796 "conf_parser.y" /* yacc.c:1646  */
6058      {
6059 <  ConfigFileEntry.oper_umodes = 0;
6059 >  ConfigFileEntry.throttle_time = (yyvsp[-1].number);
6060   }
6061 + #line 6062 "conf_parser.c" /* yacc.c:1646  */
6062      break;
6063  
6064 <  case 533:
6065 < /* Line 1813 of yacc.c  */
6300 < #line 2756 "conf_parser.y"
6064 >  case 565:
6065 > #line 2801 "conf_parser.y" /* yacc.c:1646  */
6066      {
6067 <  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6067 >  ConfigFileEntry.oper_umodes = 0;
6068   }
6069 + #line 6070 "conf_parser.c" /* yacc.c:1646  */
6070      break;
6071  
6072 <  case 534:
6073 < /* Line 1813 of yacc.c  */
6308 < #line 2759 "conf_parser.y"
6072 >  case 569:
6073 > #line 2807 "conf_parser.y" /* yacc.c:1646  */
6074      {
6075 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6075 >  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6076   }
6077 + #line 6078 "conf_parser.c" /* yacc.c:1646  */
6078      break;
6079  
6080 <  case 535:
6081 < /* Line 1813 of yacc.c  */
6316 < #line 2762 "conf_parser.y"
6080 >  case 570:
6081 > #line 2810 "conf_parser.y" /* yacc.c:1646  */
6082      {
6083 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6083 >  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6084   }
6085 + #line 6086 "conf_parser.c" /* yacc.c:1646  */
6086      break;
6087  
6088 <  case 536:
6089 < /* Line 1813 of yacc.c  */
6324 < #line 2765 "conf_parser.y"
6088 >  case 571:
6089 > #line 2813 "conf_parser.y" /* yacc.c:1646  */
6090      {
6091    ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6092   }
6093 + #line 6094 "conf_parser.c" /* yacc.c:1646  */
6094      break;
6095  
6096 <  case 537:
6097 < /* Line 1813 of yacc.c  */
6332 < #line 2768 "conf_parser.y"
6096 >  case 572:
6097 > #line 2816 "conf_parser.y" /* yacc.c:1646  */
6098      {
6099    ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6100   }
6101 + #line 6102 "conf_parser.c" /* yacc.c:1646  */
6102      break;
6103  
6104 <  case 538:
6105 < /* Line 1813 of yacc.c  */
6340 < #line 2771 "conf_parser.y"
6104 >  case 573:
6105 > #line 2819 "conf_parser.y" /* yacc.c:1646  */
6106      {
6107    ConfigFileEntry.oper_umodes |= UMODE_FULL;
6108   }
6109 + #line 6110 "conf_parser.c" /* yacc.c:1646  */
6110      break;
6111  
6112 <  case 539:
6113 < /* Line 1813 of yacc.c  */
6348 < #line 2774 "conf_parser.y"
6112 >  case 574:
6113 > #line 2822 "conf_parser.y" /* yacc.c:1646  */
6114      {
6115    ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6116   }
6117 + #line 6118 "conf_parser.c" /* yacc.c:1646  */
6118      break;
6119  
6120 <  case 540:
6121 < /* Line 1813 of yacc.c  */
6122 < #line 2777 "conf_parser.y"
6120 >  case 575:
6121 > #line 2825 "conf_parser.y" /* yacc.c:1646  */
6122 >    {
6123 >  ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6124 > }
6125 > #line 6126 "conf_parser.c" /* yacc.c:1646  */
6126 >    break;
6127 >
6128 >  case 576:
6129 > #line 2828 "conf_parser.y" /* yacc.c:1646  */
6130 >    {
6131 >  ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6132 > }
6133 > #line 6134 "conf_parser.c" /* yacc.c:1646  */
6134 >    break;
6135 >
6136 >  case 577:
6137 > #line 2831 "conf_parser.y" /* yacc.c:1646  */
6138      {
6139    ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6140   }
6141 + #line 6142 "conf_parser.c" /* yacc.c:1646  */
6142      break;
6143  
6144 <  case 541:
6145 < /* Line 1813 of yacc.c  */
6364 < #line 2780 "conf_parser.y"
6144 >  case 578:
6145 > #line 2834 "conf_parser.y" /* yacc.c:1646  */
6146      {
6147    ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6148   }
6149 + #line 6150 "conf_parser.c" /* yacc.c:1646  */
6150      break;
6151  
6152 <  case 542:
6153 < /* Line 1813 of yacc.c  */
6372 < #line 2783 "conf_parser.y"
6152 >  case 579:
6153 > #line 2837 "conf_parser.y" /* yacc.c:1646  */
6154      {
6155    ConfigFileEntry.oper_umodes |= UMODE_REJ;
6156   }
6157 + #line 6158 "conf_parser.c" /* yacc.c:1646  */
6158      break;
6159  
6160 <  case 543:
6161 < /* Line 1813 of yacc.c  */
6380 < #line 2786 "conf_parser.y"
6160 >  case 580:
6161 > #line 2840 "conf_parser.y" /* yacc.c:1646  */
6162      {
6163    ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6164   }
6165 + #line 6166 "conf_parser.c" /* yacc.c:1646  */
6166      break;
6167  
6168 <  case 544:
6169 < /* Line 1813 of yacc.c  */
6388 < #line 2789 "conf_parser.y"
6168 >  case 581:
6169 > #line 2843 "conf_parser.y" /* yacc.c:1646  */
6170      {
6171    ConfigFileEntry.oper_umodes |= UMODE_SPY;
6172   }
6173 + #line 6174 "conf_parser.c" /* yacc.c:1646  */
6174      break;
6175  
6176 <  case 545:
6177 < /* Line 1813 of yacc.c  */
6396 < #line 2792 "conf_parser.y"
6176 >  case 582:
6177 > #line 2846 "conf_parser.y" /* yacc.c:1646  */
6178      {
6179    ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6180   }
6181 + #line 6182 "conf_parser.c" /* yacc.c:1646  */
6182      break;
6183  
6184 <  case 546:
6185 < /* Line 1813 of yacc.c  */
6404 < #line 2795 "conf_parser.y"
6405 <    {
6406 <  ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6407 < }
6408 <    break;
6409 <
6410 <  case 547:
6411 < /* Line 1813 of yacc.c  */
6412 < #line 2798 "conf_parser.y"
6184 >  case 583:
6185 > #line 2849 "conf_parser.y" /* yacc.c:1646  */
6186      {
6187    ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6188   }
6189 + #line 6190 "conf_parser.c" /* yacc.c:1646  */
6190      break;
6191  
6192 <  case 548:
6193 < /* Line 1813 of yacc.c  */
6420 < #line 2801 "conf_parser.y"
6192 >  case 584:
6193 > #line 2852 "conf_parser.y" /* yacc.c:1646  */
6194      {
6195    ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6196   }
6197 + #line 6198 "conf_parser.c" /* yacc.c:1646  */
6198      break;
6199  
6200 <  case 549:
6201 < /* Line 1813 of yacc.c  */
6428 < #line 2804 "conf_parser.y"
6200 >  case 585:
6201 > #line 2855 "conf_parser.y" /* yacc.c:1646  */
6202      {
6203    ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6204   }
6205 + #line 6206 "conf_parser.c" /* yacc.c:1646  */
6206      break;
6207  
6208 <  case 550:
6209 < /* Line 1813 of yacc.c  */
6436 < #line 2807 "conf_parser.y"
6208 >  case 586:
6209 > #line 2858 "conf_parser.y" /* yacc.c:1646  */
6210      {
6211    ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6212   }
6213 + #line 6214 "conf_parser.c" /* yacc.c:1646  */
6214      break;
6215  
6216 <  case 551:
6217 < /* Line 1813 of yacc.c  */
6444 < #line 2810 "conf_parser.y"
6216 >  case 587:
6217 > #line 2861 "conf_parser.y" /* yacc.c:1646  */
6218      {
6219    ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6220   }
6221 + #line 6222 "conf_parser.c" /* yacc.c:1646  */
6222      break;
6223  
6224 <  case 552:
6225 < /* Line 1813 of yacc.c  */
6452 < #line 2813 "conf_parser.y"
6224 >  case 588:
6225 > #line 2864 "conf_parser.y" /* yacc.c:1646  */
6226      {
6227    ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6228   }
6229 + #line 6230 "conf_parser.c" /* yacc.c:1646  */
6230      break;
6231  
6232 <  case 553:
6233 < /* Line 1813 of yacc.c  */
6460 < #line 2818 "conf_parser.y"
6232 >  case 589:
6233 > #line 2867 "conf_parser.y" /* yacc.c:1646  */
6234      {
6235 <  ConfigFileEntry.oper_only_umodes = 0;
6235 >  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6236   }
6237 + #line 6238 "conf_parser.c" /* yacc.c:1646  */
6238      break;
6239  
6240 <  case 557:
6241 < /* Line 1813 of yacc.c  */
6468 < #line 2824 "conf_parser.y"
6240 >  case 590:
6241 > #line 2870 "conf_parser.y" /* yacc.c:1646  */
6242      {
6243 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6243 >  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6244   }
6245 + #line 6246 "conf_parser.c" /* yacc.c:1646  */
6246      break;
6247  
6248 <  case 558:
6249 < /* Line 1813 of yacc.c  */
6476 < #line 2827 "conf_parser.y"
6248 >  case 591:
6249 > #line 2875 "conf_parser.y" /* yacc.c:1646  */
6250      {
6251 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6251 >  ConfigFileEntry.oper_only_umodes = 0;
6252   }
6253 + #line 6254 "conf_parser.c" /* yacc.c:1646  */
6254      break;
6255  
6256 <  case 559:
6257 < /* Line 1813 of yacc.c  */
6258 < #line 2830 "conf_parser.y"
6256 >  case 595:
6257 > #line 2881 "conf_parser.y" /* yacc.c:1646  */
6258 >    {
6259 >  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6260 > }
6261 > #line 6262 "conf_parser.c" /* yacc.c:1646  */
6262 >    break;
6263 >
6264 >  case 596:
6265 > #line 2884 "conf_parser.y" /* yacc.c:1646  */
6266      {
6267 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6267 >  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6268   }
6269 + #line 6270 "conf_parser.c" /* yacc.c:1646  */
6270      break;
6271  
6272 <  case 560:
6273 < /* Line 1813 of yacc.c  */
6492 < #line 2833 "conf_parser.y"
6272 >  case 597:
6273 > #line 2887 "conf_parser.y" /* yacc.c:1646  */
6274      {
6275    ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6276   }
6277 + #line 6278 "conf_parser.c" /* yacc.c:1646  */
6278      break;
6279  
6280 <  case 561:
6281 < /* Line 1813 of yacc.c  */
6500 < #line 2836 "conf_parser.y"
6280 >  case 598:
6281 > #line 2890 "conf_parser.y" /* yacc.c:1646  */
6282      {
6283    ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6284   }
6285 + #line 6286 "conf_parser.c" /* yacc.c:1646  */
6286      break;
6287  
6288 <  case 562:
6289 < /* Line 1813 of yacc.c  */
6290 < #line 2839 "conf_parser.y"
6509 <    {
6288 >  case 599:
6289 > #line 2893 "conf_parser.y" /* yacc.c:1646  */
6290 >    {
6291    ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6292   }
6293 + #line 6294 "conf_parser.c" /* yacc.c:1646  */
6294      break;
6295  
6296 <  case 563:
6297 < /* Line 1813 of yacc.c  */
6516 < #line 2842 "conf_parser.y"
6296 >  case 600:
6297 > #line 2896 "conf_parser.y" /* yacc.c:1646  */
6298      {
6299    ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6300   }
6301 + #line 6302 "conf_parser.c" /* yacc.c:1646  */
6302      break;
6303  
6304 <  case 564:
6305 < /* Line 1813 of yacc.c  */
6524 < #line 2845 "conf_parser.y"
6304 >  case 601:
6305 > #line 2899 "conf_parser.y" /* yacc.c:1646  */
6306      {
6307    ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6308   }
6309 + #line 6310 "conf_parser.c" /* yacc.c:1646  */
6310      break;
6311  
6312 <  case 565:
6313 < /* Line 1813 of yacc.c  */
6532 < #line 2848 "conf_parser.y"
6312 >  case 602:
6313 > #line 2902 "conf_parser.y" /* yacc.c:1646  */
6314      {
6315    ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6316   }
6317 + #line 6318 "conf_parser.c" /* yacc.c:1646  */
6318      break;
6319  
6320 <  case 566:
6321 < /* Line 1813 of yacc.c  */
6540 < #line 2851 "conf_parser.y"
6320 >  case 603:
6321 > #line 2905 "conf_parser.y" /* yacc.c:1646  */
6322      {
6323    ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6324   }
6325 + #line 6326 "conf_parser.c" /* yacc.c:1646  */
6326      break;
6327  
6328 <  case 567:
6329 < /* Line 1813 of yacc.c  */
6548 < #line 2854 "conf_parser.y"
6328 >  case 604:
6329 > #line 2908 "conf_parser.y" /* yacc.c:1646  */
6330      {
6331    ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6332   }
6333 + #line 6334 "conf_parser.c" /* yacc.c:1646  */
6334      break;
6335  
6336 <  case 568:
6337 < /* Line 1813 of yacc.c  */
6556 < #line 2857 "conf_parser.y"
6336 >  case 605:
6337 > #line 2911 "conf_parser.y" /* yacc.c:1646  */
6338      {
6339    ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6340   }
6341 + #line 6342 "conf_parser.c" /* yacc.c:1646  */
6342      break;
6343  
6344 <  case 569:
6345 < /* Line 1813 of yacc.c  */
6564 < #line 2860 "conf_parser.y"
6344 >  case 606:
6345 > #line 2914 "conf_parser.y" /* yacc.c:1646  */
6346      {
6347    ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6348   }
6349 + #line 6350 "conf_parser.c" /* yacc.c:1646  */
6350      break;
6351  
6352 <  case 570:
6353 < /* Line 1813 of yacc.c  */
6572 < #line 2863 "conf_parser.y"
6573 <    {
6574 <  ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6575 < }
6576 <    break;
6577 <
6578 <  case 571:
6579 < /* Line 1813 of yacc.c  */
6580 < #line 2866 "conf_parser.y"
6352 >  case 607:
6353 > #line 2917 "conf_parser.y" /* yacc.c:1646  */
6354      {
6355    ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6356   }
6357 + #line 6358 "conf_parser.c" /* yacc.c:1646  */
6358      break;
6359  
6360 <  case 572:
6361 < /* Line 1813 of yacc.c  */
6588 < #line 2869 "conf_parser.y"
6360 >  case 608:
6361 > #line 2920 "conf_parser.y" /* yacc.c:1646  */
6362      {
6363    ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6364   }
6365 + #line 6366 "conf_parser.c" /* yacc.c:1646  */
6366      break;
6367  
6368 <  case 573:
6369 < /* Line 1813 of yacc.c  */
6596 < #line 2872 "conf_parser.y"
6368 >  case 609:
6369 > #line 2923 "conf_parser.y" /* yacc.c:1646  */
6370      {
6371    ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6372   }
6373 + #line 6374 "conf_parser.c" /* yacc.c:1646  */
6374      break;
6375  
6376 <  case 574:
6377 < /* Line 1813 of yacc.c  */
6604 < #line 2875 "conf_parser.y"
6376 >  case 610:
6377 > #line 2926 "conf_parser.y" /* yacc.c:1646  */
6378      {
6379    ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6380   }
6381 + #line 6382 "conf_parser.c" /* yacc.c:1646  */
6382      break;
6383  
6384 <  case 575:
6385 < /* Line 1813 of yacc.c  */
6612 < #line 2878 "conf_parser.y"
6384 >  case 611:
6385 > #line 2929 "conf_parser.y" /* yacc.c:1646  */
6386      {
6387    ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6388   }
6389 + #line 6390 "conf_parser.c" /* yacc.c:1646  */
6390      break;
6391  
6392 <  case 576:
6393 < /* Line 1813 of yacc.c  */
6620 < #line 2881 "conf_parser.y"
6392 >  case 612:
6393 > #line 2932 "conf_parser.y" /* yacc.c:1646  */
6394      {
6395    ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6396   }
6397 + #line 6398 "conf_parser.c" /* yacc.c:1646  */
6398      break;
6399  
6400 <  case 577:
6401 < /* Line 1813 of yacc.c  */
6628 < #line 2886 "conf_parser.y"
6400 >  case 613:
6401 > #line 2935 "conf_parser.y" /* yacc.c:1646  */
6402      {
6403 <  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6403 >  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6404   }
6405 + #line 6406 "conf_parser.c" /* yacc.c:1646  */
6406      break;
6407  
6408 <  case 578:
6409 < /* Line 1813 of yacc.c  */
6636 < #line 2891 "conf_parser.y"
6408 >  case 614:
6409 > #line 2938 "conf_parser.y" /* yacc.c:1646  */
6410      {
6411 <  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6411 >  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6412   }
6413 + #line 6414 "conf_parser.c" /* yacc.c:1646  */
6414      break;
6415  
6416 <  case 579:
6417 < /* Line 1813 of yacc.c  */
6644 < #line 2896 "conf_parser.y"
6416 >  case 615:
6417 > #line 2943 "conf_parser.y" /* yacc.c:1646  */
6418      {
6419 <  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6419 >  ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6420   }
6421 + #line 6422 "conf_parser.c" /* yacc.c:1646  */
6422      break;
6423  
6424 <  case 598:
6425 < /* Line 1813 of yacc.c  */
6426 < #line 2919 "conf_parser.y"
6424 >  case 616:
6425 > #line 2948 "conf_parser.y" /* yacc.c:1646  */
6426 >    {
6427 >  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[-1].number);
6428 > }
6429 > #line 6430 "conf_parser.c" /* yacc.c:1646  */
6430 >    break;
6431 >
6432 >  case 617:
6433 > #line 2953 "conf_parser.y" /* yacc.c:1646  */
6434 >    {
6435 >  ConfigFileEntry.default_floodcount = (yyvsp[-1].number);
6436 > }
6437 > #line 6438 "conf_parser.c" /* yacc.c:1646  */
6438 >    break;
6439 >
6440 >  case 636:
6441 > #line 2982 "conf_parser.y" /* yacc.c:1646  */
6442      {
6443    ConfigChannel.disable_fake_channels = yylval.number;
6444   }
6445 + #line 6446 "conf_parser.c" /* yacc.c:1646  */
6446      break;
6447  
6448 <  case 599:
6449 < /* Line 1813 of yacc.c  */
6660 < #line 2924 "conf_parser.y"
6448 >  case 637:
6449 > #line 2987 "conf_parser.y" /* yacc.c:1646  */
6450      {
6451 <  ConfigChannel.restrict_channels = yylval.number;
6451 >  ConfigChannel.invite_client_count = (yyvsp[-1].number);
6452   }
6453 + #line 6454 "conf_parser.c" /* yacc.c:1646  */
6454      break;
6455  
6456 <  case 600:
6457 < /* Line 1813 of yacc.c  */
6668 < #line 2929 "conf_parser.y"
6456 >  case 638:
6457 > #line 2992 "conf_parser.y" /* yacc.c:1646  */
6458      {
6459 <  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6459 >  ConfigChannel.invite_client_time = (yyvsp[-1].number);
6460   }
6461 + #line 6462 "conf_parser.c" /* yacc.c:1646  */
6462      break;
6463  
6464 <  case 601:
6465 < /* Line 1813 of yacc.c  */
6676 < #line 2934 "conf_parser.y"
6464 >  case 639:
6465 > #line 2997 "conf_parser.y" /* yacc.c:1646  */
6466      {
6467 <  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6467 >  ConfigChannel.knock_client_count = (yyvsp[-1].number);
6468   }
6469 + #line 6470 "conf_parser.c" /* yacc.c:1646  */
6470      break;
6471  
6472 <  case 602:
6473 < /* Line 1813 of yacc.c  */
6684 < #line 2939 "conf_parser.y"
6472 >  case 640:
6473 > #line 3002 "conf_parser.y" /* yacc.c:1646  */
6474      {
6475 <  ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6475 >  ConfigChannel.knock_client_time = (yyvsp[-1].number);
6476   }
6477 + #line 6478 "conf_parser.c" /* yacc.c:1646  */
6478      break;
6479  
6480 <  case 603:
6481 < /* Line 1813 of yacc.c  */
6692 < #line 2944 "conf_parser.y"
6480 >  case 641:
6481 > #line 3007 "conf_parser.y" /* yacc.c:1646  */
6482      {
6483 <  ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6483 >  ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6484   }
6485 + #line 6486 "conf_parser.c" /* yacc.c:1646  */
6486      break;
6487  
6488 <  case 604:
6489 < /* Line 1813 of yacc.c  */
6700 < #line 2949 "conf_parser.y"
6488 >  case 642:
6489 > #line 3012 "conf_parser.y" /* yacc.c:1646  */
6490      {
6491 <  ConfigChannel.quiet_on_ban = yylval.number;
6491 >  ConfigChannel.max_channels = (yyvsp[-1].number);
6492   }
6493 + #line 6494 "conf_parser.c" /* yacc.c:1646  */
6494      break;
6495  
6496 <  case 605:
6497 < /* Line 1813 of yacc.c  */
6708 < #line 2954 "conf_parser.y"
6496 >  case 643:
6497 > #line 3017 "conf_parser.y" /* yacc.c:1646  */
6498      {
6499 <  ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6499 >  ConfigChannel.max_bans = (yyvsp[-1].number);
6500   }
6501 + #line 6502 "conf_parser.c" /* yacc.c:1646  */
6502      break;
6503  
6504 <  case 606:
6505 < /* Line 1813 of yacc.c  */
6716 < #line 2959 "conf_parser.y"
6504 >  case 644:
6505 > #line 3022 "conf_parser.y" /* yacc.c:1646  */
6506      {
6507 <  ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6507 >  ConfigChannel.default_split_user_count = (yyvsp[-1].number);
6508   }
6509 + #line 6510 "conf_parser.c" /* yacc.c:1646  */
6510      break;
6511  
6512 <  case 607:
6513 < /* Line 1813 of yacc.c  */
6724 < #line 2964 "conf_parser.y"
6512 >  case 645:
6513 > #line 3027 "conf_parser.y" /* yacc.c:1646  */
6514      {
6515 <  ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6515 >  ConfigChannel.default_split_server_count = (yyvsp[-1].number);
6516   }
6517 + #line 6518 "conf_parser.c" /* yacc.c:1646  */
6518      break;
6519  
6520 <  case 608:
6521 < /* Line 1813 of yacc.c  */
6732 < #line 2969 "conf_parser.y"
6520 >  case 646:
6521 > #line 3032 "conf_parser.y" /* yacc.c:1646  */
6522      {
6523    ConfigChannel.no_create_on_split = yylval.number;
6524   }
6525 + #line 6526 "conf_parser.c" /* yacc.c:1646  */
6526      break;
6527  
6528 <  case 609:
6529 < /* Line 1813 of yacc.c  */
6740 < #line 2974 "conf_parser.y"
6528 >  case 647:
6529 > #line 3037 "conf_parser.y" /* yacc.c:1646  */
6530      {
6531    ConfigChannel.no_join_on_split = yylval.number;
6532   }
6533 + #line 6534 "conf_parser.c" /* yacc.c:1646  */
6534      break;
6535  
6536 <  case 610:
6537 < /* Line 1813 of yacc.c  */
6748 < #line 2979 "conf_parser.y"
6536 >  case 648:
6537 > #line 3042 "conf_parser.y" /* yacc.c:1646  */
6538      {
6539    GlobalSetOptions.joinfloodcount = yylval.number;
6540   }
6541 + #line 6542 "conf_parser.c" /* yacc.c:1646  */
6542      break;
6543  
6544 <  case 611:
6545 < /* Line 1813 of yacc.c  */
6756 < #line 2984 "conf_parser.y"
6544 >  case 649:
6545 > #line 3047 "conf_parser.y" /* yacc.c:1646  */
6546      {
6547 <  GlobalSetOptions.joinfloodtime = yylval.number;
6547 >  GlobalSetOptions.joinfloodtime = (yyvsp[-1].number);
6548   }
6549 + #line 6550 "conf_parser.c" /* yacc.c:1646  */
6550      break;
6551  
6552 <  case 622:
6553 < /* Line 1813 of yacc.c  */
6764 < #line 3002 "conf_parser.y"
6552 >  case 662:
6553 > #line 3069 "conf_parser.y" /* yacc.c:1646  */
6554      {
6555    if (conf_parser_ctx.pass == 2)
6556      ConfigServerHide.flatten_links = yylval.number;
6557   }
6558 + #line 6559 "conf_parser.c" /* yacc.c:1646  */
6559 +    break;
6560 +
6561 +  case 663:
6562 + #line 3075 "conf_parser.y" /* yacc.c:1646  */
6563 +    {
6564 +  if (conf_parser_ctx.pass == 2)
6565 +    ConfigServerHide.disable_remote_commands = yylval.number;
6566 + }
6567 + #line 6568 "conf_parser.c" /* yacc.c:1646  */
6568      break;
6569  
6570 <  case 623:
6571 < /* Line 1813 of yacc.c  */
6773 < #line 3008 "conf_parser.y"
6570 >  case 664:
6571 > #line 3081 "conf_parser.y" /* yacc.c:1646  */
6572      {
6573    if (conf_parser_ctx.pass == 2)
6574      ConfigServerHide.hide_servers = yylval.number;
6575   }
6576 + #line 6577 "conf_parser.c" /* yacc.c:1646  */
6577 +    break;
6578 +
6579 +  case 665:
6580 + #line 3087 "conf_parser.y" /* yacc.c:1646  */
6581 +    {
6582 +  if (conf_parser_ctx.pass == 2)
6583 +    ConfigServerHide.hide_services = yylval.number;
6584 + }
6585 + #line 6586 "conf_parser.c" /* yacc.c:1646  */
6586      break;
6587  
6588 <  case 624:
6589 < /* Line 1813 of yacc.c  */
6782 < #line 3014 "conf_parser.y"
6588 >  case 666:
6589 > #line 3093 "conf_parser.y" /* yacc.c:1646  */
6590      {
6591    if (conf_parser_ctx.pass == 2)
6592    {
6593      MyFree(ConfigServerHide.hidden_name);
6594 <    DupString(ConfigServerHide.hidden_name, yylval.string);
6594 >    ConfigServerHide.hidden_name = xstrdup(yylval.string);
6595    }
6596   }
6597 + #line 6598 "conf_parser.c" /* yacc.c:1646  */
6598      break;
6599  
6600 <  case 625:
6601 < /* Line 1813 of yacc.c  */
6794 < #line 3023 "conf_parser.y"
6600 >  case 667:
6601 > #line 3102 "conf_parser.y" /* yacc.c:1646  */
6602      {
6603    if (conf_parser_ctx.pass == 2)
6604    {
6605 <    if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6605 >    if (((yyvsp[-1].number) > 0) && ConfigServerHide.links_disabled == 1)
6606      {
6607 <      eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6607 >      event_write_links_file.when = (yyvsp[-1].number);
6608 >      event_addish(&event_write_links_file, NULL);
6609        ConfigServerHide.links_disabled = 0;
6610      }
6611  
6612 <    ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6612 >    ConfigServerHide.links_delay = (yyvsp[-1].number);
6613    }
6614   }
6615 + #line 6616 "conf_parser.c" /* yacc.c:1646  */
6616      break;
6617  
6618 <  case 626:
6619 < /* Line 1813 of yacc.c  */
6811 < #line 3037 "conf_parser.y"
6618 >  case 668:
6619 > #line 3117 "conf_parser.y" /* yacc.c:1646  */
6620      {
6621    if (conf_parser_ctx.pass == 2)
6622      ConfigServerHide.hidden = yylval.number;
6623   }
6624 + #line 6625 "conf_parser.c" /* yacc.c:1646  */
6625      break;
6626  
6627 <  case 627:
6628 < /* Line 1813 of yacc.c  */
6820 < #line 3043 "conf_parser.y"
6627 >  case 669:
6628 > #line 3123 "conf_parser.y" /* yacc.c:1646  */
6629      {
6630    if (conf_parser_ctx.pass == 2)
6631      ConfigServerHide.hide_server_ips = yylval.number;
6632   }
6633 + #line 6634 "conf_parser.c" /* yacc.c:1646  */
6634      break;
6635  
6636  
6637 < /* Line 1813 of yacc.c  */
6829 < #line 6830 "conf_parser.c"
6637 > #line 6638 "conf_parser.c" /* yacc.c:1646  */
6638        default: break;
6639      }
6640    /* User semantic actions sometimes alter yychar, and that requires
# Line 6848 | Line 6656 | yyreduce:
6656  
6657    *++yyvsp = yyval;
6658  
6659 <  /* Now `shift' the result of the reduction.  Determine what state
6659 >  /* Now 'shift' the result of the reduction.  Determine what state
6660       that goes to, based on the state we popped back to and the rule
6661       number reduced by.  */
6662  
# Line 6863 | Line 6671 | yyreduce:
6671    goto yynewstate;
6672  
6673  
6674 < /*------------------------------------.
6675 < | yyerrlab -- here on detecting error |
6676 < `------------------------------------*/
6674 > /*--------------------------------------.
6675 > | yyerrlab -- here on detecting error.  |
6676 > `--------------------------------------*/
6677   yyerrlab:
6678    /* Make sure we have latest lookahead translation.  See comments at
6679       user semantic actions for why this is necessary.  */
# Line 6916 | Line 6724 | yyerrlab:
6724    if (yyerrstatus == 3)
6725      {
6726        /* If just tried and failed to reuse lookahead token after an
6727 <         error, discard it.  */
6727 >         error, discard it.  */
6728  
6729        if (yychar <= YYEOF)
6730 <        {
6731 <          /* Return failure if at end of input.  */
6732 <          if (yychar == YYEOF)
6733 <            YYABORT;
6734 <        }
6730 >        {
6731 >          /* Return failure if at end of input.  */
6732 >          if (yychar == YYEOF)
6733 >            YYABORT;
6734 >        }
6735        else
6736 <        {
6737 <          yydestruct ("Error: discarding",
6738 <                      yytoken, &yylval);
6739 <          yychar = YYEMPTY;
6740 <        }
6736 >        {
6737 >          yydestruct ("Error: discarding",
6738 >                      yytoken, &yylval);
6739 >          yychar = YYEMPTY;
6740 >        }
6741      }
6742  
6743    /* Else will try to reuse lookahead token after shifting the error
# Line 6948 | Line 6756 | yyerrorlab:
6756    if (/*CONSTCOND*/ 0)
6757       goto yyerrorlab;
6758  
6759 <  /* Do not reclaim the symbols of the rule which action triggered
6759 >  /* Do not reclaim the symbols of the rule whose action triggered
6760       this YYERROR.  */
6761    YYPOPSTACK (yylen);
6762    yylen = 0;
# Line 6961 | Line 6769 | yyerrorlab:
6769   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
6770   `-------------------------------------------------------------*/
6771   yyerrlab1:
6772 <  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6772 >  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6773  
6774    for (;;)
6775      {
6776        yyn = yypact[yystate];
6777        if (!yypact_value_is_default (yyn))
6778 <        {
6779 <          yyn += YYTERROR;
6780 <          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6781 <            {
6782 <              yyn = yytable[yyn];
6783 <              if (0 < yyn)
6784 <                break;
6785 <            }
6786 <        }
6778 >        {
6779 >          yyn += YYTERROR;
6780 >          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6781 >            {
6782 >              yyn = yytable[yyn];
6783 >              if (0 < yyn)
6784 >                break;
6785 >            }
6786 >        }
6787  
6788        /* Pop the current state because it cannot handle the error token.  */
6789        if (yyssp == yyss)
6790 <        YYABORT;
6790 >        YYABORT;
6791  
6792  
6793        yydestruct ("Error: popping",
6794 <                  yystos[yystate], yyvsp);
6794 >                  yystos[yystate], yyvsp);
6795        YYPOPSTACK (1);
6796        yystate = *yyssp;
6797        YY_STACK_PRINT (yyss, yyssp);
# Line 7034 | Line 6842 | yyreturn:
6842        yydestruct ("Cleanup: discarding lookahead",
6843                    yytoken, &yylval);
6844      }
6845 <  /* Do not reclaim the symbols of the rule which action triggered
6845 >  /* Do not reclaim the symbols of the rule whose action triggered
6846       this YYABORT or YYACCEPT.  */
6847    YYPOPSTACK (yylen);
6848    YY_STACK_PRINT (yyss, yyssp);
6849    while (yyssp != yyss)
6850      {
6851        yydestruct ("Cleanup: popping",
6852 <                  yystos[*yyssp], yyvsp);
6852 >                  yystos[*yyssp], yyvsp);
6853        YYPOPSTACK (1);
6854      }
6855   #ifndef yyoverflow
# Line 7052 | Line 6860 | yyreturn:
6860    if (yymsg != yymsgbuf)
6861      YYSTACK_FREE (yymsg);
6862   #endif
6863 <  /* Make sure YYID is used.  */
7056 <  return YYID (yyresult);
6863 >  return yyresult;
6864   }
7058
7059

Comparing ircd-hybrid/trunk/src/conf_parser.c (property svn:keywords):
Revision 1632 by michael, Sun Nov 4 15:37:10 2012 UTC vs.
Revision 4114 by michael, Tue Jul 1 16:47:15 2014 UTC

# Line 0 | Line 1
1 + Id Revision

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)