xref: /freebsd/contrib/ntp/ntpd/ntp_parser.c (revision 788ca347b816afd83b2885e0c79aeeb88649b2ab)
1 /* A Bison parser, made by GNU Bison 3.0.2.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11 
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.2"
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 14 "ntp_parser.y" /* yacc.c:339  */
66 
67   #ifdef HAVE_CONFIG_H
68   # include <config.h>
69   #endif
70 
71   #include "ntp.h"
72   #include "ntpd.h"
73   #include "ntp_machine.h"
74   #include "ntp_stdlib.h"
75   #include "ntp_filegen.h"
76   #include "ntp_scanner.h"
77   #include "ntp_config.h"
78   #include "ntp_crypto.h"
79 
80   #include "ntpsim.h"		/* HMS: Do we really want this all the time? */
81 				/* SK: It might be a good idea to always
82 				   include the simulator code. That way
83 				   someone can use the same configuration file
84 				   for both the simulator and the daemon
85 				*/
86 
87   #define YYMALLOC	emalloc
88   #define YYFREE	free
89   #define YYERROR_VERBOSE
90   #define YYMAXDEPTH	1000	/* stop the madness sooner */
91   void yyerror(struct FILE_INFO *ip_file, const char *msg);
92 
93   #ifdef SIM
94   #  define ONLY_SIM(a)	(a)
95   #else
96   #  define ONLY_SIM(a)	NULL
97   #endif
98 
99 #line 100 "ntp_parser.c" /* yacc.c:339  */
100 
101 # ifndef YY_NULLPTR
102 #  if defined __cplusplus && 201103L <= __cplusplus
103 #   define YY_NULLPTR nullptr
104 #  else
105 #   define YY_NULLPTR 0
106 #  endif
107 # endif
108 
109 /* Enabling verbose error messages.  */
110 #ifdef YYERROR_VERBOSE
111 # undef YYERROR_VERBOSE
112 # define YYERROR_VERBOSE 1
113 #else
114 # define YYERROR_VERBOSE 0
115 #endif
116 
117 /* In a future release of Bison, this section will be replaced
118    by #include "y.tab.h".  */
119 #ifndef YY_YY_Y_TAB_H_INCLUDED
120 # define YY_YY_Y_TAB_H_INCLUDED
121 /* Debug traces.  */
122 #ifndef YYDEBUG
123 # define YYDEBUG 1
124 #endif
125 #if YYDEBUG
126 extern int yydebug;
127 #endif
128 
129 /* Token type.  */
130 #ifndef YYTOKENTYPE
131 # define YYTOKENTYPE
132   enum yytokentype
133   {
134     T_Abbrev = 258,
135     T_Age = 259,
136     T_All = 260,
137     T_Allan = 261,
138     T_Allpeers = 262,
139     T_Auth = 263,
140     T_Autokey = 264,
141     T_Automax = 265,
142     T_Average = 266,
143     T_Bclient = 267,
144     T_Beacon = 268,
145     T_Broadcast = 269,
146     T_Broadcastclient = 270,
147     T_Broadcastdelay = 271,
148     T_Burst = 272,
149     T_Calibrate = 273,
150     T_Ceiling = 274,
151     T_Clockstats = 275,
152     T_Cohort = 276,
153     T_ControlKey = 277,
154     T_Crypto = 278,
155     T_Cryptostats = 279,
156     T_Ctl = 280,
157     T_Day = 281,
158     T_Default = 282,
159     T_Digest = 283,
160     T_Disable = 284,
161     T_Discard = 285,
162     T_Dispersion = 286,
163     T_Double = 287,
164     T_Driftfile = 288,
165     T_Drop = 289,
166     T_Ellipsis = 290,
167     T_Enable = 291,
168     T_End = 292,
169     T_False = 293,
170     T_File = 294,
171     T_Filegen = 295,
172     T_Filenum = 296,
173     T_Flag1 = 297,
174     T_Flag2 = 298,
175     T_Flag3 = 299,
176     T_Flag4 = 300,
177     T_Flake = 301,
178     T_Floor = 302,
179     T_Freq = 303,
180     T_Fudge = 304,
181     T_Host = 305,
182     T_Huffpuff = 306,
183     T_Iburst = 307,
184     T_Ident = 308,
185     T_Ignore = 309,
186     T_Incalloc = 310,
187     T_Incmem = 311,
188     T_Initalloc = 312,
189     T_Initmem = 313,
190     T_Includefile = 314,
191     T_Integer = 315,
192     T_Interface = 316,
193     T_Intrange = 317,
194     T_Io = 318,
195     T_Ipv4 = 319,
196     T_Ipv4_flag = 320,
197     T_Ipv6 = 321,
198     T_Ipv6_flag = 322,
199     T_Kernel = 323,
200     T_Key = 324,
201     T_Keys = 325,
202     T_Keysdir = 326,
203     T_Kod = 327,
204     T_Mssntp = 328,
205     T_Leapfile = 329,
206     T_Limited = 330,
207     T_Link = 331,
208     T_Listen = 332,
209     T_Logconfig = 333,
210     T_Logfile = 334,
211     T_Loopstats = 335,
212     T_Lowpriotrap = 336,
213     T_Manycastclient = 337,
214     T_Manycastserver = 338,
215     T_Mask = 339,
216     T_Maxage = 340,
217     T_Maxclock = 341,
218     T_Maxdepth = 342,
219     T_Maxdist = 343,
220     T_Maxmem = 344,
221     T_Maxpoll = 345,
222     T_Mdnstries = 346,
223     T_Mem = 347,
224     T_Memlock = 348,
225     T_Minclock = 349,
226     T_Mindepth = 350,
227     T_Mindist = 351,
228     T_Minimum = 352,
229     T_Minpoll = 353,
230     T_Minsane = 354,
231     T_Mode = 355,
232     T_Mode7 = 356,
233     T_Monitor = 357,
234     T_Month = 358,
235     T_Mru = 359,
236     T_Multicastclient = 360,
237     T_Nic = 361,
238     T_Nolink = 362,
239     T_Nomodify = 363,
240     T_Nomrulist = 364,
241     T_None = 365,
242     T_Nonvolatile = 366,
243     T_Nopeer = 367,
244     T_Noquery = 368,
245     T_Noselect = 369,
246     T_Noserve = 370,
247     T_Notrap = 371,
248     T_Notrust = 372,
249     T_Ntp = 373,
250     T_Ntpport = 374,
251     T_NtpSignDsocket = 375,
252     T_Orphan = 376,
253     T_Orphanwait = 377,
254     T_Panic = 378,
255     T_Peer = 379,
256     T_Peerstats = 380,
257     T_Phone = 381,
258     T_Pid = 382,
259     T_Pidfile = 383,
260     T_Pool = 384,
261     T_Port = 385,
262     T_Preempt = 386,
263     T_Prefer = 387,
264     T_Protostats = 388,
265     T_Pw = 389,
266     T_Randfile = 390,
267     T_Rawstats = 391,
268     T_Refid = 392,
269     T_Requestkey = 393,
270     T_Reset = 394,
271     T_Restrict = 395,
272     T_Revoke = 396,
273     T_Rlimit = 397,
274     T_Saveconfigdir = 398,
275     T_Server = 399,
276     T_Setvar = 400,
277     T_Source = 401,
278     T_Stacksize = 402,
279     T_Statistics = 403,
280     T_Stats = 404,
281     T_Statsdir = 405,
282     T_Step = 406,
283     T_Stepout = 407,
284     T_Stratum = 408,
285     T_String = 409,
286     T_Sys = 410,
287     T_Sysstats = 411,
288     T_Tick = 412,
289     T_Time1 = 413,
290     T_Time2 = 414,
291     T_Timer = 415,
292     T_Timingstats = 416,
293     T_Tinker = 417,
294     T_Tos = 418,
295     T_Trap = 419,
296     T_True = 420,
297     T_Trustedkey = 421,
298     T_Ttl = 422,
299     T_Type = 423,
300     T_U_int = 424,
301     T_Unconfig = 425,
302     T_Unpeer = 426,
303     T_Version = 427,
304     T_WanderThreshold = 428,
305     T_Week = 429,
306     T_Wildcard = 430,
307     T_Xleave = 431,
308     T_Year = 432,
309     T_Flag = 433,
310     T_EOC = 434,
311     T_Simulate = 435,
312     T_Beep_Delay = 436,
313     T_Sim_Duration = 437,
314     T_Server_Offset = 438,
315     T_Duration = 439,
316     T_Freq_Offset = 440,
317     T_Wander = 441,
318     T_Jitter = 442,
319     T_Prop_Delay = 443,
320     T_Proc_Delay = 444
321   };
322 #endif
323 /* Tokens.  */
324 #define T_Abbrev 258
325 #define T_Age 259
326 #define T_All 260
327 #define T_Allan 261
328 #define T_Allpeers 262
329 #define T_Auth 263
330 #define T_Autokey 264
331 #define T_Automax 265
332 #define T_Average 266
333 #define T_Bclient 267
334 #define T_Beacon 268
335 #define T_Broadcast 269
336 #define T_Broadcastclient 270
337 #define T_Broadcastdelay 271
338 #define T_Burst 272
339 #define T_Calibrate 273
340 #define T_Ceiling 274
341 #define T_Clockstats 275
342 #define T_Cohort 276
343 #define T_ControlKey 277
344 #define T_Crypto 278
345 #define T_Cryptostats 279
346 #define T_Ctl 280
347 #define T_Day 281
348 #define T_Default 282
349 #define T_Digest 283
350 #define T_Disable 284
351 #define T_Discard 285
352 #define T_Dispersion 286
353 #define T_Double 287
354 #define T_Driftfile 288
355 #define T_Drop 289
356 #define T_Ellipsis 290
357 #define T_Enable 291
358 #define T_End 292
359 #define T_False 293
360 #define T_File 294
361 #define T_Filegen 295
362 #define T_Filenum 296
363 #define T_Flag1 297
364 #define T_Flag2 298
365 #define T_Flag3 299
366 #define T_Flag4 300
367 #define T_Flake 301
368 #define T_Floor 302
369 #define T_Freq 303
370 #define T_Fudge 304
371 #define T_Host 305
372 #define T_Huffpuff 306
373 #define T_Iburst 307
374 #define T_Ident 308
375 #define T_Ignore 309
376 #define T_Incalloc 310
377 #define T_Incmem 311
378 #define T_Initalloc 312
379 #define T_Initmem 313
380 #define T_Includefile 314
381 #define T_Integer 315
382 #define T_Interface 316
383 #define T_Intrange 317
384 #define T_Io 318
385 #define T_Ipv4 319
386 #define T_Ipv4_flag 320
387 #define T_Ipv6 321
388 #define T_Ipv6_flag 322
389 #define T_Kernel 323
390 #define T_Key 324
391 #define T_Keys 325
392 #define T_Keysdir 326
393 #define T_Kod 327
394 #define T_Mssntp 328
395 #define T_Leapfile 329
396 #define T_Limited 330
397 #define T_Link 331
398 #define T_Listen 332
399 #define T_Logconfig 333
400 #define T_Logfile 334
401 #define T_Loopstats 335
402 #define T_Lowpriotrap 336
403 #define T_Manycastclient 337
404 #define T_Manycastserver 338
405 #define T_Mask 339
406 #define T_Maxage 340
407 #define T_Maxclock 341
408 #define T_Maxdepth 342
409 #define T_Maxdist 343
410 #define T_Maxmem 344
411 #define T_Maxpoll 345
412 #define T_Mdnstries 346
413 #define T_Mem 347
414 #define T_Memlock 348
415 #define T_Minclock 349
416 #define T_Mindepth 350
417 #define T_Mindist 351
418 #define T_Minimum 352
419 #define T_Minpoll 353
420 #define T_Minsane 354
421 #define T_Mode 355
422 #define T_Mode7 356
423 #define T_Monitor 357
424 #define T_Month 358
425 #define T_Mru 359
426 #define T_Multicastclient 360
427 #define T_Nic 361
428 #define T_Nolink 362
429 #define T_Nomodify 363
430 #define T_Nomrulist 364
431 #define T_None 365
432 #define T_Nonvolatile 366
433 #define T_Nopeer 367
434 #define T_Noquery 368
435 #define T_Noselect 369
436 #define T_Noserve 370
437 #define T_Notrap 371
438 #define T_Notrust 372
439 #define T_Ntp 373
440 #define T_Ntpport 374
441 #define T_NtpSignDsocket 375
442 #define T_Orphan 376
443 #define T_Orphanwait 377
444 #define T_Panic 378
445 #define T_Peer 379
446 #define T_Peerstats 380
447 #define T_Phone 381
448 #define T_Pid 382
449 #define T_Pidfile 383
450 #define T_Pool 384
451 #define T_Port 385
452 #define T_Preempt 386
453 #define T_Prefer 387
454 #define T_Protostats 388
455 #define T_Pw 389
456 #define T_Randfile 390
457 #define T_Rawstats 391
458 #define T_Refid 392
459 #define T_Requestkey 393
460 #define T_Reset 394
461 #define T_Restrict 395
462 #define T_Revoke 396
463 #define T_Rlimit 397
464 #define T_Saveconfigdir 398
465 #define T_Server 399
466 #define T_Setvar 400
467 #define T_Source 401
468 #define T_Stacksize 402
469 #define T_Statistics 403
470 #define T_Stats 404
471 #define T_Statsdir 405
472 #define T_Step 406
473 #define T_Stepout 407
474 #define T_Stratum 408
475 #define T_String 409
476 #define T_Sys 410
477 #define T_Sysstats 411
478 #define T_Tick 412
479 #define T_Time1 413
480 #define T_Time2 414
481 #define T_Timer 415
482 #define T_Timingstats 416
483 #define T_Tinker 417
484 #define T_Tos 418
485 #define T_Trap 419
486 #define T_True 420
487 #define T_Trustedkey 421
488 #define T_Ttl 422
489 #define T_Type 423
490 #define T_U_int 424
491 #define T_Unconfig 425
492 #define T_Unpeer 426
493 #define T_Version 427
494 #define T_WanderThreshold 428
495 #define T_Week 429
496 #define T_Wildcard 430
497 #define T_Xleave 431
498 #define T_Year 432
499 #define T_Flag 433
500 #define T_EOC 434
501 #define T_Simulate 435
502 #define T_Beep_Delay 436
503 #define T_Sim_Duration 437
504 #define T_Server_Offset 438
505 #define T_Duration 439
506 #define T_Freq_Offset 440
507 #define T_Wander 441
508 #define T_Jitter 442
509 #define T_Prop_Delay 443
510 #define T_Proc_Delay 444
511 
512 /* Value type.  */
513 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
514 typedef union YYSTYPE YYSTYPE;
515 union YYSTYPE
516 {
517 #line 54 "ntp_parser.y" /* yacc.c:355  */
518 
519 	char *			String;
520 	double			Double;
521 	int			Integer;
522 	unsigned		U_int;
523 	gen_fifo *		Generic_fifo;
524 	attr_val *		Attr_val;
525 	attr_val_fifo *		Attr_val_fifo;
526 	int_fifo *		Int_fifo;
527 	string_fifo *		String_fifo;
528 	address_node *		Address_node;
529 	address_fifo *		Address_fifo;
530 	setvar_node *		Set_var;
531 	server_info *		Sim_server;
532 	server_info_fifo *	Sim_server_fifo;
533 	script_info *		Sim_script;
534 	script_info_fifo *	Sim_script_fifo;
535 
536 #line 537 "ntp_parser.c" /* yacc.c:355  */
537 };
538 # define YYSTYPE_IS_TRIVIAL 1
539 # define YYSTYPE_IS_DECLARED 1
540 #endif
541 
542 
543 extern YYSTYPE yylval;
544 
545 int yyparse (struct FILE_INFO *ip_file);
546 
547 #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
548 
549 /* Copy the second part of user declarations.  */
550 
551 #line 552 "ntp_parser.c" /* yacc.c:358  */
552 
553 #ifdef short
554 # undef short
555 #endif
556 
557 #ifdef YYTYPE_UINT8
558 typedef YYTYPE_UINT8 yytype_uint8;
559 #else
560 typedef unsigned char yytype_uint8;
561 #endif
562 
563 #ifdef YYTYPE_INT8
564 typedef YYTYPE_INT8 yytype_int8;
565 #else
566 typedef signed char yytype_int8;
567 #endif
568 
569 #ifdef YYTYPE_UINT16
570 typedef YYTYPE_UINT16 yytype_uint16;
571 #else
572 typedef unsigned short int yytype_uint16;
573 #endif
574 
575 #ifdef YYTYPE_INT16
576 typedef YYTYPE_INT16 yytype_int16;
577 #else
578 typedef short int yytype_int16;
579 #endif
580 
581 #ifndef YYSIZE_T
582 # ifdef __SIZE_TYPE__
583 #  define YYSIZE_T __SIZE_TYPE__
584 # elif defined size_t
585 #  define YYSIZE_T size_t
586 # elif ! defined YYSIZE_T
587 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
588 #  define YYSIZE_T size_t
589 # else
590 #  define YYSIZE_T unsigned int
591 # endif
592 #endif
593 
594 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
595 
596 #ifndef YY_
597 # if defined YYENABLE_NLS && YYENABLE_NLS
598 #  if ENABLE_NLS
599 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
600 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
601 #  endif
602 # endif
603 # ifndef YY_
604 #  define YY_(Msgid) Msgid
605 # endif
606 #endif
607 
608 #ifndef YY_ATTRIBUTE
609 # if (defined __GNUC__                                               \
610       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
611      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
612 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
613 # else
614 #  define YY_ATTRIBUTE(Spec) /* empty */
615 # endif
616 #endif
617 
618 #ifndef YY_ATTRIBUTE_PURE
619 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
620 #endif
621 
622 #ifndef YY_ATTRIBUTE_UNUSED
623 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
624 #endif
625 
626 #if !defined _Noreturn \
627      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
628 # if defined _MSC_VER && 1200 <= _MSC_VER
629 #  define _Noreturn __declspec (noreturn)
630 # else
631 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
632 # endif
633 #endif
634 
635 /* Suppress unused-variable warnings by "using" E.  */
636 #if ! defined lint || defined __GNUC__
637 # define YYUSE(E) ((void) (E))
638 #else
639 # define YYUSE(E) /* empty */
640 #endif
641 
642 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
643 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
644 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
645     _Pragma ("GCC diagnostic push") \
646     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
647     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
648 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
649     _Pragma ("GCC diagnostic pop")
650 #else
651 # define YY_INITIAL_VALUE(Value) Value
652 #endif
653 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
654 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
655 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
656 #endif
657 #ifndef YY_INITIAL_VALUE
658 # define YY_INITIAL_VALUE(Value) /* Nothing. */
659 #endif
660 
661 
662 #if ! defined yyoverflow || YYERROR_VERBOSE
663 
664 /* The parser invokes alloca or malloc; define the necessary symbols.  */
665 
666 # ifdef YYSTACK_USE_ALLOCA
667 #  if YYSTACK_USE_ALLOCA
668 #   ifdef __GNUC__
669 #    define YYSTACK_ALLOC __builtin_alloca
670 #   elif defined __BUILTIN_VA_ARG_INCR
671 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
672 #   elif defined _AIX
673 #    define YYSTACK_ALLOC __alloca
674 #   elif defined _MSC_VER
675 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
676 #    define alloca _alloca
677 #   else
678 #    define YYSTACK_ALLOC alloca
679 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
680 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
681       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
682 #     ifndef EXIT_SUCCESS
683 #      define EXIT_SUCCESS 0
684 #     endif
685 #    endif
686 #   endif
687 #  endif
688 # endif
689 
690 # ifdef YYSTACK_ALLOC
691    /* Pacify GCC's 'empty if-body' warning.  */
692 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
693 #  ifndef YYSTACK_ALLOC_MAXIMUM
694     /* The OS might guarantee only one guard page at the bottom of the stack,
695        and a page size can be as small as 4096 bytes.  So we cannot safely
696        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
697        to allow for a few compiler-allocated temporary stack slots.  */
698 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
699 #  endif
700 # else
701 #  define YYSTACK_ALLOC YYMALLOC
702 #  define YYSTACK_FREE YYFREE
703 #  ifndef YYSTACK_ALLOC_MAXIMUM
704 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
705 #  endif
706 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
707        && ! ((defined YYMALLOC || defined malloc) \
708              && (defined YYFREE || defined free)))
709 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
710 #   ifndef EXIT_SUCCESS
711 #    define EXIT_SUCCESS 0
712 #   endif
713 #  endif
714 #  ifndef YYMALLOC
715 #   define YYMALLOC malloc
716 #   if ! defined malloc && ! defined EXIT_SUCCESS
717 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
718 #   endif
719 #  endif
720 #  ifndef YYFREE
721 #   define YYFREE free
722 #   if ! defined free && ! defined EXIT_SUCCESS
723 void free (void *); /* INFRINGES ON USER NAME SPACE */
724 #   endif
725 #  endif
726 # endif
727 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
728 
729 
730 #if (! defined yyoverflow \
731      && (! defined __cplusplus \
732          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
733 
734 /* A type that is properly aligned for any stack member.  */
735 union yyalloc
736 {
737   yytype_int16 yyss_alloc;
738   YYSTYPE yyvs_alloc;
739 };
740 
741 /* The size of the maximum gap between one aligned stack and the next.  */
742 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
743 
744 /* The size of an array large to enough to hold all stacks, each with
745    N elements.  */
746 # define YYSTACK_BYTES(N) \
747      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
748       + YYSTACK_GAP_MAXIMUM)
749 
750 # define YYCOPY_NEEDED 1
751 
752 /* Relocate STACK from its old location to the new one.  The
753    local variables YYSIZE and YYSTACKSIZE give the old and new number of
754    elements in the stack, and YYPTR gives the new location of the
755    stack.  Advance YYPTR to a properly aligned location for the next
756    stack.  */
757 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
758     do                                                                  \
759       {                                                                 \
760         YYSIZE_T yynewbytes;                                            \
761         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
762         Stack = &yyptr->Stack_alloc;                                    \
763         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
764         yyptr += yynewbytes / sizeof (*yyptr);                          \
765       }                                                                 \
766     while (0)
767 
768 #endif
769 
770 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
771 /* Copy COUNT objects from SRC to DST.  The source and destination do
772    not overlap.  */
773 # ifndef YYCOPY
774 #  if defined __GNUC__ && 1 < __GNUC__
775 #   define YYCOPY(Dst, Src, Count) \
776       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
777 #  else
778 #   define YYCOPY(Dst, Src, Count)              \
779       do                                        \
780         {                                       \
781           YYSIZE_T yyi;                         \
782           for (yyi = 0; yyi < (Count); yyi++)   \
783             (Dst)[yyi] = (Src)[yyi];            \
784         }                                       \
785       while (0)
786 #  endif
787 # endif
788 #endif /* !YYCOPY_NEEDED */
789 
790 /* YYFINAL -- State number of the termination state.  */
791 #define YYFINAL  205
792 /* YYLAST -- Last index in YYTABLE.  */
793 #define YYLAST   634
794 
795 /* YYNTOKENS -- Number of terminals.  */
796 #define YYNTOKENS  195
797 /* YYNNTS -- Number of nonterminals.  */
798 #define YYNNTS  104
799 /* YYNRULES -- Number of rules.  */
800 #define YYNRULES  308
801 /* YYNSTATES -- Number of states.  */
802 #define YYNSTATES  413
803 
804 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
805    by yylex, with out-of-bounds checking.  */
806 #define YYUNDEFTOK  2
807 #define YYMAXUTOK   444
808 
809 #define YYTRANSLATE(YYX)                                                \
810   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
811 
812 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
813    as returned by yylex, without out-of-bounds checking.  */
814 static const yytype_uint8 yytranslate[] =
815 {
816        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
817        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
818        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
819        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
820      191,   192,     2,     2,     2,     2,     2,     2,     2,     2,
821        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
822        2,   190,     2,     2,     2,     2,     2,     2,     2,     2,
823        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
824        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
825        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
826        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
827        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
828        2,     2,     2,   193,     2,   194,     2,     2,     2,     2,
829        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
830        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
831        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
832        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
833        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
834        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
835        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
836        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
837        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
838        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
839        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
840        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
841        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
842        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
843       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
844       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
845       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
846       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
847       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
848       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
849       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
850       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
851       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
852      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
853      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
854      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
855      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
856      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
857      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
858      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
859      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
860      185,   186,   187,   188,   189
861 };
862 
863 #if YYDEBUG
864   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
865 static const yytype_uint16 yyrline[] =
866 {
867        0,   364,   364,   368,   369,   370,   384,   385,   386,   387,
868      388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
869      405,   415,   416,   417,   418,   419,   423,   424,   429,   434,
870      436,   442,   443,   451,   452,   453,   457,   462,   463,   464,
871      465,   466,   467,   468,   469,   473,   475,   480,   481,   482,
872      483,   484,   485,   489,   494,   503,   513,   514,   524,   526,
873      528,   530,   541,   548,   550,   555,   557,   559,   561,   563,
874      572,   578,   579,   587,   589,   601,   602,   603,   604,   605,
875      614,   619,   624,   632,   634,   636,   641,   642,   643,   644,
876      645,   646,   650,   651,   652,   653,   662,   664,   673,   683,
877      688,   696,   697,   698,   699,   700,   701,   702,   703,   708,
878      709,   717,   727,   736,   751,   756,   757,   761,   762,   766,
879      767,   768,   769,   770,   771,   772,   781,   785,   789,   797,
880      805,   813,   828,   843,   856,   857,   865,   866,   867,   868,
881      869,   870,   871,   872,   873,   874,   875,   876,   877,   878,
882      879,   883,   888,   896,   901,   902,   903,   907,   912,   920,
883      925,   926,   927,   928,   929,   930,   931,   932,   940,   950,
884      955,   963,   965,   967,   969,   971,   976,   977,   981,   982,
885      983,   984,   992,   997,  1002,  1010,  1015,  1016,  1017,  1026,
886     1028,  1033,  1038,  1046,  1048,  1065,  1066,  1067,  1068,  1069,
887     1070,  1074,  1075,  1083,  1088,  1093,  1101,  1106,  1107,  1108,
888     1109,  1110,  1111,  1112,  1113,  1122,  1123,  1124,  1131,  1138,
889     1154,  1173,  1178,  1180,  1182,  1184,  1186,  1193,  1198,  1199,
890     1200,  1204,  1205,  1206,  1210,  1211,  1215,  1222,  1232,  1241,
891     1246,  1248,  1253,  1254,  1262,  1264,  1272,  1277,  1285,  1310,
892     1317,  1327,  1328,  1332,  1333,  1334,  1335,  1339,  1340,  1341,
893     1345,  1350,  1355,  1363,  1364,  1365,  1366,  1367,  1368,  1369,
894     1379,  1384,  1392,  1397,  1405,  1407,  1411,  1416,  1421,  1429,
895     1434,  1442,  1451,  1452,  1456,  1457,  1466,  1484,  1488,  1493,
896     1501,  1506,  1507,  1511,  1516,  1524,  1529,  1534,  1539,  1544,
897     1552,  1557,  1562,  1570,  1575,  1576,  1577,  1578,  1579
898 };
899 #endif
900 
901 #if YYDEBUG || YYERROR_VERBOSE || 1
902 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
903    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
904 static const char *const yytname[] =
905 {
906   "$end", "error", "$undefined", "T_Abbrev", "T_Age", "T_All", "T_Allan",
907   "T_Allpeers", "T_Auth", "T_Autokey", "T_Automax", "T_Average",
908   "T_Bclient", "T_Beacon", "T_Broadcast", "T_Broadcastclient",
909   "T_Broadcastdelay", "T_Burst", "T_Calibrate", "T_Ceiling",
910   "T_Clockstats", "T_Cohort", "T_ControlKey", "T_Crypto", "T_Cryptostats",
911   "T_Ctl", "T_Day", "T_Default", "T_Digest", "T_Disable", "T_Discard",
912   "T_Dispersion", "T_Double", "T_Driftfile", "T_Drop", "T_Ellipsis",
913   "T_Enable", "T_End", "T_False", "T_File", "T_Filegen", "T_Filenum",
914   "T_Flag1", "T_Flag2", "T_Flag3", "T_Flag4", "T_Flake", "T_Floor",
915   "T_Freq", "T_Fudge", "T_Host", "T_Huffpuff", "T_Iburst", "T_Ident",
916   "T_Ignore", "T_Incalloc", "T_Incmem", "T_Initalloc", "T_Initmem",
917   "T_Includefile", "T_Integer", "T_Interface", "T_Intrange", "T_Io",
918   "T_Ipv4", "T_Ipv4_flag", "T_Ipv6", "T_Ipv6_flag", "T_Kernel", "T_Key",
919   "T_Keys", "T_Keysdir", "T_Kod", "T_Mssntp", "T_Leapfile", "T_Limited",
920   "T_Link", "T_Listen", "T_Logconfig", "T_Logfile", "T_Loopstats",
921   "T_Lowpriotrap", "T_Manycastclient", "T_Manycastserver", "T_Mask",
922   "T_Maxage", "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem",
923   "T_Maxpoll", "T_Mdnstries", "T_Mem", "T_Memlock", "T_Minclock",
924   "T_Mindepth", "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane",
925   "T_Mode", "T_Mode7", "T_Monitor", "T_Month", "T_Mru",
926   "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify", "T_Nomrulist",
927   "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery", "T_Noselect",
928   "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport",
929   "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_Panic", "T_Peer",
930   "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port",
931   "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile",
932   "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict",
933   "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar",
934   "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir",
935   "T_Step", "T_Stepout", "T_Stratum", "T_String", "T_Sys", "T_Sysstats",
936   "T_Tick", "T_Time1", "T_Time2", "T_Timer", "T_Timingstats", "T_Tinker",
937   "T_Tos", "T_Trap", "T_True", "T_Trustedkey", "T_Ttl", "T_Type",
938   "T_U_int", "T_Unconfig", "T_Unpeer", "T_Version", "T_WanderThreshold",
939   "T_Week", "T_Wildcard", "T_Xleave", "T_Year", "T_Flag", "T_EOC",
940   "T_Simulate", "T_Beep_Delay", "T_Sim_Duration", "T_Server_Offset",
941   "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter", "T_Prop_Delay",
942   "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'", "$accept",
943   "configuration", "command_list", "command", "server_command",
944   "client_type", "address", "ip_address", "address_fam", "option_list",
945   "option", "option_flag", "option_flag_keyword", "option_int",
946   "option_int_keyword", "option_str", "option_str_keyword",
947   "unpeer_command", "unpeer_keyword", "other_mode_command",
948   "authentication_command", "crypto_command_list", "crypto_command",
949   "crypto_str_keyword", "orphan_mode_command", "tos_option_list",
950   "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword",
951   "monitoring_command", "stats_list", "stat", "filegen_option_list",
952   "filegen_option", "link_nolink", "enable_disable", "filegen_type",
953   "access_control_command", "ac_flag_list", "access_control_flag",
954   "discard_option_list", "discard_option", "discard_option_keyword",
955   "mru_option_list", "mru_option", "mru_option_keyword", "fudge_command",
956   "fudge_factor_list", "fudge_factor", "fudge_factor_dbl_keyword",
957   "fudge_factor_bool_keyword", "rlimit_command", "rlimit_option_list",
958   "rlimit_option", "rlimit_option_keyword", "system_option_command",
959   "system_option_list", "system_option", "system_option_flag_keyword",
960   "system_option_local_flag_keyword", "tinker_command",
961   "tinker_option_list", "tinker_option", "tinker_option_keyword",
962   "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_str_keyword",
963   "misc_cmd_str_lcl_keyword", "drift_parm", "variable_assign",
964   "t_default_or_zero", "trap_option_list", "trap_option",
965   "log_config_list", "log_config_command", "interface_command",
966   "interface_nic", "nic_rule_class", "nic_rule_action", "reset_command",
967   "counter_set_list", "counter_set_keyword", "integer_list",
968   "integer_list_range", "integer_list_range_elt", "integer_range",
969   "string_list", "address_list", "boolean", "number", "simulate_command",
970   "sim_conf_start", "sim_init_statement_list", "sim_init_statement",
971   "sim_init_keyword", "sim_server_list", "sim_server", "sim_server_offset",
972   "sim_server_name", "sim_act_list", "sim_act", "sim_act_stmt_list",
973   "sim_act_stmt", "sim_act_keyword", YY_NULLPTR
974 };
975 #endif
976 
977 # ifdef YYPRINT
978 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
979    (internal) symbol number NUM (which must be that of a token).  */
980 static const yytype_uint16 yytoknum[] =
981 {
982        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
983      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
984      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
985      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
986      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
987      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
988      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
989      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
990      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
991      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
992      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
993      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
994      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
995      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
996      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
997      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
998      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
999      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1000      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1001       61,    40,    41,   123,   125
1002 };
1003 # endif
1004 
1005 #define YYPACT_NINF -180
1006 
1007 #define yypact_value_is_default(Yystate) \
1008   (!!((Yystate) == (-180)))
1009 
1010 #define YYTABLE_NINF -7
1011 
1012 #define yytable_value_is_error(Yytable_value) \
1013   0
1014 
1015   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1016      STATE-NUM.  */
1017 static const yytype_int16 yypact[] =
1018 {
1019       26,  -147,    -9,  -180,  -180,  -180,    -6,  -180,   222,     9,
1020      -96,   222,  -180,   276,   -41,  -180,   -93,  -180,   -90,   -86,
1021     -180,   -84,  -180,  -180,   -41,     0,   443,   -41,  -180,  -180,
1022      -83,  -180,   -82,  -180,  -180,    20,    27,   -20,    21,   -19,
1023     -180,  -180,   -68,   276,   -66,  -180,   221,   328,   -65,   -55,
1024       38,  -180,  -180,  -180,    99,   188,   -69,  -180,   -41,  -180,
1025      -41,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1026     -180,    -3,   -40,   -39,  -180,    -4,  -180,  -180,   -77,  -180,
1027     -180,  -180,   254,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1028     -180,   222,  -180,  -180,  -180,  -180,  -180,  -180,     9,  -180,
1029       47,    90,  -180,   222,  -180,  -180,  -180,  -180,  -180,  -180,
1030     -180,  -180,  -180,  -180,  -180,  -180,    98,  -180,   -31,   347,
1031     -180,  -180,  -180,   -84,  -180,  -180,   -41,  -180,  -180,  -180,
1032     -180,  -180,  -180,  -180,  -180,  -180,   443,  -180,    61,   -41,
1033     -180,  -180,   -30,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1034     -180,    27,  -180,  -180,   102,   106,  -180,  -180,    55,  -180,
1035     -180,  -180,  -180,   -19,  -180,    87,   -42,  -180,   276,  -180,
1036     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,   221,
1037     -180,    -3,  -180,  -180,   -27,  -180,  -180,  -180,  -180,  -180,
1038     -180,  -180,  -180,   328,  -180,    91,    -3,  -180,  -180,    93,
1039      -55,  -180,  -180,  -180,    96,  -180,   -21,  -180,  -180,  -180,
1040     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,     3,  -144,
1041     -180,  -180,  -180,  -180,  -180,   100,  -180,    -5,  -180,  -180,
1042     -180,  -180,   -23,     5,  -180,  -180,  -180,  -180,     7,   103,
1043     -180,  -180,    98,  -180,    -3,   -27,  -180,  -180,  -180,  -180,
1044     -180,  -180,  -180,  -180,   462,  -180,  -180,   462,   462,   -65,
1045     -180,  -180,     8,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1046     -180,  -180,  -180,   -47,   138,  -180,  -180,  -180,   425,  -180,
1047     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -105,    -2,   -15,
1048     -180,  -180,  -180,  -180,    25,  -180,  -180,    17,  -180,  -180,
1049     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1050     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1051     -180,  -180,  -180,   462,   462,  -180,   154,   -65,   124,  -180,
1052      125,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1053     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1054      -51,  -180,    32,    10,    16,  -116,  -180,     6,  -180,    -3,
1055     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,   462,
1056     -180,  -180,  -180,  -180,    15,  -180,  -180,  -180,   -41,  -180,
1057     -180,  -180,    18,  -180,  -180,  -180,    22,    24,    -3,    23,
1058     -169,  -180,    36,    -3,  -180,  -180,  -180,    29,   -94,  -180,
1059     -180,  -180,  -180,  -180,    89,    37,    30,  -180,    40,  -180,
1060       -3,  -180,  -180
1061 };
1062 
1063   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1064      Performed when YYTABLE does not specify something else to do.  Zero
1065      means the default is an error.  */
1066 static const yytype_uint16 yydefact[] =
1067 {
1068        0,     0,     0,    24,    58,   228,     0,    71,     0,     0,
1069      238,     0,   221,     0,     0,   231,     0,   251,     0,     0,
1070      232,     0,   234,    25,     0,     0,     0,     0,   252,   229,
1071        0,    23,     0,   233,    22,     0,     0,     0,     0,     0,
1072      235,    21,     0,     0,     0,   230,     0,     0,     0,     0,
1073        0,    56,    57,   287,     0,     2,     0,     7,     0,     8,
1074        0,     9,    10,    13,    11,    12,    14,    15,    16,    17,
1075       18,     0,     0,     0,   215,     0,   216,    19,     0,     5,
1076       62,    63,    64,   195,   196,   197,   198,   201,   199,   200,
1077      202,   190,   192,   193,   194,   154,   155,   156,   126,   152,
1078        0,   236,   222,   189,   101,   102,   103,   104,   108,   105,
1079      106,   107,   109,    29,    30,    28,     0,    26,     0,     6,
1080       65,    66,   248,   223,   247,   280,    59,    61,   160,   161,
1081      162,   163,   164,   165,   166,   167,   127,   158,     0,    60,
1082       70,   278,   224,    67,   263,   264,   265,   266,   267,   268,
1083      269,   260,   262,   134,    29,    30,   134,   134,    26,    68,
1084      188,   186,   187,   182,   184,     0,     0,   225,    96,   100,
1085       97,   207,   208,   209,   210,   211,   212,   213,   214,   203,
1086      205,     0,    91,    86,     0,    87,    95,    93,    94,    92,
1087       90,    88,    89,    80,    82,     0,     0,   242,   274,     0,
1088       69,   273,   275,   271,   227,     1,     0,     4,    31,    55,
1089      285,   284,   217,   218,   219,   259,   258,   257,     0,     0,
1090       79,    75,    76,    77,    78,     0,    72,     0,   191,   151,
1091      153,   237,    98,     0,   178,   179,   180,   181,     0,     0,
1092      176,   177,   168,   170,     0,     0,    27,   220,   246,   279,
1093      157,   159,   277,   261,   130,   134,   134,   133,   128,     0,
1094      183,   185,     0,    99,   204,   206,   283,   281,   282,    85,
1095       81,    83,    84,   226,     0,   272,   270,     3,    20,   253,
1096      254,   255,   250,   256,   249,   291,   292,     0,     0,     0,
1097       74,    73,   118,   117,     0,   115,   116,     0,   110,   113,
1098      114,   174,   175,   173,   169,   171,   172,   136,   137,   138,
1099      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
1100      149,   150,   135,   131,   132,   134,   241,     0,     0,   243,
1101        0,    37,    38,    39,    54,    47,    49,    48,    51,    40,
1102       41,    42,    43,    50,    52,    44,    32,    33,    36,    34,
1103        0,    35,     0,     0,     0,     0,   294,     0,   289,     0,
1104      111,   125,   121,   123,   119,   120,   122,   124,   112,   129,
1105      240,   239,   245,   244,     0,    45,    46,    53,     0,   288,
1106      286,   293,     0,   290,   276,   297,     0,     0,     0,     0,
1107        0,   299,     0,     0,   295,   298,   296,     0,     0,   304,
1108      305,   306,   307,   308,     0,     0,     0,   300,     0,   302,
1109        0,   301,   303
1110 };
1111 
1112   /* YYPGOTO[NTERM-NUM].  */
1113 static const yytype_int16 yypgoto[] =
1114 {
1115     -180,  -180,  -180,   -37,  -180,  -180,   -14,   -36,  -180,  -180,
1116     -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1117     -180,  -180,  -180,  -180,  -180,  -180,    33,  -180,  -180,  -180,
1118     -180,   -33,  -180,  -180,  -180,  -180,  -180,  -180,  -153,  -180,
1119     -180,   131,  -180,  -180,    97,  -180,  -180,  -180,   -10,  -180,
1120     -180,  -180,  -180,    73,  -180,  -180,   227,   -72,  -180,  -180,
1121     -180,  -180,    60,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
1122     -180,  -180,  -180,  -180,   119,  -180,  -180,  -180,  -180,  -180,
1123     -180,    92,  -180,  -180,    44,  -180,  -180,   218,     1,  -179,
1124     -180,  -180,  -180,   -34,  -180,  -180,  -107,  -180,  -180,  -180,
1125     -140,  -180,  -150,  -180
1126 };
1127 
1128   /* YYDEFGOTO[NTERM-NUM].  */
1129 static const yytype_int16 yydefgoto[] =
1130 {
1131       -1,    54,    55,    56,    57,    58,   125,   117,   118,   278,
1132      346,   347,   348,   349,   350,   351,   352,    59,    60,    61,
1133       62,    82,   226,   227,    63,   193,   194,   195,   196,    64,
1134      168,   112,   232,   298,   299,   300,   368,    65,   254,   322,
1135       98,    99,   100,   136,   137,   138,    66,   242,   243,   244,
1136      245,    67,   163,   164,   165,    68,    91,    92,    93,    94,
1137       69,   179,   180,   181,    70,    71,    72,    73,   102,   167,
1138      371,   273,   329,   123,   124,    74,    75,   284,   218,    76,
1139      151,   152,   204,   200,   201,   202,   142,   126,   269,   212,
1140       77,    78,   287,   288,   289,   355,   356,   387,   357,   390,
1141      391,   404,   405,   406
1142 };
1143 
1144   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1145      positive, shift that token.  If negative, reduce the rule whose
1146      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1147 static const yytype_int16 yytable[] =
1148 {
1149      116,   158,   265,   257,   258,   198,   292,   153,   279,   375,
1150      169,   266,   197,   293,   327,   389,   294,   272,   206,   228,
1151       95,   361,   160,   157,   113,   394,   114,     1,   353,   210,
1152      215,   228,    79,   267,   144,   145,     2,   285,   286,   353,
1153        3,     4,     5,   362,   208,   154,   209,   155,     6,     7,
1154      216,    80,   146,   295,    81,     8,     9,   211,   101,    10,
1155      127,   119,    11,    12,   120,   305,    13,   280,   121,   281,
1156      122,   140,   141,   217,   161,    14,   285,   286,   380,    15,
1157      143,   159,   247,   328,   296,    16,   166,    17,   170,   115,
1158      147,   399,   400,   401,   402,   403,    18,    19,   203,   205,
1159       20,   233,   323,   324,    21,    22,    96,   230,    23,    24,
1160      207,    97,   249,   115,   213,   214,   219,    25,   376,   148,
1161      363,   251,   231,   246,   252,   249,   156,   364,   162,   255,
1162       26,    27,    28,   256,   115,   263,   199,    29,   268,   259,
1163      234,   235,   236,   237,   365,   297,    30,   261,   262,   291,
1164       31,   271,    32,   274,    33,    34,   276,   282,   277,   301,
1165      290,   302,   326,   303,    35,    36,    37,    38,    39,    40,
1166       41,    42,   369,   330,    43,   359,    44,   358,   283,   360,
1167      383,   370,   149,    45,   373,   374,   377,   150,    46,    47,
1168       48,   366,    49,    50,   367,   379,    51,    52,     2,   382,
1169      378,   386,     3,     4,     5,    -6,    53,   384,   389,   392,
1170        6,     7,   388,   393,   397,   396,   409,     8,     9,   411,
1171      410,    10,   398,   325,    11,    12,   270,   171,    13,   229,
1172       83,   412,   304,   250,    84,   238,   260,    14,   103,   264,
1173       85,    15,   248,   253,   275,   139,   306,    16,   381,    17,
1174      395,   239,   172,   354,   408,     0,   240,   241,    18,    19,
1175        0,     0,    20,     0,     0,     0,    21,    22,     0,   173,
1176       23,    24,   174,     0,   399,   400,   401,   402,   403,    25,
1177        0,     0,   220,   407,     0,     0,     0,     0,     0,     0,
1178       86,   372,    26,    27,    28,     0,   104,     0,     0,    29,
1179      105,     0,     0,     0,   221,     0,     0,   222,    30,     0,
1180        0,     0,    31,     0,    32,     0,    33,    34,     0,     0,
1181        0,     0,     0,    87,    88,     0,    35,    36,    37,    38,
1182       39,    40,    41,    42,     0,     0,    43,     0,    44,     0,
1183       89,   182,     0,     0,   175,    45,     0,   183,     0,   184,
1184       46,    47,    48,     0,    49,    50,   106,     2,    51,    52,
1185        0,     3,     4,     5,   385,     0,     0,    -6,    53,     6,
1186        7,    90,   176,   177,     0,   185,     8,     9,   178,     0,
1187       10,     0,     0,    11,    12,     0,     0,    13,   223,   224,
1188        0,     0,     0,     0,     0,   225,    14,     0,     0,     0,
1189       15,   107,     0,     0,     0,     0,    16,     0,    17,   108,
1190        0,     0,   109,     0,   186,     0,   187,    18,    19,     0,
1191        0,    20,   188,     0,   189,    21,    22,   190,     0,    23,
1192       24,     0,   110,     0,   331,     0,     0,   111,    25,     0,
1193        0,     0,   332,     0,     0,     0,     0,     0,     0,   191,
1194      192,    26,    27,    28,     0,     0,     0,     0,    29,     0,
1195        0,     0,     0,     0,     0,     0,     0,    30,     0,     0,
1196        0,    31,     0,    32,     0,    33,    34,   333,   334,     0,
1197        0,     0,     0,     0,     0,    35,    36,    37,    38,    39,
1198       40,    41,    42,     0,   335,    43,     0,    44,   128,   129,
1199      130,   131,     0,     0,    45,     0,     0,     0,   307,    46,
1200       47,    48,     0,    49,    50,   336,   308,    51,    52,     0,
1201        0,     0,     0,   337,     0,   338,     0,    53,   132,     0,
1202      133,     0,   134,     0,   309,   310,     0,   311,   135,   339,
1203        0,     0,     0,   312,     0,     0,     0,     0,     0,     0,
1204        0,     0,     0,     0,     0,     0,   340,   341,     0,     0,
1205        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1206      313,   314,     0,     0,   315,   316,     0,   317,   318,   319,
1207        0,   320,     0,     0,     0,     0,     0,     0,     0,     0,
1208      342,     0,   343,     0,     0,     0,     0,   344,     0,     0,
1209        0,   345,     0,     0,     0,     0,     0,     0,     0,     0,
1210        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1211        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1212        0,     0,     0,     0,   321
1213 };
1214 
1215 static const yytype_int16 yycheck[] =
1216 {
1217       14,    37,   181,   156,   157,    60,    29,    27,     5,    60,
1218       43,    38,    48,    36,    61,   184,    39,   196,    55,    91,
1219       11,     4,    41,    37,    65,   194,    67,     1,   144,    32,
1220       34,   103,   179,    60,     7,     8,    10,   181,   182,   144,
1221       14,    15,    16,    26,    58,    65,    60,    67,    22,    23,
1222       54,    60,    25,    76,    60,    29,    30,    60,   154,    33,
1223       60,   154,    36,    37,   154,   244,    40,    64,   154,    66,
1224      154,   154,   154,    77,    93,    49,   181,   182,   194,    53,
1225       60,    60,   119,   130,   107,    59,   154,    61,   154,   154,
1226       63,   185,   186,   187,   188,   189,    70,    71,    60,     0,
1227       74,     3,   255,   256,    78,    79,    97,    60,    82,    83,
1228      179,   102,   126,   154,   154,   154,   193,    91,   169,    92,
1229      103,    60,    32,   154,   154,   139,   146,   110,   147,    27,
1230      104,   105,   106,    27,   154,   168,   191,   111,   165,    84,
1231       42,    43,    44,    45,   127,   168,   120,    60,   190,   154,
1232      124,    60,   126,    60,   128,   129,    60,   154,   179,   154,
1233       60,   154,   154,    60,   138,   139,   140,   141,   142,   143,
1234      144,   145,   325,    35,   148,   190,   150,   179,   175,   154,
1235      359,    27,   155,   157,    60,    60,   154,   160,   162,   163,
1236      164,   174,   166,   167,   177,   179,   170,   171,    10,   193,
1237      190,   183,    14,    15,    16,   179,   180,   192,   184,   388,
1238       22,    23,   190,   190,   393,   179,   179,    29,    30,   179,
1239      190,    33,   193,   259,    36,    37,   193,     6,    40,    98,
1240        8,   410,   242,   136,    12,   137,   163,    49,    11,   179,
1241       18,    53,   123,   151,   200,    27,   245,    59,   355,    61,
1242      390,   153,    31,   287,   404,    -1,   158,   159,    70,    71,
1243       -1,    -1,    74,    -1,    -1,    -1,    78,    79,    -1,    48,
1244       82,    83,    51,    -1,   185,   186,   187,   188,   189,    91,
1245       -1,    -1,    28,   194,    -1,    -1,    -1,    -1,    -1,    -1,
1246       68,   327,   104,   105,   106,    -1,    20,    -1,    -1,   111,
1247       24,    -1,    -1,    -1,    50,    -1,    -1,    53,   120,    -1,
1248       -1,    -1,   124,    -1,   126,    -1,   128,   129,    -1,    -1,
1249       -1,    -1,    -1,   101,   102,    -1,   138,   139,   140,   141,
1250      142,   143,   144,   145,    -1,    -1,   148,    -1,   150,    -1,
1251      118,    13,    -1,    -1,   123,   157,    -1,    19,    -1,    21,
1252      162,   163,   164,    -1,   166,   167,    80,    10,   170,   171,
1253       -1,    14,    15,    16,   378,    -1,    -1,   179,   180,    22,
1254       23,   149,   151,   152,    -1,    47,    29,    30,   157,    -1,
1255       33,    -1,    -1,    36,    37,    -1,    -1,    40,   134,   135,
1256       -1,    -1,    -1,    -1,    -1,   141,    49,    -1,    -1,    -1,
1257       53,   125,    -1,    -1,    -1,    -1,    59,    -1,    61,   133,
1258       -1,    -1,   136,    -1,    86,    -1,    88,    70,    71,    -1,
1259       -1,    74,    94,    -1,    96,    78,    79,    99,    -1,    82,
1260       83,    -1,   156,    -1,     9,    -1,    -1,   161,    91,    -1,
1261       -1,    -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,   121,
1262      122,   104,   105,   106,    -1,    -1,    -1,    -1,   111,    -1,
1263       -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,
1264       -1,   124,    -1,   126,    -1,   128,   129,    52,    53,    -1,
1265       -1,    -1,    -1,    -1,    -1,   138,   139,   140,   141,   142,
1266      143,   144,   145,    -1,    69,   148,    -1,   150,    55,    56,
1267       57,    58,    -1,    -1,   157,    -1,    -1,    -1,    46,   162,
1268      163,   164,    -1,   166,   167,    90,    54,   170,   171,    -1,
1269       -1,    -1,    -1,    98,    -1,   100,    -1,   180,    85,    -1,
1270       87,    -1,    89,    -1,    72,    73,    -1,    75,    95,   114,
1271       -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,
1272       -1,    -1,    -1,    -1,    -1,    -1,   131,   132,    -1,    -1,
1273       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1274      108,   109,    -1,    -1,   112,   113,    -1,   115,   116,   117,
1275       -1,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1276      165,    -1,   167,    -1,    -1,    -1,    -1,   172,    -1,    -1,
1277       -1,   176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1278       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1279       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1280       -1,    -1,    -1,    -1,   172
1281 };
1282 
1283   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1284      symbol of state STATE-NUM.  */
1285 static const yytype_uint16 yystos[] =
1286 {
1287        0,     1,    10,    14,    15,    16,    22,    23,    29,    30,
1288       33,    36,    37,    40,    49,    53,    59,    61,    70,    71,
1289       74,    78,    79,    82,    83,    91,   104,   105,   106,   111,
1290      120,   124,   126,   128,   129,   138,   139,   140,   141,   142,
1291      143,   144,   145,   148,   150,   157,   162,   163,   164,   166,
1292      167,   170,   171,   180,   196,   197,   198,   199,   200,   212,
1293      213,   214,   215,   219,   224,   232,   241,   246,   250,   255,
1294      259,   260,   261,   262,   270,   271,   274,   285,   286,   179,
1295       60,    60,   216,     8,    12,    18,    68,   101,   102,   118,
1296      149,   251,   252,   253,   254,    11,    97,   102,   235,   236,
1297      237,   154,   263,   251,    20,    24,    80,   125,   133,   136,
1298      156,   161,   226,    65,    67,   154,   201,   202,   203,   154,
1299      154,   154,   154,   268,   269,   201,   282,    60,    55,    56,
1300       57,    58,    85,    87,    89,    95,   238,   239,   240,   282,
1301      154,   154,   281,    60,     7,     8,    25,    63,    92,   155,
1302      160,   275,   276,    27,    65,    67,   146,   201,   202,    60,
1303       41,    93,   147,   247,   248,   249,   154,   264,   225,   226,
1304      154,     6,    31,    48,    51,   123,   151,   152,   157,   256,
1305      257,   258,    13,    19,    21,    47,    86,    88,    94,    96,
1306       99,   121,   122,   220,   221,   222,   223,   202,    60,   191,
1307      278,   279,   280,    60,   277,     0,   198,   179,   201,   201,
1308       32,    60,   284,   154,   154,    34,    54,    77,   273,   193,
1309       28,    50,    53,   134,   135,   141,   217,   218,   252,   236,
1310       60,    32,   227,     3,    42,    43,    44,    45,   137,   153,
1311      158,   159,   242,   243,   244,   245,   154,   198,   269,   201,
1312      239,    60,   154,   276,   233,    27,    27,   233,   233,    84,
1313      248,    60,   190,   226,   257,   284,    38,    60,   165,   283,
1314      221,    60,   284,   266,    60,   279,    60,   179,   204,     5,
1315       64,    66,   154,   175,   272,   181,   182,   287,   288,   289,
1316       60,   154,    29,    36,    39,    76,   107,   168,   228,   229,
1317      230,   154,   154,    60,   243,   284,   283,    46,    54,    72,
1318       73,    75,    81,   108,   109,   112,   113,   115,   116,   117,
1319      119,   172,   234,   233,   233,   202,   154,    61,   130,   267,
1320       35,     9,    17,    52,    53,    69,    90,    98,   100,   114,
1321      131,   132,   165,   167,   172,   176,   205,   206,   207,   208,
1322      209,   210,   211,   144,   288,   290,   291,   293,   179,   190,
1323      154,     4,    26,   103,   110,   127,   174,   177,   231,   233,
1324       27,   265,   202,    60,    60,    60,   169,   154,   190,   179,
1325      194,   291,   193,   284,   192,   201,   183,   292,   190,   184,
1326      294,   295,   284,   190,   194,   295,   179,   284,   193,   185,
1327      186,   187,   188,   189,   296,   297,   298,   194,   297,   179,
1328      190,   179,   284
1329 };
1330 
1331   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1332 static const yytype_uint16 yyr1[] =
1333 {
1334        0,   195,   196,   197,   197,   197,   198,   198,   198,   198,
1335      198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
1336      199,   200,   200,   200,   200,   200,   201,   201,   202,   203,
1337      203,   204,   204,   205,   205,   205,   206,   207,   207,   207,
1338      207,   207,   207,   207,   207,   208,   208,   209,   209,   209,
1339      209,   209,   209,   210,   211,   212,   213,   213,   214,   214,
1340      214,   214,   215,   215,   215,   215,   215,   215,   215,   215,
1341      215,   216,   216,   217,   217,   218,   218,   218,   218,   218,
1342      219,   220,   220,   221,   221,   221,   222,   222,   222,   222,
1343      222,   222,   223,   223,   223,   223,   224,   224,   224,   225,
1344      225,   226,   226,   226,   226,   226,   226,   226,   226,   227,
1345      227,   228,   228,   228,   228,   229,   229,   230,   230,   231,
1346      231,   231,   231,   231,   231,   231,   232,   232,   232,   232,
1347      232,   232,   232,   232,   233,   233,   234,   234,   234,   234,
1348      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
1349      234,   235,   235,   236,   237,   237,   237,   238,   238,   239,
1350      240,   240,   240,   240,   240,   240,   240,   240,   241,   242,
1351      242,   243,   243,   243,   243,   243,   244,   244,   245,   245,
1352      245,   245,   246,   247,   247,   248,   249,   249,   249,   250,
1353      250,   251,   251,   252,   252,   253,   253,   253,   253,   253,
1354      253,   254,   254,   255,   256,   256,   257,   258,   258,   258,
1355      258,   258,   258,   258,   258,   259,   259,   259,   259,   259,
1356      259,   259,   259,   259,   259,   259,   259,   259,   260,   260,
1357      260,   261,   261,   261,   262,   262,   263,   263,   263,   264,
1358      265,   265,   266,   266,   267,   267,   268,   268,   269,   270,
1359      270,   271,   271,   272,   272,   272,   272,   273,   273,   273,
1360      274,   275,   275,   276,   276,   276,   276,   276,   276,   276,
1361      277,   277,   278,   278,   279,   279,   280,   281,   281,   282,
1362      282,   283,   283,   283,   284,   284,   285,   286,   287,   287,
1363      288,   289,   289,   290,   290,   291,   292,   293,   294,   294,
1364      295,   296,   296,   297,   298,   298,   298,   298,   298
1365 };
1366 
1367   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1368 static const yytype_uint8 yyr2[] =
1369 {
1370        0,     2,     1,     3,     2,     2,     0,     1,     1,     1,
1371        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1372        3,     1,     1,     1,     1,     1,     1,     2,     1,     1,
1373        1,     0,     2,     1,     1,     1,     1,     1,     1,     1,
1374        1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
1375        1,     1,     1,     2,     1,     2,     1,     1,     1,     2,
1376        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1377        2,     0,     2,     2,     2,     1,     1,     1,     1,     1,
1378        2,     2,     1,     2,     2,     2,     1,     1,     1,     1,
1379        1,     1,     1,     1,     1,     1,     2,     2,     3,     2,
1380        1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1381        2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
1382        1,     1,     1,     1,     1,     1,     2,     2,     3,     5,
1383        3,     4,     4,     3,     0,     2,     1,     1,     1,     1,
1384        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1385        1,     2,     1,     2,     1,     1,     1,     2,     1,     2,
1386        1,     1,     1,     1,     1,     1,     1,     1,     3,     2,
1387        1,     2,     2,     2,     2,     2,     1,     1,     1,     1,
1388        1,     1,     2,     2,     1,     2,     1,     1,     1,     2,
1389        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1390        1,     1,     1,     2,     2,     1,     2,     1,     1,     1,
1391        1,     1,     1,     1,     1,     1,     1,     2,     2,     2,
1392        3,     1,     2,     2,     2,     2,     3,     2,     1,     1,
1393        1,     1,     1,     1,     1,     1,     1,     2,     0,     4,
1394        1,     0,     0,     2,     2,     2,     2,     1,     1,     3,
1395        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1396        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1397        2,     1,     2,     1,     1,     1,     5,     2,     1,     2,
1398        1,     1,     1,     1,     1,     1,     5,     1,     3,     2,
1399        3,     1,     1,     2,     1,     5,     4,     3,     2,     1,
1400        6,     3,     2,     3,     1,     1,     1,     1,     1
1401 };
1402 
1403 
1404 #define yyerrok         (yyerrstatus = 0)
1405 #define yyclearin       (yychar = YYEMPTY)
1406 #define YYEMPTY         (-2)
1407 #define YYEOF           0
1408 
1409 #define YYACCEPT        goto yyacceptlab
1410 #define YYABORT         goto yyabortlab
1411 #define YYERROR         goto yyerrorlab
1412 
1413 
1414 #define YYRECOVERING()  (!!yyerrstatus)
1415 
1416 #define YYBACKUP(Token, Value)                                  \
1417 do                                                              \
1418   if (yychar == YYEMPTY)                                        \
1419     {                                                           \
1420       yychar = (Token);                                         \
1421       yylval = (Value);                                         \
1422       YYPOPSTACK (yylen);                                       \
1423       yystate = *yyssp;                                         \
1424       goto yybackup;                                            \
1425     }                                                           \
1426   else                                                          \
1427     {                                                           \
1428       yyerror (ip_file, YY_("syntax error: cannot back up")); \
1429       YYERROR;                                                  \
1430     }                                                           \
1431 while (0)
1432 
1433 /* Error token number */
1434 #define YYTERROR        1
1435 #define YYERRCODE       256
1436 
1437 
1438 
1439 /* Enable debugging if requested.  */
1440 #if YYDEBUG
1441 
1442 # ifndef YYFPRINTF
1443 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1444 #  define YYFPRINTF fprintf
1445 # endif
1446 
1447 # define YYDPRINTF(Args)                        \
1448 do {                                            \
1449   if (yydebug)                                  \
1450     YYFPRINTF Args;                             \
1451 } while (0)
1452 
1453 /* This macro is provided for backward compatibility. */
1454 #ifndef YY_LOCATION_PRINT
1455 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1456 #endif
1457 
1458 
1459 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1460 do {                                                                      \
1461   if (yydebug)                                                            \
1462     {                                                                     \
1463       YYFPRINTF (stderr, "%s ", Title);                                   \
1464       yy_symbol_print (stderr,                                            \
1465                   Type, Value, ip_file); \
1466       YYFPRINTF (stderr, "\n");                                           \
1467     }                                                                     \
1468 } while (0)
1469 
1470 
1471 /*----------------------------------------.
1472 | Print this symbol's value on YYOUTPUT.  |
1473 `----------------------------------------*/
1474 
1475 static void
1476 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct FILE_INFO *ip_file)
1477 {
1478   FILE *yyo = yyoutput;
1479   YYUSE (yyo);
1480   YYUSE (ip_file);
1481   if (!yyvaluep)
1482     return;
1483 # ifdef YYPRINT
1484   if (yytype < YYNTOKENS)
1485     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1486 # endif
1487   YYUSE (yytype);
1488 }
1489 
1490 
1491 /*--------------------------------.
1492 | Print this symbol on YYOUTPUT.  |
1493 `--------------------------------*/
1494 
1495 static void
1496 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct FILE_INFO *ip_file)
1497 {
1498   YYFPRINTF (yyoutput, "%s %s (",
1499              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1500 
1501   yy_symbol_value_print (yyoutput, yytype, yyvaluep, ip_file);
1502   YYFPRINTF (yyoutput, ")");
1503 }
1504 
1505 /*------------------------------------------------------------------.
1506 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1507 | TOP (included).                                                   |
1508 `------------------------------------------------------------------*/
1509 
1510 static void
1511 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1512 {
1513   YYFPRINTF (stderr, "Stack now");
1514   for (; yybottom <= yytop; yybottom++)
1515     {
1516       int yybot = *yybottom;
1517       YYFPRINTF (stderr, " %d", yybot);
1518     }
1519   YYFPRINTF (stderr, "\n");
1520 }
1521 
1522 # define YY_STACK_PRINT(Bottom, Top)                            \
1523 do {                                                            \
1524   if (yydebug)                                                  \
1525     yy_stack_print ((Bottom), (Top));                           \
1526 } while (0)
1527 
1528 
1529 /*------------------------------------------------.
1530 | Report that the YYRULE is going to be reduced.  |
1531 `------------------------------------------------*/
1532 
1533 static void
1534 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct FILE_INFO *ip_file)
1535 {
1536   unsigned long int yylno = yyrline[yyrule];
1537   int yynrhs = yyr2[yyrule];
1538   int yyi;
1539   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1540              yyrule - 1, yylno);
1541   /* The symbols being reduced.  */
1542   for (yyi = 0; yyi < yynrhs; yyi++)
1543     {
1544       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1545       yy_symbol_print (stderr,
1546                        yystos[yyssp[yyi + 1 - yynrhs]],
1547                        &(yyvsp[(yyi + 1) - (yynrhs)])
1548                                               , ip_file);
1549       YYFPRINTF (stderr, "\n");
1550     }
1551 }
1552 
1553 # define YY_REDUCE_PRINT(Rule)          \
1554 do {                                    \
1555   if (yydebug)                          \
1556     yy_reduce_print (yyssp, yyvsp, Rule, ip_file); \
1557 } while (0)
1558 
1559 /* Nonzero means print parse trace.  It is left uninitialized so that
1560    multiple parsers can coexist.  */
1561 int yydebug;
1562 #else /* !YYDEBUG */
1563 # define YYDPRINTF(Args)
1564 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1565 # define YY_STACK_PRINT(Bottom, Top)
1566 # define YY_REDUCE_PRINT(Rule)
1567 #endif /* !YYDEBUG */
1568 
1569 
1570 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1571 #ifndef YYINITDEPTH
1572 # define YYINITDEPTH 200
1573 #endif
1574 
1575 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1576    if the built-in stack extension method is used).
1577 
1578    Do not make this value too large; the results are undefined if
1579    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1580    evaluated with infinite-precision integer arithmetic.  */
1581 
1582 #ifndef YYMAXDEPTH
1583 # define YYMAXDEPTH 10000
1584 #endif
1585 
1586 
1587 #if YYERROR_VERBOSE
1588 
1589 # ifndef yystrlen
1590 #  if defined __GLIBC__ && defined _STRING_H
1591 #   define yystrlen strlen
1592 #  else
1593 /* Return the length of YYSTR.  */
1594 static YYSIZE_T
1595 yystrlen (const char *yystr)
1596 {
1597   YYSIZE_T yylen;
1598   for (yylen = 0; yystr[yylen]; yylen++)
1599     continue;
1600   return yylen;
1601 }
1602 #  endif
1603 # endif
1604 
1605 # ifndef yystpcpy
1606 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1607 #   define yystpcpy stpcpy
1608 #  else
1609 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1610    YYDEST.  */
1611 static char *
1612 yystpcpy (char *yydest, const char *yysrc)
1613 {
1614   char *yyd = yydest;
1615   const char *yys = yysrc;
1616 
1617   while ((*yyd++ = *yys++) != '\0')
1618     continue;
1619 
1620   return yyd - 1;
1621 }
1622 #  endif
1623 # endif
1624 
1625 # ifndef yytnamerr
1626 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1627    quotes and backslashes, so that it's suitable for yyerror.  The
1628    heuristic is that double-quoting is unnecessary unless the string
1629    contains an apostrophe, a comma, or backslash (other than
1630    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1631    null, do not copy; instead, return the length of what the result
1632    would have been.  */
1633 static YYSIZE_T
1634 yytnamerr (char *yyres, const char *yystr)
1635 {
1636   if (*yystr == '"')
1637     {
1638       YYSIZE_T yyn = 0;
1639       char const *yyp = yystr;
1640 
1641       for (;;)
1642         switch (*++yyp)
1643           {
1644           case '\'':
1645           case ',':
1646             goto do_not_strip_quotes;
1647 
1648           case '\\':
1649             if (*++yyp != '\\')
1650               goto do_not_strip_quotes;
1651             /* Fall through.  */
1652           default:
1653             if (yyres)
1654               yyres[yyn] = *yyp;
1655             yyn++;
1656             break;
1657 
1658           case '"':
1659             if (yyres)
1660               yyres[yyn] = '\0';
1661             return yyn;
1662           }
1663     do_not_strip_quotes: ;
1664     }
1665 
1666   if (! yyres)
1667     return yystrlen (yystr);
1668 
1669   return yystpcpy (yyres, yystr) - yyres;
1670 }
1671 # endif
1672 
1673 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1674    about the unexpected token YYTOKEN for the state stack whose top is
1675    YYSSP.
1676 
1677    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1678    not large enough to hold the message.  In that case, also set
1679    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1680    required number of bytes is too large to store.  */
1681 static int
1682 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1683                 yytype_int16 *yyssp, int yytoken)
1684 {
1685   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1686   YYSIZE_T yysize = yysize0;
1687   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1688   /* Internationalized format string. */
1689   const char *yyformat = YY_NULLPTR;
1690   /* Arguments of yyformat. */
1691   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1692   /* Number of reported tokens (one for the "unexpected", one per
1693      "expected"). */
1694   int yycount = 0;
1695 
1696   /* There are many possibilities here to consider:
1697      - If this state is a consistent state with a default action, then
1698        the only way this function was invoked is if the default action
1699        is an error action.  In that case, don't check for expected
1700        tokens because there are none.
1701      - The only way there can be no lookahead present (in yychar) is if
1702        this state is a consistent state with a default action.  Thus,
1703        detecting the absence of a lookahead is sufficient to determine
1704        that there is no unexpected or expected token to report.  In that
1705        case, just report a simple "syntax error".
1706      - Don't assume there isn't a lookahead just because this state is a
1707        consistent state with a default action.  There might have been a
1708        previous inconsistent state, consistent state with a non-default
1709        action, or user semantic action that manipulated yychar.
1710      - Of course, the expected token list depends on states to have
1711        correct lookahead information, and it depends on the parser not
1712        to perform extra reductions after fetching a lookahead from the
1713        scanner and before detecting a syntax error.  Thus, state merging
1714        (from LALR or IELR) and default reductions corrupt the expected
1715        token list.  However, the list is correct for canonical LR with
1716        one exception: it will still contain any token that will not be
1717        accepted due to an error action in a later state.
1718   */
1719   if (yytoken != YYEMPTY)
1720     {
1721       int yyn = yypact[*yyssp];
1722       yyarg[yycount++] = yytname[yytoken];
1723       if (!yypact_value_is_default (yyn))
1724         {
1725           /* Start YYX at -YYN if negative to avoid negative indexes in
1726              YYCHECK.  In other words, skip the first -YYN actions for
1727              this state because they are default actions.  */
1728           int yyxbegin = yyn < 0 ? -yyn : 0;
1729           /* Stay within bounds of both yycheck and yytname.  */
1730           int yychecklim = YYLAST - yyn + 1;
1731           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1732           int yyx;
1733 
1734           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1735             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1736                 && !yytable_value_is_error (yytable[yyx + yyn]))
1737               {
1738                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1739                   {
1740                     yycount = 1;
1741                     yysize = yysize0;
1742                     break;
1743                   }
1744                 yyarg[yycount++] = yytname[yyx];
1745                 {
1746                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1747                   if (! (yysize <= yysize1
1748                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1749                     return 2;
1750                   yysize = yysize1;
1751                 }
1752               }
1753         }
1754     }
1755 
1756   switch (yycount)
1757     {
1758 # define YYCASE_(N, S)                      \
1759       case N:                               \
1760         yyformat = S;                       \
1761       break
1762       YYCASE_(0, YY_("syntax error"));
1763       YYCASE_(1, YY_("syntax error, unexpected %s"));
1764       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1765       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1766       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1767       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1768 # undef YYCASE_
1769     }
1770 
1771   {
1772     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1773     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1774       return 2;
1775     yysize = yysize1;
1776   }
1777 
1778   if (*yymsg_alloc < yysize)
1779     {
1780       *yymsg_alloc = 2 * yysize;
1781       if (! (yysize <= *yymsg_alloc
1782              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1783         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1784       return 1;
1785     }
1786 
1787   /* Avoid sprintf, as that infringes on the user's name space.
1788      Don't have undefined behavior even if the translation
1789      produced a string with the wrong number of "%s"s.  */
1790   {
1791     char *yyp = *yymsg;
1792     int yyi = 0;
1793     while ((*yyp = *yyformat) != '\0')
1794       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1795         {
1796           yyp += yytnamerr (yyp, yyarg[yyi++]);
1797           yyformat += 2;
1798         }
1799       else
1800         {
1801           yyp++;
1802           yyformat++;
1803         }
1804   }
1805   return 0;
1806 }
1807 #endif /* YYERROR_VERBOSE */
1808 
1809 /*-----------------------------------------------.
1810 | Release the memory associated to this symbol.  |
1811 `-----------------------------------------------*/
1812 
1813 static void
1814 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct FILE_INFO *ip_file)
1815 {
1816   YYUSE (yyvaluep);
1817   YYUSE (ip_file);
1818   if (!yymsg)
1819     yymsg = "Deleting";
1820   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1821 
1822   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1823   YYUSE (yytype);
1824   YY_IGNORE_MAYBE_UNINITIALIZED_END
1825 }
1826 
1827 
1828 
1829 
1830 /* The lookahead symbol.  */
1831 int yychar;
1832 
1833 /* The semantic value of the lookahead symbol.  */
1834 YYSTYPE yylval;
1835 /* Number of syntax errors so far.  */
1836 int yynerrs;
1837 
1838 
1839 /*----------.
1840 | yyparse.  |
1841 `----------*/
1842 
1843 int
1844 yyparse (struct FILE_INFO *ip_file)
1845 {
1846     int yystate;
1847     /* Number of tokens to shift before error messages enabled.  */
1848     int yyerrstatus;
1849 
1850     /* The stacks and their tools:
1851        'yyss': related to states.
1852        'yyvs': related to semantic values.
1853 
1854        Refer to the stacks through separate pointers, to allow yyoverflow
1855        to reallocate them elsewhere.  */
1856 
1857     /* The state stack.  */
1858     yytype_int16 yyssa[YYINITDEPTH];
1859     yytype_int16 *yyss;
1860     yytype_int16 *yyssp;
1861 
1862     /* The semantic value stack.  */
1863     YYSTYPE yyvsa[YYINITDEPTH];
1864     YYSTYPE *yyvs;
1865     YYSTYPE *yyvsp;
1866 
1867     YYSIZE_T yystacksize;
1868 
1869   int yyn;
1870   int yyresult;
1871   /* Lookahead token as an internal (translated) token number.  */
1872   int yytoken = 0;
1873   /* The variables used to return semantic value and location from the
1874      action routines.  */
1875   YYSTYPE yyval;
1876 
1877 #if YYERROR_VERBOSE
1878   /* Buffer for error messages, and its allocated size.  */
1879   char yymsgbuf[128];
1880   char *yymsg = yymsgbuf;
1881   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1882 #endif
1883 
1884 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1885 
1886   /* The number of symbols on the RHS of the reduced rule.
1887      Keep to zero when no symbol should be popped.  */
1888   int yylen = 0;
1889 
1890   yyssp = yyss = yyssa;
1891   yyvsp = yyvs = yyvsa;
1892   yystacksize = YYINITDEPTH;
1893 
1894   YYDPRINTF ((stderr, "Starting parse\n"));
1895 
1896   yystate = 0;
1897   yyerrstatus = 0;
1898   yynerrs = 0;
1899   yychar = YYEMPTY; /* Cause a token to be read.  */
1900   goto yysetstate;
1901 
1902 /*------------------------------------------------------------.
1903 | yynewstate -- Push a new state, which is found in yystate.  |
1904 `------------------------------------------------------------*/
1905  yynewstate:
1906   /* In all cases, when you get here, the value and location stacks
1907      have just been pushed.  So pushing a state here evens the stacks.  */
1908   yyssp++;
1909 
1910  yysetstate:
1911   *yyssp = yystate;
1912 
1913   if (yyss + yystacksize - 1 <= yyssp)
1914     {
1915       /* Get the current used size of the three stacks, in elements.  */
1916       YYSIZE_T yysize = yyssp - yyss + 1;
1917 
1918 #ifdef yyoverflow
1919       {
1920         /* Give user a chance to reallocate the stack.  Use copies of
1921            these so that the &'s don't force the real ones into
1922            memory.  */
1923         YYSTYPE *yyvs1 = yyvs;
1924         yytype_int16 *yyss1 = yyss;
1925 
1926         /* Each stack pointer address is followed by the size of the
1927            data in use in that stack, in bytes.  This used to be a
1928            conditional around just the two extra args, but that might
1929            be undefined if yyoverflow is a macro.  */
1930         yyoverflow (YY_("memory exhausted"),
1931                     &yyss1, yysize * sizeof (*yyssp),
1932                     &yyvs1, yysize * sizeof (*yyvsp),
1933                     &yystacksize);
1934 
1935         yyss = yyss1;
1936         yyvs = yyvs1;
1937       }
1938 #else /* no yyoverflow */
1939 # ifndef YYSTACK_RELOCATE
1940       goto yyexhaustedlab;
1941 # else
1942       /* Extend the stack our own way.  */
1943       if (YYMAXDEPTH <= yystacksize)
1944         goto yyexhaustedlab;
1945       yystacksize *= 2;
1946       if (YYMAXDEPTH < yystacksize)
1947         yystacksize = YYMAXDEPTH;
1948 
1949       {
1950         yytype_int16 *yyss1 = yyss;
1951         union yyalloc *yyptr =
1952           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1953         if (! yyptr)
1954           goto yyexhaustedlab;
1955         YYSTACK_RELOCATE (yyss_alloc, yyss);
1956         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1957 #  undef YYSTACK_RELOCATE
1958         if (yyss1 != yyssa)
1959           YYSTACK_FREE (yyss1);
1960       }
1961 # endif
1962 #endif /* no yyoverflow */
1963 
1964       yyssp = yyss + yysize - 1;
1965       yyvsp = yyvs + yysize - 1;
1966 
1967       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1968                   (unsigned long int) yystacksize));
1969 
1970       if (yyss + yystacksize - 1 <= yyssp)
1971         YYABORT;
1972     }
1973 
1974   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1975 
1976   if (yystate == YYFINAL)
1977     YYACCEPT;
1978 
1979   goto yybackup;
1980 
1981 /*-----------.
1982 | yybackup.  |
1983 `-----------*/
1984 yybackup:
1985 
1986   /* Do appropriate processing given the current state.  Read a
1987      lookahead token if we need one and don't already have one.  */
1988 
1989   /* First try to decide what to do without reference to lookahead token.  */
1990   yyn = yypact[yystate];
1991   if (yypact_value_is_default (yyn))
1992     goto yydefault;
1993 
1994   /* Not known => get a lookahead token if don't already have one.  */
1995 
1996   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1997   if (yychar == YYEMPTY)
1998     {
1999       YYDPRINTF ((stderr, "Reading a token: "));
2000       yychar = yylex (ip_file);
2001     }
2002 
2003   if (yychar <= YYEOF)
2004     {
2005       yychar = yytoken = YYEOF;
2006       YYDPRINTF ((stderr, "Now at end of input.\n"));
2007     }
2008   else
2009     {
2010       yytoken = YYTRANSLATE (yychar);
2011       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2012     }
2013 
2014   /* If the proper action on seeing token YYTOKEN is to reduce or to
2015      detect an error, take that action.  */
2016   yyn += yytoken;
2017   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2018     goto yydefault;
2019   yyn = yytable[yyn];
2020   if (yyn <= 0)
2021     {
2022       if (yytable_value_is_error (yyn))
2023         goto yyerrlab;
2024       yyn = -yyn;
2025       goto yyreduce;
2026     }
2027 
2028   /* Count tokens shifted since error; after three, turn off error
2029      status.  */
2030   if (yyerrstatus)
2031     yyerrstatus--;
2032 
2033   /* Shift the lookahead token.  */
2034   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2035 
2036   /* Discard the shifted token.  */
2037   yychar = YYEMPTY;
2038 
2039   yystate = yyn;
2040   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2041   *++yyvsp = yylval;
2042   YY_IGNORE_MAYBE_UNINITIALIZED_END
2043 
2044   goto yynewstate;
2045 
2046 
2047 /*-----------------------------------------------------------.
2048 | yydefault -- do the default action for the current state.  |
2049 `-----------------------------------------------------------*/
2050 yydefault:
2051   yyn = yydefact[yystate];
2052   if (yyn == 0)
2053     goto yyerrlab;
2054   goto yyreduce;
2055 
2056 
2057 /*-----------------------------.
2058 | yyreduce -- Do a reduction.  |
2059 `-----------------------------*/
2060 yyreduce:
2061   /* yyn is the number of a rule to reduce with.  */
2062   yylen = yyr2[yyn];
2063 
2064   /* If YYLEN is nonzero, implement the default value of the action:
2065      '$$ = $1'.
2066 
2067      Otherwise, the following line sets YYVAL to garbage.
2068      This behavior is undocumented and Bison
2069      users should not rely upon it.  Assigning to YYVAL
2070      unconditionally makes the parser a bit smaller, and it avoids a
2071      GCC warning that YYVAL may be used uninitialized.  */
2072   yyval = yyvsp[1-yylen];
2073 
2074 
2075   YY_REDUCE_PRINT (yyn);
2076   switch (yyn)
2077     {
2078         case 5:
2079 #line 371 "ntp_parser.y" /* yacc.c:1646  */
2080     {
2081 			/* I will need to incorporate much more fine grained
2082 			 * error messages. The following should suffice for
2083 			 * the time being.
2084 			 */
2085 			msyslog(LOG_ERR,
2086 				"syntax error in %s line %d, column %d",
2087 				ip_file->fname,
2088 				ip_file->err_line_no,
2089 				ip_file->err_col_no);
2090 		}
2091 #line 2092 "ntp_parser.c" /* yacc.c:1646  */
2092     break;
2093 
2094   case 20:
2095 #line 406 "ntp_parser.y" /* yacc.c:1646  */
2096     {
2097 			peer_node *my_node;
2098 
2099 			my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2100 			APPEND_G_FIFO(cfgt.peers, my_node);
2101 		}
2102 #line 2103 "ntp_parser.c" /* yacc.c:1646  */
2103     break;
2104 
2105   case 27:
2106 #line 425 "ntp_parser.y" /* yacc.c:1646  */
2107     { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
2108 #line 2109 "ntp_parser.c" /* yacc.c:1646  */
2109     break;
2110 
2111   case 28:
2112 #line 430 "ntp_parser.y" /* yacc.c:1646  */
2113     { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
2114 #line 2115 "ntp_parser.c" /* yacc.c:1646  */
2115     break;
2116 
2117   case 29:
2118 #line 435 "ntp_parser.y" /* yacc.c:1646  */
2119     { (yyval.Integer) = AF_INET; }
2120 #line 2121 "ntp_parser.c" /* yacc.c:1646  */
2121     break;
2122 
2123   case 30:
2124 #line 437 "ntp_parser.y" /* yacc.c:1646  */
2125     { (yyval.Integer) = AF_INET6; }
2126 #line 2127 "ntp_parser.c" /* yacc.c:1646  */
2127     break;
2128 
2129   case 31:
2130 #line 442 "ntp_parser.y" /* yacc.c:1646  */
2131     { (yyval.Attr_val_fifo) = NULL; }
2132 #line 2133 "ntp_parser.c" /* yacc.c:1646  */
2133     break;
2134 
2135   case 32:
2136 #line 444 "ntp_parser.y" /* yacc.c:1646  */
2137     {
2138 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2139 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2140 		}
2141 #line 2142 "ntp_parser.c" /* yacc.c:1646  */
2142     break;
2143 
2144   case 36:
2145 #line 458 "ntp_parser.y" /* yacc.c:1646  */
2146     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2147 #line 2148 "ntp_parser.c" /* yacc.c:1646  */
2148     break;
2149 
2150   case 45:
2151 #line 474 "ntp_parser.y" /* yacc.c:1646  */
2152     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2153 #line 2154 "ntp_parser.c" /* yacc.c:1646  */
2154     break;
2155 
2156   case 46:
2157 #line 476 "ntp_parser.y" /* yacc.c:1646  */
2158     { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2159 #line 2160 "ntp_parser.c" /* yacc.c:1646  */
2160     break;
2161 
2162   case 53:
2163 #line 490 "ntp_parser.y" /* yacc.c:1646  */
2164     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2165 #line 2166 "ntp_parser.c" /* yacc.c:1646  */
2166     break;
2167 
2168   case 55:
2169 #line 504 "ntp_parser.y" /* yacc.c:1646  */
2170     {
2171 			unpeer_node *my_node;
2172 
2173 			my_node = create_unpeer_node((yyvsp[0].Address_node));
2174 			if (my_node)
2175 				APPEND_G_FIFO(cfgt.unpeers, my_node);
2176 		}
2177 #line 2178 "ntp_parser.c" /* yacc.c:1646  */
2178     break;
2179 
2180   case 58:
2181 #line 525 "ntp_parser.y" /* yacc.c:1646  */
2182     { cfgt.broadcastclient = 1; }
2183 #line 2184 "ntp_parser.c" /* yacc.c:1646  */
2184     break;
2185 
2186   case 59:
2187 #line 527 "ntp_parser.y" /* yacc.c:1646  */
2188     { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
2189 #line 2190 "ntp_parser.c" /* yacc.c:1646  */
2190     break;
2191 
2192   case 60:
2193 #line 529 "ntp_parser.y" /* yacc.c:1646  */
2194     { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
2195 #line 2196 "ntp_parser.c" /* yacc.c:1646  */
2196     break;
2197 
2198   case 61:
2199 #line 531 "ntp_parser.y" /* yacc.c:1646  */
2200     { cfgt.mdnstries = (yyvsp[0].Integer); }
2201 #line 2202 "ntp_parser.c" /* yacc.c:1646  */
2202     break;
2203 
2204   case 62:
2205 #line 542 "ntp_parser.y" /* yacc.c:1646  */
2206     {
2207 			attr_val *atrv;
2208 
2209 			atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2210 			APPEND_G_FIFO(cfgt.vars, atrv);
2211 		}
2212 #line 2213 "ntp_parser.c" /* yacc.c:1646  */
2213     break;
2214 
2215   case 63:
2216 #line 549 "ntp_parser.y" /* yacc.c:1646  */
2217     { cfgt.auth.control_key = (yyvsp[0].Integer); }
2218 #line 2219 "ntp_parser.c" /* yacc.c:1646  */
2219     break;
2220 
2221   case 64:
2222 #line 551 "ntp_parser.y" /* yacc.c:1646  */
2223     {
2224 			cfgt.auth.cryptosw++;
2225 			CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
2226 		}
2227 #line 2228 "ntp_parser.c" /* yacc.c:1646  */
2228     break;
2229 
2230   case 65:
2231 #line 556 "ntp_parser.y" /* yacc.c:1646  */
2232     { cfgt.auth.keys = (yyvsp[0].String); }
2233 #line 2234 "ntp_parser.c" /* yacc.c:1646  */
2234     break;
2235 
2236   case 66:
2237 #line 558 "ntp_parser.y" /* yacc.c:1646  */
2238     { cfgt.auth.keysdir = (yyvsp[0].String); }
2239 #line 2240 "ntp_parser.c" /* yacc.c:1646  */
2240     break;
2241 
2242   case 67:
2243 #line 560 "ntp_parser.y" /* yacc.c:1646  */
2244     { cfgt.auth.request_key = (yyvsp[0].Integer); }
2245 #line 2246 "ntp_parser.c" /* yacc.c:1646  */
2246     break;
2247 
2248   case 68:
2249 #line 562 "ntp_parser.y" /* yacc.c:1646  */
2250     { cfgt.auth.revoke = (yyvsp[0].Integer); }
2251 #line 2252 "ntp_parser.c" /* yacc.c:1646  */
2252     break;
2253 
2254   case 69:
2255 #line 564 "ntp_parser.y" /* yacc.c:1646  */
2256     {
2257 			cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo);
2258 
2259 			// if (!cfgt.auth.trusted_key_list)
2260 			// 	cfgt.auth.trusted_key_list = $2;
2261 			// else
2262 			// 	LINK_SLIST(cfgt.auth.trusted_key_list, $2, link);
2263 		}
2264 #line 2265 "ntp_parser.c" /* yacc.c:1646  */
2265     break;
2266 
2267   case 70:
2268 #line 573 "ntp_parser.y" /* yacc.c:1646  */
2269     { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
2270 #line 2271 "ntp_parser.c" /* yacc.c:1646  */
2271     break;
2272 
2273   case 71:
2274 #line 578 "ntp_parser.y" /* yacc.c:1646  */
2275     { (yyval.Attr_val_fifo) = NULL; }
2276 #line 2277 "ntp_parser.c" /* yacc.c:1646  */
2277     break;
2278 
2279   case 72:
2280 #line 580 "ntp_parser.y" /* yacc.c:1646  */
2281     {
2282 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2283 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2284 		}
2285 #line 2286 "ntp_parser.c" /* yacc.c:1646  */
2286     break;
2287 
2288   case 73:
2289 #line 588 "ntp_parser.y" /* yacc.c:1646  */
2290     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2291 #line 2292 "ntp_parser.c" /* yacc.c:1646  */
2292     break;
2293 
2294   case 74:
2295 #line 590 "ntp_parser.y" /* yacc.c:1646  */
2296     {
2297 			(yyval.Attr_val) = NULL;
2298 			cfgt.auth.revoke = (yyvsp[0].Integer);
2299 			msyslog(LOG_WARNING,
2300 				"'crypto revoke %d' is deprecated, "
2301 				"please use 'revoke %d' instead.",
2302 				cfgt.auth.revoke, cfgt.auth.revoke);
2303 		}
2304 #line 2305 "ntp_parser.c" /* yacc.c:1646  */
2305     break;
2306 
2307   case 80:
2308 #line 615 "ntp_parser.y" /* yacc.c:1646  */
2309     { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
2310 #line 2311 "ntp_parser.c" /* yacc.c:1646  */
2311     break;
2312 
2313   case 81:
2314 #line 620 "ntp_parser.y" /* yacc.c:1646  */
2315     {
2316 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2317 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2318 		}
2319 #line 2320 "ntp_parser.c" /* yacc.c:1646  */
2320     break;
2321 
2322   case 82:
2323 #line 625 "ntp_parser.y" /* yacc.c:1646  */
2324     {
2325 			(yyval.Attr_val_fifo) = NULL;
2326 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2327 		}
2328 #line 2329 "ntp_parser.c" /* yacc.c:1646  */
2329     break;
2330 
2331   case 83:
2332 #line 633 "ntp_parser.y" /* yacc.c:1646  */
2333     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2334 #line 2335 "ntp_parser.c" /* yacc.c:1646  */
2335     break;
2336 
2337   case 84:
2338 #line 635 "ntp_parser.y" /* yacc.c:1646  */
2339     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2340 #line 2341 "ntp_parser.c" /* yacc.c:1646  */
2341     break;
2342 
2343   case 85:
2344 #line 637 "ntp_parser.y" /* yacc.c:1646  */
2345     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
2346 #line 2347 "ntp_parser.c" /* yacc.c:1646  */
2347     break;
2348 
2349   case 96:
2350 #line 663 "ntp_parser.y" /* yacc.c:1646  */
2351     { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
2352 #line 2353 "ntp_parser.c" /* yacc.c:1646  */
2353     break;
2354 
2355   case 97:
2356 #line 665 "ntp_parser.y" /* yacc.c:1646  */
2357     {
2358 			if (input_from_file) {
2359 				cfgt.stats_dir = (yyvsp[0].String);
2360 			} else {
2361 				YYFREE((yyvsp[0].String));
2362 				yyerror(ip_file, "statsdir remote configuration ignored");
2363 			}
2364 		}
2365 #line 2366 "ntp_parser.c" /* yacc.c:1646  */
2366     break;
2367 
2368   case 98:
2369 #line 674 "ntp_parser.y" /* yacc.c:1646  */
2370     {
2371 			filegen_node *fgn;
2372 
2373 			fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
2374 			APPEND_G_FIFO(cfgt.filegen_opts, fgn);
2375 		}
2376 #line 2377 "ntp_parser.c" /* yacc.c:1646  */
2377     break;
2378 
2379   case 99:
2380 #line 684 "ntp_parser.y" /* yacc.c:1646  */
2381     {
2382 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2383 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2384 		}
2385 #line 2386 "ntp_parser.c" /* yacc.c:1646  */
2386     break;
2387 
2388   case 100:
2389 #line 689 "ntp_parser.y" /* yacc.c:1646  */
2390     {
2391 			(yyval.Int_fifo) = NULL;
2392 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2393 		}
2394 #line 2395 "ntp_parser.c" /* yacc.c:1646  */
2395     break;
2396 
2397   case 109:
2398 #line 708 "ntp_parser.y" /* yacc.c:1646  */
2399     { (yyval.Attr_val_fifo) = NULL; }
2400 #line 2401 "ntp_parser.c" /* yacc.c:1646  */
2401     break;
2402 
2403   case 110:
2404 #line 710 "ntp_parser.y" /* yacc.c:1646  */
2405     {
2406 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2407 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2408 		}
2409 #line 2410 "ntp_parser.c" /* yacc.c:1646  */
2410     break;
2411 
2412   case 111:
2413 #line 718 "ntp_parser.y" /* yacc.c:1646  */
2414     {
2415 			if (input_from_file) {
2416 				(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2417 			} else {
2418 				(yyval.Attr_val) = NULL;
2419 				YYFREE((yyvsp[0].String));
2420 				yyerror(ip_file, "filegen file remote config ignored");
2421 			}
2422 		}
2423 #line 2424 "ntp_parser.c" /* yacc.c:1646  */
2424     break;
2425 
2426   case 112:
2427 #line 728 "ntp_parser.y" /* yacc.c:1646  */
2428     {
2429 			if (input_from_file) {
2430 				(yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
2431 			} else {
2432 				(yyval.Attr_val) = NULL;
2433 				yyerror(ip_file, "filegen type remote config ignored");
2434 			}
2435 		}
2436 #line 2437 "ntp_parser.c" /* yacc.c:1646  */
2437     break;
2438 
2439   case 113:
2440 #line 737 "ntp_parser.y" /* yacc.c:1646  */
2441     {
2442 			const char *err;
2443 
2444 			if (input_from_file) {
2445 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2446 			} else {
2447 				(yyval.Attr_val) = NULL;
2448 				if (T_Link == (yyvsp[0].Integer))
2449 					err = "filegen link remote config ignored";
2450 				else
2451 					err = "filegen nolink remote config ignored";
2452 				yyerror(ip_file, err);
2453 			}
2454 		}
2455 #line 2456 "ntp_parser.c" /* yacc.c:1646  */
2456     break;
2457 
2458   case 114:
2459 #line 752 "ntp_parser.y" /* yacc.c:1646  */
2460     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2461 #line 2462 "ntp_parser.c" /* yacc.c:1646  */
2462     break;
2463 
2464   case 126:
2465 #line 782 "ntp_parser.y" /* yacc.c:1646  */
2466     {
2467 			CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
2468 		}
2469 #line 2470 "ntp_parser.c" /* yacc.c:1646  */
2470     break;
2471 
2472   case 127:
2473 #line 786 "ntp_parser.y" /* yacc.c:1646  */
2474     {
2475 			CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
2476 		}
2477 #line 2478 "ntp_parser.c" /* yacc.c:1646  */
2478     break;
2479 
2480   case 128:
2481 #line 790 "ntp_parser.y" /* yacc.c:1646  */
2482     {
2483 			restrict_node *rn;
2484 
2485 			rn = create_restrict_node((yyvsp[-1].Address_node), NULL, (yyvsp[0].Int_fifo),
2486 						  ip_file->line_no);
2487 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2488 		}
2489 #line 2490 "ntp_parser.c" /* yacc.c:1646  */
2490     break;
2491 
2492   case 129:
2493 #line 798 "ntp_parser.y" /* yacc.c:1646  */
2494     {
2495 			restrict_node *rn;
2496 
2497 			rn = create_restrict_node((yyvsp[-3].Address_node), (yyvsp[-1].Address_node), (yyvsp[0].Int_fifo),
2498 						  ip_file->line_no);
2499 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2500 		}
2501 #line 2502 "ntp_parser.c" /* yacc.c:1646  */
2502     break;
2503 
2504   case 130:
2505 #line 806 "ntp_parser.y" /* yacc.c:1646  */
2506     {
2507 			restrict_node *rn;
2508 
2509 			rn = create_restrict_node(NULL, NULL, (yyvsp[0].Int_fifo),
2510 						  ip_file->line_no);
2511 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2512 		}
2513 #line 2514 "ntp_parser.c" /* yacc.c:1646  */
2514     break;
2515 
2516   case 131:
2517 #line 814 "ntp_parser.y" /* yacc.c:1646  */
2518     {
2519 			restrict_node *rn;
2520 
2521 			rn = create_restrict_node(
2522 				create_address_node(
2523 					estrdup("0.0.0.0"),
2524 					AF_INET),
2525 				create_address_node(
2526 					estrdup("0.0.0.0"),
2527 					AF_INET),
2528 				(yyvsp[0].Int_fifo),
2529 				ip_file->line_no);
2530 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2531 		}
2532 #line 2533 "ntp_parser.c" /* yacc.c:1646  */
2533     break;
2534 
2535   case 132:
2536 #line 829 "ntp_parser.y" /* yacc.c:1646  */
2537     {
2538 			restrict_node *rn;
2539 
2540 			rn = create_restrict_node(
2541 				create_address_node(
2542 					estrdup("::"),
2543 					AF_INET6),
2544 				create_address_node(
2545 					estrdup("::"),
2546 					AF_INET6),
2547 				(yyvsp[0].Int_fifo),
2548 				ip_file->line_no);
2549 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2550 		}
2551 #line 2552 "ntp_parser.c" /* yacc.c:1646  */
2552     break;
2553 
2554   case 133:
2555 #line 844 "ntp_parser.y" /* yacc.c:1646  */
2556     {
2557 			restrict_node *	rn;
2558 
2559 			APPEND_G_FIFO((yyvsp[0].Int_fifo), create_int_node((yyvsp[-1].Integer)));
2560 			rn = create_restrict_node(
2561 				NULL, NULL, (yyvsp[0].Int_fifo), ip_file->line_no);
2562 			APPEND_G_FIFO(cfgt.restrict_opts, rn);
2563 		}
2564 #line 2565 "ntp_parser.c" /* yacc.c:1646  */
2565     break;
2566 
2567   case 134:
2568 #line 856 "ntp_parser.y" /* yacc.c:1646  */
2569     { (yyval.Int_fifo) = NULL; }
2570 #line 2571 "ntp_parser.c" /* yacc.c:1646  */
2571     break;
2572 
2573   case 135:
2574 #line 858 "ntp_parser.y" /* yacc.c:1646  */
2575     {
2576 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
2577 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
2578 		}
2579 #line 2580 "ntp_parser.c" /* yacc.c:1646  */
2580     break;
2581 
2582   case 151:
2583 #line 884 "ntp_parser.y" /* yacc.c:1646  */
2584     {
2585 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2586 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2587 		}
2588 #line 2589 "ntp_parser.c" /* yacc.c:1646  */
2589     break;
2590 
2591   case 152:
2592 #line 889 "ntp_parser.y" /* yacc.c:1646  */
2593     {
2594 			(yyval.Attr_val_fifo) = NULL;
2595 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2596 		}
2597 #line 2598 "ntp_parser.c" /* yacc.c:1646  */
2598     break;
2599 
2600   case 153:
2601 #line 897 "ntp_parser.y" /* yacc.c:1646  */
2602     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2603 #line 2604 "ntp_parser.c" /* yacc.c:1646  */
2604     break;
2605 
2606   case 157:
2607 #line 908 "ntp_parser.y" /* yacc.c:1646  */
2608     {
2609 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2610 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2611 		}
2612 #line 2613 "ntp_parser.c" /* yacc.c:1646  */
2613     break;
2614 
2615   case 158:
2616 #line 913 "ntp_parser.y" /* yacc.c:1646  */
2617     {
2618 			(yyval.Attr_val_fifo) = NULL;
2619 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2620 		}
2621 #line 2622 "ntp_parser.c" /* yacc.c:1646  */
2622     break;
2623 
2624   case 159:
2625 #line 921 "ntp_parser.y" /* yacc.c:1646  */
2626     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2627 #line 2628 "ntp_parser.c" /* yacc.c:1646  */
2628     break;
2629 
2630   case 168:
2631 #line 941 "ntp_parser.y" /* yacc.c:1646  */
2632     {
2633 			addr_opts_node *aon;
2634 
2635 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2636 			APPEND_G_FIFO(cfgt.fudge, aon);
2637 		}
2638 #line 2639 "ntp_parser.c" /* yacc.c:1646  */
2639     break;
2640 
2641   case 169:
2642 #line 951 "ntp_parser.y" /* yacc.c:1646  */
2643     {
2644 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2645 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2646 		}
2647 #line 2648 "ntp_parser.c" /* yacc.c:1646  */
2648     break;
2649 
2650   case 170:
2651 #line 956 "ntp_parser.y" /* yacc.c:1646  */
2652     {
2653 			(yyval.Attr_val_fifo) = NULL;
2654 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2655 		}
2656 #line 2657 "ntp_parser.c" /* yacc.c:1646  */
2657     break;
2658 
2659   case 171:
2660 #line 964 "ntp_parser.y" /* yacc.c:1646  */
2661     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2662 #line 2663 "ntp_parser.c" /* yacc.c:1646  */
2663     break;
2664 
2665   case 172:
2666 #line 966 "ntp_parser.y" /* yacc.c:1646  */
2667     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2668 #line 2669 "ntp_parser.c" /* yacc.c:1646  */
2669     break;
2670 
2671   case 173:
2672 #line 968 "ntp_parser.y" /* yacc.c:1646  */
2673     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2674 #line 2675 "ntp_parser.c" /* yacc.c:1646  */
2675     break;
2676 
2677   case 174:
2678 #line 970 "ntp_parser.y" /* yacc.c:1646  */
2679     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2680 #line 2681 "ntp_parser.c" /* yacc.c:1646  */
2681     break;
2682 
2683   case 175:
2684 #line 972 "ntp_parser.y" /* yacc.c:1646  */
2685     { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
2686 #line 2687 "ntp_parser.c" /* yacc.c:1646  */
2687     break;
2688 
2689   case 182:
2690 #line 993 "ntp_parser.y" /* yacc.c:1646  */
2691     { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
2692 #line 2693 "ntp_parser.c" /* yacc.c:1646  */
2693     break;
2694 
2695   case 183:
2696 #line 998 "ntp_parser.y" /* yacc.c:1646  */
2697     {
2698 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2699 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2700 		}
2701 #line 2702 "ntp_parser.c" /* yacc.c:1646  */
2702     break;
2703 
2704   case 184:
2705 #line 1003 "ntp_parser.y" /* yacc.c:1646  */
2706     {
2707 			(yyval.Attr_val_fifo) = NULL;
2708 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2709 		}
2710 #line 2711 "ntp_parser.c" /* yacc.c:1646  */
2711     break;
2712 
2713   case 185:
2714 #line 1011 "ntp_parser.y" /* yacc.c:1646  */
2715     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2716 #line 2717 "ntp_parser.c" /* yacc.c:1646  */
2717     break;
2718 
2719   case 189:
2720 #line 1027 "ntp_parser.y" /* yacc.c:1646  */
2721     { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
2722 #line 2723 "ntp_parser.c" /* yacc.c:1646  */
2723     break;
2724 
2725   case 190:
2726 #line 1029 "ntp_parser.y" /* yacc.c:1646  */
2727     { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
2728 #line 2729 "ntp_parser.c" /* yacc.c:1646  */
2729     break;
2730 
2731   case 191:
2732 #line 1034 "ntp_parser.y" /* yacc.c:1646  */
2733     {
2734 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2735 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2736 		}
2737 #line 2738 "ntp_parser.c" /* yacc.c:1646  */
2738     break;
2739 
2740   case 192:
2741 #line 1039 "ntp_parser.y" /* yacc.c:1646  */
2742     {
2743 			(yyval.Attr_val_fifo) = NULL;
2744 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2745 		}
2746 #line 2747 "ntp_parser.c" /* yacc.c:1646  */
2747     break;
2748 
2749   case 193:
2750 #line 1047 "ntp_parser.y" /* yacc.c:1646  */
2751     { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
2752 #line 2753 "ntp_parser.c" /* yacc.c:1646  */
2753     break;
2754 
2755   case 194:
2756 #line 1049 "ntp_parser.y" /* yacc.c:1646  */
2757     {
2758 			if (input_from_file) {
2759 				(yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
2760 			} else {
2761 				char err_str[128];
2762 
2763 				(yyval.Attr_val) = NULL;
2764 				snprintf(err_str, sizeof(err_str),
2765 					 "enable/disable %s remote configuration ignored",
2766 					 keyword((yyvsp[0].Integer)));
2767 				yyerror(ip_file, err_str);
2768 			}
2769 		}
2770 #line 2771 "ntp_parser.c" /* yacc.c:1646  */
2771     break;
2772 
2773   case 203:
2774 #line 1084 "ntp_parser.y" /* yacc.c:1646  */
2775     { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
2776 #line 2777 "ntp_parser.c" /* yacc.c:1646  */
2777     break;
2778 
2779   case 204:
2780 #line 1089 "ntp_parser.y" /* yacc.c:1646  */
2781     {
2782 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2783 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2784 		}
2785 #line 2786 "ntp_parser.c" /* yacc.c:1646  */
2786     break;
2787 
2788   case 205:
2789 #line 1094 "ntp_parser.y" /* yacc.c:1646  */
2790     {
2791 			(yyval.Attr_val_fifo) = NULL;
2792 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2793 		}
2794 #line 2795 "ntp_parser.c" /* yacc.c:1646  */
2795     break;
2796 
2797   case 206:
2798 #line 1102 "ntp_parser.y" /* yacc.c:1646  */
2799     { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
2800 #line 2801 "ntp_parser.c" /* yacc.c:1646  */
2801     break;
2802 
2803   case 217:
2804 #line 1125 "ntp_parser.y" /* yacc.c:1646  */
2805     {
2806 			attr_val *av;
2807 
2808 			av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
2809 			APPEND_G_FIFO(cfgt.vars, av);
2810 		}
2811 #line 2812 "ntp_parser.c" /* yacc.c:1646  */
2812     break;
2813 
2814   case 218:
2815 #line 1132 "ntp_parser.y" /* yacc.c:1646  */
2816     {
2817 			attr_val *av;
2818 
2819 			av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2820 			APPEND_G_FIFO(cfgt.vars, av);
2821 		}
2822 #line 2823 "ntp_parser.c" /* yacc.c:1646  */
2823     break;
2824 
2825   case 219:
2826 #line 1139 "ntp_parser.y" /* yacc.c:1646  */
2827     {
2828 			char error_text[64];
2829 			attr_val *av;
2830 
2831 			if (input_from_file) {
2832 				av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
2833 				APPEND_G_FIFO(cfgt.vars, av);
2834 			} else {
2835 				YYFREE((yyvsp[0].String));
2836 				snprintf(error_text, sizeof(error_text),
2837 					 "%s remote config ignored",
2838 					 keyword((yyvsp[-1].Integer)));
2839 				yyerror(ip_file, error_text);
2840 			}
2841 		}
2842 #line 2843 "ntp_parser.c" /* yacc.c:1646  */
2843     break;
2844 
2845   case 220:
2846 #line 1155 "ntp_parser.y" /* yacc.c:1646  */
2847     {
2848 			if (!input_from_file) {
2849 				yyerror(ip_file, "remote includefile ignored");
2850 				break;
2851 			}
2852 			if (curr_include_level >= MAXINCLUDELEVEL) {
2853 				fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
2854 				msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
2855 			} else {
2856 				fp[curr_include_level + 1] = F_OPEN(FindConfig((yyvsp[-1].String)), "r");
2857 				if (fp[curr_include_level + 1] == NULL) {
2858 					fprintf(stderr, "getconfig: Couldn't open <%s>\n", FindConfig((yyvsp[-1].String)));
2859 					msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", FindConfig((yyvsp[-1].String)));
2860 				} else {
2861 					ip_file = fp[++curr_include_level];
2862 				}
2863 			}
2864 		}
2865 #line 2866 "ntp_parser.c" /* yacc.c:1646  */
2866     break;
2867 
2868   case 221:
2869 #line 1174 "ntp_parser.y" /* yacc.c:1646  */
2870     {
2871 			while (curr_include_level != -1)
2872 				FCLOSE(fp[curr_include_level--]);
2873 		}
2874 #line 2875 "ntp_parser.c" /* yacc.c:1646  */
2875     break;
2876 
2877   case 222:
2878 #line 1179 "ntp_parser.y" /* yacc.c:1646  */
2879     { /* see drift_parm below for actions */ }
2880 #line 2881 "ntp_parser.c" /* yacc.c:1646  */
2881     break;
2882 
2883   case 223:
2884 #line 1181 "ntp_parser.y" /* yacc.c:1646  */
2885     { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
2886 #line 2887 "ntp_parser.c" /* yacc.c:1646  */
2887     break;
2888 
2889   case 224:
2890 #line 1183 "ntp_parser.y" /* yacc.c:1646  */
2891     { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
2892 #line 2893 "ntp_parser.c" /* yacc.c:1646  */
2893     break;
2894 
2895   case 225:
2896 #line 1185 "ntp_parser.y" /* yacc.c:1646  */
2897     { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
2898 #line 2899 "ntp_parser.c" /* yacc.c:1646  */
2899     break;
2900 
2901   case 226:
2902 #line 1187 "ntp_parser.y" /* yacc.c:1646  */
2903     {
2904 			addr_opts_node *aon;
2905 
2906 			aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
2907 			APPEND_G_FIFO(cfgt.trap, aon);
2908 		}
2909 #line 2910 "ntp_parser.c" /* yacc.c:1646  */
2910     break;
2911 
2912   case 227:
2913 #line 1194 "ntp_parser.y" /* yacc.c:1646  */
2914     { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
2915 #line 2916 "ntp_parser.c" /* yacc.c:1646  */
2916     break;
2917 
2918   case 236:
2919 #line 1216 "ntp_parser.y" /* yacc.c:1646  */
2920     {
2921 			attr_val *av;
2922 
2923 			av = create_attr_sval(T_Driftfile, (yyvsp[0].String));
2924 			APPEND_G_FIFO(cfgt.vars, av);
2925 		}
2926 #line 2927 "ntp_parser.c" /* yacc.c:1646  */
2927     break;
2928 
2929   case 237:
2930 #line 1223 "ntp_parser.y" /* yacc.c:1646  */
2931     {
2932 			attr_val *av;
2933 
2934 			av = create_attr_sval(T_Driftfile, (yyvsp[-1].String));
2935 			APPEND_G_FIFO(cfgt.vars, av);
2936 			av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double));
2937 			APPEND_G_FIFO(cfgt.vars, av);
2938 		}
2939 #line 2940 "ntp_parser.c" /* yacc.c:1646  */
2940     break;
2941 
2942   case 238:
2943 #line 1232 "ntp_parser.y" /* yacc.c:1646  */
2944     {
2945 			attr_val *av;
2946 
2947 			av = create_attr_sval(T_Driftfile, "");
2948 			APPEND_G_FIFO(cfgt.vars, av);
2949 		}
2950 #line 2951 "ntp_parser.c" /* yacc.c:1646  */
2951     break;
2952 
2953   case 239:
2954 #line 1242 "ntp_parser.y" /* yacc.c:1646  */
2955     { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
2956 #line 2957 "ntp_parser.c" /* yacc.c:1646  */
2957     break;
2958 
2959   case 241:
2960 #line 1248 "ntp_parser.y" /* yacc.c:1646  */
2961     { (yyval.Integer) = 0; }
2962 #line 2963 "ntp_parser.c" /* yacc.c:1646  */
2963     break;
2964 
2965   case 242:
2966 #line 1253 "ntp_parser.y" /* yacc.c:1646  */
2967     { (yyval.Attr_val_fifo) = NULL; }
2968 #line 2969 "ntp_parser.c" /* yacc.c:1646  */
2969     break;
2970 
2971   case 243:
2972 #line 1255 "ntp_parser.y" /* yacc.c:1646  */
2973     {
2974 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2975 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
2976 		}
2977 #line 2978 "ntp_parser.c" /* yacc.c:1646  */
2978     break;
2979 
2980   case 244:
2981 #line 1263 "ntp_parser.y" /* yacc.c:1646  */
2982     { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
2983 #line 2984 "ntp_parser.c" /* yacc.c:1646  */
2984     break;
2985 
2986   case 245:
2987 #line 1265 "ntp_parser.y" /* yacc.c:1646  */
2988     {
2989 			(yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
2990 			destroy_address_node((yyvsp[0].Address_node));
2991 		}
2992 #line 2993 "ntp_parser.c" /* yacc.c:1646  */
2993     break;
2994 
2995   case 246:
2996 #line 1273 "ntp_parser.y" /* yacc.c:1646  */
2997     {
2998 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
2999 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3000 		}
3001 #line 3002 "ntp_parser.c" /* yacc.c:1646  */
3002     break;
3003 
3004   case 247:
3005 #line 1278 "ntp_parser.y" /* yacc.c:1646  */
3006     {
3007 			(yyval.Attr_val_fifo) = NULL;
3008 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3009 		}
3010 #line 3011 "ntp_parser.c" /* yacc.c:1646  */
3011     break;
3012 
3013   case 248:
3014 #line 1286 "ntp_parser.y" /* yacc.c:1646  */
3015     {
3016 			char	prefix;
3017 			char *	type;
3018 
3019 			switch ((yyvsp[0].String)[0]) {
3020 
3021 			case '+':
3022 			case '-':
3023 			case '=':
3024 				prefix = (yyvsp[0].String)[0];
3025 				type = (yyvsp[0].String) + 1;
3026 				break;
3027 
3028 			default:
3029 				prefix = '=';
3030 				type = (yyvsp[0].String);
3031 			}
3032 
3033 			(yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
3034 			YYFREE((yyvsp[0].String));
3035 		}
3036 #line 3037 "ntp_parser.c" /* yacc.c:1646  */
3037     break;
3038 
3039   case 249:
3040 #line 1311 "ntp_parser.y" /* yacc.c:1646  */
3041     {
3042 			nic_rule_node *nrn;
3043 
3044 			nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
3045 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
3046 		}
3047 #line 3048 "ntp_parser.c" /* yacc.c:1646  */
3048     break;
3049 
3050   case 250:
3051 #line 1318 "ntp_parser.y" /* yacc.c:1646  */
3052     {
3053 			nic_rule_node *nrn;
3054 
3055 			nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
3056 			APPEND_G_FIFO(cfgt.nic_rules, nrn);
3057 		}
3058 #line 3059 "ntp_parser.c" /* yacc.c:1646  */
3059     break;
3060 
3061   case 260:
3062 #line 1346 "ntp_parser.y" /* yacc.c:1646  */
3063     { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
3064 #line 3065 "ntp_parser.c" /* yacc.c:1646  */
3065     break;
3066 
3067   case 261:
3068 #line 1351 "ntp_parser.y" /* yacc.c:1646  */
3069     {
3070 			(yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
3071 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3072 		}
3073 #line 3074 "ntp_parser.c" /* yacc.c:1646  */
3074     break;
3075 
3076   case 262:
3077 #line 1356 "ntp_parser.y" /* yacc.c:1646  */
3078     {
3079 			(yyval.Int_fifo) = NULL;
3080 			APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
3081 		}
3082 #line 3083 "ntp_parser.c" /* yacc.c:1646  */
3083     break;
3084 
3085   case 270:
3086 #line 1380 "ntp_parser.y" /* yacc.c:1646  */
3087     {
3088 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3089 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3090 		}
3091 #line 3092 "ntp_parser.c" /* yacc.c:1646  */
3092     break;
3093 
3094   case 271:
3095 #line 1385 "ntp_parser.y" /* yacc.c:1646  */
3096     {
3097 			(yyval.Attr_val_fifo) = NULL;
3098 			APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
3099 		}
3100 #line 3101 "ntp_parser.c" /* yacc.c:1646  */
3101     break;
3102 
3103   case 272:
3104 #line 1393 "ntp_parser.y" /* yacc.c:1646  */
3105     {
3106 			(yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
3107 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3108 		}
3109 #line 3110 "ntp_parser.c" /* yacc.c:1646  */
3110     break;
3111 
3112   case 273:
3113 #line 1398 "ntp_parser.y" /* yacc.c:1646  */
3114     {
3115 			(yyval.Attr_val_fifo) = NULL;
3116 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
3117 		}
3118 #line 3119 "ntp_parser.c" /* yacc.c:1646  */
3119     break;
3120 
3121   case 274:
3122 #line 1406 "ntp_parser.y" /* yacc.c:1646  */
3123     { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
3124 #line 3125 "ntp_parser.c" /* yacc.c:1646  */
3125     break;
3126 
3127   case 276:
3128 #line 1412 "ntp_parser.y" /* yacc.c:1646  */
3129     { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
3130 #line 3131 "ntp_parser.c" /* yacc.c:1646  */
3131     break;
3132 
3133   case 277:
3134 #line 1417 "ntp_parser.y" /* yacc.c:1646  */
3135     {
3136 			(yyval.String_fifo) = (yyvsp[-1].String_fifo);
3137 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3138 		}
3139 #line 3140 "ntp_parser.c" /* yacc.c:1646  */
3140     break;
3141 
3142   case 278:
3143 #line 1422 "ntp_parser.y" /* yacc.c:1646  */
3144     {
3145 			(yyval.String_fifo) = NULL;
3146 			APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
3147 		}
3148 #line 3149 "ntp_parser.c" /* yacc.c:1646  */
3149     break;
3150 
3151   case 279:
3152 #line 1430 "ntp_parser.y" /* yacc.c:1646  */
3153     {
3154 			(yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
3155 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3156 		}
3157 #line 3158 "ntp_parser.c" /* yacc.c:1646  */
3158     break;
3159 
3160   case 280:
3161 #line 1435 "ntp_parser.y" /* yacc.c:1646  */
3162     {
3163 			(yyval.Address_fifo) = NULL;
3164 			APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
3165 		}
3166 #line 3167 "ntp_parser.c" /* yacc.c:1646  */
3167     break;
3168 
3169   case 281:
3170 #line 1443 "ntp_parser.y" /* yacc.c:1646  */
3171     {
3172 			if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
3173 				yyerror(ip_file, "Integer value is not boolean (0 or 1). Assuming 1");
3174 				(yyval.Integer) = 1;
3175 			} else {
3176 				(yyval.Integer) = (yyvsp[0].Integer);
3177 			}
3178 		}
3179 #line 3180 "ntp_parser.c" /* yacc.c:1646  */
3180     break;
3181 
3182   case 282:
3183 #line 1451 "ntp_parser.y" /* yacc.c:1646  */
3184     { (yyval.Integer) = 1; }
3185 #line 3186 "ntp_parser.c" /* yacc.c:1646  */
3186     break;
3187 
3188   case 283:
3189 #line 1452 "ntp_parser.y" /* yacc.c:1646  */
3190     { (yyval.Integer) = 0; }
3191 #line 3192 "ntp_parser.c" /* yacc.c:1646  */
3192     break;
3193 
3194   case 284:
3195 #line 1456 "ntp_parser.y" /* yacc.c:1646  */
3196     { (yyval.Double) = (double)(yyvsp[0].Integer); }
3197 #line 3198 "ntp_parser.c" /* yacc.c:1646  */
3198     break;
3199 
3200   case 286:
3201 #line 1467 "ntp_parser.y" /* yacc.c:1646  */
3202     {
3203 			sim_node *sn;
3204 
3205 			sn =  create_sim_node((yyvsp[-2].Attr_val_fifo), (yyvsp[-1].Sim_server_fifo));
3206 			APPEND_G_FIFO(cfgt.sim_details, sn);
3207 
3208 			/* Revert from ; to \n for end-of-command */
3209 			old_config_style = 1;
3210 		}
3211 #line 3212 "ntp_parser.c" /* yacc.c:1646  */
3212     break;
3213 
3214   case 287:
3215 #line 1484 "ntp_parser.y" /* yacc.c:1646  */
3216     { old_config_style = 0; }
3217 #line 3218 "ntp_parser.c" /* yacc.c:1646  */
3218     break;
3219 
3220   case 288:
3221 #line 1489 "ntp_parser.y" /* yacc.c:1646  */
3222     {
3223 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3224 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3225 		}
3226 #line 3227 "ntp_parser.c" /* yacc.c:1646  */
3227     break;
3228 
3229   case 289:
3230 #line 1494 "ntp_parser.y" /* yacc.c:1646  */
3231     {
3232 			(yyval.Attr_val_fifo) = NULL;
3233 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3234 		}
3235 #line 3236 "ntp_parser.c" /* yacc.c:1646  */
3236     break;
3237 
3238   case 290:
3239 #line 1502 "ntp_parser.y" /* yacc.c:1646  */
3240     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3241 #line 3242 "ntp_parser.c" /* yacc.c:1646  */
3242     break;
3243 
3244   case 293:
3245 #line 1512 "ntp_parser.y" /* yacc.c:1646  */
3246     {
3247 			(yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
3248 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3249 		}
3250 #line 3251 "ntp_parser.c" /* yacc.c:1646  */
3251     break;
3252 
3253   case 294:
3254 #line 1517 "ntp_parser.y" /* yacc.c:1646  */
3255     {
3256 			(yyval.Sim_server_fifo) = NULL;
3257 			APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
3258 		}
3259 #line 3260 "ntp_parser.c" /* yacc.c:1646  */
3260     break;
3261 
3262   case 295:
3263 #line 1525 "ntp_parser.y" /* yacc.c:1646  */
3264     { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
3265 #line 3266 "ntp_parser.c" /* yacc.c:1646  */
3266     break;
3267 
3268   case 296:
3269 #line 1530 "ntp_parser.y" /* yacc.c:1646  */
3270     { (yyval.Double) = (yyvsp[-1].Double); }
3271 #line 3272 "ntp_parser.c" /* yacc.c:1646  */
3272     break;
3273 
3274   case 297:
3275 #line 1535 "ntp_parser.y" /* yacc.c:1646  */
3276     { (yyval.Address_node) = (yyvsp[0].Address_node); }
3277 #line 3278 "ntp_parser.c" /* yacc.c:1646  */
3278     break;
3279 
3280   case 298:
3281 #line 1540 "ntp_parser.y" /* yacc.c:1646  */
3282     {
3283 			(yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
3284 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3285 		}
3286 #line 3287 "ntp_parser.c" /* yacc.c:1646  */
3287     break;
3288 
3289   case 299:
3290 #line 1545 "ntp_parser.y" /* yacc.c:1646  */
3291     {
3292 			(yyval.Sim_script_fifo) = NULL;
3293 			APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
3294 		}
3295 #line 3296 "ntp_parser.c" /* yacc.c:1646  */
3296     break;
3297 
3298   case 300:
3299 #line 1553 "ntp_parser.y" /* yacc.c:1646  */
3300     { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
3301 #line 3302 "ntp_parser.c" /* yacc.c:1646  */
3302     break;
3303 
3304   case 301:
3305 #line 1558 "ntp_parser.y" /* yacc.c:1646  */
3306     {
3307 			(yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
3308 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3309 		}
3310 #line 3311 "ntp_parser.c" /* yacc.c:1646  */
3311     break;
3312 
3313   case 302:
3314 #line 1563 "ntp_parser.y" /* yacc.c:1646  */
3315     {
3316 			(yyval.Attr_val_fifo) = NULL;
3317 			APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
3318 		}
3319 #line 3320 "ntp_parser.c" /* yacc.c:1646  */
3320     break;
3321 
3322   case 303:
3323 #line 1571 "ntp_parser.y" /* yacc.c:1646  */
3324     { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
3325 #line 3326 "ntp_parser.c" /* yacc.c:1646  */
3326     break;
3327 
3328 
3329 #line 3330 "ntp_parser.c" /* yacc.c:1646  */
3330       default: break;
3331     }
3332   /* User semantic actions sometimes alter yychar, and that requires
3333      that yytoken be updated with the new translation.  We take the
3334      approach of translating immediately before every use of yytoken.
3335      One alternative is translating here after every semantic action,
3336      but that translation would be missed if the semantic action invokes
3337      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3338      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
3339      incorrect destructor might then be invoked immediately.  In the
3340      case of YYERROR or YYBACKUP, subsequent parser actions might lead
3341      to an incorrect destructor call or verbose syntax error message
3342      before the lookahead is translated.  */
3343   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3344 
3345   YYPOPSTACK (yylen);
3346   yylen = 0;
3347   YY_STACK_PRINT (yyss, yyssp);
3348 
3349   *++yyvsp = yyval;
3350 
3351   /* Now 'shift' the result of the reduction.  Determine what state
3352      that goes to, based on the state we popped back to and the rule
3353      number reduced by.  */
3354 
3355   yyn = yyr1[yyn];
3356 
3357   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3358   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3359     yystate = yytable[yystate];
3360   else
3361     yystate = yydefgoto[yyn - YYNTOKENS];
3362 
3363   goto yynewstate;
3364 
3365 
3366 /*--------------------------------------.
3367 | yyerrlab -- here on detecting error.  |
3368 `--------------------------------------*/
3369 yyerrlab:
3370   /* Make sure we have latest lookahead translation.  See comments at
3371      user semantic actions for why this is necessary.  */
3372   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3373 
3374   /* If not already recovering from an error, report this error.  */
3375   if (!yyerrstatus)
3376     {
3377       ++yynerrs;
3378 #if ! YYERROR_VERBOSE
3379       yyerror (ip_file, YY_("syntax error"));
3380 #else
3381 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3382                                         yyssp, yytoken)
3383       {
3384         char const *yymsgp = YY_("syntax error");
3385         int yysyntax_error_status;
3386         yysyntax_error_status = YYSYNTAX_ERROR;
3387         if (yysyntax_error_status == 0)
3388           yymsgp = yymsg;
3389         else if (yysyntax_error_status == 1)
3390           {
3391             if (yymsg != yymsgbuf)
3392               YYSTACK_FREE (yymsg);
3393             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3394             if (!yymsg)
3395               {
3396                 yymsg = yymsgbuf;
3397                 yymsg_alloc = sizeof yymsgbuf;
3398                 yysyntax_error_status = 2;
3399               }
3400             else
3401               {
3402                 yysyntax_error_status = YYSYNTAX_ERROR;
3403                 yymsgp = yymsg;
3404               }
3405           }
3406         yyerror (ip_file, yymsgp);
3407         if (yysyntax_error_status == 2)
3408           goto yyexhaustedlab;
3409       }
3410 # undef YYSYNTAX_ERROR
3411 #endif
3412     }
3413 
3414 
3415 
3416   if (yyerrstatus == 3)
3417     {
3418       /* If just tried and failed to reuse lookahead token after an
3419          error, discard it.  */
3420 
3421       if (yychar <= YYEOF)
3422         {
3423           /* Return failure if at end of input.  */
3424           if (yychar == YYEOF)
3425             YYABORT;
3426         }
3427       else
3428         {
3429           yydestruct ("Error: discarding",
3430                       yytoken, &yylval, ip_file);
3431           yychar = YYEMPTY;
3432         }
3433     }
3434 
3435   /* Else will try to reuse lookahead token after shifting the error
3436      token.  */
3437   goto yyerrlab1;
3438 
3439 
3440 /*---------------------------------------------------.
3441 | yyerrorlab -- error raised explicitly by YYERROR.  |
3442 `---------------------------------------------------*/
3443 yyerrorlab:
3444 
3445   /* Pacify compilers like GCC when the user code never invokes
3446      YYERROR and the label yyerrorlab therefore never appears in user
3447      code.  */
3448   if (/*CONSTCOND*/ 0)
3449      goto yyerrorlab;
3450 
3451   /* Do not reclaim the symbols of the rule whose action triggered
3452      this YYERROR.  */
3453   YYPOPSTACK (yylen);
3454   yylen = 0;
3455   YY_STACK_PRINT (yyss, yyssp);
3456   yystate = *yyssp;
3457   goto yyerrlab1;
3458 
3459 
3460 /*-------------------------------------------------------------.
3461 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3462 `-------------------------------------------------------------*/
3463 yyerrlab1:
3464   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3465 
3466   for (;;)
3467     {
3468       yyn = yypact[yystate];
3469       if (!yypact_value_is_default (yyn))
3470         {
3471           yyn += YYTERROR;
3472           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3473             {
3474               yyn = yytable[yyn];
3475               if (0 < yyn)
3476                 break;
3477             }
3478         }
3479 
3480       /* Pop the current state because it cannot handle the error token.  */
3481       if (yyssp == yyss)
3482         YYABORT;
3483 
3484 
3485       yydestruct ("Error: popping",
3486                   yystos[yystate], yyvsp, ip_file);
3487       YYPOPSTACK (1);
3488       yystate = *yyssp;
3489       YY_STACK_PRINT (yyss, yyssp);
3490     }
3491 
3492   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3493   *++yyvsp = yylval;
3494   YY_IGNORE_MAYBE_UNINITIALIZED_END
3495 
3496 
3497   /* Shift the error token.  */
3498   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3499 
3500   yystate = yyn;
3501   goto yynewstate;
3502 
3503 
3504 /*-------------------------------------.
3505 | yyacceptlab -- YYACCEPT comes here.  |
3506 `-------------------------------------*/
3507 yyacceptlab:
3508   yyresult = 0;
3509   goto yyreturn;
3510 
3511 /*-----------------------------------.
3512 | yyabortlab -- YYABORT comes here.  |
3513 `-----------------------------------*/
3514 yyabortlab:
3515   yyresult = 1;
3516   goto yyreturn;
3517 
3518 #if !defined yyoverflow || YYERROR_VERBOSE
3519 /*-------------------------------------------------.
3520 | yyexhaustedlab -- memory exhaustion comes here.  |
3521 `-------------------------------------------------*/
3522 yyexhaustedlab:
3523   yyerror (ip_file, YY_("memory exhausted"));
3524   yyresult = 2;
3525   /* Fall through.  */
3526 #endif
3527 
3528 yyreturn:
3529   if (yychar != YYEMPTY)
3530     {
3531       /* Make sure we have latest lookahead translation.  See comments at
3532          user semantic actions for why this is necessary.  */
3533       yytoken = YYTRANSLATE (yychar);
3534       yydestruct ("Cleanup: discarding lookahead",
3535                   yytoken, &yylval, ip_file);
3536     }
3537   /* Do not reclaim the symbols of the rule whose action triggered
3538      this YYABORT or YYACCEPT.  */
3539   YYPOPSTACK (yylen);
3540   YY_STACK_PRINT (yyss, yyssp);
3541   while (yyssp != yyss)
3542     {
3543       yydestruct ("Cleanup: popping",
3544                   yystos[*yyssp], yyvsp, ip_file);
3545       YYPOPSTACK (1);
3546     }
3547 #ifndef yyoverflow
3548   if (yyss != yyssa)
3549     YYSTACK_FREE (yyss);
3550 #endif
3551 #if YYERROR_VERBOSE
3552   if (yymsg != yymsgbuf)
3553     YYSTACK_FREE (yymsg);
3554 #endif
3555   return yyresult;
3556 }
3557 #line 1582 "ntp_parser.y" /* yacc.c:1906  */
3558 
3559 
3560 void
3561 yyerror(
3562 	struct FILE_INFO *ip_file,
3563 	const char *msg
3564 	)
3565 {
3566 	int retval;
3567 
3568 	ip_file->err_line_no = ip_file->prev_token_line_no;
3569 	ip_file->err_col_no = ip_file->prev_token_col_no;
3570 
3571 	msyslog(LOG_ERR,
3572 		"line %d column %d %s",
3573 		ip_file->err_line_no,
3574 		ip_file->err_col_no,
3575 		msg);
3576 	if (!input_from_file) {
3577 		/* Save the error message in the correct buffer */
3578 		retval = snprintf(remote_config.err_msg + remote_config.err_pos,
3579 				  MAXLINE - remote_config.err_pos,
3580 				  "column %d %s",
3581 				  ip_file->err_col_no, msg);
3582 
3583 		/* Increment the value of err_pos */
3584 		if (retval > 0)
3585 			remote_config.err_pos += retval;
3586 
3587 		/* Increment the number of errors */
3588 		++remote_config.no_errors;
3589 	}
3590 }
3591 
3592 
3593 /*
3594  * token_name - convert T_ token integers to text
3595  *		example: token_name(T_Server) returns "T_Server"
3596  */
3597 const char *
3598 token_name(
3599 	int token
3600 	)
3601 {
3602 	return yytname[YYTRANSLATE(token)];
3603 }
3604 
3605 
3606 /* Initial Testing function -- ignore */
3607 #if 0
3608 int main(int argc, char *argv[])
3609 {
3610 	ip_file = FOPEN(argv[1], "r");
3611 	if (!ip_file)
3612 		fprintf(stderr, "ERROR!! Could not open file: %s\n", argv[1]);
3613 	yyparse();
3614 	return 0;
3615 }
3616 #endif
3617 
3618