ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7252
Committed: Thu Feb 4 17:25:09 2016 UTC (9 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 218277 byte(s)
Log Message:
- Re-create parser files

File Contents

# Content
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015 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
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
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
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
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
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 #line 28 "conf_parser.y" /* yacc.c:339 */
66
67
68 #include "config.h"
69 #include "stdinc.h"
70 #include "ircd.h"
71 #include "list.h"
72 #include "conf.h"
73 #include "conf_class.h"
74 #include "conf_cluster.h"
75 #include "conf_pseudo.h"
76 #include "conf_resv.h"
77 #include "conf_service.h"
78 #include "conf_shared.h"
79 #include "event.h"
80 #include "id.h"
81 #include "log.h"
82 #include "irc_string.h"
83 #include "memory.h"
84 #include "modules.h"
85 #include "server.h"
86 #include "hostmask.h"
87 #include "listener.h"
88 #include "user.h"
89 #include "motd.h"
90
91 int yylex(void);
92
93 static struct
94 {
95 struct
96 {
97 dlink_list list;
98 } mask,
99 leaf,
100 hub;
101
102 struct
103 {
104 char buf[IRCD_BUFSIZE];
105 } name,
106 nick,
107 user,
108 host,
109 addr,
110 bind,
111 file,
112 ciph,
113 cert,
114 rpass,
115 spass,
116 whois,
117 class,
118 target,
119 prepend,
120 command;
121
122 struct
123 {
124 unsigned int value;
125 } flags,
126 modes,
127 size,
128 type,
129 port,
130 aftype,
131 ping_freq,
132 max_perip,
133 con_freq,
134 min_idle,
135 max_idle,
136 max_total,
137 max_global,
138 max_local,
139 max_ident,
140 max_sendq,
141 max_recvq,
142 max_channels,
143 cidr_bitlen_ipv4,
144 cidr_bitlen_ipv6,
145 number_per_cidr;
146 } block_state;
147
148 static void
149 reset_block_state(void)
150 {
151 dlink_node *node = NULL, *node_next = NULL;
152
153 DLINK_FOREACH_SAFE(node, node_next, block_state.mask.list.head)
154 {
155 xfree(node->data);
156 dlinkDelete(node, &block_state.mask.list);
157 free_dlink_node(node);
158 }
159
160 DLINK_FOREACH_SAFE(node, node_next, block_state.leaf.list.head)
161 {
162 xfree(node->data);
163 dlinkDelete(node, &block_state.leaf.list);
164 free_dlink_node(node);
165 }
166
167 DLINK_FOREACH_SAFE(node, node_next, block_state.hub.list.head)
168 {
169 xfree(node->data);
170 dlinkDelete(node, &block_state.hub.list);
171 free_dlink_node(node);
172 }
173
174 memset(&block_state, 0, sizeof(block_state));
175 }
176
177
178 #line 179 "conf_parser.c" /* yacc.c:339 */
179
180 # ifndef YY_NULLPTR
181 # if defined __cplusplus && 201103L <= __cplusplus
182 # define YY_NULLPTR nullptr
183 # else
184 # define YY_NULLPTR 0
185 # endif
186 # endif
187
188 /* Enabling verbose error messages. */
189 #ifdef YYERROR_VERBOSE
190 # undef YYERROR_VERBOSE
191 # define YYERROR_VERBOSE 1
192 #else
193 # define YYERROR_VERBOSE 0
194 #endif
195
196 /* In a future release of Bison, this section will be replaced
197 by #include "y.tab.h". */
198 #ifndef YY_YY_CONF_PARSER_H_INCLUDED
199 # define YY_YY_CONF_PARSER_H_INCLUDED
200 /* Debug traces. */
201 #ifndef YYDEBUG
202 # define YYDEBUG 0
203 #endif
204 #if YYDEBUG
205 extern int yydebug;
206 #endif
207
208 /* Token type. */
209 #ifndef YYTOKENTYPE
210 # define YYTOKENTYPE
211 enum yytokentype
212 {
213 ACCEPT_PASSWORD = 258,
214 ADMIN = 259,
215 AFTYPE = 260,
216 ANTI_NICK_FLOOD = 261,
217 ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
218 AUTOCONN = 263,
219 AWAY_COUNT = 264,
220 AWAY_TIME = 265,
221 BYTES = 266,
222 KBYTES = 267,
223 MBYTES = 268,
224 CALLER_ID_WAIT = 269,
225 CAN_FLOOD = 270,
226 CHANNEL = 271,
227 CIDR_BITLEN_IPV4 = 272,
228 CIDR_BITLEN_IPV6 = 273,
229 CLASS = 274,
230 CLOSE = 275,
231 CONNECT = 276,
232 CONNECTFREQ = 277,
233 CYCLE_ON_HOST_CHANGE = 278,
234 DEFAULT_FLOODCOUNT = 279,
235 DEFAULT_JOIN_FLOOD_COUNT = 280,
236 DEFAULT_JOIN_FLOOD_TIME = 281,
237 DEFAULT_MAX_CLIENTS = 282,
238 DENY = 283,
239 DESCRIPTION = 284,
240 DIE = 285,
241 DISABLE_AUTH = 286,
242 DISABLE_FAKE_CHANNELS = 287,
243 DISABLE_REMOTE_COMMANDS = 288,
244 DLINE_MIN_CIDR = 289,
245 DLINE_MIN_CIDR6 = 290,
246 DOTS_IN_IDENT = 291,
247 EMAIL = 292,
248 ENCRYPTED = 293,
249 EXCEED_LIMIT = 294,
250 EXEMPT = 295,
251 FAILED_OPER_NOTICE = 296,
252 FLATTEN_LINKS = 297,
253 FLATTEN_LINKS_DELAY = 298,
254 FLATTEN_LINKS_FILE = 299,
255 GECOS = 300,
256 GENERAL = 301,
257 HIDDEN = 302,
258 HIDDEN_NAME = 303,
259 HIDE_CHANS = 304,
260 HIDE_IDLE = 305,
261 HIDE_IDLE_FROM_OPERS = 306,
262 HIDE_SERVER_IPS = 307,
263 HIDE_SERVERS = 308,
264 HIDE_SERVICES = 309,
265 HOST = 310,
266 HUB = 311,
267 HUB_MASK = 312,
268 IGNORE_BOGUS_TS = 313,
269 INVISIBLE_ON_CONNECT = 314,
270 INVITE_CLIENT_COUNT = 315,
271 INVITE_CLIENT_TIME = 316,
272 INVITE_DELAY_CHANNEL = 317,
273 IP = 318,
274 IRCD_AUTH = 319,
275 IRCD_FLAGS = 320,
276 IRCD_SID = 321,
277 JOIN = 322,
278 KILL = 323,
279 KILL_CHASE_TIME_LIMIT = 324,
280 KLINE = 325,
281 KLINE_EXEMPT = 326,
282 KLINE_MIN_CIDR = 327,
283 KLINE_MIN_CIDR6 = 328,
284 KNOCK_CLIENT_COUNT = 329,
285 KNOCK_CLIENT_TIME = 330,
286 KNOCK_DELAY_CHANNEL = 331,
287 LEAF_MASK = 332,
288 LISTEN = 333,
289 MASK = 334,
290 MAX_ACCEPT = 335,
291 MAX_BANS = 336,
292 MAX_CHANNELS = 337,
293 MAX_GLOBAL = 338,
294 MAX_IDENT = 339,
295 MAX_IDLE = 340,
296 MAX_LOCAL = 341,
297 MAX_NICK_CHANGES = 342,
298 MAX_NICK_LENGTH = 343,
299 MAX_NICK_TIME = 344,
300 MAX_NUMBER = 345,
301 MAX_TARGETS = 346,
302 MAX_TOPIC_LENGTH = 347,
303 MAX_WATCH = 348,
304 MIN_IDLE = 349,
305 MIN_NONWILDCARD = 350,
306 MIN_NONWILDCARD_SIMPLE = 351,
307 MODULE = 352,
308 MODULES = 353,
309 MOTD = 354,
310 NAME = 355,
311 NEED_IDENT = 356,
312 NEED_PASSWORD = 357,
313 NETWORK_DESC = 358,
314 NETWORK_NAME = 359,
315 NICK = 360,
316 NO_OPER_FLOOD = 361,
317 NO_TILDE = 362,
318 NUMBER = 363,
319 NUMBER_PER_CIDR = 364,
320 NUMBER_PER_IP = 365,
321 OPER_ONLY_UMODES = 366,
322 OPER_UMODES = 367,
323 OPERATOR = 368,
324 OPERS_BYPASS_CALLERID = 369,
325 PACE_WAIT = 370,
326 PACE_WAIT_SIMPLE = 371,
327 PASSWORD = 372,
328 PATH = 373,
329 PING_COOKIE = 374,
330 PING_TIME = 375,
331 PORT = 376,
332 QSTRING = 377,
333 RANDOM_IDLE = 378,
334 REASON = 379,
335 REDIRPORT = 380,
336 REDIRSERV = 381,
337 REHASH = 382,
338 REMOTE = 383,
339 REMOTEBAN = 384,
340 RESV = 385,
341 RESV_EXEMPT = 386,
342 RSA_PRIVATE_KEY_FILE = 387,
343 SECONDS = 388,
344 MINUTES = 389,
345 HOURS = 390,
346 DAYS = 391,
347 WEEKS = 392,
348 MONTHS = 393,
349 YEARS = 394,
350 SEND_PASSWORD = 395,
351 SENDQ = 396,
352 SERVERHIDE = 397,
353 SERVERINFO = 398,
354 SHORT_MOTD = 399,
355 SPOOF = 400,
356 SPOOF_NOTICE = 401,
357 SQUIT = 402,
358 SSL_CERTIFICATE_FILE = 403,
359 SSL_CERTIFICATE_FINGERPRINT = 404,
360 SSL_CONNECTION_REQUIRED = 405,
361 SSL_DH_ELLIPTIC_CURVE = 406,
362 SSL_DH_PARAM_FILE = 407,
363 SSL_MESSAGE_DIGEST_ALGORITHM = 408,
364 STATS_E_DISABLED = 409,
365 STATS_I_OPER_ONLY = 410,
366 STATS_K_OPER_ONLY = 411,
367 STATS_M_OPER_ONLY = 412,
368 STATS_O_OPER_ONLY = 413,
369 STATS_P_OPER_ONLY = 414,
370 STATS_U_OPER_ONLY = 415,
371 T_ALL = 416,
372 T_BOTS = 417,
373 T_CALLERID = 418,
374 T_CCONN = 419,
375 T_COMMAND = 420,
376 T_CLUSTER = 421,
377 T_DEAF = 422,
378 T_DEBUG = 423,
379 T_DLINE = 424,
380 T_EXTERNAL = 425,
381 T_FARCONNECT = 426,
382 T_FILE = 427,
383 T_FULL = 428,
384 T_GLOBOPS = 429,
385 T_INVISIBLE = 430,
386 T_IPV4 = 431,
387 T_IPV6 = 432,
388 T_LOCOPS = 433,
389 T_LOG = 434,
390 T_NCHANGE = 435,
391 T_NONONREG = 436,
392 T_OPME = 437,
393 T_PREPEND = 438,
394 T_PSEUDO = 439,
395 T_RECVQ = 440,
396 T_REJ = 441,
397 T_RESTART = 442,
398 T_SERVER = 443,
399 T_SERVICE = 444,
400 T_SERVNOTICE = 445,
401 T_SET = 446,
402 T_SHARED = 447,
403 T_SIZE = 448,
404 T_SKILL = 449,
405 T_SOFTCALLERID = 450,
406 T_SPY = 451,
407 T_SSL = 452,
408 T_SSL_CIPHER_LIST = 453,
409 T_TARGET = 454,
410 T_UMODES = 455,
411 T_UNAUTH = 456,
412 T_UNDLINE = 457,
413 T_UNLIMITED = 458,
414 T_UNRESV = 459,
415 T_UNXLINE = 460,
416 T_WALLOP = 461,
417 T_WALLOPS = 462,
418 T_WEBIRC = 463,
419 TBOOL = 464,
420 THROTTLE_COUNT = 465,
421 THROTTLE_TIME = 466,
422 TKLINE_EXPIRE_NOTICES = 467,
423 TMASKED = 468,
424 TS_MAX_DELTA = 469,
425 TS_WARN_DELTA = 470,
426 TWODOTS = 471,
427 TYPE = 472,
428 UNKLINE = 473,
429 USE_LOGGING = 474,
430 USER = 475,
431 VHOST = 476,
432 VHOST6 = 477,
433 WARN_NO_CONNECT_BLOCK = 478,
434 WHOIS = 479,
435 XLINE = 480,
436 XLINE_EXEMPT = 481
437 };
438 #endif
439 /* Tokens. */
440 #define ACCEPT_PASSWORD 258
441 #define ADMIN 259
442 #define AFTYPE 260
443 #define ANTI_NICK_FLOOD 261
444 #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
445 #define AUTOCONN 263
446 #define AWAY_COUNT 264
447 #define AWAY_TIME 265
448 #define BYTES 266
449 #define KBYTES 267
450 #define MBYTES 268
451 #define CALLER_ID_WAIT 269
452 #define CAN_FLOOD 270
453 #define CHANNEL 271
454 #define CIDR_BITLEN_IPV4 272
455 #define CIDR_BITLEN_IPV6 273
456 #define CLASS 274
457 #define CLOSE 275
458 #define CONNECT 276
459 #define CONNECTFREQ 277
460 #define CYCLE_ON_HOST_CHANGE 278
461 #define DEFAULT_FLOODCOUNT 279
462 #define DEFAULT_JOIN_FLOOD_COUNT 280
463 #define DEFAULT_JOIN_FLOOD_TIME 281
464 #define DEFAULT_MAX_CLIENTS 282
465 #define DENY 283
466 #define DESCRIPTION 284
467 #define DIE 285
468 #define DISABLE_AUTH 286
469 #define DISABLE_FAKE_CHANNELS 287
470 #define DISABLE_REMOTE_COMMANDS 288
471 #define DLINE_MIN_CIDR 289
472 #define DLINE_MIN_CIDR6 290
473 #define DOTS_IN_IDENT 291
474 #define EMAIL 292
475 #define ENCRYPTED 293
476 #define EXCEED_LIMIT 294
477 #define EXEMPT 295
478 #define FAILED_OPER_NOTICE 296
479 #define FLATTEN_LINKS 297
480 #define FLATTEN_LINKS_DELAY 298
481 #define FLATTEN_LINKS_FILE 299
482 #define GECOS 300
483 #define GENERAL 301
484 #define HIDDEN 302
485 #define HIDDEN_NAME 303
486 #define HIDE_CHANS 304
487 #define HIDE_IDLE 305
488 #define HIDE_IDLE_FROM_OPERS 306
489 #define HIDE_SERVER_IPS 307
490 #define HIDE_SERVERS 308
491 #define HIDE_SERVICES 309
492 #define HOST 310
493 #define HUB 311
494 #define HUB_MASK 312
495 #define IGNORE_BOGUS_TS 313
496 #define INVISIBLE_ON_CONNECT 314
497 #define INVITE_CLIENT_COUNT 315
498 #define INVITE_CLIENT_TIME 316
499 #define INVITE_DELAY_CHANNEL 317
500 #define IP 318
501 #define IRCD_AUTH 319
502 #define IRCD_FLAGS 320
503 #define IRCD_SID 321
504 #define JOIN 322
505 #define KILL 323
506 #define KILL_CHASE_TIME_LIMIT 324
507 #define KLINE 325
508 #define KLINE_EXEMPT 326
509 #define KLINE_MIN_CIDR 327
510 #define KLINE_MIN_CIDR6 328
511 #define KNOCK_CLIENT_COUNT 329
512 #define KNOCK_CLIENT_TIME 330
513 #define KNOCK_DELAY_CHANNEL 331
514 #define LEAF_MASK 332
515 #define LISTEN 333
516 #define MASK 334
517 #define MAX_ACCEPT 335
518 #define MAX_BANS 336
519 #define MAX_CHANNELS 337
520 #define MAX_GLOBAL 338
521 #define MAX_IDENT 339
522 #define MAX_IDLE 340
523 #define MAX_LOCAL 341
524 #define MAX_NICK_CHANGES 342
525 #define MAX_NICK_LENGTH 343
526 #define MAX_NICK_TIME 344
527 #define MAX_NUMBER 345
528 #define MAX_TARGETS 346
529 #define MAX_TOPIC_LENGTH 347
530 #define MAX_WATCH 348
531 #define MIN_IDLE 349
532 #define MIN_NONWILDCARD 350
533 #define MIN_NONWILDCARD_SIMPLE 351
534 #define MODULE 352
535 #define MODULES 353
536 #define MOTD 354
537 #define NAME 355
538 #define NEED_IDENT 356
539 #define NEED_PASSWORD 357
540 #define NETWORK_DESC 358
541 #define NETWORK_NAME 359
542 #define NICK 360
543 #define NO_OPER_FLOOD 361
544 #define NO_TILDE 362
545 #define NUMBER 363
546 #define NUMBER_PER_CIDR 364
547 #define NUMBER_PER_IP 365
548 #define OPER_ONLY_UMODES 366
549 #define OPER_UMODES 367
550 #define OPERATOR 368
551 #define OPERS_BYPASS_CALLERID 369
552 #define PACE_WAIT 370
553 #define PACE_WAIT_SIMPLE 371
554 #define PASSWORD 372
555 #define PATH 373
556 #define PING_COOKIE 374
557 #define PING_TIME 375
558 #define PORT 376
559 #define QSTRING 377
560 #define RANDOM_IDLE 378
561 #define REASON 379
562 #define REDIRPORT 380
563 #define REDIRSERV 381
564 #define REHASH 382
565 #define REMOTE 383
566 #define REMOTEBAN 384
567 #define RESV 385
568 #define RESV_EXEMPT 386
569 #define RSA_PRIVATE_KEY_FILE 387
570 #define SECONDS 388
571 #define MINUTES 389
572 #define HOURS 390
573 #define DAYS 391
574 #define WEEKS 392
575 #define MONTHS 393
576 #define YEARS 394
577 #define SEND_PASSWORD 395
578 #define SENDQ 396
579 #define SERVERHIDE 397
580 #define SERVERINFO 398
581 #define SHORT_MOTD 399
582 #define SPOOF 400
583 #define SPOOF_NOTICE 401
584 #define SQUIT 402
585 #define SSL_CERTIFICATE_FILE 403
586 #define SSL_CERTIFICATE_FINGERPRINT 404
587 #define SSL_CONNECTION_REQUIRED 405
588 #define SSL_DH_ELLIPTIC_CURVE 406
589 #define SSL_DH_PARAM_FILE 407
590 #define SSL_MESSAGE_DIGEST_ALGORITHM 408
591 #define STATS_E_DISABLED 409
592 #define STATS_I_OPER_ONLY 410
593 #define STATS_K_OPER_ONLY 411
594 #define STATS_M_OPER_ONLY 412
595 #define STATS_O_OPER_ONLY 413
596 #define STATS_P_OPER_ONLY 414
597 #define STATS_U_OPER_ONLY 415
598 #define T_ALL 416
599 #define T_BOTS 417
600 #define T_CALLERID 418
601 #define T_CCONN 419
602 #define T_COMMAND 420
603 #define T_CLUSTER 421
604 #define T_DEAF 422
605 #define T_DEBUG 423
606 #define T_DLINE 424
607 #define T_EXTERNAL 425
608 #define T_FARCONNECT 426
609 #define T_FILE 427
610 #define T_FULL 428
611 #define T_GLOBOPS 429
612 #define T_INVISIBLE 430
613 #define T_IPV4 431
614 #define T_IPV6 432
615 #define T_LOCOPS 433
616 #define T_LOG 434
617 #define T_NCHANGE 435
618 #define T_NONONREG 436
619 #define T_OPME 437
620 #define T_PREPEND 438
621 #define T_PSEUDO 439
622 #define T_RECVQ 440
623 #define T_REJ 441
624 #define T_RESTART 442
625 #define T_SERVER 443
626 #define T_SERVICE 444
627 #define T_SERVNOTICE 445
628 #define T_SET 446
629 #define T_SHARED 447
630 #define T_SIZE 448
631 #define T_SKILL 449
632 #define T_SOFTCALLERID 450
633 #define T_SPY 451
634 #define T_SSL 452
635 #define T_SSL_CIPHER_LIST 453
636 #define T_TARGET 454
637 #define T_UMODES 455
638 #define T_UNAUTH 456
639 #define T_UNDLINE 457
640 #define T_UNLIMITED 458
641 #define T_UNRESV 459
642 #define T_UNXLINE 460
643 #define T_WALLOP 461
644 #define T_WALLOPS 462
645 #define T_WEBIRC 463
646 #define TBOOL 464
647 #define THROTTLE_COUNT 465
648 #define THROTTLE_TIME 466
649 #define TKLINE_EXPIRE_NOTICES 467
650 #define TMASKED 468
651 #define TS_MAX_DELTA 469
652 #define TS_WARN_DELTA 470
653 #define TWODOTS 471
654 #define TYPE 472
655 #define UNKLINE 473
656 #define USE_LOGGING 474
657 #define USER 475
658 #define VHOST 476
659 #define VHOST6 477
660 #define WARN_NO_CONNECT_BLOCK 478
661 #define WHOIS 479
662 #define XLINE 480
663 #define XLINE_EXEMPT 481
664
665 /* Value type. */
666 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
667
668 union YYSTYPE
669 {
670 #line 141 "conf_parser.y" /* yacc.c:355 */
671
672 int number;
673 char *string;
674
675 #line 676 "conf_parser.c" /* yacc.c:355 */
676 };
677
678 typedef union YYSTYPE YYSTYPE;
679 # define YYSTYPE_IS_TRIVIAL 1
680 # define YYSTYPE_IS_DECLARED 1
681 #endif
682
683
684 extern YYSTYPE yylval;
685
686 int yyparse (void);
687
688 #endif /* !YY_YY_CONF_PARSER_H_INCLUDED */
689
690 /* Copy the second part of user declarations. */
691
692 #line 693 "conf_parser.c" /* yacc.c:358 */
693
694 #ifdef short
695 # undef short
696 #endif
697
698 #ifdef YYTYPE_UINT8
699 typedef YYTYPE_UINT8 yytype_uint8;
700 #else
701 typedef unsigned char yytype_uint8;
702 #endif
703
704 #ifdef YYTYPE_INT8
705 typedef YYTYPE_INT8 yytype_int8;
706 #else
707 typedef signed char yytype_int8;
708 #endif
709
710 #ifdef YYTYPE_UINT16
711 typedef YYTYPE_UINT16 yytype_uint16;
712 #else
713 typedef unsigned short int yytype_uint16;
714 #endif
715
716 #ifdef YYTYPE_INT16
717 typedef YYTYPE_INT16 yytype_int16;
718 #else
719 typedef short int yytype_int16;
720 #endif
721
722 #ifndef YYSIZE_T
723 # ifdef __SIZE_TYPE__
724 # define YYSIZE_T __SIZE_TYPE__
725 # elif defined size_t
726 # define YYSIZE_T size_t
727 # elif ! defined YYSIZE_T
728 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
729 # define YYSIZE_T size_t
730 # else
731 # define YYSIZE_T unsigned int
732 # endif
733 #endif
734
735 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
736
737 #ifndef YY_
738 # if defined YYENABLE_NLS && YYENABLE_NLS
739 # if ENABLE_NLS
740 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
741 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
742 # endif
743 # endif
744 # ifndef YY_
745 # define YY_(Msgid) Msgid
746 # endif
747 #endif
748
749 #ifndef YY_ATTRIBUTE
750 # if (defined __GNUC__ \
751 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
752 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
753 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
754 # else
755 # define YY_ATTRIBUTE(Spec) /* empty */
756 # endif
757 #endif
758
759 #ifndef YY_ATTRIBUTE_PURE
760 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
761 #endif
762
763 #ifndef YY_ATTRIBUTE_UNUSED
764 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
765 #endif
766
767 #if !defined _Noreturn \
768 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
769 # if defined _MSC_VER && 1200 <= _MSC_VER
770 # define _Noreturn __declspec (noreturn)
771 # else
772 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
773 # endif
774 #endif
775
776 /* Suppress unused-variable warnings by "using" E. */
777 #if ! defined lint || defined __GNUC__
778 # define YYUSE(E) ((void) (E))
779 #else
780 # define YYUSE(E) /* empty */
781 #endif
782
783 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
784 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
785 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
786 _Pragma ("GCC diagnostic push") \
787 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
788 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
789 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
790 _Pragma ("GCC diagnostic pop")
791 #else
792 # define YY_INITIAL_VALUE(Value) Value
793 #endif
794 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
795 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
796 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
797 #endif
798 #ifndef YY_INITIAL_VALUE
799 # define YY_INITIAL_VALUE(Value) /* Nothing. */
800 #endif
801
802
803 #if ! defined yyoverflow || YYERROR_VERBOSE
804
805 /* The parser invokes alloca or malloc; define the necessary symbols. */
806
807 # ifdef YYSTACK_USE_ALLOCA
808 # if YYSTACK_USE_ALLOCA
809 # ifdef __GNUC__
810 # define YYSTACK_ALLOC __builtin_alloca
811 # elif defined __BUILTIN_VA_ARG_INCR
812 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
813 # elif defined _AIX
814 # define YYSTACK_ALLOC __alloca
815 # elif defined _MSC_VER
816 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
817 # define alloca _alloca
818 # else
819 # define YYSTACK_ALLOC alloca
820 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
821 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
822 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
823 # ifndef EXIT_SUCCESS
824 # define EXIT_SUCCESS 0
825 # endif
826 # endif
827 # endif
828 # endif
829 # endif
830
831 # ifdef YYSTACK_ALLOC
832 /* Pacify GCC's 'empty if-body' warning. */
833 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
834 # ifndef YYSTACK_ALLOC_MAXIMUM
835 /* The OS might guarantee only one guard page at the bottom of the stack,
836 and a page size can be as small as 4096 bytes. So we cannot safely
837 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
838 to allow for a few compiler-allocated temporary stack slots. */
839 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
840 # endif
841 # else
842 # define YYSTACK_ALLOC YYMALLOC
843 # define YYSTACK_FREE YYFREE
844 # ifndef YYSTACK_ALLOC_MAXIMUM
845 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
846 # endif
847 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
848 && ! ((defined YYMALLOC || defined malloc) \
849 && (defined YYFREE || defined free)))
850 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
851 # ifndef EXIT_SUCCESS
852 # define EXIT_SUCCESS 0
853 # endif
854 # endif
855 # ifndef YYMALLOC
856 # define YYMALLOC malloc
857 # if ! defined malloc && ! defined EXIT_SUCCESS
858 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
859 # endif
860 # endif
861 # ifndef YYFREE
862 # define YYFREE free
863 # if ! defined free && ! defined EXIT_SUCCESS
864 void free (void *); /* INFRINGES ON USER NAME SPACE */
865 # endif
866 # endif
867 # endif
868 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
869
870
871 #if (! defined yyoverflow \
872 && (! defined __cplusplus \
873 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
874
875 /* A type that is properly aligned for any stack member. */
876 union yyalloc
877 {
878 yytype_int16 yyss_alloc;
879 YYSTYPE yyvs_alloc;
880 };
881
882 /* The size of the maximum gap between one aligned stack and the next. */
883 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
884
885 /* The size of an array large to enough to hold all stacks, each with
886 N elements. */
887 # define YYSTACK_BYTES(N) \
888 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
889 + YYSTACK_GAP_MAXIMUM)
890
891 # define YYCOPY_NEEDED 1
892
893 /* Relocate STACK from its old location to the new one. The
894 local variables YYSIZE and YYSTACKSIZE give the old and new number of
895 elements in the stack, and YYPTR gives the new location of the
896 stack. Advance YYPTR to a properly aligned location for the next
897 stack. */
898 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
899 do \
900 { \
901 YYSIZE_T yynewbytes; \
902 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
903 Stack = &yyptr->Stack_alloc; \
904 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
905 yyptr += yynewbytes / sizeof (*yyptr); \
906 } \
907 while (0)
908
909 #endif
910
911 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
912 /* Copy COUNT objects from SRC to DST. The source and destination do
913 not overlap. */
914 # ifndef YYCOPY
915 # if defined __GNUC__ && 1 < __GNUC__
916 # define YYCOPY(Dst, Src, Count) \
917 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
918 # else
919 # define YYCOPY(Dst, Src, Count) \
920 do \
921 { \
922 YYSIZE_T yyi; \
923 for (yyi = 0; yyi < (Count); yyi++) \
924 (Dst)[yyi] = (Src)[yyi]; \
925 } \
926 while (0)
927 # endif
928 # endif
929 #endif /* !YYCOPY_NEEDED */
930
931 /* YYFINAL -- State number of the termination state. */
932 #define YYFINAL 2
933 /* YYLAST -- Last index in YYTABLE. */
934 #define YYLAST 1322
935
936 /* YYNTOKENS -- Number of terminals. */
937 #define YYNTOKENS 233
938 /* YYNNTS -- Number of nonterminals. */
939 #define YYNNTS 292
940 /* YYNRULES -- Number of rules. */
941 #define YYNRULES 662
942 /* YYNSTATES -- Number of states. */
943 #define YYNSTATES 1304
944
945 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
946 by yylex, with out-of-bounds checking. */
947 #define YYUNDEFTOK 2
948 #define YYMAXUTOK 481
949
950 #define YYTRANSLATE(YYX) \
951 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
952
953 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
954 as returned by yylex, without out-of-bounds checking. */
955 static const yytype_uint8 yytranslate[] =
956 {
957 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
958 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
959 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
960 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
961 2, 2, 2, 2, 231, 2, 2, 2, 2, 2,
962 2, 2, 2, 2, 2, 2, 2, 2, 232, 227,
963 2, 230, 2, 2, 2, 2, 2, 2, 2, 2,
964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
968 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
969 2, 2, 2, 229, 2, 228, 2, 2, 2, 2,
970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
973 2, 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, 2, 2, 2, 2, 2, 2,
978 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
979 2, 2, 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, 1, 2, 3, 4,
983 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
984 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
985 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
986 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
987 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
988 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
989 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
990 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
991 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
992 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
993 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
994 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
995 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
996 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
997 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
998 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
999 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1000 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1001 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1002 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1003 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1004 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1005 225, 226
1006 };
1007
1008 #if YYDEBUG
1009 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1010 static const yytype_uint16 yyrline[] =
1011 {
1012 0, 371, 371, 372, 375, 376, 377, 378, 379, 380,
1013 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
1014 391, 392, 393, 394, 395, 396, 397, 398, 402, 402,
1015 403, 404, 405, 406, 407, 408, 409, 410, 413, 413,
1016 414, 415, 416, 417, 424, 426, 426, 427, 427, 427,
1017 429, 435, 445, 447, 447, 448, 449, 450, 451, 452,
1018 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
1019 463, 464, 465, 468, 477, 486, 495, 504, 513, 522,
1020 537, 552, 562, 576, 585, 613, 641, 666, 688, 710,
1021 720, 722, 722, 723, 724, 725, 726, 728, 737, 746,
1022 760, 759, 777, 777, 778, 778, 778, 780, 786, 797,
1023 796, 815, 815, 816, 816, 816, 816, 816, 818, 824,
1024 830, 836, 858, 859, 859, 861, 861, 862, 864, 871,
1025 871, 884, 885, 887, 887, 888, 888, 890, 898, 901,
1026 907, 906, 912, 912, 913, 917, 921, 925, 929, 933,
1027 937, 941, 952, 951, 1008, 1008, 1009, 1010, 1011, 1012,
1028 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1021, 1027, 1033,
1029 1039, 1045, 1056, 1062, 1073, 1080, 1079, 1085, 1085, 1086,
1030 1090, 1094, 1098, 1102, 1106, 1110, 1114, 1118, 1122, 1126,
1031 1130, 1134, 1138, 1142, 1146, 1150, 1154, 1158, 1162, 1166,
1032 1170, 1177, 1176, 1182, 1182, 1183, 1187, 1191, 1195, 1199,
1033 1203, 1207, 1211, 1215, 1219, 1223, 1227, 1231, 1235, 1239,
1034 1243, 1247, 1251, 1255, 1259, 1263, 1267, 1271, 1275, 1279,
1035 1283, 1287, 1291, 1295, 1306, 1305, 1362, 1362, 1363, 1364,
1036 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374,
1037 1375, 1375, 1376, 1377, 1378, 1379, 1381, 1387, 1393, 1399,
1038 1405, 1411, 1417, 1423, 1429, 1435, 1441, 1448, 1454, 1460,
1039 1466, 1475, 1485, 1484, 1490, 1490, 1491, 1495, 1506, 1505,
1040 1512, 1511, 1516, 1516, 1517, 1521, 1525, 1531, 1531, 1532,
1041 1532, 1532, 1532, 1532, 1534, 1534, 1536, 1536, 1538, 1551,
1042 1568, 1574, 1585, 1584, 1626, 1626, 1627, 1628, 1629, 1630,
1043 1631, 1632, 1633, 1634, 1635, 1637, 1643, 1649, 1655, 1667,
1044 1666, 1672, 1672, 1673, 1677, 1681, 1685, 1689, 1693, 1697,
1045 1701, 1705, 1709, 1715, 1729, 1738, 1752, 1751, 1766, 1766,
1046 1767, 1767, 1767, 1767, 1769, 1775, 1781, 1791, 1793, 1793,
1047 1794, 1794, 1796, 1813, 1812, 1835, 1835, 1836, 1836, 1836,
1048 1836, 1838, 1844, 1864, 1863, 1869, 1869, 1870, 1874, 1878,
1049 1882, 1886, 1890, 1894, 1898, 1902, 1906, 1917, 1916, 1935,
1050 1935, 1936, 1936, 1936, 1938, 1945, 1944, 1950, 1950, 1951,
1051 1955, 1959, 1963, 1967, 1971, 1975, 1979, 1983, 1987, 1998,
1052 1997, 2069, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076,
1053 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2086, 2092,
1054 2098, 2104, 2117, 2130, 2136, 2142, 2146, 2153, 2152, 2157,
1055 2157, 2158, 2162, 2168, 2179, 2185, 2191, 2197, 2213, 2212,
1056 2238, 2238, 2239, 2239, 2239, 2241, 2261, 2272, 2271, 2298,
1057 2298, 2299, 2299, 2299, 2301, 2307, 2317, 2319, 2319, 2320,
1058 2320, 2322, 2340, 2339, 2362, 2362, 2363, 2363, 2363, 2365,
1059 2371, 2381, 2383, 2383, 2384, 2385, 2386, 2387, 2388, 2389,
1060 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399,
1061 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409,
1062 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419,
1063 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429,
1064 2432, 2437, 2442, 2447, 2453, 2458, 2463, 2468, 2473, 2478,
1065 2483, 2488, 2493, 2498, 2503, 2508, 2513, 2518, 2523, 2529,
1066 2534, 2539, 2544, 2549, 2554, 2559, 2564, 2567, 2572, 2575,
1067 2580, 2585, 2590, 2595, 2600, 2605, 2610, 2615, 2620, 2625,
1068 2630, 2635, 2641, 2640, 2645, 2645, 2646, 2649, 2652, 2655,
1069 2658, 2661, 2664, 2667, 2670, 2673, 2676, 2679, 2682, 2685,
1070 2688, 2691, 2694, 2697, 2700, 2703, 2706, 2709, 2715, 2714,
1071 2719, 2719, 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741,
1072 2744, 2747, 2750, 2753, 2756, 2759, 2762, 2765, 2768, 2771,
1073 2774, 2777, 2782, 2787, 2792, 2801, 2803, 2803, 2804, 2805,
1074 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815,
1075 2817, 2822, 2827, 2832, 2837, 2842, 2847, 2852, 2857, 2862,
1076 2867, 2876, 2878, 2878, 2879, 2880, 2881, 2882, 2883, 2884,
1077 2885, 2886, 2887, 2888, 2890, 2896, 2912, 2921, 2927, 2933,
1078 2939, 2948, 2954
1079 };
1080 #endif
1081
1082 #if YYDEBUG || YYERROR_VERBOSE || 0
1083 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1084 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1085 static const char *const yytname[] =
1086 {
1087 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1088 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN",
1089 "AWAY_COUNT", "AWAY_TIME", "BYTES", "KBYTES", "MBYTES", "CALLER_ID_WAIT",
1090 "CAN_FLOOD", "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS",
1091 "CLOSE", "CONNECT", "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE",
1092 "DEFAULT_FLOODCOUNT", "DEFAULT_JOIN_FLOOD_COUNT",
1093 "DEFAULT_JOIN_FLOOD_TIME", "DEFAULT_MAX_CLIENTS", "DENY", "DESCRIPTION",
1094 "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1095 "DISABLE_REMOTE_COMMANDS", "DLINE_MIN_CIDR", "DLINE_MIN_CIDR6",
1096 "DOTS_IN_IDENT", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1097 "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "FLATTEN_LINKS_DELAY",
1098 "FLATTEN_LINKS_FILE", "GECOS", "GENERAL", "HIDDEN", "HIDDEN_NAME",
1099 "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS", "HIDE_SERVER_IPS",
1100 "HIDE_SERVERS", "HIDE_SERVICES", "HOST", "HUB", "HUB_MASK",
1101 "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "INVITE_CLIENT_COUNT",
1102 "INVITE_CLIENT_TIME", "INVITE_DELAY_CHANNEL", "IP", "IRCD_AUTH",
1103 "IRCD_FLAGS", "IRCD_SID", "JOIN", "KILL", "KILL_CHASE_TIME_LIMIT",
1104 "KLINE", "KLINE_EXEMPT", "KLINE_MIN_CIDR", "KLINE_MIN_CIDR6",
1105 "KNOCK_CLIENT_COUNT", "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL",
1106 "LEAF_MASK", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANNELS",
1107 "MAX_GLOBAL", "MAX_IDENT", "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES",
1108 "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1109 "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD",
1110 "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD", "NAME",
1111 "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME", "NICK",
1112 "NO_OPER_FLOOD", "NO_TILDE", "NUMBER", "NUMBER_PER_CIDR",
1113 "NUMBER_PER_IP", "OPER_ONLY_UMODES", "OPER_UMODES", "OPERATOR",
1114 "OPERS_BYPASS_CALLERID", "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD",
1115 "PATH", "PING_COOKIE", "PING_TIME", "PORT", "QSTRING", "RANDOM_IDLE",
1116 "REASON", "REDIRPORT", "REDIRSERV", "REHASH", "REMOTE", "REMOTEBAN",
1117 "RESV", "RESV_EXEMPT", "RSA_PRIVATE_KEY_FILE", "SECONDS", "MINUTES",
1118 "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1119 "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1120 "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1121 "SSL_CONNECTION_REQUIRED", "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1122 "SSL_MESSAGE_DIGEST_ALGORITHM", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1123 "STATS_K_OPER_ONLY", "STATS_M_OPER_ONLY", "STATS_O_OPER_ONLY",
1124 "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS",
1125 "T_CALLERID", "T_CCONN", "T_COMMAND", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1126 "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1127 "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_NCHANGE",
1128 "T_NONONREG", "T_OPME", "T_PREPEND", "T_PSEUDO", "T_RECVQ", "T_REJ",
1129 "T_RESTART", "T_SERVER", "T_SERVICE", "T_SERVNOTICE", "T_SET",
1130 "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1131 "T_SSL_CIPHER_LIST", "T_TARGET", "T_UMODES", "T_UNAUTH", "T_UNDLINE",
1132 "T_UNLIMITED", "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS",
1133 "T_WEBIRC", "TBOOL", "THROTTLE_COUNT", "THROTTLE_TIME",
1134 "TKLINE_EXPIRE_NOTICES", "TMASKED", "TS_MAX_DELTA", "TS_WARN_DELTA",
1135 "TWODOTS", "TYPE", "UNKLINE", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1136 "WARN_NO_CONNECT_BLOCK", "WHOIS", "XLINE", "XLINE_EXEMPT", "';'", "'}'",
1137 "'{'", "'='", "','", "':'", "$accept", "conf", "conf_item", "timespec_",
1138 "timespec", "sizespec_", "sizespec", "modules_entry", "modules_items",
1139 "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1140 "serverinfo_items", "serverinfo_item", "serverinfo_ssl_certificate_file",
1141 "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1142 "serverinfo_ssl_cipher_list", "serverinfo_ssl_message_digest_algorithm",
1143 "serverinfo_ssl_dh_elliptic_curve", "serverinfo_name", "serverinfo_sid",
1144 "serverinfo_description", "serverinfo_network_name",
1145 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1146 "serverinfo_default_max_clients", "serverinfo_max_nick_length",
1147 "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1148 "admin_items", "admin_item", "admin_name", "admin_email",
1149 "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1150 "motd_mask", "motd_file", "pseudo_entry", "$@2", "pseudo_items",
1151 "pseudo_item", "pseudo_command", "pseudo_name", "pseudo_prepend",
1152 "pseudo_target", "logging_entry", "logging_items", "logging_item",
1153 "logging_use_logging", "logging_file_entry", "$@3", "logging_file_items",
1154 "logging_file_item", "logging_file_name", "logging_file_size",
1155 "logging_file_type", "$@4", "logging_file_type_items",
1156 "logging_file_type_item", "oper_entry", "$@5", "oper_items", "oper_item",
1157 "oper_name", "oper_user", "oper_password", "oper_whois",
1158 "oper_encrypted", "oper_ssl_certificate_fingerprint",
1159 "oper_ssl_connection_required", "oper_class", "oper_umodes", "$@6",
1160 "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@7",
1161 "oper_flags_items", "oper_flags_item", "class_entry", "$@8",
1162 "class_items", "class_item", "class_name", "class_ping_time",
1163 "class_number_per_ip", "class_connectfreq", "class_max_channels",
1164 "class_max_number", "class_max_global", "class_max_local",
1165 "class_max_ident", "class_sendq", "class_recvq",
1166 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1167 "class_number_per_cidr", "class_min_idle", "class_max_idle",
1168 "class_flags", "$@9", "class_flags_items", "class_flags_item",
1169 "listen_entry", "$@10", "listen_flags", "$@11", "listen_flags_items",
1170 "listen_flags_item", "listen_items", "listen_item", "listen_port",
1171 "$@12", "port_items", "port_item", "listen_address", "listen_host",
1172 "auth_entry", "$@13", "auth_items", "auth_item", "auth_user",
1173 "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@14",
1174 "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1175 "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1176 "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1177 "service_items", "service_item", "service_name", "shared_entry", "$@16",
1178 "shared_items", "shared_item", "shared_name", "shared_user",
1179 "shared_type", "$@17", "shared_types", "shared_type_item",
1180 "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1181 "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1182 "connect_entry", "$@20", "connect_items", "connect_item", "connect_name",
1183 "connect_host", "connect_vhost", "connect_send_password",
1184 "connect_accept_password", "connect_ssl_certificate_fingerprint",
1185 "connect_port", "connect_aftype", "connect_flags", "$@21",
1186 "connect_flags_items", "connect_flags_item", "connect_encrypted",
1187 "connect_hub_mask", "connect_leaf_mask", "connect_class",
1188 "connect_ssl_cipher_list", "kill_entry", "$@22", "kill_items",
1189 "kill_item", "kill_user", "kill_reason", "deny_entry", "$@23",
1190 "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1191 "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@24",
1192 "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1193 "general_entry", "general_items", "general_item", "general_away_count",
1194 "general_away_time", "general_max_watch", "general_cycle_on_host_change",
1195 "general_dline_min_cidr", "general_dline_min_cidr6",
1196 "general_kline_min_cidr", "general_kline_min_cidr6",
1197 "general_tkline_expire_notices", "general_kill_chase_time_limit",
1198 "general_ignore_bogus_ts", "general_failed_oper_notice",
1199 "general_anti_nick_flood", "general_max_nick_time",
1200 "general_max_nick_changes", "general_max_accept",
1201 "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1202 "general_ts_max_delta", "general_invisible_on_connect",
1203 "general_warn_no_connect_block", "general_stats_e_disabled",
1204 "general_stats_m_oper_only", "general_stats_o_oper_only",
1205 "general_stats_P_oper_only", "general_stats_u_oper_only",
1206 "general_stats_k_oper_only", "general_stats_i_oper_only",
1207 "general_pace_wait", "general_caller_id_wait",
1208 "general_opers_bypass_callerid", "general_pace_wait_simple",
1209 "general_short_motd", "general_no_oper_flood", "general_dots_in_ident",
1210 "general_max_targets", "general_ping_cookie", "general_disable_auth",
1211 "general_throttle_count", "general_throttle_time", "general_oper_umodes",
1212 "$@25", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1213 "$@26", "umode_items", "umode_item", "general_min_nonwildcard",
1214 "general_min_nonwildcard_simple", "general_default_floodcount",
1215 "channel_entry", "channel_items", "channel_item",
1216 "channel_disable_fake_channels", "channel_invite_client_count",
1217 "channel_invite_client_time", "channel_invite_delay_channel",
1218 "channel_knock_client_count", "channel_knock_client_time",
1219 "channel_knock_delay_channel", "channel_max_channels",
1220 "channel_max_bans", "channel_default_join_flood_count",
1221 "channel_default_join_flood_time", "serverhide_entry",
1222 "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1223 "serverhide_flatten_links_delay", "serverhide_flatten_links_file",
1224 "serverhide_disable_remote_commands", "serverhide_hide_servers",
1225 "serverhide_hide_services", "serverhide_hidden_name",
1226 "serverhide_hidden", "serverhide_hide_server_ips", YY_NULLPTR
1227 };
1228 #endif
1229
1230 # ifdef YYPRINT
1231 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1232 (internal) symbol number NUM (which must be that of a token). */
1233 static const yytype_uint16 yytoknum[] =
1234 {
1235 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1236 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1237 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1238 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1239 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1240 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1241 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1242 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1243 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1244 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1245 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1246 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1247 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1248 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1249 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1250 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1251 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1252 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1253 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1254 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1255 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1256 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1257 475, 476, 477, 478, 479, 480, 481, 59, 125, 123,
1258 61, 44, 58
1259 };
1260 # endif
1261
1262 #define YYPACT_NINF -887
1263
1264 #define yypact_value_is_default(Yystate) \
1265 (!!((Yystate) == (-887)))
1266
1267 #define YYTABLE_NINF -130
1268
1269 #define yytable_value_is_error(Yytable_value) \
1270 0
1271
1272 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1273 STATE-NUM. */
1274 static const yytype_int16 yypact[] =
1275 {
1276 -887, 721, -887, -174, -213, -208, -887, -887, -887, -197,
1277 -887, -181, -887, -887, -887, -170, -887, -887, -887, -160,
1278 -152, -887, -140, -887, -122, -887, -887, -887, -887, -887,
1279 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1280 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1281 -887, 23, 361, -119, -117, -97, 13, -91, 486, -84,
1282 -78, -68, 84, -55, -49, -45, 413, 624, -35, 14,
1283 -32, 49, -25, -185, -20, -10, -7, 9, -887, -887,
1284 -887, -887, -887, -6, 44, 45, 48, 63, 64, 66,
1285 79, 89, 90, 102, 166, -887, -887, -887, -887, -887,
1286 -887, -887, -887, -887, -887, -887, -887, 783, 614, 61,
1287 -887, 106, 32, -887, -887, 121, -887, 116, 118, 119,
1288 120, 122, 131, 134, 135, 136, 140, 143, 144, 145,
1289 146, 147, 148, 150, 153, 154, 158, 159, 162, 167,
1290 168, 169, -887, -887, 173, 174, 177, 180, 182, 183,
1291 185, 186, 188, 189, 194, 196, 197, 200, 201, 202,
1292 203, 204, 57, -887, -887, -887, -887, -887, -887, -887,
1293 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1294 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1295 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1296 -887, -887, -887, -887, -887, -887, -887, -887, -887, 352,
1297 12, 304, -22, 209, 210, 2, -887, -887, -887, 11,
1298 341, 85, -887, 214, 220, 223, 224, 229, 233, 234,
1299 240, 241, 291, -887, -887, -887, -887, -887, -887, -887,
1300 -887, -887, -887, 52, 243, 244, 245, 246, 250, 252,
1301 253, 254, 256, 258, 259, 268, 273, 274, 275, 276,
1302 282, 55, -887, -887, -887, -887, -887, -887, -887, -887,
1303 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1304 19, 87, 283, 3, -887, -887, -887, 115, 164, -887,
1305 284, 35, -887, -887, 165, -887, 289, 359, 393, 299,
1306 -887, 149, 410, 81, 420, 410, 410, 421, 410, 410,
1307 424, 438, 320, -887, 323, 322, 327, 330, -887, 332,
1308 334, 337, 340, 344, 346, 350, 353, 354, 355, 357,
1309 358, 360, 217, -887, -887, -887, -887, -887, -887, -887,
1310 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1311 -887, 326, 363, 364, 365, 366, 369, 373, -887, 374,
1312 376, 377, 379, 382, 383, 384, 251, -887, -887, -887,
1313 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1314 -887, -887, -887, 386, 388, 16, -887, -887, -887, 446,
1315 362, -887, -887, 390, 391, 33, -887, -887, -887, 82,
1316 410, 463, 410, 410, 414, 514, 415, 518, 519, 521,
1317 425, 426, 427, 410, 524, 529, 530, 531, 410, 540,
1318 546, 548, 549, 449, 430, 431, 453, 410, 410, 455,
1319 456, 457, -191, -186, 458, 461, 464, 465, 567, 410,
1320 467, 410, 410, 468, 451, -887, 454, 452, 459, -887,
1321 462, 472, 473, 474, 475, 303, -887, -887, -887, -887,
1322 -887, -887, -887, -887, -887, -887, 478, 480, 30, -887,
1323 -887, -887, 460, 483, 485, -887, 487, -887, 10, -887,
1324 -887, -887, -887, -887, 562, 571, 484, -887, 491, 489,
1325 490, 27, -887, -887, -887, 496, 499, 500, -887, 501,
1326 502, 503, 504, -887, 506, 509, 181, -887, -887, -887,
1327 -887, -887, -887, -887, -887, -887, -887, -887, 516, 511,
1328 515, 517, 38, -887, -887, -887, -887, 535, 539, 410,
1329 572, 541, 573, 542, 543, 544, 532, -887, -887, 618,
1330 635, 551, 636, 654, 656, 643, 646, 647, 648, 649,
1331 651, 652, 658, 661, 664, 665, 561, -887, 563, 564,
1332 -887, 34, -887, -887, -887, -887, 569, 565, -887, 568,
1333 566, 574, 580, 581, 583, 60, -887, -887, -887, -887,
1334 -887, 669, 576, -887, 587, 585, -887, 586, 95, -887,
1335 -887, -887, -887, 590, 591, 594, -887, 596, 400, 604,
1336 605, 606, 609, 610, 611, 612, 613, 615, 616, -887,
1337 -887, 688, 690, 410, 617, 699, 733, 736, 410, 741,
1338 742, 410, 730, 745, 747, 410, 750, 750, 632, -887,
1339 -887, 738, 1, 739, 653, 748, 749, 642, 752, 753,
1340 768, 756, 757, 758, 760, 657, -887, 763, 764, 662,
1341 -887, 663, -887, 766, 769, 668, -887, 670, 671, 672,
1342 674, 675, 677, 679, 680, 681, 682, 684, 685, 687,
1343 689, 691, 692, 693, 698, 701, 704, 706, 708, 709,
1344 711, 714, 847, 759, 715, 716, 717, 719, 720, 723,
1345 724, 725, 729, 731, 732, 734, 735, 737, 740, 746,
1346 754, 762, 765, 767, -887, -887, 774, 770, 718, 793,
1347 773, 795, 835, 841, 771, -887, 844, 850, 772, -887,
1348 -887, 854, 861, 761, 876, 777, -887, 778, 779, -887,
1349 -887, 864, 868, 780, -887, -887, 873, 787, 782, 878,
1350 894, 897, 812, 794, 901, 904, 802, -887, -887, 908,
1351 909, 910, 808, -887, 809, 811, 813, 817, 818, 819,
1352 820, 822, 823, -887, 824, 825, 827, 828, 829, 830,
1353 831, 832, 833, 834, 836, 837, 838, 839, 840, 842,
1354 843, -887, -887, 912, 845, 846, -887, 849, -887, 93,
1355 -887, 917, 940, 946, 949, 851, -887, 852, -887, -887,
1356 950, 853, 952, 855, -887, -887, -887, -887, -887, 410,
1357 410, 410, 410, 410, 410, 410, -887, -887, -887, -887,
1358 -887, -887, -887, -887, -887, -887, -887, -887, 857, 858,
1359 859, -26, 860, 862, 863, 865, 866, 867, 869, 870,
1360 871, 872, 874, 343, 875, 877, -887, 879, 880, 881,
1361 882, 883, 884, 885, -1, 886, 887, 888, 889, 890,
1362 891, 892, -887, 893, 895, -887, -887, 896, 898, -887,
1363 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1364 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1365 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1366 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1367 -887, -887, -887, -887, -887, -201, -887, -887, -887, -887,
1368 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1369 -887, -887, -887, -887, -887, -887, -887, -887, -887, -190,
1370 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1371 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1372 -887, 899, 900, 423, 902, 903, 905, 906, 907, -887,
1373 911, 913, -887, 914, 915, -18, 919, 916, -887, -887,
1374 -887, -887, 918, 921, -887, 922, 923, 481, 924, 925,
1375 926, 927, 807, 928, 929, -887, 930, 931, 932, -887,
1376 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1377 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1378 -887, -887, -887, -887, -887, -887, 933, 338, -887, -887,
1379 934, 935, 936, -887, 56, -887, -887, -887, -887, 937,
1380 941, 942, 943, -887, -887, 944, 577, 945, -887, -887,
1381 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1382 -887, -187, -887, -887, -887, -887, -887, -887, -887, -887,
1383 -887, -887, -887, -887, 750, 750, 750, -887, -887, -887,
1384 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1385 -184, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1386 -887, -887, -887, -887, 847, -887, 759, -887, -887, -887,
1387 -887, -887, -887, -887, -887, -887, -887, -887, -887, -182,
1388 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1389 -887, -887, -887, -176, -887, 969, 876, 947, -887, -887,
1390 -887, -887, -887, -887, 848, -887, 856, 948, -887, -887,
1391 951, 953, -887, -887, 954, -887, -887, -887, -887, -887,
1392 -887, -887, -887, -887, -887, -887, -887, -159, -887, -887,
1393 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1394 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1395 -887, -887, -887, -887, -887, -157, -887, -887, -887, -887,
1396 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1397 -887, -887, -887, -144, -887, -887, 959, -89, 957, 955,
1398 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1399 -887, -887, -887, -887, -887, -887, -126, -887, -887, -887,
1400 -26, -887, -887, -887, -887, -1, -887, -887, -887, 423,
1401 -887, -18, -887, -887, -887, 963, 965, 972, 973, 977,
1402 993, -887, 481, -887, 807, -887, 338, 961, 962, 964,
1403 227, -887, -887, 577, -887, -887, -887, -887, -887, -887,
1404 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1405 -887, -887, -887, -887, -887, -887, -887, -887, -123, -887,
1406 -887, -887, 227, -887
1407 };
1408
1409 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1410 Performed when YYTABLE does not specify something else to do. Zero
1411 means the default is an error. */
1412 static const yytype_uint16 yydefact[] =
1413 {
1414 2, 0, 1, 0, 0, 0, 234, 399, 447, 0,
1415 462, 0, 302, 438, 278, 0, 100, 152, 336, 0,
1416 0, 377, 0, 109, 0, 353, 3, 23, 11, 4,
1417 24, 25, 5, 6, 8, 9, 10, 13, 14, 15,
1418 16, 17, 18, 19, 20, 22, 21, 7, 12, 26,
1419 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1421 0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
1422 95, 94, 629, 0, 0, 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0, 617, 628, 619, 620, 621,
1424 622, 623, 624, 625, 618, 626, 627, 0, 0, 0,
1425 460, 0, 0, 458, 459, 0, 519, 0, 0, 0,
1426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1428 0, 0, 588, 562, 0, 0, 0, 0, 0, 0,
1429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1430 0, 0, 0, 473, 474, 475, 517, 518, 512, 513,
1431 514, 515, 511, 485, 476, 477, 478, 479, 480, 481,
1432 482, 483, 484, 486, 487, 516, 491, 492, 493, 494,
1433 490, 489, 495, 502, 503, 496, 497, 498, 488, 500,
1434 509, 510, 507, 508, 501, 499, 505, 506, 504, 0,
1435 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
1436 0, 0, 653, 0, 0, 0, 0, 0, 0, 0,
1437 0, 0, 0, 643, 644, 645, 646, 647, 648, 649,
1438 651, 650, 652, 0, 0, 0, 0, 0, 0, 0,
1439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1440 0, 0, 54, 69, 66, 64, 70, 71, 65, 55,
1441 68, 58, 59, 60, 56, 67, 61, 62, 63, 57,
1442 0, 0, 0, 0, 124, 125, 126, 0, 0, 351,
1443 0, 0, 349, 350, 0, 96, 0, 0, 0, 0,
1444 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1445 0, 0, 0, 616, 0, 0, 0, 0, 272, 0,
1446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1447 0, 0, 0, 237, 238, 241, 243, 244, 245, 246,
1448 247, 248, 249, 250, 251, 239, 240, 242, 252, 253,
1449 254, 0, 0, 0, 0, 0, 0, 0, 427, 0,
1450 0, 0, 0, 0, 0, 0, 0, 402, 403, 404,
1451 405, 406, 407, 408, 410, 409, 412, 416, 413, 414,
1452 415, 411, 453, 0, 0, 0, 450, 451, 452, 0,
1453 0, 457, 468, 0, 0, 0, 465, 466, 467, 0,
1454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1458 0, 0, 0, 0, 0, 472, 0, 0, 0, 319,
1459 0, 0, 0, 0, 0, 0, 305, 306, 307, 308,
1460 313, 309, 310, 311, 312, 444, 0, 0, 0, 441,
1461 442, 443, 0, 0, 0, 280, 0, 290, 0, 288,
1462 289, 291, 292, 49, 0, 0, 0, 45, 0, 0,
1463 0, 0, 103, 104, 105, 0, 0, 0, 201, 0,
1464 0, 0, 0, 175, 0, 0, 0, 155, 156, 157,
1465 158, 159, 162, 163, 164, 161, 160, 165, 0, 0,
1466 0, 0, 0, 339, 340, 341, 342, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0, 642, 72, 0,
1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,
1470 385, 0, 380, 381, 382, 127, 0, 0, 123, 0,
1471 0, 0, 0, 0, 0, 0, 112, 113, 115, 114,
1472 116, 0, 0, 348, 0, 0, 363, 0, 0, 356,
1473 357, 358, 359, 0, 0, 0, 90, 0, 28, 0,
1474 0, 0, 0, 0, 0, 0, 0, 0, 0, 615,
1475 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1476 0, 0, 0, 0, 0, 0, 0, 0, 0, 236,
1477 417, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1478 0, 0, 0, 0, 0, 0, 401, 0, 0, 0,
1479 449, 0, 456, 0, 0, 0, 464, 0, 0, 0,
1480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1484 0, 0, 0, 0, 471, 314, 0, 0, 0, 0,
1485 0, 0, 0, 0, 0, 304, 0, 0, 0, 440,
1486 293, 0, 0, 0, 0, 0, 287, 0, 0, 44,
1487 106, 0, 0, 0, 102, 166, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 0, 0, 154, 343, 0,
1489 0, 0, 0, 338, 0, 0, 0, 0, 0, 0,
1490 0, 0, 0, 641, 0, 0, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1492 0, 52, 383, 0, 0, 0, 379, 0, 122, 0,
1493 117, 0, 0, 0, 0, 0, 111, 0, 347, 360,
1494 0, 0, 0, 0, 355, 99, 98, 97, 639, 28,
1495 28, 28, 28, 28, 28, 28, 30, 29, 640, 630,
1496 631, 632, 633, 634, 635, 636, 638, 637, 0, 0,
1497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1498 0, 0, 0, 38, 0, 0, 235, 0, 0, 0,
1499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1500 0, 0, 400, 0, 0, 448, 461, 0, 0, 463,
1501 532, 536, 520, 521, 551, 523, 614, 559, 524, 525,
1502 556, 531, 530, 539, 529, 526, 527, 535, 534, 533,
1503 557, 522, 612, 613, 555, 598, 592, 608, 593, 594,
1504 595, 603, 611, 596, 605, 609, 599, 610, 600, 604,
1505 597, 607, 602, 601, 606, 0, 591, 571, 572, 573,
1506 566, 584, 567, 568, 569, 579, 587, 570, 581, 585,
1507 575, 586, 576, 580, 574, 583, 578, 577, 582, 0,
1508 565, 552, 550, 553, 558, 554, 541, 548, 549, 546,
1509 547, 542, 543, 544, 545, 560, 561, 528, 538, 537,
1510 540, 0, 0, 0, 0, 0, 0, 0, 0, 303,
1511 0, 0, 439, 0, 0, 0, 298, 294, 297, 279,
1512 50, 51, 0, 0, 101, 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0, 153, 0, 0, 0, 337,
1514 657, 654, 655, 656, 661, 660, 662, 658, 659, 86,
1515 81, 89, 80, 87, 88, 79, 83, 82, 74, 73,
1516 78, 75, 77, 76, 84, 85, 0, 0, 378, 128,
1517 0, 0, 0, 140, 0, 132, 133, 135, 134, 0,
1518 0, 0, 0, 110, 352, 0, 0, 0, 354, 31,
1519 32, 33, 34, 35, 36, 37, 267, 268, 259, 277,
1520 276, 0, 275, 260, 262, 264, 271, 263, 261, 270,
1521 256, 269, 258, 257, 38, 38, 38, 40, 39, 265,
1522 266, 422, 425, 426, 436, 433, 419, 434, 431, 432,
1523 0, 430, 435, 418, 424, 421, 423, 437, 420, 454,
1524 455, 469, 470, 589, 0, 563, 0, 317, 318, 328,
1525 324, 325, 327, 332, 329, 330, 323, 331, 326, 0,
1526 322, 316, 335, 334, 333, 315, 446, 445, 301, 300,
1527 285, 286, 284, 0, 283, 0, 0, 0, 107, 108,
1528 174, 171, 221, 233, 208, 217, 0, 206, 211, 227,
1529 0, 220, 225, 231, 210, 213, 222, 224, 228, 218,
1530 226, 214, 232, 216, 223, 212, 215, 0, 204, 167,
1531 169, 172, 173, 184, 185, 186, 179, 197, 180, 181,
1532 182, 192, 200, 183, 194, 198, 188, 199, 189, 193,
1533 187, 196, 191, 190, 195, 0, 178, 168, 170, 346,
1534 344, 345, 384, 389, 395, 398, 391, 397, 392, 396,
1535 394, 390, 393, 0, 388, 136, 0, 0, 0, 0,
1536 131, 119, 118, 120, 121, 361, 367, 373, 376, 369,
1537 375, 370, 374, 372, 368, 371, 0, 366, 362, 273,
1538 0, 41, 42, 43, 428, 0, 590, 564, 320, 0,
1539 281, 0, 299, 296, 295, 0, 0, 0, 0, 0,
1540 0, 202, 0, 176, 0, 386, 0, 0, 0, 0,
1541 0, 130, 364, 0, 274, 429, 321, 282, 207, 230,
1542 205, 229, 219, 209, 203, 177, 387, 137, 139, 138,
1543 150, 149, 145, 147, 151, 148, 144, 146, 0, 143,
1544 365, 141, 0, 142
1545 };
1546
1547 /* YYPGOTO[NTERM-NUM]. */
1548 static const yytype_int16 yypgoto[] =
1549 {
1550 -887, -887, -887, 15, -300, -886, -626, -887, -887, 958,
1551 -887, -887, -887, -887, 920, -887, -887, -887, -887, -887,
1552 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1553 -887, -887, -887, -887, 1047, -887, -887, -887, -887, -887,
1554 -887, 637, -887, -887, -887, -887, -887, 556, -887, -887,
1555 -887, -887, -887, -887, 938, -887, -887, -887, -887, 103,
1556 -887, -887, -887, -887, -887, -166, -887, -887, -887, 633,
1557 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1558 -887, -121, -887, -887, -887, -118, -887, -887, -887, 814,
1559 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1560 -887, -887, -887, -887, -887, -887, -887, -887, -887, -77,
1561 -887, -887, -887, -887, -887, -76, -887, 700, -887, -887,
1562 -887, 26, -887, -887, -887, -887, -887, 712, -887, -887,
1563 -887, -887, -887, -887, -887, -73, -887, -887, -887, -887,
1564 -887, -887, 655, -887, -887, -887, -887, -887, 939, -887,
1565 -887, -887, -887, 602, -887, -887, -887, -887, -887, -94,
1566 -887, -887, -887, 623, -887, -887, -887, -887, -74, -887,
1567 -887, -887, 956, -887, -887, -887, -887, -887, -887, -887,
1568 -887, -887, -887, -887, -52, -887, -887, -887, -887, -887,
1569 -887, -887, -887, 726, -887, -887, -887, -887, -887, 810,
1570 -887, -887, -887, -887, 1084, -887, -887, -887, -887, 803,
1571 -887, -887, -887, -887, 1035, -887, -887, -887, -887, -887,
1572 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1573 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1574 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1575 -887, -887, -887, -887, -887, -887, -887, -887, 94, -887,
1576 -887, -887, 97, -887, -887, -887, -887, -887, 1105, -887,
1577 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1578 -887, -887, 970, -887, -887, -887, -887, -887, -887, -887,
1579 -887, -887
1580 };
1581
1582 /* YYDEFGOTO[NTERM-NUM]. */
1583 static const yytype_int16 yydefgoto[] =
1584 {
1585 -1, 1, 26, 816, 817, 1077, 1078, 27, 215, 216,
1586 217, 218, 28, 261, 262, 263, 264, 265, 266, 267,
1587 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1588 278, 279, 29, 77, 78, 79, 80, 81, 30, 63,
1589 491, 492, 493, 494, 31, 70, 575, 576, 577, 578,
1590 579, 580, 32, 283, 284, 285, 286, 287, 1034, 1035,
1591 1036, 1037, 1038, 1218, 1298, 1299, 33, 64, 506, 507,
1592 508, 509, 510, 511, 512, 513, 514, 515, 516, 743,
1593 1195, 1196, 517, 738, 1167, 1168, 34, 53, 332, 333,
1594 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
1595 344, 345, 346, 347, 348, 349, 350, 614, 1061, 1062,
1596 35, 61, 477, 723, 1133, 1134, 478, 479, 480, 1137,
1597 977, 978, 481, 482, 36, 59, 455, 456, 457, 458,
1598 459, 460, 461, 708, 1119, 1120, 462, 463, 464, 37,
1599 65, 522, 523, 524, 525, 526, 38, 291, 292, 293,
1600 39, 72, 588, 589, 590, 591, 592, 801, 1236, 1237,
1601 40, 68, 561, 562, 563, 564, 784, 1213, 1214, 41,
1602 54, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1603 375, 376, 637, 1090, 1091, 377, 378, 379, 380, 381,
1604 42, 60, 468, 469, 470, 471, 43, 55, 385, 386,
1605 387, 388, 44, 112, 113, 114, 45, 57, 395, 396,
1606 397, 398, 46, 162, 163, 164, 165, 166, 167, 168,
1607 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1608 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
1609 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1610 199, 200, 201, 202, 203, 204, 425, 939, 940, 205,
1611 424, 915, 916, 206, 207, 208, 47, 94, 95, 96,
1612 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1613 48, 232, 233, 234, 235, 236, 237, 238, 239, 240,
1614 241, 242
1615 };
1616
1617 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1618 positive, shift that token. If negative, reduce the rule whose
1619 number is the opposite. If YYTABLE_NINF, syntax error. */
1620 static const yytype_int16 yytable[] =
1621 {
1622 844, 845, 599, 212, 281, 602, 603, 1088, 605, 606,
1623 73, 472, 488, 465, 110, 281, 51, 382, 690, 843,
1624 558, 52, 691, 692, 73, 1059, 1103, 693, 488, 1130,
1625 1104, 465, 56, 110, 392, 558, 289, 1105, 74, 518,
1626 1239, 1106, 295, 1244, 1240, 1248, 75, 1245, 58, 1249,
1627 289, 1250, 74, 49, 50, 1251, 243, 1030, 116, 62,
1628 75, 570, 382, 117, 118, 473, 119, 120, 1261, 66,
1629 1263, 121, 1262, 474, 1264, 475, 111, 67, 519, 383,
1630 122, 123, 244, 1265, 245, 212, 518, 1266, 124, 69,
1631 489, 125, 126, 127, 1030, 111, 584, 1060, 128, 213,
1632 658, 1272, 660, 661, 1301, 1273, 489, 71, 1302, 76,
1633 107, 246, 108, 671, 1268, 129, 130, 520, 676, 559,
1634 214, 247, 392, 76, 383, 519, 131, 685, 686, 132,
1635 133, 476, 109, 393, 559, 290, 466, 134, 115, 699,
1636 384, 701, 702, 248, 135, 209, 136, 249, 137, 290,
1637 138, 210, 139, 140, 466, 250, 1031, 394, 251, 252,
1638 571, 211, 521, 141, 520, 570, 584, 82, 142, 143,
1639 1131, 144, 145, 146, 219, -129, 147, 848, 849, 1132,
1640 220, 213, 495, 490, 221, 384, -129, 253, 1241, 1242,
1641 1243, 83, 84, 1031, 280, 585, 1089, 288, 85, 490,
1642 496, 148, 214, 254, 294, 483, 255, 256, 257, 521,
1643 296, 149, 150, 151, 152, 153, 154, 155, 314, 497,
1644 297, 393, 282, 298, 301, 572, 86, 87, 88, 756,
1645 486, 567, 467, 282, 315, 316, 560, 299, 725, 317,
1646 89, 90, 91, 573, 649, 394, 498, 92, 93, 1032,
1647 467, 560, 351, 258, 352, 733, 353, 597, 718, 574,
1648 390, 655, 785, 582, 571, 585, 752, 156, 157, 158,
1649 354, 159, 160, 1033, 302, 303, 259, 260, 304, 538,
1650 161, 499, 318, 556, 1219, 444, 1032, 569, 795, 355,
1651 600, 657, 222, 305, 306, 1290, 307, 1291, 500, 319,
1652 320, 321, 322, 323, 446, 472, 356, 324, 357, 308,
1653 1033, 325, 586, 830, 565, 587, 358, 326, 835, 309,
1654 310, 838, 447, 803, 223, 842, 327, 328, 359, 572,
1655 501, 502, 311, 224, 225, 226, 389, 329, 227, 228,
1656 1292, 448, 495, 229, 230, 231, 399, 573, 400, 401,
1657 402, 360, 403, 446, 1074, 1075, 1076, 1293, 330, 473,
1658 496, 404, 82, 574, 405, 406, 407, 474, 449, 475,
1659 408, 447, 361, 409, 410, 411, 412, 413, 414, 497,
1660 415, 503, 586, 416, 417, 587, 83, 84, 418, 419,
1661 448, 362, 420, 85, 312, 1294, 1295, 421, 422, 423,
1662 363, 504, 331, 426, 427, 505, 498, 428, 1203, 746,
1663 429, 593, 430, 431, 222, 432, 433, 449, 434, 435,
1664 450, 86, 87, 88, 436, 476, 437, 438, 451, 452,
1665 439, 440, 441, 442, 443, 89, 90, 91, 1109, 484,
1666 485, 499, 92, 93, 527, 628, 223, 1296, 453, 364,
1667 528, 843, 1297, 529, 530, 224, 225, 226, 500, 531,
1668 227, 228, 1110, 532, 533, 229, 230, 231, 1204, 450,
1669 534, 535, 365, 539, 540, 541, 542, 451, 452, 645,
1670 543, 594, 544, 545, 546, 1142, 547, 116, 548, 549,
1671 501, 502, 117, 118, 1111, 119, 120, 453, 550, 1205,
1672 121, 1143, 1144, 551, 552, 553, 554, 1206, 598, 122,
1673 123, 1145, 555, 566, 581, 595, 1207, 124, 598, 536,
1674 125, 126, 127, 454, 1112, 1113, 596, 128, 601, 604,
1675 1114, 714, 607, 809, 810, 811, 812, 813, 814, 815,
1676 1208, 503, 1209, 1210, 129, 130, 608, 609, 1146, 1147,
1677 610, 1148, 611, 630, 1115, 131, 1211, 612, 132, 133,
1678 613, 504, 615, 1212, 616, 505, 134, 617, 651, 1116,
1679 618, 659, 454, 135, 619, 136, 620, 137, 1149, 138,
1680 621, 139, 140, 622, 623, 624, 1150, 625, 626, 652,
1681 627, 1269, 141, 631, 632, 633, 634, 142, 143, 635,
1682 144, 145, 146, 636, 638, 147, 639, 640, 1151, 641,
1683 1152, 1153, 642, 643, 644, 351, 647, 352, 648, 353,
1684 653, 654, 663, 662, 664, 243, 665, 666, 1154, 667,
1685 148, 1117, 672, 354, 668, 669, 670, 673, 674, 675,
1686 149, 150, 151, 152, 153, 154, 155, 1226, 677, 1118,
1687 1155, 244, 355, 245, 678, 1156, 679, 680, 681, 1157,
1688 682, 683, 684, 1158, 687, 688, 689, 694, 1159, 356,
1689 695, 357, 1160, 696, 697, 698, 700, 703, 704, 358,
1690 246, 705, 706, 1161, 727, 1162, 1163, 720, 1164, 707,
1691 247, 359, 709, 728, 757, 759, 156, 157, 158, 1165,
1692 159, 160, 710, 711, 712, 713, 1166, 1227, 716, 161,
1693 717, 729, 248, 721, 360, 722, 249, 724, 730, 731,
1694 732, 2, 3, 735, 250, 4, 764, 251, 252, 736,
1695 737, 739, 740, 741, 742, 361, 744, 5, 1228, 745,
1696 6, 749, 7, 748, 754, 750, 1229, 751, 755, 8,
1697 758, 760, 761, 762, 362, 1230, 253, 765, 767, 763,
1698 766, 9, 768, 363, 769, 770, 10, 11, 771, 772,
1699 773, 774, 254, 775, 776, 255, 256, 257, 787, 1231,
1700 777, 1232, 1233, 778, 314, 12, 779, 780, 781, 13,
1701 782, 797, 788, 790, 783, 1234, 828, 789, 829, 14,
1702 315, 316, 1235, 798, 791, 317, 917, 832, 918, 919,
1703 792, 793, 364, 794, 799, 800, 802, 805, 806, 15,
1704 16, 807, 258, 808, 1049, 1050, 1051, 1052, 1053, 1054,
1705 1055, 818, 819, 820, 17, 365, 821, 822, 823, 824,
1706 825, 833, 826, 827, 834, 259, 260, 831, 318, 836,
1707 837, 18, 839, 840, 1173, 841, 1174, 1175, 843, 846,
1708 847, 850, 851, 19, 20, 319, 320, 321, 322, 323,
1709 852, 853, 854, 324, 855, 856, 857, 325, 858, 859,
1710 860, 965, 861, 326, 862, 863, 864, 21, 867, 865,
1711 866, 868, 327, 328, 895, 869, 961, 870, 871, 872,
1712 22, 873, 874, 329, 875, 23, 876, 877, 878, 879,
1713 24, 880, 881, 25, 882, 964, 883, 966, 884, 885,
1714 886, 920, 921, 922, 330, 887, 923, 924, 888, 925,
1715 926, 889, 927, 890, 928, 891, 892, 929, 893, 930,
1716 931, 894, 941, 942, 943, 932, 944, 945, 963, 933,
1717 946, 947, 948, 934, 935, 936, 949, 967, 950, 951,
1718 937, 952, 953, 968, 954, 938, 970, 955, 331, 1176,
1719 1177, 1178, 971, 956, 1179, 1180, 973, 1181, 1182, 962,
1720 1183, 957, 1184, 974, 976, 1185, 982, 1186, 1187, 958,
1721 983, 975, 959, 1188, 960, 985, 986, 1189, 969, 972,
1722 988, 1190, 1191, 1192, 979, 980, 981, 984, 1193, 896,
1723 897, 898, 987, 1194, 899, 900, 989, 901, 902, 990,
1724 903, 991, 904, 993, 992, 905, 994, 906, 907, 995,
1725 996, 997, 998, 908, 1026, 999, 1000, 909, 1001, 1039,
1726 1002, 910, 911, 912, 1003, 1004, 1005, 1006, 913, 1007,
1727 1008, 1009, 1010, 914, 1011, 1012, 1013, 1014, 1015, 1016,
1728 1017, 1018, 1040, 1019, 1020, 1021, 1022, 1023, 1041, 1024,
1729 1025, 1042, 1045, 1028, 1047, 1027, 1029, 1252, 1043, 1044,
1730 1255, 1267, 1048, 1046, 1056, 1057, 1058, 1063, 1256, 1064,
1731 1065, 1278, 1066, 1067, 1068, 1279, 1069, 1070, 1071, 1072,
1732 1280, 1073, 1079, 1281, 1080, 1282, 1081, 1082, 1083, 1084,
1733 1085, 1086, 1087, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
1734 1099, 1283, 1100, 1101, 300, 1102, 1107, 1108, 734, 1121,
1735 1122, 796, 1123, 1124, 1125, 1135, 1303, 1220, 1126, 747,
1736 1127, 1128, 1129, 1285, 1284, 1138, 629, 1136, 1139, 1140,
1737 1141, 1169, 1170, 1171, 1172, 1197, 1198, 1199, 1200, 1201,
1738 1202, 1215, 1253, 1274, 1221, 1216, 1217, 715, 1222, 1223,
1739 1224, 1225, 1238, 487, 1254, 1277, 1276, 753, 726, 1300,
1740 1257, 557, 1271, 1258, 786, 1259, 1260, 1270, 1287, 1288,
1741 804, 1289, 1286, 1275, 719, 650, 391, 445, 656, 313,
1742 1247, 1246, 537, 0, 0, 0, 0, 0, 0, 0,
1743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1744 0, 568, 0, 0, 0, 0, 0, 0, 0, 0,
1745 583, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1754 0, 0, 646
1755 };
1756
1757 static const yytype_int16 yycheck[] =
1758 {
1759 626, 627, 302, 1, 1, 305, 306, 8, 308, 309,
1760 1, 1, 1, 1, 1, 1, 229, 1, 209, 108,
1761 1, 229, 213, 209, 1, 51, 227, 213, 1, 47,
1762 231, 1, 229, 1, 1, 1, 1, 227, 29, 1,
1763 227, 231, 227, 227, 231, 227, 37, 231, 229, 231,
1764 1, 227, 29, 227, 228, 231, 1, 1, 1, 229,
1765 37, 1, 1, 6, 7, 55, 9, 10, 227, 229,
1766 227, 14, 231, 63, 231, 65, 63, 229, 40, 63,
1767 23, 24, 27, 227, 29, 1, 1, 231, 31, 229,
1768 79, 34, 35, 36, 1, 63, 1, 123, 41, 97,
1769 400, 227, 402, 403, 227, 231, 79, 229, 231, 100,
1770 229, 56, 229, 413, 203, 58, 59, 79, 418, 100,
1771 118, 66, 1, 100, 63, 40, 69, 427, 428, 72,
1772 73, 121, 229, 100, 100, 100, 124, 80, 229, 439,
1773 124, 441, 442, 88, 87, 229, 89, 92, 91, 100,
1774 93, 229, 95, 96, 124, 100, 100, 124, 103, 104,
1775 100, 229, 124, 106, 79, 1, 1, 1, 111, 112,
1776 188, 114, 115, 116, 229, 172, 119, 176, 177, 197,
1777 229, 97, 1, 172, 229, 124, 172, 132, 1074, 1075,
1778 1076, 25, 26, 100, 229, 100, 197, 229, 32, 172,
1779 19, 144, 118, 148, 229, 227, 151, 152, 153, 124,
1780 230, 154, 155, 156, 157, 158, 159, 160, 1, 38,
1781 230, 100, 219, 230, 230, 165, 60, 61, 62, 529,
1782 228, 228, 220, 219, 17, 18, 217, 228, 228, 22,
1783 74, 75, 76, 183, 228, 124, 65, 81, 82, 193,
1784 220, 217, 1, 198, 3, 228, 5, 108, 228, 199,
1785 228, 228, 228, 228, 100, 100, 228, 210, 211, 212,
1786 19, 214, 215, 217, 230, 230, 221, 222, 230, 227,
1787 223, 100, 65, 228, 228, 228, 193, 172, 228, 38,
1788 209, 209, 1, 230, 230, 68, 230, 70, 117, 82,
1789 83, 84, 85, 86, 1, 1, 55, 90, 57, 230,
1790 217, 94, 217, 613, 227, 220, 65, 100, 618, 230,
1791 230, 621, 19, 228, 33, 625, 109, 110, 77, 165,
1792 149, 150, 230, 42, 43, 44, 230, 120, 47, 48,
1793 113, 38, 1, 52, 53, 54, 230, 183, 230, 230,
1794 230, 100, 230, 1, 11, 12, 13, 130, 141, 55,
1795 19, 230, 1, 199, 230, 230, 230, 63, 65, 65,
1796 230, 19, 121, 230, 230, 230, 230, 230, 230, 38,
1797 230, 200, 217, 230, 230, 220, 25, 26, 230, 230,
1798 38, 140, 230, 32, 228, 168, 169, 230, 230, 230,
1799 149, 220, 185, 230, 230, 224, 65, 230, 70, 228,
1800 230, 122, 230, 230, 1, 230, 230, 65, 230, 230,
1801 117, 60, 61, 62, 230, 121, 230, 230, 125, 126,
1802 230, 230, 230, 230, 230, 74, 75, 76, 15, 230,
1803 230, 100, 81, 82, 230, 228, 33, 220, 145, 198,
1804 230, 108, 225, 230, 230, 42, 43, 44, 117, 230,
1805 47, 48, 39, 230, 230, 52, 53, 54, 130, 117,
1806 230, 230, 221, 230, 230, 230, 230, 125, 126, 228,
1807 230, 122, 230, 230, 230, 4, 230, 1, 230, 230,
1808 149, 150, 6, 7, 71, 9, 10, 145, 230, 161,
1809 14, 20, 21, 230, 230, 230, 230, 169, 108, 23,
1810 24, 30, 230, 230, 230, 122, 178, 31, 108, 228,
1811 34, 35, 36, 220, 101, 102, 227, 41, 108, 108,
1812 107, 228, 108, 133, 134, 135, 136, 137, 138, 139,
1813 202, 200, 204, 205, 58, 59, 108, 227, 67, 68,
1814 227, 70, 230, 227, 131, 69, 218, 230, 72, 73,
1815 230, 220, 230, 225, 230, 224, 80, 230, 122, 146,
1816 230, 108, 220, 87, 230, 89, 230, 91, 97, 93,
1817 230, 95, 96, 230, 230, 230, 105, 230, 230, 227,
1818 230, 1217, 106, 230, 230, 230, 230, 111, 112, 230,
1819 114, 115, 116, 230, 230, 119, 230, 230, 127, 230,
1820 129, 130, 230, 230, 230, 1, 230, 3, 230, 5,
1821 230, 230, 108, 209, 209, 1, 108, 108, 147, 108,
1822 144, 208, 108, 19, 209, 209, 209, 108, 108, 108,
1823 154, 155, 156, 157, 158, 159, 160, 70, 108, 226,
1824 169, 27, 38, 29, 108, 174, 108, 108, 209, 178,
1825 230, 230, 209, 182, 209, 209, 209, 209, 187, 55,
1826 209, 57, 191, 209, 209, 108, 209, 209, 227, 65,
1827 56, 227, 230, 202, 122, 204, 205, 227, 207, 230,
1828 66, 77, 230, 122, 122, 122, 210, 211, 212, 218,
1829 214, 215, 230, 230, 230, 230, 225, 130, 230, 223,
1830 230, 227, 88, 230, 100, 230, 92, 230, 227, 230,
1831 230, 0, 1, 227, 100, 4, 108, 103, 104, 230,
1832 230, 230, 230, 230, 230, 121, 230, 16, 161, 230,
1833 19, 230, 21, 227, 209, 230, 169, 230, 209, 28,
1834 209, 209, 209, 209, 140, 178, 132, 122, 122, 227,
1835 209, 40, 108, 149, 108, 122, 45, 46, 122, 122,
1836 122, 122, 148, 122, 122, 151, 152, 153, 209, 202,
1837 122, 204, 205, 122, 1, 64, 122, 122, 227, 68,
1838 227, 122, 227, 227, 230, 218, 108, 229, 108, 78,
1839 17, 18, 225, 227, 230, 22, 47, 108, 49, 50,
1840 230, 230, 198, 230, 227, 230, 230, 227, 227, 98,
1841 99, 227, 198, 227, 809, 810, 811, 812, 813, 814,
1842 815, 227, 227, 227, 113, 221, 227, 227, 227, 227,
1843 227, 108, 227, 227, 108, 221, 222, 230, 65, 108,
1844 108, 130, 122, 108, 47, 108, 49, 50, 108, 227,
1845 122, 122, 209, 142, 143, 82, 83, 84, 85, 86,
1846 122, 122, 230, 90, 122, 122, 108, 94, 122, 122,
1847 122, 108, 122, 100, 227, 122, 122, 166, 122, 227,
1848 227, 122, 109, 110, 47, 227, 122, 227, 227, 227,
1849 179, 227, 227, 120, 227, 184, 227, 227, 227, 227,
1850 189, 227, 227, 192, 227, 122, 227, 122, 227, 227,
1851 227, 162, 163, 164, 141, 227, 167, 168, 227, 170,
1852 171, 227, 173, 227, 175, 227, 227, 178, 227, 180,
1853 181, 227, 227, 227, 227, 186, 227, 227, 230, 190,
1854 227, 227, 227, 194, 195, 196, 227, 122, 227, 227,
1855 201, 227, 227, 122, 227, 206, 122, 227, 185, 162,
1856 163, 164, 122, 227, 167, 168, 122, 170, 171, 209,
1857 173, 227, 175, 122, 108, 178, 122, 180, 181, 227,
1858 122, 230, 227, 186, 227, 122, 209, 190, 227, 227,
1859 122, 194, 195, 196, 227, 227, 227, 227, 201, 162,
1860 163, 164, 230, 206, 167, 168, 122, 170, 171, 122,
1861 173, 209, 175, 122, 230, 178, 122, 180, 181, 227,
1862 122, 122, 122, 186, 122, 227, 227, 190, 227, 122,
1863 227, 194, 195, 196, 227, 227, 227, 227, 201, 227,
1864 227, 227, 227, 206, 227, 227, 227, 227, 227, 227,
1865 227, 227, 122, 227, 227, 227, 227, 227, 122, 227,
1866 227, 122, 122, 227, 122, 230, 227, 108, 227, 227,
1867 232, 122, 227, 230, 227, 227, 227, 227, 232, 227,
1868 227, 128, 227, 227, 227, 130, 227, 227, 227, 227,
1869 128, 227, 227, 130, 227, 128, 227, 227, 227, 227,
1870 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1871 227, 128, 227, 227, 77, 227, 227, 227, 491, 227,
1872 227, 575, 227, 227, 227, 216, 1302, 1034, 227, 506,
1873 227, 227, 227, 1264, 1262, 227, 332, 231, 227, 227,
1874 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1875 227, 227, 1136, 1240, 227, 230, 230, 455, 227, 227,
1876 227, 227, 227, 215, 227, 1251, 1249, 522, 478, 1273,
1877 232, 261, 227, 232, 561, 232, 232, 230, 227, 227,
1878 588, 227, 1266, 1245, 468, 385, 112, 162, 395, 94,
1879 1106, 1104, 232, -1, -1, -1, -1, -1, -1, -1,
1880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1881 -1, 283, -1, -1, -1, -1, -1, -1, -1, -1,
1882 291, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1891 -1, -1, 366
1892 };
1893
1894 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1895 symbol of state STATE-NUM. */
1896 static const yytype_uint16 yystos[] =
1897 {
1898 0, 234, 0, 1, 4, 16, 19, 21, 28, 40,
1899 45, 46, 64, 68, 78, 98, 99, 113, 130, 142,
1900 143, 166, 179, 184, 189, 192, 235, 240, 245, 265,
1901 271, 277, 285, 299, 319, 343, 357, 372, 379, 383,
1902 393, 402, 423, 429, 435, 439, 445, 499, 513, 227,
1903 228, 229, 229, 320, 403, 430, 229, 440, 229, 358,
1904 424, 344, 229, 272, 300, 373, 229, 229, 394, 229,
1905 278, 229, 384, 1, 29, 37, 100, 266, 267, 268,
1906 269, 270, 1, 25, 26, 32, 60, 61, 62, 74,
1907 75, 76, 81, 82, 500, 501, 502, 503, 504, 505,
1908 506, 507, 508, 509, 510, 511, 512, 229, 229, 229,
1909 1, 63, 436, 437, 438, 229, 1, 6, 7, 9,
1910 10, 14, 23, 24, 31, 34, 35, 36, 41, 58,
1911 59, 69, 72, 73, 80, 87, 89, 91, 93, 95,
1912 96, 106, 111, 112, 114, 115, 116, 119, 144, 154,
1913 155, 156, 157, 158, 159, 160, 210, 211, 212, 214,
1914 215, 223, 446, 447, 448, 449, 450, 451, 452, 453,
1915 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
1916 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
1917 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
1918 484, 485, 486, 487, 488, 492, 496, 497, 498, 229,
1919 229, 229, 1, 97, 118, 241, 242, 243, 244, 229,
1920 229, 229, 1, 33, 42, 43, 44, 47, 48, 52,
1921 53, 54, 514, 515, 516, 517, 518, 519, 520, 521,
1922 522, 523, 524, 1, 27, 29, 56, 66, 88, 92,
1923 100, 103, 104, 132, 148, 151, 152, 153, 198, 221,
1924 222, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1925 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1926 229, 1, 219, 286, 287, 288, 289, 290, 229, 1,
1927 100, 380, 381, 382, 229, 227, 230, 230, 230, 228,
1928 267, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1929 230, 230, 228, 501, 1, 17, 18, 22, 65, 82,
1930 83, 84, 85, 86, 90, 94, 100, 109, 110, 120,
1931 141, 185, 321, 322, 323, 324, 325, 326, 327, 328,
1932 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1933 339, 1, 3, 5, 19, 38, 55, 57, 65, 77,
1934 100, 121, 140, 149, 198, 221, 404, 405, 406, 407,
1935 408, 409, 410, 411, 412, 413, 414, 418, 419, 420,
1936 421, 422, 1, 63, 124, 431, 432, 433, 434, 230,
1937 228, 437, 1, 100, 124, 441, 442, 443, 444, 230,
1938 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1939 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1940 230, 230, 230, 230, 493, 489, 230, 230, 230, 230,
1941 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1942 230, 230, 230, 230, 228, 447, 1, 19, 38, 65,
1943 117, 125, 126, 145, 220, 359, 360, 361, 362, 363,
1944 364, 365, 369, 370, 371, 1, 124, 220, 425, 426,
1945 427, 428, 1, 55, 63, 65, 121, 345, 349, 350,
1946 351, 355, 356, 227, 230, 230, 228, 242, 1, 79,
1947 172, 273, 274, 275, 276, 1, 19, 38, 65, 100,
1948 117, 149, 150, 200, 220, 224, 301, 302, 303, 304,
1949 305, 306, 307, 308, 309, 310, 311, 315, 1, 40,
1950 79, 124, 374, 375, 376, 377, 378, 230, 230, 230,
1951 230, 230, 230, 230, 230, 230, 228, 515, 227, 230,
1952 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1953 230, 230, 230, 230, 230, 230, 228, 247, 1, 100,
1954 217, 395, 396, 397, 398, 227, 230, 228, 287, 172,
1955 1, 100, 165, 183, 199, 279, 280, 281, 282, 283,
1956 284, 230, 228, 381, 1, 100, 217, 220, 385, 386,
1957 387, 388, 389, 122, 122, 122, 227, 108, 108, 237,
1958 209, 108, 237, 237, 108, 237, 237, 108, 108, 227,
1959 227, 230, 230, 230, 340, 230, 230, 230, 230, 230,
1960 230, 230, 230, 230, 230, 230, 230, 230, 228, 322,
1961 227, 230, 230, 230, 230, 230, 230, 415, 230, 230,
1962 230, 230, 230, 230, 230, 228, 405, 230, 230, 228,
1963 432, 122, 227, 230, 230, 228, 442, 209, 237, 108,
1964 237, 237, 209, 108, 209, 108, 108, 108, 209, 209,
1965 209, 237, 108, 108, 108, 108, 237, 108, 108, 108,
1966 108, 209, 230, 230, 209, 237, 237, 209, 209, 209,
1967 209, 213, 209, 213, 209, 209, 209, 209, 108, 237,
1968 209, 237, 237, 209, 227, 227, 230, 230, 366, 230,
1969 230, 230, 230, 230, 228, 360, 230, 230, 228, 426,
1970 227, 230, 230, 346, 230, 228, 350, 122, 122, 227,
1971 227, 230, 230, 228, 274, 227, 230, 230, 316, 230,
1972 230, 230, 230, 312, 230, 230, 228, 302, 227, 230,
1973 230, 230, 228, 375, 209, 209, 237, 122, 209, 122,
1974 209, 209, 209, 227, 108, 122, 209, 122, 108, 108,
1975 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1976 122, 227, 227, 230, 399, 228, 396, 209, 227, 229,
1977 227, 230, 230, 230, 230, 228, 280, 122, 227, 227,
1978 230, 390, 230, 228, 386, 227, 227, 227, 227, 133,
1979 134, 135, 136, 137, 138, 139, 236, 237, 227, 227,
1980 227, 227, 227, 227, 227, 227, 227, 227, 108, 108,
1981 237, 230, 108, 108, 108, 237, 108, 108, 237, 122,
1982 108, 108, 237, 108, 239, 239, 227, 122, 176, 177,
1983 122, 209, 122, 122, 230, 122, 122, 108, 122, 122,
1984 122, 122, 227, 122, 122, 227, 227, 122, 122, 227,
1985 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1986 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1987 227, 227, 227, 227, 227, 47, 162, 163, 164, 167,
1988 168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
1989 194, 195, 196, 201, 206, 494, 495, 47, 49, 50,
1990 162, 163, 164, 167, 168, 170, 171, 173, 175, 178,
1991 180, 181, 186, 190, 194, 195, 196, 201, 206, 490,
1992 491, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1993 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1994 227, 122, 209, 230, 122, 108, 122, 122, 122, 227,
1995 122, 122, 227, 122, 122, 230, 108, 353, 354, 227,
1996 227, 227, 122, 122, 227, 122, 209, 230, 122, 122,
1997 122, 209, 230, 122, 122, 227, 122, 122, 122, 227,
1998 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1999 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2000 227, 227, 227, 227, 227, 227, 122, 230, 227, 227,
2001 1, 100, 193, 217, 291, 292, 293, 294, 295, 122,
2002 122, 122, 122, 227, 227, 122, 230, 122, 227, 236,
2003 236, 236, 236, 236, 236, 236, 227, 227, 227, 51,
2004 123, 341, 342, 227, 227, 227, 227, 227, 227, 227,
2005 227, 227, 227, 227, 11, 12, 13, 238, 239, 227,
2006 227, 227, 227, 227, 227, 227, 227, 227, 8, 197,
2007 416, 417, 227, 227, 227, 227, 227, 227, 227, 227,
2008 227, 227, 227, 227, 231, 227, 231, 227, 227, 15,
2009 39, 71, 101, 102, 107, 131, 146, 208, 226, 367,
2010 368, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2011 47, 188, 197, 347, 348, 216, 231, 352, 227, 227,
2012 227, 227, 4, 20, 21, 30, 67, 68, 70, 97,
2013 105, 127, 129, 130, 147, 169, 174, 178, 182, 187,
2014 191, 202, 204, 205, 207, 218, 225, 317, 318, 227,
2015 227, 227, 227, 47, 49, 50, 162, 163, 164, 167,
2016 168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
2017 194, 195, 196, 201, 206, 313, 314, 227, 227, 227,
2018 227, 227, 227, 70, 130, 161, 169, 178, 202, 204,
2019 205, 218, 225, 400, 401, 227, 230, 230, 296, 228,
2020 292, 227, 227, 227, 227, 227, 70, 130, 161, 169,
2021 178, 202, 204, 205, 218, 225, 391, 392, 227, 227,
2022 231, 238, 238, 238, 227, 231, 495, 491, 227, 231,
2023 227, 231, 108, 354, 227, 232, 232, 232, 232, 232,
2024 232, 227, 231, 227, 231, 227, 231, 122, 203, 239,
2025 230, 227, 227, 231, 342, 417, 368, 348, 128, 130,
2026 128, 130, 128, 128, 318, 314, 401, 227, 227, 227,
2027 68, 70, 113, 130, 168, 169, 220, 225, 297, 298,
2028 392, 227, 231, 298
2029 };
2030
2031 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2032 static const yytype_uint16 yyr1[] =
2033 {
2034 0, 233, 234, 234, 235, 235, 235, 235, 235, 235,
2035 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2036 235, 235, 235, 235, 235, 235, 235, 235, 236, 236,
2037 237, 237, 237, 237, 237, 237, 237, 237, 238, 238,
2038 239, 239, 239, 239, 240, 241, 241, 242, 242, 242,
2039 243, 244, 245, 246, 246, 247, 247, 247, 247, 247,
2040 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
2041 247, 247, 247, 248, 249, 250, 251, 252, 253, 254,
2042 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2043 265, 266, 266, 267, 267, 267, 267, 268, 269, 270,
2044 272, 271, 273, 273, 274, 274, 274, 275, 276, 278,
2045 277, 279, 279, 280, 280, 280, 280, 280, 281, 282,
2046 283, 284, 285, 286, 286, 287, 287, 287, 288, 290,
2047 289, 291, 291, 292, 292, 292, 292, 293, 294, 294,
2048 296, 295, 297, 297, 298, 298, 298, 298, 298, 298,
2049 298, 298, 300, 299, 301, 301, 302, 302, 302, 302,
2050 302, 302, 302, 302, 302, 302, 302, 303, 304, 305,
2051 306, 307, 308, 309, 310, 312, 311, 313, 313, 314,
2052 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2053 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2054 314, 316, 315, 317, 317, 318, 318, 318, 318, 318,
2055 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2056 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2057 318, 318, 318, 318, 320, 319, 321, 321, 322, 322,
2058 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
2059 322, 322, 322, 322, 322, 322, 323, 324, 325, 326,
2060 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
2061 337, 338, 340, 339, 341, 341, 342, 342, 344, 343,
2062 346, 345, 347, 347, 348, 348, 348, 349, 349, 350,
2063 350, 350, 350, 350, 352, 351, 353, 353, 354, 354,
2064 355, 356, 358, 357, 359, 359, 360, 360, 360, 360,
2065 360, 360, 360, 360, 360, 361, 362, 363, 364, 366,
2066 365, 367, 367, 368, 368, 368, 368, 368, 368, 368,
2067 368, 368, 368, 369, 370, 371, 373, 372, 374, 374,
2068 375, 375, 375, 375, 376, 377, 378, 379, 380, 380,
2069 381, 381, 382, 384, 383, 385, 385, 386, 386, 386,
2070 386, 387, 388, 390, 389, 391, 391, 392, 392, 392,
2071 392, 392, 392, 392, 392, 392, 392, 394, 393, 395,
2072 395, 396, 396, 396, 397, 399, 398, 400, 400, 401,
2073 401, 401, 401, 401, 401, 401, 401, 401, 401, 403,
2074 402, 404, 404, 405, 405, 405, 405, 405, 405, 405,
2075 405, 405, 405, 405, 405, 405, 405, 405, 406, 407,
2076 408, 409, 410, 411, 412, 413, 413, 415, 414, 416,
2077 416, 417, 417, 418, 419, 420, 421, 422, 424, 423,
2078 425, 425, 426, 426, 426, 427, 428, 430, 429, 431,
2079 431, 432, 432, 432, 433, 434, 435, 436, 436, 437,
2080 437, 438, 440, 439, 441, 441, 442, 442, 442, 443,
2081 444, 445, 446, 446, 447, 447, 447, 447, 447, 447,
2082 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2083 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2084 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2085 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2086 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
2087 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
2088 468, 469, 470, 471, 472, 473, 474, 474, 475, 475,
2089 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
2090 486, 487, 489, 488, 490, 490, 491, 491, 491, 491,
2091 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
2092 491, 491, 491, 491, 491, 491, 491, 491, 493, 492,
2093 494, 494, 495, 495, 495, 495, 495, 495, 495, 495,
2094 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
2095 495, 495, 496, 497, 498, 499, 500, 500, 501, 501,
2096 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
2097 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
2098 512, 513, 514, 514, 515, 515, 515, 515, 515, 515,
2099 515, 515, 515, 515, 516, 517, 518, 519, 520, 521,
2100 522, 523, 524
2101 };
2102
2103 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2104 static const yytype_uint8 yyr2[] =
2105 {
2106 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
2107 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2108 1, 1, 1, 1, 1, 1, 2, 2, 0, 1,
2109 2, 3, 3, 3, 3, 3, 3, 3, 0, 1,
2110 2, 3, 3, 3, 5, 2, 1, 1, 1, 2,
2111 4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
2112 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2113 1, 1, 2, 4, 4, 4, 4, 4, 4, 4,
2114 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2115 5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2116 0, 6, 2, 1, 1, 1, 2, 4, 4, 0,
2117 6, 2, 1, 1, 1, 1, 1, 2, 4, 4,
2118 4, 4, 5, 2, 1, 1, 1, 2, 4, 0,
2119 6, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2120 0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
2121 1, 1, 0, 6, 2, 1, 1, 1, 1, 1,
2122 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
2123 4, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2124 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2125 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2126 1, 0, 5, 3, 1, 3, 1, 3, 1, 3,
2127 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2128 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2129 3, 1, 1, 1, 0, 6, 2, 1, 1, 1,
2130 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2131 1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
2132 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2133 4, 4, 0, 5, 3, 1, 1, 1, 0, 6,
2134 0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
2135 1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
2136 4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
2137 1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
2138 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2139 1, 1, 1, 4, 4, 4, 0, 6, 2, 1,
2140 1, 1, 1, 2, 4, 4, 4, 5, 2, 1,
2141 1, 1, 4, 0, 6, 2, 1, 1, 1, 1,
2142 2, 4, 4, 0, 5, 3, 1, 1, 1, 1,
2143 1, 1, 1, 1, 1, 1, 1, 0, 6, 2,
2144 1, 1, 1, 2, 4, 0, 5, 3, 1, 1,
2145 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2146 6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2147 1, 1, 1, 1, 1, 1, 1, 2, 4, 4,
2148 4, 4, 4, 4, 4, 4, 4, 0, 5, 3,
2149 1, 1, 1, 4, 4, 4, 4, 4, 0, 6,
2150 2, 1, 1, 1, 1, 4, 4, 0, 6, 2,
2151 1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
2152 1, 4, 0, 6, 2, 1, 1, 1, 1, 4,
2153 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2154 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2155 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2156 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2157 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2158 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2159 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2160 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2161 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2162 4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
2163 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2164 1, 1, 1, 1, 1, 1, 1, 1, 0, 5,
2165 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2166 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2167 1, 1, 4, 4, 4, 5, 2, 1, 1, 1,
2168 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2169 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2170 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2171 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
2172 4, 4, 4
2173 };
2174
2175
2176 #define yyerrok (yyerrstatus = 0)
2177 #define yyclearin (yychar = YYEMPTY)
2178 #define YYEMPTY (-2)
2179 #define YYEOF 0
2180
2181 #define YYACCEPT goto yyacceptlab
2182 #define YYABORT goto yyabortlab
2183 #define YYERROR goto yyerrorlab
2184
2185
2186 #define YYRECOVERING() (!!yyerrstatus)
2187
2188 #define YYBACKUP(Token, Value) \
2189 do \
2190 if (yychar == YYEMPTY) \
2191 { \
2192 yychar = (Token); \
2193 yylval = (Value); \
2194 YYPOPSTACK (yylen); \
2195 yystate = *yyssp; \
2196 goto yybackup; \
2197 } \
2198 else \
2199 { \
2200 yyerror (YY_("syntax error: cannot back up")); \
2201 YYERROR; \
2202 } \
2203 while (0)
2204
2205 /* Error token number */
2206 #define YYTERROR 1
2207 #define YYERRCODE 256
2208
2209
2210
2211 /* Enable debugging if requested. */
2212 #if YYDEBUG
2213
2214 # ifndef YYFPRINTF
2215 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2216 # define YYFPRINTF fprintf
2217 # endif
2218
2219 # define YYDPRINTF(Args) \
2220 do { \
2221 if (yydebug) \
2222 YYFPRINTF Args; \
2223 } while (0)
2224
2225 /* This macro is provided for backward compatibility. */
2226 #ifndef YY_LOCATION_PRINT
2227 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2228 #endif
2229
2230
2231 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2232 do { \
2233 if (yydebug) \
2234 { \
2235 YYFPRINTF (stderr, "%s ", Title); \
2236 yy_symbol_print (stderr, \
2237 Type, Value); \
2238 YYFPRINTF (stderr, "\n"); \
2239 } \
2240 } while (0)
2241
2242
2243 /*----------------------------------------.
2244 | Print this symbol's value on YYOUTPUT. |
2245 `----------------------------------------*/
2246
2247 static void
2248 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2249 {
2250 FILE *yyo = yyoutput;
2251 YYUSE (yyo);
2252 if (!yyvaluep)
2253 return;
2254 # ifdef YYPRINT
2255 if (yytype < YYNTOKENS)
2256 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2257 # endif
2258 YYUSE (yytype);
2259 }
2260
2261
2262 /*--------------------------------.
2263 | Print this symbol on YYOUTPUT. |
2264 `--------------------------------*/
2265
2266 static void
2267 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2268 {
2269 YYFPRINTF (yyoutput, "%s %s (",
2270 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2271
2272 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2273 YYFPRINTF (yyoutput, ")");
2274 }
2275
2276 /*------------------------------------------------------------------.
2277 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2278 | TOP (included). |
2279 `------------------------------------------------------------------*/
2280
2281 static void
2282 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2283 {
2284 YYFPRINTF (stderr, "Stack now");
2285 for (; yybottom <= yytop; yybottom++)
2286 {
2287 int yybot = *yybottom;
2288 YYFPRINTF (stderr, " %d", yybot);
2289 }
2290 YYFPRINTF (stderr, "\n");
2291 }
2292
2293 # define YY_STACK_PRINT(Bottom, Top) \
2294 do { \
2295 if (yydebug) \
2296 yy_stack_print ((Bottom), (Top)); \
2297 } while (0)
2298
2299
2300 /*------------------------------------------------.
2301 | Report that the YYRULE is going to be reduced. |
2302 `------------------------------------------------*/
2303
2304 static void
2305 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2306 {
2307 unsigned long int yylno = yyrline[yyrule];
2308 int yynrhs = yyr2[yyrule];
2309 int yyi;
2310 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2311 yyrule - 1, yylno);
2312 /* The symbols being reduced. */
2313 for (yyi = 0; yyi < yynrhs; yyi++)
2314 {
2315 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2316 yy_symbol_print (stderr,
2317 yystos[yyssp[yyi + 1 - yynrhs]],
2318 &(yyvsp[(yyi + 1) - (yynrhs)])
2319 );
2320 YYFPRINTF (stderr, "\n");
2321 }
2322 }
2323
2324 # define YY_REDUCE_PRINT(Rule) \
2325 do { \
2326 if (yydebug) \
2327 yy_reduce_print (yyssp, yyvsp, Rule); \
2328 } while (0)
2329
2330 /* Nonzero means print parse trace. It is left uninitialized so that
2331 multiple parsers can coexist. */
2332 int yydebug;
2333 #else /* !YYDEBUG */
2334 # define YYDPRINTF(Args)
2335 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2336 # define YY_STACK_PRINT(Bottom, Top)
2337 # define YY_REDUCE_PRINT(Rule)
2338 #endif /* !YYDEBUG */
2339
2340
2341 /* YYINITDEPTH -- initial size of the parser's stacks. */
2342 #ifndef YYINITDEPTH
2343 # define YYINITDEPTH 200
2344 #endif
2345
2346 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2347 if the built-in stack extension method is used).
2348
2349 Do not make this value too large; the results are undefined if
2350 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2351 evaluated with infinite-precision integer arithmetic. */
2352
2353 #ifndef YYMAXDEPTH
2354 # define YYMAXDEPTH 10000
2355 #endif
2356
2357
2358 #if YYERROR_VERBOSE
2359
2360 # ifndef yystrlen
2361 # if defined __GLIBC__ && defined _STRING_H
2362 # define yystrlen strlen
2363 # else
2364 /* Return the length of YYSTR. */
2365 static YYSIZE_T
2366 yystrlen (const char *yystr)
2367 {
2368 YYSIZE_T yylen;
2369 for (yylen = 0; yystr[yylen]; yylen++)
2370 continue;
2371 return yylen;
2372 }
2373 # endif
2374 # endif
2375
2376 # ifndef yystpcpy
2377 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2378 # define yystpcpy stpcpy
2379 # else
2380 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2381 YYDEST. */
2382 static char *
2383 yystpcpy (char *yydest, const char *yysrc)
2384 {
2385 char *yyd = yydest;
2386 const char *yys = yysrc;
2387
2388 while ((*yyd++ = *yys++) != '\0')
2389 continue;
2390
2391 return yyd - 1;
2392 }
2393 # endif
2394 # endif
2395
2396 # ifndef yytnamerr
2397 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2398 quotes and backslashes, so that it's suitable for yyerror. The
2399 heuristic is that double-quoting is unnecessary unless the string
2400 contains an apostrophe, a comma, or backslash (other than
2401 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2402 null, do not copy; instead, return the length of what the result
2403 would have been. */
2404 static YYSIZE_T
2405 yytnamerr (char *yyres, const char *yystr)
2406 {
2407 if (*yystr == '"')
2408 {
2409 YYSIZE_T yyn = 0;
2410 char const *yyp = yystr;
2411
2412 for (;;)
2413 switch (*++yyp)
2414 {
2415 case '\'':
2416 case ',':
2417 goto do_not_strip_quotes;
2418
2419 case '\\':
2420 if (*++yyp != '\\')
2421 goto do_not_strip_quotes;
2422 /* Fall through. */
2423 default:
2424 if (yyres)
2425 yyres[yyn] = *yyp;
2426 yyn++;
2427 break;
2428
2429 case '"':
2430 if (yyres)
2431 yyres[yyn] = '\0';
2432 return yyn;
2433 }
2434 do_not_strip_quotes: ;
2435 }
2436
2437 if (! yyres)
2438 return yystrlen (yystr);
2439
2440 return yystpcpy (yyres, yystr) - yyres;
2441 }
2442 # endif
2443
2444 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2445 about the unexpected token YYTOKEN for the state stack whose top is
2446 YYSSP.
2447
2448 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2449 not large enough to hold the message. In that case, also set
2450 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2451 required number of bytes is too large to store. */
2452 static int
2453 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2454 yytype_int16 *yyssp, int yytoken)
2455 {
2456 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2457 YYSIZE_T yysize = yysize0;
2458 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2459 /* Internationalized format string. */
2460 const char *yyformat = YY_NULLPTR;
2461 /* Arguments of yyformat. */
2462 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2463 /* Number of reported tokens (one for the "unexpected", one per
2464 "expected"). */
2465 int yycount = 0;
2466
2467 /* There are many possibilities here to consider:
2468 - If this state is a consistent state with a default action, then
2469 the only way this function was invoked is if the default action
2470 is an error action. In that case, don't check for expected
2471 tokens because there are none.
2472 - The only way there can be no lookahead present (in yychar) is if
2473 this state is a consistent state with a default action. Thus,
2474 detecting the absence of a lookahead is sufficient to determine
2475 that there is no unexpected or expected token to report. In that
2476 case, just report a simple "syntax error".
2477 - Don't assume there isn't a lookahead just because this state is a
2478 consistent state with a default action. There might have been a
2479 previous inconsistent state, consistent state with a non-default
2480 action, or user semantic action that manipulated yychar.
2481 - Of course, the expected token list depends on states to have
2482 correct lookahead information, and it depends on the parser not
2483 to perform extra reductions after fetching a lookahead from the
2484 scanner and before detecting a syntax error. Thus, state merging
2485 (from LALR or IELR) and default reductions corrupt the expected
2486 token list. However, the list is correct for canonical LR with
2487 one exception: it will still contain any token that will not be
2488 accepted due to an error action in a later state.
2489 */
2490 if (yytoken != YYEMPTY)
2491 {
2492 int yyn = yypact[*yyssp];
2493 yyarg[yycount++] = yytname[yytoken];
2494 if (!yypact_value_is_default (yyn))
2495 {
2496 /* Start YYX at -YYN if negative to avoid negative indexes in
2497 YYCHECK. In other words, skip the first -YYN actions for
2498 this state because they are default actions. */
2499 int yyxbegin = yyn < 0 ? -yyn : 0;
2500 /* Stay within bounds of both yycheck and yytname. */
2501 int yychecklim = YYLAST - yyn + 1;
2502 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2503 int yyx;
2504
2505 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2506 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2507 && !yytable_value_is_error (yytable[yyx + yyn]))
2508 {
2509 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2510 {
2511 yycount = 1;
2512 yysize = yysize0;
2513 break;
2514 }
2515 yyarg[yycount++] = yytname[yyx];
2516 {
2517 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2518 if (! (yysize <= yysize1
2519 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2520 return 2;
2521 yysize = yysize1;
2522 }
2523 }
2524 }
2525 }
2526
2527 switch (yycount)
2528 {
2529 # define YYCASE_(N, S) \
2530 case N: \
2531 yyformat = S; \
2532 break
2533 YYCASE_(0, YY_("syntax error"));
2534 YYCASE_(1, YY_("syntax error, unexpected %s"));
2535 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2536 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2537 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2538 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2539 # undef YYCASE_
2540 }
2541
2542 {
2543 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2544 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2545 return 2;
2546 yysize = yysize1;
2547 }
2548
2549 if (*yymsg_alloc < yysize)
2550 {
2551 *yymsg_alloc = 2 * yysize;
2552 if (! (yysize <= *yymsg_alloc
2553 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2554 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2555 return 1;
2556 }
2557
2558 /* Avoid sprintf, as that infringes on the user's name space.
2559 Don't have undefined behavior even if the translation
2560 produced a string with the wrong number of "%s"s. */
2561 {
2562 char *yyp = *yymsg;
2563 int yyi = 0;
2564 while ((*yyp = *yyformat) != '\0')
2565 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2566 {
2567 yyp += yytnamerr (yyp, yyarg[yyi++]);
2568 yyformat += 2;
2569 }
2570 else
2571 {
2572 yyp++;
2573 yyformat++;
2574 }
2575 }
2576 return 0;
2577 }
2578 #endif /* YYERROR_VERBOSE */
2579
2580 /*-----------------------------------------------.
2581 | Release the memory associated to this symbol. |
2582 `-----------------------------------------------*/
2583
2584 static void
2585 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2586 {
2587 YYUSE (yyvaluep);
2588 if (!yymsg)
2589 yymsg = "Deleting";
2590 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2591
2592 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2593 YYUSE (yytype);
2594 YY_IGNORE_MAYBE_UNINITIALIZED_END
2595 }
2596
2597
2598
2599
2600 /* The lookahead symbol. */
2601 int yychar;
2602
2603 /* The semantic value of the lookahead symbol. */
2604 YYSTYPE yylval;
2605 /* Number of syntax errors so far. */
2606 int yynerrs;
2607
2608
2609 /*----------.
2610 | yyparse. |
2611 `----------*/
2612
2613 int
2614 yyparse (void)
2615 {
2616 int yystate;
2617 /* Number of tokens to shift before error messages enabled. */
2618 int yyerrstatus;
2619
2620 /* The stacks and their tools:
2621 'yyss': related to states.
2622 'yyvs': related to semantic values.
2623
2624 Refer to the stacks through separate pointers, to allow yyoverflow
2625 to reallocate them elsewhere. */
2626
2627 /* The state stack. */
2628 yytype_int16 yyssa[YYINITDEPTH];
2629 yytype_int16 *yyss;
2630 yytype_int16 *yyssp;
2631
2632 /* The semantic value stack. */
2633 YYSTYPE yyvsa[YYINITDEPTH];
2634 YYSTYPE *yyvs;
2635 YYSTYPE *yyvsp;
2636
2637 YYSIZE_T yystacksize;
2638
2639 int yyn;
2640 int yyresult;
2641 /* Lookahead token as an internal (translated) token number. */
2642 int yytoken = 0;
2643 /* The variables used to return semantic value and location from the
2644 action routines. */
2645 YYSTYPE yyval;
2646
2647 #if YYERROR_VERBOSE
2648 /* Buffer for error messages, and its allocated size. */
2649 char yymsgbuf[128];
2650 char *yymsg = yymsgbuf;
2651 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2652 #endif
2653
2654 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2655
2656 /* The number of symbols on the RHS of the reduced rule.
2657 Keep to zero when no symbol should be popped. */
2658 int yylen = 0;
2659
2660 yyssp = yyss = yyssa;
2661 yyvsp = yyvs = yyvsa;
2662 yystacksize = YYINITDEPTH;
2663
2664 YYDPRINTF ((stderr, "Starting parse\n"));
2665
2666 yystate = 0;
2667 yyerrstatus = 0;
2668 yynerrs = 0;
2669 yychar = YYEMPTY; /* Cause a token to be read. */
2670 goto yysetstate;
2671
2672 /*------------------------------------------------------------.
2673 | yynewstate -- Push a new state, which is found in yystate. |
2674 `------------------------------------------------------------*/
2675 yynewstate:
2676 /* In all cases, when you get here, the value and location stacks
2677 have just been pushed. So pushing a state here evens the stacks. */
2678 yyssp++;
2679
2680 yysetstate:
2681 *yyssp = yystate;
2682
2683 if (yyss + yystacksize - 1 <= yyssp)
2684 {
2685 /* Get the current used size of the three stacks, in elements. */
2686 YYSIZE_T yysize = yyssp - yyss + 1;
2687
2688 #ifdef yyoverflow
2689 {
2690 /* Give user a chance to reallocate the stack. Use copies of
2691 these so that the &'s don't force the real ones into
2692 memory. */
2693 YYSTYPE *yyvs1 = yyvs;
2694 yytype_int16 *yyss1 = yyss;
2695
2696 /* Each stack pointer address is followed by the size of the
2697 data in use in that stack, in bytes. This used to be a
2698 conditional around just the two extra args, but that might
2699 be undefined if yyoverflow is a macro. */
2700 yyoverflow (YY_("memory exhausted"),
2701 &yyss1, yysize * sizeof (*yyssp),
2702 &yyvs1, yysize * sizeof (*yyvsp),
2703 &yystacksize);
2704
2705 yyss = yyss1;
2706 yyvs = yyvs1;
2707 }
2708 #else /* no yyoverflow */
2709 # ifndef YYSTACK_RELOCATE
2710 goto yyexhaustedlab;
2711 # else
2712 /* Extend the stack our own way. */
2713 if (YYMAXDEPTH <= yystacksize)
2714 goto yyexhaustedlab;
2715 yystacksize *= 2;
2716 if (YYMAXDEPTH < yystacksize)
2717 yystacksize = YYMAXDEPTH;
2718
2719 {
2720 yytype_int16 *yyss1 = yyss;
2721 union yyalloc *yyptr =
2722 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2723 if (! yyptr)
2724 goto yyexhaustedlab;
2725 YYSTACK_RELOCATE (yyss_alloc, yyss);
2726 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2727 # undef YYSTACK_RELOCATE
2728 if (yyss1 != yyssa)
2729 YYSTACK_FREE (yyss1);
2730 }
2731 # endif
2732 #endif /* no yyoverflow */
2733
2734 yyssp = yyss + yysize - 1;
2735 yyvsp = yyvs + yysize - 1;
2736
2737 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2738 (unsigned long int) yystacksize));
2739
2740 if (yyss + yystacksize - 1 <= yyssp)
2741 YYABORT;
2742 }
2743
2744 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2745
2746 if (yystate == YYFINAL)
2747 YYACCEPT;
2748
2749 goto yybackup;
2750
2751 /*-----------.
2752 | yybackup. |
2753 `-----------*/
2754 yybackup:
2755
2756 /* Do appropriate processing given the current state. Read a
2757 lookahead token if we need one and don't already have one. */
2758
2759 /* First try to decide what to do without reference to lookahead token. */
2760 yyn = yypact[yystate];
2761 if (yypact_value_is_default (yyn))
2762 goto yydefault;
2763
2764 /* Not known => get a lookahead token if don't already have one. */
2765
2766 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2767 if (yychar == YYEMPTY)
2768 {
2769 YYDPRINTF ((stderr, "Reading a token: "));
2770 yychar = yylex ();
2771 }
2772
2773 if (yychar <= YYEOF)
2774 {
2775 yychar = yytoken = YYEOF;
2776 YYDPRINTF ((stderr, "Now at end of input.\n"));
2777 }
2778 else
2779 {
2780 yytoken = YYTRANSLATE (yychar);
2781 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2782 }
2783
2784 /* If the proper action on seeing token YYTOKEN is to reduce or to
2785 detect an error, take that action. */
2786 yyn += yytoken;
2787 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2788 goto yydefault;
2789 yyn = yytable[yyn];
2790 if (yyn <= 0)
2791 {
2792 if (yytable_value_is_error (yyn))
2793 goto yyerrlab;
2794 yyn = -yyn;
2795 goto yyreduce;
2796 }
2797
2798 /* Count tokens shifted since error; after three, turn off error
2799 status. */
2800 if (yyerrstatus)
2801 yyerrstatus--;
2802
2803 /* Shift the lookahead token. */
2804 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2805
2806 /* Discard the shifted token. */
2807 yychar = YYEMPTY;
2808
2809 yystate = yyn;
2810 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2811 *++yyvsp = yylval;
2812 YY_IGNORE_MAYBE_UNINITIALIZED_END
2813
2814 goto yynewstate;
2815
2816
2817 /*-----------------------------------------------------------.
2818 | yydefault -- do the default action for the current state. |
2819 `-----------------------------------------------------------*/
2820 yydefault:
2821 yyn = yydefact[yystate];
2822 if (yyn == 0)
2823 goto yyerrlab;
2824 goto yyreduce;
2825
2826
2827 /*-----------------------------.
2828 | yyreduce -- Do a reduction. |
2829 `-----------------------------*/
2830 yyreduce:
2831 /* yyn is the number of a rule to reduce with. */
2832 yylen = yyr2[yyn];
2833
2834 /* If YYLEN is nonzero, implement the default value of the action:
2835 '$$ = $1'.
2836
2837 Otherwise, the following line sets YYVAL to garbage.
2838 This behavior is undocumented and Bison
2839 users should not rely upon it. Assigning to YYVAL
2840 unconditionally makes the parser a bit smaller, and it avoids a
2841 GCC warning that YYVAL may be used uninitialized. */
2842 yyval = yyvsp[1-yylen];
2843
2844
2845 YY_REDUCE_PRINT (yyn);
2846 switch (yyn)
2847 {
2848 case 28:
2849 #line 402 "conf_parser.y" /* yacc.c:1646 */
2850 { (yyval.number) = 0; }
2851 #line 2852 "conf_parser.c" /* yacc.c:1646 */
2852 break;
2853
2854 case 30:
2855 #line 403 "conf_parser.y" /* yacc.c:1646 */
2856 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2857 #line 2858 "conf_parser.c" /* yacc.c:1646 */
2858 break;
2859
2860 case 31:
2861 #line 404 "conf_parser.y" /* yacc.c:1646 */
2862 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2863 #line 2864 "conf_parser.c" /* yacc.c:1646 */
2864 break;
2865
2866 case 32:
2867 #line 405 "conf_parser.y" /* yacc.c:1646 */
2868 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2869 #line 2870 "conf_parser.c" /* yacc.c:1646 */
2870 break;
2871
2872 case 33:
2873 #line 406 "conf_parser.y" /* yacc.c:1646 */
2874 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2875 #line 2876 "conf_parser.c" /* yacc.c:1646 */
2876 break;
2877
2878 case 34:
2879 #line 407 "conf_parser.y" /* yacc.c:1646 */
2880 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2881 #line 2882 "conf_parser.c" /* yacc.c:1646 */
2882 break;
2883
2884 case 35:
2885 #line 408 "conf_parser.y" /* yacc.c:1646 */
2886 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2887 #line 2888 "conf_parser.c" /* yacc.c:1646 */
2888 break;
2889
2890 case 36:
2891 #line 409 "conf_parser.y" /* yacc.c:1646 */
2892 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2893 #line 2894 "conf_parser.c" /* yacc.c:1646 */
2894 break;
2895
2896 case 37:
2897 #line 410 "conf_parser.y" /* yacc.c:1646 */
2898 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2899 #line 2900 "conf_parser.c" /* yacc.c:1646 */
2900 break;
2901
2902 case 38:
2903 #line 413 "conf_parser.y" /* yacc.c:1646 */
2904 { (yyval.number) = 0; }
2905 #line 2906 "conf_parser.c" /* yacc.c:1646 */
2906 break;
2907
2908 case 40:
2909 #line 414 "conf_parser.y" /* yacc.c:1646 */
2910 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2911 #line 2912 "conf_parser.c" /* yacc.c:1646 */
2912 break;
2913
2914 case 41:
2915 #line 415 "conf_parser.y" /* yacc.c:1646 */
2916 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2917 #line 2918 "conf_parser.c" /* yacc.c:1646 */
2918 break;
2919
2920 case 42:
2921 #line 416 "conf_parser.y" /* yacc.c:1646 */
2922 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2923 #line 2924 "conf_parser.c" /* yacc.c:1646 */
2924 break;
2925
2926 case 43:
2927 #line 417 "conf_parser.y" /* yacc.c:1646 */
2928 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2929 #line 2930 "conf_parser.c" /* yacc.c:1646 */
2930 break;
2931
2932 case 50:
2933 #line 430 "conf_parser.y" /* yacc.c:1646 */
2934 {
2935 if (conf_parser_ctx.pass == 2)
2936 add_conf_module(libio_basename(yylval.string));
2937 }
2938 #line 2939 "conf_parser.c" /* yacc.c:1646 */
2939 break;
2940
2941 case 51:
2942 #line 436 "conf_parser.y" /* yacc.c:1646 */
2943 {
2944 if (conf_parser_ctx.pass == 2)
2945 mod_add_path(yylval.string);
2946 }
2947 #line 2948 "conf_parser.c" /* yacc.c:1646 */
2948 break;
2949
2950 case 73:
2951 #line 469 "conf_parser.y" /* yacc.c:1646 */
2952 {
2953 if (conf_parser_ctx.pass == 2)
2954 {
2955 xfree(ConfigServerInfo.ssl_certificate_file);
2956 ConfigServerInfo.ssl_certificate_file = xstrdup(yylval.string);
2957 }
2958 }
2959 #line 2960 "conf_parser.c" /* yacc.c:1646 */
2960 break;
2961
2962 case 74:
2963 #line 478 "conf_parser.y" /* yacc.c:1646 */
2964 {
2965 if (conf_parser_ctx.pass == 2)
2966 {
2967 xfree(ConfigServerInfo.rsa_private_key_file);
2968 ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
2969 }
2970 }
2971 #line 2972 "conf_parser.c" /* yacc.c:1646 */
2972 break;
2973
2974 case 75:
2975 #line 487 "conf_parser.y" /* yacc.c:1646 */
2976 {
2977 if (conf_parser_ctx.pass == 2)
2978 {
2979 xfree(ConfigServerInfo.ssl_dh_param_file);
2980 ConfigServerInfo.ssl_dh_param_file = xstrdup(yylval.string);
2981 }
2982 }
2983 #line 2984 "conf_parser.c" /* yacc.c:1646 */
2984 break;
2985
2986 case 76:
2987 #line 496 "conf_parser.y" /* yacc.c:1646 */
2988 {
2989 if (conf_parser_ctx.pass == 2)
2990 {
2991 xfree(ConfigServerInfo.ssl_cipher_list);
2992 ConfigServerInfo.ssl_cipher_list = xstrdup(yylval.string);
2993 }
2994 }
2995 #line 2996 "conf_parser.c" /* yacc.c:1646 */
2996 break;
2997
2998 case 77:
2999 #line 505 "conf_parser.y" /* yacc.c:1646 */
3000 {
3001 if (conf_parser_ctx.pass == 2)
3002 {
3003 xfree(ConfigServerInfo.ssl_message_digest_algorithm);
3004 ConfigServerInfo.ssl_message_digest_algorithm = xstrdup(yylval.string);
3005 }
3006 }
3007 #line 3008 "conf_parser.c" /* yacc.c:1646 */
3008 break;
3009
3010 case 78:
3011 #line 514 "conf_parser.y" /* yacc.c:1646 */
3012 {
3013 if (conf_parser_ctx.pass == 2)
3014 {
3015 xfree(ConfigServerInfo.ssl_dh_elliptic_curve);
3016 ConfigServerInfo.ssl_dh_elliptic_curve = xstrdup(yylval.string);
3017 }
3018 }
3019 #line 3020 "conf_parser.c" /* yacc.c:1646 */
3020 break;
3021
3022 case 79:
3023 #line 523 "conf_parser.y" /* yacc.c:1646 */
3024 {
3025 /* This isn't rehashable */
3026 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.name)
3027 {
3028 if (valid_servname(yylval.string))
3029 ConfigServerInfo.name = xstrdup(yylval.string);
3030 else
3031 {
3032 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3033 exit(EXIT_FAILURE);
3034 }
3035 }
3036 }
3037 #line 3038 "conf_parser.c" /* yacc.c:1646 */
3038 break;
3039
3040 case 80:
3041 #line 538 "conf_parser.y" /* yacc.c:1646 */
3042 {
3043 /* This isn't rehashable */
3044 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.sid)
3045 {
3046 if (valid_sid(yylval.string))
3047 ConfigServerInfo.sid = xstrdup(yylval.string);
3048 else
3049 {
3050 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3051 exit(EXIT_FAILURE);
3052 }
3053 }
3054 }
3055 #line 3056 "conf_parser.c" /* yacc.c:1646 */
3056 break;
3057
3058 case 81:
3059 #line 553 "conf_parser.y" /* yacc.c:1646 */
3060 {
3061 if (conf_parser_ctx.pass == 2)
3062 {
3063 xfree(ConfigServerInfo.description);
3064 ConfigServerInfo.description = xstrdup(yylval.string);
3065 strlcpy(me.info, ConfigServerInfo.description, sizeof(me.info));
3066 }
3067 }
3068 #line 3069 "conf_parser.c" /* yacc.c:1646 */
3069 break;
3070
3071 case 82:
3072 #line 563 "conf_parser.y" /* yacc.c:1646 */
3073 {
3074 if (conf_parser_ctx.pass == 2)
3075 {
3076 char *p;
3077
3078 if ((p = strchr(yylval.string, ' ')))
3079 *p = '\0';
3080
3081 xfree(ConfigServerInfo.network_name);
3082 ConfigServerInfo.network_name = xstrdup(yylval.string);
3083 }
3084 }
3085 #line 3086 "conf_parser.c" /* yacc.c:1646 */
3086 break;
3087
3088 case 83:
3089 #line 577 "conf_parser.y" /* yacc.c:1646 */
3090 {
3091 if (conf_parser_ctx.pass != 2)
3092 break;
3093
3094 xfree(ConfigServerInfo.network_desc);
3095 ConfigServerInfo.network_desc = xstrdup(yylval.string);
3096 }
3097 #line 3098 "conf_parser.c" /* yacc.c:1646 */
3098 break;
3099
3100 case 84:
3101 #line 586 "conf_parser.y" /* yacc.c:1646 */
3102 {
3103 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3104 {
3105 struct addrinfo hints, *res;
3106
3107 memset(&hints, 0, sizeof(hints));
3108
3109 hints.ai_family = AF_UNSPEC;
3110 hints.ai_socktype = SOCK_STREAM;
3111 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3112
3113 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3114 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3115 else
3116 {
3117 assert(res);
3118
3119 memcpy(&ConfigServerInfo.ip, res->ai_addr, res->ai_addrlen);
3120 ConfigServerInfo.ip.ss.ss_family = res->ai_family;
3121 ConfigServerInfo.ip.ss_len = res->ai_addrlen;
3122 freeaddrinfo(res);
3123
3124 ConfigServerInfo.specific_ipv4_vhost = 1;
3125 }
3126 }
3127 }
3128 #line 3129 "conf_parser.c" /* yacc.c:1646 */
3129 break;
3130
3131 case 85:
3132 #line 614 "conf_parser.y" /* yacc.c:1646 */
3133 {
3134 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3135 {
3136 struct addrinfo hints, *res;
3137
3138 memset(&hints, 0, sizeof(hints));
3139
3140 hints.ai_family = AF_UNSPEC;
3141 hints.ai_socktype = SOCK_STREAM;
3142 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3143
3144 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3145 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3146 else
3147 {
3148 assert(res);
3149
3150 memcpy(&ConfigServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3151 ConfigServerInfo.ip6.ss.ss_family = res->ai_family;
3152 ConfigServerInfo.ip6.ss_len = res->ai_addrlen;
3153 freeaddrinfo(res);
3154
3155 ConfigServerInfo.specific_ipv6_vhost = 1;
3156 }
3157 }
3158 }
3159 #line 3160 "conf_parser.c" /* yacc.c:1646 */
3160 break;
3161
3162 case 86:
3163 #line 642 "conf_parser.y" /* yacc.c:1646 */
3164 {
3165 if (conf_parser_ctx.pass != 2)
3166 break;
3167
3168 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3169 {
3170 char buf[IRCD_BUFSIZE] = "";
3171
3172 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3173 conf_error_report(buf);
3174 ConfigServerInfo.default_max_clients = MAXCLIENTS_MIN;
3175 }
3176 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3177 {
3178 char buf[IRCD_BUFSIZE] = "";
3179
3180 snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3181 conf_error_report(buf);
3182 ConfigServerInfo.default_max_clients = MAXCLIENTS_MAX;
3183 }
3184 else
3185 ConfigServerInfo.default_max_clients = (yyvsp[-1].number);
3186 }
3187 #line 3188 "conf_parser.c" /* yacc.c:1646 */
3188 break;
3189
3190 case 87:
3191 #line 667 "conf_parser.y" /* yacc.c:1646 */
3192 {
3193 if (conf_parser_ctx.pass != 2)
3194 break;
3195
3196 if ((yyvsp[-1].number) < 9)
3197 {
3198 conf_error_report("max_nick_length too low, setting to 9");
3199 ConfigServerInfo.max_nick_length = 9;
3200 }
3201 else if ((yyvsp[-1].number) > NICKLEN)
3202 {
3203 char buf[IRCD_BUFSIZE] = "";
3204
3205 snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3206 conf_error_report(buf);
3207 ConfigServerInfo.max_nick_length = NICKLEN;
3208 }
3209 else
3210 ConfigServerInfo.max_nick_length = (yyvsp[-1].number);
3211 }
3212 #line 3213 "conf_parser.c" /* yacc.c:1646 */
3213 break;
3214
3215 case 88:
3216 #line 689 "conf_parser.y" /* yacc.c:1646 */
3217 {
3218 if (conf_parser_ctx.pass != 2)
3219 break;
3220
3221 if ((yyvsp[-1].number) < 80)
3222 {
3223 conf_error_report("max_topic_length too low, setting to 80");
3224 ConfigServerInfo.max_topic_length = 80;
3225 }
3226 else if ((yyvsp[-1].number) > TOPICLEN)
3227 {
3228 char buf[IRCD_BUFSIZE] = "";
3229
3230 snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3231 conf_error_report(buf);
3232 ConfigServerInfo.max_topic_length = TOPICLEN;
3233 }
3234 else
3235 ConfigServerInfo.max_topic_length = (yyvsp[-1].number);
3236 }
3237 #line 3238 "conf_parser.c" /* yacc.c:1646 */
3238 break;
3239
3240 case 89:
3241 #line 711 "conf_parser.y" /* yacc.c:1646 */
3242 {
3243 if (conf_parser_ctx.pass == 2)
3244 ConfigServerInfo.hub = yylval.number;
3245 }
3246 #line 3247 "conf_parser.c" /* yacc.c:1646 */
3247 break;
3248
3249 case 97:
3250 #line 729 "conf_parser.y" /* yacc.c:1646 */
3251 {
3252 if (conf_parser_ctx.pass != 2)
3253 break;
3254
3255 xfree(ConfigAdminInfo.name);
3256 ConfigAdminInfo.name = xstrdup(yylval.string);
3257 }
3258 #line 3259 "conf_parser.c" /* yacc.c:1646 */
3259 break;
3260
3261 case 98:
3262 #line 738 "conf_parser.y" /* yacc.c:1646 */
3263 {
3264 if (conf_parser_ctx.pass != 2)
3265 break;
3266
3267 xfree(ConfigAdminInfo.email);
3268 ConfigAdminInfo.email = xstrdup(yylval.string);
3269 }
3270 #line 3271 "conf_parser.c" /* yacc.c:1646 */
3271 break;
3272
3273 case 99:
3274 #line 747 "conf_parser.y" /* yacc.c:1646 */
3275 {
3276 if (conf_parser_ctx.pass != 2)
3277 break;
3278
3279 xfree(ConfigAdminInfo.description);
3280 ConfigAdminInfo.description = xstrdup(yylval.string);
3281 }
3282 #line 3283 "conf_parser.c" /* yacc.c:1646 */
3283 break;
3284
3285 case 100:
3286 #line 760 "conf_parser.y" /* yacc.c:1646 */
3287 {
3288 if (conf_parser_ctx.pass == 2)
3289 reset_block_state();
3290 }
3291 #line 3292 "conf_parser.c" /* yacc.c:1646 */
3292 break;
3293
3294 case 101:
3295 #line 764 "conf_parser.y" /* yacc.c:1646 */
3296 {
3297 dlink_node *node = NULL;
3298
3299 if (conf_parser_ctx.pass != 2)
3300 break;
3301
3302 if (!block_state.file.buf[0])
3303 break;
3304
3305 DLINK_FOREACH(node, block_state.mask.list.head)
3306 motd_add(node->data, block_state.file.buf);
3307 }
3308 #line 3309 "conf_parser.c" /* yacc.c:1646 */
3309 break;
3310
3311 case 107:
3312 #line 781 "conf_parser.y" /* yacc.c:1646 */
3313 {
3314 if (conf_parser_ctx.pass == 2)
3315 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3316 }
3317 #line 3318 "conf_parser.c" /* yacc.c:1646 */
3318 break;
3319
3320 case 108:
3321 #line 787 "conf_parser.y" /* yacc.c:1646 */
3322 {
3323 if (conf_parser_ctx.pass == 2)
3324 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3325 }
3326 #line 3327 "conf_parser.c" /* yacc.c:1646 */
3327 break;
3328
3329 case 109:
3330 #line 797 "conf_parser.y" /* yacc.c:1646 */
3331 {
3332 if (conf_parser_ctx.pass == 2)
3333 reset_block_state();
3334 }
3335 #line 3336 "conf_parser.c" /* yacc.c:1646 */
3336 break;
3337
3338 case 110:
3339 #line 801 "conf_parser.y" /* yacc.c:1646 */
3340 {
3341 if (conf_parser_ctx.pass != 2)
3342 break;
3343
3344 if (!block_state.command.buf[0] ||
3345 !block_state.name.buf[0] ||
3346 !block_state.nick.buf[0] ||
3347 !block_state.host.buf[0])
3348 break;
3349
3350 pseudo_register(block_state.name.buf, block_state.nick.buf, block_state.host.buf,
3351 block_state.prepend.buf, block_state.command.buf);
3352 }
3353 #line 3354 "conf_parser.c" /* yacc.c:1646 */
3354 break;
3355
3356 case 118:
3357 #line 819 "conf_parser.y" /* yacc.c:1646 */
3358 {
3359 if (conf_parser_ctx.pass == 2)
3360 strlcpy(block_state.command.buf, yylval.string, sizeof(block_state.command.buf));
3361 }
3362 #line 3363 "conf_parser.c" /* yacc.c:1646 */
3363 break;
3364
3365 case 119:
3366 #line 825 "conf_parser.y" /* yacc.c:1646 */
3367 {
3368 if (conf_parser_ctx.pass == 2)
3369 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3370 }
3371 #line 3372 "conf_parser.c" /* yacc.c:1646 */
3372 break;
3373
3374 case 120:
3375 #line 831 "conf_parser.y" /* yacc.c:1646 */
3376 {
3377 if (conf_parser_ctx.pass == 2)
3378 strlcpy(block_state.prepend.buf, yylval.string, sizeof(block_state.prepend.buf));
3379 }
3380 #line 3381 "conf_parser.c" /* yacc.c:1646 */
3381 break;
3382
3383 case 121:
3384 #line 837 "conf_parser.y" /* yacc.c:1646 */
3385 {
3386 if (conf_parser_ctx.pass == 2)
3387 {
3388 struct split_nuh_item nuh;
3389
3390 nuh.nuhmask = yylval.string;
3391 nuh.nickptr = NULL;
3392 nuh.userptr = block_state.nick.buf;
3393 nuh.hostptr = block_state.host.buf;
3394 nuh.nicksize = 0;
3395 nuh.usersize = sizeof(block_state.nick.buf);
3396 nuh.hostsize = sizeof(block_state.host.buf);
3397
3398 split_nuh(&nuh);
3399 }
3400 }
3401 #line 3402 "conf_parser.c" /* yacc.c:1646 */
3402 break;
3403
3404 case 128:
3405 #line 865 "conf_parser.y" /* yacc.c:1646 */
3406 {
3407 if (conf_parser_ctx.pass == 2)
3408 ConfigLog.use_logging = yylval.number;
3409 }
3410 #line 3411 "conf_parser.c" /* yacc.c:1646 */
3411 break;
3412
3413 case 129:
3414 #line 871 "conf_parser.y" /* yacc.c:1646 */
3415 {
3416 if (conf_parser_ctx.pass == 2)
3417 reset_block_state();
3418 }
3419 #line 3420 "conf_parser.c" /* yacc.c:1646 */
3420 break;
3421
3422 case 130:
3423 #line 875 "conf_parser.y" /* yacc.c:1646 */
3424 {
3425 if (conf_parser_ctx.pass != 2)
3426 break;
3427
3428 if (block_state.type.value && block_state.file.buf[0])
3429 log_set_file(block_state.type.value, block_state.size.value,
3430 block_state.file.buf);
3431 }
3432 #line 3433 "conf_parser.c" /* yacc.c:1646 */
3433 break;
3434
3435 case 137:
3436 #line 891 "conf_parser.y" /* yacc.c:1646 */
3437 {
3438 if (conf_parser_ctx.pass != 2)
3439 break;
3440
3441 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3442 }
3443 #line 3444 "conf_parser.c" /* yacc.c:1646 */
3444 break;
3445
3446 case 138:
3447 #line 899 "conf_parser.y" /* yacc.c:1646 */
3448 {
3449 block_state.size.value = (yyvsp[-1].number);
3450 }
3451 #line 3452 "conf_parser.c" /* yacc.c:1646 */
3452 break;
3453
3454 case 139:
3455 #line 902 "conf_parser.y" /* yacc.c:1646 */
3456 {
3457 block_state.size.value = 0;
3458 }
3459 #line 3460 "conf_parser.c" /* yacc.c:1646 */
3460 break;
3461
3462 case 140:
3463 #line 907 "conf_parser.y" /* yacc.c:1646 */
3464 {
3465 if (conf_parser_ctx.pass == 2)
3466 block_state.type.value = 0;
3467 }
3468 #line 3469 "conf_parser.c" /* yacc.c:1646 */
3469 break;
3470
3471 case 144:
3472 #line 914 "conf_parser.y" /* yacc.c:1646 */
3473 {
3474 if (conf_parser_ctx.pass == 2)
3475 block_state.type.value = LOG_TYPE_USER;
3476 }
3477 #line 3478 "conf_parser.c" /* yacc.c:1646 */
3478 break;
3479
3480 case 145:
3481 #line 918 "conf_parser.y" /* yacc.c:1646 */
3482 {
3483 if (conf_parser_ctx.pass == 2)
3484 block_state.type.value = LOG_TYPE_OPER;
3485 }
3486 #line 3487 "conf_parser.c" /* yacc.c:1646 */
3487 break;
3488
3489 case 146:
3490 #line 922 "conf_parser.y" /* yacc.c:1646 */
3491 {
3492 if (conf_parser_ctx.pass == 2)
3493 block_state.type.value = LOG_TYPE_XLINE;
3494 }
3495 #line 3496 "conf_parser.c" /* yacc.c:1646 */
3496 break;
3497
3498 case 147:
3499 #line 926 "conf_parser.y" /* yacc.c:1646 */
3500 {
3501 if (conf_parser_ctx.pass == 2)
3502 block_state.type.value = LOG_TYPE_RESV;
3503 }
3504 #line 3505 "conf_parser.c" /* yacc.c:1646 */
3505 break;
3506
3507 case 148:
3508 #line 930 "conf_parser.y" /* yacc.c:1646 */
3509 {
3510 if (conf_parser_ctx.pass == 2)
3511 block_state.type.value = LOG_TYPE_DLINE;
3512 }
3513 #line 3514 "conf_parser.c" /* yacc.c:1646 */
3514 break;
3515
3516 case 149:
3517 #line 934 "conf_parser.y" /* yacc.c:1646 */
3518 {
3519 if (conf_parser_ctx.pass == 2)
3520 block_state.type.value = LOG_TYPE_KLINE;
3521 }
3522 #line 3523 "conf_parser.c" /* yacc.c:1646 */
3523 break;
3524
3525 case 150:
3526 #line 938 "conf_parser.y" /* yacc.c:1646 */
3527 {
3528 if (conf_parser_ctx.pass == 2)
3529 block_state.type.value = LOG_TYPE_KILL;
3530 }
3531 #line 3532 "conf_parser.c" /* yacc.c:1646 */
3532 break;
3533
3534 case 151:
3535 #line 942 "conf_parser.y" /* yacc.c:1646 */
3536 {
3537 if (conf_parser_ctx.pass == 2)
3538 block_state.type.value = LOG_TYPE_DEBUG;
3539 }
3540 #line 3541 "conf_parser.c" /* yacc.c:1646 */
3541 break;
3542
3543 case 152:
3544 #line 952 "conf_parser.y" /* yacc.c:1646 */
3545 {
3546 if (conf_parser_ctx.pass != 2)
3547 break;
3548
3549 reset_block_state();
3550 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3551 }
3552 #line 3553 "conf_parser.c" /* yacc.c:1646 */
3553 break;
3554
3555 case 153:
3556 #line 959 "conf_parser.y" /* yacc.c:1646 */
3557 {
3558 dlink_node *node = NULL;
3559
3560 if (conf_parser_ctx.pass != 2)
3561 break;
3562
3563 if (!block_state.name.buf[0])
3564 break;
3565
3566 if (!block_state.rpass.buf[0])
3567 break;
3568
3569 DLINK_FOREACH(node, block_state.mask.list.head)
3570 {
3571 struct MaskItem *conf = NULL;
3572 struct split_nuh_item nuh;
3573
3574 nuh.nuhmask = node->data;
3575 nuh.nickptr = NULL;
3576 nuh.userptr = block_state.user.buf;
3577 nuh.hostptr = block_state.host.buf;
3578 nuh.nicksize = 0;
3579 nuh.usersize = sizeof(block_state.user.buf);
3580 nuh.hostsize = sizeof(block_state.host.buf);
3581 split_nuh(&nuh);
3582
3583 conf = conf_make(CONF_OPER);
3584 conf->name = xstrdup(block_state.name.buf);
3585 conf->user = xstrdup(block_state.user.buf);
3586 conf->host = xstrdup(block_state.host.buf);
3587
3588 if (block_state.cert.buf[0])
3589 conf->certfp = xstrdup(block_state.cert.buf);
3590
3591 if (block_state.rpass.buf[0])
3592 conf->passwd = xstrdup(block_state.rpass.buf);
3593
3594 if (block_state.whois.buf[0])
3595 conf->whois = xstrdup(block_state.whois.buf);
3596
3597 conf->flags = block_state.flags.value;
3598 conf->modes = block_state.modes.value;
3599 conf->port = block_state.port.value;
3600 conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3601
3602 conf_add_class_to_conf(conf, block_state.class.buf);
3603 }
3604 }
3605 #line 3606 "conf_parser.c" /* yacc.c:1646 */
3606 break;
3607
3608 case 167:
3609 #line 1022 "conf_parser.y" /* yacc.c:1646 */
3610 {
3611 if (conf_parser_ctx.pass == 2)
3612 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3613 }
3614 #line 3615 "conf_parser.c" /* yacc.c:1646 */
3615 break;
3616
3617 case 168:
3618 #line 1028 "conf_parser.y" /* yacc.c:1646 */
3619 {
3620 if (conf_parser_ctx.pass == 2)
3621 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3622 }
3623 #line 3624 "conf_parser.c" /* yacc.c:1646 */
3624 break;
3625
3626 case 169:
3627 #line 1034 "conf_parser.y" /* yacc.c:1646 */
3628 {
3629 if (conf_parser_ctx.pass == 2)
3630 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3631 }
3632 #line 3633 "conf_parser.c" /* yacc.c:1646 */
3633 break;
3634
3635 case 170:
3636 #line 1040 "conf_parser.y" /* yacc.c:1646 */
3637 {
3638 if (conf_parser_ctx.pass == 2)
3639 strlcpy(block_state.whois.buf, yylval.string, sizeof(block_state.whois.buf));
3640 }
3641 #line 3642 "conf_parser.c" /* yacc.c:1646 */
3642 break;
3643
3644 case 171:
3645 #line 1046 "conf_parser.y" /* yacc.c:1646 */
3646 {
3647 if (conf_parser_ctx.pass != 2)
3648 break;
3649
3650 if (yylval.number)
3651 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3652 else
3653 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3654 }
3655 #line 3656 "conf_parser.c" /* yacc.c:1646 */
3656 break;
3657
3658 case 172:
3659 #line 1057 "conf_parser.y" /* yacc.c:1646 */
3660 {
3661 if (conf_parser_ctx.pass == 2)
3662 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3663 }
3664 #line 3665 "conf_parser.c" /* yacc.c:1646 */
3665 break;
3666
3667 case 173:
3668 #line 1063 "conf_parser.y" /* yacc.c:1646 */
3669 {
3670 if (conf_parser_ctx.pass != 2)
3671 break;
3672
3673 if (yylval.number)
3674 block_state.flags.value |= CONF_FLAGS_SSL;
3675 else
3676 block_state.flags.value &= ~CONF_FLAGS_SSL;
3677 }
3678 #line 3679 "conf_parser.c" /* yacc.c:1646 */
3679 break;
3680
3681 case 174:
3682 #line 1074 "conf_parser.y" /* yacc.c:1646 */
3683 {
3684 if (conf_parser_ctx.pass == 2)
3685 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3686 }
3687 #line 3688 "conf_parser.c" /* yacc.c:1646 */
3688 break;
3689
3690 case 175:
3691 #line 1080 "conf_parser.y" /* yacc.c:1646 */
3692 {
3693 if (conf_parser_ctx.pass == 2)
3694 block_state.modes.value = 0;
3695 }
3696 #line 3697 "conf_parser.c" /* yacc.c:1646 */
3697 break;
3698
3699 case 179:
3700 #line 1087 "conf_parser.y" /* yacc.c:1646 */
3701 {
3702 if (conf_parser_ctx.pass == 2)
3703 block_state.modes.value |= UMODE_BOTS;
3704 }
3705 #line 3706 "conf_parser.c" /* yacc.c:1646 */
3706 break;
3707
3708 case 180:
3709 #line 1091 "conf_parser.y" /* yacc.c:1646 */
3710 {
3711 if (conf_parser_ctx.pass == 2)
3712 block_state.modes.value |= UMODE_CCONN;
3713 }
3714 #line 3715 "conf_parser.c" /* yacc.c:1646 */
3715 break;
3716
3717 case 181:
3718 #line 1095 "conf_parser.y" /* yacc.c:1646 */
3719 {
3720 if (conf_parser_ctx.pass == 2)
3721 block_state.modes.value |= UMODE_DEAF;
3722 }
3723 #line 3724 "conf_parser.c" /* yacc.c:1646 */
3724 break;
3725
3726 case 182:
3727 #line 1099 "conf_parser.y" /* yacc.c:1646 */
3728 {
3729 if (conf_parser_ctx.pass == 2)
3730 block_state.modes.value |= UMODE_DEBUG;
3731 }
3732 #line 3733 "conf_parser.c" /* yacc.c:1646 */
3733 break;
3734
3735 case 183:
3736 #line 1103 "conf_parser.y" /* yacc.c:1646 */
3737 {
3738 if (conf_parser_ctx.pass == 2)
3739 block_state.modes.value |= UMODE_FULL;
3740 }
3741 #line 3742 "conf_parser.c" /* yacc.c:1646 */
3742 break;
3743
3744 case 184:
3745 #line 1107 "conf_parser.y" /* yacc.c:1646 */
3746 {
3747 if (conf_parser_ctx.pass == 2)
3748 block_state.modes.value |= UMODE_HIDDEN;
3749 }
3750 #line 3751 "conf_parser.c" /* yacc.c:1646 */
3751 break;
3752
3753 case 185:
3754 #line 1111 "conf_parser.y" /* yacc.c:1646 */
3755 {
3756 if (conf_parser_ctx.pass == 2)
3757 block_state.modes.value |= UMODE_HIDECHANS;
3758 }
3759 #line 3760 "conf_parser.c" /* yacc.c:1646 */
3760 break;
3761
3762 case 186:
3763 #line 1115 "conf_parser.y" /* yacc.c:1646 */
3764 {
3765 if (conf_parser_ctx.pass == 2)
3766 block_state.modes.value |= UMODE_HIDEIDLE;
3767 }
3768 #line 3769 "conf_parser.c" /* yacc.c:1646 */
3769 break;
3770
3771 case 187:
3772 #line 1119 "conf_parser.y" /* yacc.c:1646 */
3773 {
3774 if (conf_parser_ctx.pass == 2)
3775 block_state.modes.value |= UMODE_SKILL;
3776 }
3777 #line 3778 "conf_parser.c" /* yacc.c:1646 */
3778 break;
3779
3780 case 188:
3781 #line 1123 "conf_parser.y" /* yacc.c:1646 */
3782 {
3783 if (conf_parser_ctx.pass == 2)
3784 block_state.modes.value |= UMODE_NCHANGE;
3785 }
3786 #line 3787 "conf_parser.c" /* yacc.c:1646 */
3787 break;
3788
3789 case 189:
3790 #line 1127 "conf_parser.y" /* yacc.c:1646 */
3791 {
3792 if (conf_parser_ctx.pass == 2)
3793 block_state.modes.value |= UMODE_REJ;
3794 }
3795 #line 3796 "conf_parser.c" /* yacc.c:1646 */
3796 break;
3797
3798 case 190:
3799 #line 1131 "conf_parser.y" /* yacc.c:1646 */
3800 {
3801 if (conf_parser_ctx.pass == 2)
3802 block_state.modes.value |= UMODE_UNAUTH;
3803 }
3804 #line 3805 "conf_parser.c" /* yacc.c:1646 */
3805 break;
3806
3807 case 191:
3808 #line 1135 "conf_parser.y" /* yacc.c:1646 */
3809 {
3810 if (conf_parser_ctx.pass == 2)
3811 block_state.modes.value |= UMODE_SPY;
3812 }
3813 #line 3814 "conf_parser.c" /* yacc.c:1646 */
3814 break;
3815
3816 case 192:
3817 #line 1139 "conf_parser.y" /* yacc.c:1646 */
3818 {
3819 if (conf_parser_ctx.pass == 2)
3820 block_state.modes.value |= UMODE_EXTERNAL;
3821 }
3822 #line 3823 "conf_parser.c" /* yacc.c:1646 */
3823 break;
3824
3825 case 193:
3826 #line 1143 "conf_parser.y" /* yacc.c:1646 */
3827 {
3828 if (conf_parser_ctx.pass == 2)
3829 block_state.modes.value |= UMODE_SERVNOTICE;
3830 }
3831 #line 3832 "conf_parser.c" /* yacc.c:1646 */
3832 break;
3833
3834 case 194:
3835 #line 1147 "conf_parser.y" /* yacc.c:1646 */
3836 {
3837 if (conf_parser_ctx.pass == 2)
3838 block_state.modes.value |= UMODE_INVISIBLE;
3839 }
3840 #line 3841 "conf_parser.c" /* yacc.c:1646 */
3841 break;
3842
3843 case 195:
3844 #line 1151 "conf_parser.y" /* yacc.c:1646 */
3845 {
3846 if (conf_parser_ctx.pass == 2)
3847 block_state.modes.value |= UMODE_WALLOP;
3848 }
3849 #line 3850 "conf_parser.c" /* yacc.c:1646 */
3850 break;
3851
3852 case 196:
3853 #line 1155 "conf_parser.y" /* yacc.c:1646 */
3854 {
3855 if (conf_parser_ctx.pass == 2)
3856 block_state.modes.value |= UMODE_SOFTCALLERID;
3857 }
3858 #line 3859 "conf_parser.c" /* yacc.c:1646 */
3859 break;
3860
3861 case 197:
3862 #line 1159 "conf_parser.y" /* yacc.c:1646 */
3863 {
3864 if (conf_parser_ctx.pass == 2)
3865 block_state.modes.value |= UMODE_CALLERID;
3866 }
3867 #line 3868 "conf_parser.c" /* yacc.c:1646 */
3868 break;
3869
3870 case 198:
3871 #line 1163 "conf_parser.y" /* yacc.c:1646 */
3872 {
3873 if (conf_parser_ctx.pass == 2)
3874 block_state.modes.value |= UMODE_LOCOPS;
3875 }
3876 #line 3877 "conf_parser.c" /* yacc.c:1646 */
3877 break;
3878
3879 case 199:
3880 #line 1167 "conf_parser.y" /* yacc.c:1646 */
3881 {
3882 if (conf_parser_ctx.pass == 2)
3883 block_state.modes.value |= UMODE_REGONLY;
3884 }
3885 #line 3886 "conf_parser.c" /* yacc.c:1646 */
3886 break;
3887
3888 case 200:
3889 #line 1171 "conf_parser.y" /* yacc.c:1646 */
3890 {
3891 if (conf_parser_ctx.pass == 2)
3892 block_state.modes.value |= UMODE_FARCONNECT;
3893 }
3894 #line 3895 "conf_parser.c" /* yacc.c:1646 */
3895 break;
3896
3897 case 201:
3898 #line 1177 "conf_parser.y" /* yacc.c:1646 */
3899 {
3900 if (conf_parser_ctx.pass == 2)
3901 block_state.port.value = 0;
3902 }
3903 #line 3904 "conf_parser.c" /* yacc.c:1646 */
3904 break;
3905
3906 case 205:
3907 #line 1184 "conf_parser.y" /* yacc.c:1646 */
3908 {
3909 if (conf_parser_ctx.pass == 2)
3910 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
3911 }
3912 #line 3913 "conf_parser.c" /* yacc.c:1646 */
3913 break;
3914
3915 case 206:
3916 #line 1188 "conf_parser.y" /* yacc.c:1646 */
3917 {
3918 if (conf_parser_ctx.pass == 2)
3919 block_state.port.value |= OPER_FLAG_KILL;
3920 }
3921 #line 3922 "conf_parser.c" /* yacc.c:1646 */
3922 break;
3923
3924 case 207:
3925 #line 1192 "conf_parser.y" /* yacc.c:1646 */
3926 {
3927 if (conf_parser_ctx.pass == 2)
3928 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
3929 }
3930 #line 3931 "conf_parser.c" /* yacc.c:1646 */
3931 break;
3932
3933 case 208:
3934 #line 1196 "conf_parser.y" /* yacc.c:1646 */
3935 {
3936 if (conf_parser_ctx.pass == 2)
3937 block_state.port.value |= OPER_FLAG_CONNECT;
3938 }
3939 #line 3940 "conf_parser.c" /* yacc.c:1646 */
3940 break;
3941
3942 case 209:
3943 #line 1200 "conf_parser.y" /* yacc.c:1646 */
3944 {
3945 if (conf_parser_ctx.pass == 2)
3946 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
3947 }
3948 #line 3949 "conf_parser.c" /* yacc.c:1646 */
3949 break;
3950
3951 case 210:
3952 #line 1204 "conf_parser.y" /* yacc.c:1646 */
3953 {
3954 if (conf_parser_ctx.pass == 2)
3955 block_state.port.value |= OPER_FLAG_SQUIT;
3956 }
3957 #line 3958 "conf_parser.c" /* yacc.c:1646 */
3958 break;
3959
3960 case 211:
3961 #line 1208 "conf_parser.y" /* yacc.c:1646 */
3962 {
3963 if (conf_parser_ctx.pass == 2)
3964 block_state.port.value |= OPER_FLAG_KLINE;
3965 }
3966 #line 3967 "conf_parser.c" /* yacc.c:1646 */
3967 break;
3968
3969 case 212:
3970 #line 1212 "conf_parser.y" /* yacc.c:1646 */
3971 {
3972 if (conf_parser_ctx.pass == 2)
3973 block_state.port.value |= OPER_FLAG_UNKLINE;
3974 }
3975 #line 3976 "conf_parser.c" /* yacc.c:1646 */
3976 break;
3977
3978 case 213:
3979 #line 1216 "conf_parser.y" /* yacc.c:1646 */
3980 {
3981 if (conf_parser_ctx.pass == 2)
3982 block_state.port.value |= OPER_FLAG_DLINE;
3983 }
3984 #line 3985 "conf_parser.c" /* yacc.c:1646 */
3985 break;
3986
3987 case 214:
3988 #line 1220 "conf_parser.y" /* yacc.c:1646 */
3989 {
3990 if (conf_parser_ctx.pass == 2)
3991 block_state.port.value |= OPER_FLAG_UNDLINE;
3992 }
3993 #line 3994 "conf_parser.c" /* yacc.c:1646 */
3994 break;
3995
3996 case 215:
3997 #line 1224 "conf_parser.y" /* yacc.c:1646 */
3998 {
3999 if (conf_parser_ctx.pass == 2)
4000 block_state.port.value |= OPER_FLAG_XLINE;
4001 }
4002 #line 4003 "conf_parser.c" /* yacc.c:1646 */
4003 break;
4004
4005 case 216:
4006 #line 1228 "conf_parser.y" /* yacc.c:1646 */
4007 {
4008 if (conf_parser_ctx.pass == 2)
4009 block_state.port.value |= OPER_FLAG_UNXLINE;
4010 }
4011 #line 4012 "conf_parser.c" /* yacc.c:1646 */
4012 break;
4013
4014 case 217:
4015 #line 1232 "conf_parser.y" /* yacc.c:1646 */
4016 {
4017 if (conf_parser_ctx.pass == 2)
4018 block_state.port.value |= OPER_FLAG_DIE;
4019 }
4020 #line 4021 "conf_parser.c" /* yacc.c:1646 */
4021 break;
4022
4023 case 218:
4024 #line 1236 "conf_parser.y" /* yacc.c:1646 */
4025 {
4026 if (conf_parser_ctx.pass == 2)
4027 block_state.port.value |= OPER_FLAG_RESTART;
4028 }
4029 #line 4030 "conf_parser.c" /* yacc.c:1646 */
4030 break;
4031
4032 case 219:
4033 #line 1240 "conf_parser.y" /* yacc.c:1646 */
4034 {
4035 if (conf_parser_ctx.pass == 2)
4036 block_state.port.value |= OPER_FLAG_REHASH_REMOTE;
4037 }
4038 #line 4039 "conf_parser.c" /* yacc.c:1646 */
4039 break;
4040
4041 case 220:
4042 #line 1244 "conf_parser.y" /* yacc.c:1646 */
4043 {
4044 if (conf_parser_ctx.pass == 2)
4045 block_state.port.value |= OPER_FLAG_REHASH;
4046 }
4047 #line 4048 "conf_parser.c" /* yacc.c:1646 */
4048 break;
4049
4050 case 221:
4051 #line 1248 "conf_parser.y" /* yacc.c:1646 */
4052 {
4053 if (conf_parser_ctx.pass == 2)
4054 block_state.port.value |= OPER_FLAG_ADMIN;
4055 }
4056 #line 4057 "conf_parser.c" /* yacc.c:1646 */
4057 break;
4058
4059 case 222:
4060 #line 1252 "conf_parser.y" /* yacc.c:1646 */
4061 {
4062 if (conf_parser_ctx.pass == 2)
4063 block_state.port.value |= OPER_FLAG_GLOBOPS;
4064 }
4065 #line 4066 "conf_parser.c" /* yacc.c:1646 */
4066 break;
4067
4068 case 223:
4069 #line 1256 "conf_parser.y" /* yacc.c:1646 */
4070 {
4071 if (conf_parser_ctx.pass == 2)
4072 block_state.port.value |= OPER_FLAG_WALLOPS;
4073 }
4074 #line 4075 "conf_parser.c" /* yacc.c:1646 */
4075 break;
4076
4077 case 224:
4078 #line 1260 "conf_parser.y" /* yacc.c:1646 */
4079 {
4080 if (conf_parser_ctx.pass == 2)
4081 block_state.port.value |= OPER_FLAG_LOCOPS;
4082 }
4083 #line 4084 "conf_parser.c" /* yacc.c:1646 */
4084 break;
4085
4086 case 225:
4087 #line 1264 "conf_parser.y" /* yacc.c:1646 */
4088 {
4089 if (conf_parser_ctx.pass == 2)
4090 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4091 }
4092 #line 4093 "conf_parser.c" /* yacc.c:1646 */
4093 break;
4094
4095 case 226:
4096 #line 1268 "conf_parser.y" /* yacc.c:1646 */
4097 {
4098 if (conf_parser_ctx.pass == 2)
4099 block_state.port.value |= OPER_FLAG_SET;
4100 }
4101 #line 4102 "conf_parser.c" /* yacc.c:1646 */
4102 break;
4103
4104 case 227:
4105 #line 1272 "conf_parser.y" /* yacc.c:1646 */
4106 {
4107 if (conf_parser_ctx.pass == 2)
4108 block_state.port.value |= OPER_FLAG_MODULE;
4109 }
4110 #line 4111 "conf_parser.c" /* yacc.c:1646 */
4111 break;
4112
4113 case 228:
4114 #line 1276 "conf_parser.y" /* yacc.c:1646 */
4115 {
4116 if (conf_parser_ctx.pass == 2)
4117 block_state.port.value |= OPER_FLAG_OPME;
4118 }
4119 #line 4120 "conf_parser.c" /* yacc.c:1646 */
4120 break;
4121
4122 case 229:
4123 #line 1280 "conf_parser.y" /* yacc.c:1646 */
4124 {
4125 if (conf_parser_ctx.pass == 2)
4126 block_state.port.value |= OPER_FLAG_NICK_RESV;
4127 }
4128 #line 4129 "conf_parser.c" /* yacc.c:1646 */
4129 break;
4130
4131 case 230:
4132 #line 1284 "conf_parser.y" /* yacc.c:1646 */
4133 {
4134 if (conf_parser_ctx.pass == 2)
4135 block_state.port.value |= OPER_FLAG_JOIN_RESV;
4136 }
4137 #line 4138 "conf_parser.c" /* yacc.c:1646 */
4138 break;
4139
4140 case 231:
4141 #line 1288 "conf_parser.y" /* yacc.c:1646 */
4142 {
4143 if (conf_parser_ctx.pass == 2)
4144 block_state.port.value |= OPER_FLAG_RESV;
4145 }
4146 #line 4147 "conf_parser.c" /* yacc.c:1646 */
4147 break;
4148
4149 case 232:
4150 #line 1292 "conf_parser.y" /* yacc.c:1646 */
4151 {
4152 if (conf_parser_ctx.pass == 2)
4153 block_state.port.value |= OPER_FLAG_UNRESV;
4154 }
4155 #line 4156 "conf_parser.c" /* yacc.c:1646 */
4156 break;
4157
4158 case 233:
4159 #line 1296 "conf_parser.y" /* yacc.c:1646 */
4160 {
4161 if (conf_parser_ctx.pass == 2)
4162 block_state.port.value |= OPER_FLAG_CLOSE;
4163 }
4164 #line 4165 "conf_parser.c" /* yacc.c:1646 */
4165 break;
4166
4167 case 234:
4168 #line 1306 "conf_parser.y" /* yacc.c:1646 */
4169 {
4170 if (conf_parser_ctx.pass != 1)
4171 break;
4172
4173 reset_block_state();
4174
4175 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4176 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4177 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4178 block_state.max_sendq.value = DEFAULT_SENDQ;
4179 block_state.max_recvq.value = DEFAULT_RECVQ;
4180 }
4181 #line 4182 "conf_parser.c" /* yacc.c:1646 */
4182 break;
4183
4184 case 235:
4185 #line 1318 "conf_parser.y" /* yacc.c:1646 */
4186 {
4187 struct ClassItem *class = NULL;
4188
4189 if (conf_parser_ctx.pass != 1)
4190 break;
4191
4192 if (!block_state.class.buf[0])
4193 break;
4194
4195 if (!(class = class_find(block_state.class.buf, 0)))
4196 class = class_make();
4197
4198 class->active = 1;
4199 xfree(class->name);
4200 class->name = xstrdup(block_state.class.buf);
4201 class->ping_freq = block_state.ping_freq.value;
4202 class->max_perip = block_state.max_perip.value;
4203 class->con_freq = block_state.con_freq.value;
4204 class->max_total = block_state.max_total.value;
4205 class->max_global = block_state.max_global.value;
4206 class->max_local = block_state.max_local.value;
4207 class->max_ident = block_state.max_ident.value;
4208 class->max_sendq = block_state.max_sendq.value;
4209 class->max_recvq = block_state.max_recvq.value;
4210 class->max_channels = block_state.max_channels.value;
4211
4212 if (block_state.min_idle.value > block_state.max_idle.value)
4213 {
4214 block_state.min_idle.value = 0;
4215 block_state.max_idle.value = 0;
4216 block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4217 }
4218
4219 class->flags = block_state.flags.value;
4220 class->min_idle = block_state.min_idle.value;
4221 class->max_idle = block_state.max_idle.value;
4222
4223 rebuild_cidr_list(class);
4224
4225 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4226 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4227 class->number_per_cidr = block_state.number_per_cidr.value;
4228 }
4229 #line 4230 "conf_parser.c" /* yacc.c:1646 */
4230 break;
4231
4232 case 256:
4233 #line 1382 "conf_parser.y" /* yacc.c:1646 */
4234 {
4235 if (conf_parser_ctx.pass == 1)
4236 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4237 }
4238 #line 4239 "conf_parser.c" /* yacc.c:1646 */
4239 break;
4240
4241 case 257:
4242 #line 1388 "conf_parser.y" /* yacc.c:1646 */
4243 {
4244 if (conf_parser_ctx.pass == 1)
4245 block_state.ping_freq.value = (yyvsp[-1].number);
4246 }
4247 #line 4248 "conf_parser.c" /* yacc.c:1646 */
4248 break;
4249
4250 case 258:
4251 #line 1394 "conf_parser.y" /* yacc.c:1646 */
4252 {
4253 if (conf_parser_ctx.pass == 1)
4254 block_state.max_perip.value = (yyvsp[-1].number);
4255 }
4256 #line 4257 "conf_parser.c" /* yacc.c:1646 */
4257 break;
4258
4259 case 259:
4260 #line 1400 "conf_parser.y" /* yacc.c:1646 */
4261 {
4262 if (conf_parser_ctx.pass == 1)
4263 block_state.con_freq.value = (yyvsp[-1].number);
4264 }
4265 #line 4266 "conf_parser.c" /* yacc.c:1646 */
4266 break;
4267
4268 case 260:
4269 #line 1406 "conf_parser.y" /* yacc.c:1646 */
4270 {
4271 if (conf_parser_ctx.pass == 1)
4272 block_state.max_channels.value = (yyvsp[-1].number);
4273 }
4274 #line 4275 "conf_parser.c" /* yacc.c:1646 */
4275 break;
4276
4277 case 261:
4278 #line 1412 "conf_parser.y" /* yacc.c:1646 */
4279 {
4280 if (conf_parser_ctx.pass == 1)
4281 block_state.max_total.value = (yyvsp[-1].number);
4282 }
4283 #line 4284 "conf_parser.c" /* yacc.c:1646 */
4284 break;
4285
4286 case 262:
4287 #line 1418 "conf_parser.y" /* yacc.c:1646 */
4288 {
4289 if (conf_parser_ctx.pass == 1)
4290 block_state.max_global.value = (yyvsp[-1].number);
4291 }
4292 #line 4293 "conf_parser.c" /* yacc.c:1646 */
4293 break;
4294
4295 case 263:
4296 #line 1424 "conf_parser.y" /* yacc.c:1646 */
4297 {
4298 if (conf_parser_ctx.pass == 1)
4299 block_state.max_local.value = (yyvsp[-1].number);
4300 }
4301 #line 4302 "conf_parser.c" /* yacc.c:1646 */
4302 break;
4303
4304 case 264:
4305 #line 1430 "conf_parser.y" /* yacc.c:1646 */
4306 {
4307 if (conf_parser_ctx.pass == 1)
4308 block_state.max_ident.value = (yyvsp[-1].number);
4309 }
4310 #line 4311 "conf_parser.c" /* yacc.c:1646 */
4311 break;
4312
4313 case 265:
4314 #line 1436 "conf_parser.y" /* yacc.c:1646 */
4315 {
4316 if (conf_parser_ctx.pass == 1)
4317 block_state.max_sendq.value = (yyvsp[-1].number);
4318 }
4319 #line 4320 "conf_parser.c" /* yacc.c:1646 */
4320 break;
4321
4322 case 266:
4323 #line 1442 "conf_parser.y" /* yacc.c:1646 */
4324 {
4325 if (conf_parser_ctx.pass == 1)
4326 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4327 block_state.max_recvq.value = (yyvsp[-1].number);
4328 }
4329 #line 4330 "conf_parser.c" /* yacc.c:1646 */
4330 break;
4331
4332 case 267:
4333 #line 1449 "conf_parser.y" /* yacc.c:1646 */
4334 {
4335 if (conf_parser_ctx.pass == 1)
4336 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4337 }
4338 #line 4339 "conf_parser.c" /* yacc.c:1646 */
4339 break;
4340
4341 case 268:
4342 #line 1455 "conf_parser.y" /* yacc.c:1646 */
4343 {
4344 if (conf_parser_ctx.pass == 1)
4345 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4346 }
4347 #line 4348 "conf_parser.c" /* yacc.c:1646 */
4348 break;
4349
4350 case 269:
4351 #line 1461 "conf_parser.y" /* yacc.c:1646 */
4352 {
4353 if (conf_parser_ctx.pass == 1)
4354 block_state.number_per_cidr.value = (yyvsp[-1].number);
4355 }
4356 #line 4357 "conf_parser.c" /* yacc.c:1646 */
4357 break;
4358
4359 case 270:
4360 #line 1467 "conf_parser.y" /* yacc.c:1646 */
4361 {
4362 if (conf_parser_ctx.pass != 1)
4363 break;
4364
4365 block_state.min_idle.value = (yyvsp[-1].number);
4366 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4367 }
4368 #line 4369 "conf_parser.c" /* yacc.c:1646 */
4369 break;
4370
4371 case 271:
4372 #line 1476 "conf_parser.y" /* yacc.c:1646 */
4373 {
4374 if (conf_parser_ctx.pass != 1)
4375 break;
4376
4377 block_state.max_idle.value = (yyvsp[-1].number);
4378 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4379 }
4380 #line 4381 "conf_parser.c" /* yacc.c:1646 */
4381 break;
4382
4383 case 272:
4384 #line 1485 "conf_parser.y" /* yacc.c:1646 */
4385 {
4386 if (conf_parser_ctx.pass == 1)
4387 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4388 }
4389 #line 4390 "conf_parser.c" /* yacc.c:1646 */
4390 break;
4391
4392 case 276:
4393 #line 1492 "conf_parser.y" /* yacc.c:1646 */
4394 {
4395 if (conf_parser_ctx.pass == 1)
4396 block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4397 }
4398 #line 4399 "conf_parser.c" /* yacc.c:1646 */
4399 break;
4400
4401 case 277:
4402 #line 1496 "conf_parser.y" /* yacc.c:1646 */
4403 {
4404 if (conf_parser_ctx.pass == 1)
4405 block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4406 }
4407 #line 4408 "conf_parser.c" /* yacc.c:1646 */
4408 break;
4409
4410 case 278:
4411 #line 1506 "conf_parser.y" /* yacc.c:1646 */
4412 {
4413 if (conf_parser_ctx.pass == 2)
4414 reset_block_state();
4415 }
4416 #line 4417 "conf_parser.c" /* yacc.c:1646 */
4417 break;
4418
4419 case 280:
4420 #line 1512 "conf_parser.y" /* yacc.c:1646 */
4421 {
4422 block_state.flags.value = 0;
4423 }
4424 #line 4425 "conf_parser.c" /* yacc.c:1646 */
4425 break;
4426
4427 case 284:
4428 #line 1518 "conf_parser.y" /* yacc.c:1646 */
4429 {
4430 if (conf_parser_ctx.pass == 2)
4431 block_state.flags.value |= LISTENER_SSL;
4432 }
4433 #line 4434 "conf_parser.c" /* yacc.c:1646 */
4434 break;
4435
4436 case 285:
4437 #line 1522 "conf_parser.y" /* yacc.c:1646 */
4438 {
4439 if (conf_parser_ctx.pass == 2)
4440 block_state.flags.value |= LISTENER_HIDDEN;
4441 }
4442 #line 4443 "conf_parser.c" /* yacc.c:1646 */
4443 break;
4444
4445 case 286:
4446 #line 1526 "conf_parser.y" /* yacc.c:1646 */
4447 {
4448 if (conf_parser_ctx.pass == 2)
4449 block_state.flags.value |= LISTENER_SERVER;
4450 }
4451 #line 4452 "conf_parser.c" /* yacc.c:1646 */
4452 break;
4453
4454 case 294:
4455 #line 1534 "conf_parser.y" /* yacc.c:1646 */
4456 { block_state.flags.value = 0; }
4457 #line 4458 "conf_parser.c" /* yacc.c:1646 */
4458 break;
4459
4460 case 298:
4461 #line 1539 "conf_parser.y" /* yacc.c:1646 */
4462 {
4463 if (conf_parser_ctx.pass == 2)
4464 {
4465 #ifndef HAVE_TLS
4466 if (block_state.flags.value & LISTENER_SSL)
4467 {
4468 conf_error_report("TLS not available - port closed");
4469 break;
4470 }
4471 #endif
4472 listener_add((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4473 }
4474 }
4475 #line 4476 "conf_parser.c" /* yacc.c:1646 */
4476 break;
4477
4478 case 299:
4479 #line 1552 "conf_parser.y" /* yacc.c:1646 */
4480 {
4481 if (conf_parser_ctx.pass == 2)
4482 {
4483 #ifndef HAVE_TLS
4484 if (block_state.flags.value & LISTENER_SSL)
4485 {
4486 conf_error_report("TLS not available - port closed");
4487 break;
4488 }
4489 #endif
4490
4491 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4492 listener_add(i, block_state.addr.buf, block_state.flags.value);
4493 }
4494 }
4495 #line 4496 "conf_parser.c" /* yacc.c:1646 */
4496 break;
4497
4498 case 300:
4499 #line 1569 "conf_parser.y" /* yacc.c:1646 */
4500 {
4501 if (conf_parser_ctx.pass == 2)
4502 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4503 }
4504 #line 4505 "conf_parser.c" /* yacc.c:1646 */
4505 break;
4506
4507 case 301:
4508 #line 1575 "conf_parser.y" /* yacc.c:1646 */
4509 {
4510 if (conf_parser_ctx.pass == 2)
4511 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4512 }
4513 #line 4514 "conf_parser.c" /* yacc.c:1646 */
4514 break;
4515
4516 case 302:
4517 #line 1585 "conf_parser.y" /* yacc.c:1646 */
4518 {
4519 if (conf_parser_ctx.pass == 2)
4520 reset_block_state();
4521 }
4522 #line 4523 "conf_parser.c" /* yacc.c:1646 */
4523 break;
4524
4525 case 303:
4526 #line 1589 "conf_parser.y" /* yacc.c:1646 */
4527 {
4528 dlink_node *node = NULL;
4529
4530 if (conf_parser_ctx.pass != 2)
4531 break;
4532
4533 DLINK_FOREACH(node, block_state.mask.list.head)
4534 {
4535 struct MaskItem *conf = NULL;
4536 struct split_nuh_item nuh;
4537
4538 nuh.nuhmask = node->data;
4539 nuh.nickptr = NULL;
4540 nuh.userptr = block_state.user.buf;
4541 nuh.hostptr = block_state.host.buf;
4542 nuh.nicksize = 0;
4543 nuh.usersize = sizeof(block_state.user.buf);
4544 nuh.hostsize = sizeof(block_state.host.buf);
4545 split_nuh(&nuh);
4546
4547 conf = conf_make(CONF_CLIENT);
4548 conf->user = xstrdup(block_state.user.buf);
4549 conf->host = xstrdup(block_state.host.buf);
4550
4551 if (block_state.rpass.buf[0])
4552 conf->passwd = xstrdup(block_state.rpass.buf);
4553 if (block_state.name.buf[0])
4554 conf->name = xstrdup(block_state.name.buf);
4555
4556 conf->flags = block_state.flags.value;
4557 conf->port = block_state.port.value;
4558
4559 conf_add_class_to_conf(conf, block_state.class.buf);
4560 add_conf_by_address(CONF_CLIENT, conf);
4561 }
4562 }
4563 #line 4564 "conf_parser.c" /* yacc.c:1646 */
4564 break;
4565
4566 case 315:
4567 #line 1638 "conf_parser.y" /* yacc.c:1646 */
4568 {
4569 if (conf_parser_ctx.pass == 2)
4570 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4571 }
4572 #line 4573 "conf_parser.c" /* yacc.c:1646 */
4573 break;
4574
4575 case 316:
4576 #line 1644 "conf_parser.y" /* yacc.c:1646 */
4577 {
4578 if (conf_parser_ctx.pass == 2)
4579 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4580 }
4581 #line 4582 "conf_parser.c" /* yacc.c:1646 */
4582 break;
4583
4584 case 317:
4585 #line 1650 "conf_parser.y" /* yacc.c:1646 */
4586 {
4587 if (conf_parser_ctx.pass == 2)
4588 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4589 }
4590 #line 4591 "conf_parser.c" /* yacc.c:1646 */
4591 break;
4592
4593 case 318:
4594 #line 1656 "conf_parser.y" /* yacc.c:1646 */
4595 {
4596 if (conf_parser_ctx.pass == 2)
4597 {
4598 if (yylval.number)
4599 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4600 else
4601 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4602 }
4603 }
4604 #line 4605 "conf_parser.c" /* yacc.c:1646 */
4605 break;
4606
4607 case 319:
4608 #line 1667 "conf_parser.y" /* yacc.c:1646 */
4609 {
4610 if (conf_parser_ctx.pass == 2)
4611 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4612 }
4613 #line 4614 "conf_parser.c" /* yacc.c:1646 */
4614 break;
4615
4616 case 323:
4617 #line 1674 "conf_parser.y" /* yacc.c:1646 */
4618 {
4619 if (conf_parser_ctx.pass == 2)
4620 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4621 }
4622 #line 4623 "conf_parser.c" /* yacc.c:1646 */
4623 break;
4624
4625 case 324:
4626 #line 1678 "conf_parser.y" /* yacc.c:1646 */
4627 {
4628 if (conf_parser_ctx.pass == 2)
4629 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4630 }
4631 #line 4632 "conf_parser.c" /* yacc.c:1646 */
4632 break;
4633
4634 case 325:
4635 #line 1682 "conf_parser.y" /* yacc.c:1646 */
4636 {
4637 if (conf_parser_ctx.pass == 2)
4638 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4639 }
4640 #line 4641 "conf_parser.c" /* yacc.c:1646 */
4641 break;
4642
4643 case 326:
4644 #line 1686 "conf_parser.y" /* yacc.c:1646 */
4645 {
4646 if (conf_parser_ctx.pass == 2)
4647 block_state.flags.value |= CONF_FLAGS_EXEMPTXLINE;
4648 }
4649 #line 4650 "conf_parser.c" /* yacc.c:1646 */
4650 break;
4651
4652 case 327:
4653 #line 1690 "conf_parser.y" /* yacc.c:1646 */
4654 {
4655 if (conf_parser_ctx.pass == 2)
4656 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4657 }
4658 #line 4659 "conf_parser.c" /* yacc.c:1646 */
4659 break;
4660
4661 case 328:
4662 #line 1694 "conf_parser.y" /* yacc.c:1646 */
4663 {
4664 if (conf_parser_ctx.pass == 2)
4665 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4666 }
4667 #line 4668 "conf_parser.c" /* yacc.c:1646 */
4668 break;
4669
4670 case 329:
4671 #line 1698 "conf_parser.y" /* yacc.c:1646 */
4672 {
4673 if (conf_parser_ctx.pass == 2)
4674 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4675 }
4676 #line 4677 "conf_parser.c" /* yacc.c:1646 */
4677 break;
4678
4679 case 330:
4680 #line 1702 "conf_parser.y" /* yacc.c:1646 */
4681 {
4682 if (conf_parser_ctx.pass == 2)
4683 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4684 }
4685 #line 4686 "conf_parser.c" /* yacc.c:1646 */
4686 break;
4687
4688 case 331:
4689 #line 1706 "conf_parser.y" /* yacc.c:1646 */
4690 {
4691 if (conf_parser_ctx.pass == 2)
4692 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4693 }
4694 #line 4695 "conf_parser.c" /* yacc.c:1646 */
4695 break;
4696
4697 case 332:
4698 #line 1710 "conf_parser.y" /* yacc.c:1646 */
4699 {
4700 if (conf_parser_ctx.pass == 2)
4701 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4702 }
4703 #line 4704 "conf_parser.c" /* yacc.c:1646 */
4704 break;
4705
4706 case 333:
4707 #line 1716 "conf_parser.y" /* yacc.c:1646 */
4708 {
4709 if (conf_parser_ctx.pass != 2)
4710 break;
4711
4712 if (valid_hostname(yylval.string))
4713 {
4714 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4715 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4716 }
4717 else
4718 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4719 }
4720 #line 4721 "conf_parser.c" /* yacc.c:1646 */
4721 break;
4722
4723 case 334:
4724 #line 1730 "conf_parser.y" /* yacc.c:1646 */
4725 {
4726 if (conf_parser_ctx.pass != 2)
4727 break;
4728
4729 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4730 block_state.flags.value |= CONF_FLAGS_REDIR;
4731 }
4732 #line 4733 "conf_parser.c" /* yacc.c:1646 */
4733 break;
4734
4735 case 335:
4736 #line 1739 "conf_parser.y" /* yacc.c:1646 */
4737 {
4738 if (conf_parser_ctx.pass != 2)
4739 break;
4740
4741 block_state.flags.value |= CONF_FLAGS_REDIR;
4742 block_state.port.value = (yyvsp[-1].number);
4743 }
4744 #line 4745 "conf_parser.c" /* yacc.c:1646 */
4745 break;
4746
4747 case 336:
4748 #line 1752 "conf_parser.y" /* yacc.c:1646 */
4749 {
4750 if (conf_parser_ctx.pass != 2)
4751 break;
4752
4753 reset_block_state();
4754 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4755 }
4756 #line 4757 "conf_parser.c" /* yacc.c:1646 */
4757 break;
4758
4759 case 337:
4760 #line 1759 "conf_parser.y" /* yacc.c:1646 */
4761 {
4762 if (conf_parser_ctx.pass != 2)
4763 break;
4764
4765 create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4766 }
4767 #line 4768 "conf_parser.c" /* yacc.c:1646 */
4768 break;
4769
4770 case 344:
4771 #line 1770 "conf_parser.y" /* yacc.c:1646 */
4772 {
4773 if (conf_parser_ctx.pass == 2)
4774 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4775 }
4776 #line 4777 "conf_parser.c" /* yacc.c:1646 */
4777 break;
4778
4779 case 345:
4780 #line 1776 "conf_parser.y" /* yacc.c:1646 */
4781 {
4782 if (conf_parser_ctx.pass == 2)
4783 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4784 }
4785 #line 4786 "conf_parser.c" /* yacc.c:1646 */
4786 break;
4787
4788 case 346:
4789 #line 1782 "conf_parser.y" /* yacc.c:1646 */
4790 {
4791 if (conf_parser_ctx.pass == 2)
4792 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4793 }
4794 #line 4795 "conf_parser.c" /* yacc.c:1646 */
4795 break;
4796
4797 case 352:
4798 #line 1797 "conf_parser.y" /* yacc.c:1646 */
4799 {
4800 if (conf_parser_ctx.pass != 2)
4801 break;
4802
4803 if (valid_servname(yylval.string))
4804 {
4805 struct ServiceItem *service = service_make();
4806 service->name = xstrdup(yylval.string);
4807 }
4808 }
4809 #line 4810 "conf_parser.c" /* yacc.c:1646 */
4810 break;
4811
4812 case 353:
4813 #line 1813 "conf_parser.y" /* yacc.c:1646 */
4814 {
4815 if (conf_parser_ctx.pass != 2)
4816 break;
4817
4818 reset_block_state();
4819
4820 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4821 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4822 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4823 block_state.flags.value = SHARED_ALL;
4824 }
4825 #line 4826 "conf_parser.c" /* yacc.c:1646 */
4826 break;
4827
4828 case 354:
4829 #line 1824 "conf_parser.y" /* yacc.c:1646 */
4830 {
4831 if (conf_parser_ctx.pass != 2)
4832 break;
4833
4834 struct SharedItem *shared = shared_make();
4835 shared->type = block_state.flags.value;
4836 shared->server = xstrdup(block_state.name.buf);
4837 shared->user = xstrdup(block_state.user.buf);
4838 shared->host = xstrdup(block_state.host.buf);
4839 }
4840 #line 4841 "conf_parser.c" /* yacc.c:1646 */
4841 break;
4842
4843 case 361:
4844 #line 1839 "conf_parser.y" /* yacc.c:1646 */
4845 {
4846 if (conf_parser_ctx.pass == 2)
4847 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4848 }
4849 #line 4850 "conf_parser.c" /* yacc.c:1646 */
4850 break;
4851
4852 case 362:
4853 #line 1845 "conf_parser.y" /* yacc.c:1646 */
4854 {
4855 if (conf_parser_ctx.pass == 2)
4856 {
4857 struct split_nuh_item nuh;
4858
4859 nuh.nuhmask = yylval.string;
4860 nuh.nickptr = NULL;
4861 nuh.userptr = block_state.user.buf;
4862 nuh.hostptr = block_state.host.buf;
4863
4864 nuh.nicksize = 0;
4865 nuh.usersize = sizeof(block_state.user.buf);
4866 nuh.hostsize = sizeof(block_state.host.buf);
4867
4868 split_nuh(&nuh);
4869 }
4870 }
4871 #line 4872 "conf_parser.c" /* yacc.c:1646 */
4872 break;
4873
4874 case 363:
4875 #line 1864 "conf_parser.y" /* yacc.c:1646 */
4876 {
4877 if (conf_parser_ctx.pass == 2)
4878 block_state.flags.value = 0;
4879 }
4880 #line 4881 "conf_parser.c" /* yacc.c:1646 */
4881 break;
4882
4883 case 367:
4884 #line 1871 "conf_parser.y" /* yacc.c:1646 */
4885 {
4886 if (conf_parser_ctx.pass == 2)
4887 block_state.flags.value |= SHARED_KLINE;
4888 }
4889 #line 4890 "conf_parser.c" /* yacc.c:1646 */
4890 break;
4891
4892 case 368:
4893 #line 1875 "conf_parser.y" /* yacc.c:1646 */
4894 {
4895 if (conf_parser_ctx.pass == 2)
4896 block_state.flags.value |= SHARED_UNKLINE;
4897 }
4898 #line 4899 "conf_parser.c" /* yacc.c:1646 */
4899 break;
4900
4901 case 369:
4902 #line 1879 "conf_parser.y" /* yacc.c:1646 */
4903 {
4904 if (conf_parser_ctx.pass == 2)
4905 block_state.flags.value |= SHARED_DLINE;
4906 }
4907 #line 4908 "conf_parser.c" /* yacc.c:1646 */
4908 break;
4909
4910 case 370:
4911 #line 1883 "conf_parser.y" /* yacc.c:1646 */
4912 {
4913 if (conf_parser_ctx.pass == 2)
4914 block_state.flags.value |= SHARED_UNDLINE;
4915 }
4916 #line 4917 "conf_parser.c" /* yacc.c:1646 */
4917 break;
4918
4919 case 371:
4920 #line 1887 "conf_parser.y" /* yacc.c:1646 */
4921 {
4922 if (conf_parser_ctx.pass == 2)
4923 block_state.flags.value |= SHARED_XLINE;
4924 }
4925 #line 4926 "conf_parser.c" /* yacc.c:1646 */
4926 break;
4927
4928 case 372:
4929 #line 1891 "conf_parser.y" /* yacc.c:1646 */
4930 {
4931 if (conf_parser_ctx.pass == 2)
4932 block_state.flags.value |= SHARED_UNXLINE;
4933 }
4934 #line 4935 "conf_parser.c" /* yacc.c:1646 */
4935 break;
4936
4937 case 373:
4938 #line 1895 "conf_parser.y" /* yacc.c:1646 */
4939 {
4940 if (conf_parser_ctx.pass == 2)
4941 block_state.flags.value |= SHARED_RESV;
4942 }
4943 #line 4944 "conf_parser.c" /* yacc.c:1646 */
4944 break;
4945
4946 case 374:
4947 #line 1899 "conf_parser.y" /* yacc.c:1646 */
4948 {
4949 if (conf_parser_ctx.pass == 2)
4950 block_state.flags.value |= SHARED_UNRESV;
4951 }
4952 #line 4953 "conf_parser.c" /* yacc.c:1646 */
4953 break;
4954
4955 case 375:
4956 #line 1903 "conf_parser.y" /* yacc.c:1646 */
4957 {
4958 if (conf_parser_ctx.pass == 2)
4959 block_state.flags.value |= SHARED_LOCOPS;
4960 }
4961 #line 4962 "conf_parser.c" /* yacc.c:1646 */
4962 break;
4963
4964 case 376:
4965 #line 1907 "conf_parser.y" /* yacc.c:1646 */
4966 {
4967 if (conf_parser_ctx.pass == 2)
4968 block_state.flags.value = SHARED_ALL;
4969 }
4970 #line 4971 "conf_parser.c" /* yacc.c:1646 */
4971 break;
4972
4973 case 377:
4974 #line 1917 "conf_parser.y" /* yacc.c:1646 */
4975 {
4976 if (conf_parser_ctx.pass != 2)
4977 break;
4978
4979 reset_block_state();
4980
4981 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4982 block_state.flags.value = CLUSTER_ALL;
4983 }
4984 #line 4985 "conf_parser.c" /* yacc.c:1646 */
4985 break;
4986
4987 case 378:
4988 #line 1926 "conf_parser.y" /* yacc.c:1646 */
4989 {
4990 if (conf_parser_ctx.pass != 2)
4991 break;
4992
4993 struct ClusterItem *cluster = cluster_make();
4994 cluster->type = block_state.flags.value;
4995 cluster->server = xstrdup(block_state.name.buf);
4996 }
4997 #line 4998 "conf_parser.c" /* yacc.c:1646 */
4998 break;
4999
5000 case 384:
5001 #line 1939 "conf_parser.y" /* yacc.c:1646 */
5002 {
5003 if (conf_parser_ctx.pass == 2)
5004 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5005 }
5006 #line 5007 "conf_parser.c" /* yacc.c:1646 */
5007 break;
5008
5009 case 385:
5010 #line 1945 "conf_parser.y" /* yacc.c:1646 */
5011 {
5012 if (conf_parser_ctx.pass == 2)
5013 block_state.flags.value = 0;
5014 }
5015 #line 5016 "conf_parser.c" /* yacc.c:1646 */
5016 break;
5017
5018 case 389:
5019 #line 1952 "conf_parser.y" /* yacc.c:1646 */
5020 {
5021 if (conf_parser_ctx.pass == 2)
5022 block_state.flags.value |= CLUSTER_KLINE;
5023 }
5024 #line 5025 "conf_parser.c" /* yacc.c:1646 */
5025 break;
5026
5027 case 390:
5028 #line 1956 "conf_parser.y" /* yacc.c:1646 */
5029 {
5030 if (conf_parser_ctx.pass == 2)
5031 block_state.flags.value |= CLUSTER_UNKLINE;
5032 }
5033 #line 5034 "conf_parser.c" /* yacc.c:1646 */
5034 break;
5035
5036 case 391:
5037 #line 1960 "conf_parser.y" /* yacc.c:1646 */
5038 {
5039 if (conf_parser_ctx.pass == 2)
5040 block_state.flags.value |= CLUSTER_DLINE;
5041 }
5042 #line 5043 "conf_parser.c" /* yacc.c:1646 */
5043 break;
5044
5045 case 392:
5046 #line 1964 "conf_parser.y" /* yacc.c:1646 */
5047 {
5048 if (conf_parser_ctx.pass == 2)
5049 block_state.flags.value |= CLUSTER_UNDLINE;
5050 }
5051 #line 5052 "conf_parser.c" /* yacc.c:1646 */
5052 break;
5053
5054 case 393:
5055 #line 1968 "conf_parser.y" /* yacc.c:1646 */
5056 {
5057 if (conf_parser_ctx.pass == 2)
5058 block_state.flags.value |= CLUSTER_XLINE;
5059 }
5060 #line 5061 "conf_parser.c" /* yacc.c:1646 */
5061 break;
5062
5063 case 394:
5064 #line 1972 "conf_parser.y" /* yacc.c:1646 */
5065 {
5066 if (conf_parser_ctx.pass == 2)
5067 block_state.flags.value |= CLUSTER_UNXLINE;
5068 }
5069 #line 5070 "conf_parser.c" /* yacc.c:1646 */
5070 break;
5071
5072 case 395:
5073 #line 1976 "conf_parser.y" /* yacc.c:1646 */
5074 {
5075 if (conf_parser_ctx.pass == 2)
5076 block_state.flags.value |= CLUSTER_RESV;
5077 }
5078 #line 5079 "conf_parser.c" /* yacc.c:1646 */
5079 break;
5080
5081 case 396:
5082 #line 1980 "conf_parser.y" /* yacc.c:1646 */
5083 {
5084 if (conf_parser_ctx.pass == 2)
5085 block_state.flags.value |= CLUSTER_UNRESV;
5086 }
5087 #line 5088 "conf_parser.c" /* yacc.c:1646 */
5088 break;
5089
5090 case 397:
5091 #line 1984 "conf_parser.y" /* yacc.c:1646 */
5092 {
5093 if (conf_parser_ctx.pass == 2)
5094 block_state.flags.value |= CLUSTER_LOCOPS;
5095 }
5096 #line 5097 "conf_parser.c" /* yacc.c:1646 */
5097 break;
5098
5099 case 398:
5100 #line 1988 "conf_parser.y" /* yacc.c:1646 */
5101 {
5102 if (conf_parser_ctx.pass == 2)
5103 block_state.flags.value = CLUSTER_ALL;
5104 }
5105 #line 5106 "conf_parser.c" /* yacc.c:1646 */
5106 break;
5107
5108 case 399:
5109 #line 1998 "conf_parser.y" /* yacc.c:1646 */
5110 {
5111
5112 if (conf_parser_ctx.pass != 2)
5113 break;
5114
5115 reset_block_state();
5116 block_state.aftype.value = AF_INET;
5117 block_state.port.value = PORTNUM;
5118 }
5119 #line 5120 "conf_parser.c" /* yacc.c:1646 */
5120 break;
5121
5122 case 400:
5123 #line 2007 "conf_parser.y" /* yacc.c:1646 */
5124 {
5125 struct MaskItem *conf = NULL;
5126 struct addrinfo hints, *res;
5127
5128 if (conf_parser_ctx.pass != 2)
5129 break;
5130
5131 if (!block_state.name.buf[0] ||
5132 !block_state.host.buf[0])
5133 break;
5134
5135 if (!block_state.rpass.buf[0] ||
5136 !block_state.spass.buf[0])
5137 break;
5138
5139 if (has_wildcards(block_state.name.buf) ||
5140 has_wildcards(block_state.host.buf))
5141 break;
5142
5143 conf = conf_make(CONF_SERVER);
5144 conf->port = block_state.port.value;
5145 conf->flags = block_state.flags.value;
5146 conf->aftype = block_state.aftype.value;
5147 conf->host = xstrdup(block_state.host.buf);
5148 conf->name = xstrdup(block_state.name.buf);
5149 conf->passwd = xstrdup(block_state.rpass.buf);
5150 conf->spasswd = xstrdup(block_state.spass.buf);
5151
5152 if (block_state.cert.buf[0])
5153 conf->certfp = xstrdup(block_state.cert.buf);
5154
5155 if (block_state.ciph.buf[0])
5156 conf->cipher_list = xstrdup(block_state.ciph.buf);
5157
5158 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5159 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5160
5161 if (block_state.bind.buf[0])
5162 {
5163 memset(&hints, 0, sizeof(hints));
5164
5165 hints.ai_family = AF_UNSPEC;
5166 hints.ai_socktype = SOCK_STREAM;
5167 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5168
5169 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5170 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5171 else
5172 {
5173 assert(res);
5174
5175 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5176 conf->bind.ss.ss_family = res->ai_family;
5177 conf->bind.ss_len = res->ai_addrlen;
5178 freeaddrinfo(res);
5179 }
5180 }
5181
5182 conf_add_class_to_conf(conf, block_state.class.buf);
5183 lookup_confhost(conf);
5184 }
5185 #line 5186 "conf_parser.c" /* yacc.c:1646 */
5186 break;
5187
5188 case 418:
5189 #line 2087 "conf_parser.y" /* yacc.c:1646 */
5190 {
5191 if (conf_parser_ctx.pass == 2)
5192 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5193 }
5194 #line 5195 "conf_parser.c" /* yacc.c:1646 */
5195 break;
5196
5197 case 419:
5198 #line 2093 "conf_parser.y" /* yacc.c:1646 */
5199 {
5200 if (conf_parser_ctx.pass == 2)
5201 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5202 }
5203 #line 5204 "conf_parser.c" /* yacc.c:1646 */
5204 break;
5205
5206 case 420:
5207 #line 2099 "conf_parser.y" /* yacc.c:1646 */
5208 {
5209 if (conf_parser_ctx.pass == 2)
5210 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5211 }
5212 #line 5213 "conf_parser.c" /* yacc.c:1646 */
5213 break;
5214
5215 case 421:
5216 #line 2105 "conf_parser.y" /* yacc.c:1646 */
5217 {
5218 if (conf_parser_ctx.pass != 2)
5219 break;
5220
5221 if ((yyvsp[-1].string)[0] == ':')
5222 conf_error_report("Server passwords cannot begin with a colon");
5223 else if (strchr((yyvsp[-1].string), ' '))
5224 conf_error_report("Server passwords cannot contain spaces");
5225 else
5226 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5227 }
5228 #line 5229 "conf_parser.c" /* yacc.c:1646 */
5229 break;
5230
5231 case 422:
5232 #line 2118 "conf_parser.y" /* yacc.c:1646 */
5233 {
5234 if (conf_parser_ctx.pass != 2)
5235 break;
5236
5237 if ((yyvsp[-1].string)[0] == ':')
5238 conf_error_report("Server passwords cannot begin with a colon");
5239 else if (strchr((yyvsp[-1].string), ' '))
5240 conf_error_report("Server passwords cannot contain spaces");
5241 else
5242 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5243 }
5244 #line 5245 "conf_parser.c" /* yacc.c:1646 */
5245 break;
5246
5247 case 423:
5248 #line 2131 "conf_parser.y" /* yacc.c:1646 */
5249 {
5250 if (conf_parser_ctx.pass == 2)
5251 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5252 }
5253 #line 5254 "conf_parser.c" /* yacc.c:1646 */
5254 break;
5255
5256 case 424:
5257 #line 2137 "conf_parser.y" /* yacc.c:1646 */
5258 {
5259 if (conf_parser_ctx.pass == 2)
5260 block_state.port.value = (yyvsp[-1].number);
5261 }
5262 #line 5263 "conf_parser.c" /* yacc.c:1646 */
5263 break;
5264
5265 case 425:
5266 #line 2143 "conf_parser.y" /* yacc.c:1646 */
5267 {
5268 if (conf_parser_ctx.pass == 2)
5269 block_state.aftype.value = AF_INET;
5270 }
5271 #line 5272 "conf_parser.c" /* yacc.c:1646 */
5272 break;
5273
5274 case 426:
5275 #line 2147 "conf_parser.y" /* yacc.c:1646 */
5276 {
5277 if (conf_parser_ctx.pass == 2)
5278 block_state.aftype.value = AF_INET6;
5279 }
5280 #line 5281 "conf_parser.c" /* yacc.c:1646 */
5281 break;
5282
5283 case 427:
5284 #line 2153 "conf_parser.y" /* yacc.c:1646 */
5285 {
5286 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5287 }
5288 #line 5289 "conf_parser.c" /* yacc.c:1646 */
5289 break;
5290
5291 case 431:
5292 #line 2159 "conf_parser.y" /* yacc.c:1646 */
5293 {
5294 if (conf_parser_ctx.pass == 2)
5295 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5296 }
5297 #line 5298 "conf_parser.c" /* yacc.c:1646 */
5298 break;
5299
5300 case 432:
5301 #line 2163 "conf_parser.y" /* yacc.c:1646 */
5302 {
5303 if (conf_parser_ctx.pass == 2)
5304 block_state.flags.value |= CONF_FLAGS_SSL;
5305 }
5306 #line 5307 "conf_parser.c" /* yacc.c:1646 */
5307 break;
5308
5309 case 433:
5310 #line 2169 "conf_parser.y" /* yacc.c:1646 */
5311 {
5312 if (conf_parser_ctx.pass == 2)
5313 {
5314 if (yylval.number)
5315 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5316 else
5317 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5318 }
5319 }
5320 #line 5321 "conf_parser.c" /* yacc.c:1646 */
5321 break;
5322
5323 case 434:
5324 #line 2180 "conf_parser.y" /* yacc.c:1646 */
5325 {
5326 if (conf_parser_ctx.pass == 2)
5327 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5328 }
5329 #line 5330 "conf_parser.c" /* yacc.c:1646 */
5330 break;
5331
5332 case 435:
5333 #line 2186 "conf_parser.y" /* yacc.c:1646 */
5334 {
5335 if (conf_parser_ctx.pass == 2)
5336 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5337 }
5338 #line 5339 "conf_parser.c" /* yacc.c:1646 */
5339 break;
5340
5341 case 436:
5342 #line 2192 "conf_parser.y" /* yacc.c:1646 */
5343 {
5344 if (conf_parser_ctx.pass == 2)
5345 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5346 }
5347 #line 5348 "conf_parser.c" /* yacc.c:1646 */
5348 break;
5349
5350 case 437:
5351 #line 2198 "conf_parser.y" /* yacc.c:1646 */
5352 {
5353 #ifdef HAVE_TLS
5354 if (conf_parser_ctx.pass == 2)
5355 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5356 #else
5357 if (conf_parser_ctx.pass == 2)
5358 conf_error_report("Ignoring connect::ciphers -- no TLS support");
5359 #endif
5360 }
5361 #line 5362 "conf_parser.c" /* yacc.c:1646 */
5362 break;
5363
5364 case 438:
5365 #line 2213 "conf_parser.y" /* yacc.c:1646 */
5366 {
5367 if (conf_parser_ctx.pass == 2)
5368 reset_block_state();
5369 }
5370 #line 5371 "conf_parser.c" /* yacc.c:1646 */
5371 break;
5372
5373 case 439:
5374 #line 2217 "conf_parser.y" /* yacc.c:1646 */
5375 {
5376 struct MaskItem *conf = NULL;
5377
5378 if (conf_parser_ctx.pass != 2)
5379 break;
5380
5381 if (!block_state.user.buf[0] ||
5382 !block_state.host.buf[0])
5383 break;
5384
5385 conf = conf_make(CONF_KLINE);
5386 conf->user = xstrdup(block_state.user.buf);
5387 conf->host = xstrdup(block_state.host.buf);
5388
5389 if (block_state.rpass.buf[0])
5390 conf->reason = xstrdup(block_state.rpass.buf);
5391 else
5392 conf->reason = xstrdup(CONF_NOREASON);
5393 add_conf_by_address(CONF_KLINE, conf);
5394 }
5395 #line 5396 "conf_parser.c" /* yacc.c:1646 */
5396 break;
5397
5398 case 445:
5399 #line 2242 "conf_parser.y" /* yacc.c:1646 */
5400 {
5401
5402 if (conf_parser_ctx.pass == 2)
5403 {
5404 struct split_nuh_item nuh;
5405
5406 nuh.nuhmask = yylval.string;
5407 nuh.nickptr = NULL;
5408 nuh.userptr = block_state.user.buf;
5409 nuh.hostptr = block_state.host.buf;
5410
5411 nuh.nicksize = 0;
5412 nuh.usersize = sizeof(block_state.user.buf);
5413 nuh.hostsize = sizeof(block_state.host.buf);
5414
5415 split_nuh(&nuh);
5416 }
5417 }
5418 #line 5419 "conf_parser.c" /* yacc.c:1646 */
5419 break;
5420
5421 case 446:
5422 #line 2262 "conf_parser.y" /* yacc.c:1646 */
5423 {
5424 if (conf_parser_ctx.pass == 2)
5425 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5426 }
5427 #line 5428 "conf_parser.c" /* yacc.c:1646 */
5428 break;
5429
5430 case 447:
5431 #line 2272 "conf_parser.y" /* yacc.c:1646 */
5432 {
5433 if (conf_parser_ctx.pass == 2)
5434 reset_block_state();
5435 }
5436 #line 5437 "conf_parser.c" /* yacc.c:1646 */
5437 break;
5438
5439 case 448:
5440 #line 2276 "conf_parser.y" /* yacc.c:1646 */
5441 {
5442 struct MaskItem *conf = NULL;
5443
5444 if (conf_parser_ctx.pass != 2)
5445 break;
5446
5447 if (!block_state.addr.buf[0])
5448 break;
5449
5450 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5451 {
5452 conf = conf_make(CONF_DLINE);
5453 conf->host = xstrdup(block_state.addr.buf);
5454
5455 if (block_state.rpass.buf[0])
5456 conf->reason = xstrdup(block_state.rpass.buf);
5457 else
5458 conf->reason = xstrdup(CONF_NOREASON);
5459 add_conf_by_address(CONF_DLINE, conf);
5460 }
5461 }
5462 #line 5463 "conf_parser.c" /* yacc.c:1646 */
5463 break;
5464
5465 case 454:
5466 #line 2302 "conf_parser.y" /* yacc.c:1646 */
5467 {
5468 if (conf_parser_ctx.pass == 2)
5469 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5470 }
5471 #line 5472 "conf_parser.c" /* yacc.c:1646 */
5472 break;
5473
5474 case 455:
5475 #line 2308 "conf_parser.y" /* yacc.c:1646 */
5476 {
5477 if (conf_parser_ctx.pass == 2)
5478 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5479 }
5480 #line 5481 "conf_parser.c" /* yacc.c:1646 */
5481 break;
5482
5483 case 461:
5484 #line 2323 "conf_parser.y" /* yacc.c:1646 */
5485 {
5486 if (conf_parser_ctx.pass == 2)
5487 {
5488 if (*yylval.string && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5489 {
5490 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5491 conf->host = xstrdup(yylval.string);
5492
5493 add_conf_by_address(CONF_EXEMPT, conf);
5494 }
5495 }
5496 }
5497 #line 5498 "conf_parser.c" /* yacc.c:1646 */
5498 break;
5499
5500 case 462:
5501 #line 2340 "conf_parser.y" /* yacc.c:1646 */
5502 {
5503 if (conf_parser_ctx.pass == 2)
5504 reset_block_state();
5505 }
5506 #line 5507 "conf_parser.c" /* yacc.c:1646 */
5507 break;
5508
5509 case 463:
5510 #line 2344 "conf_parser.y" /* yacc.c:1646 */
5511 {
5512 struct MaskItem *conf = NULL;
5513
5514 if (conf_parser_ctx.pass != 2)
5515 break;
5516
5517 if (!block_state.name.buf[0])
5518 break;
5519
5520 conf = conf_make(CONF_XLINE);
5521 conf->name = xstrdup(block_state.name.buf);
5522
5523 if (block_state.rpass.buf[0])
5524 conf->reason = xstrdup(block_state.rpass.buf);
5525 else
5526 conf->reason = xstrdup(CONF_NOREASON);
5527 }
5528 #line 5529 "conf_parser.c" /* yacc.c:1646 */
5529 break;
5530
5531 case 469:
5532 #line 2366 "conf_parser.y" /* yacc.c:1646 */
5533 {
5534 if (conf_parser_ctx.pass == 2)
5535 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5536 }
5537 #line 5538 "conf_parser.c" /* yacc.c:1646 */
5538 break;
5539
5540 case 470:
5541 #line 2372 "conf_parser.y" /* yacc.c:1646 */
5542 {
5543 if (conf_parser_ctx.pass == 2)
5544 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5545 }
5546 #line 5547 "conf_parser.c" /* yacc.c:1646 */
5547 break;
5548
5549 case 520:
5550 #line 2433 "conf_parser.y" /* yacc.c:1646 */
5551 {
5552 ConfigGeneral.away_count = (yyvsp[-1].number);
5553 }
5554 #line 5555 "conf_parser.c" /* yacc.c:1646 */
5555 break;
5556
5557 case 521:
5558 #line 2438 "conf_parser.y" /* yacc.c:1646 */
5559 {
5560 ConfigGeneral.away_time = (yyvsp[-1].number);
5561 }
5562 #line 5563 "conf_parser.c" /* yacc.c:1646 */
5563 break;
5564
5565 case 522:
5566 #line 2443 "conf_parser.y" /* yacc.c:1646 */
5567 {
5568 ConfigGeneral.max_watch = (yyvsp[-1].number);
5569 }
5570 #line 5571 "conf_parser.c" /* yacc.c:1646 */
5571 break;
5572
5573 case 523:
5574 #line 2448 "conf_parser.y" /* yacc.c:1646 */
5575 {
5576 if (conf_parser_ctx.pass == 2)
5577 ConfigGeneral.cycle_on_host_change = yylval.number;
5578 }
5579 #line 5580 "conf_parser.c" /* yacc.c:1646 */
5580 break;
5581
5582 case 524:
5583 #line 2454 "conf_parser.y" /* yacc.c:1646 */
5584 {
5585 ConfigGeneral.dline_min_cidr = (yyvsp[-1].number);
5586 }
5587 #line 5588 "conf_parser.c" /* yacc.c:1646 */
5588 break;
5589
5590 case 525:
5591 #line 2459 "conf_parser.y" /* yacc.c:1646 */
5592 {
5593 ConfigGeneral.dline_min_cidr6 = (yyvsp[-1].number);
5594 }
5595 #line 5596 "conf_parser.c" /* yacc.c:1646 */
5596 break;
5597
5598 case 526:
5599 #line 2464 "conf_parser.y" /* yacc.c:1646 */
5600 {
5601 ConfigGeneral.kline_min_cidr = (yyvsp[-1].number);
5602 }
5603 #line 5604 "conf_parser.c" /* yacc.c:1646 */
5604 break;
5605
5606 case 527:
5607 #line 2469 "conf_parser.y" /* yacc.c:1646 */
5608 {
5609 ConfigGeneral.kline_min_cidr6 = (yyvsp[-1].number);
5610 }
5611 #line 5612 "conf_parser.c" /* yacc.c:1646 */
5612 break;
5613
5614 case 528:
5615 #line 2474 "conf_parser.y" /* yacc.c:1646 */
5616 {
5617 ConfigGeneral.tkline_expire_notices = yylval.number;
5618 }
5619 #line 5620 "conf_parser.c" /* yacc.c:1646 */
5620 break;
5621
5622 case 529:
5623 #line 2479 "conf_parser.y" /* yacc.c:1646 */
5624 {
5625 ConfigGeneral.kill_chase_time_limit = (yyvsp[-1].number);
5626 }
5627 #line 5628 "conf_parser.c" /* yacc.c:1646 */
5628 break;
5629
5630 case 530:
5631 #line 2484 "conf_parser.y" /* yacc.c:1646 */
5632 {
5633 ConfigGeneral.ignore_bogus_ts = yylval.number;
5634 }
5635 #line 5636 "conf_parser.c" /* yacc.c:1646 */
5636 break;
5637
5638 case 531:
5639 #line 2489 "conf_parser.y" /* yacc.c:1646 */
5640 {
5641 ConfigGeneral.failed_oper_notice = yylval.number;
5642 }
5643 #line 5644 "conf_parser.c" /* yacc.c:1646 */
5644 break;
5645
5646 case 532:
5647 #line 2494 "conf_parser.y" /* yacc.c:1646 */
5648 {
5649 ConfigGeneral.anti_nick_flood = yylval.number;
5650 }
5651 #line 5652 "conf_parser.c" /* yacc.c:1646 */
5652 break;
5653
5654 case 533:
5655 #line 2499 "conf_parser.y" /* yacc.c:1646 */
5656 {
5657 ConfigGeneral.max_nick_time = (yyvsp[-1].number);
5658 }
5659 #line 5660 "conf_parser.c" /* yacc.c:1646 */
5660 break;
5661
5662 case 534:
5663 #line 2504 "conf_parser.y" /* yacc.c:1646 */
5664 {
5665 ConfigGeneral.max_nick_changes = (yyvsp[-1].number);
5666 }
5667 #line 5668 "conf_parser.c" /* yacc.c:1646 */
5668 break;
5669
5670 case 535:
5671 #line 2509 "conf_parser.y" /* yacc.c:1646 */
5672 {
5673 ConfigGeneral.max_accept = (yyvsp[-1].number);
5674 }
5675 #line 5676 "conf_parser.c" /* yacc.c:1646 */
5676 break;
5677
5678 case 536:
5679 #line 2514 "conf_parser.y" /* yacc.c:1646 */
5680 {
5681 ConfigGeneral.anti_spam_exit_message_time = (yyvsp[-1].number);
5682 }
5683 #line 5684 "conf_parser.c" /* yacc.c:1646 */
5684 break;
5685
5686 case 537:
5687 #line 2519 "conf_parser.y" /* yacc.c:1646 */
5688 {
5689 ConfigGeneral.ts_warn_delta = (yyvsp[-1].number);
5690 }
5691 #line 5692 "conf_parser.c" /* yacc.c:1646 */
5692 break;
5693
5694 case 538:
5695 #line 2524 "conf_parser.y" /* yacc.c:1646 */
5696 {
5697 if (conf_parser_ctx.pass == 2)
5698 ConfigGeneral.ts_max_delta = (yyvsp[-1].number);
5699 }
5700 #line 5701 "conf_parser.c" /* yacc.c:1646 */
5701 break;
5702
5703 case 539:
5704 #line 2530 "conf_parser.y" /* yacc.c:1646 */
5705 {
5706 ConfigGeneral.invisible_on_connect = yylval.number;
5707 }
5708 #line 5709 "conf_parser.c" /* yacc.c:1646 */
5709 break;
5710
5711 case 540:
5712 #line 2535 "conf_parser.y" /* yacc.c:1646 */
5713 {
5714 ConfigGeneral.warn_no_connect_block = yylval.number;
5715 }
5716 #line 5717 "conf_parser.c" /* yacc.c:1646 */
5717 break;
5718
5719 case 541:
5720 #line 2540 "conf_parser.y" /* yacc.c:1646 */
5721 {
5722 ConfigGeneral.stats_e_disabled = yylval.number;
5723 }
5724 #line 5725 "conf_parser.c" /* yacc.c:1646 */
5725 break;
5726
5727 case 542:
5728 #line 2545 "conf_parser.y" /* yacc.c:1646 */
5729 {
5730 ConfigGeneral.stats_m_oper_only = yylval.number;
5731 }
5732 #line 5733 "conf_parser.c" /* yacc.c:1646 */
5733 break;
5734
5735 case 543:
5736 #line 2550 "conf_parser.y" /* yacc.c:1646 */
5737 {
5738 ConfigGeneral.stats_o_oper_only = yylval.number;
5739 }
5740 #line 5741 "conf_parser.c" /* yacc.c:1646 */
5741 break;
5742
5743 case 544:
5744 #line 2555 "conf_parser.y" /* yacc.c:1646 */
5745 {
5746 ConfigGeneral.stats_P_oper_only = yylval.number;
5747 }
5748 #line 5749 "conf_parser.c" /* yacc.c:1646 */
5749 break;
5750
5751 case 545:
5752 #line 2560 "conf_parser.y" /* yacc.c:1646 */
5753 {
5754 ConfigGeneral.stats_u_oper_only = yylval.number;
5755 }
5756 #line 5757 "conf_parser.c" /* yacc.c:1646 */
5757 break;
5758
5759 case 546:
5760 #line 2565 "conf_parser.y" /* yacc.c:1646 */
5761 {
5762 ConfigGeneral.stats_k_oper_only = 2 * yylval.number;
5763 }
5764 #line 5765 "conf_parser.c" /* yacc.c:1646 */
5765 break;
5766
5767 case 547:
5768 #line 2568 "conf_parser.y" /* yacc.c:1646 */
5769 {
5770 ConfigGeneral.stats_k_oper_only = 1;
5771 }
5772 #line 5773 "conf_parser.c" /* yacc.c:1646 */
5773 break;
5774
5775 case 548:
5776 #line 2573 "conf_parser.y" /* yacc.c:1646 */
5777 {
5778 ConfigGeneral.stats_i_oper_only = 2 * yylval.number;
5779 }
5780 #line 5781 "conf_parser.c" /* yacc.c:1646 */
5781 break;
5782
5783 case 549:
5784 #line 2576 "conf_parser.y" /* yacc.c:1646 */
5785 {
5786 ConfigGeneral.stats_i_oper_only = 1;
5787 }
5788 #line 5789 "conf_parser.c" /* yacc.c:1646 */
5789 break;
5790
5791 case 550:
5792 #line 2581 "conf_parser.y" /* yacc.c:1646 */
5793 {
5794 ConfigGeneral.pace_wait = (yyvsp[-1].number);
5795 }
5796 #line 5797 "conf_parser.c" /* yacc.c:1646 */
5797 break;
5798
5799 case 551:
5800 #line 2586 "conf_parser.y" /* yacc.c:1646 */
5801 {
5802 ConfigGeneral.caller_id_wait = (yyvsp[-1].number);
5803 }
5804 #line 5805 "conf_parser.c" /* yacc.c:1646 */
5805 break;
5806
5807 case 552:
5808 #line 2591 "conf_parser.y" /* yacc.c:1646 */
5809 {
5810 ConfigGeneral.opers_bypass_callerid = yylval.number;
5811 }
5812 #line 5813 "conf_parser.c" /* yacc.c:1646 */
5813 break;
5814
5815 case 553:
5816 #line 2596 "conf_parser.y" /* yacc.c:1646 */
5817 {
5818 ConfigGeneral.pace_wait_simple = (yyvsp[-1].number);
5819 }
5820 #line 5821 "conf_parser.c" /* yacc.c:1646 */
5821 break;
5822
5823 case 554:
5824 #line 2601 "conf_parser.y" /* yacc.c:1646 */
5825 {
5826 ConfigGeneral.short_motd = yylval.number;
5827 }
5828 #line 5829 "conf_parser.c" /* yacc.c:1646 */
5829 break;
5830
5831 case 555:
5832 #line 2606 "conf_parser.y" /* yacc.c:1646 */
5833 {
5834 ConfigGeneral.no_oper_flood = yylval.number;
5835 }
5836 #line 5837 "conf_parser.c" /* yacc.c:1646 */
5837 break;
5838
5839 case 556:
5840 #line 2611 "conf_parser.y" /* yacc.c:1646 */
5841 {
5842 ConfigGeneral.dots_in_ident = (yyvsp[-1].number);
5843 }
5844 #line 5845 "conf_parser.c" /* yacc.c:1646 */
5845 break;
5846
5847 case 557:
5848 #line 2616 "conf_parser.y" /* yacc.c:1646 */
5849 {
5850 ConfigGeneral.max_targets = (yyvsp[-1].number);
5851 }
5852 #line 5853 "conf_parser.c" /* yacc.c:1646 */
5853 break;
5854
5855 case 558:
5856 #line 2621 "conf_parser.y" /* yacc.c:1646 */
5857 {
5858 ConfigGeneral.ping_cookie = yylval.number;
5859 }
5860 #line 5861 "conf_parser.c" /* yacc.c:1646 */
5861 break;
5862
5863 case 559:
5864 #line 2626 "conf_parser.y" /* yacc.c:1646 */
5865 {
5866 ConfigGeneral.disable_auth = yylval.number;
5867 }
5868 #line 5869 "conf_parser.c" /* yacc.c:1646 */
5869 break;
5870
5871 case 560:
5872 #line 2631 "conf_parser.y" /* yacc.c:1646 */
5873 {
5874 ConfigGeneral.throttle_count = (yyvsp[-1].number);
5875 }
5876 #line 5877 "conf_parser.c" /* yacc.c:1646 */
5877 break;
5878
5879 case 561:
5880 #line 2636 "conf_parser.y" /* yacc.c:1646 */
5881 {
5882 ConfigGeneral.throttle_time = (yyvsp[-1].number);
5883 }
5884 #line 5885 "conf_parser.c" /* yacc.c:1646 */
5885 break;
5886
5887 case 562:
5888 #line 2641 "conf_parser.y" /* yacc.c:1646 */
5889 {
5890 ConfigGeneral.oper_umodes = 0;
5891 }
5892 #line 5893 "conf_parser.c" /* yacc.c:1646 */
5893 break;
5894
5895 case 566:
5896 #line 2647 "conf_parser.y" /* yacc.c:1646 */
5897 {
5898 ConfigGeneral.oper_umodes |= UMODE_BOTS;
5899 }
5900 #line 5901 "conf_parser.c" /* yacc.c:1646 */
5901 break;
5902
5903 case 567:
5904 #line 2650 "conf_parser.y" /* yacc.c:1646 */
5905 {
5906 ConfigGeneral.oper_umodes |= UMODE_CCONN;
5907 }
5908 #line 5909 "conf_parser.c" /* yacc.c:1646 */
5909 break;
5910
5911 case 568:
5912 #line 2653 "conf_parser.y" /* yacc.c:1646 */
5913 {
5914 ConfigGeneral.oper_umodes |= UMODE_DEAF;
5915 }
5916 #line 5917 "conf_parser.c" /* yacc.c:1646 */
5917 break;
5918
5919 case 569:
5920 #line 2656 "conf_parser.y" /* yacc.c:1646 */
5921 {
5922 ConfigGeneral.oper_umodes |= UMODE_DEBUG;
5923 }
5924 #line 5925 "conf_parser.c" /* yacc.c:1646 */
5925 break;
5926
5927 case 570:
5928 #line 2659 "conf_parser.y" /* yacc.c:1646 */
5929 {
5930 ConfigGeneral.oper_umodes |= UMODE_FULL;
5931 }
5932 #line 5933 "conf_parser.c" /* yacc.c:1646 */
5933 break;
5934
5935 case 571:
5936 #line 2662 "conf_parser.y" /* yacc.c:1646 */
5937 {
5938 ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
5939 }
5940 #line 5941 "conf_parser.c" /* yacc.c:1646 */
5941 break;
5942
5943 case 572:
5944 #line 2665 "conf_parser.y" /* yacc.c:1646 */
5945 {
5946 ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
5947 }
5948 #line 5949 "conf_parser.c" /* yacc.c:1646 */
5949 break;
5950
5951 case 573:
5952 #line 2668 "conf_parser.y" /* yacc.c:1646 */
5953 {
5954 ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
5955 }
5956 #line 5957 "conf_parser.c" /* yacc.c:1646 */
5957 break;
5958
5959 case 574:
5960 #line 2671 "conf_parser.y" /* yacc.c:1646 */
5961 {
5962 ConfigGeneral.oper_umodes |= UMODE_SKILL;
5963 }
5964 #line 5965 "conf_parser.c" /* yacc.c:1646 */
5965 break;
5966
5967 case 575:
5968 #line 2674 "conf_parser.y" /* yacc.c:1646 */
5969 {
5970 ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
5971 }
5972 #line 5973 "conf_parser.c" /* yacc.c:1646 */
5973 break;
5974
5975 case 576:
5976 #line 2677 "conf_parser.y" /* yacc.c:1646 */
5977 {
5978 ConfigGeneral.oper_umodes |= UMODE_REJ;
5979 }
5980 #line 5981 "conf_parser.c" /* yacc.c:1646 */
5981 break;
5982
5983 case 577:
5984 #line 2680 "conf_parser.y" /* yacc.c:1646 */
5985 {
5986 ConfigGeneral.oper_umodes |= UMODE_UNAUTH;
5987 }
5988 #line 5989 "conf_parser.c" /* yacc.c:1646 */
5989 break;
5990
5991 case 578:
5992 #line 2683 "conf_parser.y" /* yacc.c:1646 */
5993 {
5994 ConfigGeneral.oper_umodes |= UMODE_SPY;
5995 }
5996 #line 5997 "conf_parser.c" /* yacc.c:1646 */
5997 break;
5998
5999 case 579:
6000 #line 2686 "conf_parser.y" /* yacc.c:1646 */
6001 {
6002 ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
6003 }
6004 #line 6005 "conf_parser.c" /* yacc.c:1646 */
6005 break;
6006
6007 case 580:
6008 #line 2689 "conf_parser.y" /* yacc.c:1646 */
6009 {
6010 ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
6011 }
6012 #line 6013 "conf_parser.c" /* yacc.c:1646 */
6013 break;
6014
6015 case 581:
6016 #line 2692 "conf_parser.y" /* yacc.c:1646 */
6017 {
6018 ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
6019 }
6020 #line 6021 "conf_parser.c" /* yacc.c:1646 */
6021 break;
6022
6023 case 582:
6024 #line 2695 "conf_parser.y" /* yacc.c:1646 */
6025 {
6026 ConfigGeneral.oper_umodes |= UMODE_WALLOP;
6027 }
6028 #line 6029 "conf_parser.c" /* yacc.c:1646 */
6029 break;
6030
6031 case 583:
6032 #line 2698 "conf_parser.y" /* yacc.c:1646 */
6033 {
6034 ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
6035 }
6036 #line 6037 "conf_parser.c" /* yacc.c:1646 */
6037 break;
6038
6039 case 584:
6040 #line 2701 "conf_parser.y" /* yacc.c:1646 */
6041 {
6042 ConfigGeneral.oper_umodes |= UMODE_CALLERID;
6043 }
6044 #line 6045 "conf_parser.c" /* yacc.c:1646 */
6045 break;
6046
6047 case 585:
6048 #line 2704 "conf_parser.y" /* yacc.c:1646 */
6049 {
6050 ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
6051 }
6052 #line 6053 "conf_parser.c" /* yacc.c:1646 */
6053 break;
6054
6055 case 586:
6056 #line 2707 "conf_parser.y" /* yacc.c:1646 */
6057 {
6058 ConfigGeneral.oper_umodes |= UMODE_REGONLY;
6059 }
6060 #line 6061 "conf_parser.c" /* yacc.c:1646 */
6061 break;
6062
6063 case 587:
6064 #line 2710 "conf_parser.y" /* yacc.c:1646 */
6065 {
6066 ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
6067 }
6068 #line 6069 "conf_parser.c" /* yacc.c:1646 */
6069 break;
6070
6071 case 588:
6072 #line 2715 "conf_parser.y" /* yacc.c:1646 */
6073 {
6074 ConfigGeneral.oper_only_umodes = 0;
6075 }
6076 #line 6077 "conf_parser.c" /* yacc.c:1646 */
6077 break;
6078
6079 case 592:
6080 #line 2721 "conf_parser.y" /* yacc.c:1646 */
6081 {
6082 ConfigGeneral.oper_only_umodes |= UMODE_BOTS;
6083 }
6084 #line 6085 "conf_parser.c" /* yacc.c:1646 */
6085 break;
6086
6087 case 593:
6088 #line 2724 "conf_parser.y" /* yacc.c:1646 */
6089 {
6090 ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
6091 }
6092 #line 6093 "conf_parser.c" /* yacc.c:1646 */
6093 break;
6094
6095 case 594:
6096 #line 2727 "conf_parser.y" /* yacc.c:1646 */
6097 {
6098 ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
6099 }
6100 #line 6101 "conf_parser.c" /* yacc.c:1646 */
6101 break;
6102
6103 case 595:
6104 #line 2730 "conf_parser.y" /* yacc.c:1646 */
6105 {
6106 ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
6107 }
6108 #line 6109 "conf_parser.c" /* yacc.c:1646 */
6109 break;
6110
6111 case 596:
6112 #line 2733 "conf_parser.y" /* yacc.c:1646 */
6113 {
6114 ConfigGeneral.oper_only_umodes |= UMODE_FULL;
6115 }
6116 #line 6117 "conf_parser.c" /* yacc.c:1646 */
6117 break;
6118
6119 case 597:
6120 #line 2736 "conf_parser.y" /* yacc.c:1646 */
6121 {
6122 ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
6123 }
6124 #line 6125 "conf_parser.c" /* yacc.c:1646 */
6125 break;
6126
6127 case 598:
6128 #line 2739 "conf_parser.y" /* yacc.c:1646 */
6129 {
6130 ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
6131 }
6132 #line 6133 "conf_parser.c" /* yacc.c:1646 */
6133 break;
6134
6135 case 599:
6136 #line 2742 "conf_parser.y" /* yacc.c:1646 */
6137 {
6138 ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
6139 }
6140 #line 6141 "conf_parser.c" /* yacc.c:1646 */
6141 break;
6142
6143 case 600:
6144 #line 2745 "conf_parser.y" /* yacc.c:1646 */
6145 {
6146 ConfigGeneral.oper_only_umodes |= UMODE_REJ;
6147 }
6148 #line 6149 "conf_parser.c" /* yacc.c:1646 */
6149 break;
6150
6151 case 601:
6152 #line 2748 "conf_parser.y" /* yacc.c:1646 */
6153 {
6154 ConfigGeneral.oper_only_umodes |= UMODE_UNAUTH;
6155 }
6156 #line 6157 "conf_parser.c" /* yacc.c:1646 */
6157 break;
6158
6159 case 602:
6160 #line 2751 "conf_parser.y" /* yacc.c:1646 */
6161 {
6162 ConfigGeneral.oper_only_umodes |= UMODE_SPY;
6163 }
6164 #line 6165 "conf_parser.c" /* yacc.c:1646 */
6165 break;
6166
6167 case 603:
6168 #line 2754 "conf_parser.y" /* yacc.c:1646 */
6169 {
6170 ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
6171 }
6172 #line 6173 "conf_parser.c" /* yacc.c:1646 */
6173 break;
6174
6175 case 604:
6176 #line 2757 "conf_parser.y" /* yacc.c:1646 */
6177 {
6178 ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
6179 }
6180 #line 6181 "conf_parser.c" /* yacc.c:1646 */
6181 break;
6182
6183 case 605:
6184 #line 2760 "conf_parser.y" /* yacc.c:1646 */
6185 {
6186 ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
6187 }
6188 #line 6189 "conf_parser.c" /* yacc.c:1646 */
6189 break;
6190
6191 case 606:
6192 #line 2763 "conf_parser.y" /* yacc.c:1646 */
6193 {
6194 ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
6195 }
6196 #line 6197 "conf_parser.c" /* yacc.c:1646 */
6197 break;
6198
6199 case 607:
6200 #line 2766 "conf_parser.y" /* yacc.c:1646 */
6201 {
6202 ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
6203 }
6204 #line 6205 "conf_parser.c" /* yacc.c:1646 */
6205 break;
6206
6207 case 608:
6208 #line 2769 "conf_parser.y" /* yacc.c:1646 */
6209 {
6210 ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
6211 }
6212 #line 6213 "conf_parser.c" /* yacc.c:1646 */
6213 break;
6214
6215 case 609:
6216 #line 2772 "conf_parser.y" /* yacc.c:1646 */
6217 {
6218 ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
6219 }
6220 #line 6221 "conf_parser.c" /* yacc.c:1646 */
6221 break;
6222
6223 case 610:
6224 #line 2775 "conf_parser.y" /* yacc.c:1646 */
6225 {
6226 ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
6227 }
6228 #line 6229 "conf_parser.c" /* yacc.c:1646 */
6229 break;
6230
6231 case 611:
6232 #line 2778 "conf_parser.y" /* yacc.c:1646 */
6233 {
6234 ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
6235 }
6236 #line 6237 "conf_parser.c" /* yacc.c:1646 */
6237 break;
6238
6239 case 612:
6240 #line 2783 "conf_parser.y" /* yacc.c:1646 */
6241 {
6242 ConfigGeneral.min_nonwildcard = (yyvsp[-1].number);
6243 }
6244 #line 6245 "conf_parser.c" /* yacc.c:1646 */
6245 break;
6246
6247 case 613:
6248 #line 2788 "conf_parser.y" /* yacc.c:1646 */
6249 {
6250 ConfigGeneral.min_nonwildcard_simple = (yyvsp[-1].number);
6251 }
6252 #line 6253 "conf_parser.c" /* yacc.c:1646 */
6253 break;
6254
6255 case 614:
6256 #line 2793 "conf_parser.y" /* yacc.c:1646 */
6257 {
6258 ConfigGeneral.default_floodcount = (yyvsp[-1].number);
6259 }
6260 #line 6261 "conf_parser.c" /* yacc.c:1646 */
6261 break;
6262
6263 case 630:
6264 #line 2818 "conf_parser.y" /* yacc.c:1646 */
6265 {
6266 ConfigChannel.disable_fake_channels = yylval.number;
6267 }
6268 #line 6269 "conf_parser.c" /* yacc.c:1646 */
6269 break;
6270
6271 case 631:
6272 #line 2823 "conf_parser.y" /* yacc.c:1646 */
6273 {
6274 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6275 }
6276 #line 6277 "conf_parser.c" /* yacc.c:1646 */
6277 break;
6278
6279 case 632:
6280 #line 2828 "conf_parser.y" /* yacc.c:1646 */
6281 {
6282 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6283 }
6284 #line 6285 "conf_parser.c" /* yacc.c:1646 */
6285 break;
6286
6287 case 633:
6288 #line 2833 "conf_parser.y" /* yacc.c:1646 */
6289 {
6290 ConfigChannel.invite_delay_channel = (yyvsp[-1].number);
6291 }
6292 #line 6293 "conf_parser.c" /* yacc.c:1646 */
6293 break;
6294
6295 case 634:
6296 #line 2838 "conf_parser.y" /* yacc.c:1646 */
6297 {
6298 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6299 }
6300 #line 6301 "conf_parser.c" /* yacc.c:1646 */
6301 break;
6302
6303 case 635:
6304 #line 2843 "conf_parser.y" /* yacc.c:1646 */
6305 {
6306 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6307 }
6308 #line 6309 "conf_parser.c" /* yacc.c:1646 */
6309 break;
6310
6311 case 636:
6312 #line 2848 "conf_parser.y" /* yacc.c:1646 */
6313 {
6314 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6315 }
6316 #line 6317 "conf_parser.c" /* yacc.c:1646 */
6317 break;
6318
6319 case 637:
6320 #line 2853 "conf_parser.y" /* yacc.c:1646 */
6321 {
6322 ConfigChannel.max_channels = (yyvsp[-1].number);
6323 }
6324 #line 6325 "conf_parser.c" /* yacc.c:1646 */
6325 break;
6326
6327 case 638:
6328 #line 2858 "conf_parser.y" /* yacc.c:1646 */
6329 {
6330 ConfigChannel.max_bans = (yyvsp[-1].number);
6331 }
6332 #line 6333 "conf_parser.c" /* yacc.c:1646 */
6333 break;
6334
6335 case 639:
6336 #line 2863 "conf_parser.y" /* yacc.c:1646 */
6337 {
6338 ConfigChannel.default_join_flood_count = yylval.number;
6339 }
6340 #line 6341 "conf_parser.c" /* yacc.c:1646 */
6341 break;
6342
6343 case 640:
6344 #line 2868 "conf_parser.y" /* yacc.c:1646 */
6345 {
6346 ConfigChannel.default_join_flood_time = (yyvsp[-1].number);
6347 }
6348 #line 6349 "conf_parser.c" /* yacc.c:1646 */
6349 break;
6350
6351 case 654:
6352 #line 2891 "conf_parser.y" /* yacc.c:1646 */
6353 {
6354 if (conf_parser_ctx.pass == 2)
6355 ConfigServerHide.flatten_links = yylval.number;
6356 }
6357 #line 6358 "conf_parser.c" /* yacc.c:1646 */
6358 break;
6359
6360 case 655:
6361 #line 2897 "conf_parser.y" /* yacc.c:1646 */
6362 {
6363 if (conf_parser_ctx.pass == 2)
6364 {
6365 if ((yyvsp[-1].number) > 0)
6366 {
6367 event_write_links_file.when = (yyvsp[-1].number);
6368 event_add(&event_write_links_file, NULL);
6369 }
6370 else
6371 event_delete(&event_write_links_file);
6372
6373 ConfigServerHide.flatten_links_delay = (yyvsp[-1].number);
6374 }
6375 }
6376 #line 6377 "conf_parser.c" /* yacc.c:1646 */
6377 break;
6378
6379 case 656:
6380 #line 2913 "conf_parser.y" /* yacc.c:1646 */
6381 {
6382 if (conf_parser_ctx.pass == 2)
6383 {
6384 xfree(ConfigServerHide.flatten_links_file);
6385 ConfigServerHide.flatten_links_file = xstrdup(yylval.string);
6386 }
6387 }
6388 #line 6389 "conf_parser.c" /* yacc.c:1646 */
6389 break;
6390
6391 case 657:
6392 #line 2922 "conf_parser.y" /* yacc.c:1646 */
6393 {
6394 if (conf_parser_ctx.pass == 2)
6395 ConfigServerHide.disable_remote_commands = yylval.number;
6396 }
6397 #line 6398 "conf_parser.c" /* yacc.c:1646 */
6398 break;
6399
6400 case 658:
6401 #line 2928 "conf_parser.y" /* yacc.c:1646 */
6402 {
6403 if (conf_parser_ctx.pass == 2)
6404 ConfigServerHide.hide_servers = yylval.number;
6405 }
6406 #line 6407 "conf_parser.c" /* yacc.c:1646 */
6407 break;
6408
6409 case 659:
6410 #line 2934 "conf_parser.y" /* yacc.c:1646 */
6411 {
6412 if (conf_parser_ctx.pass == 2)
6413 ConfigServerHide.hide_services = yylval.number;
6414 }
6415 #line 6416 "conf_parser.c" /* yacc.c:1646 */
6416 break;
6417
6418 case 660:
6419 #line 2940 "conf_parser.y" /* yacc.c:1646 */
6420 {
6421 if (conf_parser_ctx.pass == 2)
6422 {
6423 xfree(ConfigServerHide.hidden_name);
6424 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6425 }
6426 }
6427 #line 6428 "conf_parser.c" /* yacc.c:1646 */
6428 break;
6429
6430 case 661:
6431 #line 2949 "conf_parser.y" /* yacc.c:1646 */
6432 {
6433 if (conf_parser_ctx.pass == 2)
6434 ConfigServerHide.hidden = yylval.number;
6435 }
6436 #line 6437 "conf_parser.c" /* yacc.c:1646 */
6437 break;
6438
6439 case 662:
6440 #line 2955 "conf_parser.y" /* yacc.c:1646 */
6441 {
6442 if (conf_parser_ctx.pass == 2)
6443 ConfigServerHide.hide_server_ips = yylval.number;
6444 }
6445 #line 6446 "conf_parser.c" /* yacc.c:1646 */
6446 break;
6447
6448
6449 #line 6450 "conf_parser.c" /* yacc.c:1646 */
6450 default: break;
6451 }
6452 /* User semantic actions sometimes alter yychar, and that requires
6453 that yytoken be updated with the new translation. We take the
6454 approach of translating immediately before every use of yytoken.
6455 One alternative is translating here after every semantic action,
6456 but that translation would be missed if the semantic action invokes
6457 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6458 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6459 incorrect destructor might then be invoked immediately. In the
6460 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6461 to an incorrect destructor call or verbose syntax error message
6462 before the lookahead is translated. */
6463 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6464
6465 YYPOPSTACK (yylen);
6466 yylen = 0;
6467 YY_STACK_PRINT (yyss, yyssp);
6468
6469 *++yyvsp = yyval;
6470
6471 /* Now 'shift' the result of the reduction. Determine what state
6472 that goes to, based on the state we popped back to and the rule
6473 number reduced by. */
6474
6475 yyn = yyr1[yyn];
6476
6477 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6478 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6479 yystate = yytable[yystate];
6480 else
6481 yystate = yydefgoto[yyn - YYNTOKENS];
6482
6483 goto yynewstate;
6484
6485
6486 /*--------------------------------------.
6487 | yyerrlab -- here on detecting error. |
6488 `--------------------------------------*/
6489 yyerrlab:
6490 /* Make sure we have latest lookahead translation. See comments at
6491 user semantic actions for why this is necessary. */
6492 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6493
6494 /* If not already recovering from an error, report this error. */
6495 if (!yyerrstatus)
6496 {
6497 ++yynerrs;
6498 #if ! YYERROR_VERBOSE
6499 yyerror (YY_("syntax error"));
6500 #else
6501 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6502 yyssp, yytoken)
6503 {
6504 char const *yymsgp = YY_("syntax error");
6505 int yysyntax_error_status;
6506 yysyntax_error_status = YYSYNTAX_ERROR;
6507 if (yysyntax_error_status == 0)
6508 yymsgp = yymsg;
6509 else if (yysyntax_error_status == 1)
6510 {
6511 if (yymsg != yymsgbuf)
6512 YYSTACK_FREE (yymsg);
6513 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6514 if (!yymsg)
6515 {
6516 yymsg = yymsgbuf;
6517 yymsg_alloc = sizeof yymsgbuf;
6518 yysyntax_error_status = 2;
6519 }
6520 else
6521 {
6522 yysyntax_error_status = YYSYNTAX_ERROR;
6523 yymsgp = yymsg;
6524 }
6525 }
6526 yyerror (yymsgp);
6527 if (yysyntax_error_status == 2)
6528 goto yyexhaustedlab;
6529 }
6530 # undef YYSYNTAX_ERROR
6531 #endif
6532 }
6533
6534
6535
6536 if (yyerrstatus == 3)
6537 {
6538 /* If just tried and failed to reuse lookahead token after an
6539 error, discard it. */
6540
6541 if (yychar <= YYEOF)
6542 {
6543 /* Return failure if at end of input. */
6544 if (yychar == YYEOF)
6545 YYABORT;
6546 }
6547 else
6548 {
6549 yydestruct ("Error: discarding",
6550 yytoken, &yylval);
6551 yychar = YYEMPTY;
6552 }
6553 }
6554
6555 /* Else will try to reuse lookahead token after shifting the error
6556 token. */
6557 goto yyerrlab1;
6558
6559
6560 /*---------------------------------------------------.
6561 | yyerrorlab -- error raised explicitly by YYERROR. |
6562 `---------------------------------------------------*/
6563 yyerrorlab:
6564
6565 /* Pacify compilers like GCC when the user code never invokes
6566 YYERROR and the label yyerrorlab therefore never appears in user
6567 code. */
6568 if (/*CONSTCOND*/ 0)
6569 goto yyerrorlab;
6570
6571 /* Do not reclaim the symbols of the rule whose action triggered
6572 this YYERROR. */
6573 YYPOPSTACK (yylen);
6574 yylen = 0;
6575 YY_STACK_PRINT (yyss, yyssp);
6576 yystate = *yyssp;
6577 goto yyerrlab1;
6578
6579
6580 /*-------------------------------------------------------------.
6581 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6582 `-------------------------------------------------------------*/
6583 yyerrlab1:
6584 yyerrstatus = 3; /* Each real token shifted decrements this. */
6585
6586 for (;;)
6587 {
6588 yyn = yypact[yystate];
6589 if (!yypact_value_is_default (yyn))
6590 {
6591 yyn += YYTERROR;
6592 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6593 {
6594 yyn = yytable[yyn];
6595 if (0 < yyn)
6596 break;
6597 }
6598 }
6599
6600 /* Pop the current state because it cannot handle the error token. */
6601 if (yyssp == yyss)
6602 YYABORT;
6603
6604
6605 yydestruct ("Error: popping",
6606 yystos[yystate], yyvsp);
6607 YYPOPSTACK (1);
6608 yystate = *yyssp;
6609 YY_STACK_PRINT (yyss, yyssp);
6610 }
6611
6612 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6613 *++yyvsp = yylval;
6614 YY_IGNORE_MAYBE_UNINITIALIZED_END
6615
6616
6617 /* Shift the error token. */
6618 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6619
6620 yystate = yyn;
6621 goto yynewstate;
6622
6623
6624 /*-------------------------------------.
6625 | yyacceptlab -- YYACCEPT comes here. |
6626 `-------------------------------------*/
6627 yyacceptlab:
6628 yyresult = 0;
6629 goto yyreturn;
6630
6631 /*-----------------------------------.
6632 | yyabortlab -- YYABORT comes here. |
6633 `-----------------------------------*/
6634 yyabortlab:
6635 yyresult = 1;
6636 goto yyreturn;
6637
6638 #if !defined yyoverflow || YYERROR_VERBOSE
6639 /*-------------------------------------------------.
6640 | yyexhaustedlab -- memory exhaustion comes here. |
6641 `-------------------------------------------------*/
6642 yyexhaustedlab:
6643 yyerror (YY_("memory exhausted"));
6644 yyresult = 2;
6645 /* Fall through. */
6646 #endif
6647
6648 yyreturn:
6649 if (yychar != YYEMPTY)
6650 {
6651 /* Make sure we have latest lookahead translation. See comments at
6652 user semantic actions for why this is necessary. */
6653 yytoken = YYTRANSLATE (yychar);
6654 yydestruct ("Cleanup: discarding lookahead",
6655 yytoken, &yylval);
6656 }
6657 /* Do not reclaim the symbols of the rule whose action triggered
6658 this YYABORT or YYACCEPT. */
6659 YYPOPSTACK (yylen);
6660 YY_STACK_PRINT (yyss, yyssp);
6661 while (yyssp != yyss)
6662 {
6663 yydestruct ("Cleanup: popping",
6664 yystos[*yyssp], yyvsp);
6665 YYPOPSTACK (1);
6666 }
6667 #ifndef yyoverflow
6668 if (yyss != yyssa)
6669 YYSTACK_FREE (yyss);
6670 #endif
6671 #if YYERROR_VERBOSE
6672 if (yymsg != yymsgbuf)
6673 YYSTACK_FREE (yymsg);
6674 #endif
6675 return yyresult;
6676 }

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision