1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 1
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66 /* "%code top" blocks. */
67 #line 24 "modules/csvparser/csvparser-grammar.y"
68
69 #include "csvparser-parser.h"
70
71
72 #line 73 "modules/csvparser/csvparser-grammar.c"
73 /* Substitute the type names. */
74 #define YYSTYPE CSVPARSER_STYPE
75 #define YYLTYPE CSVPARSER_LTYPE
76 /* Substitute the variable and function names. */
77 #define yyparse csvparser_parse
78 #define yylex csvparser_lex
79 #define yyerror csvparser_error
80 #define yydebug csvparser_debug
81 #define yynerrs csvparser_nerrs
82
83
84 # ifndef YY_CAST
85 # ifdef __cplusplus
86 # define YY_CAST(Type, Val) static_cast<Type> (Val)
87 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
88 # else
89 # define YY_CAST(Type, Val) ((Type) (Val))
90 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
91 # endif
92 # endif
93 # ifndef YY_NULLPTR
94 # if defined __cplusplus
95 # if 201103L <= __cplusplus
96 # define YY_NULLPTR nullptr
97 # else
98 # define YY_NULLPTR 0
99 # endif
100 # else
101 # define YY_NULLPTR ((void*)0)
102 # endif
103 # endif
104
105 /* Use api.header.include to #include this header
106 instead of duplicating it here. */
107 #ifndef YY_CSVPARSER_MODULES_CSVPARSER_CSVPARSER_GRAMMAR_H_INCLUDED
108 # define YY_CSVPARSER_MODULES_CSVPARSER_CSVPARSER_GRAMMAR_H_INCLUDED
109 /* Debug traces. */
110 #ifndef CSVPARSER_DEBUG
111 # if defined YYDEBUG
112 #if YYDEBUG
113 # define CSVPARSER_DEBUG 1
114 # else
115 # define CSVPARSER_DEBUG 0
116 # endif
117 # else /* ! defined YYDEBUG */
118 # define CSVPARSER_DEBUG 0
119 # endif /* ! defined YYDEBUG */
120 #endif /* ! defined CSVPARSER_DEBUG */
121 #if CSVPARSER_DEBUG
122 extern int csvparser_debug;
123 #endif
124
125 /* Token kinds. */
126 #ifndef CSVPARSER_TOKENTYPE
127 # define CSVPARSER_TOKENTYPE
128 enum csvparser_tokentype
129 {
130 CSVPARSER_EMPTY = -2,
131 CSVPARSER_EOF = 0, /* "end of file" */
132 CSVPARSER_error = 256, /* error */
133 CSVPARSER_UNDEF = 10514, /* "invalid token" */
134 LL_CONTEXT_ROOT = 1, /* LL_CONTEXT_ROOT */
135 LL_CONTEXT_DESTINATION = 2, /* LL_CONTEXT_DESTINATION */
136 LL_CONTEXT_SOURCE = 3, /* LL_CONTEXT_SOURCE */
137 LL_CONTEXT_PARSER = 4, /* LL_CONTEXT_PARSER */
138 LL_CONTEXT_REWRITE = 5, /* LL_CONTEXT_REWRITE */
139 LL_CONTEXT_FILTER = 6, /* LL_CONTEXT_FILTER */
140 LL_CONTEXT_LOG = 7, /* LL_CONTEXT_LOG */
141 LL_CONTEXT_BLOCK_DEF = 8, /* LL_CONTEXT_BLOCK_DEF */
142 LL_CONTEXT_BLOCK_REF = 9, /* LL_CONTEXT_BLOCK_REF */
143 LL_CONTEXT_BLOCK_CONTENT = 10, /* LL_CONTEXT_BLOCK_CONTENT */
144 LL_CONTEXT_BLOCK_ARG = 11, /* LL_CONTEXT_BLOCK_ARG */
145 LL_CONTEXT_PRAGMA = 12, /* LL_CONTEXT_PRAGMA */
146 LL_CONTEXT_FORMAT = 13, /* LL_CONTEXT_FORMAT */
147 LL_CONTEXT_TEMPLATE_FUNC = 14, /* LL_CONTEXT_TEMPLATE_FUNC */
148 LL_CONTEXT_INNER_DEST = 15, /* LL_CONTEXT_INNER_DEST */
149 LL_CONTEXT_INNER_SRC = 16, /* LL_CONTEXT_INNER_SRC */
150 LL_CONTEXT_CLIENT_PROTO = 17, /* LL_CONTEXT_CLIENT_PROTO */
151 LL_CONTEXT_SERVER_PROTO = 18, /* LL_CONTEXT_SERVER_PROTO */
152 LL_CONTEXT_OPTIONS = 19, /* LL_CONTEXT_OPTIONS */
153 LL_CONTEXT_CONFIG = 20, /* LL_CONTEXT_CONFIG */
154 LL_CONTEXT_MAX = 21, /* LL_CONTEXT_MAX */
155 KW_SOURCE = 10000, /* KW_SOURCE */
156 KW_FILTER = 10001, /* KW_FILTER */
157 KW_PARSER = 10002, /* KW_PARSER */
158 KW_DESTINATION = 10003, /* KW_DESTINATION */
159 KW_LOG = 10004, /* KW_LOG */
160 KW_OPTIONS = 10005, /* KW_OPTIONS */
161 KW_INCLUDE = 10006, /* KW_INCLUDE */
162 KW_BLOCK = 10007, /* KW_BLOCK */
163 KW_JUNCTION = 10008, /* KW_JUNCTION */
164 KW_CHANNEL = 10009, /* KW_CHANNEL */
165 KW_IF = 10010, /* KW_IF */
166 KW_ELSE = 10011, /* KW_ELSE */
167 KW_ELIF = 10012, /* KW_ELIF */
168 KW_INTERNAL = 10020, /* KW_INTERNAL */
169 KW_SYSLOG = 10060, /* KW_SYSLOG */
170 KW_MARK_FREQ = 10071, /* KW_MARK_FREQ */
171 KW_STATS_FREQ = 10072, /* KW_STATS_FREQ */
172 KW_STATS_LEVEL = 10073, /* KW_STATS_LEVEL */
173 KW_STATS_LIFETIME = 10074, /* KW_STATS_LIFETIME */
174 KW_FLUSH_LINES = 10075, /* KW_FLUSH_LINES */
175 KW_SUPPRESS = 10076, /* KW_SUPPRESS */
176 KW_FLUSH_TIMEOUT = 10077, /* KW_FLUSH_TIMEOUT */
177 KW_LOG_MSG_SIZE = 10078, /* KW_LOG_MSG_SIZE */
178 KW_FILE_TEMPLATE = 10079, /* KW_FILE_TEMPLATE */
179 KW_PROTO_TEMPLATE = 10080, /* KW_PROTO_TEMPLATE */
180 KW_MARK_MODE = 10081, /* KW_MARK_MODE */
181 KW_ENCODING = 10082, /* KW_ENCODING */
182 KW_TYPE = 10083, /* KW_TYPE */
183 KW_STATS_MAX_DYNAMIC = 10084, /* KW_STATS_MAX_DYNAMIC */
184 KW_MIN_IW_SIZE_PER_READER = 10085, /* KW_MIN_IW_SIZE_PER_READER */
185 KW_WORKERS = 10086, /* KW_WORKERS */
186 KW_BATCH_LINES = 10087, /* KW_BATCH_LINES */
187 KW_BATCH_TIMEOUT = 10088, /* KW_BATCH_TIMEOUT */
188 KW_TRIM_LARGE_MESSAGES = 10089, /* KW_TRIM_LARGE_MESSAGES */
189 KW_CHAIN_HOSTNAMES = 10090, /* KW_CHAIN_HOSTNAMES */
190 KW_NORMALIZE_HOSTNAMES = 10091, /* KW_NORMALIZE_HOSTNAMES */
191 KW_KEEP_HOSTNAME = 10092, /* KW_KEEP_HOSTNAME */
192 KW_CHECK_HOSTNAME = 10093, /* KW_CHECK_HOSTNAME */
193 KW_BAD_HOSTNAME = 10094, /* KW_BAD_HOSTNAME */
194 KW_KEEP_TIMESTAMP = 10100, /* KW_KEEP_TIMESTAMP */
195 KW_USE_DNS = 10110, /* KW_USE_DNS */
196 KW_USE_FQDN = 10111, /* KW_USE_FQDN */
197 KW_CUSTOM_DOMAIN = 10112, /* KW_CUSTOM_DOMAIN */
198 KW_DNS_CACHE = 10120, /* KW_DNS_CACHE */
199 KW_DNS_CACHE_SIZE = 10121, /* KW_DNS_CACHE_SIZE */
200 KW_DNS_CACHE_EXPIRE = 10130, /* KW_DNS_CACHE_EXPIRE */
201 KW_DNS_CACHE_EXPIRE_FAILED = 10131, /* KW_DNS_CACHE_EXPIRE_FAILED */
202 KW_DNS_CACHE_HOSTS = 10132, /* KW_DNS_CACHE_HOSTS */
203 KW_PERSIST_ONLY = 10140, /* KW_PERSIST_ONLY */
204 KW_USE_RCPTID = 10141, /* KW_USE_RCPTID */
205 KW_USE_UNIQID = 10142, /* KW_USE_UNIQID */
206 KW_TZ_CONVERT = 10150, /* KW_TZ_CONVERT */
207 KW_TS_FORMAT = 10151, /* KW_TS_FORMAT */
208 KW_FRAC_DIGITS = 10152, /* KW_FRAC_DIGITS */
209 KW_LOG_FIFO_SIZE = 10160, /* KW_LOG_FIFO_SIZE */
210 KW_LOG_FETCH_LIMIT = 10162, /* KW_LOG_FETCH_LIMIT */
211 KW_LOG_IW_SIZE = 10163, /* KW_LOG_IW_SIZE */
212 KW_LOG_PREFIX = 10164, /* KW_LOG_PREFIX */
213 KW_PROGRAM_OVERRIDE = 10165, /* KW_PROGRAM_OVERRIDE */
214 KW_HOST_OVERRIDE = 10166, /* KW_HOST_OVERRIDE */
215 KW_THROTTLE = 10170, /* KW_THROTTLE */
216 KW_THREADED = 10171, /* KW_THREADED */
217 KW_PASS_UNIX_CREDENTIALS = 10231, /* KW_PASS_UNIX_CREDENTIALS */
218 KW_PERSIST_NAME = 10302, /* KW_PERSIST_NAME */
219 KW_READ_OLD_RECORDS = 10304, /* KW_READ_OLD_RECORDS */
220 KW_USE_SYSLOGNG_PID = 10305, /* KW_USE_SYSLOGNG_PID */
221 KW_FLAGS = 10190, /* KW_FLAGS */
222 KW_PAD_SIZE = 10200, /* KW_PAD_SIZE */
223 KW_TIME_ZONE = 10201, /* KW_TIME_ZONE */
224 KW_RECV_TIME_ZONE = 10202, /* KW_RECV_TIME_ZONE */
225 KW_SEND_TIME_ZONE = 10203, /* KW_SEND_TIME_ZONE */
226 KW_LOCAL_TIME_ZONE = 10204, /* KW_LOCAL_TIME_ZONE */
227 KW_FORMAT = 10205, /* KW_FORMAT */
228 KW_TRUNCATE_SIZE = 10206, /* KW_TRUNCATE_SIZE */
229 KW_TIME_REOPEN = 10210, /* KW_TIME_REOPEN */
230 KW_TIME_REAP = 10211, /* KW_TIME_REAP */
231 KW_TIME_SLEEP = 10212, /* KW_TIME_SLEEP */
232 KW_TMPL_ESCAPE = 10220, /* KW_TMPL_ESCAPE */
233 KW_OPTIONAL = 10230, /* KW_OPTIONAL */
234 KW_CREATE_DIRS = 10240, /* KW_CREATE_DIRS */
235 KW_OWNER = 10250, /* KW_OWNER */
236 KW_GROUP = 10251, /* KW_GROUP */
237 KW_PERM = 10252, /* KW_PERM */
238 KW_DIR_OWNER = 10260, /* KW_DIR_OWNER */
239 KW_DIR_GROUP = 10261, /* KW_DIR_GROUP */
240 KW_DIR_PERM = 10262, /* KW_DIR_PERM */
241 KW_TEMPLATE = 10270, /* KW_TEMPLATE */
242 KW_TEMPLATE_ESCAPE = 10271, /* KW_TEMPLATE_ESCAPE */
243 KW_TEMPLATE_FUNCTION = 10272, /* KW_TEMPLATE_FUNCTION */
244 KW_DEFAULT_FACILITY = 10300, /* KW_DEFAULT_FACILITY */
245 KW_DEFAULT_SEVERITY = 10301, /* KW_DEFAULT_SEVERITY */
246 KW_PORT = 10323, /* KW_PORT */
247 KW_USE_TIME_RECVD = 10340, /* KW_USE_TIME_RECVD */
248 KW_FACILITY = 10350, /* KW_FACILITY */
249 KW_SEVERITY = 10351, /* KW_SEVERITY */
250 KW_HOST = 10352, /* KW_HOST */
251 KW_MATCH = 10353, /* KW_MATCH */
252 KW_MESSAGE = 10354, /* KW_MESSAGE */
253 KW_NETMASK = 10355, /* KW_NETMASK */
254 KW_TAGS = 10356, /* KW_TAGS */
255 KW_NETMASK6 = 10357, /* KW_NETMASK6 */
256 KW_REWRITE = 10370, /* KW_REWRITE */
257 KW_CONDITION = 10371, /* KW_CONDITION */
258 KW_VALUE = 10372, /* KW_VALUE */
259 KW_YES = 10380, /* KW_YES */
260 KW_NO = 10381, /* KW_NO */
261 KW_IFDEF = 10410, /* KW_IFDEF */
262 KW_ENDIF = 10411, /* KW_ENDIF */
263 LL_DOTDOT = 10420, /* LL_DOTDOT */
264 LL_DOTDOTDOT = 10421, /* LL_DOTDOTDOT */
265 LL_PRAGMA = 10422, /* LL_PRAGMA */
266 LL_EOL = 10423, /* LL_EOL */
267 LL_ERROR = 10424, /* LL_ERROR */
268 LL_ARROW = 10425, /* LL_ARROW */
269 LL_IDENTIFIER = 10430, /* LL_IDENTIFIER */
270 LL_NUMBER = 10431, /* LL_NUMBER */
271 LL_FLOAT = 10432, /* LL_FLOAT */
272 LL_STRING = 10433, /* LL_STRING */
273 LL_TOKEN = 10434, /* LL_TOKEN */
274 LL_BLOCK = 10435, /* LL_BLOCK */
275 KW_VALUE_PAIRS = 10500, /* KW_VALUE_PAIRS */
276 KW_EXCLUDE = 10502, /* KW_EXCLUDE */
277 KW_PAIR = 10503, /* KW_PAIR */
278 KW_KEY = 10504, /* KW_KEY */
279 KW_SCOPE = 10505, /* KW_SCOPE */
280 KW_SHIFT = 10506, /* KW_SHIFT */
281 KW_SHIFT_LEVELS = 10507, /* KW_SHIFT_LEVELS */
282 KW_REKEY = 10508, /* KW_REKEY */
283 KW_ADD_PREFIX = 10509, /* KW_ADD_PREFIX */
284 KW_REPLACE_PREFIX = 10510, /* KW_REPLACE_PREFIX */
285 KW_ON_ERROR = 10511, /* KW_ON_ERROR */
286 KW_RETRIES = 10512, /* KW_RETRIES */
287 KW_FETCH_NO_DATA_DELAY = 10513, /* KW_FETCH_NO_DATA_DELAY */
288 KW_CSV_PARSER = 10515, /* KW_CSV_PARSER */
289 KW_DIALECT = 10516, /* KW_DIALECT */
290 KW_PREFIX = 10517, /* KW_PREFIX */
291 KW_COLUMNS = 10518, /* KW_COLUMNS */
292 KW_DELIMITERS = 10519, /* KW_DELIMITERS */
293 KW_QUOTES = 10520, /* KW_QUOTES */
294 KW_QUOTE_PAIRS = 10521, /* KW_QUOTE_PAIRS */
295 KW_NULL = 10522, /* KW_NULL */
296 KW_CHARS = 10523, /* KW_CHARS */
297 KW_STRINGS = 10524, /* KW_STRINGS */
298 KW_DROP_INVALID = 10525 /* KW_DROP_INVALID */
299 };
300 typedef enum csvparser_tokentype csvparser_token_kind_t;
301 #endif
302 /* Token kinds. */
303 #define CSVPARSER_EMPTY -2
304 #define CSVPARSER_EOF 0
305 #define CSVPARSER_error 256
306 #define CSVPARSER_UNDEF 10514
307 #define LL_CONTEXT_ROOT 1
308 #define LL_CONTEXT_DESTINATION 2
309 #define LL_CONTEXT_SOURCE 3
310 #define LL_CONTEXT_PARSER 4
311 #define LL_CONTEXT_REWRITE 5
312 #define LL_CONTEXT_FILTER 6
313 #define LL_CONTEXT_LOG 7
314 #define LL_CONTEXT_BLOCK_DEF 8
315 #define LL_CONTEXT_BLOCK_REF 9
316 #define LL_CONTEXT_BLOCK_CONTENT 10
317 #define LL_CONTEXT_BLOCK_ARG 11
318 #define LL_CONTEXT_PRAGMA 12
319 #define LL_CONTEXT_FORMAT 13
320 #define LL_CONTEXT_TEMPLATE_FUNC 14
321 #define LL_CONTEXT_INNER_DEST 15
322 #define LL_CONTEXT_INNER_SRC 16
323 #define LL_CONTEXT_CLIENT_PROTO 17
324 #define LL_CONTEXT_SERVER_PROTO 18
325 #define LL_CONTEXT_OPTIONS 19
326 #define LL_CONTEXT_CONFIG 20
327 #define LL_CONTEXT_MAX 21
328 #define KW_SOURCE 10000
329 #define KW_FILTER 10001
330 #define KW_PARSER 10002
331 #define KW_DESTINATION 10003
332 #define KW_LOG 10004
333 #define KW_OPTIONS 10005
334 #define KW_INCLUDE 10006
335 #define KW_BLOCK 10007
336 #define KW_JUNCTION 10008
337 #define KW_CHANNEL 10009
338 #define KW_IF 10010
339 #define KW_ELSE 10011
340 #define KW_ELIF 10012
341 #define KW_INTERNAL 10020
342 #define KW_SYSLOG 10060
343 #define KW_MARK_FREQ 10071
344 #define KW_STATS_FREQ 10072
345 #define KW_STATS_LEVEL 10073
346 #define KW_STATS_LIFETIME 10074
347 #define KW_FLUSH_LINES 10075
348 #define KW_SUPPRESS 10076
349 #define KW_FLUSH_TIMEOUT 10077
350 #define KW_LOG_MSG_SIZE 10078
351 #define KW_FILE_TEMPLATE 10079
352 #define KW_PROTO_TEMPLATE 10080
353 #define KW_MARK_MODE 10081
354 #define KW_ENCODING 10082
355 #define KW_TYPE 10083
356 #define KW_STATS_MAX_DYNAMIC 10084
357 #define KW_MIN_IW_SIZE_PER_READER 10085
358 #define KW_WORKERS 10086
359 #define KW_BATCH_LINES 10087
360 #define KW_BATCH_TIMEOUT 10088
361 #define KW_TRIM_LARGE_MESSAGES 10089
362 #define KW_CHAIN_HOSTNAMES 10090
363 #define KW_NORMALIZE_HOSTNAMES 10091
364 #define KW_KEEP_HOSTNAME 10092
365 #define KW_CHECK_HOSTNAME 10093
366 #define KW_BAD_HOSTNAME 10094
367 #define KW_KEEP_TIMESTAMP 10100
368 #define KW_USE_DNS 10110
369 #define KW_USE_FQDN 10111
370 #define KW_CUSTOM_DOMAIN 10112
371 #define KW_DNS_CACHE 10120
372 #define KW_DNS_CACHE_SIZE 10121
373 #define KW_DNS_CACHE_EXPIRE 10130
374 #define KW_DNS_CACHE_EXPIRE_FAILED 10131
375 #define KW_DNS_CACHE_HOSTS 10132
376 #define KW_PERSIST_ONLY 10140
377 #define KW_USE_RCPTID 10141
378 #define KW_USE_UNIQID 10142
379 #define KW_TZ_CONVERT 10150
380 #define KW_TS_FORMAT 10151
381 #define KW_FRAC_DIGITS 10152
382 #define KW_LOG_FIFO_SIZE 10160
383 #define KW_LOG_FETCH_LIMIT 10162
384 #define KW_LOG_IW_SIZE 10163
385 #define KW_LOG_PREFIX 10164
386 #define KW_PROGRAM_OVERRIDE 10165
387 #define KW_HOST_OVERRIDE 10166
388 #define KW_THROTTLE 10170
389 #define KW_THREADED 10171
390 #define KW_PASS_UNIX_CREDENTIALS 10231
391 #define KW_PERSIST_NAME 10302
392 #define KW_READ_OLD_RECORDS 10304
393 #define KW_USE_SYSLOGNG_PID 10305
394 #define KW_FLAGS 10190
395 #define KW_PAD_SIZE 10200
396 #define KW_TIME_ZONE 10201
397 #define KW_RECV_TIME_ZONE 10202
398 #define KW_SEND_TIME_ZONE 10203
399 #define KW_LOCAL_TIME_ZONE 10204
400 #define KW_FORMAT 10205
401 #define KW_TRUNCATE_SIZE 10206
402 #define KW_TIME_REOPEN 10210
403 #define KW_TIME_REAP 10211
404 #define KW_TIME_SLEEP 10212
405 #define KW_TMPL_ESCAPE 10220
406 #define KW_OPTIONAL 10230
407 #define KW_CREATE_DIRS 10240
408 #define KW_OWNER 10250
409 #define KW_GROUP 10251
410 #define KW_PERM 10252
411 #define KW_DIR_OWNER 10260
412 #define KW_DIR_GROUP 10261
413 #define KW_DIR_PERM 10262
414 #define KW_TEMPLATE 10270
415 #define KW_TEMPLATE_ESCAPE 10271
416 #define KW_TEMPLATE_FUNCTION 10272
417 #define KW_DEFAULT_FACILITY 10300
418 #define KW_DEFAULT_SEVERITY 10301
419 #define KW_PORT 10323
420 #define KW_USE_TIME_RECVD 10340
421 #define KW_FACILITY 10350
422 #define KW_SEVERITY 10351
423 #define KW_HOST 10352
424 #define KW_MATCH 10353
425 #define KW_MESSAGE 10354
426 #define KW_NETMASK 10355
427 #define KW_TAGS 10356
428 #define KW_NETMASK6 10357
429 #define KW_REWRITE 10370
430 #define KW_CONDITION 10371
431 #define KW_VALUE 10372
432 #define KW_YES 10380
433 #define KW_NO 10381
434 #define KW_IFDEF 10410
435 #define KW_ENDIF 10411
436 #define LL_DOTDOT 10420
437 #define LL_DOTDOTDOT 10421
438 #define LL_PRAGMA 10422
439 #define LL_EOL 10423
440 #define LL_ERROR 10424
441 #define LL_ARROW 10425
442 #define LL_IDENTIFIER 10430
443 #define LL_NUMBER 10431
444 #define LL_FLOAT 10432
445 #define LL_STRING 10433
446 #define LL_TOKEN 10434
447 #define LL_BLOCK 10435
448 #define KW_VALUE_PAIRS 10500
449 #define KW_EXCLUDE 10502
450 #define KW_PAIR 10503
451 #define KW_KEY 10504
452 #define KW_SCOPE 10505
453 #define KW_SHIFT 10506
454 #define KW_SHIFT_LEVELS 10507
455 #define KW_REKEY 10508
456 #define KW_ADD_PREFIX 10509
457 #define KW_REPLACE_PREFIX 10510
458 #define KW_ON_ERROR 10511
459 #define KW_RETRIES 10512
460 #define KW_FETCH_NO_DATA_DELAY 10513
461 #define KW_CSV_PARSER 10515
462 #define KW_DIALECT 10516
463 #define KW_PREFIX 10517
464 #define KW_COLUMNS 10518
465 #define KW_DELIMITERS 10519
466 #define KW_QUOTES 10520
467 #define KW_QUOTE_PAIRS 10521
468 #define KW_NULL 10522
469 #define KW_CHARS 10523
470 #define KW_STRINGS 10524
471 #define KW_DROP_INVALID 10525
472
473 /* Value type. */
474 #if ! defined CSVPARSER_STYPE && ! defined CSVPARSER_STYPE_IS_DECLARED
475 typedef CFG_STYPE CSVPARSER_STYPE;
476 # define CSVPARSER_STYPE_IS_TRIVIAL 1
477 # define CSVPARSER_STYPE_IS_DECLARED 1
478 #endif
479
480 /* Location type. */
481 typedef CFG_LTYPE CSVPARSER_LTYPE;
482
483
484
485
486 int csvparser_parse (CfgLexer *lexer, LogParser **instance, gpointer arg);
487
488
489 #endif /* !YY_CSVPARSER_MODULES_CSVPARSER_CSVPARSER_GRAMMAR_H_INCLUDED */
490 /* Symbol kind. */
491 enum yysymbol_kind_t
492 {
493 YYSYMBOL_YYEMPTY = -2,
494 YYSYMBOL_YYEOF = 0, /* "end of file" */
495 YYSYMBOL_YYerror = 1, /* error */
496 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
497 YYSYMBOL_LL_CONTEXT_ROOT = 3, /* LL_CONTEXT_ROOT */
498 YYSYMBOL_LL_CONTEXT_DESTINATION = 4, /* LL_CONTEXT_DESTINATION */
499 YYSYMBOL_LL_CONTEXT_SOURCE = 5, /* LL_CONTEXT_SOURCE */
500 YYSYMBOL_LL_CONTEXT_PARSER = 6, /* LL_CONTEXT_PARSER */
501 YYSYMBOL_LL_CONTEXT_REWRITE = 7, /* LL_CONTEXT_REWRITE */
502 YYSYMBOL_LL_CONTEXT_FILTER = 8, /* LL_CONTEXT_FILTER */
503 YYSYMBOL_LL_CONTEXT_LOG = 9, /* LL_CONTEXT_LOG */
504 YYSYMBOL_LL_CONTEXT_BLOCK_DEF = 10, /* LL_CONTEXT_BLOCK_DEF */
505 YYSYMBOL_LL_CONTEXT_BLOCK_REF = 11, /* LL_CONTEXT_BLOCK_REF */
506 YYSYMBOL_LL_CONTEXT_BLOCK_CONTENT = 12, /* LL_CONTEXT_BLOCK_CONTENT */
507 YYSYMBOL_LL_CONTEXT_BLOCK_ARG = 13, /* LL_CONTEXT_BLOCK_ARG */
508 YYSYMBOL_LL_CONTEXT_PRAGMA = 14, /* LL_CONTEXT_PRAGMA */
509 YYSYMBOL_LL_CONTEXT_FORMAT = 15, /* LL_CONTEXT_FORMAT */
510 YYSYMBOL_LL_CONTEXT_TEMPLATE_FUNC = 16, /* LL_CONTEXT_TEMPLATE_FUNC */
511 YYSYMBOL_LL_CONTEXT_INNER_DEST = 17, /* LL_CONTEXT_INNER_DEST */
512 YYSYMBOL_LL_CONTEXT_INNER_SRC = 18, /* LL_CONTEXT_INNER_SRC */
513 YYSYMBOL_LL_CONTEXT_CLIENT_PROTO = 19, /* LL_CONTEXT_CLIENT_PROTO */
514 YYSYMBOL_LL_CONTEXT_SERVER_PROTO = 20, /* LL_CONTEXT_SERVER_PROTO */
515 YYSYMBOL_LL_CONTEXT_OPTIONS = 21, /* LL_CONTEXT_OPTIONS */
516 YYSYMBOL_LL_CONTEXT_CONFIG = 22, /* LL_CONTEXT_CONFIG */
517 YYSYMBOL_LL_CONTEXT_MAX = 23, /* LL_CONTEXT_MAX */
518 YYSYMBOL_KW_SOURCE = 24, /* KW_SOURCE */
519 YYSYMBOL_KW_FILTER = 25, /* KW_FILTER */
520 YYSYMBOL_KW_PARSER = 26, /* KW_PARSER */
521 YYSYMBOL_KW_DESTINATION = 27, /* KW_DESTINATION */
522 YYSYMBOL_KW_LOG = 28, /* KW_LOG */
523 YYSYMBOL_KW_OPTIONS = 29, /* KW_OPTIONS */
524 YYSYMBOL_KW_INCLUDE = 30, /* KW_INCLUDE */
525 YYSYMBOL_KW_BLOCK = 31, /* KW_BLOCK */
526 YYSYMBOL_KW_JUNCTION = 32, /* KW_JUNCTION */
527 YYSYMBOL_KW_CHANNEL = 33, /* KW_CHANNEL */
528 YYSYMBOL_KW_IF = 34, /* KW_IF */
529 YYSYMBOL_KW_ELSE = 35, /* KW_ELSE */
530 YYSYMBOL_KW_ELIF = 36, /* KW_ELIF */
531 YYSYMBOL_KW_INTERNAL = 37, /* KW_INTERNAL */
532 YYSYMBOL_KW_SYSLOG = 38, /* KW_SYSLOG */
533 YYSYMBOL_KW_MARK_FREQ = 39, /* KW_MARK_FREQ */
534 YYSYMBOL_KW_STATS_FREQ = 40, /* KW_STATS_FREQ */
535 YYSYMBOL_KW_STATS_LEVEL = 41, /* KW_STATS_LEVEL */
536 YYSYMBOL_KW_STATS_LIFETIME = 42, /* KW_STATS_LIFETIME */
537 YYSYMBOL_KW_FLUSH_LINES = 43, /* KW_FLUSH_LINES */
538 YYSYMBOL_KW_SUPPRESS = 44, /* KW_SUPPRESS */
539 YYSYMBOL_KW_FLUSH_TIMEOUT = 45, /* KW_FLUSH_TIMEOUT */
540 YYSYMBOL_KW_LOG_MSG_SIZE = 46, /* KW_LOG_MSG_SIZE */
541 YYSYMBOL_KW_FILE_TEMPLATE = 47, /* KW_FILE_TEMPLATE */
542 YYSYMBOL_KW_PROTO_TEMPLATE = 48, /* KW_PROTO_TEMPLATE */
543 YYSYMBOL_KW_MARK_MODE = 49, /* KW_MARK_MODE */
544 YYSYMBOL_KW_ENCODING = 50, /* KW_ENCODING */
545 YYSYMBOL_KW_TYPE = 51, /* KW_TYPE */
546 YYSYMBOL_KW_STATS_MAX_DYNAMIC = 52, /* KW_STATS_MAX_DYNAMIC */
547 YYSYMBOL_KW_MIN_IW_SIZE_PER_READER = 53, /* KW_MIN_IW_SIZE_PER_READER */
548 YYSYMBOL_KW_WORKERS = 54, /* KW_WORKERS */
549 YYSYMBOL_KW_BATCH_LINES = 55, /* KW_BATCH_LINES */
550 YYSYMBOL_KW_BATCH_TIMEOUT = 56, /* KW_BATCH_TIMEOUT */
551 YYSYMBOL_KW_TRIM_LARGE_MESSAGES = 57, /* KW_TRIM_LARGE_MESSAGES */
552 YYSYMBOL_KW_CHAIN_HOSTNAMES = 58, /* KW_CHAIN_HOSTNAMES */
553 YYSYMBOL_KW_NORMALIZE_HOSTNAMES = 59, /* KW_NORMALIZE_HOSTNAMES */
554 YYSYMBOL_KW_KEEP_HOSTNAME = 60, /* KW_KEEP_HOSTNAME */
555 YYSYMBOL_KW_CHECK_HOSTNAME = 61, /* KW_CHECK_HOSTNAME */
556 YYSYMBOL_KW_BAD_HOSTNAME = 62, /* KW_BAD_HOSTNAME */
557 YYSYMBOL_KW_KEEP_TIMESTAMP = 63, /* KW_KEEP_TIMESTAMP */
558 YYSYMBOL_KW_USE_DNS = 64, /* KW_USE_DNS */
559 YYSYMBOL_KW_USE_FQDN = 65, /* KW_USE_FQDN */
560 YYSYMBOL_KW_CUSTOM_DOMAIN = 66, /* KW_CUSTOM_DOMAIN */
561 YYSYMBOL_KW_DNS_CACHE = 67, /* KW_DNS_CACHE */
562 YYSYMBOL_KW_DNS_CACHE_SIZE = 68, /* KW_DNS_CACHE_SIZE */
563 YYSYMBOL_KW_DNS_CACHE_EXPIRE = 69, /* KW_DNS_CACHE_EXPIRE */
564 YYSYMBOL_KW_DNS_CACHE_EXPIRE_FAILED = 70, /* KW_DNS_CACHE_EXPIRE_FAILED */
565 YYSYMBOL_KW_DNS_CACHE_HOSTS = 71, /* KW_DNS_CACHE_HOSTS */
566 YYSYMBOL_KW_PERSIST_ONLY = 72, /* KW_PERSIST_ONLY */
567 YYSYMBOL_KW_USE_RCPTID = 73, /* KW_USE_RCPTID */
568 YYSYMBOL_KW_USE_UNIQID = 74, /* KW_USE_UNIQID */
569 YYSYMBOL_KW_TZ_CONVERT = 75, /* KW_TZ_CONVERT */
570 YYSYMBOL_KW_TS_FORMAT = 76, /* KW_TS_FORMAT */
571 YYSYMBOL_KW_FRAC_DIGITS = 77, /* KW_FRAC_DIGITS */
572 YYSYMBOL_KW_LOG_FIFO_SIZE = 78, /* KW_LOG_FIFO_SIZE */
573 YYSYMBOL_KW_LOG_FETCH_LIMIT = 79, /* KW_LOG_FETCH_LIMIT */
574 YYSYMBOL_KW_LOG_IW_SIZE = 80, /* KW_LOG_IW_SIZE */
575 YYSYMBOL_KW_LOG_PREFIX = 81, /* KW_LOG_PREFIX */
576 YYSYMBOL_KW_PROGRAM_OVERRIDE = 82, /* KW_PROGRAM_OVERRIDE */
577 YYSYMBOL_KW_HOST_OVERRIDE = 83, /* KW_HOST_OVERRIDE */
578 YYSYMBOL_KW_THROTTLE = 84, /* KW_THROTTLE */
579 YYSYMBOL_KW_THREADED = 85, /* KW_THREADED */
580 YYSYMBOL_KW_PASS_UNIX_CREDENTIALS = 86, /* KW_PASS_UNIX_CREDENTIALS */
581 YYSYMBOL_KW_PERSIST_NAME = 87, /* KW_PERSIST_NAME */
582 YYSYMBOL_KW_READ_OLD_RECORDS = 88, /* KW_READ_OLD_RECORDS */
583 YYSYMBOL_KW_USE_SYSLOGNG_PID = 89, /* KW_USE_SYSLOGNG_PID */
584 YYSYMBOL_KW_FLAGS = 90, /* KW_FLAGS */
585 YYSYMBOL_KW_PAD_SIZE = 91, /* KW_PAD_SIZE */
586 YYSYMBOL_KW_TIME_ZONE = 92, /* KW_TIME_ZONE */
587 YYSYMBOL_KW_RECV_TIME_ZONE = 93, /* KW_RECV_TIME_ZONE */
588 YYSYMBOL_KW_SEND_TIME_ZONE = 94, /* KW_SEND_TIME_ZONE */
589 YYSYMBOL_KW_LOCAL_TIME_ZONE = 95, /* KW_LOCAL_TIME_ZONE */
590 YYSYMBOL_KW_FORMAT = 96, /* KW_FORMAT */
591 YYSYMBOL_KW_TRUNCATE_SIZE = 97, /* KW_TRUNCATE_SIZE */
592 YYSYMBOL_KW_TIME_REOPEN = 98, /* KW_TIME_REOPEN */
593 YYSYMBOL_KW_TIME_REAP = 99, /* KW_TIME_REAP */
594 YYSYMBOL_KW_TIME_SLEEP = 100, /* KW_TIME_SLEEP */
595 YYSYMBOL_KW_TMPL_ESCAPE = 101, /* KW_TMPL_ESCAPE */
596 YYSYMBOL_KW_OPTIONAL = 102, /* KW_OPTIONAL */
597 YYSYMBOL_KW_CREATE_DIRS = 103, /* KW_CREATE_DIRS */
598 YYSYMBOL_KW_OWNER = 104, /* KW_OWNER */
599 YYSYMBOL_KW_GROUP = 105, /* KW_GROUP */
600 YYSYMBOL_KW_PERM = 106, /* KW_PERM */
601 YYSYMBOL_KW_DIR_OWNER = 107, /* KW_DIR_OWNER */
602 YYSYMBOL_KW_DIR_GROUP = 108, /* KW_DIR_GROUP */
603 YYSYMBOL_KW_DIR_PERM = 109, /* KW_DIR_PERM */
604 YYSYMBOL_KW_TEMPLATE = 110, /* KW_TEMPLATE */
605 YYSYMBOL_KW_TEMPLATE_ESCAPE = 111, /* KW_TEMPLATE_ESCAPE */
606 YYSYMBOL_KW_TEMPLATE_FUNCTION = 112, /* KW_TEMPLATE_FUNCTION */
607 YYSYMBOL_KW_DEFAULT_FACILITY = 113, /* KW_DEFAULT_FACILITY */
608 YYSYMBOL_KW_DEFAULT_SEVERITY = 114, /* KW_DEFAULT_SEVERITY */
609 YYSYMBOL_KW_PORT = 115, /* KW_PORT */
610 YYSYMBOL_KW_USE_TIME_RECVD = 116, /* KW_USE_TIME_RECVD */
611 YYSYMBOL_KW_FACILITY = 117, /* KW_FACILITY */
612 YYSYMBOL_KW_SEVERITY = 118, /* KW_SEVERITY */
613 YYSYMBOL_KW_HOST = 119, /* KW_HOST */
614 YYSYMBOL_KW_MATCH = 120, /* KW_MATCH */
615 YYSYMBOL_KW_MESSAGE = 121, /* KW_MESSAGE */
616 YYSYMBOL_KW_NETMASK = 122, /* KW_NETMASK */
617 YYSYMBOL_KW_TAGS = 123, /* KW_TAGS */
618 YYSYMBOL_KW_NETMASK6 = 124, /* KW_NETMASK6 */
619 YYSYMBOL_KW_REWRITE = 125, /* KW_REWRITE */
620 YYSYMBOL_KW_CONDITION = 126, /* KW_CONDITION */
621 YYSYMBOL_KW_VALUE = 127, /* KW_VALUE */
622 YYSYMBOL_KW_YES = 128, /* KW_YES */
623 YYSYMBOL_KW_NO = 129, /* KW_NO */
624 YYSYMBOL_KW_IFDEF = 130, /* KW_IFDEF */
625 YYSYMBOL_KW_ENDIF = 131, /* KW_ENDIF */
626 YYSYMBOL_LL_DOTDOT = 132, /* LL_DOTDOT */
627 YYSYMBOL_LL_DOTDOTDOT = 133, /* LL_DOTDOTDOT */
628 YYSYMBOL_LL_PRAGMA = 134, /* LL_PRAGMA */
629 YYSYMBOL_LL_EOL = 135, /* LL_EOL */
630 YYSYMBOL_LL_ERROR = 136, /* LL_ERROR */
631 YYSYMBOL_LL_ARROW = 137, /* LL_ARROW */
632 YYSYMBOL_LL_IDENTIFIER = 138, /* LL_IDENTIFIER */
633 YYSYMBOL_LL_NUMBER = 139, /* LL_NUMBER */
634 YYSYMBOL_LL_FLOAT = 140, /* LL_FLOAT */
635 YYSYMBOL_LL_STRING = 141, /* LL_STRING */
636 YYSYMBOL_LL_TOKEN = 142, /* LL_TOKEN */
637 YYSYMBOL_LL_BLOCK = 143, /* LL_BLOCK */
638 YYSYMBOL_KW_VALUE_PAIRS = 144, /* KW_VALUE_PAIRS */
639 YYSYMBOL_KW_EXCLUDE = 145, /* KW_EXCLUDE */
640 YYSYMBOL_KW_PAIR = 146, /* KW_PAIR */
641 YYSYMBOL_KW_KEY = 147, /* KW_KEY */
642 YYSYMBOL_KW_SCOPE = 148, /* KW_SCOPE */
643 YYSYMBOL_KW_SHIFT = 149, /* KW_SHIFT */
644 YYSYMBOL_KW_SHIFT_LEVELS = 150, /* KW_SHIFT_LEVELS */
645 YYSYMBOL_KW_REKEY = 151, /* KW_REKEY */
646 YYSYMBOL_KW_ADD_PREFIX = 152, /* KW_ADD_PREFIX */
647 YYSYMBOL_KW_REPLACE_PREFIX = 153, /* KW_REPLACE_PREFIX */
648 YYSYMBOL_KW_ON_ERROR = 154, /* KW_ON_ERROR */
649 YYSYMBOL_KW_RETRIES = 155, /* KW_RETRIES */
650 YYSYMBOL_KW_FETCH_NO_DATA_DELAY = 156, /* KW_FETCH_NO_DATA_DELAY */
651 YYSYMBOL_KW_CSV_PARSER = 157, /* KW_CSV_PARSER */
652 YYSYMBOL_KW_DIALECT = 158, /* KW_DIALECT */
653 YYSYMBOL_KW_PREFIX = 159, /* KW_PREFIX */
654 YYSYMBOL_KW_COLUMNS = 160, /* KW_COLUMNS */
655 YYSYMBOL_KW_DELIMITERS = 161, /* KW_DELIMITERS */
656 YYSYMBOL_KW_QUOTES = 162, /* KW_QUOTES */
657 YYSYMBOL_KW_QUOTE_PAIRS = 163, /* KW_QUOTE_PAIRS */
658 YYSYMBOL_KW_NULL = 164, /* KW_NULL */
659 YYSYMBOL_KW_CHARS = 165, /* KW_CHARS */
660 YYSYMBOL_KW_STRINGS = 166, /* KW_STRINGS */
661 YYSYMBOL_KW_DROP_INVALID = 167, /* KW_DROP_INVALID */
662 YYSYMBOL_168_ = 168, /* '(' */
663 YYSYMBOL_169_ = 169, /* ')' */
664 YYSYMBOL_170_ = 170, /* '{' */
665 YYSYMBOL_171_ = 171, /* '}' */
666 YYSYMBOL_172_ = 172, /* ';' */
667 YYSYMBOL_173_ = 173, /* ':' */
668 YYSYMBOL_YYACCEPT = 174, /* $accept */
669 YYSYMBOL_start = 175, /* start */
670 YYSYMBOL_parser_expr_csv = 176, /* parser_expr_csv */
671 YYSYMBOL_177_1 = 177, /* $@1 */
672 YYSYMBOL_parser_csv_opts = 178, /* parser_csv_opts */
673 YYSYMBOL_parser_csv_opt = 179, /* parser_csv_opt */
674 YYSYMBOL_parser_csv_delimiters = 180, /* parser_csv_delimiters */
675 YYSYMBOL_parser_csv_delimiters_opts = 181, /* parser_csv_delimiters_opts */
676 YYSYMBOL_parser_csv_delimiters_opt = 182, /* parser_csv_delimiters_opt */
677 YYSYMBOL_parser_csv_flags = 183, /* parser_csv_flags */
678 YYSYMBOL_parser_csv_flag = 184, /* parser_csv_flag */
679 YYSYMBOL_parser_csv_dialect = 185, /* parser_csv_dialect */
680 YYSYMBOL_string = 186, /* string */
681 YYSYMBOL_yesno = 187, /* yesno */
682 YYSYMBOL_normalized_flag = 188, /* normalized_flag */
683 YYSYMBOL_string_list = 189, /* string_list */
684 YYSYMBOL_string_list_build = 190, /* string_list_build */
685 YYSYMBOL_parser_opt = 191 /* parser_opt */
686 };
687 typedef enum yysymbol_kind_t yysymbol_kind_t;
688
689
690
691 /* Unqualified %code blocks. */
692 #line 30 "modules/csvparser/csvparser-grammar.y"
693
694
695 #include "csvparser.h"
696 #include "cfg-parser.h"
697 #include "cfg-grammar-internal.h"
698 #include "syslog-names.h"
699 #include "messages.h"
700
701 #line 58 "modules/csvparser/csvparser-grammar.y"
702
703
704 # define YYLLOC_DEFAULT(Current, Rhs, N) \
705 do { \
706 if (N) \
707 { \
708 (Current).level = YYRHSLOC(Rhs, 1).level; \
709 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
710 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
711 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
712 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
713 } \
714 else \
715 { \
716 (Current).level = YYRHSLOC(Rhs, 0).level; \
717 (Current).first_line = (Current).last_line = \
718 YYRHSLOC (Rhs, 0).last_line; \
719 (Current).first_column = (Current).last_column = \
720 YYRHSLOC (Rhs, 0).last_column; \
721 } \
722 } while (0)
723
724 #define CHECK_ERROR_WITHOUT_MESSAGE(val, token) do { \
725 if (!(val)) \
726 { \
727 YYERROR; \
728 } \
729 } while (0)
730
731 #define CHECK_ERROR(val, token, errorfmt, ...) do { \
732 if (!(val)) \
733 { \
734 if (errorfmt) \
735 { \
736 gchar __buf[256]; \
737 g_snprintf(__buf, sizeof(__buf), errorfmt, ## __VA_ARGS__); \
738 yyerror(& (token), lexer, NULL, NULL, __buf); \
739 } \
740 YYERROR; \
741 } \
742 } while (0)
743
744 #define CHECK_ERROR_GERROR(val, token, error, errorfmt, ...) do { \
745 if (!(val)) \
746 { \
747 if (errorfmt) \
748 { \
749 gchar __buf[256]; \
750 g_snprintf(__buf, sizeof(__buf), errorfmt ", error=%s", ## __VA_ARGS__, error->message); \
751 yyerror(& (token), lexer, NULL, NULL, __buf); \
752 } \
753 g_clear_error(&error); \
754 YYERROR; \
755 } \
756 } while (0)
757
758 #define YYMAXDEPTH 20000
759
760
761
762 #line 763 "modules/csvparser/csvparser-grammar.c"
763
764 #ifdef short
765 # undef short
766 #endif
767
768 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
769 <limits.h> and (if available) <stdint.h> are included
770 so that the code can choose integer types of a good width. */
771
772 #ifndef __PTRDIFF_MAX__
773 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
774 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
775 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
776 # define YY_STDINT_H
777 # endif
778 #endif
779
780 /* Narrow types that promote to a signed type and that can represent a
781 signed or unsigned integer of at least N bits. In tables they can
782 save space and decrease cache pressure. Promoting to a signed type
783 helps avoid bugs in integer arithmetic. */
784
785 #ifdef __INT_LEAST8_MAX__
786 typedef __INT_LEAST8_TYPE__ yytype_int8;
787 #elif defined YY_STDINT_H
788 typedef int_least8_t yytype_int8;
789 #else
790 typedef signed char yytype_int8;
791 #endif
792
793 #ifdef __INT_LEAST16_MAX__
794 typedef __INT_LEAST16_TYPE__ yytype_int16;
795 #elif defined YY_STDINT_H
796 typedef int_least16_t yytype_int16;
797 #else
798 typedef short yytype_int16;
799 #endif
800
801 /* Work around bug in HP-UX 11.23, which defines these macros
802 incorrectly for preprocessor constants. This workaround can likely
803 be removed in 2023, as HPE has promised support for HP-UX 11.23
804 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
805 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
806 #ifdef __hpux
807 # undef UINT_LEAST8_MAX
808 # undef UINT_LEAST16_MAX
809 # define UINT_LEAST8_MAX 255
810 # define UINT_LEAST16_MAX 65535
811 #endif
812
813 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
814 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
815 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
816 && UINT_LEAST8_MAX <= INT_MAX)
817 typedef uint_least8_t yytype_uint8;
818 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
819 typedef unsigned char yytype_uint8;
820 #else
821 typedef short yytype_uint8;
822 #endif
823
824 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
825 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
826 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
827 && UINT_LEAST16_MAX <= INT_MAX)
828 typedef uint_least16_t yytype_uint16;
829 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
830 typedef unsigned short yytype_uint16;
831 #else
832 typedef int yytype_uint16;
833 #endif
834
835 #ifndef YYPTRDIFF_T
836 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
837 # define YYPTRDIFF_T __PTRDIFF_TYPE__
838 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
839 # elif defined PTRDIFF_MAX
840 # ifndef ptrdiff_t
841 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
842 # endif
843 # define YYPTRDIFF_T ptrdiff_t
844 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
845 # else
846 # define YYPTRDIFF_T long
847 # define YYPTRDIFF_MAXIMUM LONG_MAX
848 # endif
849 #endif
850
851 #ifndef YYSIZE_T
852 # ifdef __SIZE_TYPE__
853 # define YYSIZE_T __SIZE_TYPE__
854 # elif defined size_t
855 # define YYSIZE_T size_t
856 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
857 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
858 # define YYSIZE_T size_t
859 # else
860 # define YYSIZE_T unsigned
861 # endif
862 #endif
863
864 #define YYSIZE_MAXIMUM \
865 YY_CAST (YYPTRDIFF_T, \
866 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
867 ? YYPTRDIFF_MAXIMUM \
868 : YY_CAST (YYSIZE_T, -1)))
869
870 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
871
872
873 /* Stored state numbers (used for stacks). */
874 typedef yytype_int8 yy_state_t;
875
876 /* State numbers in computations. */
877 typedef int yy_state_fast_t;
878
879 #ifndef YY_
880 # if defined YYENABLE_NLS && YYENABLE_NLS
881 # if ENABLE_NLS
882 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
883 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
884 # endif
885 # endif
886 # ifndef YY_
887 # define YY_(Msgid) Msgid
888 # endif
889 #endif
890
891
892 #ifndef YY_ATTRIBUTE_PURE
893 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
894 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
895 # else
896 # define YY_ATTRIBUTE_PURE
897 # endif
898 #endif
899
900 #ifndef YY_ATTRIBUTE_UNUSED
901 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
902 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
903 # else
904 # define YY_ATTRIBUTE_UNUSED
905 # endif
906 #endif
907
908 /* Suppress unused-variable warnings by "using" E. */
909 #if ! defined lint || defined __GNUC__
910 # define YY_USE(E) ((void) (E))
911 #else
912 # define YY_USE(E) /* empty */
913 #endif
914
915 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
916 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
917 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
918 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
919 _Pragma ("GCC diagnostic push") \
920 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
921 # else
922 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
923 _Pragma ("GCC diagnostic push") \
924 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
925 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
926 # endif
927 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
928 _Pragma ("GCC diagnostic pop")
929 #else
930 # define YY_INITIAL_VALUE(Value) Value
931 #endif
932 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
933 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
934 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
935 #endif
936 #ifndef YY_INITIAL_VALUE
937 # define YY_INITIAL_VALUE(Value) /* Nothing. */
938 #endif
939
940 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
941 # define YY_IGNORE_USELESS_CAST_BEGIN \
942 _Pragma ("GCC diagnostic push") \
943 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
944 # define YY_IGNORE_USELESS_CAST_END \
945 _Pragma ("GCC diagnostic pop")
946 #endif
947 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
948 # define YY_IGNORE_USELESS_CAST_BEGIN
949 # define YY_IGNORE_USELESS_CAST_END
950 #endif
951
952
953 #define YY_ASSERT(E) ((void) (0 && (E)))
954
955 #if 1
956
957 /* The parser invokes alloca or malloc; define the necessary symbols. */
958
959 # ifdef YYSTACK_USE_ALLOCA
960 # if YYSTACK_USE_ALLOCA
961 # ifdef __GNUC__
962 # define YYSTACK_ALLOC __builtin_alloca
963 # elif defined __BUILTIN_VA_ARG_INCR
964 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
965 # elif defined _AIX
966 # define YYSTACK_ALLOC __alloca
967 # elif defined _MSC_VER
968 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
969 # define alloca _alloca
970 # else
971 # define YYSTACK_ALLOC alloca
972 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
973 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
974 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
975 # ifndef EXIT_SUCCESS
976 # define EXIT_SUCCESS 0
977 # endif
978 # endif
979 # endif
980 # endif
981 # endif
982
983 # ifdef YYSTACK_ALLOC
984 /* Pacify GCC's 'empty if-body' warning. */
985 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
986 # ifndef YYSTACK_ALLOC_MAXIMUM
987 /* The OS might guarantee only one guard page at the bottom of the stack,
988 and a page size can be as small as 4096 bytes. So we cannot safely
989 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
990 to allow for a few compiler-allocated temporary stack slots. */
991 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
992 # endif
993 # else
994 # define YYSTACK_ALLOC YYMALLOC
995 # define YYSTACK_FREE YYFREE
996 # ifndef YYSTACK_ALLOC_MAXIMUM
997 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
998 # endif
999 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1000 && ! ((defined YYMALLOC || defined malloc) \
1001 && (defined YYFREE || defined free)))
1002 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1003 # ifndef EXIT_SUCCESS
1004 # define EXIT_SUCCESS 0
1005 # endif
1006 # endif
1007 # ifndef YYMALLOC
1008 # define YYMALLOC malloc
1009 # if ! defined malloc && ! defined EXIT_SUCCESS
1010 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1011 # endif
1012 # endif
1013 # ifndef YYFREE
1014 # define YYFREE free
1015 # if ! defined free && ! defined EXIT_SUCCESS
1016 void free (void *); /* INFRINGES ON USER NAME SPACE */
1017 # endif
1018 # endif
1019 # endif
1020 #endif /* 1 */
1021
1022 #if (! defined yyoverflow \
1023 && (! defined __cplusplus \
1024 || (defined CSVPARSER_LTYPE_IS_TRIVIAL && CSVPARSER_LTYPE_IS_TRIVIAL \
1025 && defined CSVPARSER_STYPE_IS_TRIVIAL && CSVPARSER_STYPE_IS_TRIVIAL)))
1026
1027 /* A type that is properly aligned for any stack member. */
1028 union yyalloc
1029 {
1030 yy_state_t yyss_alloc;
1031 YYSTYPE yyvs_alloc;
1032 YYLTYPE yyls_alloc;
1033 };
1034
1035 /* The size of the maximum gap between one aligned stack and the next. */
1036 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1037
1038 /* The size of an array large to enough to hold all stacks, each with
1039 N elements. */
1040 # define YYSTACK_BYTES(N) \
1041 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1042 + YYSIZEOF (YYLTYPE)) \
1043 + 2 * YYSTACK_GAP_MAXIMUM)
1044
1045 # define YYCOPY_NEEDED 1
1046
1047 /* Relocate STACK from its old location to the new one. The
1048 local variables YYSIZE and YYSTACKSIZE give the old and new number of
1049 elements in the stack, and YYPTR gives the new location of the
1050 stack. Advance YYPTR to a properly aligned location for the next
1051 stack. */
1052 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1053 do \
1054 { \
1055 YYPTRDIFF_T yynewbytes; \
1056 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1057 Stack = &yyptr->Stack_alloc; \
1058 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1059 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1060 } \
1061 while (0)
1062
1063 #endif
1064
1065 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1066 /* Copy COUNT objects from SRC to DST. The source and destination do
1067 not overlap. */
1068 # ifndef YYCOPY
1069 # if defined __GNUC__ && 1 < __GNUC__
1070 # define YYCOPY(Dst, Src, Count) \
1071 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1072 # else
1073 # define YYCOPY(Dst, Src, Count) \
1074 do \
1075 { \
1076 YYPTRDIFF_T yyi; \
1077 for (yyi = 0; yyi < (Count); yyi++) \
1078 (Dst)[yyi] = (Src)[yyi]; \
1079 } \
1080 while (0)
1081 # endif
1082 # endif
1083 #endif /* !YYCOPY_NEEDED */
1084
1085 /* YYFINAL -- State number of the termination state. */
1086 #define YYFINAL 5
1087 /* YYLAST -- Last index in YYTABLE. */
1088 #define YYLAST 77
1089
1090 /* YYNTOKENS -- Number of terminals. */
1091 #define YYNTOKENS 174
1092 /* YYNNTS -- Number of nonterminals. */
1093 #define YYNNTS 18
1094 /* YYNRULES -- Number of rules. */
1095 #define YYNRULES 37
1096 /* YYNSTATES -- Number of states. */
1097 #define YYNSTATES 79
1098
1099 /* YYMAXUTOK -- Last valid token kind. */
1100 #define YYMAXUTOK 10525
1101
1102
1103 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1104 as returned by yylex, with out-of-bounds checking. */
1105 #define YYTRANSLATE(YYX) \
1106 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1107 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1108 : YYSYMBOL_YYUNDEF)
1109
1110 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1111 as returned by yylex. */
1112 static const yytype_uint8 yytranslate[] =
1113 {
1114 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1115 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1116 22, 23, 2, 2, 2, 2, 2, 2, 2, 2,
1117 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1118 168, 169, 2, 2, 2, 2, 2, 2, 2, 2,
1119 2, 2, 2, 2, 2, 2, 2, 2, 173, 172,
1120 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1121 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1122 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1123 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1124 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1125 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1126 2, 2, 2, 170, 2, 171, 2, 2, 2, 2,
1127 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1128 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1129 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1130 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1131 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1132 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1133 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1134 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1135 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1137 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1138 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1139 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
1140 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1141 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1142 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1143 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1144 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1145 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1146 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1147 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1148 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1149 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1150 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1151 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1152 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1153 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1154 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1155 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1156 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1162 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1163 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1164 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1165 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1166 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1168 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1169 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1170 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1171 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1172 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1173 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1174 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1175 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1176 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1178 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1179 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1180 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1181 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1182 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1183 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1184 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1185 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1186 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1187 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1188 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1189 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1195 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1197 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1199 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1201 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1204 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1208 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1209 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1211 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1214 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1217 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1218 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1219 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1220 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1221 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1224 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1225 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1226 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1227 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1228 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1229 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1230 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1232 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1233 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1240 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1241 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1242 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1243 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1244 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1245 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1246 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1247 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1248 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1249 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1250 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1251 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1252 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1253 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1254 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1255 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1256 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1257 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1258 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1260 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1263 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1264 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1265 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1267 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1268 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1269 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1270 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1271 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1272 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1273 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1275 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1276 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1277 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1278 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1279 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1280 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1281 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1282 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1283 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1284 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1285 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1286 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1287 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1288 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1289 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1290 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1291 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1292 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1293 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1294 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1295 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1296 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1297 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1298 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1299 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1300 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1301 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1302 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1303 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1304 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1305 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1306 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1307 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1308 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1309 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1310 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1311 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1312 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1313 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1314 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1315 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1316 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1318 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1319 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1320 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1321 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1323 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1324 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1325 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1326 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1327 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1328 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1329 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1330 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1331 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1332 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1333 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1334 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1335 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1336 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1337 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1340 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1341 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1342 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1343 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1356 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1357 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1358 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1359 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1360 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1361 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1362 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1363 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1364 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1365 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1366 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1367 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1368 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1369 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1370 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1371 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1372 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1373 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1374 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1375 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1376 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1377 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1378 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1379 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1380 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1381 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1382 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1383 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1384 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1385 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1386 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1388 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1389 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1391 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1393 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1395 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1396 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1397 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1401 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1402 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1404 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1405 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1407 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1408 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1416 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1417 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1452 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1453 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1454 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1455 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1456 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1457 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1458 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1459 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1460 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1462 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1463 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1464 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1465 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1466 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1467 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1468 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1469 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1472 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1473 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1476 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1479 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1480 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1481 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1482 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1483 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1484 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1485 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1486 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1487 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1488 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1489 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1490 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1491 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1492 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1493 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1494 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1497 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1500 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1519 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1520 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1521 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1522 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1524 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1525 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1528 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1532 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1533 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1534 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1535 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1536 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1538 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1577 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1578 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1581 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1582 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1583 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1584 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1585 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1586 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1587 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1588 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1589 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1590 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1592 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1593 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1594 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1595 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1596 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1597 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1598 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1599 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1600 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1601 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1602 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1603 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1604 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1605 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1606 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1607 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1608 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1609 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1610 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1611 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1612 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1613 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1615 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1616 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1622 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1625 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1628 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1629 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1630 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1633 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1634 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1635 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1639 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1640 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1644 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1647 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1649 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1650 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1656 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1660 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1661 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1662 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1664 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1665 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1666 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1669 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1670 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1671 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1675 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1677 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1678 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1679 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1680 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1681 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1682 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1683 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1684 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1687 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1688 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1689 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1690 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1691 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1692 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1693 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1694 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1695 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1696 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1697 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1698 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1699 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1700 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1701 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1702 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1703 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1704 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1705 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1706 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1707 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1708 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1709 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1710 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1711 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1712 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1713 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1714 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1715 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1716 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1717 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1718 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1719 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1720 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1721 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1722 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1723 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1724 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1725 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1726 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1727 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1728 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1729 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1730 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1731 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1732 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1733 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1734 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1735 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1736 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1737 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1738 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1739 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1740 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1741 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1742 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1743 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1744 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1745 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1746 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1747 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1748 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1749 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1750 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1751 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1752 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1753 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1754 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1755 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1756 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1757 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1761 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1762 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1765 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1766 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1767 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1769 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1770 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1771 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1772 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1800 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1804 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1805 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1806 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1807 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1808 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1809 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1811 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1812 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1813 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1814 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1815 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1816 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1817 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1818 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1819 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1820 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1821 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1822 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1823 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1824 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1825 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1826 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1827 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1828 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1829 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1830 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1831 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1832 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1833 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1834 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1835 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1836 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1837 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1838 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1839 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1840 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1841 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1842 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1843 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1844 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1845 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1846 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1847 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1848 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1849 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1850 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1851 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1852 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1853 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1854 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1855 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1856 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1857 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1858 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1859 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1860 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1861 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1862 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1863 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1864 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1865 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1866 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1867 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1868 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1869 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1870 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1871 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1872 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1873 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1874 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1875 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1876 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1877 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1878 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1879 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1881 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1882 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1883 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1884 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1885 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1886 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1887 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1888 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1889 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1890 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1891 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1892 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1893 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1894 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1895 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1896 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1897 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1898 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1899 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1900 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1901 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1902 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1903 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1905 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1906 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1907 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1908 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1909 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1910 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1911 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1912 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1914 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1915 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1916 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1917 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1918 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1919 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1920 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1921 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1922 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1923 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1924 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1926 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1927 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1928 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1929 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1930 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1931 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1932 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1933 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1934 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1935 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1936 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1937 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1938 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1939 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1940 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1941 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1942 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1943 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1944 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1945 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1946 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1947 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1948 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1949 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1950 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1951 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1952 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1953 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1954 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1955 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1956 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1957 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1958 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1959 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1960 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1961 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1962 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1963 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1968 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1969 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1973 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1974 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1975 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1976 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1977 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1978 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1979 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1980 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1981 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1982 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1983 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1984 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1985 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1986 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1987 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1988 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1989 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1990 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1991 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1992 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1993 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1994 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1995 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1996 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1997 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1998 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1999 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2000 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2001 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2002 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2003 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2004 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2005 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2006 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2007 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2008 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2009 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2010 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2011 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2012 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2013 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2014 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2015 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2016 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2017 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2018 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2019 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2020 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2021 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2022 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2023 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2024 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2025 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2026 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2027 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2028 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2029 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2030 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2031 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2032 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2033 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2034 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2035 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2036 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2037 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2038 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2039 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2040 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2041 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2042 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2043 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2044 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2045 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2046 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2047 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2048 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2049 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2050 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2051 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2053 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2054 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2055 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2056 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2057 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2058 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2059 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2060 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2061 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2062 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2063 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2064 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2065 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2066 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2067 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2068 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2069 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2070 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2071 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2073 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2074 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2075 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2076 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2077 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2078 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2079 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2080 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2081 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2082 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2083 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2084 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2085 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2086 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2087 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2088 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2089 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2090 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2091 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2092 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2093 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2094 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2095 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2096 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2097 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2098 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2099 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2100 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2101 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2102 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2103 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2104 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2105 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2106 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2107 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2109 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2110 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2111 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2112 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2113 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2114 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2115 34, 35, 36, 2, 2, 2, 2, 2, 2, 2,
2116 37, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2117 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2118 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2119 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2120 38, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2121 2, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2122 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2123 58, 59, 60, 61, 62, 2, 2, 2, 2, 2,
2124 63, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2125 64, 65, 66, 2, 2, 2, 2, 2, 2, 2,
2126 67, 68, 2, 2, 2, 2, 2, 2, 2, 2,
2127 69, 70, 71, 2, 2, 2, 2, 2, 2, 2,
2128 72, 73, 74, 2, 2, 2, 2, 2, 2, 2,
2129 75, 76, 77, 2, 2, 2, 2, 2, 2, 2,
2130 78, 2, 79, 80, 81, 82, 83, 2, 2, 2,
2131 84, 85, 2, 2, 2, 2, 2, 2, 2, 2,
2132 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2133 90, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2134 91, 92, 93, 94, 95, 96, 97, 2, 2, 2,
2135 98, 99, 100, 2, 2, 2, 2, 2, 2, 2,
2136 101, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2137 102, 86, 2, 2, 2, 2, 2, 2, 2, 2,
2138 103, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2139 104, 105, 106, 2, 2, 2, 2, 2, 2, 2,
2140 107, 108, 109, 2, 2, 2, 2, 2, 2, 2,
2141 110, 111, 112, 2, 2, 2, 2, 2, 2, 2,
2142 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2143 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2144 113, 114, 87, 2, 88, 89, 2, 2, 2, 2,
2145 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2146 2, 2, 2, 115, 2, 2, 2, 2, 2, 2,
2147 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2148 116, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2149 117, 118, 119, 120, 121, 122, 123, 124, 2, 2,
2150 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2151 125, 126, 127, 2, 2, 2, 2, 2, 2, 2,
2152 128, 129, 2, 2, 2, 2, 2, 2, 2, 2,
2153 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2154 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2155 130, 131, 2, 2, 2, 2, 2, 2, 2, 2,
2156 132, 133, 134, 135, 136, 137, 2, 2, 2, 2,
2157 138, 139, 140, 141, 142, 143, 2, 2, 2, 2,
2158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2162 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2163 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2164 144, 2, 145, 146, 147, 148, 149, 150, 151, 152,
2165 153, 154, 155, 156, 2, 157, 158, 159, 160, 161,
2166 162, 163, 164, 165, 166, 167
2167 };
2168
2169 #if CSVPARSER_DEBUG
2170 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
2171 static const yytype_int16 yyrline[] =
2172 {
2173 0, 417, 417, 423, 422, 432, 433, 438, 439, 440,
2174 442, 443, 444, 445, 446, 447, 448, 452, 453, 457,
2175 458, 462, 463, 467, 474, 478, 479, 483, 753, 754,
2176 758, 759, 760, 847, 851, 855, 856, 888
2177 };
2178 #endif
2179
2180 /** Accessing symbol of state STATE. */
2181 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2182
2183 #if 1
2184 /* The user-facing name of the symbol whose (internal) number is
2185 YYSYMBOL. No bounds checking. */
2186 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2187
2188 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2189 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2190 static const char *const yytname[] =
2191 {
2192 "\"end of file\"", "error", "\"invalid token\"", "LL_CONTEXT_ROOT",
2193 "LL_CONTEXT_DESTINATION", "LL_CONTEXT_SOURCE", "LL_CONTEXT_PARSER",
2194 "LL_CONTEXT_REWRITE", "LL_CONTEXT_FILTER", "LL_CONTEXT_LOG",
2195 "LL_CONTEXT_BLOCK_DEF", "LL_CONTEXT_BLOCK_REF",
2196 "LL_CONTEXT_BLOCK_CONTENT", "LL_CONTEXT_BLOCK_ARG", "LL_CONTEXT_PRAGMA",
2197 "LL_CONTEXT_FORMAT", "LL_CONTEXT_TEMPLATE_FUNC", "LL_CONTEXT_INNER_DEST",
2198 "LL_CONTEXT_INNER_SRC", "LL_CONTEXT_CLIENT_PROTO",
2199 "LL_CONTEXT_SERVER_PROTO", "LL_CONTEXT_OPTIONS", "LL_CONTEXT_CONFIG",
2200 "LL_CONTEXT_MAX", "KW_SOURCE", "KW_FILTER", "KW_PARSER",
2201 "KW_DESTINATION", "KW_LOG", "KW_OPTIONS", "KW_INCLUDE", "KW_BLOCK",
2202 "KW_JUNCTION", "KW_CHANNEL", "KW_IF", "KW_ELSE", "KW_ELIF",
2203 "KW_INTERNAL", "KW_SYSLOG", "KW_MARK_FREQ", "KW_STATS_FREQ",
2204 "KW_STATS_LEVEL", "KW_STATS_LIFETIME", "KW_FLUSH_LINES", "KW_SUPPRESS",
2205 "KW_FLUSH_TIMEOUT", "KW_LOG_MSG_SIZE", "KW_FILE_TEMPLATE",
2206 "KW_PROTO_TEMPLATE", "KW_MARK_MODE", "KW_ENCODING", "KW_TYPE",
2207 "KW_STATS_MAX_DYNAMIC", "KW_MIN_IW_SIZE_PER_READER", "KW_WORKERS",
2208 "KW_BATCH_LINES", "KW_BATCH_TIMEOUT", "KW_TRIM_LARGE_MESSAGES",
2209 "KW_CHAIN_HOSTNAMES", "KW_NORMALIZE_HOSTNAMES", "KW_KEEP_HOSTNAME",
2210 "KW_CHECK_HOSTNAME", "KW_BAD_HOSTNAME", "KW_KEEP_TIMESTAMP",
2211 "KW_USE_DNS", "KW_USE_FQDN", "KW_CUSTOM_DOMAIN", "KW_DNS_CACHE",
2212 "KW_DNS_CACHE_SIZE", "KW_DNS_CACHE_EXPIRE", "KW_DNS_CACHE_EXPIRE_FAILED",
2213 "KW_DNS_CACHE_HOSTS", "KW_PERSIST_ONLY", "KW_USE_RCPTID",
2214 "KW_USE_UNIQID", "KW_TZ_CONVERT", "KW_TS_FORMAT", "KW_FRAC_DIGITS",
2215 "KW_LOG_FIFO_SIZE", "KW_LOG_FETCH_LIMIT", "KW_LOG_IW_SIZE",
2216 "KW_LOG_PREFIX", "KW_PROGRAM_OVERRIDE", "KW_HOST_OVERRIDE",
2217 "KW_THROTTLE", "KW_THREADED", "KW_PASS_UNIX_CREDENTIALS",
2218 "KW_PERSIST_NAME", "KW_READ_OLD_RECORDS", "KW_USE_SYSLOGNG_PID",
2219 "KW_FLAGS", "KW_PAD_SIZE", "KW_TIME_ZONE", "KW_RECV_TIME_ZONE",
2220 "KW_SEND_TIME_ZONE", "KW_LOCAL_TIME_ZONE", "KW_FORMAT",
2221 "KW_TRUNCATE_SIZE", "KW_TIME_REOPEN", "KW_TIME_REAP", "KW_TIME_SLEEP",
2222 "KW_TMPL_ESCAPE", "KW_OPTIONAL", "KW_CREATE_DIRS", "KW_OWNER",
2223 "KW_GROUP", "KW_PERM", "KW_DIR_OWNER", "KW_DIR_GROUP", "KW_DIR_PERM",
2224 "KW_TEMPLATE", "KW_TEMPLATE_ESCAPE", "KW_TEMPLATE_FUNCTION",
2225 "KW_DEFAULT_FACILITY", "KW_DEFAULT_SEVERITY", "KW_PORT",
2226 "KW_USE_TIME_RECVD", "KW_FACILITY", "KW_SEVERITY", "KW_HOST", "KW_MATCH",
2227 "KW_MESSAGE", "KW_NETMASK", "KW_TAGS", "KW_NETMASK6", "KW_REWRITE",
2228 "KW_CONDITION", "KW_VALUE", "KW_YES", "KW_NO", "KW_IFDEF", "KW_ENDIF",
2229 "LL_DOTDOT", "LL_DOTDOTDOT", "LL_PRAGMA", "LL_EOL", "LL_ERROR",
2230 "LL_ARROW", "LL_IDENTIFIER", "LL_NUMBER", "LL_FLOAT", "LL_STRING",
2231 "LL_TOKEN", "LL_BLOCK", "KW_VALUE_PAIRS", "KW_EXCLUDE", "KW_PAIR",
2232 "KW_KEY", "KW_SCOPE", "KW_SHIFT", "KW_SHIFT_LEVELS", "KW_REKEY",
2233 "KW_ADD_PREFIX", "KW_REPLACE_PREFIX", "KW_ON_ERROR", "KW_RETRIES",
2234 "KW_FETCH_NO_DATA_DELAY", "KW_CSV_PARSER", "KW_DIALECT", "KW_PREFIX",
2235 "KW_COLUMNS", "KW_DELIMITERS", "KW_QUOTES", "KW_QUOTE_PAIRS", "KW_NULL",
2236 "KW_CHARS", "KW_STRINGS", "KW_DROP_INVALID", "'('", "')'", "'{'", "'}'",
2237 "';'", "':'", "$accept", "start", "parser_expr_csv", "$@1",
2238 "parser_csv_opts", "parser_csv_opt", "parser_csv_delimiters",
2239 "parser_csv_delimiters_opts", "parser_csv_delimiters_opt",
2240 "parser_csv_flags", "parser_csv_flag", "parser_csv_dialect", "string",
2241 "yesno", "normalized_flag", "string_list", "string_list_build",
2242 "parser_opt", YY_NULLPTR
2243 };
2244
2245 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)2246 yysymbol_name (yysymbol_kind_t yysymbol)
2247 {
2248 return yytname[yysymbol];
2249 }
2250 #endif
2251
2252 #define YYPACT_NINF (-148)
2253
2254 #define yypact_value_is_default(Yyn) \
2255 ((Yyn) == YYPACT_NINF)
2256
2257 #define YYTABLE_NINF (-1)
2258
2259 #define yytable_value_is_error(Yyn) \
2260 0
2261
2262 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2263 STATE-NUM. */
2264 static const yytype_int16 yypact[] =
2265 {
2266 -4, -142, 22, -144, -148, -148, -148, -90, -143, -141,
2267 -140, -139, -138, -137, -136, -135, -134, -133, -132, -90,
2268 -148, -129, -124, -124, -124, -124, -125, -124, -124, -124,
2269 -118, -148, -148, -148, -148, -148, -130, -129, -148, -148,
2270 -127, -126, -148, -121, -124, -120, -148, -123, -117, -119,
2271 -148, -147, -148, -116, -115, -114, -148, -148, -148, -113,
2272 -148, -148, -148, -148, -148, -148, -148, -124, -124, -148,
2273 -148, -148, -148, -148, -148, -112, -111, -148, -148
2274 };
2275
2276 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2277 Performed when YYTABLE does not specify something else to do. Zero
2278 means the default is an error. */
2279 static const yytype_int8 yydefact[] =
2280 {
2281 0, 0, 0, 0, 2, 1, 3, 6, 0, 0,
2282 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
2283 16, 24, 0, 0, 0, 36, 20, 0, 0, 0,
2284 0, 4, 5, 28, 29, 26, 0, 24, 33, 25,
2285 0, 0, 27, 0, 36, 0, 34, 0, 0, 0,
2286 18, 20, 17, 0, 0, 0, 30, 31, 32, 0,
2287 7, 23, 37, 10, 8, 35, 15, 0, 36, 11,
2288 19, 12, 13, 14, 9, 0, 0, 21, 22
2289 };
2290
2291 /* YYPGOTO[NTERM-NUM]. */
2292 static const yytype_int16 yypgoto[] =
2293 {
2294 -148, -148, -148, -148, 7, -148, -148, -15, -148, 15,
2295 -148, -148, -21, -148, 21, -9, 16, -148
2296 };
2297
2298 /* YYDEFGOTO[NTERM-NUM]. */
2299 static const yytype_int8 yydefgoto[] =
2300 {
2301 0, 2, 4, 7, 18, 19, 49, 50, 51, 36,
2302 37, 41, 38, 59, 39, 45, 46, 20
2303 };
2304
2305 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
2306 positive, shift that token. If negative, reduce the rule whose
2307 number is the opposite. If YYTABLE_NINF, syntax error. */
2308 static const yytype_int8 yytable[] =
2309 {
2310 8, 40, 1, 43, 44, 52, 53, 54, 55, 33,
2311 56, 57, 34, 33, 33, 3, 34, 34, 47, 48,
2312 9, 58, 5, 44, 6, 21, 32, 22, 23, 24,
2313 25, 26, 27, 28, 29, 30, 70, 31, 35, 60,
2314 47, 48, 62, 63, 42, 67, 75, 44, 64, 66,
2315 69, 68, 61, 71, 72, 73, 74, 77, 78, 76,
2316 65, 0, 0, 0, 0, 0, 0, 0, 10, 11,
2317 12, 13, 14, 15, 16, 0, 0, 17
2318 };
2319
2320 static const yytype_int16 yycheck[] =
2321 {
2322 90, 22, 6, 24, 25, 26, 27, 28, 29, 138,
2323 128, 129, 141, 138, 138, 157, 141, 141, 165, 166,
2324 110, 139, 0, 44, 168, 168, 19, 168, 168, 168,
2325 168, 168, 168, 168, 168, 168, 51, 169, 167, 169,
2326 165, 166, 169, 169, 23, 168, 67, 68, 169, 169,
2327 169, 168, 37, 169, 169, 169, 169, 169, 169, 68,
2328 44, -1, -1, -1, -1, -1, -1, -1, 158, 159,
2329 160, 161, 162, 163, 164, -1, -1, 167
2330 };
2331
2332 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2333 state STATE-NUM. */
2334 static const yytype_uint8 yystos[] =
2335 {
2336 0, 6, 175, 157, 176, 0, 168, 177, 90, 110,
2337 158, 159, 160, 161, 162, 163, 164, 167, 178, 179,
2338 191, 168, 168, 168, 168, 168, 168, 168, 168, 168,
2339 168, 169, 178, 138, 141, 167, 183, 184, 186, 188,
2340 186, 185, 188, 186, 186, 189, 190, 165, 166, 180,
2341 181, 182, 186, 186, 186, 186, 128, 129, 139, 187,
2342 169, 183, 169, 169, 169, 190, 169, 168, 168, 169,
2343 181, 169, 169, 169, 169, 186, 189, 169, 169
2344 };
2345
2346 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
2347 static const yytype_uint8 yyr1[] =
2348 {
2349 0, 174, 175, 177, 176, 178, 178, 179, 179, 179,
2350 179, 179, 179, 179, 179, 179, 179, 180, 180, 181,
2351 181, 182, 182, 183, 183, 184, 184, 185, 186, 186,
2352 187, 187, 187, 188, 189, 190, 190, 191
2353 };
2354
2355 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
2356 static const yytype_int8 yyr2[] =
2357 {
2358 0, 2, 2, 0, 5, 2, 0, 4, 4, 4,
2359 4, 4, 4, 4, 4, 4, 1, 1, 1, 2,
2360 0, 4, 4, 2, 0, 1, 1, 1, 1, 1,
2361 1, 1, 1, 1, 1, 2, 0, 4
2362 };
2363
2364
2365 enum { YYENOMEM = -2 };
2366
2367 #define yyerrok (yyerrstatus = 0)
2368 #define yyclearin (yychar = CSVPARSER_EMPTY)
2369
2370 #define YYACCEPT goto yyacceptlab
2371 #define YYABORT goto yyabortlab
2372 #define YYERROR goto yyerrorlab
2373 #define YYNOMEM goto yyexhaustedlab
2374
2375
2376 #define YYRECOVERING() (!!yyerrstatus)
2377
2378 #define YYBACKUP(Token, Value) \
2379 do \
2380 if (yychar == CSVPARSER_EMPTY) \
2381 { \
2382 yychar = (Token); \
2383 yylval = (Value); \
2384 YYPOPSTACK (yylen); \
2385 yystate = *yyssp; \
2386 goto yybackup; \
2387 } \
2388 else \
2389 { \
2390 yyerror (&yylloc, lexer, instance, arg, YY_("syntax error: cannot back up")); \
2391 YYERROR; \
2392 } \
2393 while (0)
2394
2395 /* Backward compatibility with an undocumented macro.
2396 Use CSVPARSER_error or CSVPARSER_UNDEF. */
2397 #define YYERRCODE CSVPARSER_UNDEF
2398
2399 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2400 If N is 0, then set CURRENT to the empty location which ends
2401 the previous symbol: RHS[0] (always defined). */
2402
2403 #ifndef YYLLOC_DEFAULT
2404 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2405 do \
2406 if (N) \
2407 { \
2408 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2409 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2410 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2411 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2412 } \
2413 else \
2414 { \
2415 (Current).first_line = (Current).last_line = \
2416 YYRHSLOC (Rhs, 0).last_line; \
2417 (Current).first_column = (Current).last_column = \
2418 YYRHSLOC (Rhs, 0).last_column; \
2419 } \
2420 while (0)
2421 #endif
2422
2423 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2424
2425
2426 /* Enable debugging if requested. */
2427 #if CSVPARSER_DEBUG
2428
2429 # ifndef YYFPRINTF
2430 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2431 # define YYFPRINTF fprintf
2432 # endif
2433
2434 # define YYDPRINTF(Args) \
2435 do { \
2436 if (yydebug) \
2437 YYFPRINTF Args; \
2438 } while (0)
2439
2440
2441 /* YYLOCATION_PRINT -- Print the location on the stream.
2442 This macro was not mandated originally: define only if we know
2443 we won't break user code: when these are the locations we know. */
2444
2445 # ifndef YYLOCATION_PRINT
2446
2447 # if defined YY_LOCATION_PRINT
2448
2449 /* Temporary convenience wrapper in case some people defined the
2450 undocumented and private YY_LOCATION_PRINT macros. */
2451 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2452
2453 # elif defined CSVPARSER_LTYPE_IS_TRIVIAL && CSVPARSER_LTYPE_IS_TRIVIAL
2454
2455 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2456
2457 YY_ATTRIBUTE_UNUSED
2458 static int
yy_location_print_(FILE * yyo,YYLTYPE const * const yylocp)2459 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2460 {
2461 int res = 0;
2462 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2463 if (0 <= yylocp->first_line)
2464 {
2465 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2466 if (0 <= yylocp->first_column)
2467 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2468 }
2469 if (0 <= yylocp->last_line)
2470 {
2471 if (yylocp->first_line < yylocp->last_line)
2472 {
2473 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2474 if (0 <= end_col)
2475 res += YYFPRINTF (yyo, ".%d", end_col);
2476 }
2477 else if (0 <= end_col && yylocp->first_column < end_col)
2478 res += YYFPRINTF (yyo, "-%d", end_col);
2479 }
2480 return res;
2481 }
2482
2483 # define YYLOCATION_PRINT yy_location_print_
2484
2485 /* Temporary convenience wrapper in case some people defined the
2486 undocumented and private YY_LOCATION_PRINT macros. */
2487 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2488
2489 # else
2490
2491 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2492 /* Temporary convenience wrapper in case some people defined the
2493 undocumented and private YY_LOCATION_PRINT macros. */
2494 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2495
2496 # endif
2497 # endif /* !defined YYLOCATION_PRINT */
2498
2499
2500 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2501 do { \
2502 if (yydebug) \
2503 { \
2504 YYFPRINTF (stderr, "%s ", Title); \
2505 yy_symbol_print (stderr, \
2506 Kind, Value, Location, lexer, instance, arg); \
2507 YYFPRINTF (stderr, "\n"); \
2508 } \
2509 } while (0)
2510
2511
2512 /*-----------------------------------.
2513 | Print this symbol's value on YYO. |
2514 `-----------------------------------*/
2515
2516 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,LogParser ** instance,gpointer arg)2517 yy_symbol_value_print (FILE *yyo,
2518 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, LogParser **instance, gpointer arg)
2519 {
2520 FILE *yyoutput = yyo;
2521 YY_USE (yyoutput);
2522 YY_USE (yylocationp);
2523 YY_USE (lexer);
2524 YY_USE (instance);
2525 YY_USE (arg);
2526 if (!yyvaluep)
2527 return;
2528 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2529 YY_USE (yykind);
2530 YY_IGNORE_MAYBE_UNINITIALIZED_END
2531 }
2532
2533
2534 /*---------------------------.
2535 | Print this symbol on YYO. |
2536 `---------------------------*/
2537
2538 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,LogParser ** instance,gpointer arg)2539 yy_symbol_print (FILE *yyo,
2540 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, LogParser **instance, gpointer arg)
2541 {
2542 YYFPRINTF (yyo, "%s %s (",
2543 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2544
2545 YYLOCATION_PRINT (yyo, yylocationp);
2546 YYFPRINTF (yyo, ": ");
2547 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, lexer, instance, arg);
2548 YYFPRINTF (yyo, ")");
2549 }
2550
2551 /*------------------------------------------------------------------.
2552 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2553 | TOP (included). |
2554 `------------------------------------------------------------------*/
2555
2556 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2557 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2558 {
2559 YYFPRINTF (stderr, "Stack now");
2560 for (; yybottom <= yytop; yybottom++)
2561 {
2562 int yybot = *yybottom;
2563 YYFPRINTF (stderr, " %d", yybot);
2564 }
2565 YYFPRINTF (stderr, "\n");
2566 }
2567
2568 # define YY_STACK_PRINT(Bottom, Top) \
2569 do { \
2570 if (yydebug) \
2571 yy_stack_print ((Bottom), (Top)); \
2572 } while (0)
2573
2574
2575 /*------------------------------------------------.
2576 | Report that the YYRULE is going to be reduced. |
2577 `------------------------------------------------*/
2578
2579 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,YYLTYPE * yylsp,int yyrule,CfgLexer * lexer,LogParser ** instance,gpointer arg)2580 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
2581 int yyrule, CfgLexer *lexer, LogParser **instance, gpointer arg)
2582 {
2583 int yylno = yyrline[yyrule];
2584 int yynrhs = yyr2[yyrule];
2585 int yyi;
2586 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2587 yyrule - 1, yylno);
2588 /* The symbols being reduced. */
2589 for (yyi = 0; yyi < yynrhs; yyi++)
2590 {
2591 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2592 yy_symbol_print (stderr,
2593 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2594 &yyvsp[(yyi + 1) - (yynrhs)],
2595 &(yylsp[(yyi + 1) - (yynrhs)]), lexer, instance, arg);
2596 YYFPRINTF (stderr, "\n");
2597 }
2598 }
2599
2600 # define YY_REDUCE_PRINT(Rule) \
2601 do { \
2602 if (yydebug) \
2603 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, lexer, instance, arg); \
2604 } while (0)
2605
2606 /* Nonzero means print parse trace. It is left uninitialized so that
2607 multiple parsers can coexist. */
2608 int yydebug;
2609 #else /* !CSVPARSER_DEBUG */
2610 # define YYDPRINTF(Args) ((void) 0)
2611 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2612 # define YY_STACK_PRINT(Bottom, Top)
2613 # define YY_REDUCE_PRINT(Rule)
2614 #endif /* !CSVPARSER_DEBUG */
2615
2616
2617 /* YYINITDEPTH -- initial size of the parser's stacks. */
2618 #ifndef YYINITDEPTH
2619 # define YYINITDEPTH 200
2620 #endif
2621
2622 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2623 if the built-in stack extension method is used).
2624
2625 Do not make this value too large; the results are undefined if
2626 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2627 evaluated with infinite-precision integer arithmetic. */
2628
2629 #ifndef YYMAXDEPTH
2630 # define YYMAXDEPTH 10000
2631 #endif
2632
2633
2634 /* Context of a parse error. */
2635 typedef struct
2636 {
2637 yy_state_t *yyssp;
2638 yysymbol_kind_t yytoken;
2639 YYLTYPE *yylloc;
2640 } yypcontext_t;
2641
2642 /* Put in YYARG at most YYARGN of the expected tokens given the
2643 current YYCTX, and return the number of tokens stored in YYARG. If
2644 YYARG is null, return the number of expected tokens (guaranteed to
2645 be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
2646 Return 0 if there are more than YYARGN expected tokens, yet fill
2647 YYARG up to YYARGN. */
2648 static int
yypcontext_expected_tokens(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2649 yypcontext_expected_tokens (const yypcontext_t *yyctx,
2650 yysymbol_kind_t yyarg[], int yyargn)
2651 {
2652 /* Actual size of YYARG. */
2653 int yycount = 0;
2654 int yyn = yypact[+*yyctx->yyssp];
2655 if (!yypact_value_is_default (yyn))
2656 {
2657 /* Start YYX at -YYN if negative to avoid negative indexes in
2658 YYCHECK. In other words, skip the first -YYN actions for
2659 this state because they are default actions. */
2660 int yyxbegin = yyn < 0 ? -yyn : 0;
2661 /* Stay within bounds of both yycheck and yytname. */
2662 int yychecklim = YYLAST - yyn + 1;
2663 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2664 int yyx;
2665 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2666 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
2667 && !yytable_value_is_error (yytable[yyx + yyn]))
2668 {
2669 if (!yyarg)
2670 ++yycount;
2671 else if (yycount == yyargn)
2672 return 0;
2673 else
2674 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
2675 }
2676 }
2677 if (yyarg && yycount == 0 && 0 < yyargn)
2678 yyarg[0] = YYSYMBOL_YYEMPTY;
2679 return yycount;
2680 }
2681
2682
2683
2684
2685 #ifndef yystrlen
2686 # if defined __GLIBC__ && defined _STRING_H
2687 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2688 # else
2689 /* Return the length of YYSTR. */
2690 static YYPTRDIFF_T
yystrlen(const char * yystr)2691 yystrlen (const char *yystr)
2692 {
2693 YYPTRDIFF_T yylen;
2694 for (yylen = 0; yystr[yylen]; yylen++)
2695 continue;
2696 return yylen;
2697 }
2698 # endif
2699 #endif
2700
2701 #ifndef yystpcpy
2702 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2703 # define yystpcpy stpcpy
2704 # else
2705 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2706 YYDEST. */
2707 static char *
yystpcpy(char * yydest,const char * yysrc)2708 yystpcpy (char *yydest, const char *yysrc)
2709 {
2710 char *yyd = yydest;
2711 const char *yys = yysrc;
2712
2713 while ((*yyd++ = *yys++) != '\0')
2714 continue;
2715
2716 return yyd - 1;
2717 }
2718 # endif
2719 #endif
2720
2721 #ifndef yytnamerr
2722 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2723 quotes and backslashes, so that it's suitable for yyerror. The
2724 heuristic is that double-quoting is unnecessary unless the string
2725 contains an apostrophe, a comma, or backslash (other than
2726 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2727 null, do not copy; instead, return the length of what the result
2728 would have been. */
2729 static YYPTRDIFF_T
yytnamerr(char * yyres,const char * yystr)2730 yytnamerr (char *yyres, const char *yystr)
2731 {
2732 if (*yystr == '"')
2733 {
2734 YYPTRDIFF_T yyn = 0;
2735 char const *yyp = yystr;
2736 for (;;)
2737 switch (*++yyp)
2738 {
2739 case '\'':
2740 case ',':
2741 goto do_not_strip_quotes;
2742
2743 case '\\':
2744 if (*++yyp != '\\')
2745 goto do_not_strip_quotes;
2746 else
2747 goto append;
2748
2749 append:
2750 default:
2751 if (yyres)
2752 yyres[yyn] = *yyp;
2753 yyn++;
2754 break;
2755
2756 case '"':
2757 if (yyres)
2758 yyres[yyn] = '\0';
2759 return yyn;
2760 }
2761 do_not_strip_quotes: ;
2762 }
2763
2764 if (yyres)
2765 return yystpcpy (yyres, yystr) - yyres;
2766 else
2767 return yystrlen (yystr);
2768 }
2769 #endif
2770
2771
2772 static int
yy_syntax_error_arguments(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2773 yy_syntax_error_arguments (const yypcontext_t *yyctx,
2774 yysymbol_kind_t yyarg[], int yyargn)
2775 {
2776 /* Actual size of YYARG. */
2777 int yycount = 0;
2778 /* There are many possibilities here to consider:
2779 - If this state is a consistent state with a default action, then
2780 the only way this function was invoked is if the default action
2781 is an error action. In that case, don't check for expected
2782 tokens because there are none.
2783 - The only way there can be no lookahead present (in yychar) is if
2784 this state is a consistent state with a default action. Thus,
2785 detecting the absence of a lookahead is sufficient to determine
2786 that there is no unexpected or expected token to report. In that
2787 case, just report a simple "syntax error".
2788 - Don't assume there isn't a lookahead just because this state is a
2789 consistent state with a default action. There might have been a
2790 previous inconsistent state, consistent state with a non-default
2791 action, or user semantic action that manipulated yychar.
2792 - Of course, the expected token list depends on states to have
2793 correct lookahead information, and it depends on the parser not
2794 to perform extra reductions after fetching a lookahead from the
2795 scanner and before detecting a syntax error. Thus, state merging
2796 (from LALR or IELR) and default reductions corrupt the expected
2797 token list. However, the list is correct for canonical LR with
2798 one exception: it will still contain any token that will not be
2799 accepted due to an error action in a later state.
2800 */
2801 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
2802 {
2803 int yyn;
2804 if (yyarg)
2805 yyarg[yycount] = yyctx->yytoken;
2806 ++yycount;
2807 yyn = yypcontext_expected_tokens (yyctx,
2808 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2809 if (yyn == YYENOMEM)
2810 return YYENOMEM;
2811 else
2812 yycount += yyn;
2813 }
2814 return yycount;
2815 }
2816
2817 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2818 about the unexpected token YYTOKEN for the state stack whose top is
2819 YYSSP.
2820
2821 Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
2822 not large enough to hold the message. In that case, also set
2823 *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
2824 required number of bytes is too large to store. */
2825 static int
yysyntax_error(YYPTRDIFF_T * yymsg_alloc,char ** yymsg,const yypcontext_t * yyctx)2826 yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2827 const yypcontext_t *yyctx)
2828 {
2829 enum { YYARGS_MAX = 5 };
2830 /* Internationalized format string. */
2831 const char *yyformat = YY_NULLPTR;
2832 /* Arguments of yyformat: reported tokens (one for the "unexpected",
2833 one per "expected"). */
2834 yysymbol_kind_t yyarg[YYARGS_MAX];
2835 /* Cumulated lengths of YYARG. */
2836 YYPTRDIFF_T yysize = 0;
2837
2838 /* Actual size of YYARG. */
2839 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
2840 if (yycount == YYENOMEM)
2841 return YYENOMEM;
2842
2843 switch (yycount)
2844 {
2845 #define YYCASE_(N, S) \
2846 case N: \
2847 yyformat = S; \
2848 break
2849 default: /* Avoid compiler warnings. */
2850 YYCASE_(0, YY_("syntax error"));
2851 YYCASE_(1, YY_("syntax error, unexpected %s"));
2852 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2853 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2854 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2855 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2856 #undef YYCASE_
2857 }
2858
2859 /* Compute error message size. Don't count the "%s"s, but reserve
2860 room for the terminator. */
2861 yysize = yystrlen (yyformat) - 2 * yycount + 1;
2862 {
2863 int yyi;
2864 for (yyi = 0; yyi < yycount; ++yyi)
2865 {
2866 YYPTRDIFF_T yysize1
2867 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
2868 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2869 yysize = yysize1;
2870 else
2871 return YYENOMEM;
2872 }
2873 }
2874
2875 if (*yymsg_alloc < yysize)
2876 {
2877 *yymsg_alloc = 2 * yysize;
2878 if (! (yysize <= *yymsg_alloc
2879 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2880 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2881 return -1;
2882 }
2883
2884 /* Avoid sprintf, as that infringes on the user's name space.
2885 Don't have undefined behavior even if the translation
2886 produced a string with the wrong number of "%s"s. */
2887 {
2888 char *yyp = *yymsg;
2889 int yyi = 0;
2890 while ((*yyp = *yyformat) != '\0')
2891 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2892 {
2893 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
2894 yyformat += 2;
2895 }
2896 else
2897 {
2898 ++yyp;
2899 ++yyformat;
2900 }
2901 }
2902 return 0;
2903 }
2904
2905
2906 /*-----------------------------------------------.
2907 | Release the memory associated to this symbol. |
2908 `-----------------------------------------------*/
2909
2910 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep,YYLTYPE * yylocationp,CfgLexer * lexer,LogParser ** instance,gpointer arg)2911 yydestruct (const char *yymsg,
2912 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, CfgLexer *lexer, LogParser **instance, gpointer arg)
2913 {
2914 YY_USE (yyvaluep);
2915 YY_USE (yylocationp);
2916 YY_USE (lexer);
2917 YY_USE (instance);
2918 YY_USE (arg);
2919 if (!yymsg)
2920 yymsg = "Deleting";
2921 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2922
2923 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2924 switch (yykind)
2925 {
2926 case YYSYMBOL_LL_IDENTIFIER: /* LL_IDENTIFIER */
2927 #line 316 "modules/csvparser/csvparser-grammar.y"
2928 { free(((*yyvaluep).cptr)); }
2929 #line 2930 "modules/csvparser/csvparser-grammar.c"
2930 break;
2931
2932 case YYSYMBOL_LL_STRING: /* LL_STRING */
2933 #line 316 "modules/csvparser/csvparser-grammar.y"
2934 { free(((*yyvaluep).cptr)); }
2935 #line 2936 "modules/csvparser/csvparser-grammar.c"
2936 break;
2937
2938 case YYSYMBOL_LL_BLOCK: /* LL_BLOCK */
2939 #line 316 "modules/csvparser/csvparser-grammar.y"
2940 { free(((*yyvaluep).cptr)); }
2941 #line 2942 "modules/csvparser/csvparser-grammar.c"
2942 break;
2943
2944 case YYSYMBOL_parser_csv_flag: /* parser_csv_flag */
2945 #line 316 "modules/csvparser/csvparser-grammar.y"
2946 { free(((*yyvaluep).cptr)); }
2947 #line 2948 "modules/csvparser/csvparser-grammar.c"
2948 break;
2949
2950 case YYSYMBOL_string: /* string */
2951 #line 316 "modules/csvparser/csvparser-grammar.y"
2952 { free(((*yyvaluep).cptr)); }
2953 #line 2954 "modules/csvparser/csvparser-grammar.c"
2954 break;
2955
2956 case YYSYMBOL_normalized_flag: /* normalized_flag */
2957 #line 316 "modules/csvparser/csvparser-grammar.y"
2958 { free(((*yyvaluep).cptr)); }
2959 #line 2960 "modules/csvparser/csvparser-grammar.c"
2960 break;
2961
2962 default:
2963 break;
2964 }
2965 YY_IGNORE_MAYBE_UNINITIALIZED_END
2966 }
2967
2968
2969
2970
2971
2972
2973 /*----------.
2974 | yyparse. |
2975 `----------*/
2976
2977 int
yyparse(CfgLexer * lexer,LogParser ** instance,gpointer arg)2978 yyparse (CfgLexer *lexer, LogParser **instance, gpointer arg)
2979 {
2980 /* Lookahead token kind. */
2981 int yychar;
2982
2983
2984 /* The semantic value of the lookahead symbol. */
2985 /* Default value used for initialization, for pacifying older GCCs
2986 or non-GCC compilers. */
2987 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
2988 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
2989
2990 /* Location data for the lookahead symbol. */
2991 static YYLTYPE yyloc_default
2992 # if defined CSVPARSER_LTYPE_IS_TRIVIAL && CSVPARSER_LTYPE_IS_TRIVIAL
2993 = { 1, 1, 1, 1 }
2994 # endif
2995 ;
2996 YYLTYPE yylloc = yyloc_default;
2997
2998 /* Number of syntax errors so far. */
2999 int yynerrs = 0;
3000
3001 yy_state_fast_t yystate = 0;
3002 /* Number of tokens to shift before error messages enabled. */
3003 int yyerrstatus = 0;
3004
3005 /* Refer to the stacks through separate pointers, to allow yyoverflow
3006 to reallocate them elsewhere. */
3007
3008 /* Their size. */
3009 YYPTRDIFF_T yystacksize = YYINITDEPTH;
3010
3011 /* The state stack: array, bottom, top. */
3012 yy_state_t yyssa[YYINITDEPTH];
3013 yy_state_t *yyss = yyssa;
3014 yy_state_t *yyssp = yyss;
3015
3016 /* The semantic value stack: array, bottom, top. */
3017 YYSTYPE yyvsa[YYINITDEPTH];
3018 YYSTYPE *yyvs = yyvsa;
3019 YYSTYPE *yyvsp = yyvs;
3020
3021 /* The location stack: array, bottom, top. */
3022 YYLTYPE yylsa[YYINITDEPTH];
3023 YYLTYPE *yyls = yylsa;
3024 YYLTYPE *yylsp = yyls;
3025
3026 int yyn;
3027 /* The return value of yyparse. */
3028 int yyresult;
3029 /* Lookahead symbol kind. */
3030 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
3031 /* The variables used to return semantic value and location from the
3032 action routines. */
3033 YYSTYPE yyval;
3034 YYLTYPE yyloc;
3035
3036 /* The locations where the error started and ended. */
3037 YYLTYPE yyerror_range[3];
3038
3039 /* Buffer for error messages, and its allocated size. */
3040 char yymsgbuf[128];
3041 char *yymsg = yymsgbuf;
3042 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
3043
3044 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
3045
3046 /* The number of symbols on the RHS of the reduced rule.
3047 Keep to zero when no symbol should be popped. */
3048 int yylen = 0;
3049
3050 YYDPRINTF ((stderr, "Starting parse\n"));
3051
3052 yychar = CSVPARSER_EMPTY; /* Cause a token to be read. */
3053
3054 yylsp[0] = yylloc;
3055 goto yysetstate;
3056
3057
3058 /*------------------------------------------------------------.
3059 | yynewstate -- push a new state, which is found in yystate. |
3060 `------------------------------------------------------------*/
3061 yynewstate:
3062 /* In all cases, when you get here, the value and location stacks
3063 have just been pushed. So pushing a state here evens the stacks. */
3064 yyssp++;
3065
3066
3067 /*--------------------------------------------------------------------.
3068 | yysetstate -- set current state (the top of the stack) to yystate. |
3069 `--------------------------------------------------------------------*/
3070 yysetstate:
3071 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3072 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3073 YY_IGNORE_USELESS_CAST_BEGIN
3074 *yyssp = YY_CAST (yy_state_t, yystate);
3075 YY_IGNORE_USELESS_CAST_END
3076 YY_STACK_PRINT (yyss, yyssp);
3077
3078 if (yyss + yystacksize - 1 <= yyssp)
3079 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
3080 YYNOMEM;
3081 #else
3082 {
3083 /* Get the current used size of the three stacks, in elements. */
3084 YYPTRDIFF_T yysize = yyssp - yyss + 1;
3085
3086 # if defined yyoverflow
3087 {
3088 /* Give user a chance to reallocate the stack. Use copies of
3089 these so that the &'s don't force the real ones into
3090 memory. */
3091 yy_state_t *yyss1 = yyss;
3092 YYSTYPE *yyvs1 = yyvs;
3093 YYLTYPE *yyls1 = yyls;
3094
3095 /* Each stack pointer address is followed by the size of the
3096 data in use in that stack, in bytes. This used to be a
3097 conditional around just the two extra args, but that might
3098 be undefined if yyoverflow is a macro. */
3099 yyoverflow (YY_("memory exhausted"),
3100 &yyss1, yysize * YYSIZEOF (*yyssp),
3101 &yyvs1, yysize * YYSIZEOF (*yyvsp),
3102 &yyls1, yysize * YYSIZEOF (*yylsp),
3103 &yystacksize);
3104 yyss = yyss1;
3105 yyvs = yyvs1;
3106 yyls = yyls1;
3107 }
3108 # else /* defined YYSTACK_RELOCATE */
3109 /* Extend the stack our own way. */
3110 if (YYMAXDEPTH <= yystacksize)
3111 YYNOMEM;
3112 yystacksize *= 2;
3113 if (YYMAXDEPTH < yystacksize)
3114 yystacksize = YYMAXDEPTH;
3115
3116 {
3117 yy_state_t *yyss1 = yyss;
3118 union yyalloc *yyptr =
3119 YY_CAST (union yyalloc *,
3120 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3121 if (! yyptr)
3122 YYNOMEM;
3123 YYSTACK_RELOCATE (yyss_alloc, yyss);
3124 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3125 YYSTACK_RELOCATE (yyls_alloc, yyls);
3126 # undef YYSTACK_RELOCATE
3127 if (yyss1 != yyssa)
3128 YYSTACK_FREE (yyss1);
3129 }
3130 # endif
3131
3132 yyssp = yyss + yysize - 1;
3133 yyvsp = yyvs + yysize - 1;
3134 yylsp = yyls + yysize - 1;
3135
3136 YY_IGNORE_USELESS_CAST_BEGIN
3137 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3138 YY_CAST (long, yystacksize)));
3139 YY_IGNORE_USELESS_CAST_END
3140
3141 if (yyss + yystacksize - 1 <= yyssp)
3142 YYABORT;
3143 }
3144 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3145
3146
3147 if (yystate == YYFINAL)
3148 YYACCEPT;
3149
3150 goto yybackup;
3151
3152
3153 /*-----------.
3154 | yybackup. |
3155 `-----------*/
3156 yybackup:
3157 /* Do appropriate processing given the current state. Read a
3158 lookahead token if we need one and don't already have one. */
3159
3160 /* First try to decide what to do without reference to lookahead token. */
3161 yyn = yypact[yystate];
3162 if (yypact_value_is_default (yyn))
3163 goto yydefault;
3164
3165 /* Not known => get a lookahead token if don't already have one. */
3166
3167 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
3168 if (yychar == CSVPARSER_EMPTY)
3169 {
3170 YYDPRINTF ((stderr, "Reading a token\n"));
3171 yychar = yylex (&yylval, &yylloc, lexer);
3172 }
3173
3174 if (yychar <= CSVPARSER_EOF)
3175 {
3176 yychar = CSVPARSER_EOF;
3177 yytoken = YYSYMBOL_YYEOF;
3178 YYDPRINTF ((stderr, "Now at end of input.\n"));
3179 }
3180 else if (yychar == CSVPARSER_error)
3181 {
3182 /* The scanner already issued an error message, process directly
3183 to error recovery. But do not keep the error token as
3184 lookahead, it is too special and may lead us to an endless
3185 loop in error recovery. */
3186 yychar = CSVPARSER_UNDEF;
3187 yytoken = YYSYMBOL_YYerror;
3188 yyerror_range[1] = yylloc;
3189 goto yyerrlab1;
3190 }
3191 else
3192 {
3193 yytoken = YYTRANSLATE (yychar);
3194 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3195 }
3196
3197 /* If the proper action on seeing token YYTOKEN is to reduce or to
3198 detect an error, take that action. */
3199 yyn += yytoken;
3200 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3201 goto yydefault;
3202 yyn = yytable[yyn];
3203 if (yyn <= 0)
3204 {
3205 if (yytable_value_is_error (yyn))
3206 goto yyerrlab;
3207 yyn = -yyn;
3208 goto yyreduce;
3209 }
3210
3211 /* Count tokens shifted since error; after three, turn off error
3212 status. */
3213 if (yyerrstatus)
3214 yyerrstatus--;
3215
3216 /* Shift the lookahead token. */
3217 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3218 yystate = yyn;
3219 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3220 *++yyvsp = yylval;
3221 YY_IGNORE_MAYBE_UNINITIALIZED_END
3222 *++yylsp = yylloc;
3223
3224 /* Discard the shifted token. */
3225 yychar = CSVPARSER_EMPTY;
3226 goto yynewstate;
3227
3228
3229 /*-----------------------------------------------------------.
3230 | yydefault -- do the default action for the current state. |
3231 `-----------------------------------------------------------*/
3232 yydefault:
3233 yyn = yydefact[yystate];
3234 if (yyn == 0)
3235 goto yyerrlab;
3236 goto yyreduce;
3237
3238
3239 /*-----------------------------.
3240 | yyreduce -- do a reduction. |
3241 `-----------------------------*/
3242 yyreduce:
3243 /* yyn is the number of a rule to reduce with. */
3244 yylen = yyr2[yyn];
3245
3246 /* If YYLEN is nonzero, implement the default value of the action:
3247 '$$ = $1'.
3248
3249 Otherwise, the following line sets YYVAL to garbage.
3250 This behavior is undocumented and Bison
3251 users should not rely upon it. Assigning to YYVAL
3252 unconditionally makes the parser a bit smaller, and it avoids a
3253 GCC warning that YYVAL may be used uninitialized. */
3254 yyval = yyvsp[1-yylen];
3255
3256 /* Default location. */
3257 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
3258 yyerror_range[1] = yyloc;
3259 YY_REDUCE_PRINT (yyn);
3260 switch (yyn)
3261 {
3262 case 2: /* start: LL_CONTEXT_PARSER parser_expr_csv */
3263 #line 417 "modules/csvparser/csvparser-grammar.y"
3264 { YYACCEPT; }
3265 #line 3266 "modules/csvparser/csvparser-grammar.c"
3266 break;
3267
3268 case 3: /* $@1: %empty */
3269 #line 423 "modules/csvparser/csvparser-grammar.y"
3270 {
3271 last_parser = *instance = csv_parser_new(configuration);
3272 }
3273 #line 3274 "modules/csvparser/csvparser-grammar.c"
3274 break;
3275
3276 case 4: /* parser_expr_csv: KW_CSV_PARSER '(' $@1 parser_csv_opts ')' */
3277 #line 427 "modules/csvparser/csvparser-grammar.y"
3278 { (yyval.ptr) = last_parser; }
3279 #line 3280 "modules/csvparser/csvparser-grammar.c"
3280 break;
3281
3282 case 7: /* parser_csv_opt: KW_FLAGS '(' parser_csv_flags ')' */
3283 #line 438 "modules/csvparser/csvparser-grammar.y"
3284 { CHECK_ERROR(csv_parser_set_flags(last_parser, (yyvsp[-1].num)), (yylsp[-1]), "only one escape style can be used in the flags argument"); }
3285 #line 3286 "modules/csvparser/csvparser-grammar.c"
3286 break;
3287
3288 case 8: /* parser_csv_opt: KW_PREFIX '(' string ')' */
3289 #line 439 "modules/csvparser/csvparser-grammar.y"
3290 { csv_parser_set_prefix(last_parser, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3291 #line 3292 "modules/csvparser/csvparser-grammar.c"
3292 break;
3293
3294 case 9: /* parser_csv_opt: KW_DROP_INVALID '(' yesno ')' */
3295 #line 440 "modules/csvparser/csvparser-grammar.y"
3296 { csv_parser_set_drop_invalid(last_parser, (yyvsp[-1].num)); }
3297 #line 3298 "modules/csvparser/csvparser-grammar.c"
3298 break;
3299
3300 case 10: /* parser_csv_opt: KW_DIALECT '(' parser_csv_dialect ')' */
3301 #line 442 "modules/csvparser/csvparser-grammar.y"
3302 { csv_scanner_options_set_dialect(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].num)); }
3303 #line 3304 "modules/csvparser/csvparser-grammar.c"
3304 break;
3305
3306 case 12: /* parser_csv_opt: KW_QUOTES '(' string ')' */
3307 #line 444 "modules/csvparser/csvparser-grammar.y"
3308 { csv_scanner_options_set_quotes(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3309 #line 3310 "modules/csvparser/csvparser-grammar.c"
3310 break;
3311
3312 case 13: /* parser_csv_opt: KW_QUOTE_PAIRS '(' string ')' */
3313 #line 445 "modules/csvparser/csvparser-grammar.y"
3314 { csv_scanner_options_set_quote_pairs(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3315 #line 3316 "modules/csvparser/csvparser-grammar.c"
3316 break;
3317
3318 case 14: /* parser_csv_opt: KW_NULL '(' string ')' */
3319 #line 446 "modules/csvparser/csvparser-grammar.y"
3320 { csv_scanner_options_set_null_value(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3321 #line 3322 "modules/csvparser/csvparser-grammar.c"
3322 break;
3323
3324 case 15: /* parser_csv_opt: KW_COLUMNS '(' string_list ')' */
3325 #line 447 "modules/csvparser/csvparser-grammar.y"
3326 { csv_scanner_options_set_columns(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].ptr)); }
3327 #line 3328 "modules/csvparser/csvparser-grammar.c"
3328 break;
3329
3330 case 17: /* parser_csv_delimiters: string */
3331 #line 452 "modules/csvparser/csvparser-grammar.y"
3332 { csv_scanner_options_set_delimiters(csv_parser_get_scanner_options(last_parser), (yyvsp[0].cptr)); free((yyvsp[0].cptr)); }
3333 #line 3334 "modules/csvparser/csvparser-grammar.c"
3334 break;
3335
3336 case 21: /* parser_csv_delimiters_opt: KW_CHARS '(' string ')' */
3337 #line 462 "modules/csvparser/csvparser-grammar.y"
3338 { csv_scanner_options_set_delimiters(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3339 #line 3340 "modules/csvparser/csvparser-grammar.c"
3340 break;
3341
3342 case 22: /* parser_csv_delimiters_opt: KW_STRINGS '(' string_list ')' */
3343 #line 463 "modules/csvparser/csvparser-grammar.y"
3344 { csv_scanner_options_set_string_delimiters(csv_parser_get_scanner_options(last_parser), (yyvsp[-1].ptr)); }
3345 #line 3346 "modules/csvparser/csvparser-grammar.c"
3346 break;
3347
3348 case 23: /* parser_csv_flags: parser_csv_flag parser_csv_flags */
3349 #line 468 "modules/csvparser/csvparser-grammar.y"
3350 {
3351 guint32 flag = csv_parser_lookup_flag((yyvsp[-1].cptr));
3352 CHECK_ERROR(flag != 0, (yylsp[-1]), "unknown csv-parser() flag %s", (yyvsp[-1].cptr));
3353 (yyval.num) = flag | (yyvsp[0].num);
3354 free((yyvsp[-1].cptr));
3355 }
3356 #line 3357 "modules/csvparser/csvparser-grammar.c"
3357 break;
3358
3359 case 24: /* parser_csv_flags: %empty */
3360 #line 474 "modules/csvparser/csvparser-grammar.y"
3361 { (yyval.num) = 0; }
3362 #line 3363 "modules/csvparser/csvparser-grammar.c"
3363 break;
3364
3365 case 25: /* parser_csv_flag: normalized_flag */
3366 #line 478 "modules/csvparser/csvparser-grammar.y"
3367 { (yyval.cptr) = (yyvsp[0].cptr); }
3368 #line 3369 "modules/csvparser/csvparser-grammar.c"
3369 break;
3370
3371 case 26: /* parser_csv_flag: KW_DROP_INVALID */
3372 #line 479 "modules/csvparser/csvparser-grammar.y"
3373 { (yyval.cptr) = strdup(lexer->token_text->str); }
3374 #line 3375 "modules/csvparser/csvparser-grammar.c"
3375 break;
3376
3377 case 27: /* parser_csv_dialect: normalized_flag */
3378 #line 483 "modules/csvparser/csvparser-grammar.y"
3379 {
3380 gint mode = csv_parser_lookup_dialect((yyvsp[0].cptr));
3381 CHECK_ERROR(mode >= 0, (yylsp[0]), "unknown dialect() argument for csv-parser()");
3382 free((yyvsp[0].cptr));
3383 }
3384 #line 3385 "modules/csvparser/csvparser-grammar.c"
3385 break;
3386
3387 case 30: /* yesno: KW_YES */
3388 #line 758 "modules/csvparser/csvparser-grammar.y"
3389 { (yyval.num) = 1; }
3390 #line 3391 "modules/csvparser/csvparser-grammar.c"
3391 break;
3392
3393 case 31: /* yesno: KW_NO */
3394 #line 759 "modules/csvparser/csvparser-grammar.y"
3395 { (yyval.num) = 0; }
3396 #line 3397 "modules/csvparser/csvparser-grammar.c"
3397 break;
3398
3399 case 32: /* yesno: LL_NUMBER */
3400 #line 760 "modules/csvparser/csvparser-grammar.y"
3401 { (yyval.num) = (yyvsp[0].num); }
3402 #line 3403 "modules/csvparser/csvparser-grammar.c"
3403 break;
3404
3405 case 33: /* normalized_flag: string */
3406 #line 847 "modules/csvparser/csvparser-grammar.y"
3407 { (yyval.cptr) = normalize_flag((yyvsp[0].cptr)); free((yyvsp[0].cptr)); }
3408 #line 3409 "modules/csvparser/csvparser-grammar.c"
3409 break;
3410
3411 case 34: /* string_list: string_list_build */
3412 #line 851 "modules/csvparser/csvparser-grammar.y"
3413 { (yyval.ptr) = (yyvsp[0].ptr); }
3414 #line 3415 "modules/csvparser/csvparser-grammar.c"
3415 break;
3416
3417 case 35: /* string_list_build: string string_list_build */
3418 #line 855 "modules/csvparser/csvparser-grammar.y"
3419 { (yyval.ptr) = g_list_prepend((yyvsp[0].ptr), g_strdup((yyvsp[-1].cptr))); free((yyvsp[-1].cptr)); }
3420 #line 3421 "modules/csvparser/csvparser-grammar.c"
3421 break;
3422
3423 case 36: /* string_list_build: %empty */
3424 #line 856 "modules/csvparser/csvparser-grammar.y"
3425 { (yyval.ptr) = NULL; }
3426 #line 3427 "modules/csvparser/csvparser-grammar.c"
3427 break;
3428
3429 case 37: /* parser_opt: KW_TEMPLATE '(' string ')' */
3430 #line 888 "modules/csvparser/csvparser-grammar.y"
3431 {
3432 LogTemplate *template;
3433 GError *error = NULL;
3434
3435 template = cfg_tree_check_inline_template(&configuration->tree, (yyvsp[-1].cptr), &error);
3436 CHECK_ERROR_GERROR(template != NULL, (yylsp[-1]), error, "Error compiling template");
3437 log_parser_set_template(last_parser, template);
3438 free((yyvsp[-1].cptr));
3439 }
3440 #line 3441 "modules/csvparser/csvparser-grammar.c"
3441 break;
3442
3443
3444 #line 3445 "modules/csvparser/csvparser-grammar.c"
3445
3446 default: break;
3447 }
3448 /* User semantic actions sometimes alter yychar, and that requires
3449 that yytoken be updated with the new translation. We take the
3450 approach of translating immediately before every use of yytoken.
3451 One alternative is translating here after every semantic action,
3452 but that translation would be missed if the semantic action invokes
3453 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3454 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3455 incorrect destructor might then be invoked immediately. In the
3456 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3457 to an incorrect destructor call or verbose syntax error message
3458 before the lookahead is translated. */
3459 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3460
3461 YYPOPSTACK (yylen);
3462 yylen = 0;
3463
3464 *++yyvsp = yyval;
3465 *++yylsp = yyloc;
3466
3467 /* Now 'shift' the result of the reduction. Determine what state
3468 that goes to, based on the state we popped back to and the rule
3469 number reduced by. */
3470 {
3471 const int yylhs = yyr1[yyn] - YYNTOKENS;
3472 const int yyi = yypgoto[yylhs] + *yyssp;
3473 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3474 ? yytable[yyi]
3475 : yydefgoto[yylhs]);
3476 }
3477
3478 goto yynewstate;
3479
3480
3481 /*--------------------------------------.
3482 | yyerrlab -- here on detecting error. |
3483 `--------------------------------------*/
3484 yyerrlab:
3485 /* Make sure we have latest lookahead translation. See comments at
3486 user semantic actions for why this is necessary. */
3487 yytoken = yychar == CSVPARSER_EMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3488 /* If not already recovering from an error, report this error. */
3489 if (!yyerrstatus)
3490 {
3491 ++yynerrs;
3492 {
3493 yypcontext_t yyctx
3494 = {yyssp, yytoken, &yylloc};
3495 char const *yymsgp = YY_("syntax error");
3496 int yysyntax_error_status;
3497 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3498 if (yysyntax_error_status == 0)
3499 yymsgp = yymsg;
3500 else if (yysyntax_error_status == -1)
3501 {
3502 if (yymsg != yymsgbuf)
3503 YYSTACK_FREE (yymsg);
3504 yymsg = YY_CAST (char *,
3505 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
3506 if (yymsg)
3507 {
3508 yysyntax_error_status
3509 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3510 yymsgp = yymsg;
3511 }
3512 else
3513 {
3514 yymsg = yymsgbuf;
3515 yymsg_alloc = sizeof yymsgbuf;
3516 yysyntax_error_status = YYENOMEM;
3517 }
3518 }
3519 yyerror (&yylloc, lexer, instance, arg, yymsgp);
3520 if (yysyntax_error_status == YYENOMEM)
3521 YYNOMEM;
3522 }
3523 }
3524
3525 yyerror_range[1] = yylloc;
3526 if (yyerrstatus == 3)
3527 {
3528 /* If just tried and failed to reuse lookahead token after an
3529 error, discard it. */
3530
3531 if (yychar <= CSVPARSER_EOF)
3532 {
3533 /* Return failure if at end of input. */
3534 if (yychar == CSVPARSER_EOF)
3535 YYABORT;
3536 }
3537 else
3538 {
3539 yydestruct ("Error: discarding",
3540 yytoken, &yylval, &yylloc, lexer, instance, arg);
3541 yychar = CSVPARSER_EMPTY;
3542 }
3543 }
3544
3545 /* Else will try to reuse lookahead token after shifting the error
3546 token. */
3547 goto yyerrlab1;
3548
3549
3550 /*---------------------------------------------------.
3551 | yyerrorlab -- error raised explicitly by YYERROR. |
3552 `---------------------------------------------------*/
3553 yyerrorlab:
3554 /* Pacify compilers when the user code never invokes YYERROR and the
3555 label yyerrorlab therefore never appears in user code. */
3556 if (0)
3557 YYERROR;
3558 ++yynerrs;
3559
3560 /* Do not reclaim the symbols of the rule whose action triggered
3561 this YYERROR. */
3562 YYPOPSTACK (yylen);
3563 yylen = 0;
3564 YY_STACK_PRINT (yyss, yyssp);
3565 yystate = *yyssp;
3566 goto yyerrlab1;
3567
3568
3569 /*-------------------------------------------------------------.
3570 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3571 `-------------------------------------------------------------*/
3572 yyerrlab1:
3573 yyerrstatus = 3; /* Each real token shifted decrements this. */
3574
3575 /* Pop stack until we find a state that shifts the error token. */
3576 for (;;)
3577 {
3578 yyn = yypact[yystate];
3579 if (!yypact_value_is_default (yyn))
3580 {
3581 yyn += YYSYMBOL_YYerror;
3582 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
3583 {
3584 yyn = yytable[yyn];
3585 if (0 < yyn)
3586 break;
3587 }
3588 }
3589
3590 /* Pop the current state because it cannot handle the error token. */
3591 if (yyssp == yyss)
3592 YYABORT;
3593
3594 yyerror_range[1] = *yylsp;
3595 yydestruct ("Error: popping",
3596 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, lexer, instance, arg);
3597 YYPOPSTACK (1);
3598 yystate = *yyssp;
3599 YY_STACK_PRINT (yyss, yyssp);
3600 }
3601
3602 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3603 *++yyvsp = yylval;
3604 YY_IGNORE_MAYBE_UNINITIALIZED_END
3605
3606 yyerror_range[2] = yylloc;
3607 ++yylsp;
3608 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
3609
3610 /* Shift the error token. */
3611 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
3612
3613 yystate = yyn;
3614 goto yynewstate;
3615
3616
3617 /*-------------------------------------.
3618 | yyacceptlab -- YYACCEPT comes here. |
3619 `-------------------------------------*/
3620 yyacceptlab:
3621 yyresult = 0;
3622 goto yyreturnlab;
3623
3624
3625 /*-----------------------------------.
3626 | yyabortlab -- YYABORT comes here. |
3627 `-----------------------------------*/
3628 yyabortlab:
3629 yyresult = 1;
3630 goto yyreturnlab;
3631
3632
3633 /*-----------------------------------------------------------.
3634 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
3635 `-----------------------------------------------------------*/
3636 yyexhaustedlab:
3637 yyerror (&yylloc, lexer, instance, arg, YY_("memory exhausted"));
3638 yyresult = 2;
3639 goto yyreturnlab;
3640
3641
3642 /*----------------------------------------------------------.
3643 | yyreturnlab -- parsing is finished, clean up and return. |
3644 `----------------------------------------------------------*/
3645 yyreturnlab:
3646 if (yychar != CSVPARSER_EMPTY)
3647 {
3648 /* Make sure we have latest lookahead translation. See comments at
3649 user semantic actions for why this is necessary. */
3650 yytoken = YYTRANSLATE (yychar);
3651 yydestruct ("Cleanup: discarding lookahead",
3652 yytoken, &yylval, &yylloc, lexer, instance, arg);
3653 }
3654 /* Do not reclaim the symbols of the rule whose action triggered
3655 this YYABORT or YYACCEPT. */
3656 YYPOPSTACK (yylen);
3657 YY_STACK_PRINT (yyss, yyssp);
3658 while (yyssp != yyss)
3659 {
3660 yydestruct ("Cleanup: popping",
3661 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, lexer, instance, arg);
3662 YYPOPSTACK (1);
3663 }
3664 #ifndef yyoverflow
3665 if (yyss != yyssa)
3666 YYSTACK_FREE (yyss);
3667 #endif
3668 if (yymsg != yymsgbuf)
3669 YYSTACK_FREE (yymsg);
3670 return yyresult;
3671 }
3672
3673 #line 1254 "modules/csvparser/csvparser-grammar.y"
3674
3675